ASCII I/O

Peter Hertel (peter.hertel@physik.Uni-Osnabrueck.DE)
Thu, 05 Sep 1996 14:48:43 +0200

I had my own I/O system already in my Modula-2 times when I used the
TopSpeed and Stony Brook compilers.
Porting to Oberon/F was simple. The difficult things are already there,
in Strings.KERNEL32 provides the required access to the operating
system.
Reading and writing files is fast because of internal buffering.
A file can be opened in "r"ead, "w"rite, or "a"ppend mode.
Here is the interface:

DEFINITION FIO;

CONST
maxPathLen = 256;

TYPE
File = POINTER TO FileDesc;
FileDesc = RECORD
done-: BOOLEAN;
PROCEDURE (f: File) ReadChar (VAR ch: CHAR);
PROCEDURE (f: File) ReadInteger (VAR x: INTEGER);
PROCEDURE (f: File) ReadLine (VAR x: ARRAY OF CHAR);
PROCEDURE (f: File) ReadLongInt (VAR x: LONGINT);
PROCEDURE (f: File) ReadLongReal (VAR x: LONGREAL);
PROCEDURE (f: File) ReadReal (VAR x: REAL);
PROCEDURE (f: File) ReadShortInt (VAR x: SHORTINT);
PROCEDURE (f: File) ReadString (VAR x: ARRAY OF CHAR);
PROCEDURE (f: File) WriteChar (ch: CHAR);
PROCEDURE (f: File) WriteInt (x: LONGINT; minW: INTEGER);
PROCEDURE (f: File) WriteLine (x: ARRAY OF CHAR);
PROCEDURE (f: File) WriteLn;
PROCEDURE (f: File) WriteReal (x: LONGREAL; prec, minW, expW:
INTEGER);
PROCEDURE (f: File) WriteString (x: ARRAY OF CHAR)
END;

PROCEDURE Close (VAR f: File): BOOLEAN;
PROCEDURE Delete (path: ARRAY OF CHAR): BOOLEAN;
PROCEDURE Open (path: ARRAY OF CHAR; mode: CHAR; VAR f: File):
BOOLEAN;
PROCEDURE Rename (oldPath, newPath: ARRAY OF CHAR): BOOLEAN;

END FIO.

The more I get acquainted with Oberon/F the less I use the above module.

Peter Hertel