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 8 - JV macros, with ONEVT macro

&pagelevel(3)&pagelevel

JV macros, with ONEVT macro

The BONEVT program issues an ONEVT macro for the event item ONEVTEST, which causes a POSSIG call whenever one of the following conditions is satisfied:

  • job variable JV1 is set to 'MELDUNG' (= “message”) at the time of the ONEVT macro call

  • JV1 is set to 'MELDUNG'

  • catalog is exported

The number of POSSIG calls is limited to three (COUNT=3), i.e. the ONEVT macro registers up to 3 'condition satisfied' states. SOLSIG solicits a signal and subsequently the post code is checked. Depending on the condition result, the program issues a message (MELD1, MELD2 or FMELD) after every SOLSIG.

Program BONEVT

BONEVT   START
         BALR  3,0
         USING *,3
         PRINT NOGEN
ANF      DCLJV JV1,VERSION=1           "Define JV1"
         ENAEI EINAME=ONEVTEST,EIIDRET=KUKE,SCOPE=GLOBAL
         ONEVT 'JV1=''MELDUNG''',EIID=KUKE,POST='B1',COUNT=3,VERSION=1
CHECK    CHKEI EIID=KUKE               "Check queue"
         LR    5,1
         CMD   '%DISPLAY %15,%5'
SIGNAL   MVC   EMPF,NULL               "Solicit signal"
         SOLSIG EIID=KUKE,COND=UNCOND,RPOSTAD=EMPF,LIFETIM=10
*** CHECK POST CODE *****************************************
PRUEF    CLI   ANZ,X'14'               "Event flag"
         BNE   FMELD
         CLC   ONKEN,POST              "POST value"
         BNE   FMELD
         CLI   ERG,X'00'               "JV1 set"
         BE    MELD1
         CLI   ERG,X'08'               "Catalog exported"
         BE    MELD2
         B     FMELD
*** MESSAGES OUTPUT *****************************************
MELD1    WROUT MLDG1,ENDE              "JV1 set"
         B     CHECK
MELD2    WROUT MLDG2,ENDE              "Catalog exported"
         B     FRAGE
FMELD    WROUT FEHLER,ENDE      "No POSSIG received by ONEVT"
         B     FRAGE
FRAGE    WRTRD ABFRAG,,EINB,,5,ENDE    "Terminate program?"
         CLI   ANTW,'N'
         BE    DONEVT                  "Do not terminate program"
         CLI   ANTW,'Y'
         BE    ENDE                     "Terminate"
         B     FRAGE                    "Repeat query"
DONEVT   DONEVT EIID=KUKE,VERSION=1
         DISEI EIID=KUKE                "Delete event item"
         ERAJV JV1,VERSION=1
         B     ANF
ENDE     TERM
*** DEFINITIONS *********************************************
EMPF     DS    0F
ANZ      DS    CL1
ERG      DS    CL1
ONKEN    DS    CL2
POST     DC    C'B1'
KUKE     DC    C'KURZ'
NULL     DC    F'0'
MLDG1    DC    Y(END1-MLDG1)
         DS    L2
         DC    X'01'
         DC    'JV1 WAS SET'
END1     EQU   *
MLDG2    DC    Y(END2-MLDG2)
         DS    L2
         DC    X'01'
         DC    'CATALOG WAS EXPORTED'
END2     EQU   *
FEHLER   DC    Y(FEND-FEHLER)
         DS    L2
         DC    X'01'
         DC    '***   ERROR   ***'
FEND     EQU   *
ABFRAG   DC    Y(ABEND-ABFRAG)
         DS    CL2
         DC    X'01'
          DC    'TERMINATE PROGRAM?(Y/N)'
ABEND    EQU   *
EINB     DS    0CL5
         DS    CL4
ANTW     DS    CL1
          END

The effect of the ONEVT macro is demonstrated in this example using the condition “JV1 is set to 'MELDUNG' ”:

Runtime listing LST.BONEVT for the BONEVT program

(IN)     mod-job-options logging=*par(listing=*yes)
(IN)     delete-system-file system-file=*omf
(IN)     start-assembh—————————————————————————————————————————————————  (1) 
(OUT)    % BLS0500 PROGRAM 'ASSEMBH',VERSION '01.2C00' OF '2002-03-06' LOADED
(OUT)    %  BLS0552 COPYRIGHT (C) FUJITSU TECHNOLOGY SOLUTIONS GMBH 2010. 
(  )        ALL RIGHTS RESERVED
(OUT)    %  ASS6010 V01.2C00 OF BS2000 ASSEMBH  READY
(IN)     compile source=bonevt,mod-lib=ass.plamlib(bonevt),test-support=yes
(OUT)    ASS6011 ASSEMBLY TIME: 604 MSEC 
(OUT)    %  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
(OUT)    %  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
(OUT)    %  ASS6006 LISTING GENERATOR TIME: 66 MSEC
(IN)     end
(OUT)    %  ASS6012 END OF ASSEMBH 
(IN)     load-exe from=(lib=ass.plamlib,elem=bonevt),test-opt=*aid—————  (2) 
(OUT)    %  BLS0517 MODULE 'BONEVT' LOADED
(IN)     %insert check—————————————————————————————————————————————————  (3) 
(IN)     resume-program
(OUT)
(OUT)   STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     mod-jv jv=jv1,set-val='MELDUNG'———————————————————————————————  (4) 
(IN)     mod-jv jv=jv1,set-val='MELDUNG'
(IN)     mod-jv jv=jv1,set-val='MELDUNG'
(IN)     mod-jv jv=jv1,set-val='MELDUNG'
(IN)     mod-jv jv=jv1,set-val='MELDUNG'
(IN)     resume-program
(OUT)    *** TID: 0001005E *** TSN: 0FDB ************************************
(NL)     CURRENT PC: 000000E0    CSECT: BONEVT  *****************************
(NL)     %15             = 2C000000————————————————————————————————————  (5) 
(NL)     %5              = 00000003————————————————————————————————————  (6) 

(1)

The BONEVT program is assembled by the ASSEMBH Assembler and is put in the ASS.PLAMLIB library.

(2)

The program is loaded; it is checked using AID (Advanced Interactive Debugger).

(3)

The test point CHECK is defined using the AID command %INSERT.

(4)

The job variable JV1 is set to 'MELDUNG' five times.

(5)

The CHKEI macro shows the POSSIG queue (register 15).

(6)

The CHKEI macro shows that the number of POSSIG calls is 3 (register 5).

(OUT)    JV1 WAS SET———————————————————————————————————————————————————  (7) 
(OUT)
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     %display EMPF%X———————————————————————————————————————————————  (8) 
(OUT)    CURRENT PC: 000000A8    CSECT: BONEVT  *****************************
(NL)     V'0000028C' = EMPF     + #'00000000'
(NL)     0000028C (00000000) 1400C2F1                               ..B1
(IN)     resume-program
(OUT)    CURRENT PC: 000000E0    CSECT: BONEVT  *****************************
(NL)     %15             = 2C000000
(NL)     %5              = 00000002
(OUT)    JV1 WAS SET
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     resume-program
(OUT)    %15             = 2C000000
(NL)     %5              = 00000001
(OUT)    JV1 WAS SET
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     resume-program
(OUT)    %15             = 30000000
(NL)     %5              = 8F0000AC
(OUT)    ***   ERROR   ***—————————————————————————————————————————————  (9) 
(OUT)   TERMINATE PROGRAM?(Y/N)
(IN)     N
(OUT)
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT

(7)

The first POSSIG was requested with SOLSIG. The condition result is interrogated and an appropriate message output.

(8)

After the SOLSIG call, the target field EMPF contains the passed post code:

X'14'

X'00'

X'C2F1'

POSSIG was caused by an ONEVT macro.

Conditional event “Job variable set”.

ONVEVT identifier B1.

(9)

After all 3 POSSIG calls have been solicited by SOLSIG, the queue is empty (register 15 of the CHKEI macro: SI=X'30'). The post code check following a further SOLSIG produces the message “ERROR”. The response “N” is given after the prompt, i.e. the program is run one more time starting from the ANF label - a new ONEVT macro is issued.

(IN)     mod-jv jv=jv1,set-val='MELDUNG'——————————————————————————————— (10) 
(IN)     mod-jv jv=jv1,set-val='MELDUNG'
(IN)     resume-program
(OUT)    %15              = 2C000000
(NL)     %5              = 00000002———————————————————————————————————— (11) 
(OUT)    JV1 WAS SET
(OUT)
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     del-jv jv=jv1————————————————————————————————————————————————— (12) 
(OUT)    %  JVS04A3 ERROR WHEN DELETING JOB VARIABLE ':4V05:$COGNITAS.JV1'
(OUT)    %  JVS0447 JV NAME BEING USED BY CJC FUNCTION. COMMAND REJECTED
(IN)     resume-program
(OUT)    %15             = 2C000000
(NL)     %5              = 00000001
(OUT)    JV1 WAS SET
(OUT)
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     resume-program
(OUT)    %15             = 30000000
(NL)     %5              = 8F0000AC
(OUT)    ***   ERROR   ***
(OUT)    TERMINATE PROGRAM?(Y/N)
(IN)     N
(OUT)
(OUT)    STOPPED AT LABEL: CHECK ,SRC_REF: 84, SOURCE: BONEVT, PROC: BONEVT
(IN)     show-jv-attr jv=jv1——————————————————————————————————————————— (13) 
(OUT)    0000000 :4V05:$COGNITAS.JV1
(NL)     SUM    00001 JV'S; JV-VALUE = 00000000 BYTES
(IN)     show-jv-attr jv=jv1,inf=*all-attr
(OUT)    000000 :4V05:$COGNITAS.JV1
(NL)      USER-ACC   = ALL-USERS   ACCESS     = WRITE
(NL)      CRE-DATE   = 2003-08-04  EXPIR-DATE = 2003-08-04
(NL)      CRE-TIME   =   16:51:15  EXPIR-TIME =   00:00:00
(NL)      READ-PASS  = NONE
(NL)      WRITE-PASS = NONE
(NL)     SUM    00001 JV'S; JV-VALUE = 00000000 BYTES

(10)

The “Set JV1” event is signaled twice.

(11)

The number of POSSIG calls is 2.

(12)

The attempt to delete job variable JV1 is rejected because job variables used in macros (and commands) are protected against deletion.

(13)

The attributes of job variable JV1 are output.

(IN)     show-jv jv=jv1———————————————————————————————————————————————— (14) 
(OUT)    %  JVS04B2 SPECIFIED JOB VARIABLE SUBSTRING EMPTY OR ILLEGAL. 
(   )    COMMAND REJECTED
(IN)     resume-program
(OUT)    %15             = 30000000
(NL)     %5              = 8F0000AC
(OUT)    ***   ERROR   ***
(OUT)    TERMINATE PROGRAM?(Y/N)
(IN)     Y
(IN)     del-jv jv=jv1————————————————————————————————————————————————— (15) 
(IN)     show-j-attr jv=jv1
(OUT)    %  JVS0433 REQUESTED JOB VARIABLE NOT CATALOGED. COMMAND REJECTED
(IN)     assign-syslst to=*prim

(14)

No value is assigned to job variable JV1.

(15)

The job variable JV1 can be deleted.