MODULE EncStdMap_cp500; (* This file was generated automatically *) (* Source: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP500.TXT *) IMPORT Codecs := EncCodecs; TYPE Encoder = POINTER TO RECORD (Codecs.Encoder) END; Decoder = POINTER TO RECORD (Codecs.Decoder) END; (* Encoder *) PROCEDURE (e: Encoder) Encode (IN f: ARRAY OF CHAR; VAR fR, fLen: INTEGER; VAR t: ARRAY OF SHORTCHAR; VAR tW: INTEGER); VAR x, y: INTEGER; BEGIN WHILE fLen > 0 DO x := ORD(f[fR]); CASE x OF | 00H..03H,0BH..13H,18H,19H,1CH..1FH,0B6H: y := 00H + x | 5EH,0AEH: y := 01H + x | 0A1H: y := 0AAH | 0B4H: y := 0BEH | 0A9H: y := 0B4H | 1BH: y := 27H | 0A5H,0AFH: y := 0DH + x | 08H,5FH,0A2H,0A3H,0A7H,0ACH: y := 0EH + x | 17H: y := 26H | 3CH: y := 4CH | 0A8H: y := 0BDH | 0D6H: y := 0ECH | 0D4H: y := 0EBH | 60H: y := 79H | 0D5H: y := 0EFH | 0AH,0D2H,0D3H: y := 1BH + x | 16H: y := 32H | 2EH,0ADH: y := 1DH + x | 20H,61H..69H,0DBH,0DCH: y := 20H + x | 0B9H: y := 0DAH | 2BH,3BH,7EH: y := 23H + x | 0D9H,0DAH: y := 24H + x | 1AH,28H: y := 25H + x | 6AH..72H: y := 27H + x | 05H..07H,14H,15H: y := 28H + x | 26H: y := 50H | 21H: y := 4FH | 73H..7AH: y := 2FH + x | 3EH,3FH: y := 30H + x | 2AH,2FH: y := 32H + x | 04H,2DH: y := 33H + x | 29H: y := 5DH | 24H: y := 5BH | 0B2H: y := 0EAH | 40H: y := 7CH | 2CH,7CH: y := 3FH + x | 3AH: y := 7AH | 3DH: y := 7EH | 7BH: y := 0C0H | 25H,0B3H: y := 47H + x | 7DH: y := 0D0H | 27H: y := 7DH | 23H: y := 7BH | 22H: y := 7FH | 9FH: y := 0FFH | 41H..49H: y := 80H + x | 5CH: y := 0E0H | 4AH..52H: y := 87H + x | 53H..5AH: y := 8FH + x | 30H..39H: y := 0C0H + x | 0F1H: y := 49H | 0E4H: y := 43H | 0E2H: y := 42H | 0E7H: y := 48H | 0E5H: y := 47H | 0E3H: y := 46H | 0E0H,0E1H: y := -9CH + x | 9CH,0E9H..0EBH,0EDH..0EFH: y := -98H + x | 0E8H,0ECH: y := -94H + x | 97H: y := 08H | 9DH: y := 14H | 0F8H: y := 70H | 0DFH: y := 59H | 8DH,8EH: y := -84H + x | 86H: y := 06H | 7FH,92H: y := -78H + x | 8FH: y := 1BH | 85H,87H,0FDH,0FEH: y := -70H + x | 0D1H: y := 69H | 0F0H: y := 8CH | 0C4H: y := 63H | 80H..84H,88H..8CH,90H,91H,93H..96H,98H..9BH,9EH,0C2H: y := -60H + x | 0A0H,0C7H: y := -5FH + x | 0C5H: y := 67H | 0C3H: y := 66H | 0C0H,0C1H: y := -5CH + x | 0C9H..0CBH,0CDH..0CFH,0D8H: y := -58H + x | 0C8H,0CCH: y := -54H + x | 0E6H: y := 9CH | 0A6H: y := 6AH | 0BBH,0DDH,0DEH: y := -30H + x | 0F6H: y := 0CCH | 0F4H: y := 0CBH | 0C6H: y := 9EH | 0F5H: y := 0CFH | 0F2H,0F3H: y := -25H + x | 0D0H: y := 0ACH | 0B1H: y := 8FH | 0ABH: y := 8AH | 0B0H,0FBH,0FCH,0FFH: y := -20H + x | 0BAH: y := 9BH | 0F9H,0FAH: y := -1CH + x | 0B8H: y := 9DH | 0D7H: y := 0BFH | 0F7H: y := 0E1H | 0B5H: y := 0A0H | 0BFH: y := 0ABH | 5BH: y := 4AH | 0AAH: y := 9AH | 0A4H,0BCH..0BEH: y := -05H + x | 09H,0B7H: y := -04H + x | 5DH: y := 5AH ELSE RETURN END; t[tW] := SHORT(CHR(y)); INC(tW); INC(fR); DEC(fLen) END END Encode; PROCEDURE NewEncoder* (): Codecs.Encoder; VAR e: Encoder; BEGIN NEW(e); RETURN e END NewEncoder; (* Decoder *) PROCEDURE (d: Decoder) Decode (IN f: ARRAY OF SHORTCHAR; VAR fR, fLen: INTEGER; VAR t: ARRAY OF CHAR; VAR tW: INTEGER; OUT state: BOOLEAN); VAR x, y: INTEGER; BEGIN WHILE fLen > 0 DO x := ORD(f[fR]); CASE x OF | 00H..03H,0BH..13H,18H,19H,1CH..1FH,0B6H: y := 00H + x | 5AH: y := 5DH | 05H,0B3H: y := 04H + x | 9FH,0B7H..0B9H: y := 05H + x | 9AH: y := 0AAH | 4AH: y := 5BH | 0ABH: y := 0BFH | 0A0H: y := 0B5H | 0E1H: y := 0F7H | 0BFH: y := 0D7H | 9DH: y := 0B8H | 0DDH,0DEH: y := 1CH + x | 9BH: y := 0BAH | 90H,0DBH,0DCH,0DFH: y := 20H + x | 8AH: y := 0ABH | 8FH: y := 0B1H | 0ACH: y := 0D0H | 0CDH,0CEH: y := 25H + x | 0CFH: y := 0F5H | 9EH: y := 0C6H | 0CBH: y := 0F4H | 0CCH: y := 0F6H | 8BH,0ADH,0AEH: y := 30H + x | 6AH: y := 0A6H | 9CH: y := 0E6H | 74H,78H: y := 54H + x | 71H..73H,75H..77H,80H: y := 58H + x | 64H,65H: y := 5CH + x | 66H: y := 0C3H | 67H: y := 0C5H | 41H,68H: y := 5FH + x | 20H..24H,28H..2CH,30H,31H,33H..36H,38H..3BH,3EH,62H: y := 60H + x | 63H: y := 0C4H | 8CH: y := 0F0H | 69H: y := 0D1H | 15H,17H,8DH,8EH: y := 70H + x | 1BH: y := 8FH | 07H,1AH: y := 78H + x | 06H: y := 86H | 09H,0AH: y := 84H + x | 59H: y := 0DFH | 70H: y := 0F8H | 14H: y := 9DH | 08H: y := 97H | 54H,58H: y := 94H + x | 04H,51H..53H,55H..57H: y := 98H + x | 44H,45H: y := 9CH + x | 46H: y := 0E3H | 47H: y := 0E5H | 48H: y := 0E7H | 42H: y := 0E2H | 43H: y := 0E4H | 49H: y := 0F1H | 0F0H..0F9H: y := -0C0H + x | 0E2H..0E9H: y := -8FH + x | 0D1H..0D9H: y := -87H + x | 0E0H: y := 5CH | 0C1H..0C9H: y := -80H + x | 0FFH: y := 9FH | 7FH: y := 22H | 7BH: y := 23H | 7DH: y := 27H | 0D0H: y := 7DH | 6CH,0FAH: y := -47H + x | 0C0H: y := 7BH | 7EH: y := 3DH | 7AH: y := 3AH | 6BH,0BBH: y := -3FH + x | 7CH: y := 40H | 0EAH: y := 0B2H | 5BH: y := 24H | 5DH: y := 29H | 37H,60H: y := -33H + x | 5CH,61H: y := -32H + x | 6EH,6FH: y := -30H + x | 0A2H..0A9H: y := -2FH + x | 4FH: y := 21H | 50H: y := 26H | 2DH..2FH,3CH,3DH: y := -28H + x | 91H..99H: y := -27H + x | 3FH,4DH: y := -25H + x | 0FDH,0FEH: y := -24H + x | 4EH,5EH,0A1H: y := -23H + x | 0DAH: y := 0B9H | 40H,81H..89H,0FBH,0FCH: y := -20H + x | 4BH,0CAH: y := -1DH + x | 32H: y := 16H | 25H,0EDH,0EEH: y := -1BH + x | 0EFH: y := 0D5H | 79H: y := 60H | 0EBH: y := 0D4H | 0ECH: y := 0D6H | 0BDH: y := 0A8H | 4CH: y := 3CH | 26H: y := 17H | 16H,6DH,0B0H,0B1H,0B5H,0BAH: y := -0EH + x | 0B2H,0BCH: y := -0DH + x | 27H: y := 1BH | 0B4H: y := 0A9H | 0BEH: y := 0B4H | 0AAH: y := 0A1H | 5FH,0AFH: y := -01H + x ELSE RETURN END; t[tW] := CHR(y); INC(tW); INC(fR); DEC(fLen) END; state := FALSE END Decode; PROCEDURE (d: Decoder) Reset, EMPTY; PROCEDURE NewDecoder* (): Codecs.Decoder; VAR d: Decoder; BEGIN NEW(d); RETURN d END NewDecoder; END EncStdMap_cp500.