<> <> <> <> DIRECTORY ConvertUnsafe: TYPE USING [SubString], IO: TYPE USING [STREAM]; CharIO: DEFINITIONS = { Handle: TYPE = IO.STREAM; <> Control: PROC [c: CHAR] RETURNS [CHAR] = INLINE { RETURN [VAL[c.ORD-100b]]}; NUL: CHAR = '\000; BS: CHAR = Control['H]; TAB: CHAR = Control['I]; LF: CHAR = Control['J]; FF: CHAR = Control['L]; CR: CHAR = Control['M]; ControlZ: CHAR = Control['Z]; ESC: CHAR = '\033; SP: CHAR = ' ; DEL: CHAR = '\177; <> NumberFormat: TYPE = RECORD [ base: [2..36], zerofill, unsigned: BOOLEAN, columns: [0..255]]; <> GetChar: PROC [in: Handle] RETURNS [CHAR]; PutChar: PROC [out: Handle, c: CHAR]; GetString: PROC [Handle, LONG STRING, PROC [CHAR] RETURNS [BOOL]]; PutString: PROC [Handle, LONG STRING]; PutSubString: PROC [Handle, ConvertUnsafe.SubString]; GetID, GetLine: PROC [Handle, LONG STRING]; PutLine: PROC [out: Handle, s: LONG STRING]; GetNumber: PROC [in: Handle, radix: CARDINAL] RETURNS [UNSPECIFIED]; PutNumber: PROC [Handle, UNSPECIFIED, NumberFormat]; GetOctal: PROC [in: Handle] RETURNS [UNSPECIFIED] = INLINE { RETURN [GetNumber[in, 8]]}; PutOctal: PROC [Handle, UNSPECIFIED]; GetDecimal: PROC [in: Handle] RETURNS [INTEGER] = INLINE { RETURN [GetNumber[in, 10]]}; PutDecimal: PROC [Handle, INTEGER]; }.