EBCDIC (Extended Binary Coded Decimal Interchange Code) is the data alphabet used in all IBM computers, except personal computers. A conversion routine that translates server responses from the EBCDIC character set to ASCII is easy to implement.
The function EBCDIC2ASC uses the code map defined by the array as EBCDIC_2_ASCII, which maps each EBCDIC character to its ASCII equivalent. The function ASC2EBCDIC, which is required for translating client requests from ASCII to EBCDIC, works in a similar manner.
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;
The table below is the standard EBCDIC table for the 2780/3780 Protocol code map (taken from [EBCDIC_CTI]). As an example, to decode the EBCDIC byte 0x83, choose row 8 and column 3. You'll find that 0x83 maps to the letter c in ASCII.
[EBCDIC_UNI] is a reference that presents the specifications of the UTF-EBCDIC - EBCDIC Friendly Unicode (or UCS) Transformation Format.