ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

SBMJOB with command prompter

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • SBMJOB with command prompter

    My earlier thread on same topic, somehow i am not able to edit or reply. Hence, creating new topic.

    [ edit - original question]
    The requirement is to submit RSTOBJ command. When the call is made to SBMJOB, it should prompt for RSTOBJ command. Take all inputs. Here, one more requirement is to protect the RSTLIB parameter to say example ABCLIB. The RSTLIB paramter should be protected, ie. hardcoded to ABCLIB.
    Any suggestions or examples similar to above requirement ?
    [ /edit ]

    I have tried two options.

    Option 1. With passing the cmd value as RSTOBJ ?*RSTLIB(ABCLIB).
    Code:
    [COLOR=#0000FF]PGM
    
    DCL &CMD *CHAR 1024
    DCL &CMDLEN *INT 4 VALUE(1024)
    DCL &OPTIONS *CHAR 20
    DCL &OPTIONSLEN *INT 4 VALUE(20)
    DCL &OPTIONS *CHAR 20
    DCL &NEWCMD *CHAR 1024
    DCL &NEWCMDLENA *INT 4 VALUE(1024)
    DCL &NEWCMDLENC *INT 4 VALUE(1024)
    
    CHGVAR %SST(&OPTIONS 1 4) VALUE(X'00000001')
    CHGVAR %SST(&OPTIONS 5 1) VALUE('0')
    CHGVAR %SST(&OPTIONS 6 1) VALUE('1')
    CHGVAR %SST(&OPTIONS 7 1) VALUE('0')
    CHGVAR %SST(&OPTIONS 12 4) VALUE(X'00000000')
    CHGVAR %SST(&OPTIONS 16 5) VALUE(X'0000000000')
    
    
    CHGVAR &CMD VALUE('RSTOBJ ?*RSTLIB(ABCLIB)')
    
    
    CALL QCAPCMD PARM(&CMD &CMDLEN &OPTIONS &OPTIONSLEN +
    'CPOP0100' &NEWCMD &NEWCMDLENA &NEWCMDLENC +
    X'00000000')
    MONMSG CPF6801 EXEC(RETURN)
    SBMJOB CMD(CALL PGM(QCMDEXC) PARM(&NEWCMD +
    &NEWCMDLENA)) JOB(RSTOBJ#) JOBQ(QBATCH)
    
    ENDPGM [/COLOR]
    After calling above program, below is the prompt, which only displays "restore to library" parameter. All other input parameters are not displayed.

    Restore Object (RSTOBJ)

    Type choices, press Enter.

    Restore to library . . . . . . . > ABCLIB Name, *SAVLIB



    Option 2. With passing the cmd value will all parameters.
    Code:
    [COLOR=#0000FF]PGM
    
    DCL &CMD *CHAR 1024
    DCL &CMDLEN *INT 4 VALUE(1024)
    DCL &OPTIONS *CHAR 20
    DCL &OPTIONSLEN *INT 4 VALUE(20)
    DCL &OPTIONS *CHAR 20
    DCL &NEWCMD *CHAR 1024
    DCL &NEWCMDLENA *INT 4 VALUE(1024)
    DCL &NEWCMDLENC *INT 4 VALUE(1024)
    
    CHGVAR %SST(&OPTIONS 1 4) VALUE(X'00000001')
    CHGVAR %SST(&OPTIONS 5 1) VALUE('0')
    CHGVAR %SST(&OPTIONS 6 1) VALUE('1')
    CHGVAR %SST(&OPTIONS 7 1) VALUE('0')
    CHGVAR %SST(&OPTIONS 12 4) VALUE(X'00000000')
    
    CHGVAR %SST(&OPTIONS 16 5) VALUE(X'0000000000')
    
    CHGVAR &CMD VALUE('RSTOBJ +
    ??OBJ() +
    ??SAVLIB() +
    ??DEV() +
    ??OBJTYPE(*FILE) +
    ??VOL() +
    ??SEQNBR() +
    ??POSITION() +
    ??LABEL() +
    ??ENDOPT() +
    ??SAVF() +
    ??OPTION(*NEW) +
    ??FILEMBR() +
    ??MBROPT(*NEW) +
    ??SPLFDTA() +
    ??SAVDATE() +
    ??SAVTIME() +
    ??ALWOBJDIF(*ALL) +
    ??FRCOBJCVN() +
    ?*RSTLIB(ABCLIB) +
    ??OUTPUT(*PRINT) +
    ??MEDDFN() +
    ??OPTFILE() +
    ??RSTASPDEV() +
    ??RSTASP() +
    ??OUTFILE() +
    ??OUTMBR() +
    ??INFTYPE() +
    ??OMITLIB() +
    ??OMITOBJ()')
    
    CALL QCAPCMD PARM(&CMD &CMDLEN &OPTIONS &OPTIONSLEN +
    'CPOP0100' &NEWCMD &NEWCMDLENA &NEWCMDLENC +
    X'00000000')
    
    
    MONMSG CPF6801 EXEC(RETURN)
    SBMJOB CMD(CALL PGM(QCMDEXC) PARM(&NEWCMD +
    &NEWCMDLENA)) JOB(RSTOBJ#) JOBQ(QBATCH)
    
    ENDPGM [/COLOR]
    For this option2. we get the prompt for all parameters, however, it fails with below error.
    Code:
    [COLOR=#0000FF][FONT=courier new]Message . . . . : -CALL PGM(QCMDEXC) PARM('RSTOBJ ??OBJ(F0001)
    ??SAVLIB(TESTLIB) ??DEV(TAPLIB1) ??OBJTYPE(*FILE) ??VOL(MA2041) ??SEQNBR(345)
    ??POSITION(*N) ??LABEL(*N) ??ENDOPT(*N) ??SAVF(*N) ??OPTION(*NEW)
    ??FILEMBR(*N) ??MBROPT(*NEW) ??SPLFDTA(*N) ??SAVDATE(*N) ??SAVTIME(*N)
    ??ALWOBJDIF(*ALL) ??FRCOBJCVN(*N) ?*RSTLIB(ABCLIB) ??OUTPUT(*PRINT)
    ??MEDDFN(*N) ??OPTFILE(*N) ??RSTASPDEV(*N) ??RSTASP(*N) ??OUTFILE(*N)
    ??OUTMBR(*N) ??INFTYPE(*N) ??OMITLIB(*N) ??OMITOBJ(*N)' 1024)
    02/11/16 04:40:49.603159 QCANPARS QSYS 094F QCMD QSYS
    Message . . . . : String ' ' contains a character that is not
    valid. [/FONT][/COLOR]
    Any suggestions to resolve above issues ....Thanks.
    Last edited by gcraill; November 2, 2016, 09:20 PM.

  • #2
    I am questioning why you need all of the parameters from the RSTOBJ command, why not have a command with what you really need and then just submit a RSTOBj for that with the RSTLIB hardcoded?
    Greg Craill: "Life's hard - Get a helmet !!"

    Comment

    Working...
    X