PGM PARM(&FILFILLIB &CCSID) /*---------------------------------------------------------*/ /* RTVCCSID : ファィルの CCSID の検索 */ /*---------------------------------------------------------*/ DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) + VALUE('QCPFMSG ') DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) + VALUE('*LIBL ') DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&FILFILLIB) TYPE(*CHAR) LEN(20) DCL VAR(&FILE) TYPE(*CHAR) LEN(10) DCL VAR(&FILLIB) TYPE(*CHAR) LEN(10) DCL VAR(&CCSID) TYPE(*DEC) LEN(5 0) DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(512) DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) DCL VAR(&CCSID1) TYPE(*DEC) LEN(7 0) /* FILE + CCSID */ DCL VAR(&RTNNAM) TYPE(*CHAR) LEN(20) /* RETURNED + FILE NAME */ DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA TYPE(&TYPE) CHGVAR VAR(&FILE) VALUE(%SST(&FILFILLIB 01 10)) CHGVAR VAR(&FILLIB) VALUE(%SST(&FILFILLIB 11 10)) CHGVAR VAR(%BIN(&RCVLEN)) VALUE(512) CALL PGM(QDBRTVFD) PARM(&RCVVAR &RCVLEN &RTNNAM + 'FILD0200' &FILFILLIB '*FIRST ' '0' + '*FILETYPE' '*INT' &APIERR) /*( API エラー )*/ IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) CHGVAR VAR(&MSGID) VALUE(%SST(&APIERR 9 7)) CHGVAR VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100)) GOTO SNDMSG ENDDO /*( 正常に取得成功 )*/ CHGVAR VAR(&CCSID1) VALUE(%BIN(&RCVVAR 46 2)) CHGVAR VAR(&CCSID) VALUE(&CCSID1) IF COND(&CCSID *EQ -1) THEN(CHGVAR VAR(&CCSID) + VALUE(65535)) RETURN ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) + MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + MSGFLIB(&MSGFLIB) SNDMSG: IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(*SYSOPR) + MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) + MSGTYPE(*ESCAPE) ENDDO ENDPGM