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

Das folgende Assembler-Programm beinhaltet folgende Funktionen:

  • Eröffnen eines Unterprogrammzugriffs (INIT)

  • Aufnehmen einer Datei als Element (ADD)

  • Suchen eines Elementes in einem Inhaltsverzeichnis (TOCPRIM)

  • Eröffnen eines Elementes (OPENGET)

  • Lesen des 1. Satzes (GET)

  • Schließen des Elementes (CLOSE)

  • Beenden des Unterprogrammzugriffs (END)

  • zum besseren Verständnis: Kommentieren durch Meldungen

***********************************************************************
*                                                                     *
*                   BEISPIEL FUER LMS ALS UNTERPROGRAMM               *
*                                                                     *
***********************************************************************
*
LMSUP    CSECT
R1       EQU   1                          ADRESSE DER PARAMETERLISTE
R2       EQU   2                          TEMPORAERES ARBEITSREGISTER
R3       EQU   3                          TEMPORAERES ARBEITSREGISTER
R4       EQU   4                          TEMPORAERES ARBEITSREGISTER
R5       EQU   5                          TEMPORAERES ARBEITSREGISTER
R10      EQU   10                         BASISREGISTER
R11      EQU   11                         BASISREGISTER
R13      EQU   13                         ADRESSE DER SAVEAREA
R14      EQU   14                         RUECKSPRUNGADRESSE
R15      EQU   15                         EINSPRUNGADRESSE
        LMSASSEQ
*
        BALR  R10,0
        USING *,R10,R11
BASIS    LA    R11,BASIS+4095             2. BASISREGISTER
        LA    R11,1(R11)
        LA    R13,SAVEAREA
***********************************************************************
*                                                                     *
*           AUFRUF VON INIT                                           *
*                                                                     *
***********************************************************************
*
*           ADRESSE LMSASSCB IN DAS 1. WORT DER PARAMETERLISTE
*
        LA    R1,SBCB
        ST    R1,PARAM1
*
*           CB VORBEREITEN FUER AUFRUF INIT
*
        MVC   SBCB(CBPLNG),DEFCB
*
*           FUNKTION INIT UND SUBCODE UNUSED IMPLIZIT EINGESTELLT
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE
*
INITCL   CLI   CBRTC,OK
        BNE   RCPROC
*
***********************************************************************
*                                                                     *
*           AUFRUF VON ADD                                            *
*                                                                     *
***********************************************************************
*
*           CB VORBEREITEN FUER AUFRUF ADD
*
        MVI   CBFUNC,ADD                 FUNKTIONSCODE
        MVI   CBSUBC,UNUSE               SUBCODE UNUSED (DEFAULT)
        MVI   CBOV,YES                   OVERWRITE=YES
*
*           ANDERE FELDER BLEIBEN WIE BEI INIT
*
*           FD VORBEREITEN FUER AUFRUF ADD
*
        MVC   SBFD(FDPLNG),DEFFD         BEREICH FD DEFINIEREN
        MVC   FDLINK,FILELINK            LINKNAME NACH FD
*
*           LD VORBEREITEN FUER AUFRUF ADD
*
        MVC   SBLD(LDPLNG),DEFLD         BEREICH LD DEFINIEREN
        MVC   LDLINK,LIBLINK             LINKNAME NACH LD
*
*           ED VORBEREITEN FUER AUFRUF ADD
*
        MVC   SBED(EDPLNG),DEFED         BEREICH ED DEFINIEREN
        MVI   EDTYPE,'S'                 ABLAGE ALS TYP S
        MVC   EDNAME(9),ELNAME           ELEMENTNAME
        MVC   EDVERS(1),ELVERS           ELEMENTVERSION
*
*           PARAMETERLISTE VERSORGEN; PARAM1 ENTHAELT A(CB)
*
        LA    R1,SBFD                    A(FD)
        ST    R1,PARAM2
        LA    R1,SBLD                    A(LD)
        ST    R1,PARAM3
        LA    R1,SBED                    A(ED)
        ST    R1,PARAM4
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE
*
ADDCL    CLI   CBRTC,OK
        BNE   RCPROC
*
***********************************************************************
*                                                                     *
*           AUFRUF VON TOC                                            *
*                                                                     *
***********************************************************************
*           CB VORBEREITEN FUER AUFRUF TOCPRIM
*
         MVI   CBFUNC,TOCP                FUNKTIONSCODE
         MVI   CBSUBC,LONG                ERWEITERTE ELEMENTINFO
*
*           LD-FELDER BLEIBEN WIE VORBELEGT
*
*           EM VORBEREITEN FUER AUFRUF TOCPRIM
*
         LA    R2,SBEM                    ZIELADRESSE
         LA    R3,EMPLNG                  UEBERTRAGUNGSLAENGE
         LA    R4,DEFEM                   SENDEADRESSE
         LR    R5,R3
         MVCL  R2,R4
*
         MVI   EMTYPE,'S'
         MVC   EMNAME(9),ELNAME
*
*           PARAMETERLISTE VERSORGEN; PARAM1 ENTHAELT A(CB)
*
        LA    R1,SBTID                   A(TID)
        ST    R1,PARAM2
        LA    R1,SBEI                    A(EI)
        ST    R1,PARAM3
        LA    R1,SBLD                    A(LD)
        ST    R1,PARAM4
        LA    R1,SBEM                    A(EM)
        ST    R1,PARAM5
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE
*
TOCCL    CLI   CBRTC,OK
        BNE   RCPROC
*
*           ERHALTENE INFO AUSGEBEN
*
        MVC   OTYPF,EITYPE
        WROUT OTYP,TERM
*
        MVC   ONAMEF,EINAME
        WROUT ONAME,TERM
*
        MVC   OVERSF,EIVERS
        WROUT OVERS,TERM
*
        MVC   ODATEF,EIUDAT
        WROUT ODATE,TERM
*
***********************************************************************
*                                                                     *
*           AUFRUF VON OPENGET                                        *
*                                                                     *
***********************************************************************
*           CB VORBEREITEN FUER AUFRUF OPENGET
*
        MVI   CBFUNC,OPENG               FUNKTIONSCODE
        MVI   CBSUBC,UNUSE               SUBCODE UNUSED (DEFAULT)
*
*           LD-FELDER BLEIBEN WIE VORBELEGT
*
*           ED-FELDER BLEIBEN WIE VORBELEGT
*
*           RD VORBEREITEN FUER AUFRUF OPENGET
*
        MVC   SBRD(RDPLNG),DEFRD         BEREICH RD DEFINIEREN
*
*           PARAMETERLISTE VERSORGEN; PARAM1 ENTHAELT A(CB)
*
        LA    R1,SBRD                    A(RD)
        ST    R1,PARAM2
        LA    R1,SBLD                    A(LD)
        ST    R1,PARAM3
        LA    R1,SBED                    A(ED)
        ST    R1,PARAM4
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE
*
OPENGCL  CLI   CBRTC,OK
        BNE   RCPROC
*
***********************************************************************
*                                                                     *
*           AUFRUF VON GET, SAETZE IN SCHLEIFE LESEN                  *
*                                                                     *
***********************************************************************
*           CB VORBEREITEN FUER AUFRUF GET
*
GETLOOP  MVI   CBFUNC,GET                 FUNKTIONSCODE
        MVI   CBSUBC,SEQ                 SEQUENTIELLES LESEN
*
*           RD VORBEREITEN FUER AUFRUF GET
*
        MVC   RDBLEN,PLENGTH             PUFFERLAENGE EINGABEBEREICH
*
*           PARAMETERLISTE VERSORGEN; PARAM1 ENTHAELT A(CB)
*
*           A(RD) WURDE SCHON BEI OPENGET VERSORGT
*
        LA    R1,SBER                    A(ER)
        ST    R1,PARAM3
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE / SATZ AUSGEBEN
*
GETCL    CLI   CBRTC,OK
        BNE   GETEND
*
*           SATZAUSGABE OHNE SPALTE 1 (STEUERZEICHEN)
*
        WROUT SBER,TERM
        B     GETLOOP
*
*           END OF ELEMENT ABFRAGEN
*
GETEND   CLI   CBRTC,EOF
        BNE   RCPROC
*
***********************************************************************
*                                                                     *
*           AUFRUF VON CLOSE                                          *
*                                                                     *
***********************************************************************
*           CB VORBEREITEN FUER AUFRUF CLOSE
*
        MVI   CBFUNC,CLOSE               FUNKTIONSCODE
        MVI   CBSUBC,UNUSE               SUBCODE UNUSED (DEFAULT)
*
*           RD-FELDER BLEIBEN WIE VORBELEGT
*
*           PARAMETERLISTE VERSORGEN; PARAM1 ENTHAELT A(CB)
*
*           A(RD) WURDE SCHON BEI OPENGET VERSORGT
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE
*
CLOSECL  CLI   CBRTC,OK
        BNE   RCPROC
***********************************************************************
*                                                                     *
*           AUFRUF VON END                                            *
*                                                                     *
***********************************************************************
*           CB VORBEREITEN FUER AUFRUF END
*
        MVI   CBFUNC,END                 FUNKTIONSCODE
        MVI   CBSUBC,UNUSE               SUBCODE UNUSED (DEFAULT)
*
        LA    R1,PARAM
        L     R15,=V(LMSUP1)
        BALR  R14,R15
*
*           RETURNCODE-ABFRAGE
*
ENDCL    CLI   CBRTC,OK
        BNE   RCPROC
        TERM
*
***********************************************************************
*                                                                     *
*           FEHLER-PROZEDUR                                           *
*                                                                     *
***********************************************************************
RCPROC   EQU   *
        WROUT MESSAGE,FEHLER
*
FEHLER   EQU   *
TERM     TERM
***********************************************************************
*                                                                     *
*           KONSTANTEN-DEFINITIONEN                                   *
*                                                                     *
***********************************************************************
DEFCB    LMSASSCB MF=L                    KONSTANTEN FUER CB
*
DEFFD    LMSASSFD MF=L                    KONSTANTEN FUER FD
*
DEFLD    LMSASSLD MF=L                    KONSTANTEN FUER LD
*
DEFED    LMSASSED MF=L                    KONSTANTEN FUER ED
*
DEFEI    LMSASSEI MF=L                    KONSTANTEN FUER EI
*
DEFEM    LMSASSEM MF=L                    KONSTANTEN FUER EM
*
DEFRD    LMSASSRD MF=L                    KONSTANTEN FUER RD
*
FILELINK DC    'FILELINK'
LIBLINK  DC    'LIBLINK '
PLENGTH  DC    A(L'SBER)
ELNAME   DC    'PROBEELEM'
ELVERS   DC    '1'
*
MESSAGE  DC    Y(MESSAGEE-MESSAGE)
        DS    CL2
        DC    X'40'
        DC    'FUNKTION FEHLERHAFT'
MESSAGEE EQU   *
*
***********************************************************************
*                                                                     *
*           SPEICHERBEREICHE                                          *
*                                                                     *
***********************************************************************
SBCB     LMSASSCB MF=C                    SPEICHERBEREICH FUER CB
*
SBFD     LMSASSFD MF=C                    SPEICHERBEREICH FUER FD
*
SBLD     LMSASSLD MF=C                    SPEICHERBEREICH FUER LD
*
SBED     LMSASSED MF=C                    SPEICHERBEREICH FUER ED
*
SBEI     LMSASSEI MF=C                    SPEICHERBEREICH FUER EI
*
SBEM     LMSASSEM MF=C                    SPEICHERBEREICH FUER EM
*
SBRD     LMSASSRD MF=C                    SPEICHERBEREICH FUER RD
*
SBER     DS    CL256                      SATZPUFFER
SBTID    DC    F'1'                       TOC-IDENTIFIKATION
*
OTYP     DC    Y(OTYPE-OTYP)              FUER TYP-AUSGABE
        DS    CL2
        DC    X'40'
        DC    'TYPE         '
OTYPF    DC    CL(L'EITYPE)' '
OTYPE    EQU   *
*
ONAME    DC    Y(ONAMEE-ONAME)            FUER NAMENS-AUSGABE
        DS    CL2
        DC    X'40'
        DC    'NAME         '
ONAMEF   DC    CL(L'EINAME)' '
ONAMEE   EQU   *
*
OVERS    DC    Y(OVERSE-OVERS)            FUER TYP-AUSGABE
        DS    CL2
        DC    X'40'
        DC    'VERSION      '
OVERSF   DC    CL(L'EIVERS)' '
OVERSE   EQU   *
*
ODATE    DC    Y(ODATEE-ODATE)            FUER DATUMS-AUSGABE
        DS    CL2
        DC    X'40'
        DC    'USER-DATE   '
ODATEF   DC    CL(L'EIUDAT)' '
ODATEE   EQU   *
***********************************************************************
*                                                                     *
*           PARAMETERLISTE                                            *
*                                                                     *
***********************************************************************
PARAM    DS    0F
PARAM1   DS    F                          A(LMSASSCB)
PARAM2   DS    F
PARAM3   DS    F
PARAM4   DS    F
PARAM5   DS    F
PARAM6   DS    F
***********************************************************************
*                                                                     *
*           SAVEAREA                                                  *
*                                                                     *
***********************************************************************
SAVEAREA DS    18F
***********************************************************************
        END