Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Conversion examples

&pagelevel(3)&pagelevel

Example 1: Reorganizing storage space

This procedure reorganizes the storage space for all files of a user ID. If the file is a PLAM library, all its elements are copied to a new library.

The user ID must be entered with a leading $ sign and a trailing period.There are no default values.

a) Non-S procedure

/BEGIN-PROCEDURE LOGGING=N,    -
/               PARAMETERS=YES(   -
/                 PROCEDURE-PARAMETERS=(  -
/                    &USERID=),   -
/                 ESCAPE-CHARACTER='&')
/REMARK +---------------------------------------------------------------+"
/REMARK |                                                               |
/REMARK | This procedure compacts all files contained on a user-id.     |
/REMARK | If the file is a PLAM library then all elements are           |
/REMARK | duplicated in a new library.                                  |
/REMARK | The user-id must be given with the leading dollar sign        |
/REMARK | and with the trailing point.                                  |
/REMARK | There is no default value.                                    |
/REMARK |                                                               |
/REMARK +---------------------------------------------------------------+"
/REMARK &USERID
/ASSIGN-SYSOUT TO=*DUMMY
/SHOW-FILE-ATTR &USERID,INFO=NAME-AND-SPACE,   -
/              OUTPUT=#LST(FORM-NAME=FILE-NAME)
/ASSIGN-SYSOUT TO=*PRIMARY
/ASSIGN-SYSDTA TO=*SYSCMD
/MOD-JOB-SWITCHES ON=(1,4,5)
/START-EXECUTABLE-PROGRAM $EDT
@@READ '#LST'
@@COL1ON&INSERT'/CALL-PROC #PROC2,P-P=('
@@SUFFIX&WITH')'
@@RENUM
@@CR0.001W'/BEGIN-PROCEDURE LOGGING=N'
@@CR0.002W'/ASSIGN-SYSOUT TO=#OUTBEFORE'
@@CR0.003W'/SHOW-FILE-ATT &USERID,INFO=SPACE-SUMMARY'
@@CR0.004W'/ASSIGN-SYSOUT TO=*PRIMARY'
@@CR$+.01W'/ASSIGN-SYSOUT TO=#OUTAFTER'
@@CR$+.01W'/SHOW-FILE-ATT &USERID,INFO=SPACE-SUMMARY'
@@CR$+.01W'/ASSIGN-SYSOUT TO=*PRIMARY'
@@CR$+.01W'/END-PROCEDURE'
@@WR'#PROC1' OVER
@@DELETE
@@CR$+.01W'/BEGIN-PROC LOGGING=N,  -'
@@CR$+.01W'/          PARAMETERS=YES(  -' 
@@CR$+.01W'/              PROC-PARAM=(&FILE),-'
@@CR$+.01W'/              ESCAPE-CHAR=''&'')'
@@CR$+.01W'/COPY-FILE &FILE,&FILE..WORK,PROTECTION=SAME'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=ERASE'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=END'
@@CR$+.01W'/.ERASE DELETE-FILE &FILE,OPTION=DATA'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=FILE'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/DELETE-FILE &FILE..WORK'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=END'
@@CR$+.01W'/.FILE SET-JOB-STEP'
@@CR$+.01W'/FILE &FILE,SPACE=(100,20),FCBTYPE=PAM'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=LMS'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/COPY-FILE &FILE..WORK,&FILE'
@@CR$+.01W'/DELETE-FILE &FILE..WORK,IGNORE-PROTECTION=ACCESS'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=END'
@@CR$+.01W'/.LMS SET-JOB-STEP'
@@CR$+.01W'/ASSIGN-SYSDTA TO=*SYSCMD'
@@CR$+.01W'/MOD-JOB-SWITCHES ON=(1,2,3,4,5)'
@@CR$+.01W'/START-EXECUTABLE-PROGRAM $LMS,MONJV=#BIDON'
@@CR$+.01W'LIB &FILE..WORK,IN'
@@CR$+.01W'LIB &FILE,OUT,NEW'
@@CR$+.01W'DUP* */*'
@@CR$+.01W'END'
@@CR$+.01W'/MOD-JOB-SWITCHES OFF=(1,2,3,4,5)'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/SKIP-COMMANDS IF=JV(((#BIDON,4,4) = ''0000'')),-'
@@CR$+.01W'/              TO-LABEL=AVEND'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/COPY-FILE &FILE..WORK,&FILE'
@@CR$+.01W'/DELETE-FILE &FILE..WORK'
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/SKIP-COMMANDS TO-LABEL=END'
@@CR$+.01W'/.AVEND SET-JOB-STEP'
@@CR$+.01W'/DELETE-FILE &FILE..WORK'
@@CR$+.01W'/.END SET-JOB-STEP'
@@CR$+.01W'/MOD-FILE-ATT &FILE,SUPPORT=ANY-DISK(RELEASE(9999))
@@CR$+.01W'/W-TEXT ''File &FILE compacted'''
@@CR$+.01W'/SET-JOB-STEP'
@@CR$+.01W'/END-PROCEDURE'
@@WR'#PROC2'OVER
@@H
/CALL-PROCEDURE #PROC1
/START-EXECUTABLE-PROGRAM $EDT
@@REA'#OUTBEFORE'
@@REA'#OUTAFTER'
@@SET #I5 = SUBSTR 1:38-42:
@@SET #I6 = SUBSTR 2:38-42:
@@SET #I7 = #I5 - #I6
@@DELETE
@@SET #S5 = CHAR #I5
@@SET #S6 = CHAR #I6
@@SET #S7 = CHAR #I7
@@CR #S1:'Space before : ',#S5
@@CR #S2:'Space after  : ',#S6
@@CR #S3:'              ------------'
@@CR #S4:'Space won    : ',#S7
@@PRINT #S1 N
@@PRINT #S2 N
@@PRINT #S3 N
@@PRINT #S4 N
@@H
/MOD-JOB-SWITCHES OFF=(1,4,5)
/ASSIGN-SYSDTA TO=*SYSCMD
/END-PROC

b) S procedure

/&* +---------------------------------------------------------------+
/&* |                                                               |
/&* | This procedure compacts all files contained on a user-id.     |
/&* | If the file is a PLAM library then all elements are           |
/&* | duplicated in a new library.                                  |
/&* | The user-id is given in parameters with or without the        |
/&* | leading dollar sign and with or without the trailing point.   |
/&* | If no parameter is given then the current user-id is taken.   |
/&* |                                                               |
/&* +---------------------------------------------------------------+
/DECLARE-PARAMETER USER-ID(INITIAL-VALUE=USER-ID,TRANSFER-TYPE=BY-VALUE)
/IF (SUBSTR(USER-ID,1,1)<>'$')
/   "THEN" USER-ID = '$' // USER-ID
/END-IF
/IF (SUBSTR(USER-ID,LENGTH(USER-ID),1)<>'.')
/   "THEN" USER-ID = USER-ID // '.'
/END-IF
/DECLARE-VARIABLE FS(TYPE=STRUCT(*DYNAMIC)),MULT-ELEM=LIST
/DECLARE-VARIABLE VARLOOP(TYPE=STRUCT(*DYNAMIC))
/EXEC-CMD CMD=(SHOW-FILE-ATTR &USER-ID,INFO=NAME-AND-SPACE),-
/STRUCTURE-OUTPUT=FS,TEXT-OUTPUT=*NONE
/DECLARE-VARIABLE SPACEBEFORE(INIT=O,TYP=*INTEGER)
/FOR VARLOOP = *LIST(FS)
/    SPACEBEFORE = SPACEBEFORE + VARLOOP.F-SIZE
/    IF (IS-LIBRARY(VARLOOP.F-NAME))
/       "THEN" LIBBLOCK: BEGIN-BLOCK DATA-INSERTION=YES
/             COPY-FILE FROM-FILE=&(VARLOOP.F-NAME),-
/                       TO-FILE=&(VARLOOP.F-NAME).WORK,PROTECTION=SAME
/             IF-BLOCK-ERROR
/                   EXIT-BLOCK LIBBLOCK
/             END-IF
/             MODIFY-JOB-SWITCHES ON=(1,4)
/             ASSIGN-SYSDTA TO=*SYSCMD
/             DELETE-FILE &(VARLOOP.F-NAME)
/             IF-BLOCK-ERROR
/               DELETE-FILE &(VARLOOP.F-NAME).WORK,OPTION=DATA
/               EXIT-BLOCK LIBBLOCK
/             END-IF
/             START-EXE FROM-FILE=$LMS
/             SEND-DATA 'LIB &(VARLOOP.F-NAME).WORK,IN'
/             SEND-DATA 'LIB &(VARLOOP.F-NAME).NEW.OUT'
/               SEND-DATA 'DUP* */*'
/               SEND-DATA 'END'
/             ASSIGN-SYSDTA TO=*PRIMARY
/             MODIFY-JOB-SWITCHES OFF=(1,4)
/             IF-BLOCK-ERROR
/                COPY-FILE &(VARLOOP.F-NAME).WORK,-
/                          &(VARLOOP.F-NAME)
/                ELSE
/               WR-TEXT 'Library &(VARLOOP.F-NAME) compacted'
/             END-IF
/             DELETE-FILE &(VARLOOP.F-NAME).WORK,IGNORE-PROTECTION=ACCESS
/             MOD-FILE-ATTR &(VARLOOP.F-NAME),-
/                            SUPPORT=ANY-DISK(SPACE=RELEASE(10000))
/              END-BLOCK
/         ELSE
/              MOD-FILE-ATTR &(VARLOOP.F-NAME),-
/                             SUPPORT=ANY-DISK(SPACE=RELEASE(10000))
/              IF-BLOCK-ERROR
/                  ELSE
/                  WR-TEXT 'File &(VARLOOP.F-NAME) compacted'
/              END-IF
/    END-IF
/END-FOR
/IF-BLOCK-ERROR
/END-IF
/DECLARE-VARIABLE FS2(TYP=STRING),MULT-EL=LIST
/EXEC-CMD CMD=(SHOW-FILE-ATTR &USER-ID,INFO=SPACE-SUMMARY),-
/         TEXT-OUTPUT=FS2
/SPACEAFTER = INTEGER (SUBSTR (FS2#,37,5))
/WR-TEXT 'Space before : &SPACEBEFORE'
/WR-TEXT 'Space after  : &SPACEAFTER'
/WIN = SPACEBEFORE - SPACEAFTER
/WR-TEXT '                -----'
/WR-TEXT 'Space won : &WIN'
/EXIT-PROC

Example 2: Copying files with the aid of wildcards

In the following procedure, files are first selected using wildcards. Then, they are copied under a new catalog ID, a new user ID or a new prefix.

For clarification:
CALL-PROC copy, PROC-PAR = (SOURCE=xxx, TARGET=yyy)

where xxx could be:
:CAT: ,$USERID., *STRING* or anything which is accepted by SHOW-FILE-ATTR.

where yyy could be:
:CAT: ,$USERID2. or any prefix with a trailing period.

a) Non-S procedure

/BEGIN-PROCEDURE LOGGING=N,                      -
/               PARAMETERS=YES(                  -
/                 PROCEDURE-PARAMETERS=(         -
/                      &SOURCE=,                 -
/                      &TARGET=),                -
/                 ESCAPE-CHARACTER='&')
/REMARK +---------------------------------------------------------------+
/REMARK |                                                               |
/REMARK | This procedure enables the user to copy some files selected   |
/REMARK | with wildcards under a new cat-id, a new user-id or a new     |
/REMARK | prefix.                                                       |
/REMARK | Examples :                                                    |
/REMARK |   CALL-PROC copy,PROC-PAR=(SOURCE=xxx,TARGET=yyy)             |
/REMARK |   where xxx could be :CAT: , $USERID. , *STRING* or           |
/REMARK |                       everything accepted by SHOW-FILE-ATT    |
/REMARK |         yyy could be :CAT2: , $USERID2. or any PREFIX with    |
/REMARK |                       a trailing point                        |
/REMARK |                                                               |
/REMARK +---------------------------------------------------------------+
/REMARK &SOURCE
/REMARK &TARGET
/ASSIGN-SYSOUT TO=*DUMMY
/ASSIGN-SYSLST TO=#LST
/SHOW-FILE-ATTR &SOURCE,LIST=((SYSLST),FILENAM)
/ASSIGN-SYSLST TO=*PRIMARY
/ASSIGN-SYSOUT TO=*PRIMARY
/ASSIGN-SYSDTA TO=*SYSCMD
/MODIFY-JOB-SWITCHES ON=(1,4,5)
/START-EXECUTABLE-PROGRAM $EDT
@@PROC 1
@@REA '#LST'
@@PROC 2
@@COPY &(1)
@@ON&FIND '.',1 DELETE PREFIX
@@DELETE&:1-1
@@PREFIX & WITH '/            TO-FILE=&TARGET'
@@RENUM 1.5(1)
@@END
@@SUFFIX & WITH '.-'
@@PREFIX & WITH '/COPY-FILE FROM-FILE  ='
@@COPY &(2)
@@RENUM
@@CR 0.01W'/BEGIN-PROCEDURE LOGGING=N'
@@CR$+.01W'/END-PROCEDURE'
@@WR'#LST' OVER
@@H
/MODIFY-JOB-SWITCHES OFF=(1,4,5)
/ASSIGN-SYSDTA TO=*PRIMARY
/CALL-PROC #LST
/END-PROCEDURE

b) S procedure

/BEGIN-PARAMETER-DECLARATION
/  DECLARE-PARAMETER SOURCE(INIT=*PROMPT, TYPE=*STRING)
/  DECLARE-PAREMETER TARGET(INIT=*PROMPT, TYPE=*STRING)
/END-PARAMETER-DECLARATION
/&*+-------------------------------------------------------------------+
/&*|                                                                   |
/&*| This procedure enables the user to copy some files selected with  |
/&*| wildcards under a new cat-id, a new user-id, or a new prefix.     |
/&*| Examples :                                                        |
/&*|  CALL-PROC copy,PROC-PAR=(SOURCE=xxx,TARGET=yyy)                  |
/&*|  where xxx could be :CAT: , &USERID. , *STRING* or everything     |
/&*|                          accepted by SHOW-FILE-ATTRIBUTES         |
/&*|          yyy could be :CAT2: , &USERID. or any PREFIX with a      |
/&*|                          trailing point.                          |
/&*|                                                                   |
/&*+-------------------------------------------------------------------+
/DECLARE-VARIABLE FS(TYPE=STRUCT(*DYNAMIC)),MULT-ELEM=LIST
/DECLARE-VARIABLE VARLOOP(TYPE=STRUCT(*DYNAMIC))
/DECLARE-VARIABLE TARGET2(TYPE=STRING)
/EXEC-CMD CMD=(SHOW-FILE-ATTR &SOURCE,-
/INFO=NAME-AND-SPACE),-
/STRUCTURE-OUTPUT=FS,TEXT-OUT=*NONE
/FOR VARLOOP = *LIST(FS)
/    TARGET2 = TARGET // -
/              VARLOOP.SHORT-F-NAME
/    COPY-FILE FROM = &(VARLOOP.F-NAME),-
/               TO  = &(TARGET2)
/    IF-BLOCK-ERROR
/      "THEN" WR-TEXT 'File &(VARLOOP.F-NAME) not copied'
/       ELSE
/             WR-TEXT 'File &(VARLOOP.F-NAME) copied on &TARGET2'
/    END-IF
/END-FOR
/EXIT-PROC