home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1990
/
08
/
grdlagen
/
filesyst.def
< prev
next >
Wrap
Text File
|
1990-05-15
|
3KB
|
128 lines
(*********************************************************)
(* FILESYST.DEF *)
(* Definition-Modul von FileSystem *)
DEFINITION MODULE FileSystem;
(*
Datei-Bibliothek, aehnlich wie sie in
"Programmieren in Modula-2" von Niklaus Wirth
beschrieben wurde.
*)
FROM SYSTEM IMPORT WORD, ADDRESS;
TYPE
Response = ( done, notdone
(* Kann VIEL mehr sein ! *) );
(* Nicht in allen Systemen *)
IOMode = ( read, write, io );
File = RECORD
id :INTEGER;
res :Response;
eof :BOOLEAN;
mode :IOMode; (* Nicht in allen Systemen *)
(* Koennen noch interne Variablen kommen *)
END;
(*
"File.res" zeigt die mit "done" oder "notdone" Erfolg
oder Misserfolg nach Dateioperationen an,
"File.eof" zeigt Dateiende an.
*)
PROCEDURE Lookup( VAR f :File;
filename :ARRAY OF CHAR; new :BOOLEAN );
(*
Oeffnet die mit "filename" bezeichnete Datei.
Falls die Datei nicht existiert, wird sie in
Abhaengigkeit von der Variablen "new" neu angelegt.
Es wird versucht die Datei fuer Lesen UND Schreiben
zu oeffnen, falls das misslingt, wird sie nur fuer
das Lesen geoeffnet. Ergebniss steht in "f.mode" .
*)
PROCEDURE Create( VAR f :File; mediumname :ARRAY OF CHAR );
(*
Neue temporaeres Datei anlegen.
"mediumname" ist je nach Implementation unbenutzt
oder wird mit Umgebungsvariablen verglichen, die Pfade
fuer temporaere Dateien angeben können.
*)
PROCEDURE Close( VAR f :File );
(*
Datei schliessen.
*)
PROCEDURE Reset( VAR f :File );
(*
Dateizeiger auf Dateianfang setzen.
*)
PROCEDURE Rewrite( VAR f :File );
(*
Datei loeschen und Dateizeiger zum
Schreiben auf Dateianfang setzen.
*)
PROCEDURE Rename( VAR f :File; filename :ARRAY OF CHAR );
(*
Dateinamen aendern.
*)
PROCEDURE ReadWord( VAR f :File; VAR w :WORD );
(*
Ein WORD aus einer Datei lesen.
*)
PROCEDURE WriteWord( VAR f :File; w :WORD );
(*
Ein WORD in die Datei schreiben.
*)
PROCEDURE ReadChar( VAR f :File; VAR ch :CHAR );
(*
Ein Zeichen aus einer Datei lesen.
Das Zeichen CHAR(13) wird zum EOL konvertiert, das
folgende CHAR(10) wird ignoriert.
*)
PROCEDURE WriteChar( VAR f :File; ch :CHAR );
(*
Ein Zeichen in die Datei schreiben.
EOL wird zur Zeichenfolge CHAR(13)-CHAR(10) konvertiert.
*)
PROCEDURE GetPos( VAR f :File;
VAR highpos, lowpos :CARDINAL );
(*
Position des Datei-Zeigers ermitteln.
*)
PROCEDURE SetPos( VAR f :File; highpos, lowpos :CARDINAL );
(*
Datei-Zeiger zur Position highpos*65536+lowpos bewegen.
*)
PROCEDURE Length( VAR f :File;
VAR highlen, lowlen :CARDINAL );
(*
Groesse der Datei ermitteln.
*)
(* -------------------------------------------------
In einigen Implementationen finden sich auch
Prozeduren, um mit einem Schlag n Bytes zu lesen
oder zu schreiben.
------------------------------------------------- *)
END FileSystem.
(*********************************************************)
(* Ende von FILESYST.DEF *)