See attached source.
I purposefully kept it as simple as I could. I don't like complicated
stuff during IPL or shutdown. I also know that someone following me that
has to maintain the program would prefer that I did things simply.
Tony Thigpen
Nai, Dean wrote on 3/10/20 9:23 AM:
The assembler code would be great:
dean....@doit.nh.gov
On 3/10/20, 9:17 AM, "IBM Mainframe Discussion List on behalf of Tony Thigpen"
<IBM-MAIN@LISTSERV.UA.EDU on behalf of t...@vse2pdf.com> wrote:
EXTERNAL: Do not open attachments or click on links unless you recognize and
trust the sender.
I wrote a very small command processor that simple reads a script and
follows it for shutdown or IPL. I does have the ability to make sure a
product is fully down before continuing. The script is very simple. Here
is the script for shutdown:
ASK YES REPLY 'YES' IF YOU WANT TO CONTINUE SHUTDOWN
* ? IS PREFIX FOR TSSO
OPCMD ?.RELOAD HUP1DN
PAUSE 010
OPCMD F JQP,STATS
OPCMD P FFST
OPCMD VARY NET,INACT,ID=VDR,FORCE
OPCMD MODIFY DLF,MODE=QUIESCE
OPCMD P ENF
OPCMD $PI
PAUSE 010
OPCMD D OMVS,A=ALL
OPCMD D OMVS,U=OMVSKERN
PAUSE 010
OPCMD F OMVS,PPFS=ZFS
OPCMD $PLOGON1
PAUSE 010
OPCMD F BPXOINIT,SHUTDOWN=FORKS
PAUSE 010
OPCMD F BPXOINIT,SHUTDOWN=FORKINIT
PAUSE 010
OPCMD0 F CICSPTE2,CESN USERID=OPERACS,PS=XXXXXXXX
OPCMD0 F CICSPTE2,CEMT P SHUT
WAITDOWN 030 CICSPTE2
OPCMD P CNDLINIT
OPCMD /DBR DB ALL
OPCMD #DBR DB ALL
PAUSE 015
* / IS PREFIX FOR IMS PROD
OPCMD /CHE FREEZE
* # IS PREFIX FOR IMS DEVP
OPCMD #CHE FREEZE
WAITDOWN 010 DBCPDBRC
WAITDOWN 010 DBCPDLI
WAITDOWN 010 DBCPBC
WAITDOWN 010 DBCTDBRC
WAITDOWN 010 DBCTDLI
WAITDOWN 010 DBCTBC
OPCMD P RMM
OPCMD P DFSMSHSM
OPCMD P DSSUMON
OPCMD P JCLARCHP
PAUSE 010
OPCMD P JCLARCH
OPCMD MODIFY JQP,SHUT
OPCMD P LLA
OPCMD %P
OPCMD MODIFY RMF,P III
OPCMD P SDSF
PAUSE 010
OPCMD P LPSERVE
OPCMD P FTPD
OPCMD F ESF,PNET
OPCMD F ESF,SHUTDOWN
OPCMD P TSO
OPCMD P DLF
OPCMD P VLF
OPCMD P RMF
PAUSE 010
OPCMD $P I
OPCMD $P LINE(1-10)
OPCMD C APPC
PAUSE 010
OPCMD C LPSERVE
OPCMD C FTPD
PAUSE 010
OPCMD %STOP
PAUSE 010
OPCMD $E LINE(1-10)
WAITDOWN 010 APPC
WAITDOWN 010 CNDLINIT
WAITDOWN 010 DBCPDBC
WAITDOWN 010 DBCPDBRC
WAITDOWN 010 DBCPDLI
WAITDOWN 010 DBCTDBC
WAITDOWN 010 DBCTDBRC
WAITDOWN 010 DBCTDLI
WAITDOWN 010 DFSMSHSM
WAITDOWN 010 DLF
WAITDOWN 010 DSSUMON
WAITDOWN 010 ENF
WAITDOWN 010 EPWFFST
WAITDOWN 010 ESF
WAITDOWN 010 FTPD
WAITDOWN 010 JCLARCH
WAITDOWN 010 JCLARCHP
WAITDOWN 010 LLA
WAITDOWN 010 LPSERVE
WAITDOWN 010 RACF
WAITDOWN 010 RMF
WAITDOWN 010 RMFGAT
WAITDOWN 010 RMM
WAITDOWN 010 SDSF
WAITDOWN 010 TCPIP
WAITDOWN 010 TSO
WAITDOWN 010 VDR
WAITDOWN 010 VLF
OPCMD D A,L
* ? IS PREFIX FOR TSSO
OPCMD ?.P
OPCMD Z NET,QUICK
WAITDOWN 010 TSSO
WAITDOWN 010 NET
OPCMD $T U,ALL
OPCMD $P JES2
PAUSE 010
OPCMD $P JES2,QUICK
PAUSE 010
WAITDOWN 010 JES2
I am able to share the basic assembler code. There is nothing fancy in it.
Tony Thigpen
Nai, Dean wrote on 3/10/20 8:20 AM:
Currently we use CAS9 to start and stop everything during an IPL. CA will be
going away so I was wondering if anyone had thoughts on other cheap or free
products that will do that until we are off Z/OS. Maybe something on the CBT
tape?
Dean Nai
On 3/10/20, 7:56 AM, "IBM Mainframe Discussion List on behalf of Peter Relson"
<IBM-MAIN@LISTSERV.UA.EDU on behalf of rel...@us.ibm.com> wrote:
EXTERNAL: Do not open attachments or click on links unless you recognize and
trust the sender.
Ah, the "return code 4" smoking gun. I'm with you now...
Peter Relson
z/OS Core Technology Design
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
TITLE 'JOBZDOIT - PROCESS A PARMLIB SCRIPT'
*
* AUTHOR: TONY THIGPEN
* THIPGEN ENTERPRISES, INC.
* WINTER HAVEN, FL
* 407-474-0770
* t...@thigpens.com
*
* DATE: 03/18/2018
*
* COPYRIGHT 2018-2020 TONY THIGPEN. ALL RIGHTS RESERVERD.
*
* PERMISSION TO USE, COPY, MODIFY, AND DISTRIBUTE THIS SOFTWARE
* AND ITS DOCUMENTATION FOR EDUCATIONAL, RESEARCH, AND NOT-FOR-PROFIT
* PURPOSES, WITHOUT FEE AND WITHOUT A SIGNED LICENSING AGREEMENT,
* IS HEREBY GRANTED, PROVIDED THAT THE ABOVE COPYRIGHT NOTICE, THIS
* PARAGRAPH AND THE FOLLOWING TWO PARAGRAPHS APPEAR IN ALL COPIES,
* MODIFICATIONS, AND DISTRIBUTIONS.
*
* IN NO EVENT SHALL TONY THIGPEN BE LIABLE TO ANY PARTY FOR DIRECT,
* NDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE, AND IT'S
* DOCUMENTATION, EVEN IF TONY THIGPEN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* TONY THIGPEN SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND
* ACCOMPANYING DOCUMENTATION, IF ANY, IS PROVIDED "AS IS". TONY
* THIGPEN HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
* ENHANCEMENTS, OR MODIFICATIONS.
*
* USAGE:
* CARD INPUT CONTAINS:
* 1-8 ACTION:
* 'ASK ' PROMPT THE OPERATOR WITH THE MESSAGE IN 12-19.
* IF THE ANSWER EXACTLY MATCHES 9-11, THE THE
* PROGRAM WILL CONTINUE PROCESSING. ANY MIS-
* MATCH OF THE ANWSER WILL CASE THE PROGRAM TO
* DISCONTINUE PROCESSING OF COMMANDS.
* 'EXIT ' DISCONTINUE PROCESSING OF COMMANDS. USED FOR
* TESTING.
* 'OPCMD ' ISSUE CONSOLE COMMAND IN 9-71.
* 'OPCMD0 ' ISSUE CONSOLE COMMAND IN 9-71 FROM CONSID=0.
* 'PAUSE ' WAIT SECONDS SPECIFIED IN 9-11.
* 'WAITDOWN' WAIT FOR JOB IN 12-19 TO SHUT DOWN. CHECK
* ONCE EVERY N SECONDS SPECIFIED IN 9-11.
* 'WAITUP ' WAIT FOR JOB IN 12-19 TO BE STARTED. CHECK
* ONCE EVERY N SECONDS SPECIFIED IN 9-11.
* 'WAITVTAM' WAIT UNTIL A CONNECTION TO THE APPLID
* SPECIFICED IN 12-19 CAN BE ESTABLISHED. THE
* DEFAULT OF 'VTAMISUP' WILL BE USED IF SPACES.
* CHECK ONCE EVER N SECONDS SPECIFIED IN 9-11.
* 9-71 PARMS, AS DESCRIBED ABOVE.
*
* USAGE NOTES:
* ALL USE OF SECONDS IN 9-11 REQUIRE THREE NUMERICAL DIGITS. NO
* EDITING IS PERFORMED. INVALID DATA MAY CAUSE PROGRAM EXCEPTIONS.
* COMMENTS CARDS ARE ANY CARD WITH '*' IN THE FIRST POSITION.
*
* EXAMPLES (SHIFTED RIGHT 3 POSITIONS):
* THE FOLLOWING IS A PARTIAL SHUTDOWN SCRIPT
* ASK YES REPLY 'YES' IF YOU WANT TO CONTINUE SHUTDOWN
* OPCMD P RMM
* WAITDOWN 010 RMM
* OPCMD Z NET,QUICK
* WAITDOWN 010 NET
* OPCMD $T U,ALL
* OPCMD $P JES2
* PAUSE 010
* OPCMD $P JES2,QUICK
* PAUSE 010
* WAITDOWN 010 JES2
*
* THE FOLLOIWNG IS A PARTIAL STARTUP SCRIPT
* OPCMD S DLF,SUB=MSTR
* PAUSE 020 ALLOW JES2 TIME TO COME UP
* OPCMD S RMM
* OPCMD S DFSMSHSM
* PAUSE 010
* * THE FOLLOWING VERIFIES THAT JES2 IS UP
* WAITUP 010 RMM
* OPCMD S NET,,,(LIST=00)
* PAUSE 010
* WAITUP 010 NET
* WAITVTAM 010
* OPCMD S RMF.RMF,,,MEMBER(00)
* OPCMD S SDSF
* PAUSE 010
* OPCMD S TSO
* PAUSE 010
* OPCMD S TCPIP
* OPCMD S TN3270E
* PAUSE 020
* ASK YES REPLY 'YES' TO START DATABASES
* OPCMD S ADAPROD
* PAUSE 020
* OPCMD S ADATEST
* PAUSE 020
* ASK YES REPLY 'YES' TO START CICS'S
* OPCMD S CICSP
* PAUSE 020
* OPCMD S CICSD
* WAITUP 010 CICSP
* WAITUP 010 CICSD
*
* THE FOLLOWING ARE EXAMPLE PROCS:
* 'SYS1.PROCLIB(SHUTDOWN)'
* //SHUTHKYP PROC MEM='JOBZIPLD'
* //COMAND00 EXEC PGM=JOBZDOIT,REGION=3000K,TIME=50
* //CARDS DD DSN=SYS1.PARMLIB(&MEM),DISP=SHR
* //
*
* TO SHUTDOWN USING THE ABOVE SCRIPT, THE OPERATOR ISSUES:
*
* S SHUTDOWN,SUB=MSTR
*
* 'SYS1.PROCLIB(STARTUP)'
* //STRTHKYP PROC MEM='JOBZIPLU'
* //COMAND00 EXEC PGM=JOBZDOIT,REGION=3000K,TIME=50
* //CARDS DD DSN=SYS1.PARMLIB(&MEM),DISP=SHR
* //
*
* TO SHUTDOWN USING THE ABOVE SCRIPT, PLACE IN COMMMD00:
* COM='START STRTHKYP,SUB=MSTR'
*
* JOBZDOIT CAN ALSO BE USED IN NORMAL JOBS:
* //COMAND00 EXEC PGM=JOBZDOIT,REGION=3000K,TIME=50
* //CARDS DD *
* OPCMD0 V 084,CONSOLE
* //
*
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
JOBZDOIT CSECT
JOBZDOIT AMODE 24
JOBZDOIT RMODE 24
STM R14,R12,12(R13) SAVE REGISTERS
LR R12,R15 LOAD MY BASE REGISTER
USING JOBZDOIT,R12
L R0,=A(WORKLL) LENGTH OF WORK AREA
GETMAIN RU,LV=(0),LOC=BELOW
ST R13,4(R1) SAVE BACK CHAIN
ST R1,8(R13) SAVE FORWARD CHAIN
L R1,24(R13) RESTORE REG1
L R13,8(R13) POINT TO MY SAVE AREA
USING WORKAREA,R13
GETMYNAME DS 0H
L R10,X'021C' CURRENT TCB
L R10,12(,R10) POINT TO TIOT
MVC MYJOB,0(R10) POPULATE JOB-NUMBER
OPEN (CARD,INPUT)
READIT DS 0H
GET CARD,INCARD
CLI ACTION,C'*'
BE READIT
CLC ACTION,=CL8'ASK '
BE ASK_
MVC WS_WTOAREA,CMD_WTO
MVC WS_WTOAREA+4(8),MYJOB
MVC WS_WTOAREA+17(L'INCARD),INCARD
WTO MF=(E,WS_WTOAREA)
CLC ACTION,=CL8'OPCMD '
BE OPCMD_
CLC ACTION,=CL8'OPCMD0 '
BE OPCMD0_
CLC ACTION,=CL8'PAUSE '
BE PAUSE_
CLC ACTION,=CL8'WAITDOWN'
BE WAITDOWN_
CLC ACTION,=CL8'WAITUP '
BE WAITUP_
CLC ACTION,=CL8'WAITVTAM'
BE WAITVTAM_
CLC ACTION,=CL8'EXIT '
BE EXIT_
MVC WS_WTOAREA,CMD_BAD
MVC WS_WTOAREA+4(8),MYJOB
WTO MF=(E,WS_WTOAREA)
B READIT
OPCMD_ DS 0H
MVC CONCMD,COMMAND
LA R1,L'CONCMD
STH R1,CONCMDL
LA R1,0
STH R1,CONCMDL0
MVC CONCMDL0,CONCMDL
LA R2,CONCMDL0
MODESET MODE=SUP,KEY=ZERO
LA R1,CONCMDS
SR R0,R0 CLEAR FOR SVC 34
SVC 34 ISSUE THE COMMAND
MODESET MODE=PROB,KEY=NZERO
OC_EXIT DS 0H
B READIT
OPCMD0_ DS 0H
MVC CONCMD,COMMAND
LA R1,L'CONCMD
STH R1,CONCMDL
LA R1,0
STH R1,CONCMDL0
MVC CONCMDL0,CONCMDL
LA R2,CONCMDL0
MVC WS_MGAREA,C0_MGCRE
MODESET MODE=SUP,KEY=ZERO
MGCRE MF=(E,WS_MGAREA),TEXT=(R2),CONSID=ZERO
MODESET MODE=PROB,KEY=NZERO
OC0_EXIT DS 0H
B READIT
PAUSE_ DS 0H
CLC SECONDS,SPACES
BNE PA_WAIT
MVC SECONDS,=C'010'
PA_WAIT DS 0H
MVC SECS_Z,=C'000XXX00' ALSO ADDS SUBSECS AS ZEROS
MVC SECS_Z+3(3),SECONDS
PACK SECS_P,SECS_Z
CVB R1,SECS_P
ST R1,SECS_B
STIMER WAIT,BINTVL=SECS_B
PA_EXIT DS 0H
B READIT
WAITDOWN_ DS 0H
CLC SECONDS,SPACES
BNE WD_SCAN
MVC SECONDS,=C'010'
WD_SCAN DS 0H
*******************************************************************
* POINT TO ASVT
*******************************************************************
L R2,CVTPTR POINT TO CVT - X'10'
USING CVT,R2 MAP CVT
L R2,CVTASVT POINT TO ASVT
DROP R2 TELL ASMBLR TO STOP USING R2 FOR CVT
USING ASVT,R2 MAP ASVT
LA R4,ASVTENTY POINT TO FIRST ENTRY IN TABLE
L R3,ASVTMAXU LOAD MAX NUMBER OF ENTRIES
*******************************************************************
* THIS ROUTINE CHECKS EACH ASVT ENTRY.
* IF THE HIGH ORDER BIT IS ON, THE ENTRY IS THE ADDRESS OF THE
* NEXT AVAILABLE ASID (OR THE LAST ENTRY IF ZEROS).
* IF THE HIGH ORDER BIT IS NOT ON, THE ENTRY IS THE ADDRESS
* OF THE ASCB FOR THAT ENTRY.
*******************************************************************
WD_LOOP TM 0(R4),ASVTAVAL IS THIS AN ASCB ADDRESS ?
BO WD_NEXT
*******************************************************************
* WE HAVE A VALID ASCB ADDRESS - CHECK IT
*******************************************************************
WD_ASCB DS 0H
L R10,0(R4) POINT TO ASCB
USING ASCB,R10 MAP IT
L R5,ASCBJBNI POINT TO JOBNAME
CL R5,=F'0' WAS THIS A START/MOUNT/LOGON ?
BE WD_STC YES, BRANCH
CLC JOBNAME,0(R5) IS IT THE ASCB OF JOB ON THE PARM?
BE WD_UP YES, BRANCH
B WD_NEXT
WD_STC DS 0H
L R5,ASCBJBNS POINT TO START/MOUNT/LOGON NAME
CLC JOBNAME,0(R5) IS IT THE ASCB OF JOB ON THE PARM?
BE WD_UP YES, BRANCH
WD_NEXT DS 0H
LA R4,4(,R4) NO, POINT TO NEXT ENTRY IN ASVT
BCT R3,WD_LOOP GO CHECK NEXT ASVT ENTRY
DROP R10
WD_DOWN DS 0H
MVC WS_WTOAREA,WD_WTO1
MVC WS_WTOAREA+4(8),MYJOB
MVC WS_WTOAREA+17(8),JOBNAME
WTO MF=(E,WS_WTOAREA)
B WD_EXIT
WD_UP DS 0H
MVC WS_WTOAREA,WD_WTO2
MVC WS_WTOAREA+4(8),MYJOB
MVC WS_WTOAREA+25(8),JOBNAME
WTO MF=(E,WS_WTOAREA)
MVC SECS_Z,=C'000XXX00' ALSO ADDS SUBSECS AS ZEROS
MVC SECS_Z+3(3),SECONDS
PACK SECS_P,SECS_Z
CVB R1,SECS_P
ST R1,SECS_B
STIMER WAIT,BINTVL=SECS_B
B WD_SCAN
WD_EXIT DS 0H
B READIT
WAITUP_ DS 0H
CLC SECONDS,SPACES
BNE WU_SCAN
MVC SECONDS,=C'010'
WU_SCAN DS 0H
*******************************************************************
* POINT TO ASVT
*******************************************************************
L R2,CVTPTR POINT TO CVT - X'10'
USING CVT,R2 MAP CVT
L R2,CVTASVT POINT TO ASVT
DROP R2 TELL ASMBLR TO STOP USING R2 FOR CVT
USING ASVT,R2 MAP ASVT
LA R4,ASVTENTY POINT TO FIRST ENTRY IN TABLE
L R3,ASVTMAXU LOAD MAX NUMBER OF ENTRIES
*******************************************************************
* THIS ROUTINE CHECKS EACH ASVT ENTRY.
* IF THE HIGH ORDER BIT IS ON, THE ENTRY IS THE ADDRESS OF THE
* NEXT AVAILABLE ASID (OR THE LAST ENTRY IF ZEROS).
* IF THE HIGH ORDER BIT IS NOT ON, THE ENTRY IS THE ADDRESS
* OF THE ASCB FOR THAT ENTRY.
*******************************************************************
WU_LOOP TM 0(R4),ASVTAVAL IS THIS AN ASCB ADDRESS ?
BO WU_NEXT
*******************************************************************
* WE HAVE A VALID ASCB ADDRESS - CHECK IT
*******************************************************************
WU_ASCB DS 0H
L R10,0(R4) POINT TO ASCB
USING ASCB,R10 MAP IT
L R5,ASCBJBNI POINT TO JOBNAME
CL R5,=F'0' WAS THIS A START/MOUNT/LOGON ?
BE WU_STC YES, BRANCH
CLC JOBNAME,0(R5) IS IT THE ASCB OF JOB ON THE PARM?
BE WU_UP YES, BRANCH
B WU_NEXT
WU_STC DS 0H
L R5,ASCBJBNS POINT TO START/MOUNT/LOGON NAME
CLC JOBNAME,0(R5) IS IT THE ASCB OF JOB ON THE PARM?
BE WU_UP YES, BRANCH
WU_NEXT DS 0H
LA R4,4(,R4) NO, POINT TO NEXT ENTRY IN ASVT
BCT R3,WU_LOOP GO CHECK NEXT ASVT ENTRY
DROP R10
WU_DOWN DS 0H
MVC WS_WTOAREA,WU_WTO2
MVC WS_WTOAREA+4(8),MYJOB
MVC WS_WTOAREA+25(8),JOBNAME
WTO MF=(E,WS_WTOAREA)
MVC SECS_Z,=C'000XXX00' ALSO ADDS SUBSECS AS ZEROS
MVC SECS_Z+3(3),SECONDS
PACK SECS_P,SECS_Z
CVB R1,SECS_P
ST R1,SECS_B
STIMER WAIT,BINTVL=SECS_B
B WU_SCAN
WU_UP DS 0H
MVC WS_WTOAREA,WU_WTO1
MVC WS_WTOAREA+4(8),MYJOB
MVC WS_WTOAREA+17(8),JOBNAME
WTO MF=(E,WS_WTOAREA)
B WU_EXIT
WU_EXIT DS 0H
B READIT
WAITVTAM_ DS 0H
CLC SECONDS,SPACES
BNE WV_ACBNAME
MVC SECONDS,=C'010'
WV_ACBNAME DS 0H
MVI ACBLANE_L,X'08' ACBNAME LENGTH
MVC ACBNAME(8),=CL8'VTAMISUP'
CLI JOBNAME,C' '
BE WV_GENCB
MVC ACBNAME(8),JOBNAME ALLOW OVERRIDE ACBNAME
WV_GENCB DS 0H
LA R2,VTAMACB
LA R3,APPLID
GENCB BLK=ACB,AM=VTAM,APPLID=((R3)),MACRF=NLOGON, X
WAREA=((R2)),LENGTH=VTAMACB_L
LTR 15,15
BZ WV_SCAN
ABEND 001,DUMP
WV_SCAN DS 0H
LA R2,VTAMACB
OPEN ((2))
LTR R15,R15
BZ WV_UP
B WV_DOWN
WV_UP DS 0H
LA R2,VTAMACB
CLOSE ((2))
MVC WS_WTOAREA,WU_WTO3
MVC WS_WTOAREA+4(8),MYJOB
WTO MF=(E,WS_WTOAREA)
B WV_EXIT
WV_DOWN DS 0H
MVC WS_WTOAREA,WD_WTO3
MVC WS_WTOAREA+4(8),MYJOB
WTO MF=(E,WS_WTOAREA)
MVC SECS_Z,=C'000XXX00' ALSO ADDS SUBSECS AS ZEROS
MVC SECS_Z+3(3),SECONDS
PACK SECS_P,SECS_Z
CVB R1,SECS_P
ST R1,SECS_B
STIMER WAIT,BINTVL=SECS_B
B WV_SCAN
WV_EXIT DS 0H
B READIT
ASK_ DS 0H
MVC WS_WTOAREA,ASK_WTOR
MVC WS_WTOAREA+12(8),MYJOB
MVC WS_WTOAREA+21(L'PROMPT),PROMPT
XC ASK_ECB,ASK_ECB
LA R2,ASK_RPLY
LA R3,ASK_ECB
WTOR ,(R2),,(R3),MF=(E,WS_WTOAREA)
WAIT ECB=(R3)
OC ASK_RPLY,SPACES
CLC ANSWER,ASK_RPLY
BNE EXIT_
ASK_EXIT DS 0H
B READIT
EXIT_ DS 0H
EODINPUT DS 0H
CLOSE CARD
L R13,4(R13) RESTORE REG13 (CALLER'S AREA)
L R1,8(R13) MY SAVE AREA
L R0,=A(WORKLL) SET LENGTH
FREEMAIN RU,LV=(0),A=(1)
LM R14,R12,12(R13) RESTORE CALLER'S REGS
LA R15,0
BR R14 RETURN TO CALLER
DS 0F
CARD DCB DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=32000,DDNAME=CARDS, X
MACRF=(GM),EODAD=EODINPUT
ZERO DC A(0)
SPACES DC CL80' '
CMD_WTO WTO 'JOBZDOIT CMD= ',X
MF=L
CMD_BAD WTO 'JOBZDOIT INVALID REQUEST ',X
MF=L
WD_WTO1 WTO 'JOBZDOIT JOB XXXXXXXX IS DOWN ',X
MF=L
WD_WTO2 WTO 'JOBZDOIT WAITING FOR XXXXXXXX TO SHUTDOWN ',X
MF=L
WD_WTO3 WTO 'JOBZDOIT WAITING FOR VTAM TO START UP ',X
MF=L
WU_WTO1 WTO 'JOBZDOIT JOB XXXXXXXX IS UP ',X
MF=L
WU_WTO2 WTO 'JOBZDOIT WAITING FOR XXXXXXXX TO START UP ',X
MF=L
WU_WTO3 WTO 'JOBZDOIT VTAM IS UP ',X
MF=L
ASK_WTOR WTOR 'JOBZDOIT X
', X
0,3,0,ROUTCDE=(2),MF=L
C0_MGCRE MGCRE MF=L
LTORG
WORKAREA DSECT
SAVEAREA DS CL72
MYJOB DS CL8
*
INCARDL DC Y(80)
INCARD DS CL80
ORG INCARD
ACTION DS CL8
DS CL1
COMMAND DS 0CL(72-(*-INCARD))
ANSWER DS 0CL3
SECONDS DS CL3
DS CL1
PROMPT DS 0CL(72-(*-INCARD))
JOBNAME DS CL8
ORG
BLOCKER DS C' '
DS 0F
CONCMDS DS 0F
CONCMDL DS H
CONCMDL0 DS H
CONCMD DS CL(L'COMMAND)
DS 0F
SECS_Z DS CL8
SECS_P DS CL8
SECS_B DS CL4
APPLID DS 0XL9
ACBLANE_L DC XL1'08'
ACBNAME DC CL8'VTAMISUP' VTAM ACB NAME
VTAMACB ACB AM=VTAM,APPLID=APPLID,MACRF=NLOGON
VTAMACB_L EQU *-VTAMACB
ASK_ECB DC F'0'
ASK_RPLY DS CL3
DS 0F
WS_WTOAREA DS CL200
DS 0F
WS_MGAREA DS CL200
*
WORKLL EQU *-WORKAREA
CVT DSECT=YES
IHAASVT
IHAASCB
END JOBZDOIT
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN