/*================================================================================================*/ /* Source: cpytoifsc - Copy File to IFS */ /* */ /* Desc: This module is the CPP for command CPYTOIFS. */ /* */ /* Input parms: */ /* Object In */ /* Object Out */ /* Member In */ /* DB File Type */ /* PC FIle Type */ /* Stream File Option */ /* */ /* Output parms: */ /* None */ /* */ /* Compile Command: */ /* CRTBNDCL */ /* PGM(library/CPYTOIFSC) */ /* SRCFILE(library/QCLLESRC) */ /* SRCMBR(CPYTOIFSC) */ /* */ /*================================================================================================*/ /* Modification Log */ /*================================================================================================*/ /* BG357 04/22/2003 Bruce Guetzkow */ /* Source creation. */ /*================================================================================================*/ PGM PARM(&INOBJ &OUTOBJ &INMBR &DBFILETYPE &PCFILETYPE &STMFOPT) DCL VAR(&INOBJ) TYPE(*CHAR) LEN(20) DCL VAR(&OUTOBJ) TYPE(*CHAR) LEN(512) DCL VAR(&INMBR) TYPE(*CHAR) LEN(10) DCL VAR(&DBFILETYPE) TYPE(*CHAR) LEN(5) DCL VAR(&PCFILETYPE) TYPE(*CHAR) LEN(5) DCL VAR(&STMFOPT) TYPE(*CHAR) LEN(10) DCL VAR(&ENDLINFMT) TYPE(*CHAR) LEN(10) DCL VAR(&ERRMSG) TYPE(*CHAR) LEN(255) DCL VAR(&FMTOPT) TYPE(*CHAR) LEN(10) DCL VAR(&INFILE) TYPE(*CHAR) LEN(10) DCL VAR(&INLIB) TYPE(*CHAR) LEN(10) DCL VAR(&BUF) TYPE(*CHAR) LEN(4096) DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00') DCL VAR(&PATH) TYPE(*CHAR) LEN(512) DCL VAR(&RTNVALINT) TYPE(*CHAR) LEN(4) DCL VAR(&RTNVAL) TYPE(*CHAR) LEN(2) DCLF FILE(QAFDMBR) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ENDPGM)) /*================================================================================================*/ /* PARSE LIBRARY/FILE */ /*================================================================================================*/ CHGVAR VAR(&INFILE) VALUE(%SST(&INOBJ 1 10)) CHGVAR VAR(&INLIB) VALUE(%SST(&INOBJ 11 10)) /*================================================================================================*/ /* CHECK FOR DB FILE */ /*================================================================================================*/ CHKOBJ OBJ(&INLIB/&INFILE) OBJTYPE(*FILE) MBR(&INMBR) MONMSG MSGID(CPF0000) EXEC(DO) CHGVAR VAR(&ERRMSG) VALUE('Object "' *CAT &INLIB *TCAT '/' *CAT &INFILE *TCAT + '(' *CAT &INMBR *TCAT ')" does not exist.') SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&ERRMSG) MSGTYPE(*ESCAPE) GOTO CMDLBL(ENDPGM) ENDDO /*================================================================================================*/ /* CHECK FOR IFS FILE */ /*================================================================================================*/ IF COND(&STMFOPT *EQ '*CREATE') THEN(DO) CHGVAR VAR(&PATH) VALUE(&OUTOBJ *TCAT &NULL) CALLPRC PRC('stat') PARM(&PATH &BUF) RTNVAL(%BIN(&RTNVALINT 1 4)) CHGVAR VAR(&RTNVAL) VALUE(%BIN(&RTNVALINT)) IF COND(&RTNVAL *EQ '00') THEN(DO) CHGVAR VAR(&ERRMSG) VALUE('Object "' *CAT &OUTOBJ *TCAT '" already exists, + can not be created.') SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&ERRMSG) MSGTYPE(*ESCAPE) GOTO CMDLBL(ENDPGM) ENDDO ENDDO /*================================================================================================*/ /* DETERMINE INPUT FILE CHARACTERISTICS */ /*================================================================================================*/ DLTF FILE(QTEMP/QAFDMBR) MONMSG MSGID(CPF0000) DSPFD FILE(&INLIB/&INFILE) TYPE(*MBR) OUTPUT(*OUTFILE) OUTFILE(QTEMP/QAFDMBR) OVRDBF FILE(QAFDMBR) TOFILE(QTEMP/QAFDMBR) RCVF MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(ENDPGM)) /*================================================================================================*/ /* UPDATE PARAMETERS VALUES */ /*================================================================================================*/ IF COND(&INLIB = '*LIBL ' *OR &INLIB = '*CURLIB ') THEN(CHGVAR + VAR(&INLIB) VALUE(&MBLIB)) IF COND(&INMBR = '*FIRST ') THEN(CHGVAR VAR(&INMBR) VALUE(&MBNAME)) IF COND(&PCFILETYPE = '*WIN ') THEN(CHGVAR VAR(&ENDLINFMT) VALUE('*CRLF')) IF COND(&PCFILETYPE = '*UNIX') THEN(CHGVAR VAR(&ENDLINFMT) + VALUE('*FIXED')) IF COND(&DBFILETYPE = '*DTA ') THEN(CHGVAR VAR(&FMTOPT) VALUE('*NOCHK')) IF COND(&DBFILETYPE = '*SRC ') THEN(CHGVAR VAR(&FMTOPT) VALUE('*CVTSRC')) IF COND(&STMFOPT = '*CREATE ') THEN(CHGVAR VAR(&STMFOPT) + VALUE('*REPLACE')) /*================================================================================================*/ /* CREATE WORKFILE */ /*================================================================================================*/ DLTF FILE(QTEMP/WORKFILE) MONMSG MSGID(CPF0000) CRTPF FILE(QTEMP/WORKFILE) RCDLEN(&MBMXRL) SIZE(*NOMAX) /*================================================================================================*/ /* COPY FILE TO IFS */ /*================================================================================================*/ CPYF FROMFILE(&INLIB/&INFILE) TOFILE(QTEMP/WORKFILE) FROMMBR(&INMBR) + MBROPT(*REPLACE) FROMRCD(1) FMTOPT(&FMTOPT) CPYTOSTMF FROMMBR('/qsys.lib/qtemp.lib/workfile.file/workfile.mbr') + TOSTMF(&OUTOBJ) STMFOPT(&STMFOPT) STMFCODPAG(*PCASCII) + ENDLINFMT(&ENDLINFMT) DLTF FILE(QTEMP/WORKFILE) MONMSG MSGID(CPF0000) /*================================================================================================*/ /* CHECK FOR IFS FILE */ /*================================================================================================*/ CHGVAR VAR(&PATH) VALUE(&OUTOBJ *TCAT &NULL) CALLPRC PRC('stat') PARM(&PATH &BUF) RTNVAL(%BIN(&RTNVALINT 1 4)) CHGVAR VAR(&RTNVAL) VALUE(%BIN(&RTNVALINT)) IF COND(&RTNVAL *NE '00') THEN(DO) CHGVAR VAR(&ERRMSG) VALUE('Object "' *CAT &OUTOBJ *TCAT '" not created.') SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&ERRMSG) MSGTYPE(*ESCAPE) GOTO CMDLBL(ENDPGM) ENDDO ENDPGM: ENDPGM