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 7 - JV-Makros, ohne ONEVT-Makro

&pagelevel(3)&pagelevel

JV-Makros, ohne ONEVT-Makro

Nachfolgendes Programm SRC.BJV zeigt die Anwendung einiger JV-Makros:

Quellprogramm SRC.BJV

BJV      START
         PRINT NOGEN
         BALR  3,0
         USING *,3
         STAJV JV.A,STA,120,OUTPUT=NEW,VERSION=4 ——————————————————————  (1) 
DTH1     DCLJV JV.A,LINK=*LINK,VERSION=1 ——————————————————————————————  (2) 
         MVC   STA,NULL2
         STAJV JV.,STA,120,OUTPUT=NEW,VERSION=4 ———————————————————————  (3) 
DTH2     CATJV JV.A,JV.N,STATE=U,RDPASS=C'JV',VERSION=1 
         SETJV JV.N,SET1,PASS=C'JV',VERSION=1 
         GETJV JV.N,GET,30,PASS=C'JV',VERSION=1 
DTH3     MVC   GET,NULL1
         SETJV (JV.N,3,4),SET2,PASS=C'JV',VERSION=1 ———————————————————  (4) 
         GETJV JV.N,GET,30,PASS=C'JV',VERSION=1 
DTH4     MVC   GET,NULL1
         SETJV JV.N,SET2,PASS=C'JV',VERSION=1 —————————————————————————  (5) 
         GETJV JV.N,GET,30,PASS=C'JV',VERSION=1 
DTH5     MVC   GET,NULL1
         ERAJV JV.N,VERSION=1 —————————————————————————————————————————  (6) 
DTH6     MVC   STA,NULL2
         STAJV JV.,STA,120,OUTPUT=NEW,SELADDR=SEL1,VERSION=4 ——————————  (7) 
DTH7     ERAJV JV.N,PASS=C'JV',VERSION=1 ——————————————————————————————  (8) 
*
DTH8     TERM
************************************************
         DS    0F
STA      DS    L120
*
SEL1     JVSEL MF=L,PASS=RDPASS
*
GET      DS    L50
*
SET1     DC    Y(SETEND1-SET1)
         DS    CL2
         DC    'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SETEND1  EQU   *
*
SET2     DC    Y(SETEND2-SET2)
         DS    CL2
         DC    '34567'
SETEND2  EQU   *
*
NULL1    DS    0CL50
NULL2    DC    120X'00'
         END
         END 

Die im Quellprogramm mit (1) bis (8) gekennzeichneten Punkte werden im nachfolgenden Ablaufprotokoll erläutert.

Ablaufprotokoll

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '01.2D01' OF '2007-08-07' LOADED
%  BLS0552 COPYRIGHT (C) FUJITSU TECHNOLOGY SOLUTIONS   2009. ALL RIGHTS
RESERVED
%  ASS6010 V01.2D01 OF BS2000 ASSEMBH  READY
//compile source=src.bjv,module-lib=ass.plamlib(elem=bjv),test-support=yes
%  ASS6011 ASSEMBLY TIME: 430 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 59 MSEC
//end
%  ASS6012 END OF ASSEMBH
/load-exe from=(lib=ass.plamlib,elem=bjv),test-opt=*aid ———————————————  (1)
%  BLS0517 MODULE 'BJV' LOADED
/%insert dth1
/resume-program
STOPPED AT LABEL: DTH1 , SRC_REF: 40, SOURCE: BJV , PROC: BJV
/%display %15  ————————————————————————————————————————————————————————  (2)
*** TID: 0001005C *** TSN: 0FFF *********************************************
CURRENT PC: 0000009C    CSECT: BJV*******************************************
%15 = 00000433

(1)

Das Kommando LOAD-EXECUTABLE-PROGRAM ersetzt ab BLSSERV 2.3 das Kommando LOAD-PROGRAM

(2)

Der STAJV-Makro soll den Zustand der Jobvariablen JV.A in das Feld STA übergeben. Register 15 zeigt: JV.A ist im System nicht vorhanden.

/%insert dth2
/resume-program
STOPPED AT LABEL: DTH2 , SRC_REF: 92, SOURCE: BJV , PROC: BJV
/%display sta
SRC_REF:    92 SOURCE: BJV  PROC: BJV
****************************************
STA             =
|.JV.A.JV.DO.1.JV.E.1.JV.MON.JV.N.JV.PERM.ERROR.JV.PERM.ERROR.READ.JV.PERM.ER
R|
|OR2.JV.PERM.WAIT.JV.PROG...................|
/%display sta%x   ——————————————————————————————————————————————————————  (3)
CURRENT PC: 000001B4    CSECT: BJV
*******************************************
V'00000868' = STA      + #'00000000'
00000868 (00000000) 05D1E54B C108D1E5 4BC4D64B F107D1E5    .JV.A.JV.DO.1.JV
00000878 (00000010) 4BC54BF1 07D1E54B D4D6D505 D1E54BD5    .E.1.JV.MON.JV.N
00000888 (00000020) 0ED1E54B D7C5D9D4 4BC5D9D9 D6D913D1    .JV.PERM.ERROR.J
00000898 (00000030) E54BD7C5 D9D44BC5 D9D9D6D9 4BD9C5C1    V.PERM.ERROR.REA
000008A8 (00000040) C40FD1E5 4BD7C5D9 D44BC5D9 D9D6D9F2    D.JV.PERM.ERROR2
000008B8 (00000050) 0DD1E54B D7C5D9D4 4BE6C1C9 E308D1E5    .JV.PERM.WAIT.JV
000008C8 (00000060) 4BD7D9D6 C7000000 00000000 00000000    .PROG...........
000008D8 (00000070) 00000000 00000000                     ........
/%insert dth3
/resume-program
STOPPED AT LABEL: DTH3 , SRC_REF: 188, SOURCE: BJV , PROC: BJV
/%display get   ————————————————————————————————————————————————————————  (4)
SRC_REF:   188 SOURCE: BJV  PROC: BJV
****************************************
GET = |.. ABCDEFGHIJKLMNOPQRSTUVWXYZ....................|

(3)

Der DCLJV-Makro katalogisiert die Jobvariable JV.A und ordnet ihr den Kettungsnamen *LINK zu. Der STAJV-Makro übergibt die Namen aller Jobvariablen, die mit „JV.“ beginnen, im Feld STA. Voreingestellt ist LIST=OLD, d.h. die Ausgabe erfolgt ohne catid und userid.

(4)

JV.A wird in JV.N umbenannt und erhält das Lesekennwort „JV“. Dieses Kennwort muss der Benutzer angeben, wenn er auf die Jobvariable zugreifen will. Der SETJV-Makro setzt JV.N auf den im Feld SET1 angegebenen Wert. Anschließend liest der Makro GETJV diesen Wert in das Feld GET ein.

/%insert dth4
/resume-program
STOPPED AT LABEL: DTH4 , SRC_REF: 258, SOURCE: BJV , PROC: BJV
/%display get  ————————————————————————————————————————————————————————  (5)
SRC_REF:   258 SOURCE: BJV  PROC: BJV
****************************************
GET            = |..  AB3456GHIJKLMNOPQRSTUVWXYZ....................|
/%insert dth5
/resume-program
STOPPED AT LABEL: DTH5 , SRC_REF: 328, SOURCE: BJV , PROC: BJV
/%display get   ———————————————————————————————————————————————————————  (6)
SRC_REF:   328 SOURCE: BJV  PROC: BJV
****************************************
GET            = |..  34567.........................................|
/%insert dth6
/resume-program
STOPPED AT LABEL: DTH6 , SRC_REF: 360, SOURCE: BJV , PROC: BJV
/%display %15  ———————————————————————————————————————————————————————— (7)
CURRENT PC: 000006E6    CSECT: BJV
*******************************************
%15 = 000004B1

(5)

Ab Byte 3 sollen 4 Bytes des Jobvariablen-Wertes mit dem Inhalt von Feld SET2 überschrieben werden. Das Feld GET zeigt den Jobvariablen-Wert nach Ausführung des SETJV-Makros.

(6)

Der Jobvariablen-Wert wird ab Startposition (=1, Standard) vollständig durch den in SET2 angegebenen Inhalt ersetzt.

(7)

Die Jobvariable soll gelöscht werden. Da das erforderliche Lesekennwort nicht angegeben wurde, enthält Register 15 einen entsprechenden Fehlercode.

/%insert dth7
/resume-program
STOPPED AT LABEL: DTH7 , SRC_REF: 396, SOURCE: BJV , PROC: BJV
/%display sta
SRC_REF:   396 SOURCE: BJV  PROC: BJV
****************************************
STA             =
|.JV.N.......................................................................
.|
|...........................................|
/%display sta%x   ——————————————————————————————————————————————————————  (8)
CURRENT PC: 00000798    CSECT: BJV
*******************************************
V'00000868' = STA      + #'00000000'
00000868 (00000000) 05D1E54B D5000000 00000000 00000000    .JV.N...........
00000878 (00000010) 00000000 00000000 00000000 00000000    ................
           REPEATED LINES:     4
000008C8 (00000060) 00000000 00000000 00000000 00000000    ................
000008D8 (00000070) 00000000 00000000                     ........
/%insert dth8
/resume-program
STOPPED AT LABEL: DTH8 , SRC_REF: 423, SOURCE: BJV , PROC: BJV
/%display %15    ——————————————————————————————————————————————————————— (9)
CURRENT PC: 0000084A    CSECT: BJV
*******************************************
%15 = 00000000

(8)

Der STAJV-Makro übergibt die Namen aller Jobvariablen, die mit JV.“ beginnen und mit einem Lesekennwort geschützt sind (Selektion erfolgt durch die mit dem JVSEL-Makro generierte Operandenliste), im Feld STA. Voreingestellt ist LIST=OLD, d.h. die Ausgabe erfolgt ohne catid und userid.

(9)

Das Lesekennwort wird beim Löschen angegeben und die Jobvariable wird erfolgreich gelöscht.