(* Release 3.10 *) (*-------------------------------------------------------------------------* * * * FIO.DEF - Modula-2 file input/output * * * * COPYRIGHT (C) 1987..1992 Clarion Software Corporation. * * All Rights Reserved * * * *--------------------------------------------------------------------------*) (*# call(o_a_copy => off) *) (*%F _fdata *) (*# call(seg_name => null) *) (*# data(seg_name => null) *) (*%E *) (*# module(implementation=>off,init_code => on) *) DEFINITION MODULE FIO; IMPORT CoreFile, Str; CONST MaxOpenFiles = 15; (* If this value is changed, OPEN_MAX in CoreFile.a MUST be changed accordingly *) TYPE File = CoreFile.File; FileInf = CoreFile.FileInf; CONST DiskFull = 112 ; (* Error if Write fails with disk full *) StandardInput = 0 ; (* MSDOS standard handles *) StandardOutput = 1 ; ErrorOutput = 2 ; AuxDevice = 3 ; PrinterDevice = 4 ; (* TYPE BufRec = RECORD RWPos, EOB, BufSize : CARDINAL; Buffer : ARRAY[0..0] OF SHORTCARD; END; *) CONST BufferOverhead = 0; VAR IOcheck : BOOLEAN; (* if true errors terminate program with report *) EOF : BOOLEAN; PROCEDURE IOresult() : CARDINAL; PROCEDURE Open (Name: ARRAY OF CHAR) : File; PROCEDURE OpenRead(Name: ARRAY OF CHAR) : File; PROCEDURE Create (Name: ARRAY OF CHAR) : File; PROCEDURE Append (Name: ARRAY OF CHAR) : File; PROCEDURE Close (F: File); PROCEDURE Size (F: File) : LONGCARD; PROCEDURE GetPos(F: File) : LONGCARD; PROCEDURE Seek (F: File; Pos: LONGCARD); PROCEDURE Truncate(F: File); PROCEDURE Exists(Name: ARRAY OF CHAR) : BOOLEAN; PROCEDURE Erase (Name: ARRAY OF CHAR); PROCEDURE Rename(Name,NewName : ARRAY OF CHAR); PROCEDURE AssignBuffer(F : File; VAR Buf: ARRAY OF BYTE); PROCEDURE GetStreamPointer(F: File): FileInf; PROCEDURE AppendStream(St: FileInf): File; PROCEDURE AppendHandle(F: File; ReadOnly: BOOLEAN); PROCEDURE Flush(F: File); PROCEDURE ChDir (Name: ARRAY OF CHAR); PROCEDURE MkDir (Name: ARRAY OF CHAR); PROCEDURE RmDir (Name: ARRAY OF CHAR); PROCEDURE GetDir(Drive: SHORTCARD; VAR Name: ARRAY OF CHAR); VAR ShareMode: BITSET; (* File sharing mode used by Open and OpenRead *) CONST ShareNoInherit = {7}; ShareCompat = {}; ShareDenyRW = {4}; ShareDenyWR = {5}; ShareDenyRD = {4, 5}; ShareDenyNone = {6}; ShareAll = {4..6}; TYPE PathStr = ARRAY[0..64] OF CHAR; PathTail = ARRAY[0..12] OF CHAR; TYPE Attrib = (readonly,hidden,system,volume,directory,archive); FileAttr = SET OF Attrib; DirEntry = RECORD Reserved_Handle: CARDINAL; rsvd : ARRAY[0..18] OF SHORTCARD; attr : FileAttr; time : CARDINAL; date : CARDINAL; size : LONGCARD; Name : PathTail; END; PROCEDURE ReadFirstEntry(DirName : ARRAY OF CHAR; Attr : FileAttr; VAR D : DirEntry) : BOOLEAN; PROCEDURE ReadNextEntry (VAR D : DirEntry) : BOOLEAN; PROCEDURE WrChar (F: File; V: CHAR ); PROCEDURE WrBool (F: File; V: BOOLEAN ; Length: INTEGER); PROCEDURE WrShtInt (F: File; V: SHORTINT ; Length: INTEGER); PROCEDURE WrInt (F: File; V: INTEGER ; Length: INTEGER); PROCEDURE WrLngInt (F: File; V: LONGINT ; Length: INTEGER); PROCEDURE WrShtCard(F: File; V: SHORTCARD; Length: INTEGER); PROCEDURE WrCard (F: File; V: CARDINAL ; Length: INTEGER); PROCEDURE WrLngCard(F: File; V: LONGCARD ; Length: INTEGER); PROCEDURE WrShtHex (F: File; V: SHORTCARD; Length: INTEGER); PROCEDURE WrHex (F: File; V: CARDINAL ; Length: INTEGER); PROCEDURE WrLngHex (F: File; V: LONGCARD ; Length: INTEGER); PROCEDURE WrReal (F: File; V: REAL ; Precision: CARDINAL; Length: INTEGER); PROCEDURE WrLngReal (F: File; V: LONGREAL ; Precision: CARDINAL; Length: INTEGER); PROCEDURE WrFixReal (F: File; V: REAL ; Precision: CARDINAL; Length: INTEGER); PROCEDURE WrFixLngReal(F: File; V: LONGREAL ; Precision: CARDINAL; Length: INTEGER); PROCEDURE WrStr (F: File; V: ARRAY OF CHAR); (*# save, call(o_a_copy => on) *) PROCEDURE WrStrAdj (F: File; S: ARRAY OF CHAR; Length: INTEGER); (*# restore *) PROCEDURE WrLn (F: File); PROCEDURE WrCharRep(F: File; V: CHAR; Count: CARDINAL ); PROCEDURE WrBin (F: File; Buf: ARRAY OF BYTE; Count: CARDINAL); PROCEDURE RdChar (F: File) : CHAR; PROCEDURE RdBool (F: File) : BOOLEAN; PROCEDURE RdShtInt (F: File) : SHORTINT; PROCEDURE RdInt (F: File) : INTEGER; PROCEDURE RdLngInt (F: File) : LONGINT; PROCEDURE RdShtCard(F: File) : SHORTCARD; PROCEDURE RdCard (F: File) : CARDINAL; PROCEDURE RdLngCard(F: File) : LONGCARD; PROCEDURE RdShtHex (F: File) : SHORTCARD; PROCEDURE RdHex (F: File) : CARDINAL; PROCEDURE RdLngHex (F: File) : LONGCARD; PROCEDURE RdReal (F: File) : REAL; PROCEDURE RdLngReal(F: File) : LONGREAL; PROCEDURE RdItem (F: File; VAR V: ARRAY OF CHAR); PROCEDURE RdStr (F: File; VAR V: ARRAY OF CHAR); PROCEDURE RdBin (F: File; VAR Buf: ARRAY OF BYTE; Count: CARDINAL) : CARDINAL; PROCEDURE GetDrive() : SHORTCARD ; PROCEDURE SetDrive(Drive: SHORTCARD): SHORTCARD; PROCEDURE GetCurrentDate () : LONGCARD ; PROCEDURE GetFileDate( f : File) : LONGCARD; PROCEDURE SetFileDate( f : File ; d : LONGCARD ) ; TYPE FileStamp = RECORD Year, Month, Day : SHORTCARD; Hour, Min, Sec : SHORTCARD; END; PROCEDURE GetFileStamp(f : File ; VAR b: FileStamp) : BOOLEAN; PROCEDURE ThreadEOF(): BOOLEAN; PROCEDURE ThreadOK(): BOOLEAN; VAR Separators : Str.CHARSET; VAR OK : BOOLEAN; VAR ChopOff : BOOLEAN; VAR Eng : BOOLEAN; (* Engineering notation *) VAR PrefixChar : CHAR; VAR SuffixChar : CHAR; VAR EOL : CHAR; (* end-of-line character for RdStr *) END FIO.