Loading...
Select Version
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