Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Beispiel 9 - Informationen austauschen

&pagelevel(3)&pagelevel

Informationen austauschen

In diesem Beispiel wird die Anwendung des Kommandos MODIFY-JV-CONDITIONALLY und der Makros CSWJV, LNKJV und TIMJV gezeigt. Eine Prozedur und ein ENTER-Auftrag tauschen Informationen aus.

Das Beispiel wird mit dem Kommando /CALL-PROCEDURE PROC.BSP9 gestartet. Das ablauffähige Modul TESTJV muss in der Bibliothek ASS.PLAMLIB abgelegt sein.

Prozedur 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'VERSTANDEN',/
                      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'WEITER GEHTS'), -
/                   TIME-LIMIT=15,TIMEOUT-LABEL=WEIT1)
/.WEIT2  MODIFY-JV JV=JV.E.1,SET-VALUE=C'PROGRAMM FORTSETZEN'
/.SKIP3  SKIP-COMMANDS TO-LABEL=ENDE,/
                      IF=*JV(CONDITION=((JV.E.1,12,4)=C'ENDE'))
/        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 BEENDET ****
/        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)

Datei 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'ABNORMALES ENDE'
/.ENDE   WAIT-EVENT UNTIL=*JV(TIME-LIMIT=120,TIMEOUT-LABEL=TIME)
/.TIME   MODIFY-JV JV=(JV.E.1,12,4),SET-VALUE=C'ENDE'
/        EXIT-JOB SYSTEM-OUTPUT=*NONE

Quellprogramm SRC.TESTJV

TESTJV   START
         TITLE 'TESTPROGRAMM FUER CSWJV'
*
* REGISTERZUWEISUNG
         BALR  3,0
         USING *,3
         PRINT NOGEN
*
* JOBVARIABLE JV.E.1 WIRD DER LINKNAME *ENTER ZUGEWIESEN
* DER LINKNAME *ENTER WIRD IM FELD LNKBER ABGELEGT
* MIT DEM MAKRO CMD WIRD DER INHALT VON LNKBER AUSGEGEBEN
*
         DCLJV JV.E.1,LINK=*ENTER,VERSION=1
         LNKJV LNKBER,LINK=*ENTER,VERSION=1
         CMD   '%DISPLAY','LNKBER'
*
* DER WERT VON JV.DO.1 WIRD MIT DEM INHALT VON VERGL VERGLICHEN
* BEI GLEICHHEIT SOLL DER SETZWERT NEUWERT GESETZT WERDEN
*
CSWJV    CSWJV JV.DO.1,VERGL,NEUWERT,VERSION=1
*
* MELDUNG MELD1 *** CSWJV AUSGEFUEHRT *** WIRD AUSGEGEBEN
*     UND MELDUNG UND ZEITSTEMPEL IN MONJV GESETZT
*
         WROUT MELD1,TERM
         TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
               INFO='*** CSWJV AUSGEFUEHRT ***'
         CMD   'SHOW-JV','JV=*LINK(SMONJVJ)'
*
* DAS FELD JVDOW WIRD MIT DEM INHALT VON JV.DO.1 VERSORGT
* VERGLEICH, OB JVDOW DEN WERT 'WEITER GEHTS' ENTHAELT
*
         GETJV JV.DO.1,JVDOW,30,VERSION=1
         CLC   JVDOW+4(12),='WEITER GEHTS'
         BE    FORTSETZ
*
* DA BEI UNGLEICHHEIT DER WERT VON JV.DO.1 IN DAS FELD VERGL
* UEBERTRAGEN WIRD, WIRD VERGL WIEDER AUF 'VERSTANDEN' GESETZT
*
         MVC   VERGLF,='VERSTANDEN'
         VPASS 1
         B     CSWJV
*
* DER BEREICH JVEW WIRD MIT DEM WERT VON JV.E.1 VERSORGT
* VERGLEICH, OB JVEW DEN WERT 'PROGRAMM FORTSETZEN' ENTHAELT
*
FORTSETZ EQU   *
         GETJV JV.E.1,JVEW,30,VERSION=1
         CLC   JVEW+4(19),='PROGRAMM FORTSETZEN'
         BNE   FORTSETZ
*
* AUSGABE DER MELDUNG *** PROGRAMM FORTGESETZT ***
*     UND MELDUNG UND ZEITSTEMPEL IN MONJV GESETZT
*
         WROUT MELD2,TERM
         TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
               INFO=C'*** PROGRAMM FORTGESETZT ***'
         CMD   'SHOW-JV','JV=*LINK(SMONJVJ)'
*
* AUSGABE DER MELDUNG *** PROGRAMM ENDSPURT ***
*     UND MELDUNG UND ZEITSTEMPEL IN MONJV GESETZT
*
BEENDEN  EQU   *
         WROUT MELD3,TERM
         TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
               INFO=C'*** PROGRAMM ENDSPURT ***'
         CMD   'SHOW-JV','JV=*LINK(SMONJVJ)'
*
* DER JOBVARIABLEN JV.E.1 WIRD DER WERT 'NORMALES   ENDE' ZUGEORDNET
*     UND ZEITSTEMPEL VOM PROGRAMMENDE IN MONJV GESETZT
*
         SETJV JV.E.1,EWERT,VERSION=1
         TIMJV MF=S,MONJV=*SMONJVJ,TIMESTAMP=*SET,DESCRIPTOR='TESTJV', -
               INFO=C'*** PROGRAMM BEENDET ***'
TERM     TERM
*
*        DEFINITIONEN
*
VERGL    DC    Y(END1-VERGL)
         DS    CL2
VERGLF   DC    'VERSTANDEN'
END1     EQU   *
*
NEUWERT  DC    Y(END2-NEUWERT)
         DS    CL2
         DC    'WEITER GEHTS'
END2     EQU   *
*
EWERT    DC    Y(END3-EWERT)
         DS    CL2
         DC    'NORMALES   ENDE'
END3     EQU   *
*
MELD1    DC    Y(END4-MELD1)
         DS    CL2
         DC    X'01'
MELD1TXT DC    '*** CSWJV AUSGEFUEHRT ***'
END4     EQU   *
*
MELD2    DC    Y(END5-MELD2)
         DS    CL2
         DC    X'01'
MELD2TXT DC    '*** PROGRAMM FORTGESETZT ***'
END5     EQU   *
*
MELD3    DC    Y(END6-MELD3)
         DS    CL2
         DC    X'01'
MELD3TXT DC    '*** PROGRAMM ENDSPURT ***'
END6     EQU   *
*
JVDOW    DS    CL30
*
JVEW     DS    CL30
*
LNKBER   DS    CL63
         END

Ablaufprotokoll LST.PROC der Prozedur 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 10-08-08 AT 09:22, TSN = 0FFJ
(IN)     /.SKIP1  SHOW-JV JV=JV.MON
(OUT)    $S 00FFJ4V05    J0672010-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'VERSTANDEN',LABEL=WEIT1
(IN)     /        SKIP-COMMANDS TO-LABEL=PRUEF
(IN)     /.PRUEF  MODIFY-JV-CONDITIONALLY JV=(JV.DO.1),
IF-VALUE=C'GESTARTET',SET-VALUE=C'VERSTANDEN',LABEL=WEIT1
(IN)     /        SKIP-COMMANDS TO-LABEL=PRUEF
(IN)     /.PRUEF  MODIFY-JV-CONDITIONALLY JV=(JV.DO.1),
IF-VALUE=C'GESTARTET',SET-VALUE=C'VERSTANDEN',LABEL=WEIT1
(IN)     /.WEIT1  SHOW-JV JV=JV.DO.1
(OUT)    VERSTANDEN
(IN)     /        SHOW-JV JV=JV.E.1
(OUT)    ***
(IN)     /        SHOW-JV JV=JV.MON
(OUT)    $R 00FFJ4V05    J0672010-08-08072201
(  )
(IN)     /        SHOW-JOB-STAT *MONJV(JV.MON)
(OUT)    TSN:     0FFJ       TYPE:    2 BATCH    NOW:     2010-08-08.092201
(NL)     JOBNAME: TESTJV     PRI:     9 255      SPOOLIN: 2010-08-08.0922
(NL)     USERID:  COGNITAS   JCLASS:  JCBATCH    LOGON:   2010-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'WEITER GEHTS'),
(  )              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'PROGRAMM FORTSETZEN'
(IN)     /.SKIP3  SKIP-COMMANDS TO-LABEL=ENDE,
(  )              IF=*JV(CONDITION=((JV.E.1,12,4)=C'ENDE'))
(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    J0672010-08-080722012010-08-08072201TESTJV
*** PROGRAMM BEENDET ***
(  )
(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,4)=C'ENDE'))
(OUT)    %  CJC0010 SKIP COMMAND: CONDITION = TRUE
(IN)     /.ENDE   REMARK **** TESTJOB BEENDET ****
(IN)     /        SHOW-JV JV=JV.MON
(OUT)    $R 00FFJ4V05    J0672010-08-080722012010-08-08072201TESTJV
*** PROGRAMM BEENDET ***
(  )
(IN)     /        ASSIGN-SYSLST TO=*PRIMARY

Ablaufprotokoll OUT.E.TESTJV des Jobs 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 AUSGEFUEHRT ***
$R 00FFJ4V05    J0672010-08-080722012010-08-08072201TESTJV            *** 
CSWJV AUSGEFUEHRT ***
*** PROGRAMM FORTGESETZT ***
$R 00FFJ4V05    J0672010-08-080722012010-08-08072201TESTJV            *** 
PROGRAMM FORTGESETZT ***
*** PROGRAMM ENDSPURT ***
$R 00FFJ4V05    J0672010-08-080722012010-08-08072201TESTJV            *** 
PROGRAMM ENDSPURT ***
/        SHOW-JV JV=JV.MON
$R 00FFJ4V05    J0672010-08-080722012010-08-08072201TESTJV            *** 
PROGRAMM BEENDET ***
/        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 10-08-08 FOR TSN '0FFJ'
%  EXC0421 CPU TIME USED: 0.0540