Example 4
/write-text 'There are &(var#3.F-SIZE) PAM pages reserved for file &(var#3.SHORT-F-NAME)' There are 3 PAM pages reserved for file JOBC
Example 4 is based on the structured output of Example 2.
The contents of S variables var#3.SHORT-F-NAME and var#3.F-SIZE can be re-used by means of expression substitution.
Example 5
The contents of S variable FILES are to be re-used in S procedure proc.s-var.
S procedure proc.s-var
/DECL-VAR FILES(TYPE=*STRUCTURE),MULTIPLE-ELEM=*LIST---------------------------(1)
/DECL-VAR INCR(TYPE=*STRUCTURE)------------------------------------------------(2)
/DECL-VAR FILES-OLD,MULTIPLE-ELEM=*LIST----------------------------------------(3)
/
/WRITE-TEXT '*******************************************************'
/WRITE-TEXT '** This procedure lists all files which have **'
/WRITE-TEXT '** not been modified for over 365 days **'
/WRITE-TEXT '*******************************************************'
/
/
/EXEC-CMD (SHOW-FILE-ATTR *ALL,INF=*PAR(HIST=*YES),
/ SELECT=*BY-ATTR(LAST-ACCESS-DATE=*INTERVAL(TO=-365))),
/ STRUCTURE-OUTPUT=FILES,TEXT-OUTPUT=*NONE ---------------------------(4)
/
/WRITE-TEXT 'The following files have not been modified in the last 365 days:'
/FOR INCR=*LIST(FILES)
/ WRITE-TEXT 'FILE: &(INCR.SHORT-F-NAME)' ----------------------------------(5)
/ MODIFY-FILE-ATTRIBUTES FILE-NAME=&(INCR.SHORT-F-NAME),
/ NEW-NAME=&('OLD.'//INCR.SHORT-F-NAME) -----------------------------(6)
/ IF-CMD-ERROR -------------------------------------------------------------(7)
/ WRITE-TEXT 'Error renaming file: -
/ &(INCR.SHORT-F-NAME)'
/ END-IF
/ ELSE
/ SET-VAR FILES-OLD='&('OLD.'//INCR.SHORT-F-NAME)',WRITE-MODE=*EXTEND ---(8)
/ END-IF
/END-FOR
/WRITE-TEXT 'List of all files with the prefix OLD'
/SHOW-VAR FILES-OLD,INF=*PAR(LIST-INDEX-NUMBER=*YES) --------------------------(9)
(1) | S variable |
(2) | An incrementing variable is declared for the subsequent FOR loop; this must also be of type STRUCTURE. |
(3) |
|
(4) | The EXECUTE-CMD command causes the output of |
(5) | Each file that has not been modified for over 365 days is listed under its file name as stored in the |
(6) | The |
(7) | If an error occurs while |
(8) | The |
(9) | The contents of |
Execution log
/call-proc proc.s-var
******************************************************* ** This procedure lists all files which have ** ** not been modified for over 365 days ** ******************************************************* The following files have not been modified in the last 365 days: FILE: ISAM FILE: MESSAGEMAKER FILE: MSE1 FILE: MSE2 FILE: MSG.OUTPUT FILE: MSG.PROC FILE: README.RZ FILE: README.RZ.ISAM FILE: README.RZ.OLD FILE: VAR.PROC List of all files with the prefix OLD FILES-OLD#1 = OLD.ISAM FILES-OLD#2 = OLD.MESSAGEMAKER FILES-OLD#3 = OLD.MSE1 FILES-OLD#4 = OLD.MSE2 FILES-OLD#5 = OLD.MSG.OUTPUT FILES-OLD#6 = OLD.MSG.PROC FILES-OLD#7 = OLD.README.RZ FILES-OLD#8 = OLD.README.RZ.ISAM FILES-OLD#9 = OLD.README.RZ.OLD FILES-OLD#10 = OLD.VAR.PROC
Example 6
Example 6 builds on the S procedure described in Example 5. If you want to restore the original file names of all files with the prefix “OLD.”, you can do so interactively using the following commands:
/decl-var restore(type=struc),mult-elem=*list /exec-cmd (show-file-attr old.*,inf=*all),struc-output=restore,text-output=*none /decl-var y(type=struc) /for y=*list(restore) %FOR/mod-fi-attr &(y.SHORT-F-NAME),&(substring(y.SHORT-F-NAME,5)) %FOR/end-for