Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Weiterverwendung von S-Variablen

&pagelevel(6)&pagelevel
Beispiel 4
/write-text 'Fuer die Datei &(var#3.SHORT-F-NAME) sind &(var#3.F-SIZE) 
PAM-Seiten reserviert'
Fuer die Datei JOBC sind 3 PAM-Seiten reserviert

Beispiel 4 ist die strukturierte Ausgabe von Beispiel 2 zu Grunde gelegt.

Die Inhalte der S-Variablen var#3.SHORT-F-NAME und var#3.F-SIZE können mittels Ausdrucksersetzung weiterverwendet werden.

Beispiel 5

Der Inhalt der S-Variablen DATEI soll in der S-Prozedur proc.s-var weiterverwendet werden.

S-Prozedur proc.s-var

/DECL-VAR DATEI(TYPE=*STRUCTURE),MULTIPLE-ELEM=*LIST--------------------------(1)
/DECL-VAR LAUF(TYPE=*STRUCTURE)-----------------------------------------------(2)
/DECL-VAR DATEI-ALT,MULTIPLE-ELEM=*LIST---------------------------------------(3)
/
/WRITE-TEXT '*******************************************************'
/WRITE-TEXT '** Diese Prozedur gibt alle Dateien aus, die seit    **'
/WRITE-TEXT '** mehr als 365 Tagen nicht mehr geaendert wurden    **'
/WRITE-TEXT '*******************************************************'
/
/
/EXEC-CMD (SHOW-FILE-ATTR *ALL,INF=*PAR(HIST=*YES),-
/         SELECT=*BY-ATTR(LAST-ACCESS-DATE=*INTERVAL(TO=-365))),-
/         STRUCTURE-OUTPUT=DATEI,TEXT-OUTPUT=*NONE ---------------------------(4)
/
/WRITE-TEXT 'Folgende Dateien wurden in den letzten 365 Tagen nicht mehr 
geaendert'
/FOR LAUF=*LIST(DATEI)
/    WRITE-TEXT 'DATEI: &(LAUF.SHORT-F-NAME)' --------------------------------(5)
/    MODIFY-FILE-ATTRIBUTES FILE-NAME=&(LAUF.SHORT-F-NAME),-
/          NEW-NAME=ALT.&(LAUF.SHORT-F-NAME) ---------------------------------(6)
/    IF-CMD-ERROR ------------------------------------------------------------(7)
/       WRITE-TEXT 'Fehler beim Umbenennen der Datei: -
/                   &(LAUF.SHORT-F-NAME)'
/    END-IF
/    ELSE
/       SET-VAR DATEI-ALT='ALT.&(LAUF.SHORT-F-NAME)',WRITE-MODE=*EXTEND ------(8)
/    END-IF
/END-FOR
/WRITE-TEXT 'Ausgabe aller Dateien mit dem Präfix ALT'
/SHOW-VAR DATEI-ALT,INF=*PAR(LIST-INDEX-NUMBER=*YES) -------------------------(9)

(1)

Die S-Variable DATEI wird als strukturierte Listenvariable deklariert.

(2)

Für die nachfolgende FOR-Schleife wird eine Lauf-Variable vereinbart; sie muss ebenfalls vom Typ Struktur sein.

(3)

Die Variable DATEI-ALT wird als Listenvariable deklariert. In ihr werden später alle Dateien als Listenelemente abspeichert, die mit dem Präfix „ALT.“ beginnen.

(4)

Die Ausgabe des Kommandos SHOW-FILE-ATTRIBUTES INF=*PAR(HIST=*YES) wird über EXECUTE-CMD in die S-Variable DATEI abgespeichert. Die Ausgabe nach SYSOUT wird durch TEXT-OUTPUT=*NONE unterbunden. Mit dem Operanden SELECT werden alle Dateien ausgewählt, deren letzter, ändernder Zugriff älter als 365 Tage ist.

(5)

Jede Datei, die seit mehr als 365 Tagen nicht mehr geändert wurde, wird mit ihrem in der S-Variablen LAUF.SHORT-F-NAME abgespeicherten Dateinamen ausgegeben.

(6)

Mit dem Kommando MODIFY-FILE-ATTRIBUTES werden die Namen der selektierten Dateien um das Präfix „ALT.“ erweitert.

(7)

Tritt beim Kommando MODIFY-FILE-ATTRIBUTES ein Fehler auf, wird er im IF-CMD-ERROR-Block abgefangen.

(8)

Mit dem Kommando SET-VARIABLE wird der S-Varibalen DATEI-ALT der neue Dateiname mit dem Präfix „ALT.“ zugeordnet. Durch MODE=*EXTEND wird DATEI-ALT bei jedem Schleifendurchlauf mit Umbenennung um ein Listenelement erweitert.

(9)

Der Inhalt der S-Variablen DATEI-ALT wird mit dem Kommando SHOW-VAR ausgegeben.

Ablaufprotokoll
/call-proc proc.s-var
*******************************************************
** Diese Prozedur gibt alle Dateien aus, die seit    **
** mehr als 365 Tagen nicht mehr geaendert wurden    **
*******************************************************
Folgende Dateien wurden in den letzten 365 Tagen nicht mehr geaendert
DATEI: ISAM
DATEI: MESSAGEMAKER
DATEI: MSE1
DATEI: MSE2
DATEI: MSG.AUSGABE
DATEI: MSG.PROC
DATEI: README.RZ
DATEI: README.RZ.ALT
DATEI: README.RZ.ISAM
DATEI: VAR.PROC
Ausgabe aller Dateien mit dem Präfix ALT
DATEI-ALT#1 = ALT.ISAM
DATEI-ALT#2 = ALT.MESSAGEMAKER
DATEI-ALT#3 = ALT.MSE1
DATEI-ALT#4 = ALT.MSE2
DATEI-ALT#5 = ALT.MSG.AUSGABE
DATEI-ALT#6 = ALT.MSG.PROC
DATEI-ALT#7 = ALT.README.RZ
DATEI-ALT#8 = ALT.README.RZ.ALT
DATEI-ALT#9 = ALT.README.RZ.ISAM
DATEI-ALT#10 = ALT.VAR.PROC
Beispiel 6

Beispiel 6 baut auf die in Beispiel 5 beschriebene S-Prozedur auf.
Sollen alle Dateien mit dem Präfix „ALT.“ wieder ihren ursprünglichen Dateinamen erhalten, kann dies im Dialog mit den folgenden Kommandos erreicht werden:

/decl-var zurueck(type=struc),mult-elem=*list
/exec-cmd (show-file-attr alt.*,inf=*all),struc-output=zurueck,text-output=*none
/decl-var j(type=struc)
/for j=*list(zurueck)
%FOR/mod-fi-attr &(j.SHORT-F-NAME),&(substring(j.SHORT-F-NAME,5))
%FOR/end-for