OPEN

Statement: Connects an external file to a unit, creates a new file and connects it to a unit, creates a preconnected file, or changes certain properties of a connection.

Syntax

OPEN ([UNIT=] io-unit[, FILE= name] [, ERR= label] [, IOMSG=msg-var] [, IOSTAT=i-var],slist)

io-unit

Is an external unit specifier.

name

Is a character or numeric expression specifying the name of the file to be connected. For more information, see FILE Specifier and STATUS Specifier.

label

Is the label of the branch target statement that receives control if an error occurs. For more information, see Branch Specifiers.

msg-var

Is a scalar default character variable that is assigned an explanatory message if an I/O error occurs. For more information, see I/O Message Specifier.

i-var

Is a scalar integer variable that is defined as a positive integer (the number of the error message) if an error occurs, a negative integer if an end-of-file record is encountered, and zero if no error occurs. For more information, see I/O Status Specifier.

slist

Is one or more of the following OPEN specifiers in the form specifier= value or specifier (each specifier can appear only once):

The OPEN specifiers and their acceptable values are summarized in the OPEN Statement Overview.

The control specifiers that can be specified in an OPEN statement are discussed in I/O Control List in the Language Reference.

Description

The control specifiers ([UNIT=] io-unit, ERR= label, and IOSTAT= i-var) and OPEN specifiers can appear anywhere within the parentheses following OPEN. However, if the UNIT specifier is omitted, the io-unit must appear first in the list.

If you specify BLANK=, DECIMAL=, PAD=, ROUND=, or SIGN=, you must also specify FMT= or NML=.

If you specify ID=, you must also specify ASYNCHRONOUS='YES'.

Specifier values that are scalar numeric expressions can be any integer or real expression. The value of the expression is converted to integer data type before it is used in the OPEN statement.

If the NEWUNIT= specifier does not appear, an io-unit must be specified. If the keyword UNIT= is omitted, the io-unit must be first in the control list.

If the NEWUNIT= specifier appears, an io-unit must not be specified.

If the NEWUNIT= specifier appears, either the FILE= specifier or the STATUS=SCRATCH specifier must also appear.

Only one unit at a time can be connected to a file, but multiple OPENs can be performed on the same unit. If an OPEN statement is executed for a unit that already exists, the following occurs:

The ERR and IOSTAT specifiers from any previously executed OPEN statement have no effect on any currently executing OPEN statement. If an error occurs, no file is opened or created.

Secondary operating system messages do not display when IOSTAT is specified. To display these messages, remove IOSTAT or use a platform-specific method.

Example

You can specify character values at run time by substituting a character expression for a specifier value in the OPEN statement. The character value can contain trailing blanks but not leading or embedded blanks; for example:

  CHARACTER*6 FINAL /' '/
  ...
  IF (expr) FINAL = 'DELETE'
  OPEN (UNIT=1, STATUS='NEW', DISP=FINAL)

The following statement creates a new sequential formatted file on unit 1 with the default file name fort.1:

  OPEN (UNIT=1, STATUS='NEW', ERR=100)

The following statement creates a file on magnetic tape:

  OPEN (UNIT=I, FILE='/dev/rmt8',                                  &
       STATUS='NEW', ERR=14, RECL=1024)

The following statement opens the file (created in the previous example) for input:

  OPEN (UNIT=I, FILE='/dev/rmt8', READONLY, STATUS='OLD',          &
       RECL=1024)

The following example opens the existing file /usr/users/someone/test.dat:

   OPEN (unit=10, DEFAULTFILE='/usr/users/someone/', FILE='test.dat',
  1     FORM='FORMATTED', STATUS='OLD')

The following example opens a new file:

 ! Prompt user for a filename and read it:
 CHARACTER*64 filename
 WRITE (*, '(A\)') ' enter file to create: '
 READ (*, '(A)') filename
 ! Open the file for formatted sequential access as unit 7.
 ! Note that the specified access need not have been specified,
 ! since it is the default (as is "formatted").
 OPEN (7, FILE = filename, ACCESS = 'SEQUENTIAL', STATUS = 'NEW')
 The following example opens an existing file called DATA3.TXT:
 ! Open a file created by an editor, "DATA3.TXT", as unit 3:
 OPEN (3, FILE = 'DATA3.TXT')

See Also


Submit feedback on this help topic

Copyright © 1996-2010, Intel Corporation. All rights reserved.