Sign in

docs Examples

unzipclp

unzipclp

             PGM        PARM(&ZIPFILE &FILE &ADDPATH &REPLACE +
                          &PASSWORD)
             DCL        VAR(&ZIPFILE) TYPE(*CHAR) LEN(128)
             DCL        VAR(&FILE) TYPE(*CHAR) LEN(128)
             DCL        VAR(&ADDPATH) TYPE(*CHAR) LEN(4)
             DCL        VAR(&REPLACE) TYPE(*CHAR) LEN(7)
             DCL        VAR(&PASSWORD) TYPE(*CHAR) LEN(32)
 
             DCL        VAR(&CMDSTR) TYPE(*CHAR) LEN(3000) +
                          VALUE('CALL PGM(MINIUNZ400) PARM(')
             DCL        VAR(&Q) TYPE(*CHAR) LEN(1) VALUE('''')
             DCL        VAR(&ERR) TYPE(*CHAR) LEN(7)
             DCL        VAR(&ERR_DEC) TYPE(*DEC) LEN(10)
 
             /* QtmhGetEnv parameters */
             DCL        VAR(&RCVVAR) TYPE(*CHAR) LEN(100) /* output */
             DCL        VAR(&RCVLEN_B) TYPE(*CHAR) LEN(4) +
                          VALUE(X'00000064') /* input  */
             DCL        VAR(&RSPLEN_B) TYPE(*CHAR) LEN(4)   /* output */
             DCL        VAR(&RSPLEN) TYPE(*DEC) LEN(3)
             DCL        VAR(&REQVAR) TYPE(*CHAR) LEN(20) +
                          VALUE(MINIUNZ_RTNCDE) /* input  */
             DCL        VAR(&REQLEN_B) TYPE(*CHAR) LEN(4) +
                          VALUE(X'0000000E') /* input  */
             DCL        VAR(&QUSEC) TYPE(*CHAR) LEN(16) +
                          VALUE(X'00100000000000000000000000000000') +
                          /* input/output  */
             /* QUSEC structure */
             DCL        VAR(&QUSBAVL_B) TYPE(*CHAR) LEN(4)  /* output */
             DCL        VAR(&QUSBAVL) TYPE(*DEC) LEN(3)
 
             /* Construct command string to pass QCMDEXC */
 NEXT:       IF         COND(&ADDPATH = '*YES') THEN(CHGVAR +
                          VAR(&CMDSTR) VALUE(&CMDSTR |< &Q || '-x' || &Q))
             ELSE       CMD(CHGVAR VAR(&CMDSTR) VALUE(&CMDSTR |< &Q +
                          || '-e' || &Q))
 
             IF         COND(&REPLACE = '*YES') THEN(CHGVAR +
                          VAR(&CMDSTR) VALUE(&CMDSTR |> &Q || '-o' +
                          || &Q))
 
             IF         COND(&PASSWORD *NE ' ') THEN(CHGVAR +
                          VAR(&CMDSTR) VALUE(&CMDSTR |> &Q || '-p' +
                          || &Q || ' ' || &Q |< &PASSWORD |< &Q))
 
             IF         COND(&FILE *NE '*ALL') THEN(CHGVAR +
                          VAR(&CMDSTR) VALUE(&CMDSTR |> &Q |< +
                          &ZIPFILE |< &Q || ' ' || &Q |< &FILE |< +
                          &Q |< ')'))
             ELSE       CMD(CHGVAR VAR(&CMDSTR) VALUE(&CMDSTR |> &Q +
                          |< &ZIPFILE |< &Q || ')'))
 
             /* Call miniunz via QCMDEXC */
/*           SNDPGMMSG  MSG(&CMDSTR)            */
             CALL       PGM(QCMDEXC) PARM(&CMDSTR 300)
             MONMSG     MSGID(CPF0000) EXEC(DO)
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('Command +
                          failed. QCMDEXC returned unexpected +
                          error.') MSGTYPE(*ESCAPE)
             GOTO       CMDLBL(EXIT)
             ENDDO
 
             /* Get environment variable */
             CALLPRC    PRC('QtmhGetEnv') PARM(&RCVVAR &RCVLEN_B +
                          &RSPLEN_B &REQVAR &REQLEN_B &QUSEC)
 
             CHGVAR     VAR(&QUSBAVL_B) VALUE(%SST(&QUSEC 5 4))
             CHGVAR     VAR(&QUSBAVL) VALUE(%BIN(&QUSBAVL_B))
             IF         COND(&QUSBAVL > 0) THEN(DO)
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('QtmhGetEnv returned ' || +
                          %SST(&QUSEC 9 7) |< '.') MSGTYPE(*ESCAPE)
             GOTO       CMDLBL(EXIT)
             ENDDO
 
             CHGVAR     VAR(&RSPLEN) VALUE(%BIN(&RSPLEN_B))
             IF         COND(&RSPLEN < 1) THEN(DO)
             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('QtmhGetEnv returned invalid +
                          length (smaller than 1).') MSGTYPE(*ESCAPE)
             GOTO       CMDLBL(EXIT)
             ENDDO
 
             /* Examine environment variable (exit status of mnizip) */
             CHGVAR     VAR(&ERR) VALUE(%SST(&RCVVAR 1 &RSPLEN))
             CHGVAR     VAR(&ERR_DEC) VALUE(&ERR)
             IF         COND(&ERR_DEC = 0) THEN(SNDPGMMSG +
                          MSGID(CPF9898) MSGF(QCPFMSG) +
                          MSGDTA('Command completed'))
             ELSE       CMD(SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('Command failed. See low-level +
                          message for detail.') MSGTYPE(*ESCAPE))
 
 EXIT:       ENDPGM