API QDCXLATE によって、EBCDIC/ASCII の相互変換ができる。
次の例は QDCXLATE によって QSYS の QEBCDIC,QASCII というテーブルを使用して変換しているが、日本語 PC に適用するには、一部これらのテーブルには問題がある。
テーブルはコード表から CRTTBL コマンドで自作するほうが良い。
なお PANEL-WORKER または PANEL-WORKER Chicago が導入されているのであればライブラリーPANELWKR に EBCDIC , ASCII という名前のテーブルが用意されているので、これは直ちに使用可能である。
0001.00 PGM 0002.00 /*---------------------------------------------------------*/ 0003.00 /* QDCXLATE による EBCDIC/ASCII 変換 */ 0004.00 /*---------------------------------------------------------*/ 0005.00 DCL VAR(&OUTBUF) TYPE(*CHAR) LEN(5000) 0006.00 DCL VAR(&BLANKS) TYPE(*CHAR) LEN(5000) 0007.00 DCL VAR(&BUFLEN) TYPE(*CHAR) LEN(3) /* 5 桁 PACK */ 0008.00 DCL VAR(&MAXOTL) TYPE(*CHAR) LEN(3) + 0009.00 VALUE(X'05000F') /* 5 桁 PACK */ 0010.00 DCL VAR(&OUTLEN) TYPE(*CHAR) LEN(3) + 0011.00 VALUE(X'00000F') /* 5 桁 PACK */ 0012.00 DCL VAR(&RCVDTA) TYPE(*CHAR) LEN(5000) 0013.00 DCL VAR(&SNDDTA) TYPE(*CHAR) LEN(5000) 0014.00 /************/ 0015.00 EBCDIC: /* ASCII -> EBCDIC への変換 */ 0016.00 /************/ 0017.00 CHGVAR VAR(&OUTBUF) VALUE(&BLANKS) 0018.00 CALL PGM(QDCXLATE) PARM(&BUFLEN &RCVDTA 'QEBCDIC + 0019.00 ' 'QSYS ' &OUTBUF &MAXOTL &OUTLEN + 0020.00 '*JPN' 'Y' '*AE ') 0021.00 MONMSG MSGID(CPF2600) EXEC(GOTO CMDLBL(ENDCNV)) 0022.00 /************/ 0023.00 ASCII: /* EBCDIC -> ASCII への変換 */ 0024.00 /************/ 0025.00 CALL PGM(QDCXLATE) PARM(&BUFLEN &SNDDTA 'QASCII + 0026.00 ' 'QSYS ' &OUTBUF &MAXOTL &OUTLEN + 0027.00 '*JPN ' 'N' '*EA ') 0028.00 CHGVAR VAR(&OUTBUF) VALUE(&OUTBUF *TCAT &NULL)