DEFINITION MODULE Tools; (* VAX/VMS Sohail Aslam *) EXPORT QUALIFIED (*CONS *) LETA , LETZ , UNDERSCORE, BIGA, BIGZ , BLANK , DIG0 , DIG9 , COMMA , PLUS, STAR , SLASH , EQUAL , MINUS , GREATERTHAN, DECIMAL, QUOTE , COLON , SEMICOLON , BACKSLASH , NEWLINE, LESSTHAN , OPENPAREN, CLOSEPAREN, ENDFILE , DEL , ENDSTR , MAXSTR , (*TYPE *) Character , String , (*VAR *) ScanDebug , (*PROC *) Getc , Putc , PutQStr , PutStr , Scopy , Ctoi , Ctor , Strlen , Strloc , Strcmp , NullString , EchoInput , Warning , FatalError , MakeStr , MakeCString ; (* Begin definitions *) CONST BACKSLASH = 92; (* \ *) BLANK = 32; COMMA = 44; (* , *) DEL = 127; (* ascii del *) ENDFILE = -1; ENDSTR = 0; MAXSTR = 81; NEWLINE = 10; (* ascii value *) TAB = 9; BIGA = 65; BIGE = 69; BIGZ = 90; LETA = 97; LETE = 101; LETN = 110; LETT = 116; LETZ = 122; DIG0 = 48; DIG9 = 57; PLUS = 43; MINUS = 45; DECIMAL = 46; QUOTE = 39; SEMICOLON = 59; UNDERSCORE = 95; OPENPAREN = 40; CLOSEPAREN = 41; STAR = 42; SLASH = 47; EQUAL = 61; GREATERTHAN = 62; LESSTHAN = 60; CARET = 94; COLON = 58; TYPE Character = [ -1..127 ]; (* Ascii, plus ENDFILE *) String = ARRAY [1..MAXSTR] OF Character; VAR ScanDebug : BOOLEAN; (* Debugging aid flag *) (* Getc -- get one Character Stdin *) PROCEDURE Getc ( VAR c : Character (* Out *) ) : Character; (* Putc -- put one Character on Standard output *) PROCEDURE Putc ( c : Character (* In *) ); (* PutStr -- put out string of type Character to Stdout *) PROCEDURE PutStr ( VAR Str : String (* In *) ); (* EchoInput -- Echo next line of input in Standard input *) PROCEDURE EchoInput( ); (* PutQStr -- Write CHAR String to Stdout *) PROCEDURE PutQStr( Str : ARRAY OF CHAR (* In *) ); (* Scopy -- copy string In starting at i into Out starting a j *) PROCEDURE Scopy( VAR In : String (* in *); i : CARDINAL (* in *); VAR Out : String (* out *); j : CARDINAL (* in *) ); (* MakeStr -- convert an ARRAY OF CHAR to string of type String. *) PROCEDURE MakeStr( cs : ARRAY OF CHAR (* in *); VAR s : String (*out *) ); (* MakeCString -- convert a String type string to ARRAY OF CHAR *) PROCEDURE MakeCString( VAR s : String; (* in *) VAR cs: ARRAY OF CHAR (* out *) ); (* Ctoi -- convert string Integer *) PROCEDURE Ctoi ( VAR s : String (* in *) ) : INTEGER; (* Strlen -- return length of a string *) PROCEDURE Strlen( VAR s : String (* in *) ) : CARDINAL; (* Strloc -- Locate a character in a string, return index i where s[i] = c or 0 if not found *) PROCEDURE Strloc( VAR s : String (* in *); c : Character (* in *) ): CARDINAL; (* Ctor -- convert string to REAL. Exponential forms not allowed, i.e 1.09e-05 *) PROCEDURE Ctor( VAR s : String (* in *) ) : REAL; (* FatalError -- Print error message and die *) PROCEDURE FatalError( msg : ARRAY OF CHAR (* in *) ); (* Warning -- Print warning message but don't die *) PROCEDURE Warning( msg : ARRAY OF CHAR (* in *) ); PROCEDURE Strcmp( VAR s1 : String; VAR s2 : String ): INTEGER; (* Compare the two strings s1 and s2. Function value returned is < 0 if s1 < s2, equal to 0 if s1 = s2, > 0 if s1 > s2. *) (* NullString -- null a string by setting its length to 0 *) PROCEDURE NullString( VAR str : String (* out *) ); END Tools.