EBCDIC (Extended Binary Coded Decimal Interchange Code) は、パーソナル コンピュータ以外のすべての IBM コンピュータで使用される英字データです。EBCDIC 文字セットから ASCII へサーバー レスポンスを変換する変換ルーチンは、簡単に実装できます。
関数 EBCDIC2ASC は、EBCDIC_2_ASCII という配列によって定義されたコード マップを使用します。これは、各 EBCDIC 文字をその対応する ASCII 文字にマップするものです。関数 ASC2EBCDIC は、ASCII から EBCDIC へクライアント リクエストを変換するために必要で、同じような方法で機能します。
var asEBCDIC_2_ASCII : array[256] of string(1) INIT " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "a", "b", "c", "d", "e", "f", "g", "h", "i", " ", " ", " ", " ", " ", " ", " ", "j", "k", "l", "m", "n", "o", "p", "q", "r", " ", " ", " ", " ", " ", " ", " ", "~", "s", "t", "u", "v", "w", "x", "y", "z", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", " ", " ", " ", " ", " ", " ", " ", "J", "K", "L", "M", "N", "O", "P", "Q", "R", " ", " ", " ", " ", " ", " ", " ", " ", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", " ", " ", " ", " ", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " ", " ", " ", " ", " ", " "; function EBCDIC2ASC(pEBCDIC: string; pMaxLen: number optional) var i: number; begin // if pMaxLen = 0 then pMaxLen := Strlen(pEBCDIC); // writeln("length of string : " + string(pMaxLen)); end; // // writeln("EBCDIC STRING " + pEBCDIC); // for i := 1 to pMaxLen do // //writeln("Ordinal Value:" + String(ord(pEBCDIC[i]))); //write("Value From Array:" + asASCII_2_EBCDIC[ord(pEBCDIC[i]) + 1]); write(asEBCDIC_2_ASCII[ord(pEBCDIC[i]) + 1]); //writeln; // end; writeln; end EBCDIC2ASC;
以下の表は、2780/3780 プロトコル コード マップ ([EBCDIC_CTI] から抜粋) の標準 EBCDIC 表です。たとえば、EBCDIC バイト 0x83 をデコードするには、行 8、列 3 を選択します。0x83 は、ASCII 文字 c にマップされることがわかるでしょう。
[EBCDIC_UNI] は、UTF-EBCDIC - EBCDIC Friendly Unicode (or UCS) Transformation Format の仕様を表すリファレンスです。