Loading...
Select Version
&pagelevel(4)&pagelevel
Wenn eine Prozedur von den Möglichkeiten der Programmierung mit SDF-P Gebrauch machen soll, sind über die reinen Ausführungskommandos hinaus weitere Deklarations- und Steuerkommandos erforderlich. Dies soll anhand eines Beispiels anschaulich gemacht werden; die Bedeutung der einzelnen Kommandos wird anschließend schrittweise erläutert.
Die folgende Beispielprozedur dient dazu, die letzten (standardmäßig zehn) Zeilen einer Textdatei nach SYSOUT auszugeben:
/SET-PROC-OPT IMPLICIT-DECLARATION=*NO /BEG-PARAM-DECL / DECL-PARAM DATEI(TYPE=*STRING) / DECL-PARAM ANZAHL-ZEILEN(TYPE=*INTEGER,INIT=10) /END-PARAM-DECL / /"Als DATEI wird ein vollqualifizierter Dateiname (ohne " /"Generation/Version) oder eine Elementangabe der Form " /" '[*LIBRARY-ELEMENT](library,element[(version)],type)' " /"erwartet " / /"Benoetigte Hilfsvariablen:" /DECL-VAR I(TYPE=*INTEGER) /DECL-VAR DATEN(TYPE=*STRING),MULTIPLE-ELEMENTS=*LIST /DECL-VAR BIB(TYPE=*STRING) / /"Pruefung, ob die Datei/das Element existiert," /"damit eine gezielte Fehlermeldung ausgegeben werden kann" /I = INDEX(DATEI,'(') /IF (I > 0) "Name enthaelt '(', also Bibliothek" / BIB = SUBLIST(SUBSTR(DATEI,I),1) "Bibliotheksname" / IF NOT IS-CATALOGED-FILE(BIB) / WRITE-TEXT 'Bibliothek &BIB existiert nicht!' / EXIT-PROCEDURE ERROR=*YES / END-IF / IF NOT IS-LIBRARY(BIB) / WRITE-TEXT 'Datei &BIB ist keine Bibliothek!' / EXIT-PROCEDURE ERROR=*YES / END-IF /ELSE-IF NOT IS-CATALOGED-FILE(DATEI) / WRITE-TEXT 'Datei &DATEI existiert nicht!' / EXIT-PROCEDURE ERROR=*YES /END-IF / /"Daten in eine Variablenliste einlesen" /READ-VAR *LIST(DATEN),STRING-QUOTES=*NO,INPUT=&DATEI /I = SIZE('DATEN') - ANZAHL-ZEILEN + 1 "Startposition berechnen" /IF (I < 1); I = 1; END-IF "nicht vor die erste Zeile!" /FOR I = *COUNTER( FROM = I, TO = SIZE('DATEN'), INCREMENT = 1 ) / WRITE-TEXT &(TO-C-LITERAL(DATEN#I)) /END-FOR