*********************************************************************** * Program ID : R3MHEX * Description : List ALL 256 Hex Codes, * with Hex -to- Char & Char -to- Hex Converter. * * Date Written : 2007-01-27 * Author : Richard J. Mills (eMail: R3M2000@cs.com) *********************************************************************** DEFINE DATA LOCAL * --+----1----+----2----+----3----+----4----+----5----+----6----+----7-- 1 #B(A16)INIT<"(Blank is H' ')"> 1 REDEFINE #B 2 FILLER 12X 2 #BH(A02) 1 #HX (A16) CONST <'0123456789ABCDEF'> 1 REDEFINE #HX 2 #H (A01/1:16)(EM=^^X'_') 1 #MARK (I02) 1 REDEFINE #MARK 2 #HH (A02) 1 #CHAR (A01/0:255) 1 REDEFINE #CHAR 2 #LN (A16/1:16) 1 #HEX (A02/0:255) 1 #P1 (A01) 1 #P1-CV ( C ) 1 ##P1 (A09) INIT <"Char '_'"> 1 #P2 (A02) 1 #P2-CV ( C ) 1 ##P2 (A09) INIT <"Hex '__'"> END-DEFINE * ====================================================================== SET KEY PF3 = PGM NAMED 'Exit' SET CONTROL 'N' RESET #BH MOVE EDITED #BH(EM=H) TO #BH #P2 := #BH * ====================================================================== FOR #MARK = 0 TO 255 MOVE #HH TO #CHAR(#MARK) MOVE EDITED #HH(EM=H) TO #HEX(#MARK) END-FOR * ====================================================================== NEWPAGE WRITE NOTITLE NOHDR //// ' HEX ' - '|_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F |' / '-----' - '+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+' FOR #MARK = 1 TO 16 WRITE #H(#MARK) 2X '|' #LN(#MARK) (EM=X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^^^X^|) IF #MARK = 16 WRITE 6T '+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+' END-IF END-FOR * ====================================================================== REPEAT INPUT NO ERASE MARK #MARK 1/01 *PROGRAM 11X 'CHAR <---> HEX - Converter' 61T ':Exit' 3/12 'Enter either'(I) 'Char:' #P1 (CV=#P1-CV AD=M ) 'or'(I) 'Hex:' #P2 (CV=#P2-CV AD=MT) 55T #B (AD=OI IP=OFF) * ---------------------------------------------------------------------- IF *PF-KEY = 'PF3' ESCAPE BOTTOM END-IF * ---------------------------------------------------------------------- MOVE #P1 TO SUBSTR(##P1,7,1) MOVE #P2 TO SUBSTR(##P2,6,2) * IF #P1-CV MODIFIED #MARK := 1 MOVE EDITED #P1 (EM=HH) TO #P2 MOVE #P2 TO SUBSTR(##P2,6,2) REINPUT FULL 'TRANSLATED -:1:is:2:',##P1, ##P2 MARK #MARK ELSE IF #P2-CV MODIFIED RESET #P1 EXAMINE #HEX(*) FOR #P2 GIVING INDEX #MARK IF #MARK < 1 AND #P2 NE '00' #MARK := 2 REINPUT FULL 'Invalid Input:1:', ##P2 MARK #MARK END-IF IF #CHAR (#MARK) NE H'A0' #P1 := #CHAR (#MARK) MOVE #P1 TO SUBSTR(##P1,7,1) END-IF #MARK := 2 REINPUT FULL 'TRANSLATED -:1:is:2:', ##P2, ##P1 MARK #MARK END-IF END-IF * ---------------------------------------------------------------------- END-REPEAT * ====================================================================== END