FIO.DEF 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * FIO.DEF - Modula-2 file input/output *
  5. * *
  6. * COPYRIGHT (C) 1987..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. (*# call(o_a_copy => off) *)
  11. (*%F _fdata *)
  12. (*# call(seg_name => null) *)
  13. (*# data(seg_name => null) *)
  14. (*%E *)
  15. (*# module(implementation=>off,init_code => on) *)
  16. DEFINITION MODULE FIO;
  17. IMPORT CoreFile, Str;
  18. CONST
  19. MaxOpenFiles = 15;
  20. (* If this value is changed, OPEN_MAX in CoreFile.a MUST be changed accordingly *)
  21. TYPE
  22. File = CoreFile.File;
  23. FileInf = CoreFile.FileInf;
  24. CONST
  25. DiskFull = 112 ; (* Error if Write fails with disk full *)
  26. StandardInput = 0 ; (* MSDOS standard handles *)
  27. StandardOutput = 1 ;
  28. ErrorOutput = 2 ;
  29. AuxDevice = 3 ;
  30. PrinterDevice = 4 ;
  31. (*
  32. TYPE
  33. BufRec = RECORD
  34. RWPos,
  35. EOB,
  36. BufSize : CARDINAL;
  37. Buffer : ARRAY[0..0] OF SHORTCARD;
  38. END;
  39. *)
  40. CONST
  41. BufferOverhead = 0;
  42. VAR
  43. IOcheck : BOOLEAN; (* if true errors terminate program with report *)
  44. EOF : BOOLEAN;
  45. PROCEDURE IOresult() : CARDINAL;
  46. PROCEDURE Open (Name: ARRAY OF CHAR) : File;
  47. PROCEDURE OpenRead(Name: ARRAY OF CHAR) : File;
  48. PROCEDURE Create (Name: ARRAY OF CHAR) : File;
  49. PROCEDURE Append (Name: ARRAY OF CHAR) : File;
  50. PROCEDURE Close (F: File);
  51. PROCEDURE Size (F: File) : LONGCARD;
  52. PROCEDURE GetPos(F: File) : LONGCARD;
  53. PROCEDURE Seek (F: File; Pos: LONGCARD);
  54. PROCEDURE Truncate(F: File);
  55. PROCEDURE Exists(Name: ARRAY OF CHAR) : BOOLEAN;
  56. PROCEDURE Erase (Name: ARRAY OF CHAR);
  57. PROCEDURE Rename(Name,NewName : ARRAY OF CHAR);
  58. PROCEDURE AssignBuffer(F : File; VAR Buf: ARRAY OF BYTE);
  59. PROCEDURE GetStreamPointer(F: File): FileInf;
  60. PROCEDURE AppendStream(St: FileInf): File;
  61. PROCEDURE AppendHandle(F: File; ReadOnly: BOOLEAN);
  62. PROCEDURE Flush(F: File);
  63. PROCEDURE ChDir (Name: ARRAY OF CHAR);
  64. PROCEDURE MkDir (Name: ARRAY OF CHAR);
  65. PROCEDURE RmDir (Name: ARRAY OF CHAR);
  66. PROCEDURE GetDir(Drive: SHORTCARD; VAR Name: ARRAY OF CHAR);
  67. VAR
  68. ShareMode: BITSET; (* File sharing mode used by Open and OpenRead *)
  69. CONST
  70. ShareNoInherit = {7};
  71. ShareCompat = {};
  72. ShareDenyRW = {4};
  73. ShareDenyWR = {5};
  74. ShareDenyRD = {4, 5};
  75. ShareDenyNone = {6};
  76. ShareAll = {4..6};
  77. TYPE
  78. PathStr = ARRAY[0..64] OF CHAR;
  79. PathTail = ARRAY[0..12] OF CHAR;
  80. TYPE
  81. Attrib = (readonly,hidden,system,volume,directory,archive);
  82. FileAttr = SET OF Attrib;
  83. DirEntry = RECORD
  84. Reserved_Handle: CARDINAL;
  85. rsvd : ARRAY[0..18] OF SHORTCARD;
  86. attr : FileAttr;
  87. time : CARDINAL;
  88. date : CARDINAL;
  89. size : LONGCARD;
  90. Name : PathTail;
  91. END;
  92. PROCEDURE ReadFirstEntry(DirName : ARRAY OF CHAR;
  93. Attr : FileAttr;
  94. VAR D : DirEntry) : BOOLEAN;
  95. PROCEDURE ReadNextEntry (VAR D : DirEntry) : BOOLEAN;
  96. PROCEDURE WrChar (F: File; V: CHAR );
  97. PROCEDURE WrBool (F: File; V: BOOLEAN ; Length: INTEGER);
  98. PROCEDURE WrShtInt (F: File; V: SHORTINT ; Length: INTEGER);
  99. PROCEDURE WrInt (F: File; V: INTEGER ; Length: INTEGER);
  100. PROCEDURE WrLngInt (F: File; V: LONGINT ; Length: INTEGER);
  101. PROCEDURE WrShtCard(F: File; V: SHORTCARD; Length: INTEGER);
  102. PROCEDURE WrCard (F: File; V: CARDINAL ; Length: INTEGER);
  103. PROCEDURE WrLngCard(F: File; V: LONGCARD ; Length: INTEGER);
  104. PROCEDURE WrShtHex (F: File; V: SHORTCARD; Length: INTEGER);
  105. PROCEDURE WrHex (F: File; V: CARDINAL ; Length: INTEGER);
  106. PROCEDURE WrLngHex (F: File; V: LONGCARD ; Length: INTEGER);
  107. PROCEDURE WrReal (F: File; V: REAL ; Precision: CARDINAL; Length: INTEGER);
  108. PROCEDURE WrLngReal (F: File; V: LONGREAL ; Precision: CARDINAL; Length: INTEGER);
  109. PROCEDURE WrFixReal (F: File; V: REAL ; Precision: CARDINAL; Length: INTEGER);
  110. PROCEDURE WrFixLngReal(F: File; V: LONGREAL ; Precision: CARDINAL; Length: INTEGER);
  111. PROCEDURE WrStr (F: File; V: ARRAY OF CHAR);
  112. (*# save,
  113. call(o_a_copy => on) *)
  114. PROCEDURE WrStrAdj (F: File; S: ARRAY OF CHAR; Length: INTEGER);
  115. (*# restore *)
  116. PROCEDURE WrLn (F: File);
  117. PROCEDURE WrCharRep(F: File; V: CHAR; Count: CARDINAL );
  118. PROCEDURE WrBin (F: File; Buf: ARRAY OF BYTE; Count: CARDINAL);
  119. PROCEDURE RdChar (F: File) : CHAR;
  120. PROCEDURE RdBool (F: File) : BOOLEAN;
  121. PROCEDURE RdShtInt (F: File) : SHORTINT;
  122. PROCEDURE RdInt (F: File) : INTEGER;
  123. PROCEDURE RdLngInt (F: File) : LONGINT;
  124. PROCEDURE RdShtCard(F: File) : SHORTCARD;
  125. PROCEDURE RdCard (F: File) : CARDINAL;
  126. PROCEDURE RdLngCard(F: File) : LONGCARD;
  127. PROCEDURE RdShtHex (F: File) : SHORTCARD;
  128. PROCEDURE RdHex (F: File) : CARDINAL;
  129. PROCEDURE RdLngHex (F: File) : LONGCARD;
  130. PROCEDURE RdReal (F: File) : REAL;
  131. PROCEDURE RdLngReal(F: File) : LONGREAL;
  132. PROCEDURE RdItem (F: File; VAR V: ARRAY OF CHAR);
  133. PROCEDURE RdStr (F: File; VAR V: ARRAY OF CHAR);
  134. PROCEDURE RdBin (F: File; VAR Buf: ARRAY OF BYTE; Count: CARDINAL) : CARDINAL;
  135. PROCEDURE GetDrive() : SHORTCARD ;
  136. PROCEDURE SetDrive(Drive: SHORTCARD): SHORTCARD;
  137. PROCEDURE GetCurrentDate () : LONGCARD ;
  138. PROCEDURE GetFileDate( f : File) : LONGCARD;
  139. PROCEDURE SetFileDate( f : File ; d : LONGCARD ) ;
  140. TYPE
  141. FileStamp = RECORD
  142. Year, Month, Day : SHORTCARD;
  143. Hour, Min, Sec : SHORTCARD;
  144. END;
  145. PROCEDURE GetFileStamp(f : File ; VAR b: FileStamp) : BOOLEAN;
  146. PROCEDURE ThreadEOF(): BOOLEAN;
  147. PROCEDURE ThreadOK(): BOOLEAN;
  148. VAR Separators : Str.CHARSET;
  149. VAR OK : BOOLEAN;
  150. VAR ChopOff : BOOLEAN;
  151. VAR Eng : BOOLEAN; (* Engineering notation *)
  152. VAR PrefixChar : CHAR;
  153. VAR SuffixChar : CHAR;
  154. VAR EOL : CHAR; (* end-of-line character for RdStr *)
  155. END FIO.