- 2.2.6.14 -
TMT Pascal Language Description

Pascal Language Structure


TypesFile Types
File types are structures that contain components of any type except another
file type. File types are defined as follows:
  File [of Componenttype];
If of is not specified and component types are not indicated then the
file is untyped.
Untyped files are used to access files regardless of their structure. Text
file types refer to a file of ASCII characters grouped in lines. Text is
a predefined type.
The record definitions used internally by TMT Pascal are also declared in
the System unit.
TFileRec is used for both typed and untyped files.
type
  TFileRec = object
    magic   : ^TFileRec;
    name    : string;
    handle  : Longint;
    rec_len : Longint;
    state   : flags;
    rd_proc,
    wr_proc : function (F: Longint; Buf: Pointer; Len: Longint;
                        var Act: Longint): Longint;
    procedure check_magic;
    procedure check_opened;
    procedure check_readable;
    procedure check_writeable;
    procedure io_error(code: Integer);
  end;
  PFileRec = ^TFileRec;
TTextRec is the internal format of a variable of type text.
type
  TTextRec = object (TFileRec)
    buffer  : array [0..63] of Char;
    index   : Longint;
    len_buf : Longint;
    max_buf : Longint;
    buf_adr : Pointer;
    function Eof: Boolean;
    procedure init;
    procedure fill_buf;
    procedure fill_chr;
    procedure skip_spaces;
    procedure get_n_char(n: Integer);
  end;
  PTextRec = ^TTextRec;
Internal Type flags is declared as:
type
  flags = set of file_state;
where file_state is:
type
  file_state = (
     file_readable,   //00h
     file_writeable,  //01h
     file_opened,     //02h
     file_assigned,   //03h
     file_eof,        //04h
     file_text,       //05h
     file_file,       //06h
     file_fileof,     //07h
     file_tty,        //08h
     file_special,    //09h
     file_settextbuf  //0Ah
  );
Sample:
  Look the TFileRec sample code.
  | 
  | 
  | 
| Record Types | 
Table of Content | 
Sample Program for TFileRec Structure | 
- 2.2.6.14 -