Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!cs.utexas.edu!tut.cis.ohio-state.edu!pt.cs.cmu.edu!dsl.pitt.edu!pitt!willett!ForthNet From: ForthNet@willett.pgh.pa.us (ForthNet articles from GEnie) Newsgroups: comp.lang.forth Subject: PUZZLES AND PROBLEMS Message-ID: <1541.UUL1.3#5129@willett.pgh.pa.us> Date: 17 Aug 90 04:22:02 GMT Organization: String, Scotch tape, and Paperclips. (in Pgh, PA) Lines: 55 Category 3, Topic 35 Message 137 Thu Aug 16, 1990 W.BADEN1 [Wil] at 18:27 PDT \ More Readable Ebcdic to Ascii Conversion 07/10/90 \ There is NO error checking in this code. It is assumed \ that only VALID ebcdic codes are input. \ \ This code is placed in the public domain. \ Letters & Numbers 07/10/90 HEX : do-letters ( ebcdic --- ascii ) \ For letters only. 0080 - DUP 0049 > ( i.e. "J".."Z" ?) IF 7 - DUP 0052 > ( i.e. "S".."Z" ?) IF 8 - THEN THEN ; : do-alphanumerics ( ebcdic --- ascii ) \ For letters & numbers. DUP 00EF > ( i.e. "0".."9" ?) IF 00C0 - ELSE do-letters THEN ; DECIMAL \ Symbols 07/10/90 HEX CREATE Symbols \ Conversion table for special characters. 20 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 2E C, 3C C, 28 C, 2B C, 7C C, 26 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 21 C, 24 C, 2A C, 29 C, 3B C, 7E C, 2D C, 2F C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 2C C, 25 C, 5F C, 3E C, 3F C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 00 C, 3A C, 23 C, 40 C, 27 C, 3D C, 22 C, : ebcdic>asciI ( ebcdic --- ascii ) DUP 00C1 < ( i.e. special character ?) IF 0040 - Symbols + C@ ELSE do-alphanumerics THEN ; DECIMAL : test ( c --- ) ebcdic>ascii DUP EMIT SPACE . ; The most readable *algorithm* would be CREATE AsciiTable HEX 00 C, ... (256 Byte Conversion Table) ... DECIMAL : ebcdic>asciI ( ebcdic --- ascii ) AsciiTable + C@ ; This would also take care of lower case values. ----- This message came from GEnie via willett through a semi-automated process. Report problems to: uunet!willett!dwp or dwp@willett.pgh.pa.us