home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 08 / grdlagen / filesyst.def < prev    next >
Text File  |  1990-05-15  |  3KB  |  128 lines

  1. (*********************************************************)
  2. (*                     FILESYST.DEF                      *)
  3. (*           Definition-Modul von FileSystem             *)
  4. DEFINITION MODULE FileSystem;
  5.  
  6. (*
  7.   Datei-Bibliothek, aehnlich wie sie in
  8.   "Programmieren in Modula-2" von Niklaus Wirth
  9.   beschrieben wurde.
  10. *)
  11.  
  12. FROM SYSTEM IMPORT WORD, ADDRESS;
  13.  
  14. TYPE
  15.  
  16.     Response = ( done, notdone
  17.                  (* Kann VIEL mehr sein ! *) );
  18.  
  19.     (* Nicht in allen Systemen *)
  20.     IOMode   = ( read, write, io );
  21.     File = RECORD
  22.         id      :INTEGER;
  23.         res     :Response;
  24.         eof     :BOOLEAN;
  25.         mode    :IOMode; (* Nicht in allen Systemen *)
  26.         (* Koennen noch interne Variablen kommen *)
  27.     END;
  28.  
  29. (*
  30.     "File.res" zeigt die mit "done" oder "notdone" Erfolg
  31.     oder Misserfolg nach Dateioperationen an,
  32.  
  33.     "File.eof" zeigt Dateiende an.
  34. *)
  35.  
  36.  
  37. PROCEDURE Lookup( VAR f :File;
  38.                   filename :ARRAY OF CHAR; new :BOOLEAN );
  39. (*
  40.     Oeffnet die mit "filename" bezeichnete Datei.
  41.     Falls die Datei nicht existiert, wird sie in
  42.     Abhaengigkeit von der Variablen "new" neu angelegt.
  43.     Es wird versucht die Datei fuer Lesen UND Schreiben
  44.     zu oeffnen, falls das misslingt, wird sie nur fuer
  45.     das Lesen geoeffnet. Ergebniss steht in "f.mode" .
  46.  
  47. *)
  48.  
  49. PROCEDURE Create( VAR f :File; mediumname :ARRAY OF CHAR );
  50. (*
  51.     Neue temporaeres Datei anlegen.
  52.     "mediumname" ist je nach Implementation unbenutzt
  53.     oder wird mit Umgebungsvariablen verglichen, die Pfade
  54.     fuer temporaere Dateien angeben können.
  55. *)
  56.  
  57. PROCEDURE Close( VAR f :File );
  58. (*
  59.     Datei schliessen.
  60. *)
  61.  
  62. PROCEDURE Reset( VAR f :File );
  63. (*
  64.     Dateizeiger auf Dateianfang setzen.
  65. *)
  66.  
  67. PROCEDURE Rewrite( VAR f :File );
  68. (*
  69.     Datei loeschen und Dateizeiger zum
  70.     Schreiben auf Dateianfang setzen.
  71. *)
  72.  
  73. PROCEDURE Rename( VAR f :File; filename :ARRAY OF CHAR );
  74. (*
  75.     Dateinamen aendern.
  76. *)
  77.  
  78. PROCEDURE ReadWord( VAR f :File; VAR w :WORD );
  79. (*
  80.     Ein WORD aus einer Datei lesen.
  81. *)
  82.  
  83. PROCEDURE WriteWord( VAR f :File; w :WORD );
  84. (*
  85.     Ein WORD in die Datei schreiben.
  86. *)
  87.  
  88. PROCEDURE ReadChar( VAR f :File; VAR ch :CHAR );
  89. (*
  90.     Ein Zeichen aus einer Datei lesen.
  91.     Das Zeichen CHAR(13) wird zum EOL konvertiert, das
  92.     folgende CHAR(10) wird ignoriert.
  93. *)
  94.  
  95. PROCEDURE WriteChar( VAR f :File; ch :CHAR );
  96. (*
  97.     Ein Zeichen in die Datei schreiben.
  98.     EOL wird zur Zeichenfolge CHAR(13)-CHAR(10) konvertiert.
  99. *)
  100.  
  101. PROCEDURE GetPos( VAR f :File;
  102.                   VAR highpos, lowpos :CARDINAL );
  103. (*
  104.     Position des Datei-Zeigers ermitteln.
  105. *)
  106.  
  107. PROCEDURE SetPos( VAR f :File; highpos, lowpos :CARDINAL );
  108. (*
  109.     Datei-Zeiger zur Position highpos*65536+lowpos bewegen.
  110. *)
  111.  
  112.  
  113. PROCEDURE Length( VAR f :File;
  114.                   VAR highlen, lowlen :CARDINAL );
  115. (*
  116.     Groesse der Datei ermitteln.
  117. *)
  118.  
  119. (* -------------------------------------------------
  120.     In einigen Implementationen finden sich auch
  121.     Prozeduren, um mit einem Schlag n Bytes zu lesen
  122.     oder zu schreiben.
  123.    ------------------------------------------------- *)
  124.  
  125. END FileSystem.
  126. (*********************************************************)
  127. (*                  Ende von FILESYST.DEF                *)
  128.