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