Loading...
Select Version
&pagelevel(4)&pagelevel
Das nachfolgende Beispiel zeigt den strukturellen Aufbau eines Assembler-Hauptprogramms. Die Makroaufrufe zur strukturierten Programmierung mit ASSEMBH (z.B. @IF) werden von ASSEMBH-BC nicht unterstützt (siehe Handbuch „ASSEMBH“ [2]).
Das Beispielprogramm soll erreichen, dass auf alle Bänder, deren Archivnummern im Bereich zwischen ABC001 und ABC099 liegen, nur von der eigenen Benutzerkennung aus zugegriffen werden kann (USER-ACCESS=*OWNER-ONLY).
... @CYCLE MODIFY DS 0H ... @PASS EXTNAME=MARENPS,PAR=STMT CALL MAREN PROGRAM INTERFACE @CAS2 RETFLAG,COMP=CLI CHECK RETURN FLAG @OF RETFLAGA RETURN FLAG 'A' = OK MVC ANWVSN,ARCHIVNR SET VSN IN STATEMENT @IF EQ SET NEXT FSEQ IN STATEMENT CLC FSEQ,=C'*001' SUPPRESSED VOLUME? @THEN MVC ANWFSEQ,=C'0001' IF YES - NEXT FSEQ = '0001' @ELSE PACK DOWO,FSEQ OTHERWISE ADD 1 TO FSEQ AP DOWO,=PL1'1' UNPK ANWFSEQ,DOWO+5(3) OI ANWFSEQ+3,X'F0' @BEND @OF RETFLAGE RETFLAG 'E' = NO MORE ENTRIES ... @OFRE ERROR EXIT ... @BEND @BEND ... DOWO DS D WORKAREA STMT DS Y(STMTEND) AREA FOR MAREN STATEMENT DC CL2' ' DC C'//MOD-VOL-ATTR VOL=*INT(FROM=' ANWVSN DC CL6'ABC001' DC C',FROM-FSEQ=' ANWFSEQ DC CL4'0001' DC C',TO=ABC099),' DC C'PROT=*PAR(USER-ACCESS=' DC C'*OWNER-ONLY)' STMTEND EQU *-STMT ... MARENA MF=L,LAYOUT=V8 AREA FOR MAREN CATALOG ENTRY ...