midrange.com code scratchpad
Name:
Save to Image Catalog
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
10/30/2009 03:57:55 pm
IP:
Logged
Description:
CL and QSHELL script for saving to image catalog and moving to file server
Code:
  1. /****************************************************************************/
  2. /*  Created by: Jim Essinger                                                */
  3. /*     Program: WEBBACKUP (CLP but could be CLLE program)                   */
  4. /*        Date: 2009-07-28                                                  */
  5. /*                                                                          */
  6. /*     Purpose: Save the optical images in the IFS folder for the image     */
  7. /*              catalog, then archive them to the TITAN server in a         */
  8. /*              subfolder in the MIS folder                                 */
  9. /*                                                                          */
  10. /*                                                                          */
  11. /****************************************************************************/
  12. /* MODIFIED INFORMATION                                                     */
  13. /****************************************************************************/
  14. /*  DATE        PROGRAMMER  DESCRIPTION                                     */
  15. /*  ----------  ---------   ----------------------------------------------- */
  16. /*  CCYY-MM-DD                                                              */
  17. /*                                                                          */
  18. /****************************************************************************/
  19.  WebBackup:  PGM
  20.  
  21.   /*     &DOW = Day of the week: 1 = Sunday ... 7 = Saturday                  */
  22.              DCL        VAR(&DOW       ) TYPE(*Char) LEN( 1)
  23.  
  24.   /* Subroutine Parms                                                         */
  25.              DCL        VAR(&DayName   ) TYPE(*Char) LEN( 3)
  26.              DCL        VAR(&ToFile    ) TYPE(*Char) LEN(25)
  27.              Dcl        Var(&VolID     ) Type(*Char) Len(30)
  28.              Dcl        Var(&User      ) Type(*Char) Len(10)
  29.  
  30.   /* Date and time handling                                                   */
  31.              Dcl        Var(&DateTime  ) Type(*Char) Len(20)
  32.              Dcl        Var(&Time      ) Type(*Char) Len(08)
  33.              Dcl        Var(&Year      ) Type(*Char) Len( 4)
  34.              Dcl        Var(&Month     ) Type(*Char) Len( 2)
  35.              Dcl        Var(&Day       ) Type(*Char) Len( 2)
  36.  
  37.  
  38. /* Current Date for file naming                                               */
  39.              RTVJOBA    USER(&USER) DATETIME(&DATETIME)
  40.              ChgVar     Var(&Year ) Value(%SST(&DateTime 1 4))
  41.              ChgVar     Var(&Month) Value(%SST(&DateTime 5 2))
  42.              ChgVar     Var(&Day  ) Value(%SST(&DateTime 7 2))
  43.  
  44. /*                                                                            */
  45.              Call       pgm(WGetDOW) Parm(&DOW)
  46.  
  47.   /* Depending on the day of the week do a Full or Partial or No save         */
  48.              Select
  49.     /* Sunday  - Full Save  */
  50.                 when       cond(&DOW *eq '1') Then(DO)
  51.  
  52.            /* Create new disk images for this save */
  53.                    ADDIMGCLGE IMGCLG(BACKUPOPT) FROMFILE(*NEW) +
  54.                               TOFILE(SunSav01.bin) IMGCLGIDX(1) +
  55.                               IMGSIZ(*DVD4700)
  56.                    ADDIMGCLGE IMGCLG(BACKUPOPT) FROMFILE(*NEW) +
  57.                               TOFILE(SunSav02.bin) IMGCLGIDX(2) +
  58.                               IMGSIZ(*DVD4700)
  59.  
  60.           /* Activate the image catalog with the virtual drive  */
  61.                    LODIMGCLG  IMGCLG(BACKUPOPT) DEV(OPTVRT01) WRTPTC(*NONE)
  62.  
  63.           /* initialize the virtual disks with unique volumn IDs */
  64.                    CHGVAR     VAR(&VOLID) VALUE(&Year *CAT '-' *CAT &Month +
  65.                               *CAT '-' *CAT &DAY *CAT '.Sun.01')
  66.                    LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*FIRST)
  67.                    INZOPT     NEWVOL(&VOLID) DEV(OPTVRT01) CHECK(*NO) +
  68.                               ENDOPT(*LEAVE) CLEAR(*NO)
  69.  
  70.                    CHGVAR     VAR(&VOLID) VALUE(&Year *CAT '-' *CAT &Month +
  71.                               *CAT '-' *CAT &DAY *CAT '.Sun.02')
  72.                    LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*NEXT)
  73.                    INZOPT     NEWVOL(&VOLID) DEV(OPTVRT01) CHECK(*NO) +
  74.                               ENDOPT(*LEAVE) CLEAR(*NO)
  75.  
  76.           /* Reload/Mount the first disk for the save  */
  77.                    LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*FIRST)
  78.  
  79.                    OVRPRTF    FILE(QSYSPRT) MAXRCDS(*NOMAX) OVRSCOPE(*JOB)
  80.  
  81.          /* Send a start time to track the total save time  */
  82.                    RTVJOBA    DATETIME(&DATETIME)
  83.                    Chgvar     &time value(%SST(&DateTime 9 2) *cat ':' +
  84.                               *cat %SST(&DateTime 11 2) *cat ':' *cat +
  85.                               %SST(&DateTime 13 2))
  86.                    SNDMSG     MSG('IFS save start time: ' *CAT &TIME) +
  87.                               TOUSR(&USER)
  88.  
  89.          /* Save all the IFS objects identified as web related  */
  90.                    SAV        DEV('/qsys.lib/optvrt01.devd') +
  91.                               OBJ(('/directory') ('/directory02') ('/usr/local') +
  92.                               ('/web') ('/www')) SAVACT(*NO) +
  93.                               OUTPUT(*print) VOL(*MOUNTED) UPDHST(*YES)
  94.                    MONMSG     MSGID(CPF3837) EXEC(DO)
  95.                       SNDNETMSG  MSG('The IFS save missed some objects.  +
  96.                                  Check the error log file') TOUSRID((IT +
  97.                                  MESSAGE))
  98.                    EndDO
  99.  
  100.                    RTVJOBA    DATETIME(&DATETIME)
  101.                    CHGVAR     VAR(&TIME) VALUE(%SST(&DATETIME 9 2) *CAT +
  102.                               ':' *CAT %SST(&DATETIME 11 2) *CAT ':' *CAT +
  103.                               %SST(&DATETIME 13 2))
  104.                    SNDMSG     MSG('IFS save end time: ' *CAT &TIME) +
  105.                               TOUSR(&USER)
  106.  
  107.                    DLTOVR     FILE(QSYSPRT) LVL(*JOB)
  108.  
  109.                    LODIMGCLG  IMGCLG(BACKUPOPT) DEV(OPTVRT01) +
  110.                               OPTION(*UNLOAD) WRTPTC(*NONE)
  111.  
  112.                    RMVIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(2)
  113.                    RMVIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(1)
  114.  
  115.                    SBMJOB     CMD(QSH CMD('/QShell/MovIFSOptSave.qsh')) +
  116.                               JOB(MOVIFSAVE) JOBD(*USRPRF) JOBQ(WEBALL) +
  117.                               USER(*CURRENT) LOG(4 0 *SECLVL) +
  118.                               LOGCLPGM(*YES)
  119.  
  120.                 EndDo
  121.  
  122.     /* Monday - No save - nothing changed since Sunday AM  */
  123.          /*     when       cond(&DOW *eq '2') Then(Do) */
  124.  
  125.     /* Tueday  - Save Changed objects */
  126.                 when       cond(&DOW *eq '3') Then(Do)
  127.  
  128.                    CHGVAR     VAR(&DAYNAME) VALUE('Tue')
  129.  
  130.                    CALLSUBR   SUBR(DAILY)
  131.  
  132.                 EndDo
  133.  
  134.     /* Wednesday - Save Changed objects  */
  135.                 when       cond(&DOW *eq '4') Then(Do)
  136.  
  137.                    CHGVAR     VAR(&DAYNAME) VALUE('Wed')
  138.  
  139.                    CALLSUBR   SUBR(DAILY)
  140.  
  141.                 EndDo
  142.     /* Thurday   - Save Changed objects  */
  143.                 when       cond(&DOW *eq '5') Then(Do)
  144.  
  145.                    CHGVAR     VAR(&DAYNAME) VALUE('Thr')
  146.  
  147.                    CALLSUBR   SUBR(DAILY)
  148.  
  149.                 EndDo
  150.     /* Friday    - Save Changed objects  */
  151.                 when       cond(&DOW *eq '6') Then(Do)
  152.  
  153.                    CHGVAR     VAR(&DAYNAME) VALUE('Fri')
  154.  
  155.                    CALLSUBR   SUBR(DAILY)
  156.  
  157.                 EndDo
  158.  
  159.     /* Saturday - No save - all will be saved tomorrow */
  160.          /*     when       cond(&DOW *eq '7') Then(Do) */
  161.  
  162.              EndSelect
  163.  
  164.  /* End of the program                                                        */
  165.              Return
  166.  
  167.     /* Common Daily save code  */
  168.              SUBR       SUBR(DAILY)
  169.  
  170.                 CHGVAR     VAR(&TOFILE) VALUE(&DAYNAME *CAT 'Sav01.bin')
  171.  
  172.                 ADDIMGCLGE IMGCLG(BACKUPOPT) FROMFILE(*NEW) +
  173.                            TOFILE(&ToFile) IMGCLGIDX(1) IMGSIZ(*DVD2600)
  174.  
  175.                 LODIMGCLG  IMGCLG(BACKUPOPT) DEV(OPTVRT01) WRTPTC(*NONE)
  176.  
  177.                 CHGVAR     VAR(&VOLID) VALUE(&Year *CAT '-' *CAT &Month +
  178.                            *CAT '-' *CAT &DAY *CAT '.' *CAT &DAYNAME *CAT +
  179.                            '.01')
  180.                 LODIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(*FIRST)
  181.                 INZOPT     NEWVOL(&VOLID) DEV(OPTVRT01) CHECK(*NO) +
  182.                            ENDOPT(*LEAVE) CLEAR(*NO)
  183.  
  184.                 OVRPRTF    FILE(QSYSPRT) MAXRCDS(*NOMAX) OVRSCOPE(*JOB)
  185.  
  186.                 SAV        DEV('/qsys.lib/optvrt01.devd') +
  187.                            OBJ(('/directory1') ('/directory2') ('/usr/local') +
  188.                            ('/web') ('/www')) SAVACT(*NO) OUTPUT(*print) +
  189.                            VOL(*MOUNTED) CHGPERIOD(*LASTSAVE) UPDHST(*NO)
  190.                 MONMSG     MSGID(CPF3837) EXEC(DO)
  191.                    SNDNETMSG  MSG('The IFS save missed some objects.  +
  192.                               Check the error log file') TOUSRID((IT +
  193.                               MESSAGE))
  194.                 EndDO
  195.  
  196.                 DLTOVR     FILE(QSYSPRT) LVL(*JOB)
  197.  
  198.                 LODIMGCLG  IMGCLG(BACKUPOPT) DEV(OPTVRT01) OPTION(*UNLOAD) +
  199.                            WRTPTC(*NONE)
  200.  
  201.                 RMVIMGCLGE IMGCLG(BACKUPOPT) IMGCLGIDX(1)
  202.  
  203.                 SBMJOB     CMD(QSH CMD('/QShell/MovIFSOptSave.qsh')) +
  204.                            JOB(MOVIFSAVE) JOBD(*USRPRF) JOBQ(WEBALL) +
  205.                            USER(*CURRENT) LOG(4 0 *SECLVL) LOGCLPGM(*YES)
  206.              ENDSUBR
  207.  
  208.              ENDPGM
  209.  
  210.  
  211.  
  212. /****************************************************************************/
  213. /*  Created by: Jim Essinger                                                */
  214. /*     Program: WGETDOW    (CLLE Program)                                   */
  215. /*        Date: 2009-08-04                                                  */
  216. /*                                                                          */
  217. /*     Purpose: Using the current date, calculate the current day of the    */
  218. /*              week, and pass the number back to the calling program as    */
  219. /*              a character value.                                          */
  220. /*                                                                          */
  221. /****************************************************************************/
  222. /* MODIFIED INFORMATION                                                     */
  223. /****************************************************************************/
  224. /*  DATE        PROGRAMMER  DESCRIPTION                                     */
  225. /*  ----------  ---------   ----------------------------------------------- */
  226. /*  CCYY-MM-DD                                                              */
  227. /*                                                                          */
  228. /****************************************************************************/
  229.  START:      PGM        PARM(&DOWC)
  230.  
  231.   /* Parms for API program CEELOCT                                            */
  232.   /*     &LilDays  = number of days since 10/14/1582                          */
  233.   /*     &LilSecs  = Number of seconds since 10/14/1582                       */
  234.   /*     &CurrGreg = Current date in CCYYMMDDHHmmSS999xxxxxx                  */
  235.              DCL        VAR(&LILDATE   ) TYPE(*INT) LEN(4)
  236.              DCL        VAR(&LILSECS   ) TYPE(*Char) LEN(8)
  237.              DCL        VAR(&CurrGreg  ) TYPE(*Char) LEN(23)
  238.   /*     &DOW = Day of the week: 1 = Sunday ... 7 = Saturday                  */
  239.              DCL        VAR(&DOW       ) TYPE(*INT) LEN(4)
  240.              DCL        VAR(&DOWC      ) TYPE(*Char) LEN(1)
  241.  
  242.   /* Get the current Date with API - Micorseconds are all zeros */
  243.              CALLPRC    PRC(CEELOCT) PARM(&Lildate &Lilsecs &Currgreg *OMIT)
  244.   /* Get the Day of the Week for current date  */
  245.              CALLPRC    PRC(CEEDYWK) PARM(&Lildate &DOW *OMIT)
  246.   /* Translate the INT to CHAR to return to the calling program */
  247.              CHGVAR     VAR(&DOWC) VALUE(&DOW)
  248.  
  249.              Return
  250.  
  251.  End:        EndPgm
  252.  
  253. *********************************************************************************************
  254.  
  255.  
  256. In a folder on the IFS called QSHELL I have this file called MovIFSOptSav.qsh
  257.  
  258.  ************Beginning of data**************                                                                       
  259. #!/bin/qsh                                                                                                         
  260.                                                                                                                    
  261. # Move the disk image files to the TITAN Server                                                                    
  262. mv -f /backupOPT/*.bin /QNTC/SERVER/FOLDER/SubFolder 1> /backupOPT/Messages.txt 2> /backupOPT/Errors.txt || exit 7  
  263.  ************End of Data******************** 
© 2004-2019 by midrange.com generated in 0.007s valid xhtml & css