× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi guys,
        have you seen the coding necessary to put a VCP on a save/restore
command, disentangling the variable format data passed by the CP to the VCP
is horrendous (see below) - and you will probably need to re-visit the VCP
each time you upgrade.  I may have to bite the bullit and implement this,
but I was hoping that there may be a communications or routing entry in the
QCMN *sbs, or similar, that could be tweaked to reject all savrstlib
requests - much less effort to set up and no residual code-maintenance
issues.  

        It is my belief that the savrstlib process invokes a job on the
target machine, can we get at the jobd or some other necessary object - the
user profile the invoked job runs under?  Or what about the command/program
it uses to restore the data on the target machine ?

Regards,
        Jeff B.

N.B.  Disclaimer: The code below is included as an example of a more complex
VCP only.  It has NOT been thoroughly tested as you can see from the
inclusion of some code to assist debug/testing; it has not been implemented
anywhere, I do not advise that you do.

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*    M i d a s - K a p i t i   I n t e r n a t i o n a l   L t d    */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Application  : MKI Library Management                             */
/* Program Id . : QCKRSAVRL                                          */
/* Program Name : Save Restore Library Command Validity Checker      */
/* Version  . . : 01.00                                              */
/* Author . . . : Jeffrey E Bull                                     */
/* Date . . . . : Apr/2000                                           */
/* Processing . :                                                    */
/* INITIALISATION                                                    */
/*    Trap Unmonitored Error Messages                                */
/*    Check if user is a KLIBMGT user                                */
/* PROCESSING                                                        */
/*    Unpack the variable-format command-string &CMD                 */
/*       LIB number of elements                                      */
/*       LIB(n) loop control                                         */
/*          LIB(n) field-len                                         */
/*          LIB(n) data                                              */
/*       RMTLOCNAME data                                             */
/*       STRLIB field-len                                            */
/*       STRLIB data                                                 */
/*       OMITLIB number of elements                                  */
/*       OMITLIB(n) loop control                                     */
/*          OMITLIB(n) field-len                                     */
/*          OMITLIB(n) data                                          */
/*       OMITOBJ number of objects                                   */
/*       Bypass object-start off-sets                                */
/*       Object(n) loop control                                      */
/*          Bypass object(n) name-delimiter                          */
/*          Object(n) name data                                      */
/*          Object(n) library data                                   */
/*          Object(n) type data                                      */
/*         Remove leading space                                      */
/*       TGTRLS data                                                 */
/*       PRECHK data                                                 */
/*       SAVACT data                                                 */
/*       SAVACTWAIT - 4-byte-binary value                            */
/*       SAVACTMSGQ data                                             */
/*       ACCPTH data                                                 */
/*       SAVFDTA data                                                */
/*       STG data                                                    */
/*       OPTION data                                                 */
/*       MBROPT data                                                 */
/*       ALWOBJDIF data                                              */
/*       RSTLIB field-len                                            */
/*       RSTLIB data                                                 */
/*       RSTASP 2-byte-binary value                                  */
/*    Resolve a logical value of RSTLIB                              */
/*    Is RSTLIB a KREL controlled library ?                          */
/*    Is SAVRSTLIB authorised ?                                      */
/*       Disallowed restore message                                  */
/* UNMONITORED ERROR HANDLING                                        */
/*    Process Diagnostic Messages                                    */
/*    Put Keyword(value)'s into Joblog                               */
/*    Print Diagnostics                                              */
/*    Process Exception Message                                      */
/* PROGRAM EXIT                                                      */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Modification History.                                             */
/* ---------------------                                             */
/* Version   Date    Description                                     */
/* xx.xx   dd/mm/yy  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/* N.B. */
/* These 'dummy' fields in the parameter list are there to provide   */
/* a valid call from the Command Handler Program. The command data   */
/* is ALL supplied in &CMD and is variable in format ! i.e. the      */
/* field lengths, element counters etc need to be processed and the  */
/* actual parameter values picked out - a lovely old job.            */

             PGM        PARM(&CMD &DUM1 &DUM2 &DUM3 &DUM4 &DUM5 +
                          &DUM6 &DUM7 &DUM8 &DUM9 &DUM10 &DUM11 +
                          &DUM12 &DUM13 &DUM14 &DUM15 &DUM16 &DUM17 +
                          &DUM18)

/* Input Parameters */
             DCL        VAR(&CMD)      TYPE(*CHAR) LEN(9999)

             DCL        VAR(&DUM1)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM2)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM3)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM4)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM5)      TYPE(*CHAR) LEN(1)

             DCL        VAR(&DUM6)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM7)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM8)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM9)      TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM10)     TYPE(*CHAR) LEN(1)

             DCL        VAR(&DUM11)     TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM12)     TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM13)     TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM14)     TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM15)     TYPE(*CHAR) LEN(1)

             DCL        VAR(&DUM16)     TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM17)     TYPE(*CHAR) LEN(1)
             DCL        VAR(&DUM18)     TYPE(*CHAR) LEN(1)

/* Call Parameters extracted from variable format &CMD */
             DCL        VAR(&LIB)        TYPE(*CHAR) LEN(3000)
             DCL        VAR(&RMTLOCNAME) TYPE(*CHAR) LEN(17)
             DCL        VAR(&STRLIB)     TYPE(*CHAR) LEN(10)
             DCL        VAR(&OMITLIB)    TYPE(*CHAR) LEN(3000)
             DCL        VAR(&OMITOBJ)    TYPE(*CHAR) LEN(3000)

             DCL        VAR(&TGTRLS)     TYPE(*CHAR) LEN(10)
             DCL        VAR(&PRECHK)     TYPE(*CHAR) LEN(4)
             DCL        VAR(&SAVACT)     TYPE(*CHAR) LEN(8)
             DCL        VAR(&SAVACTWAIT) TYPE(*CHAR) LEN(11)
             DCL        VAR(&SAVACTMSGQ) TYPE(*CHAR) LEN(20)

             DCL        VAR(&ACCPTH)     TYPE(*CHAR) LEN(4)
             DCL        VAR(&SAVFDTA)    TYPE(*CHAR) LEN(4)
             DCL        VAR(&STG)        TYPE(*CHAR) LEN(5)
             DCL        VAR(&OPTION)     TYPE(*CHAR) LEN(5)
             DCL        VAR(&MBROPT)     TYPE(*CHAR) LEN(6)

             DCL        VAR(&ALWOBJDIF)  TYPE(*CHAR) LEN(5)
             DCL        VAR(&RSTLIB)     TYPE(*CHAR) LEN(10)
             DCL        VAR(&RSTASP)     TYPE(*CHAR) LEN(7)
             DCL        VAR(&FRCOBJCVN)  TYPE(*CHAR) LEN(11)

/* Work fields */
             DCL        VAR(&GRPPRF)    TYPE(*CHAR) LEN(10)
             DCL        VAR(&IDX)       TYPE(*DEC)  LEN(4 0)
             DCL        VAR(&ITMCNT)    TYPE(*DEC)  LEN(4 0)
             DCL        VAR(&KRL)       TYPE(*CHAR) LEN(10)
             DCL        VAR(&KRLIND)    TYPE(*CHAR) LEN(1)

             DCL        VAR(&MGTUSR)    TYPE(*CHAR) LEN(10) +
                                        VALUE('KLIBMGT')
             DCL        VAR(&MSGDTA)    TYPE(*CHAR) LEN(512)
             DCL        VAR(&MSGF)      TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGID)     TYPE(*CHAR) LEN(7)

             DCL        VAR(&MSGFLIB)   TYPE(*CHAR) LEN(10)
             DCL        VAR(&SST)       TYPE(*DEC)  LEN(4 0)
             DCL        VAR(&SUPGRPPRF) TYPE(*CHAR) LEN(150)
             DCL        VAR(&WC1)       TYPE(*CHAR) LEN(1)
             DCL        VAR(&WC2)       TYPE(*CHAR) LEN(2)
             DCL        VAR(&WC10)      TYPE(*CHAR) LEN(10)
             DCL        VAR(&WC0160)    TYPE(*CHAR) LEN(160)

             DCL        VAR(&WD2)       TYPE(*DEC)  LEN(2 0)
             DCL        VAR(&WD3)       TYPE(*DEC)  LEN(3 0)
             DCL        VAR(&WD5A)      TYPE(*DEC)  LEN(5 0)
             DCL        VAR(&WD5B)      TYPE(*DEC)  LEN(5 0)

/* INITIALISATION */
   /* Trap Unmonitored Error Messages */
             MONMSG     MSGID(CPF0000 MCH0000) EXEC(GOTO +
                          CMDLBL(LBL900))

             RTVUSRPRF  USRPRF(*CURRENT) GRPPRF(&GRPPRF) +
                          SUPGRPPRF(&SUPGRPPRF)
             CHGVAR     VAR(&WC0160) VALUE(&GRPPRF || &SUPGRPPRF)

/* Check if user is a KLIBMGT user */
             CHGVAR     VAR(&WD2) VALUE(0)
 LBL010:     CHGVAR     VAR(&WD2) VALUE(&WD2 + 1)
             IF         COND(&WD2 *GT 16) THEN(GOTO CMDLBL(LBL100))
             CHGVAR     VAR(&WD3) VALUE((&WD2 * 10) - 9)
             IF         COND(%SST(&WC0160 &WD3 10) = &MGTUSR) +
                          THEN(GOTO CMDLBL(LBL990)) /* Allow */
             GOTO       CMDLBL(LBL010)

/* PROCESSING */

/* Unpack the variable-format command-string &CMD */
/* (Objective is to extract SAVLIB and RSTLIB values) */
/* Hold-on-tight if you're working on this for the first time */

 LBL100:     CHGVAR     VAR(&IDX) VALUE(1)

   /* LIB number of elements */
 LIB:        CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)
             CHGVAR     VAR(&ITMCNT) VALUE(0)

   /* LIB(n) loop control */
 LIB2:       CHGVAR     VAR(&ITMCNT) VALUE(&ITMCNT + 1)
             IF         COND(&ITMCNT *GT &WD5A) THEN(GOTO +
                          CMDLBL(RMTLOCNAME))

      /* LIB(n) field-len */
             CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5B)

      /* LIB(n) data */
             CHGVAR     VAR(&SST) VALUE((&ITMCNT * 10) - 9)
             CHGVAR     VAR(%SST(&LIB &SST 10)) +
                          VALUE(%SST(&CMD &IDX &WD5B))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)
             GOTO       CMDLBL(LIB2)

   /* RMTLOCNAME data */
 RMTLOCNAME: CHGVAR     VAR(&RMTLOCNAME) VALUE(%SST(&CMD &IDX 17))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 17)

   /* STRLIB field-len */
 STRLIB:     CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)

   /* STRLIB data */
             CHGVAR     VAR(&STRLIB) VALUE(%SST(&CMD &IDX &WD5A))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)

   /* OMITLIB number of elements */
 OMITLIB:    CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)
             CHGVAR     VAR(&ITMCNT) VALUE(0)

   /* OMITLIB(n) loop control */
 OMITLIB2:   CHGVAR     VAR(&ITMCNT) VALUE(&ITMCNT + 1)
             IF         COND(&ITMCNT *GT &WD5A) THEN(GOTO +
                          CMDLBL(OMITOBJ))

      /* OMITLIB(n) field-len */
             CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5B)

      /* OMITLIB(n) data */
             CHGVAR     VAR(&SST) VALUE((&ITMCNT * 10) - 9)
             CHGVAR     VAR(%SST(&OMITLIB &SST 10)) +
                          VALUE(%SST(&CMD &IDX &WD5B))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)
             GOTO       CMDLBL(OMITLIB2)

   /* OMITOBJ number of objects */
 OMITOBJ:    CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)

   /* Bypass object-start off-sets */
             CHGVAR     VAR(&IDX) VALUE(&IDX + (&WD5A * 2))

   /* Object(n) loop control */
             CHGVAR     VAR(&ITMCNT) VALUE(0)
 OMITOBJ2:   CHGVAR     VAR(&ITMCNT) VALUE(&ITMCNT + 1)
             IF         COND(&ITMCNT *GT &WD5A) THEN(GOTO +
                          CMDLBL(OMITOBJ3))
      /* Bypass object-name-delimiter */
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
      /* Object(n) name data */
             CHGVAR     VAR(&OMITOBJ) VALUE(&OMITOBJ *BCAT '(' *CAT +
                          %SST(&CMD &IDX 10))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)
      /* Object(n) library data */
             CHGVAR     VAR(&OMITOBJ) VALUE(&OMITOBJ *BCAT +
                          %SST(&CMD &IDX 10))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)
      /* Object(n) type data */
             CHGVAR     VAR(&OMITOBJ) VALUE(&OMITOBJ *BCAT %SST(&CMD +
                          &IDX 7) *TCAT ')')
             CHGVAR     VAR(&IDX) VALUE(&IDX + 7)
             GOTO       CMDLBL(OMITOBJ2)
      /* Remove leading space */
 OMITOBJ3:   IF         COND(%SST(&OMITOBJ 1 1) *EQ ' ') THEN(CHGVAR +
                          VAR(&OMITOBJ) VALUE(%SST(&OMITOBJ 2 1999)))

   /* TGTRLS data */
 TGTRLS:     CHGVAR     VAR(&TGTRLS) VALUE(%SST(&CMD &IDX 10))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)

   /* PRECHK data */
 PRECHK:     CHGVAR     VAR(&PRECHK) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* SAVACT data */
 SAVACT:     CHGVAR     VAR(&SAVACT) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* SAVACTWAIT - 4-byte-binary value */
 SAVACTWAIT: CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)
             CHGVAR     VAR(&SAVACTWAIT) VALUE(&WD5A)

   /* SAVACTMSGQ data */
 SAVACTMSGQ: CHGVAR     VAR(&SAVACTMSGQ) VALUE(%SST(&CMD &IDX 20))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 20)

   /* ACCPTH data */
 ACCPTH:     CHGVAR     VAR(&ACCPTH) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* SAVFDTA data */
 SAVFDTA:    CHGVAR     VAR(&SAVFDTA) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* STG data */
 STG:        CHGVAR     VAR(&STG) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* OPTION data */
 OPTION:     CHGVAR     VAR(&OPTION) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* MBROPT data */
 MBROPT:     CHGVAR     VAR(&MBROPT) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* ALWOBJDIF data */
 ALWOBJDIF:  CHGVAR     VAR(&ALWOBJDIF) VALUE(%SST(&CMD &IDX 1))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 1)

   /* RSTLIB field-len */
 RSTLIB:     CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)

   /* RSTLIB data */
             CHGVAR     VAR(&RSTLIB) VALUE(%SST(&CMD &IDX &WD5A))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 10)

   /* RSTASP 2-byte-binary value */
 RSTASP:     CHGVAR     VAR(&WC2) VALUE(%SST(&CMD &IDX 2))
             CHGVAR     VAR(&IDX) VALUE(&IDX + 2)
             CVTBINDEC  FROMBIN(&WC2) TODEC(&WD5A)
             CHGVAR     VAR(&RSTASP) VALUE(&WD5A)

   /* Resolve a logical value of RSTLIB  */
             IF         COND(&RSTLIB *EQ '*SAVLIB') THEN(CHGVAR +
                          VAR(&RSTLIB) VALUE(%SST(&LIB 1 10)))

   /* KREL Library(n) loop Initialisation */
             RTVDTAARA  DTAARA(*LIBL/QCKRKREL) RTNVAR(&KRL)
             OVRDBF     FILE(KZCOMP01) TOFILE(&KRL/KZCOMP01) +
                          MBR(*FIRST) OVRSCOPE(*ACTGRPDFN)
             CHGVAR     VAR(&KRLIND) VALUE('0')
             CHGVAR     VAR(&ITMCNT) VALUE(0)

   /* KREL Library(n) loop control */
 KREL:       CHGVAR     VAR(&ITMCNT) VALUE(&ITMCNT + 1)
             CHGVAR     VAR(&SST) VALUE((&ITMCNT * 10) - 9)
             CHGVAR     VAR(&WC10) VALUE(%SST(&LIB &SST 10))
             IF         COND(&WC10 *EQ '          ') THEN(GOTO +
                          CMDLBL(KREL2)) /* Exit Loop */

      /* Library-object check */
             CHKOBJ     OBJ(QSYS/&WC10) OBJTYPE(*LIB)
             MONMSG     MSGID(CPF9802 CPF9815 CPF9830 CPF9899) +
                          EXEC(GOTO CMDLBL(LBL900)) /* Errors */
             MONMSG     MSGID(CPF9801 CPF9810)

      /* Is Lib a KREL controlled library ? */
             CALL       PGM(*LIBL/KX504R) PARM(&WC10 &WC1)
             IF         COND(&WC1 *EQ '1') THEN(DO)
             SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000 +
                          SAVRSTLIB(' *TCAT &WC10 *TCAT ') is a +
                          protected Master Product library.') +
                          TOPGMQ(*PRV) MSGTYPE(*DIAG)
             CHGVAR     VAR(&KRLIND) VALUE('1')
             ENDDO
             GOTO       CMDLBL(KREL)

      /* KREL Loop Exit Procedure */
 KREL2:      DLTOVR     FILE(KZCOMP01) LVL(*ACTGRPDFN)
             RCLRSC

      /* Disallowed restore escape message */
             IF         COND(&KRLIND *EQ '1') THEN(DO)
             SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
             ENDDO

             GOTO       CMDLBL(LBL990)

/* UNMONITORED ERROR HANDLING */
   /* Process Diagnostic Messages */
 LBL900:     RCVMSG     MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&MSGFLIB)
             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(LBL910))
             IF         COND(&MSGID = '       ') THEN(GOTO +
                          CMDLBL(LBL910))
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) TOPGMQ(*PRV) MSGTYPE(*DIAG)
             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(LBL910))
             GOTO       CMDLBL(LBL900)

   /* Put Keyword(value)'s into Joblog */
 LBL910:     SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('LIB(' |< &LIB |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('RMTLOCNAME(' |< &RMTLOCNAME |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('STRLIB(' |< &STRLIB |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('OMITLIB(' |< &OMITLIB |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('OMITOBJ(' |< &OMITOBJ |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('TGTRLS(' |< &TGTRLS |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('PRECHK(' |< &PRECHK |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('SAVACT(' |< &SAVACT |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('SAVACTWAIT(' |< &SAVACTWAIT |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('SAVACTMSGQ(' |< &SAVACTMSGQ |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('ACCPTH(' |< &ACCPTH |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('SAVFDTA(' |< &SAVFDTA |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('STG(' |< &STG |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('OPTION(' |< &OPTION |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('MBROPT(' |< &MBROPT |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('ALWOBJDIF(' |< &ALWOBJDIF |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('RSTLIB(' |< &RSTLIB |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('RSTASP(' |< &RSTASP |< ')')
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('FRCOBJCVN(' |< &FRCOBJCVN |< ')')

   /* Print Diagnostics */
             OVRPRTF    FILE(QPJOBLOG) HOLD(*YES)
             DSPJOB     JOB(*) OUTPUT(*PRINT) OPTION(*JOBLOG)
             MONMSG     MSGID(CPF0000)
             OVRPRTF    FILE(QPPGMDMP) HOLD(*YES)
             DMPCLPGM
             MONMSG     MSGID(CPF0000)
             DLTOVR     FILE(QPJOBLOG)
             MONMSG     MSGID(CPF0000)
             DLTOVR     FILE(QPPGMDMP)
             MONMSG     MSGID(CPF0000)

   /* Process Exception Message */
             RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&MSGFLIB)
             MONMSG     MSGID(CPF0000)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) TOPGMQ(*PRV) MSGTYPE(*ESCAPE)
             MONMSG     MSGID(CPF0000)

/* Program Exit */
 LBL990:     RETURN
             ENDPGM


-----Original Message-----
From: Douglas Handy [mailto:dhandy1@bellsouth.net]
Sent: Thursday, June 22, 2000 6:54 PM
To: MIDRANGE-L@midrange.com
Subject: Re: SAVRSTLIB


Al,

>If I'm not mistaken, once you issue the SAVRSTLIB command on the source 
>system, everything else happens under the covers.

Hmm, I guess you are right again.  This means you'd have to put the
VCP on each target machine which makes implementation and maintenance
much harder. 

Sorry,
Doug
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.