(* Copyright (C) 1989, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* Last modified on Fri Jan 5 08:45:30 1990 by muller *) UNSAFE MODULE Scan; IMPORT Text, Word, Convert; PROCEDURE Bool (t: Text.T): BOOLEAN RAISES {BadFormat} = BEGIN IF Text.Equal (t, "TRUE") THEN RETURN TRUE; ELSIF Text.Equal (t, "FALSE") THEN RETURN FALSE; ELSE RAISE BadFormat; END; END Bool; PROCEDURE Int (t: Text.T): INTEGER RAISES {BadFormat} = VAR x : UNTRACED REF ARRAY OF CHAR; value : INTEGER; used : INTEGER; BEGIN x := NEW (UNTRACED REF ARRAY OF CHAR, Text.Length(t)); Text.PutStr (x^, t); value := Convert.ToInt (x^, used); IF used = 0 THEN DISPOSE (x); RAISE BadFormat; ELSE DISPOSE (x); RETURN value; END; END Int; PROCEDURE Unsigned (t: Text.T): Word.T RAISES {BadFormat} = VAR x : UNTRACED REF ARRAY OF CHAR; value : Word.T; used : INTEGER; BEGIN x := NEW (UNTRACED REF ARRAY OF CHAR, Text.Length(t)); Text.PutStr (x^, t); value := Convert.ToUnsigned (x^, used); IF used = 0 THEN DISPOSE (x); RAISE BadFormat; ELSE DISPOSE (x); RETURN value; END; END Unsigned; PROCEDURE Real (t: Text.T): REAL RAISES {BadFormat} = VAR x : UNTRACED REF ARRAY OF CHAR; value : REAL; used : INTEGER; BEGIN x := NEW (UNTRACED REF ARRAY OF CHAR, Text.Length(t)); Text.PutStr (x^, t); value := Convert.ToFloat (x^, used); IF used = 0 THEN DISPOSE (x); RAISE BadFormat; ELSE DISPOSE (x); RETURN value; END; END Real; PROCEDURE LongReal (t: Text.T): LONGREAL RAISES {BadFormat} = VAR x : UNTRACED REF ARRAY OF CHAR; value : LONGREAL; used : INTEGER; BEGIN x := NEW (UNTRACED REF ARRAY OF CHAR, Text.Length(t)); Text.PutStr (x^, t); value := Convert.ToLongFloat (x^, used); IF used = 0 THEN DISPOSE (x); RAISE BadFormat; ELSE DISPOSE (x); RETURN value; END; END LongReal; PROCEDURE Char (t: Text.T): CHAR RAISES {BadFormat} = BEGIN IF Text.Length (t) = 0 THEN RAISE BadFormat; ELSE RETURN Text.GetChar (t, 0); END; END Char; BEGIN END Scan.