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