|
|
When you open a file, HPFOPEN/FOPEN establishes a
communication link between the file and your program by
Determining the device on which the file resides.
Allocating to your process the device on which the file resides.
Disk files generally can be shared concurrently among jobs and
sessions. Magnetic tape and unit-record devices are generally
allocated exclusively to the requesting job or session.
If the file resides on a nonshareable device (such as magnetic tape)
and you have nonshareable device (ND) capability,
HPFOPEN/FOPEN determines whether the system
operator must approve allocation of the device (such as an unlabeled
magnetic tape) or provide a particular media (such as a specific
volume for a labeled magnetic tape request or special forms for a
line printer). If so, HPFOPEN/FOPEN requests the
system operator to respond appropriately.
Different processes within the same job may open and have concurrent
access to a file on the same magnetic tape or unit-record device if
the file has been opened with multiaccess option set;
however, this device cannot be accessed by another job until all
accessing processes in this job have issued a corresponding
FCLOSE call.
Verifying your right to access the file under the security
provisions existing at the account, group, and file levels.
Determining that the file has not been allocated exclusively to
another process (by the exclusive option in an
HPFOPEN/FOPEN call issued by that process).
Processing user labels (for files on disk). For new files on disk,
HPFOPEN/FOPEN specifies the number of user labels
to be written.
Constructing the control blocks required by MPE/iX for this
particular access of the file. The information in these blocks is
derived by merging specifications from four sources, listed below in
descending order of precedence (and illustrated in
Figure 5-1 "File System Hierarchy
of Overrides")
The file label, obtainable only if the file is an old file on
disk; otherwise, device-dependent characteristics applicable to
the nonshareable device. This information overrides information
from any other source.
The parameter list of a previous FILE command
referencing the same formal file designator named in this
HPFOPEN/FOPEN call, if such a command was
issued in this job or session. This is only true, if file
equations were not disallowed.
The parameter list of this HPFOPEN/FOPEN
intrinsic call.
System default values provided by MPE/iX (when values are not
obtainable from the above sources).
When information from one of these four sources conflicts with that from
another, preempting takes place according to the order of precedence
illustrated in Figure 5-1 "File System
Hierarchy of Overrides" To determine the specifications actually taking
effect, you can call the FFILEINFO intrinsic. Certain sources do not
always apply or convey all types of information. For example, no file label
exists when a new file is opened, and so all information must come from the
last four sources above.
Figure 5-1 File System Hierarchy of Overrides
Since the physical characteristics of a disk file cannot be
changed after it has been created, it makes sense that the file
label would take precedence over information from any other source.
Likewise, when a device file is opened, device-dependent characteristics
override information from any other source.
When the HPFOPEN/FOPEN intrinsic is executed, it returns to
your program a file number. If the file is opened successfully, the file number
returned is a positive integer. At this point, the file is ready to be accessed
with system intrinsics (for example, FREAD or FWRITE). If the
file cannot be opened, the file number returned is zero, and the intrinsic
returns an error condition.
If your process issues more than one HPFOPEN/FOPEN call for
the same file before it is closed, this results in multiple, logically separate
accesses of that file, and MPE/iX returns a unique file number for each such
access. Also, MPE/iX maintains a separate logical record pointer (indicating
the next sequential record to be accessed) for each access where you did not
request or permit the multiaccess option at
HPFOPEN/FOPEN time.
|