Tuesday 18 October 2011

RPGLE - Subroutine to backup libraries from a file using QCMDEXC


    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