PGM PARM(&FILLIBLIB &FRMADDR &TOADDR &TOPASS + &USER &PASSWRD &RES) /*-------------------------------------------------------------------*/ /* SNDFILCL : ファイルの FTP 転送 */ /* */ /* 2020/12/09 作成 */ /*-------------------------------------------------------------------*/ DCL VAR(&RES) TYPE(*CHAR) LEN(1) DCL VAR(&FILLIBLIB) TYPE(*CHAR) LEN(20) DCL VAR(&FILE) TYPE(*CHAR) LEN(10) DCL VAR(&FILLIB) TYPE(*CHAR) LEN(10) DCL VAR(&FRMADDR) TYPE(*CHAR) LEN(15) DCL VAR(&TOADDR) TYPE(*CHAR) LEN(15) DCL VAR(&FROMPASS) TYPE(*CHAR) LEN(128) DCL VAR(&TODIR) TYPE(*CHAR) LEN(128) DCL VAR(&TOPASS) TYPE(*CHAR) LEN(128) DCL VAR(&USER) TYPE(*CHAR) LEN(13) DCL VAR(&PASSWRD) TYPE(*CHAR) LEN(13) DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&STSMSG) TYPE(*CHAR) LEN(132) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&TOPGMQ) TYPE(*CHAR) LEN(10) DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10) + VALUE('*ESCAPE ') DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ DCL VAR(&ERR) TYPE(*CHAR) LEN(1) DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) /*( 環境の取得 )*/ RTVJOBA TYPE(&TYPE) IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ') ENDDO /* バッチ */ ELSE CMD(DO) /* 対話式 */ CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ') ENDDO /* 対話式 */ /*( パラメータの取得 )*/ CHGVAR VAR(&RES) VALUE('E') CHGVAR VAR(&FILE) VALUE(%SST(&FILLIBLIB 01 10)) CHGVAR VAR(&FILLIB) VALUE(%SST(&FILLIBLIB 11 10)) /*( パラメータの検査 )*/ IF COND(%SST(&PASSWRD 1 5) *EQ '*NONE') THEN(DO) CHGVAR VAR(&MSG) + VALUE(' パスワードが指定されていません。 ') GOTO SNDMSG ENDDO /******************/ /* SEND: FTP 送信 */ /******************/ /**************************************************/ /* (2) QTEMP に保管記述ファイルを作成する */ /**************************************************/ CHKOBJ OBJ(QTEMP/INPUT) OBJTYPE(*FILE) MONMSG MSGID(CPF9800) EXEC(DO) CRTSRCPF FILE(QTEMP/INPUT) RCDLEN(92) IGCDTA(*YES) + CCSID(65535) AUT(*ALL) ENDDO /*( INPUT の作成 )*/ CHKOBJ OBJ(QTEMP/INPUT) OBJTYPE(*FILE) MBR(&FILE) MONMSG MSGID(CPF9800) EXEC(DO) ADDPFM FILE(QTEMP/INPUT) MBR(&FILE) ENDDO CLRPFM FILE(QTEMP/INPUT) MBR(&FILE) OVRDBF FILE(INPUT) TOFILE(QTEMP/INPUT) MBR(&FILE) + SECURE(*YES) OVRSCOPE(*JOB) CALL PGM(QUATTRO/ADDINPUT) PARM(&FILE &FRMADDR + &FROMPASS &TOADDR &TOPASS &USER &PASSWRD + '*IFS') DLTOVR FILE(INPUT) LVL(*JOB) /*( OUTPUT の作成 )*/ CHKOBJ OBJ(QTEMP/OUTPUT) OBJTYPE(*FILE) MONMSG MSGID(CPF9800) EXEC(DO) CRTSRCPF FILE(QTEMP/OUTPUT) RCDLEN(92) IGCDTA(*YES) + CCSID(65535) AUT(*ALL) ENDDO CHKOBJ OBJ(QTEMP/OUTPUT) OBJTYPE(*FILE) MBR(&FILE) MONMSG MSGID(CPF9800) EXEC(DO) ADDPFM FILE(QTEMP/OUTPUT) MBR(&FILE) ENDDO CLRPFM FILE(QTEMP/OUTPUT) MBR(&FILE) /*******************************************/ /* (3) FTP で保管ファイルを転送する */ /*******************************************/ CHGVAR VAR(&STSMSG) VALUE(' ファイル ' *CAT &FILLIB + *TCAT '/' *CAT &FILE *TCAT + ' を FTP で転送中です。 ') SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&STSMSG) + TOPGMQ(*EXT) MSGTYPE(*STATUS) CHGVAR VAR(&TOPASS) VALUE(&TODIR *TCAT &FILE *TCAT + '.SAV') OVRDBF FILE(INPUT) TOFILE(QTEMP/INPUT) MBR(&FILE) + SECURE(*YES) OVRSCOPE(*JOB) OVRDBF FILE(OUTPUT) TOFILE(QTEMP/OUTPUT) MBR(&FILE) + SECURE(*YES) OVRSCOPE(*JOB) FTP RMTSYS(*INTNETADR) INTNETADR(&TOADDR) DLTOVR FILE(INPUT OUTPUT) LVL(*JOB) CHGVAR VAR(&RES) VALUE(' ') /* 成功を報告 */ RETURN APIERR: CHGVAR VAR(&MSGID) VALUE(%SST(&APIERR 9 7)) CHGVAR VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100)) CHGVAR VAR(&MSGF) VALUE('QCPFMSG ') CHGVAR VAR(&MSGFLIB) VALUE('QSYS ') GOTO SNDMSG ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) + MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + SNDMSGFLIB(&MSGFLIB) SNDMSG: IF COND(&MSGID *EQ ' ') THEN(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) + TOMSGQ(&TOPGMQ) MSGTYPE(&MSGTYPE) MONMSG MSGID(CPF2400) EXEC(RETURN) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) + MSGTYPE(&MSGTYPE) MONMSG MSGID(CPF2400) EXEC(RETURN) ENDDO ENDPGM