OPEN Statement (Executable) [ HP FORTRAN 77/iX Reference ] MPE/iX 5.0 Documentation
 
  
  
  
 
HP FORTRAN 77/iX Reference
OPEN Statement (Executable) 
The OPEN statement establishes a connection between a unit number and a
file.  It also establishes or verifies the properties of a file.
            
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
|    Item     |             Description/Default             |           Restrictions           |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| unit        | Specifies unit number.                      | Integer expression >= 0.         |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| name        | Character variable.                         | May be fixed or variable.        |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| label       | Control transfers to specified executable   | Must be the statement label of   |
|             | statement if error encountered on OPEN.     | an executable statement in the   |
|             |                                             | same program unit.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| ios         | ios = 0 if no error; ios = positive value   | Integer variable, array element, |
|             | if error condition exists.                  | or scalar record field.          |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| sta         | Specifies file as 'OLD', 'NEW', 'SCRATCH',  | Character variable, array        |
|             | or 'UNKNOWN' (default).  See Note 1.        | element, substring, or scalar    |
|             |                                             | record field.                    |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| acc         | Specifies file access to be 'DIRECT',       | Character variable, array        |
|             | 'KEYED', or 'SEQUENTIAL' (default).  See    | element, substring, or scalar    |
|             | Note 2.                                     | record field.                    |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| fm          | Specifies data format to be 'FORMATTED' or  | Character variable, array        |
|             | 'UNFORMATTED'. If absent and                | element, substring, or scalar    |
|             | ACCESS='SEQUENTIAL' is specified,           | record field.                    |
|             | 'FORMATTED' is assumed; If absent and       |                                  |
|             | ACCESS='DIRECT' is specified, 'UNFORMATTED' |                                  |
|             | is assumed.  If absent and KEYED is         |                                  |
|             | specified, UNFORMATTED is assumed.          |                                  |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| rcl         | Specifies record length for direct access   | Numeric expression.              |
|             | and ISAM files; length is measured in       |                                  |
|             | bytes.                                      |                                  |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| blnk        | Specifies treatment of blanks within        | Character variable, array        |
|             | numbers in input.  If 'NULL' (default),     | element, substring, or scalar    |
|             | blanks are ignored.  If 'ZERO', blanks are  | record field.                    |
|             | treated as zeros.                           |                                  |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| mrec        | See "Semantics".                            | Integer variable, array element, |
|             |                                             | or scalar record field.          |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| use         | See "Semantics".                            | Character variable, array        |
|             |                                             | element, substring, or scalar    |
|             |                                             | record field.                    |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| node        | See "Semantics".                            | Integer variable, array element, |
|             |                                             | or scalar record field.          |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| key_spec    | See "Semantics".                            | Integer variable, character      |
|             |                                             | expression, or scalar record     |
|             |                                             | field.                           |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| asvar       | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| blsz        | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| bufct       | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| cctl        | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| dfile       | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| dsp         | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| dsps        | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
          Table 3-8.  (cont.) 
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
|    Item     |             Description/Default             |           Restrictions           |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| exdsz       | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| init        | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| org         | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
|             |                                             |                                  |
| uopen       | See "Semantics".                            | Value not checked.               |
|             |                                             |                                  |
------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
|                                                                                     |
| Note 1                                                                              |
|                                                                                     |
---------------------------------------------------------------------------------------
|        |              |                              |                              |
| If     | =            | then the                     | and                          |
|        |              |                              |                              |
---------------------------------------------------------------------------------------
|        |              |                              |                              |
| STATUS | 'OLD'        | FILE specifier is required   | The file must exist.         |
|        |              |                              |                              |
|        | 'NEW'        | FILE specifier is required   | The file named must not      |
|        |              |                              | exist.                       |
|        |              |                              |                              |
|        | 'SCRATCH'    | FILE specifier must not be   | A scratch file is created.   |
|        |              | present                      |                              |
|        |              |                              |                              |
---------------------------------------------------------------------------------------
|        |              |                              |                              |
| If     | =            | and if the                   | then                         |
|        |              |                              |                              |
---------------------------------------------------------------------------------------
|        |              |                              |                              |
| STATUS | 'UNKNOWN'    | FILE specifier is present    | The file named is created if |
|        |              |                              | it does not already exist.   |
|        |              |                              |                              |
|        |              | FILE specifier is not        | A nondisk unit is connected  |
|        |              | present                      | to the unit specified.       |
|        |              |                              |                              |
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
|                                                                                     |
| Note 2                                                                              |
|                                                                                     |
---------------------------------------------------------------------------------------
|        |              |                              |                              |
| If     | =            | then the                     | and the                      |
|        |              |                              |                              |
---------------------------------------------------------------------------------------
|        |              |                              |                              |
| ACCESS | 'SEQUENTIAL' | RECL specifier may be        | File is opened for           |
|        |              | present                      | sequential access.           |
|        |              |                              |                              |
|        | 'DIRECT'     | RECL specifier is required   | File is opened for direct    |
|        |              |                              | access.                      |
|        |              |                              |                              |
|        | 'KEYED'      | RECL specifier is required.  | File is opened as a fixed    |
|        |              | RECORDTYPE must be fixed.    | length ISAM file.            |
|        |              |                              |                              |
|        | 'APPEND'     | File is opened for           | If ACCESS=`APPEND' is        |
|        |              | sequential access beginning  | specified with READONLY, a   |
|        |              | after the last record of the | runtime error will occur.    |
|        |              | file.                        |                              |
|        |              |                              |                              |
---------------------------------------------------------------------------------------
Semantics 
The name field can also be the ASCII representation of a device file.
The UNIT specifier is required in the keyword list.  If the prefix UNIT=
is omitted, unit must be the first item in the list.  At most one each of
the other items can appear in the keyword list.
If the ERR specifier is present and an error occurs during execution of
the OPEN statement, control transfers to the specified statement rather
than aborting the program.
If the IOSTAT specifier is present and an error occurs, the error code is
returned in the ios variable and the program is not aborted.  Refer to
Appendix A  for IOSTAT error codes.
For the character expressions used with STATUS, ACCESS, FORM, and BLANK,
only the first character in each is significant.
The following specifiers, extensions to the ANSI 77 standard, are
included for compatibility with programs originally written in another
version of FORTRAN. 
ASSOCIATEVARIABLE    DISPOSE              NOSPANBLOCKS
BLOCKSIZE            EXTENDSIZE           ORGANIZATION
BUFFERCOUNT          INITIALSIZE          RECORDSIZE
CARRIAGECONTROL      MAXREC               TYPE
DEFAULTFILE          NAME                 USE
DISP                 NODE                 USEROPEN
If used in a program, their syntax is checked, but they are otherwise
ignored by the compiler.
Once a file is connected to a unit number, the unit can be referenced by
any program unit in the program.  If a unit is already connected to an
existing file, execution of another OPEN statement for that unit is
permitted.  If the FILE specifier is absent or the file name is the same,
the current file remains connected.  Otherwise, an automatic close is
performed before the new file is connected to the unit.  A redundant OPEN
call can be used to change only the value of the BLANK option.  However,
attempts to change the values of any other specifiers with a redundant
OPEN are ignored.  A redundant OPEN does not affect the current position
of the file.
The same file cannot be connected to two different units.  An attempt to
open a file that is connected to a different unit by the same name causes
an error. 
As an extension to the ANSI 77 standard, indexed sequential access (ISAM)
is allowed on an OPEN statement.  Indexed files can be accessed with a
key, which is part of the record.  The specifier KEY=key_spec specifies
the length of the key.  key_spec has the form:
exp1 :  exp2 [:  data_type]
where exp1 is the first byte position of the key and exp2 is the last
byte position of the key.  data_type is the data type of the key and must
be integer or character.  The length of the key is determined by the
expression:
     exp2 - exp1 + 1
The following table shows the use of ACCESS, RECL, and RECORDTYPE to
determine whether an indexed file is variable or fixed length.
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
|      ACCESS      |    RECL    |    RECORDTYPE     |                 File Type                  |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'SEQUENTIAL'     | Absent     |                   | Variable length file                       |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'SEQUENTIAL'     | Present    |                   | Variable length file                       |
|                  |            |                   | (RECL = maximum record length)             |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'DIRECT'         | Absent     |                   | Error                                      |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'DIRECT'         | Present    |                   | Fixed length file                          |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'KEYED'          | Present    | Variable          | Error                                      |
|                  |            |                   | (RECL = maximum record length)             |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'KEYED'          | Present    | Fixed             | Fixed length index sequential access file  |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'KEYED'          | Absent     | Variable          | Error                                      |
|                  |            |                   | (Maximum record length is 2048 bytes)      |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
|                  |            |                   |                                            |
| 'KEYED'          | Absent     | Fixed             | Error                                      |
|                  |            |                   |                                            |
--------------------------------------------------------------------------------------------------
By default, files are opened for shared read/write access.
Rewinding a file opened with ACCESS=`APPEND' repositions the file pointer
at the beginning of the file.
Backspacing a file that is opened with ACCESS=`APPEND' can reposition the
file pointer beyond the initial access point.
An inquire with ACCESS=acc returns acc='SEQUENTIAL' for files opened with
ACCESS='APPEND'.
If ACCESS=`APPEND' is specified with READONLY, a runtime error will
occur.
The READONLY specifier causes the file to be opened for read only access.
READONLY can be specified on a file to prevent writing into it by
accident.  Any attempt to write to a read-only file generates a "FILE
SYSTEM ERROR" message.
The SHARED specifier explicitly sets the file for shared access.  This
permits the file to be shared by multiple programs.  Since shared is also
the default condition, SHARED has no effect.
NOTE  When a file is opened with the unit specifier specified, but with
      no file specifier, a scratch file is opened.  Therefore, the
      following two statements are equivalent:
           OPEN (UNIT=19)
           OPEN (UNIT=19, STATUS='SCRATCH')
                 Examples                                      Notes 
---------------------------------------------------------------------------------------
       OPEN (10,FILE='inv',                 The file inv is connected to unit 10 as a
     1ACCESS='SEQUENTIAL',                  sequential file.  If an error occurs,
     2ERR=100,IOSTAT=ios)                   control transfers to statement 100 and the
                                            error code is placed in the variable ios.
       OPEN (ACCESS='DIRECT',               The character variable next1 contains the
     1UNIT=4,RECL=50,                       name of the file to be connected to unit 4
     2FORM='FORMATTED',FILE=next1)          as a formatted, direct access file with a
                                            record length of 50 characters.
                     program append
                     character*2 FN
                     character*20 STR, line
                     integer recnum
                     PARAMETER(LU=15)
                     PARAMETER(FN='Afile')
                     PARAMETER(STR='This is record')
             C       Open file and write to it sequentially
                     CALL OPEN_AND_WRITE(LU,FN,STR)
             C       Open existing file for APPEND access
                     OPEN(unit=LU,file=FN,access='append',iostat=ios,err=99)
                     DO I = 26, 50
                        WRITE(LU,500) STR, i
                     END DO
                     REWIND(LU)
                     DO I = 1, 50
                        READ(LU,500) line, recnum
                        IF (line .ne. STR) THEN
                           WRITE(6,*) 'line = ',line
                           STOP 'READ FAILED - read back incorrect'
                        END IF
                        IF (recnum .ne. i) THEN
                           WRITE(6,*) 'recnum = ',recnum
                           STOP 'READ FAILED - read back incorrect'
                        END IF
                     END DO
                     CLOSE(LU,status='keep')
                     STOP
                99   continue
                     WRITE(6,*) 'iostat value = ',ios
                     STOP 'APPEND OPEN FAILED'
               500   FORMAT(2X,A20,I4)
                     END
                     subroutine OPEN_AND_WRITE(LUNIT,FNAME,STR)
                     character*2 FNAME
                     character*20 STR
                     OPEN(unit=LU,file=FNAME,access='sequential',iostat=ios,err=98)
                     DO I = 1, 25
                        WRITE(LU,499) STR, i
                     END DO
                     CLOSE(LU)
                98   continue
                     WRITE(6,*) 'iostat value = ',ios
                     STOP 'OPEN FAILED'
               499   FORMAT(2X,A20,I4)
                     END
 
  
  
  
 
 MPE/iX 5.0 Documentation