HPlogo Accessing Files Programmer's Guide > Chapter 5 Opening a File

How the File System Opens a File

MPE documents

Complete PDF
Table of Contents
Index

E0300 Edition 6 ♥
E0692 Edition 5

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")

    1. 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.

    2. 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.

    3. The parameter list of this HPFOPEN/FOPEN intrinsic call.

    4. 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

[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.




Chapter 5 Opening a File


Which to Use: HPFOPEN or FOPEN