code

Name
Astradyne (UK) Ltd
Scriptlanguage
Plain Text
Tabwidth
4
Date
Sun, 12 May 2013 14:45:05 +0000
IP
192.168.0.1

CL program and command to automate and schedule a full system save that we have been using since V4R5. The command must be run from the system console. There are a couple of things to note:

a) The program makes reference to a LOCKOUT command which we use in-house as part of our initial programs for users to lock them out of the system when required,
b) a log of messages is sent to message queue SYSLOG in library AUKSYS, change this to suit your environment,
c) status messages are listed at the end of the source from message file AUKMSG, add or change these as needed.

  1. BNCSYS Command
  2. ==============
  3.  
  4.             CMD        PROMPT('Bounce & Save System')               
  5.                                                                      
  6.             PARM      KWD(RESTART) TYPE(*CHAR) LEN(10) RSTD(*YES) +
  7.                           DFT(*NO) VALUES(*YES *NO) CHOICE('*YES, + 
  8.                           *NO') PROMPT('Re-IPL after Shutdown')     
  9.                                                                      
  10.             PARM      KWD(SAVE) TYPE(*CHAR) LEN(10) RSTD(*YES) +   
  11.                           DFT(*NO) VALUES(*YES *NO) CHOICE('*YES, + 
  12.                           *NO') PROMPT('Save System before Shutdown')
  13.                                                                      
  14.             PARM      KWD(LOCKOUT) TYPE(*CHAR) LEN(10) RSTD(*YES) +
  15.                           DFT(*NONE) VALUES(*NONE *USER *PGMR *ALL) +
  16.                           CHOICE('*NONE, *USER, *PGMR, *ALL') +     
  17.                           PROMPT('Lockout Users on IPL ?')           
  18.                                                                      
  19.             PARM      KWD(TIME) TYPE(*CHAR) LEN(8) RSTD(*NO) +     
  20.                           DFT('07:30:00') CHOICE('*IMMED, 07:30:00, +
  21.                           valid time') PROMPT('Time to Bounce +     
  22.                           System ?')                               
  23.  
  24. BNCSYS Command Processing Program
  25. =================================
  26.  
  27.             PGM        PARM(&RESTART &SAVE &LOCKOUT &SCHTIM)
  28.  
  29.             DCL        VAR(&RESTART) TYPE(*CHAR) LEN(10)
  30.             DCL        VAR(&SAVE)    TYPE(*CHAR) LEN(10)
  31.             DCL        VAR(&LOCKOUT) TYPE(*CHAR) LEN(10)
  32.             DCL        VAR(&SCHTIM)  TYPE(*CHAR) LEN(8)
  33.             DCL        VAR(&TYPE)    TYPE(*CHAR) LEN(1)
  34.             DCL        VAR(&MSGDTA)  TYPE(*CHAR) LEN(256)
  35.  
  36.             DCL        VAR(&USER)    TYPE(*CHAR) LEN(10)
  37.             DCL        VAR(&JOB)    TYPE(*CHAR) LEN(10)
  38.  
  39. /* Initial processing...                                                      */
  40.  
  41.             RTVJOBA    JOB(&JOB) USER(&USER)
  42.  
  43. /*    Make sure that we are running on DSP01 (The Console) .....    */
  44. /*    If we're not, this job will end when we do ENDSBS *ALL *IMMED! */
  45.  
  46.             IF        COND(&JOB *NE 'DSP01    ') THEN(SNDPGMMSG +
  47.                           MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('** +
  48.                           YOU HAVE TO RUN THIS COMMAND ON THE +
  49.                           SYSTEM CONSOLE!!!! **') MSGTYPE(*ESCAPE))
  50.  
  51.             CLRMSGQ    MSGQ(AUKSYS/SYSLOG)
  52.             CHGVAR    VAR(&MSGDTA) VALUE(&SAVE || &LOCKOUT || &SCHTIM)
  53.             SNDUSRMSG  MSGID(AUK1001) MSGF(AUKMSG) MSGDTA(&MSGDTA) +
  54.                           MSGTYPE(*INFO) TOMSGQ(SYSLOG)
  55.  
  56.             CHGMSGQ    MSGQ(&USER) DLVRY(*NOTIFY)
  57.             CHGMSGQ    MSGQ(&JOB) DLVRY(*NOTIFY)
  58.  
  59. /* Delay the job so that it doesn't start processing until a specific time... */
  60.  
  61.             SNDUSRMSG  MSGID(AUK1002) MSGF(AUKMSG) MSGDTA(&SCHTIM) +
  62.                           MSGTYPE(*INFO) TOMSGQ(SYSLOG)
  63.  
  64.             IF        COND(&SCHTIM *NE '*IMMED') THEN(DO)
  65.             DLYJOB    RSMTIME(&SCHTIM)
  66.             ENDDO
  67.  
  68. /* Perform the processing required by this job.  This should include an      */
  69. /* ENDSYS, SAVSECDTA, SAVCFG, SAVSYS, SAVLIB, PWRDWNSYS and LOCKOUT as needed */
  70. /* according to the circumstances under which this routine is being run...    */
  71.  
  72. PROC:
  73.  
  74. /* Set the LOCKOUT data area ready for the re-IPL...                          */
  75.  
  76.             SNDUSRMSG  MSGID(AUK1003) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  77.                           MSGTYPE(*INFO)
  78.             LOCKOUT    USRTYP(&LOCKOUT)
  79.             SNDUSRMSG  MSGID(AUK1012) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  80.                           MSGTYPE(*INFO)
  81.  
  82. /* ...end the TCP/IP server jobs                                              */
  83.  
  84.             ENDHOSTSVR SERVER(*ALL)
  85.             MONMSG    MSGID(CPF0000)
  86.             ENDTCPSVR  SERVER(*ALL) 
  87.             MONMSG    MSGID(CPF0000)
  88.             ENDTCP    OPTION(*IMMED)
  89.             MONMSG    MSGID(CPF0000)
  90.  
  91. /* ...and then set the system into restricted state, ready for the IPL and    */
  92. /* any saves that are to be performed...                                      */
  93.  
  94.             SNDUSRMSG  MSGID(AUK1004) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  95.                           MSGTYPE(*INFO)
  96.             ENDSYS    OPTION(*IMMED) ENDSBSOPT(*NOJOBLOG)
  97.             MONMSG    MSGID(CPF0000)
  98.  
  99. /* If saves are to be performed then do them.  These should include security, */
  100. /* configuration, system and non-system objects as needed for a complete      */
  101. /* system load...                                                            */
  102.  
  103.             IF        COND(&SAVE *EQ '*YES') THEN(DO)
  104.  
  105. SAVSYS:
  106.             SNDUSRMSG  MSGID(AUK1005) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  107.                           MSGTYPE(*INFO)
  108.             SNDUSRMSG  MSGID(AUK1006) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  109.                           MSGTYPE(*INFO)
  110.             SAVSYS    DEV(TAP01) ENDOPT(*LEAVE)
  111.             MONMSG    MSGID(CPF3785) EXEC(DO)
  112.                           RCVMSG MSGQ(AUKSYS/SYSLOG)
  113.                           RCVMSG MSGQ(AUKSYS/SYSLOG)
  114.                           DLYJOB DLY(5)
  115.                           GOTO CMDLBL(SAVSYS)
  116.                         ENDDO
  117.             MONMSG    MSGID(CPF3772) EXEC(GOTO CMDLBL(SAVSECDTA))
  118.             MONMSG    MSGID(CPF0000)
  119.             SNDUSRMSG  MSGID(AUK1007) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  120.                           MSGTYPE(*INFO)
  121. SAVSECDTA:
  122.             SNDUSRMSG  MSGID(AUK1017) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  123.                           MSGTYPE(*INFO)
  124.             SAVSECDTA  DEV(TAP01) ENDOPT(*LEAVE)
  125.             MONMSG    MSGID(CPF0000)
  126.             SNDUSRMSG  MSGID(AUK1018) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  127.                           MSGTYPE(*INFO)
  128. SAVCFG:
  129.             SNDUSRMSG  MSGID(AUK1019) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  130.                           MSGTYPE(*INFO)
  131.             SAVCFG    DEV(TAP01) ENDOPT(*LEAVE)
  132.             MONMSG    MSGID(CPF0000)
  133.             SNDUSRMSG  MSGID(AUK1020) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  134.                           MSGTYPE(*INFO)
  135. SAVNONSYS:
  136.             SNDUSRMSG  MSGID(AUK1008) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  137.                           MSGTYPE(*INFO)
  138.             SAVLIB    LIB(*NONSYS) DEV(TAP01) ENDOPT(*LEAVE) +
  139.                           ACCPTH(*YES)
  140.             MONMSG    MSGID(CPF0000)
  141.             SNDUSRMSG  MSGID(AUK1009) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  142.                           MSGTYPE(*INFO)
  143. SAVDLO:
  144.             SNDUSRMSG  MSGID(AUK1010) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  145.                           MSGTYPE(*INFO)
  146.             SAVDLO    DLO(*ALL) DEV(TAP01)
  147.             MONMSG    MSGID(CPF0000)
  148.             SNDUSRMSG  MSGID(AUK1011) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  149.                           MSGTYPE(*INFO)
  150.  
  151.             SAV        DEV('/QSYS.LIB/TAP01.DEVD') OBJ(('/QSYS.LIB' +
  152.                           *OMIT) ('/QDLS' *OMIT) ('/*')) UPDHST(*YES)
  153.  
  154. DSPTAP:
  155.             SNDUSRMSG  MSGID(AUK1014) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  156.                           MSGTYPE(*INFO)
  157.             DSPTAP    DEV(TAP01) DATA(*LABELS) OUTPUT(*PRINT) +
  158.                           ENDOPT(*UNLOAD)
  159.             SNDUSRMSG  MSGID(AUK1015) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  160.                           MSGTYPE(*INFO)
  161.             ENDDO
  162.  
  163. /* Once the saves have completed, power down the system and re-IPL...        */
  164.  
  165. PWRDWN:
  166.             SNDUSRMSG  MSGID(AUK1013) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  167.                           MSGTYPE(*INFO)
  168.             PWRDWNSYS  OPTION(*IMMED) RESTART(&RESTART)
  169. NOPWRDWN:
  170.             SNDUSRMSG  MSGID(AUK1016) MSGF(AUKMSG) TOMSGQ(SYSLOG) +
  171.                           MSGTYPE(*INFO)
  172. ENDPGM:    ENDPGM
  173.  
  174.  
  175. AUKMSG Message File Contents
  176. ============================
  177.  
  178. Message ID  Severity  Message Text                           
  179. AUK1001        0    BNCSYS command is running...           
  180. AUK1002        0    BNCSYS delayed to continue at &1...     
  181. AUK1003        0    LOCKOUT command is running...           
  182. AUK1004        0    ENDSYS command is running...           
  183. AUK1005        0    ENDSYS command completed...             
  184. AUK1006        0    SAVSYS command is running...           
  185. AUK1007        0    SAVSYS command completed...             
  186. AUK1008        0    SAVLIB LIB(*NONSYS) command is running...
  187. AUK1009        0    SAVLIB LIB(*NONSYS) command completed...
  188. AUK1010        0    SAVDLO command is running...           
  189. AUK1011        0    SAVDLO command completed               
  190. AUK1012        0    LOCKOUT command completed...           
  191. AUK1013        0    PWRDWNSYS command is running...       
  192. AUK1014        0    DSPTAP command is running...           
  193. AUK1015        0    DSPTAP command completed...           
  194. AUK1016        0    BNCSYS command completed...           
  195. AUK1017        0    SAVSECDTA command is running...
  196. AUK1018        0    SAVSECDTA command completed...
  197. AUK1019        0    SAVCFG command is running... 
  198. AUK1020        0    SAVCFG command completed... 
  199.  
  200. Field &1 in AUK1002 is *CHAR, 8 long.
  201.