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.