Loading...
Select Version
&pagelevel(3)&pagelevel
Exchange information
This example demonstrates the use of the MODIFY-JV-CONDITIONALLY command and the CSWJV, LNKJV and TIMJV macros. Information is exchanged between a procedure and an ENTER job.
The sample procedure is started by means of the command /CALL-PROCEDURE PROC.BSP9. The executable module TESTJV must be stored in the library ASS.PLAMLIB.
Procedure PROC.BSP9
/ BEG-PROC LOGGING=*CMD
/ ASSIGN-SYSLST TO=LST.PROC
/ MODIFY-JOB-OPTION LOGGING=*PARAMETER(LISTING=*YES)
/ SET-JV-LINK JV-NAME=JV.E.1
/ MODIFY-JV JV=JV.E.1,SET-VALUE=C'***'
/ SET-JV-LINK JV-NAME=JV.DO.1
/ MODIFY-JV JV=JV.DO.1,SET-VALUE=C'***'
/ SET-JV-LINK JV-NAME=JV.MON
/ ENTER-JOB FROM-FILE=TEST.ENTER,MONJV=JV.MON,JOB-CLASS=JCBATCH
/.SKIP1 SHOW-JV JV=JV.MON
/ WAIT-EVENT *JV(CONDITION=((JV.MON,1,2)=C'$R'), -
/ TIME-LIMIT=90,TIMEOUT-LABEL=SKIP1)
/.PRUEF MODIFY-JV-CONDITIONALLY JV=(JV.DO.1),/
IF-VALUE=C'GESTARTET',SET-VALUE=C'UNDERSTOOD',/
LABEL=WEIT1
/ SKIP-COMMANDS TO-LABEL=PRUEF
/.WEIT1 SHOW-JV JV=JV.DO.1
/ SHOW-JV JV=JV.E.1
/ SHOW-JV JV=JV.MON
/ SHOW-JOB-STAT *MONJV(JV.MON)
/ WAIT-EVENT *JV(CONDITION=((JV.DO.1)=C'CARRY ON'), -
/ TIME-LIMIT=15,TIMEOUT-LABEL=WEIT1)
/.WEIT2 MODIFY-JV JV=JV.E.1,SET-VALUE=C'PROGRAM CONTINUE'
/.SKIP3 SKIP-COMMANDS TO-LABEL=ENDE,/
IF=*JV(CONDITION=((JV.E.1,12,3)=C'END'))
/ SHOW-USER-STATUS
/ SHOW-JV JV=JV.E.1
/ SHOW-JV JV=JV.MON
/ WAIT-EVENT UNTIL=*JV(TIME-LIMIT=45,TIMEOUT-LABEL=SKIP3)
/.ENDE REMARK **** TESTJOB ENDED ****
/ SHOW-JV JV=JV.MON
/ ASSIGN-SYSLST TO=*PRIMARY
/ MODIFY-JOB-OPTION
/ END-PROCEDURE
/ BEG-PROC LOGGING=*CMD
/ ASSIGN-SYSLST TO=LST.PROC
/ MODIFY-JOB-OPTION LOGGING=*PARAMETER(LISTING=*YES)
File TEST.ENTER
/.TESTJV SET-LOGON-PARAMETERS
/ ASSIGN-SYSOUT TO=OUT.E.TESTJV
/ SET-JV-LINK JV-NAME=JV.DO.1
/ SET-JV-LINK JV-NAME=JV.PROG
/ MODIFY-JV JV=JV.DO.1,SET-VALUE=C'GESTARTET'
/ START-EXE FROM-FILE=(LIB=ALF.ASS.PLAMLIB,ELEM=TESTJV),/
TEST-OPTIONS=*AID,MONJV=JV.PROG
/ SHOW-JV JV=JV.MON
/ SHOW-JV JV=JV.PROG
/ SKIP-COMMANDS TO-LABEL=ENDE
/ SET-JOB-STEP
/ MODIFY-JV JV=JV.E.1,SET-VALUE=C'ABNORMAL END'
/.ENDE WAIT-EVENT UNTIL=*JV(TIME-LIMIT=120,TIMEOUT-LABEL=TIME)
/.TIME MODIFY-JV JV=(JV.E.1,12,3),SET-VALUE=C'END'
/ EXIT-JOB SYSTEM-OUTPUT=*NONE
Source program SRC.TESTJV
TESTJV START
TITLE 'TEST PROGRAM FOR CSWJV'
*
* REGISTER ASSIGNMENT
BALR 3,0
USING *,3
PRINT NOGEN
*
* JOBVARIABLE JV.E.1 IS ASSIGNED THE LINK NAME *ENTER
* LINK NAME *ENTER IS STORED IN THE LNKBER FIELD
* THE CMD MACRO CAUSES THE CONTENTS OF LNKBER TO BE OUTPUT
*
DCLJV JV.E.1,LINK=*ENTER,VERSION=1
LNKJV LNKBER,LINK=*ENTER,VERSION=1
CMD '%DISPLAY','LNKBER'
*
* THE VALUE OF JV.DO.1 IS COMPARED WITH THE CONTENTS OF VERGL
* IF THEY ARE EQUAL THE SET VALUE NEUWERT IS TO BE SET
*
CSWJV CSWJV JV.DO.1,VERGL,NEUWERT,VERSION=1
*
* MESSAGE MELD1 *** CSWJV EXECUTED *** IS OUTPUT
* AND MESSAGE AND TIMESTAMP ARE SET IN MONJV
*
WROUT MELD1,TERM
TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
INFO='*** CSWJV EXECUTED ***'
CMD 'SHOW-JV','JV=*LINK(SMONJVJ)'
*
* THE JVDOW FIELD IS SUPPLIED WITH THE CONTENTS OF JV.DO.1
* COMPARISON TO TEST IF JVDOW CONTAINS THE VALUE 'CARRY ON'
*
GETJV JV.DO.1,JVDOW,30,VERSION=1
CLC JVDOW+4(12),='CARRY ON'
BE FORTSETZ
*
* AS THE VALUE OF JV.DO.1 IS MOVED TO THE VERGL FIELD IF THE VALUES
* ARE NOT EQUAL, VERGL IS RESET TO 'UNDERSTOOD'
*
MVC VERGLF,='UNDERSTOOD'
VPASS 1
B CSWJV
*
* THE JVEW FIELD IS SUPPLIED WITH THE VALUE OF JV.E.1
* COMPARISON TO TEST IF JVEW CONTAINS THE VALUE 'CONTINUE PROGRAM'
*
FORTSETZ EQU *
GETJV JV.E.1,JVEW,30,VERSION=1
CLC JVEW+4(19),='CONTINUE PROGRAM'
BNE FORTSETZ
*
MESSAGE *** PROGRAM CONTINUED *** IS OUTPUT
* AND MESSAGE AND TIMESTAMP ARE SET IN MONJV
*
WROUT MELD2,TERM
TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
INFO=C'*** PROGRAM CONTINUED ***'
CMD 'SHOW-JV','JV=*LINK(SMONJVJ)'
*
* MESSAGE *** PROGRAM FINAL SPURT *** IS OUTPUT
* AND MESSAGE AND TIMESTAMP ARE SET IN MONJV
*
BEENDEN EQU *
WROUT MELD3,TERM
TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
INFO=C'*** PROGRAM FINAL SPURT ***'
CMD 'SHOW-JV','JV=*LINK(SMONJVJ)'
*
* THE VALUE 'NORMAL END' IS ASSIGNED TO JOB VARIABLE JV.E.1
* AND MESSAGE AND TIMESTAMP ARE SET IN MONJV
*
SETJV JV.E.1,EWERT,VERSION=1
TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
INFO=C'*** PROGRAM ENDED ***'
TERM TERM
*
* DEFINITIONS
*
VERGL DC Y(END1-VERGL)
DS CL2
VERGLF DC 'UNDERSTOOD'
END1 EQU *
*
NEUWERT DC Y(END2-NEUWERT)
DS CL2
DC 'CARRY ON'
END2 EQU *
*
EWERT DC Y(END3-EWERT)
DS CL2
DC 'NORMAL END'
END3 EQU *
*
MELD1 DC Y(END4-MELD1)
DS CL2
DC X'01'
MELD1TXT DC '*** CSWJV EXECUTED ***'
END4 EQU *
*
MELD2 DC Y(END5-MELD2)
DS CL2
DC X'01'
MELD2TXT DC '*** PROGRAM CONTINUED ***'
END5 EQU *
*
*MELD3 DC Y(END6-MELD3)
DS CL2
DC X'01'
MELD3TXT DC '*** PROGRAM FINAL SPURT ***'
END6 EQU *
*
JVDOW DS CL30
*
JVEW DS CL30
*
LNKBER DS CL63
END
Runtime listing LST.PROC for procedure PROC.BSP9
(IN) / MODIFY-JOB-OPTION LOGGING=*PARAMETER(LISTING=*YES) (IN) / SET-JV-LINK JV-NAME=JV.E.1 (IN) / MODIFY-JV JV=JV.E.1,SET-VALUE=C'***' (IN) / SET-JV-LINK JV-NAME=JV.DO.1 (IN) / MODIFY-JV JV=JV.DO.1,SET-VALUE=C'***' (IN) / SET-JV-LINK JV-NAME=JV.MON (IN) / ENTER-JOB FROM-FILE=TEST.ENTER,MONJV=JV.MON,JOB-CLASS= JCBATCH (OUT) % JMS0066 JOB 'TESTJV' ACCEPTED ON 03-08-08 AT 09:22, TSN = 0FFJ (IN) /.SKIP1 SHOW-JV JV=JV.MON (OUT) $S 00FFJ4V05 J0672003-08-08072201 ( ) (IN) / WAIT-EVENT *JV(CONDITION=((JV.MON,1,2)=C'$R'), TIME-LIMIT=90,TIMEOUT-LABEL=SKIP1) (OUT) % CJC0020 WAIT COMMAND: TASK ENTERED WAIT STATE AT 09:22:01 (OUT) % CJC0021 WAIT COMMAND: CONDITION = TRUE AT 09:22:01 (IN) /.PRUEF MODIFY-JV-CONDITIONALLY JV=(JV.DO.1), IF-VALUE=C'GESTARTET',SET-VALUE=C'UNDERSTOOD',LABEL=WEIT1 (IN) / SKIP-COMMANDS TO-LABEL=PRUEF (IN) /.PRUEF MODIFY-JV-CONDITIONALLY JV=(JV.DO.1), IF-VALUE=C'GESTARTET',SET-VALUE=C'UNDERSTOOD',LABEL=WEIT1 (IN) / SKIP-COMMANDS TO-LABEL=PRUEF (IN) /.PRUEF MODIFY-JV-CONDITIONALLY JV=(JV.DO.1), IF-VALUE=C'GESTARTET',SET-VALUE=C'UNDERSTOOD',LABEL=WEIT1 (IN) /.WEIT1 SHOW-JV JV=JV.DO.1 (OUT) UNDERSTOOD (IN) / SHOW-JV JV=JV.E.1 (OUT) *** (IN) / SHOW-JV JV=JV.MON (OUT) $R 00FFJ4V05 J0672003-08-08072201 ( ) (IN) / SHOW-JOB-STAT *MONJV(JV.MON) (OUT) TSN: 0FFJ TYPE: 2 BATCH NOW: 2003-08-08.092201 (NL) JOBNAME: TESTJV PRI: 9 255 SPOOLIN: 2003-08-08.0922 (NL) USERID: COGNITAS JCLASS: JCBATCH LOGON: 2003-08-08.0922 (NL) ACCNB: 89001 CPU-MAX: 200 CPU-USED:000000.0239 (NL) REPEAT: NO RERUN: NO FLUSH: NO (NL) MRSCAT: HOLD: NO START: SOON (NL) TID: 0001005F UNP/Q#: 00/001 (NL) CMD: EXECUTE (NL) ORIGFILE::4V05:$COGNITAS.TEST.ENTER (NL) MONJV: :4V05:$COGNITAS.JV.MON (IN) / WAIT-EVENT *JV(CONDITION=((JV.DO.1)=C'CARRY ON'), ( ) TIME-LIMIT=15,TIMEOUT-LABEL=WEIT1) (OUT) % CJC0020 WAIT COMMAND: TASK ENTERED WAIT STATE AT 09:22:01 (OUT) % CJC0021 WAIT COMMAND: CONDITION = TRUE AT 09:22:01
(IN) /.WEIT2 MODIFY-JV JV=JV.E.1,SET-VALUE=C'PROGRAM CONTINUE' (IN) /.SKIP3 SKIP-COMMANDS TO-LABEL=ENDE, ( ) IF=*JV(CONDITION=((JV.E.1,12,3)=C'END')) (OUT) % CJC0011 SKIP COMMAND: CONDITION = FALSE (IN) / SHOW-USER-STATUS (OUT) NAME TSN TYPE PRI CPU-USED CPU-MAX ACCOUNT# (NL) 0FFF 3 DIALOG 0 240 0.1275 32767 89001 (NL) COG2 0FFG 3 DIALOG 0 240 0.2489 32767 89001 (NL) TESTJV 0FFJ 2 BATCH 9 255 0.0394 200 89001 (OUT) % SPS0171 NO LOCAL SPOOLOUT JOB PRESENT (OUT) % SPS0420 RSO WARNING : SOME RSO PRINT-JOBS CANNOT BE DISPLAYED (IN) / SHOW-JV JV=JV.E.1 (OUT) NORMALES ENDE (IN) / SHOW-JV JV=JV.MON (OUT) $R 00FFJ4V05 J0672003-08-080722012003-08-08072201TESTJV *** PROGRAM CONTINUED *** ( ) (IN) / WAIT-EVENT UNTIL=*JV(TIME-LIMIT=45,TIMEOUT-LABEL=SKIP3) (OUT) % CJC0020 WAIT COMMAND: TASK ENTERED WAIT STATE AT 09:22:01 (OUT) % CJC0022 WAIT COMMAND: TIMEOUT AT 09:22:46, SKIP TO TIMEOUT LABEL OR NEXT STEP (IN) /.SKIP3 SKIP-COMMANDS TO-LABEL=ENDE, IF=*JV(CONDITION=((JV.E.1,12,3)=C'END')) (OUT) % CJC0010 SKIP COMMAND: CONDITION = TRUE (IN) /.ENDE REMARK **** TESTJOB ENDED **** (IN) / SHOW-JV JV=JV.MON (OUT) $R 00FFJ4V05 J0672003-08-080722012003-08-08072201TESTJV *** PROGRAM ENDED *** ( ) (IN) / ASSIGN-SYSLST TO=*PRIMARY
Runtime listing OUT.E.TESTJV for job TEST.ENTER
/ SET-JV-LINK JV-NAME=JV.DO.1 / SET-JV-LINK JV-NAME=JV.PROG / MODIFY-JV JV=JV.DO.1,SET-VALUE=C'GESTARTET' / START-EXE FROM-FILE=(LIB=ASS.PLAMLIB,ELEM=TESTJV), TEST-OPTIONS=*AID,MONJV=JV.PROG % BLS0517 MODULE 'TESTJV' LOADED *** TID: 0001005F *** TSN: 0FFJ ***************************************************************************** ********************** SRC_REF: 78 SOURCE: TESTJV PROC: TESTJV ***************************************************************************** ********* LNKBER = |.*ENTER :4V05:$COGNITAS.JV.E.1................................| *** CSWJV EXECUTED *** $R 00FFJ4V05 J0672003-08-080722012003-08-08072201TESTJV *** CSWJV EXECUTED *** *** PROGRAM CONTINUED *** $R 00FFJ4V05 J0672003-08-080722012003-08-08072201TESTJV *** PROGRAM CONTINUED *** *** PROGRAM FINAL SPURT *** $R 00FFJ4V05 J0672003-08-080722012003-08-08072201TESTJV *** PROGRAM FINAL SPURT *** / SHOW-JV JV=JV.MON $R 00FFJ4V05 J0672003-08-080722012003-08-08072201TESTJV *** PROGRAM ENDED *** / SHOW-JV JV=JV.PROG $T P / SKIP-COMMANDS TO-LABEL=ENDE /.ENDE WAIT-EVENT UNTIL=*JV(TIME-LIMIT=120,TIMEOUT-LABEL=TIME) % CJC0020 WAIT COMMAND: TASK ENTERED WAIT STATE AT 09:22:01 % CJC0022 WAIT COMMAND: TIMEOUT AT 09:24:01, SKIP TO TIMEOUT LABEL OR NEXT STEP /.TIME MODIFY-JV JV=(JV.E.1,12,4),SET-VALUE=C'ENDE' / EXIT-JOB SYSTEM-OUTPUT=*NONE % EXC0419 /LOGOFF AT 0924 ON 03-08-08 FOR TSN '0FFJ' % EXC0421 CPU TIME USED: 0.0540