Login
`
Templates, Tools and Utilities
|
||
Icetips Article
Back to article list
Search Articles
Add Comment
Printer friendly
Direct link
Par2: EBCDIC to ASCII 1998-09-03 -- Wesley Coleman Clarion will also convert to and from EBCDIC attached is a source module
that will do both.
MEMBER
MAP
CheckConvert Function(LONG),BYTE
EbcdicToAscii Procedure(*STRING)
AsciiToEbcdic Procedure(*STRING)
END
EbStr STRING('< 40h, 40h, 40h, 40h, 40h, 40h, 40h, 40h>'&|
'< 40h, 40h, 40h, 40h, 40h, 40h, 40h, 40h>'&|
'< 40h, 40h, 40h, 40h, 40h, 40h, 40h, 40h>'&|
'< 40h, 40h, 40h, 40h, 40h, 40h, 40h, 40h>'&|
'< 40h, 5Ah, 7Fh, 7Bh, 5Bh, 6Ch, 50h, 7Dh>'&|
'< 4Dh, 5Dh, 5Ch, 4Eh, 6Bh, 60h, 4Bh, 61h>'&|
'<0F0h,0F1h,0F2h,0F3h,0F4h,0F5h,0F6h,0F7h>'&|
'<0F8h,0F9h, 7Ah, 5Eh, 4Ch, 7Eh, 6Eh, 6Fh>'&|
'< 7Ch,0C1h,0C2h,0C3h,0C4h,0C5h,0C6h,0C7h>'&|
'<0C8h,0C9h,0D1h,0D2h,0D3h,0D4h,0D5h,0D6h>'&|
'<0D7h,0D8h,0D9h,0E2h,0E3h,0E4h,0E5h,0E6h>'&|
'<0E7h,0E8h,0E9h,0BAh,0E0h,0BBh, 5Fh, 6Dh>'&|
'< 79h, 81h, 82h, 83h, 84h, 85h, 86h, 87h>'&|
'< 88h, 89h, 91h, 92h, 93h, 94h, 95h, 96h>'&|
'< 97h, 98h, 99h,0A2h,0A3h,0A4h,0A5h,0A6h>'&|
'<0A7h,0A8h,0A9h,0C0h, 6Ah,0D0h,0A1h, 8Fh>')
AsStr STRING('< 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h,
20h, 0Ah, 20h, 20h, 0Dh, 20h, 20h>'&|
'< 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h,
20h, 20h, 20h, 20h, 20h, 20h, 20h>'&|
'< 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h,
20h, 20h, 20h, 20h, 20h, 20h, 20h>'&|
'< 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h, 20h,
20h, 20h, 20h, 20h, 20h, 20h, 20h>'&|
'< 20h, 20h, 83h, 84h, 85h,0A0h, 20h, 86h,
87h,0A4h, 9Bh, 2Eh, 3Ch, 28h, 2Bh,0B3h>'&|
'< 26h, 82h, 88h, 89h, 8Ah,0A1h, 8Ch, 8Bh,
8Dh,0E1h, 21h, 24h, 2Ah, 29h, 3Bh,0AAh>'&|
'< 2Dh, 2Fh, 83h, 8Eh, 85h,0A0h, 20h, 8Fh,
80h,0A5h, 7Ch, 2Ch, 25h, 5Fh, 3Eh, 3Fh>'&|
'<0EDh, 90h, 88h, 89h, 8Ah,0A1h, 8Ch, 8Bh, 8Dh,
60h, 3Ah, 23h, 40h, 27h, 3Dh, 22h>'&|
'<0EDh, 61h, 62h, 63h, 64h, 65h, 66h, 67h, 68h,
69h,0AEh,0AFh, 20h,0F3h, 20h,0F1h>'&|
'<0F8h,06Ah,06Bh,06Ch,06Dh,06Eh,06Fh, 70h, 71h,
72h,0A6h,0A7h, 91h,0F7h, 92h, 20h>'&|
'<0E6h, 7Eh, 73h, 74h, 75h, 76h, 77h, 78h, 79h,
7Ah,0ADh,0A8h, 20h, 20h, 20h, 20h>'&|
'< 5Eh, 9Ch, 9Dh, 9Eh, 9Fh, 20h, 20h,0ACh,0ABh,
20h, 5bh, 5Dh,0C4h,0F9h, 27h,0CDh>'&|
'< 7Bh, 41h, 42h, 43h, 44h, 45h, 46h, 47h, 48h,
49h, 2Dh, 93h, 94h, 95h,0A2h, 20h>'&|
'< 7Dh, 4Ah, 4Bh, 4Ch, 4Dh, 4Eh, 4Fh, 50h, 51h,
52h,0F2h, 96h, 81h, 97h,0A3h, 98h>'&|
'< 5Ch, 20h, 53h, 54h, 55h, 56h, 57h, 58h, 59h,
5Ah,0FDh, 93h, 99h, 95h,0A2h, 20h>'&|
'< 30h, 31h, 32h, 33h, 34h, 35h, 36h, 37h, 38h,
39h,0FCh, 96h, 9Ah, 97h,0A3h, 20h>') !216
ae BYTE,DIM(128),OVER(EbStr)
ea BYTE,DIM(256),OVER(AsStr)
x LONG
CheckConvert Function(ByteCnt)
CODE
RETURN(True)
EbcdicToAscii Procedure(Buff)
LoopCnt long
CODE
LOOP LoopCnt = 1 TO SIZE(Buff)
IF CheckConvert(Loopcnt) THEN
Buff[LoopCnt] = CHR(ea[VAL(Buff[LoopCnt])+1])
END
END
AsciiToEbcdic Procedure(Buff)
LoopCnt LONG
CODE
LOOP LoopCnt = 1 TO SIZE(Buff)
IF CheckConvert(Loopcnt) THEN
Buff[LoopCnt] = CHR(ae[VAL(Buff[LoopCnt])+1])
END
END
ADDITION FOR PACKED DECIMALS:
Packed decimal fields are usable as they are with no conversion. But if you
have negative numbers in unpacked fields, they contain a character as the last
digit that will need to be changed to the correct number and then
multiplied by -1 to get the right number. I am attaching a function that
will change the character to a number and return True if the number needs to
be multiplied by -1 for the correct result.
A example of it's use is,
IF IbmNumToPc(IbmNum) THEN
NewVariable = IbmNum * -1
ELSE
NewVariable = IbmNum
END
IbmNumToPc Function(IbmNum)
Loc:String cstring(20)
loc:Length short
code
loc:String = IbmNum
loc:Length = len(loc:string)
if numeric(loc:string[loc:length]) then
return(False)
else
case loc:string[loc:length]
of '}'
IbmNum[loc:length] = '0'
of 'J'
IbmNum[loc:length] = '1'
of 'K'
IbmNum[loc:length] = '2'
of 'L'
IbmNum[loc:length] = '3'
of 'M'
IbmNum[loc:length] = '4'
of 'N'
IbmNum[loc:length] = '5'
of 'O'
IbmNum[loc:length] = '6'
of 'P'
IbmNum[loc:length] = '7'
of 'Q'
IbmNum[loc:length] = '8'
of 'R'
IbmNum[loc:length] = '9'
end
RETURN(True)
end
Today is November 21, 2024, 3:28 am This article has been viewed 35221 times.
|
|