RPGLE - Subroutine to backup libraries from a file using QCMDEXC
C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-==-
C* $Backup - Backup the libraries/files from the system
C* SAVLIB LIB(LIBRARY) DEV(&DEVICE) ENDOPT(&REWIND)
C* SAVF(&SAVFLIB/&SAVF) SAVACT(*LIB) ACCPTH(*YES)
C*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-==-
C $Backup Begsr
C*
C KeyName Setll BCKLIB03P
C KeyName Reade BCKLIB03P
C Dow Not%Eof(BCKLIB03P)
C*
C* save command always use SAV command.
C*
C Select
C When TYPE = '*LIB'
C Eval SaveCmd = 'SAVLIB LIB('
C When TYPE = '*FIL'
C Eval SaveCmd = 'SAVOBJ OBJ('
C When TYPE = '*DOC'
C Eval SaveCmd = 'SAV'
C Endsl
C*
C* SAVLIB LIB(JUNK) DEV(*SAVF) SAVF(JJFLIB/SAVF)
C*
C Eval Device = 'DEV(' + %Trim(TAPEDRIVE)
C + %Trim(')')
C Eval EndOpt = %Trim('ENDOPT(')
C + %trim(ENDOFTAPE) + %Trim(')')
C*
C* write record for start of backup - Start Date And Time
C*
C If Not%Open(BCKLIB04P)
C Open BCKLIB04P
C Endif
C*
C If Not%Eof(BCKLIB03P)
C*
C Time SAVESTIME
C Time KeyTime
C Move *DATE SAVESDATE
C Move *DATE KeyDate
C Write BCK04R
C*
C Endif
C*
C If %Open(BCKLIB04P)
C Close BCKLIB04P
C Endif
C*
C Eval CmdString = %Trim(SaveCmd) + %Trim('@@')
C + %Trim(OBJECT) + %Trim(')@')
C + %Trim(Device)+ %trim('@')+%Trim(EndOpt)
C + %Trim('@SAVACT(*LIB) ACCPTH(*YES)')
C*
C '@':' ' Xlate CmdString CmdString
C Call 'QCMDEXC' 99
C Parm CmdString
C Parm 256. CmdLength
C*
C* write record for start of backup - End Date And Time - Total run
C*
C Back04Key Klist
C Kfld LISTNAME
C Kfld OBJECT
C Kfld KeyDate
C Kfld KeyTime
C*
C If Not%Open(BCKLIB04P)
C Open BCKLIB04P
C Endif
C*
C Back04Key Chain BCKLIB04P
C If %Found(BCKLIB04P)
C Time SAVEETIME
C Move *DATE SAVEEDATE
C*
C*DiffDays = %Diff(ToISO:FromISO:*DAYS)
C*
C SAVEETIME Subdur SAVESTIME DiffSec:*S
C*
C Eval RunHours = (DiffSec/3600)
C Eval RunMinutes = (DiffSec/60 - RunHours * 60)
C Eval RunSeconds = (DiffSec -((RunHours * 3600)+
C (RunMinutes * 60)))
C*
C Exsr $LibInfo
C*
C Update BCK04R
C Endif
C*
C If %Open(BCKLIB04P)
C Close BCKLIB04P
C Endif
C*
C KeyName Reade BCKLIB03P
C Enddo
C*
C* if there is a program to run then run it.
C*
C If ENDPGM <> *Blanks
C Eval CmdString = 'CALL@@' + %Trim(ENDPGMLIB)
C + %Trim('/') + %Trim(ENDPGM)
C '@':' ' Xlate CmdString CmdString
C Call 'QCMDEXC' 99
C Parm CmdString
C Parm 256. CmdLength
C Endif
C*
C Endsr
No comments:
Post a Comment