HP 3000 Manuals

File Structure [ Getting Started as an MPE/iX Programmer Programmer's Guide ] MPE/iX 5.0 Documentation


Getting Started as an MPE/iX Programmer Programmer's Guide

File Structure 

When you create a file, the File System imposes a structure and access
method on the content of the file.  Access to records in a file are
dictated by the file type specified at file creation.  Important factors
in creating a file are discussed below.

File Types 

Depending on your intended use of the file, you can specify the following
file types:

   *   Standard file, which is the most common type of file.  It is
       structured as a group of records, beginning with record 0 and
       ending with record n-1, where n is the maximum specified in the
       filesize option.  The Standard file type is the default created
       when you first open a file.  Examples of Standard files are Editor
       files and program files.

   *   KSAM file.  Keyed Sequential Access Method (KSAM) is a method of
       organizing records based on the content of key fields within the
       records.  Each record in a KSAM file contains a primary key field;
       the contents of the primary key field determine the primary
       logical sequence of records in the file.  Other key fields can be
       defined so that you can sequence the file in other orders.  The
       order in which records are physically written to the file is the
       chronological order.  The chronological order may be the same as
       the primary key sequence or unrelated.  For detailed information
       on the creation and use of KSAM files, refer to Chapter 7, "Data
       Management" and KSAM/3000 Reference Manual (30000-90079).

   *   RIO file.  Relative I/O (RIO) is a random access method that
       permits individual file records to be deactivated.  These inactive
       records retain their relative position in the file.  RIO files are
       intended for use primarily by COBOL programs; however, you can
       access these files by programs written in any language.

You can access RIO files in two ways:  RIO access and non-RIO access.
RIO access ignores the inactive records when the file is read
sequentially using the FREAD intrinsic.  These records are transparent;
however, they can be read by random access using FREADDIR. They can be
overwritten serially and randomly using FWRITE, FWRITEDIR, or FUPDATE.
With RIO access, the internal structure of RIO blocks is transparent.

   *   Circular file, which is a wrap-around structure that behaves like
       a standard sequential file until it is full.  As records are
       written to a circular file, they are appended to the tail of the
       file; when the file is filled, the next record added causes the
       block at the head of the file to be deleted and all other blocks
       to be logically shifted toward the head of the file.  Circular
       files are particularly useful as history files and debugging
       files.  For detailed information on circular files, refer to
       Accessing Files Programmer's Guide (32650-90017).

   *   Message file, which is used by Interprocess communication (IPC), a
       facility of the File System that permits multiple user processes
       to communicate with one another easily and efficiently.  Message
       files act as first-in-first-out queues of records, with an entry
       made by FWRITE and a deletion made by FREAD. One process can
       submit records to the file with the FWRITE intrinsic while another
       process takes records from the file using the FREAD intrinsic.

For detailed information on the creation and use of Message files, refer
to Interprocess Communication Programmer's Guide (32650-90019).

File Codes 

MPE/iX subsystems often create special-purpose files whose functions are
identified by four-digit integers called file codes, written in the
system file labels.  HPFOPEN, FOPEN, :BUILD, and :FILE have parameters
for specifying a file code for a file when you create it.

File codes are useful when you want to run a program that produces an
output file several times and need to be able to uniquely identify the
output files from separate runs (or sets of runs).  You can use a :FILE
command to supply a unique file code for each run (or set of runs).

For user files, you can use any number from 0 through 1023 for a file
code.  If you do not specify a file code when you create a file, MPE/iX
automatically applies the default file code 0.  Numbers above 1023 are
predefined by Hewlett-Packard for special system files.  You should not
redefine them.  For detailed information, refer to Accessing Files 
Programmer's Guide (32650-90017).

For detailed information on creating and using a file code and on
reserved file codes, refer to Accessing Files Programmer's Guide 
(32650-90017).  For information on determining an existing file code,
refer to Getting System Information Programmer's Guide (32650-90018).

Creating a File 

When creating a file, you choose physical characteristics for it based on
how the file will be used.  These physical characteristics are determined
by parameters you choose when you:

   *   Create the file with the HPFOPEN intrinsic, FOPEN intrinsic, or
       the :BUILD command.

   *   Specify the file with the :FILE command.

Once a file has been created, you cannot change its physical
characteristics.  You can change other characteristics by redefining them
each time you open the file.  The :FILE command, HPFOPEN intrinsic, and
FOPEN intrinsic can alter the way a file is to be used.

The physical characteristics include record format, record size, volume
class, and many other attributes.  The intrinsics and commands for
specifying the physical characteristics of a file are described below.
(For detailed information on creating a file, refer to Accessing Files 
Programmer's Guide (32650-90017).

HPFOPEN and FOPEN Intrinsics.   

The HPFOPEN intrinsic is a programmatic tool that establishes access to a
disc or device file and enables you to create a file on a sharable
device.  Its optional parameters are a superset of the options in the
FOPEN intrinsic and provide more efficient file access.  You can use
HPFOPEN parameters to specify record format, record size, volume class,
and many other physical characteristics.  HPFOPEN and FOPEN allow file
names to include command interpreter (CI) variables and expressions.

When a previously non-existent file is created at run-time, the File
System must set up the physical characteristics of a NEW file.  You can
use a :FILE command to specify the physical characteristics of a NEW
file.  These override any system defaults and any specifications given in
the program or subsystem when it opens the file because no file label has
been defined for this NEW file.  If you want to keep the NEW file
permanently, you should close it as a TEMP or PERMANENT file.  Otherwise,
it is deleted when the program or subsystem terminates.  Figure 6-14  
shows an example of creating a file.

[]
Figure 6-14. Creating a File The FOPEN intrinsic is another programmatic tool for supplying the File System with information about a file. You can use optional parameters at file creation to specify record structure, file identification, file domain, and file usage characteristics. For detailed information on the HPFOPEN and FOPEN intrinsics, refer to MPE/iX Intrinsics Reference Manual (32650-90028) and Accessing Files Programmer's Guide (32650-90017). The :BUILD Command. The :BUILD command creates a file in much the same way as the HPFOPEN and FOPEN intrinsics, except that they are used within a program and :BUILD is entered as an MPE/iX command. The :BUILD parameters have meanings and applications that are similar to the corresponding parameters for HPFOPEN and FOPEN. For detailed information on how to use the :BUILD command, refer to the MPE/iX Commands Reference Manual Volumes 1 and 2 (32650-90003 and 32650-90364). You can use the MPE/iX command :BUILD to create a file and specify the physical characteristics of the file to the File System. When you invoke :BUILD, the File System sets up the physical characteristics in the file label and allocates space for a permanent file on disc. For detailed information, refer to the MPE/iX Commands Reference Manual Volumes 1 and 2 (32650-90003 and 32650-90364) and Accessing Files Programmer's Guide (32650-90017). Deleting Files You can use the :PURGE command to delete files from disc. This command deletes the specified file by removing the directory entry pointing to the file. It can be used to delete PERMANENT or TEMP files. The :PURGE command does not accept wildcard characters. Renaming Files You can use the :RENAME command on a TEMP or PERMANENT file if you are the creator of the file. :RENAME can be used to change the file name and add or change a lockword. You can use :RENAME to move a file to a different group in which you have SAVE access. Renaming the file does not change the file domain, and you cannot rename a file while it is in use. Saving Temporary Files You can use the :SAVE command on a temporary file to make it permanent. This operation requires you to provide the file's lockword (if it has one). For example, you could save $OLDPASS to a new name using the following syntax, where newfilereference is the name to which you want to save $OLDPASS: :SAVE $OLDPASS, newfilereference Listing File Characteristics You can use the :LISTFILE command to see what the characteristics of a file are. :LISTFILE provides the following information: * File names and structure of permanent disc files * Various levels of detail about each file, depending on the user's capability on the system * Number of records in the file * Number of extents * Maximum number of extents * Records per block The :FILE Command The :FILE command determines how a file will be accessed. You can use :FILE to describe any of the characteristics available with HPFOPEN, FOPEN, or :BUILD, but you cannot actually create a file with the :FILE command. While HPFOPEN, FOPEN, and :BUILD physically allocate space for a file and define its characteristics, the :FILE command can define only how a file will be accessed at run time. FILE sets up an environment for the file at run time and specifies the file's attributes when it is opened. When you invoke a :FILE command, the Command Interpreter checks it for syntactic correctness and saves a file equation in a job or session table for use when the referenced file is opened. Another process, such as an HPFOPEN or FOPEN, performed on the referenced file activates the information specified in the :FILE command. To be effective, the :FILE command must be invoked before the file is accessed because the parameters specified for :FILE take effect when the file is accessed. They remain in effect until one of the following conditions occurs: * The job or session ends. * A :RESET command is invoked. * The parameters are overridden by another :FILE command invoked for the same formal file designator. File equations are kept track of by a table created for the job or session. You can use the MPE/iX commands :LISTEQ to see a list of the current file equations and and :LISTFTEMP to see a list of the current temporary file names. For an example of using the :FILE command and a comparison of the parameters for HPFOPEN, FOPEN, and :FILE, refer to the MPE/iX Commands Reference Manual Volumes 1 and 2 (32650-90003 and 32650-90364) and Accessing Files Programmer's Guide (32650-90017).


MPE/iX 5.0 Documentation