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 |
(2) | Für die nachfolgende FOR-Schleife wird eine Lauf-Variable vereinbart; sie muss ebenfalls vom Typ Struktur sein. |
(3) | Die Variable |
(4) | Die Ausgabe des Kommandos |
(5) | Jede Datei, die seit mehr als 365 Tagen nicht mehr geändert wurde, wird mit ihrem in der S-Variablen |
(6) | Mit dem Kommando |
(7) | Tritt beim Kommando |
(8) | Mit dem Kommando |
(9) | Der Inhalt der S-Variablen |
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