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