|
Processing
console MODIFY/F and STOP/P commands.
Many mainframe
tasks such as server tasks (daemons) execute for long periods of time.
In order to communicate with such tasks, one could leave an outstanding
WTOR on the console. To terminate a task having an outstanding
WTOR, one would respond to the WTOR with the appropriate shutdown
command. Another technique would be to honor the console STOP or P
command. Additionally, one could honor the console MODIFY or F
command to alter the operation of the task.
This tutorial will
attempt to illustrate a technique to capture console STOP or P commands
and MODIFY or F commands. It uses the authorized assembler
services EXTRACT and QEDIT macros and must therefore be bound (link
edited) into an APF authorized library with AC=1.
The following is a
fully functional code example of a program that examines and processes
z/OS console MODIFY or F and STOP or P commands:
CMDTASK TITLE 'Sample task to illustrate console command
processing'
*---------------------------------------------------------------------*
* Private code Copyright
preamble.
*
*---------------------------------------------------------------------*
CSECT ,
Private Code CSECT.
AMODE 31
Set 31-Bit addressing mode.
RMODE ANY
Set Any (24 or 31-Bit) residency.
SPACE ,
DC C'Assembly
date && time: &SYSDATE &SYSTIME '
DC
C'Copyright (C) 1993-2006, Marc Niegowski '
DC C'Systems
Programmer At Large '
DC C'All
Rights Reserved.'
SPACE ,
* If you assemble and bind
this module as CMDTASK into an
* authorized library and
START/S it, you can STOP/P it with a
* "P CMDTASK" command. If
you submit it as a job, you can
* STOP/P it with a "P
jobname" command.
SPACE ,
* If this task was started
with a START/S command, you can also
* send if MODIFY/F
commands like "F CMDTASK,PARM=(ANYTHING)". If
* you have submitted it as
a job, the MODIFY/F commands take the
* form "F jobname,PARM=(ANYTHING)".
SPACE ,
*---------------------------------------------------------------------*
* Register equates.
*
*---------------------------------------------------------------------*
REGEQU ,
Generate register equates.
EJECT
*---------------------------------------------------------------------*
* Main CSECT and entry
point.
*
*---------------------------------------------------------------------*
CMDTASK CSECT ,
Main CSECT.
CMDTASK AMODE 31
Set 31-Bit addressing mode.
CMDTASK RMODE ANY
Set Any (24 or 31-Bit) residency.
SPACE ,
ENTRY CMDTASK
CSECT entry point.
BAKR R14,0
Store callers regs to system stack.
LR R12,R15
Load A(CSECT base).
USING CMDTASK,R12
Establish CSECT addressability.
SPACE ,
STORAGE OBTAIN,
Allocate some working storage... C
ADDR=(R11), ...for a
register save area ... C
LENGTH=WSDL ...(RSA),
Stack, Buffers, etc..
SPACE ,
USING WSD,R11
Establish WSD addressability.
LA R2,1(,R11)
Load A(Working Storage + 1) to R2.
LA R3,WSDL-1
Load L'Working Storage - 1 to R3.
LR R4,R11
Load A(Working storage) to R4.
LA R5,1
Load 1 to R5.
MVCL R2,R4
Init working storage to X'00's.
LA
R8,WSDSTACK Base the
stack with R8.
SPACE ,
ST
R13,WSDR13P Save
A(Prior RSA).
MVC WSDR13,=C'F1SA'
Set Format 1 Save Area for others.
LA R13,WSDRSA
Load A(RSA) to R13.
SPACE ,
MVC WSDWTOL,WTOL
Move list form WTO to working stg.
MVC WSDTIMEL,TIMEL
Move list form TIME to working stg.
MVC
WSDEXTL,EXTRACTL Move list form EXTRACT to work
stg.
SPACE ,
BAS R14,TS0010
Call task start routine.
*DUMMY* BAS R14,ST0010
Call task STIMER routine.
BAS R14,EX0010
Call task EXTRACT routine.
CM0010 DS 0H
BAS R14,SC0010
Call CIB examination routine.
TM
WSDFLAG,FSTOP Did we get a
STOP/P command?
BO CM0020
Yes, take branch.
WAIT ECBLIST=WSDECBLA
Wait for another console command.
B
CM0010
Check the command that was issued.
SPACE ,
CM0020 DS 0H
BAS R14,TT0010
Call task termination routine.
SPACE ,
L
R13,WSDR13P Restore
original R13.
DROP R11
Drop WSD.
SPACE ,
STORAGE RELEASE,
Free working storage area (WSD). C
ADDR=(R11),
C
LENGTH=WSDL
SPACE ,
XR R15,R15
Clear return code.
PR
Return to caller.
EJECT
*---------------------------------------------------------------------*
* Task start.
*
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
TS0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
BAS R14,DT0010
Get system date and time.
MVC
WSDMSG(L'WTOT001+2),WTOM001
MVC
WSDMSG+22(L'WSDEDTIM-1),WSDEDTIM+1
MVC
WSDMSG+41(L'WSDEDDTE-2),WSDEDDTE+2
LA R2,WSDMSG
Load A(Task start message).
SPACE ,
WTO TEXT=((R2)),
WTO message address in R2.
C
MF=(E,WSDWTOL) WTO execute form.
SPACE ,
TS9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R11
Drop WSD.
EJECT
*---------------------------------------------------------------------*
* Task termination.
*
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
TT0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
BAS R14,DT0010
Get system date and time.
MVC
WSDMSG(L'WTOT002+2),WTOM002
MVC
WSDMSG+22(L'WSDEDTIM-1),WSDEDTIM+1
MVC
WSDMSG+41(L'WSDEDDTE-2),WSDEDDTE+2
LA R2,WSDMSG
Load A(Task ended message).
SPACE ,
WTO TEXT=((R2)),
WTO message address in R2.
C
MF=(E,WSDWTOL) WTO execute form.
SPACE ,
TT9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R11
Drop WSD.
EJECT
*---------------------------------------------------------------------*
* Retrieve date and time
from the system.
*
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
DT0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
XC
WSDDTME,WSDDTME Clear the time and date
field.
SPACE ,
TIME DEC,
Return time in decimal format. C
WSDDTME,
16 Byte time and date field.
C
ZONE=LT,
Return local time as opposed to GMT.C
LINKAGE=SYSTEM, System linkage as opposed to
SVC. C
DATETYPE=MMDDYYYY, Date format.
C
MF=(E,WSDTIMEL) Execute form TIME macro.
SPACE ,
OI
WSDDTME+6,X'0C'
Set a sign for the time.
MVO
WSDDTME+7(5),WSDDTME+8(4) Offset the packed date.
NI
WSDDTME+11,X'F0'
Clear the sign nybble.
OI
WSDDTME+11,X'0C'
Set a sign for the date.
SPACE ,
MVC
WSDEDTIM,TIMEMASK Move out the TIME edit mask.
ED
WSDEDTIM,WSDDTME Edit the time.
MVC
WSDEDDTE,DATEMASK Move out the DATE edit mask.
ED
WSDEDDTE,WSDDTME+7 Edit the date.
SPACE ,
DT9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R11
Drop WSD.
EJECT
*---------------------------------------------------------------------*
* Set STIMER to place the
task into a wait.
*
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
ST0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
MVC WSDINTVL,=F'6000'
6000 * 1/100 = 60 Seconds.
SPACE ,
STIMER WAIT,
Set a WAIT type STIMER.
C
BINTVL=WSDINTVL A(Binary timer interval).
SPACE ,
ST9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R11
Drop WSD.
EJECT
*---------------------------------------------------------------------*
* Extract the
Communications Scheduler communications list. *
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
EX0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
EXTRACT WSDCOMA,
A(Comm. sched. communications list).C
'S',
Use current TCB address.
C
FIELDS=(COMM), Return Comm. sched.
comm. list. C
MF=(E,WSDEXTL) Execute form EXTRACT
macro.
SPACE ,
EX9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R11
Drop WSD.
EJECT
*---------------------------------------------------------------------*
* Examine the CIB for
STOP/P and MODIFY/F commands.
*
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
SC0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
ICM
R10,B'1111',WSDCOMA Insert A(COM).
BZ SC9000
Take branch if no A(COMM).
USING COM,R10
Establish COMM addressability.
SPACE ,
ICM
R9,B'1111',COMCIBPT Insert A(CIB).
BNZ SC0040
We have a CIB, examine it.
USING CIB,R9
Establish CIB addressability.
SPACE ,
SC0030 DS 0H
Make a CIB.
QEDIT ORIGIN=COMCIBPT,
A(CIB chain for this task).
C
CIBCTR=16
Number of CIBs for this task.
SPACE ,
* Note:
A CIBCTR of zero means that no MODIFY/F commands will be
*
accepted. CIBCTR can be between 0 and 255. A number
*
greater than 0 means that up to that number of MODIFY/F
*
commands can be chained. A STOP/P command automatically
*
sets the CIBCTR to 0 so that no more commands will be
*
accepted.
SPACE ,
L
R1,COMECBPT Load
A(COM ECB).
O
R1,ECBLEND
Mark end of ECB list.
ST
R1,WSDECBLA Store
A(ECB list).
B
SC9000
Exit routine.
SPACE ,
SC0040 DS 0H
Examine the CIB.
CLI
CIBVERB,CIBMODFY Was it a MODIFY/F command?
BNE SC0050
No, take branch.
BAS R14,MD0010
Yes, process MODIFY/F command.
B
SC0060
Branch around STOP/F check.
SPACE ,
SC0050 DS 0H
CLI CIBVERB,CIBSTOP
Was it a STOP/P command?
BNE SC0060
No, take branch.
OI WSDFLAG,FSTOP
Set the STOP/P flag.
SC0060 DS 0H
QEDIT ORIGIN=COMCIBPT,
A(CIB chain for this task).
C
BLOCK=(R9)
Free this CIB.
SPACE ,
TM
WSDFLAG,FSTOP Was this CIB for a
STOP/P command?
BNO SC0030
No, take branch.
SPACE ,
BAS R14,DT0010
Get system date and time.
MVC
WSDMSG(L'WTOT003+2),WTOM003
MVC
WSDMSG+22(L'WSDEDTIM-1),WSDEDTIM+1
MVC
WSDMSG+41(L'WSDEDDTE-2),WSDEDDTE+2
LA R2,WSDMSG
Load A(Task stopped message).
SPACE ,
WTO TEXT=((R2)),
WTO message address in R2.
C
MF=(E,WSDWTOL) WTO execute form.
SPACE ,
SC9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R9,R10,R11
Drop CIB, COM, WSD.
EJECT
*---------------------------------------------------------------------*
* Process CIB MODIFY/F
commands.
*
*---------------------------------------------------------------------*
SPACE ,
* Call with: R10 - A(COM)
*
R9 - A(CIB)
SPACE ,
USING WSD,R11
Establish WSD addressability.
USING COM,R10
Establish COM addressability.
USING CIB,R9
Establish CIB addressability.
SPACE ,
MD0010 DS 0H
Routine entry point.
ST R14,0(,R8)
Store return address to stack.
LA R8,4(,R8)
Increment stack pointer.
SPACE ,
MD0020 DS 0H
Process MODIFY/F command.
BAS R14,DT0010
Get system date and time.
MVC
WSDMSG(L'WTOT004+2),WTOM004
MVC WSDMSG+22(L'WSDEDTIM-1),WSDEDTIM+1
MVC
WSDMSG+41(L'WSDEDDTE-2),WSDEDDTE+2
LA R2,WSDMSG
Load A(Task modified message).
SPACE ,
WTO TEXT=((R2)),
WTO message address in R2.
C
MF=(E,WSDWTOL) WTO execute form.
SPACE ,
MD0030 DS 0H
Extract MODIFY/F data.
MVC
WSDMSG+2(L'WTOT005),WTOT005
LH
R3,CIBDATLN Get
MODIFY/F data from CIB.
CHI
R3,126-L'WTOT005 Is data length > max msg length?
BNH MD0040
No, take branch.
LA
R3,126-L'WTOT005 Yes, set max msg length &
truncate.
SPACE ,
MD0040 DS 0H
LTR R4,R3
Was there any MODIFY/F data?
BZ MD0050
No, take branch.
BCTR R3,0
Decrement it for MVC.
LA R2,CIBDATA
Load A(MODIFY/F data).
LA
R1,WSDMSG+2+L'WTOT005
EX R3,MVCEX
Move MODIFY/F data to the message.
LA R4,L'WTOT005(,R4) Add the message
header length.
STH R4,WSDMSG
Store the message length.
LA R2,WSDMSG
Load A(WTO message).
SPACE ,
WTO TEXT=((R2)),
WTO message address in R2.
C
MF=(E,WSDWTOL) WTO execute form.
SPACE ,
MD0050 DS 0H
Run CIB chain.
ICM
R7,B'1111',CIBNEXT Is there another chained CIB?
BZ MD9000
No, take branch.
SPACE ,
* Note: The caller will
delete the last CIB on the chain.
SPACE ,
QEDIT ORIGIN=COMCIBPT,
A(CIB chain for this task).
C
BLOCK=(R9)
Free this CIB.
SPACE ,
LR R9,R7
Load A(Next CIB).
CLI
CIBVERB,CIBMODFY Is is a MODIFY/F command?
BE MD0030
Yes, take branch and process it.
B
MD0050
No, take branch and delete it.
SPACE ,
MD9000 DS 0H
Routine exit.
AHI R8,-4
Decrement stack pointer.
L
R14,0(,R8)
Restore return address.
BR R14
Return to caller.
SPACE ,
DROP R9,R10,R11
Drop CIB, COM, WSD.
EJECT
*---------------------------------------------------------------------*
* Literal pool origin and
program constants.
*
*---------------------------------------------------------------------*
USING WSD,R11
Establish WSD addressability.
SPACE ,
CNOP 0,4
Fullword alignment.
MVCEX MVC 0(0,R1),0(R2)
General purpose MVC to execute.
SPACE ,
WTOL WTO TEXT=,
List form WTO.
C
ROUTCDE=(2,11), Console & Programmer
Information. C
MCSFLAG=(BRDCST), Broadcast to all consoles.
C
DESC=(6),
Job Status Descriptor Code.
C
MF=L
List form macro.
WTOLLEN EQU *-WTOL
Length of this list form WTO.
SPACE ,
WTOM001 DC AL2(L'WTOT001)
WTOT001 DC C'CMDTASK started at
HH:MM:SS.thmiju on MM/DD/YYYY.'
WTOM002 DC AL2(L'WTOT002)
WTOT002 DC C'CMDTASK ended
at HH:MM:SS.thmiju on MM/DD/YYYY.'
WTOM003 DC AL2(L'WTOT003)
WTOT003 DC C'CMDTASK stopped at
HH:MM:SS.thmiju on MM/DD/YYYY.'
WTOM004 DC AL2(L'WTOT004)
WTOT004 DC C'CMDTASK modified at
HH:MM:SS.thmiju on MM/DD/YYYY.'
WTOM005 DC AL2(L'WTOT005)
WTOT005 DC C'CMDTASK modify data: '
SPACE ,
TIMEMASK DC XL16'F021207A20207A20204B202020202020'
DATEMASK DC XL12'F02120206120206120202020'
SPACE ,
CNOP 0,4
Fullword alignment.
SPACE ,
TIMEL TIME LINKAGE=SYSTEM,
System linkage as opposed to SVC. C
MF=L
List form macro.
TIMELLEN EQU *-TIMEL
Length of this list form TIME macro.
SPACE ,
CNOP 0,4
Fullword alignment.
SPACE ,
EXTRACTL EXTRACT 0,
Extract target address (Dummy). C
'S',
Use the current TCB.
C
FIELDS=(COMM), A(Comm sched.
communications list). C
MF=L
List form macro.
EXTRALEN EQU *-EXTRACTL
Length of this list form EXTRACT.
SPACE ,
FSTOP EQU X'01'
Task STOP/P flag mask.
CNOP 0,4
Fullword alignment.
ECBLEND DC XL4'80000000'
End of ECB list.
SPACE ,
LTORG ,
Literal pool origin.
SPACE ,
*---------------------------------------------------------------------*
CMDTASKX EQU *-1
End of module.
SPACE ,
DROP R11,R12
Drop WSD and CSECT base.
EJECT
*---------------------------------------------------------------------*
* Working storage area
DSECT.
*
*---------------------------------------------------------------------*
WSD DSECT ,
WSDRSA DS 18F
Register save area.
ORG WSDRSA+4
Set origin to R13 save word.
WSDR13 DS F
R13 save word.
ORG ,
Reset origin.
WSDR13P DS F
Previous R13 save word.
WSDSTACK DS 16F
Subroutine save stack.
WSDCOMA DS A
A(Comm. sched. cummincations list).
WSDECBLA DS A
A(ECB to wait for console commands).
WSDINTVL DS F
STIMER interval in 1/100 seconds.
WSDDTME DS PL16
Time and date from TIME macro.
WSDEDTIM DS XL16
Edited time.
WSDEDDTE DS XL12
Edited date.
WSDMSG DS AL2,CL126
Console message.
WSDEXTL DS XL(EXTRALEN)
Space for list form EXTRACT.
CNOP 0,4
Fullword alignment.
WSDTIMEL DS XL(TIMELLEN)
Space for list form TIME.
CNOP 0,4
Fullword alignment.
WSDWTOL DS XL(WTOLLEN)
Space for list form WTO.
WSDFLAG DS XL1
Task processing flags.
WSDL EQU ((*-WSD+7)/8)*8
Length of DSECT to nearest dblword.
EJECT
*---------------------------------------------------------------------*
* Communications Parameter
List DSECT.
*
*---------------------------------------------------------------------*
COM DSECT ,
IEZCOM ,
IEZCOM macro.
EJECT
*---------------------------------------------------------------------*
* Command Input Buffer
DSECT.
*
*---------------------------------------------------------------------*
CIB DSECT ,
IEZCIB ,
IEZCIB macro.
SPACE ,
*---------------------------------------------------------------------*
END ,
End of assembly.
PUNCH '*Binder option
overrides'
PUNCH ' SETOPT PARM(REUS=RENT,EXTATTR(APF,PGM))'
PUNCH ' SETOPT PARM(GID=DEVEL01,UID=DEVEL01,AC=1)'
PUNCH '*Module addressability
and residency options'
PUNCH ' MODE AMODE(31)'
Binder 31-Bit addressing mode.
PUNCH ' MODE RMODE(ANY)'
Binder 24 or 31-bit residency.
PUNCH ' ENTRY CMDTASK'
Binder entry statement.
PUNCH ' NAME CMDTASK(R)'
Binder module name statement.
END ,
End of Binder/Linkage Editor cards.
|
Put it together
using the following Assembler and Binder Job-Stream as an example.
Modify the Job-Stream as necessary to suit your environment:
//DEVEL01A JOB (30900001),'Marc Niegowski',NOTIFY=&SYSUID,
//
CLASS=A,MSGLEVEL=(1,1),MSGCLASS=H
//*--------------------------------------------------------------------
//*
HIGH LEVEL ASSEMBLER (HLASM) JOB-STREAM.
//*--------------------------------------------------------------------
// JCLLIB ORDER=DEVEL01.TSO.CNTL
// SET
TITLE='''Assemble and Bind CMDTASK'''
// INCLUDE MEMBER=OUTPUT01
//ASMA90 EXEC PGM=ASMA90,
//
PARM='RENT,NODECK,OBJECT'
//SYSPRINT DD SYSOUT=*
//SYSLIB DD DISP=SHR,DSN=DEVEL01.TSO.MACLIB
// DD DISP=SHR,DSN=SYS1.MACLIB
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSLIN DD DISP=(NEW,PASS),DSN=&OBJECT,
//
SPACE=(CYL,(1,1)),
//
UNIT=SYSDA
//SYSIN DD DISP=SHR,DSN=DEVEL01.TSO.SRCLIB(CMDTASK)
//*--------------------------------------------------------------------
//* BINDER (LINKAGE EDITOR) JOB-STEP.
//*--------------------------------------------------------------------
//HEWLH096 EXEC PGM=HEWLH096,COND=(0,LT),
//
PARM=('SIZE=(1000K,100K)',NCAL,XREF,LIST,MAP,
//
'MSGLEVEL=8','COMPAT=CURR')
//SYSPRINT DD SYSOUT=*
//SYSLMOD DD DISP=SHR,DSN=DEVEL01.APF.LOADLIB
//SYSUT1 DD UNIT=SYSDA,SPACE=(6160,(230,760))
//SYSLIN DD DISP=(OLD,DELETE,DELETE),DSN=&OBJECT
//*--------------------------------------------------------------------
|
Your
assembler
and binder output should look something similar to this.
To execute
this CMDTASK tutorial program as a submitted job, you can use the following sample JCL.
Modify the JCL as necessary to suit your environment:
//DEVEL01J JOB (30900001),'Marc Niegowski',NOTIFY=&SYSUID,
//
CLASS=A,MSGLEVEL=(1,1),MSGCLASS=H
//*--------------------------------------------------------------------
//*
CMDTASK tutorial job stream.
//*--------------------------------------------------------------------
// JCLLIB
ORDER=DEVEL01.TSO.CNTL
//
SET TITLE='''CMDTASK sample job'''
// INCLUDE
MEMBER=OUTPUT01
//CMDTASK EXEC PGM=CMDTASK
//STEPLIB DD DISP=SHR,DSN=DEVEL01.APF.LOADLIB
//SYSPRINT DD SYSOUT=*
//SYSMDUMP DD DISP=(NEW,DELETE,CATLG),DSN=&SYSUID..CMDTASK.SYSMDUMP,
//
DATACLAS=(DUMP),STORCLAS=(DEFAULT)
//*--------------------------------------------------------------------
|
Below is a section
of the console messages from submitting the above job stream. The
console MODIFY or F and STOP or P commands are highlighted in boldface.
15.05.54 JOB01134 $HASP373 DEVEL01J STARTED
- INIT 1 - CLASS A - SYS SYS1
- 15.05.54 JOB01134 CMDTASK started at 15:05:54.868352 on
06/30/2006.
- 15.06.37
F DEVEL01J,ANIMALS=(ZOO,FARM,CIRCUS,WILDERNESS)
- 15.06.37 JOB01134 CMDTASK modified at
15:06:37.327692 on 06/30/2006.
- 15.06.37 JOB01134 CMDTASK modify data: ANIMALS=(ZOO,FARM,CIRCUS,WILDERNESS)
- 15.07.08
F DEVEL01J,FISH=(OCEAN,LAKE,RIVER,POND,AQUARIUM)
- 15.07.08 JOB01134 CMDTASK modified at
15:07:08.786052 on 06/30/2006.
- 15.07.08 JOB01134 CMDTASK modify data: FISH=(OCEAN,LAKE,RIVER,POND,AQUARIUM)
- 15.07.44
F DEVEL01J,You can send your task any data you like from the console
- 15.07.44 JOB01134 CMDTASK modified at
15:07:44.257666 on 06/30/2006.
- 15.07.44 JOB01134 CMDTASK modify data: YOU CAN SEND YOUR TASK ANY
DATA YOU LIKE FROM THE CONSOLE
- 15.07.54
P DEVEL01J
- 15.07.54 JOB01134 CMDTASK stopped at
15:07:54.559545 on 06/30/2006.
- 15.07.54 JOB01134 CMDTASK ended at 15:07:54.566923 on 06/30/2006.
- 15.07.54 JOB01134 IEF404I DEVEL01J - ENDED - TIME=15.07.54
15.07.54 JOB01134 $HASP395 DEVEL01J ENDED
00 15.08.19 JOB01134 $HASP150 DEVEL01J OUTGRP=1.1.1 ON
PRT1 78 (78) RECORDS
|
To execute
this CMDTASK tutorial program as a started task (S CMDTASK or START
CMDTASK from the console), you can use the following sample JCL
procedure.
Modify the JCL procedure as necessary to suit your environment:
//*--------------------------------------------------------------------
//*
CMDTASK tutorial procedure.
//*--------------------------------------------------------------------
//CMDTASK EXEC PGM=CMDTASK
//STEPLIB DD DISP=SHR,DSN=DEVEL01.APF.LOADLIB
//SYSPRINT DD SYSOUT=*
//*--------------------------------------------------------------------
|
Below is a section
of the console messages from starting the above procedure. The
console START or S, MODIFY or F and STOP or P commands are highlighted
in boldface.
- 15.35.34
S CMDTASK
15.35.34 STC01136 $HASP373 CMDTASK
STARTED
- 15.35.34 STC01136 CMDTASK started at 15:35:34.548456 on
06/30/2006.
- 15.35.48
F CMDTASK,ANIMALS=(ZOO,FARM,CIRCUS,WILDERNESS)
- 15.35.48 STC01136 CMDTASK modified at
15:35:48.790614 on 06/30/2006.
- 15.35.48 STC01136 CMDTASK modify data: ANIMALS=(ZOO,FARM,CIRCUS,WILDERNESS)
- 15.36.04
F CMDTASK,FISH=(OCEAN,LAKE,RIVER,POND,AQUARIUM)
- 15.36.04 STC01136 CMDTASK modified at
15:36:04.761650 on 06/30/2006.
- 15.36.04 STC01136 CMDTASK modify data: FISH=(OCEAN,LAKE,RIVER,POND,AQUARIUM)
- 15.36.15
F CMDTASK,You can send your task any data you like from the console
- 15.36.15 STC01136 CMDTASK modified at
15:36:15.426721 on 06/30/2006.
- 15.36.15 STC01136 CMDTASK modify data: YOU CAN SEND YOUR TASK ANY
DATA YOU LIKE FROM THE CONSOLE
00- 15.36.32
P CMDTASK
- 15.36.32 STC01136 CMDTASK stopped at
15:36:32.959267 on 06/30/2006.
- 15.36.32 STC01136 CMDTASK ended at 15:36:32.963912 on 06/30/2006.
- 15.36.33 STC01136 IEF404I CMDTASK - ENDED - TIME=15.36.33
15.36.33 STC01136 $HASP395 CMDTASK ENDED
15.36.33 STC01136 $HASP150 CMDTASK OUTGRP=1.1.1 ON PRT2
56 (56) RECORDS
|
If you wish to
experiment with the files in this tutorial and would rather download the
samples than cut and paste them from this page, you can download the
cmdtask.samples.pds.xmit.zip
file. Unzip this file and send it to your host TSO session using
your favorite transmission method (FTP or IND$FILE, for example) using a record
length of 80 and a record format of fixed (or fixed blocked as long as the
blocksize is a multiple of the record length).
Next you need to
RECEIVE the file under TSO as follows:
-
Enter
"RECEIVE INDS(cmdtask.samples.pds.xmit)" without the quotes,
either at a TSO prompt or ISPF option 6.
-
Once you
receive the "INMR906A Enter restore parameters or 'DELETE' or
'END' +" message
Enter "da(whatever.name.you.choose)" without the quotes.
-
TSO Receive
will produce message indicating the progress of the receive and when
finished, you will have a PDS named "youruserid.whatever.name.you.choose"
containing all of the samples in this tutorial.
I will continue to add
tips and techniques as time permits.
Please direct any
inquiries or problems regarding this web to webmaster@marcsweb.com
Page design, composition and HTML by Marc Niegowski
Copyright © 1998-2012, Marc Niegowski - Connectivity, Inc., All Rights Reserved
23 W. Fourth Street • Media • Pennsylvania • 19063-2805 • USA
Phone: 610-566-0227 • Fax: 610-566-0641 • Email: Marc@Tech-Center.com
Revision Date:
Wednesday, November 15, 2006 10:04:07 AM
|