Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Example 9 - Exchange information

&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