home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-09-22 | 5.3 KB | 135 lines |
- DEFINITION MODULE InOut;
-
- (* Input/output facilities as defined by N.Wirth
-
- Original material Copyright 1984 ETH Zurich
- with some extensions. *)
-
- CONST EOL = 15C;
-
- VAR Done: BOOLEAN;
- termCH: CHAR; (*terminating character in
- ReadString, ReadInt, and ReadCard
- (but not in ReadLine) *)
-
- PROCEDURE OpenInput ( name : ARRAY OF CHAR );
- (*closes the input stream "In" and opens a new input stream *)
-
- PROCEDURE OpenOutput ( name : ARRAY OF CHAR );
- (*closes the output stream "Out" and opens a new output stream. *)
-
- (*If name is a valid file-name or one of the special
- streamnames:
-
- "CON:" the Terminal.
- "AUX:" the seriel port (RS 232).
- "PRN:" the parallel port (the printer)
-
- that file or stream is opened immedially if possible.
- (In OpenInput "PRN:" causes Done=FALSE.)
-
- Valid examples of file names include:
-
- .DAT (the Modula-2 standard), *.DAT, DATA.*, *A.D*, DATA.D??,
- B:DATA.DAT, G:\*.D?T, C:\FOLDER\?ATA.D?T, etc
-
- If the name is a valid and complete file name (ie contains a name
- but no wildcards ( * or ? )) then this file is opened immediately.
- Else a standard GEM File Selector reflecting as much as possible
- of the given name shows up on the screen offering the user the
- possibility to select the wantet file. A click on Cancel causes
- Done= FALSE.
-
- If the file or stream is successfully opened subsequent in- or
- output will be from (to) that file or stream and Done is returned
- TRUE. Else subsequent in- or output will be to the Terminal and
- Done is returned FALSE.
-
- If an already existing file is opened by OpenOutput, that file is
- first deleted and a new file with the same name is created. *)
-
-
- PROCEDURE CloseInput;
- (* closes input stream "In"; returns input to the keyboard *)
-
- PROCEDURE CloseOutput;
- (* closes output stream "Out"; returns output to screen *)
-
- PROCEDURE Read ( VAR ch : CHAR );
- (* Done := ch was successfully read
- ie the last char of the stream was not allready read *)
-
- PROCEDURE ReadString ( VAR s : ARRAY OF CHAR );
- (*read a string, i.e. sequence of characters not containing
- blanks nor control characters, from stream "In";
- leading blanks are ignored.
- Input is terminated by any character <= " ";
- this character is assigned to termCH.
- Done:="all characters were read, and assigned
- to the elements of s".*)
-
- PROCEDURE ReadLine ( VAR s : ARRAY OF CHAR );
- (*read a line, i.e. sequence of characters not containing
- control characters, from stream "In".
- Input is terminated by any character < " ";
- ASCII.NUL (CHR(0)) is assigned to termCH
- and to the first character of S not read into.
- Done:="all characters were read, and assigned
- to the elements of s".*)
-
- PROCEDURE ReadInt ( VAR x : INTEGER );
- (*read string from stream "In" using ReadString
- and convert to integer.
- Syntax:
- integer = ["+"|"-"] digit {digit} ["B"|"C"|"H"].
- "B"|"C" : interpreted as an octal number.
- "H" : interpreted as a hexadecimal number.
- No letter : interpreted as a decimal number.
- Leading blanks are ignored.
- Done := "integer was read"*)
-
- PROCEDURE ReadCard ( VAR x : CARDINAL );
- (*read string from stream "In" using ReadString
- and convert to cardinal.
- Syntax:
- cardinal = digit {digit} ["B"|"C"|"H"].
- "B"|"C" : interpreted as an octal number.
- "H" : interpreted as a hexadecimal number.
- No letter : interpreted as a decimal number.
- Leading blanks are ignored.
- Done := "cardinal was read"*)
-
- PROCEDURE Write ( ch : CHAR );
- (* Writes any 8 bit character on stream "Out" *)
-
- PROCEDURE WriteLn;
- (* terminate line by writing ASCII.CR and ASCII.LF on stream "Out" *)
-
- PROCEDURE WriteString ( s : ARRAY OF CHAR );
- (* the string is a sequence of characters ending with ASCII.NUL,
- it is writen on stream "Out" *)
-
- PROCEDURE WriteStringRight ( s : ARRAY OF CHAR; n : INTEGER );
- (* The string is writen on stream "Out".
- If n is greater than the number of character needed,
- blanks are added preceding the string to make the total
- number of characters equal to n *)
-
- PROCEDURE WriteInt ( x : INTEGER ; n : CARDINAL );
- (* write integer x with (at least) n characters on stream "Out",
- using WriteStringRight *)
-
- PROCEDURE WriteCard ( x, n : CARDINAL);
- PROCEDURE WriteOct ( x, n : CARDINAL);
- PROCEDURE WriteHex ( x, n : CARDINAL);
- (*write cardinal x decimal, octal, or hexadecimal,
- analog to WriteInt *)
-
- PROCEDURE ConvFromStr(T : ARRAY OF CHAR;
- VAR res : LONGCARD;
- max : LONGCARD;
- neg : BOOLEAN;
- VAR done : BOOLEAN);
-
- END (* Of DEFINITION MODULE *) InOut.
-