The OPEN procedure opens a file and allows you to specify file
characteristics.
Syntax:
OPEN( file_variable
,[[file_name]]
,[[history]]
,[[record_length]]
,[[access_method]]
,[[record_type]]
,[[carriage_control]]
,[[organization]]
,[[disposition]]
,[[file_sharing]]
,[[user_action]]
,[[default_file_name]]
,[[ERROR := error_recovery]] )
OPEN( FILE_VARIABLE := file_variable
[[,FILE_NAME := file_name]]
[[,HISTORY := history]]
[[,RECORD_LENGTH := record_length]]
[[,ACCESS_METHOD := access_method]]
[[,RECORD_TYPE := record_type]]
[[,CARRIAGE_CONTROL := carriage_control]]
[[,ORGANIZATION := organization]]
[[,DISPOSITION := disposition]]
[[,SHARING := file_sharing]]
[[,USER_ACTION := user_action]]
[[,DEFAULT := default_file_name]]
[[,ERROR := error_recovery]] )
Before the OPEN procedure is called, the file is in undefined
mode; its mode does not change after OPEN has been executed.
You cannot use OPEN on a file variable that is already open.
If you use INPUT or OUTPUT, VSI Pascal implicitly opens them
just before their first use. VSI Pascal implicitly opens INPUT
with a history of READONLY. If you choose, you can explicitly
open INPUT or OUTPUT; to do this, call the OPEN procedure at any
point in your compilation unit before you use the first I/O
routine on that file.
Because the RESET, REWRITE, and EXTEND procedures implicitly
open files, you need not always use the OPEN procedure. RESET,
REWRITE, and EXTEND impose the same defaults as OPEN, except
where noted (in the HISTORY parameter).
You must use the OPEN procedure to create a TEXT file with
fixed-length components, to create a file with relative or
indexed organization, to open a file for direct or keyed access,
or to specify a line length other than the default for a line in
a TEXT file.
See the "HP Pascal Language Reference Manual" for the complete
description of the OPEN procedure.
1 – File Variable
The 'file_variable' is the only required parameter. It is the name of the file variable associated with the file that HP Pascal is to open.
2 – File Name
The 'file_name' is a character-string expression containing the external file name. VSI Pascal determines the default file name according to the environment in which you are programming.
3 – History
The 'history' is a value that indicates whether the file exists or if VSI Pascal must create the file. If you specify OLD and if VSI Pascal cannot find the file, an error occurs. If you specify READONLY, you can only read from the file; if you attempt to write to the file, an error occurs. If you specify UNKNOWN, VSI Pascal looks for an existing file but creates a new file if there is no existing file. If you specify OLD or UNKNOWN and if the attempt to open the file generates a file protection error, VSI Pascal tries again using READONLY. NEW is the default for OPEN/REWRITE openings, while OLD is the default for EXTEND/RESET openings.
4 – Record Length
The 'record-length' is a positive integer that specifies the
maximum size in bytes for a line in a TEXT file or a file of
type FILE OF VARYING. ("Record" length is equivalent to
"component" length.) The default is 255 bytes. For all other
types of files, VSI Pascal ignores this parameter.
If you do not specify a length for an existing file, VSI Pascal
uses the length specified at the file's creation.
If you use OPEN to create a sequentially organized file with
variable-length components, VSI Pascal records the maximum
length of each component in the file only if you specify a value
for the record_type field.
5 – Access Method
The 'access_method' is a value that specifies the component access method to use. The possible values include SEQUENTIAL, DIRECT, and KEYED. The DIRECT access method is equivalent to random access by relative component number. The KEYED access method is equivalent to random access by key. The default is SEQUENTIAL.
6 – Record Type
The 'record_type' is a value that indicates the component
format. ("Record" format and "component" format are
equivalent.) The available values are FIXED (fixed-length
components), VARIABLE (variable-length components), STREAM
(stream component format with either carriage return,
combination carriage return and line feed, or form feed
delimiters), STREAM_CR (stream component format with carriage
return delimiters), and STREAM_LF (stream component format with
line feed delimiters).
VARIABLE is the default for new TEXT and VARYING OF CHAR, while
FIXED is the default for other new files.
7 – Carriage Control
The 'carriage_control' is a value that indicates the carriage control format for the file. The value LIST indicates single spacing between components. The values CARRIAGE and FORTRAN are equivalent and indicate that the first character of every output line is a carriage control character. The values NONE and NOCARRIAGE indicate that the file has no carriage control. LIST id the default for TEXT and VARYING OF CHAR files, while NONE is the default for all other file types.
8 – Organization
The 'organization' is a value that specifies the file
organization. If you are accessing an existing file, the
specified organization must match the organization of the
existing file; if it does not, an error occurs. The choices for
this parameter are SEQUENTIAL, RELATIVE, and INDEXED. The
default is SEQUENTIAL. The parameter choices are as follows:
o SEQUENTIAL file organization specifies that file components
are stored one after the other, in the order in which they
were entered into the file. VSI Pascal supports this
organization for files on disk. This is the only
organization supported for files on magnetic tape, on
terminals, on card readers, and on line printers.
o RELATIVE file organization consists of a series of
fixed-length component positions (cells) numbered
consecutively from 1 to n. The numbered, fixed-length cells
enable VSI Pascal to calculate the component's physical
position in the file. The cell numbers are called relative
component numbers. VSI Pascal supports this organization on
disk files only.
o INDEXED file organization specifies that, in addition to the
stored components, there exists at least a primary key and
possibly alternate keys (first alternate key, second
alternate key, and so forth). VSI Pascal uses the primary
key to store components and uses a program-specified key or
keys to retrieve data. VSI Pascal supports this
organization on disk files only.
9 – Disposition
The 'disposition' is a value that indicates what VSI Pascal should do with the file after you close the file. If SAVE is specified, the file is retained. If DELETE is specified, the file is deleted. If PRINT is specified, the file is printed on a line printer and is retained. If PRINT_DELETE is specified, the file is deleted after it is printed. If SUBMIT is specified, the file is submitted to a queue or placed in a background process and is retained. If SUBMIT_DELETE is specified, the file is deleted after being processed. SAVE is the default for external files. DELETE is the default for internal files.
10 – Sharing
The 'sharing' is a value that specifies whether other programs can access the file while it is open. A value of READONLY indicates that other programs can read but not write to the file. This is the default value for files with HISTORY := READONLY. READWRITE indicates that other programs can read and write to the file when it is open. A value of NONE denies any access to the file while it is open. This is the default value for all other histories.
11 – User Action
The 'user_action' is the name of a user-written routine that VSI Pascal calls to open the file (instead of allowing VSI Pascal to open the file with the OPEN procedure). You can use a user-action routine to open the file using environment-specific capabilities of the I/O system underlying HP Pascal.
12 – Default
The 'default' is a string expression containing default file specification information. For instance, you can use this value to set a default directory specification.
13 – Error Recovery
The 'error_recovery' specifies the action the program should take if an error occurs during execution of the routine. By default, after the first error, the error message is printed and execution is stopped.