ack/lang/m2/libm2/InOut.def
1988-02-19 15:54:01 +00:00

117 lines
3.5 KiB
Modula-2

DEFINITION MODULE InOut;
(*
Module: Wirth's Input/Output module
From: "Programming in Modula-2", 3rd, corrected edition, by N. Wirth
Version: $Header$
*)
CONST EOL = 12C;
VAR Done : BOOLEAN;
termCH : CHAR;
PROCEDURE OpenInput(defext: ARRAY OF CHAR);
(* Request a file name from the standard input stream and open
this file for reading.
If the filename ends with a '.', append the "defext" extension.
Done := "file was successfully opened".
If open, subsequent input is read from this file.
*)
PROCEDURE OpenOutput(defext : ARRAY OF CHAR);
(* Request a file name from the standard input stream and open
this file for writing.
If the filename ends with a '.', append the "defext" extension.
Done := "file was successfully opened".
If open, subsequent output is written to this file.
Files left open at program termination are automatically closed.
*)
PROCEDURE OpenInputFile(filename: ARRAY OF CHAR);
(* Like OpenInput, but filename given as parameter.
This procedure is not in Wirth's InOut.
*)
PROCEDURE OpenOutputFile(filename: ARRAY OF CHAR);
(* Like OpenOutput, but filename given as parameter.
This procedure is not in Wirth's InOut.
*)
PROCEDURE CloseInput;
(* Close input file. Subsequent input is read from the standard input
stream.
*)
PROCEDURE CloseOutput;
(* Close output file. Subsequent output is written to the standard
output stream.
*)
PROCEDURE Read(VAR ch : CHAR);
(* Read a character from the current input stream and leave it in "ch".
Done := NOT "end of file".
*)
PROCEDURE ReadString(VAR s : ARRAY OF CHAR);
(* Read a string from the current input stream and leave it in "s".
A string is any sequence of characters not containing blanks or
control characters; leading blanks are ignored.
Input is terminated by any character <= " ".
This character is assigned to termCH.
DEL or BACKSPACE is used for backspacing when input from terminal.
*)
PROCEDURE ReadInt(VAR x : INTEGER);
(* Read a string and convert it to INTEGER.
Syntax: integer = ['+'|'-'] digit {digit}.
Leading blanks are ignored.
Done := "integer was read".
*)
PROCEDURE ReadCard(VAR x : CARDINAL);
(* Read a string and convert it to CARDINAL.
Syntax: cardinal = digit {digit}.
Leading blanks are ignored.
Done := "cardinal was read".
*)
PROCEDURE Write(ch : CHAR);
(* Write character "ch" to the current output stream.
*)
PROCEDURE WriteLn;
(* Terminate line.
*)
PROCEDURE WriteString(s : ARRAY OF CHAR);
(* Write string "s" to the current output stream
*)
PROCEDURE WriteInt(x : INTEGER; n : CARDINAL);
(* Write integer x with (at least) n characters on the current output
stream. If n is greater that the number of digits needed,
blanks are added preceding the number.
*)
PROCEDURE WriteCard(x, n : CARDINAL);
(* Write cardinal x with (at least) n characters on the current output
stream. If n is greater that the number of digits needed,
blanks are added preceding the number.
*)
PROCEDURE WriteOct(x, n : CARDINAL);
(* Write cardinal x as an octal number with (at least) n characters
on the current output stream.
If n is greater that the number of digits needed,
blanks are added preceding the number.
*)
PROCEDURE WriteHex(x, n : CARDINAL);
(* Write cardinal x as a hexadecimal number with (at least)
n characters on the current output stream.
If n is greater that the number of digits needed,
blanks are added preceding the number.
*)
END InOut.