DEFINE FILE u(m, n, U, asv) [,u(m, n, U, asv)]...
u Is an integer constant or variable that specifies the logical unit number.
m Is an integer constant or variable that specifies the number of records in the file.
n Is an integer constant or variable that specifies the length of each record in 16-bit words (2 bytes).
U Specifies that the file is unformatted (binary); this is the only acceptable entry in this position.
asv Is an integer variable, called the associated variable of the file. At the end of each direct access I/O operation, the record number of the next higher numbered record in the file is assigned to "asv"; "asv" must not be a dummy argument.
The DEFINE FILE statement specifies that a file containing "m" fixed-length records, each composed of n 16-bit words, exists (or is to exist) on the specified logical unit. The records in the file are numbered sequentially from 1 through "m".
A DEFINE FILE statement must be executed before the first direct access I/O statement referring to the specified file, even though the DEFINE FILE statement does not itself open the file. The file is actually opened when the first direct access I/O statement for the unit is executed.
If this I/O statement is a WRITE statement, a new relative
organization file is created. If it is a READ or FIND statement,
an existing file is opened, unless the specified file does not
exist. If a file does not exist, an error occurs.
The ENCODE and DECODE statements transfer data between variables or
arrays in internal storage. The ENCODE statement translates data
from internal (binary) form to character form. Inversely, the
DECODE statement translates data from character to internal form.
These statements are comparable to using internal files in
formatted sequential WRITE and READ statements, respectively.
ENCODE (c,f,b [,IOSTAT=ios] [,ERR=s]) [list] DECODE (c,f,b [,IOSTAT=ios] [,ERR=s]) [list]
c Is an integer expression. In the ENCODE statement, "c" is the number of characters (in bytes) to be translated to character form. In the DECODE statement, "c" is the number of characters to be translated to internal form.
f Is a format identifier. An error occurs if more than one record is specified.
b Is a scalar or array reference. If b is an array reference, its elements are processed in the order of subscript progression. The data type of "b" determines the number of characters that ENCODE or DECODE can process.
In the ENCODE statement, "b" receives the characters after translation to external form. If less than "c" characters are received, the remaining character positions are filled with blank characters.
In the DECODE statement, "b" contains the characters to be translated to internal form.
ios Is an integer scalar memory reference that is defined as a positive integer if an error occurs, and zero if no error occurs.
s Is the label of an executable statement.
list Is an I/O list.
In the ENCODE statement, the "list" contains the data to be translated to character form. In the DECODE statement, the "list" receives the data after translation to internal form.
The interaction between the format specifier and the
I/O list is the same as for a formatted I/O statement.
The FIND statement positions a direct access file at a particular
record and sets the associated variable of the file to that record
number. It is comparable to a direct access READ statement with no
I/O list, and can open an existing file. No data transfer takes
place. Statement format:
FIND (u'r [,ERR=s] [,IOSTAT=ios]) FIND ([UNIT=]u, REC=r [,ERR=s] [,IOSTAT=ios])
u Is a logical unit number. It must refer to a relative organization file.
r Is the direct access record number. It cannot be less than one or greater than the number of records defined for the file.
s Is the label of the executable statement that receives control if an error occurs.
ios Is an integer variable or integer array element
that is defined as a positive integer if an error
occurs, and as a zero if no error occurs.
If you specify the /NOF77 qualifier, you get an interpretation of
the EXTERNAL statement that aids compatibility with older versions
of Fortran. (The ANSI FORTRAN-77 interpretation is incompatible
with the previous standard and previous Digital implementations.)
The NOF77 interpretation combines the functionality of the INTRINSIC statement with that of the EXTERNAL statement discussed under the Help topic: Statements EXTERNAL.
The NOF77 EXTERNAL statement lets you use subprograms as arguments to other subprograms. The subprograms to be used as arguments can be either user-supplied procedures or Fortran library functions. Statement format:
EXTERNAL [*]v [,[*]v]...
v Is the symbolic name of a subprogram or the name of a dummy argument associated with the symbolic name of a subprogram.
* Specifies that a user-supplied function is to be used instead of a Fortran library function having the same name.
The NOF77 EXTERNAL statement declares that each symbolic name in its list is an external procedure name. Such a name can then be used as an actual argument to a subprogram, which in turn can use the corresponding dummy argument in a function reference or CALL statement.
However, used as an argument, a complete function reference
represents a value, not a subprogram name.
Octal forms of integer constants allow compatibility with PDP-11
FORTRAN. Statement format:
nn Is a string of digits in the range 0 to 7 (for example "107).
Integer constants in octal form have integer data type and are
treated as integers.
This statement is similar to the one discussed in Help topic:
Statements PARAMETER; they both assign a symbolic name to a
constant. However, this PARAMETER statement differs from the other
one in the following two ways: its list is not bounded with
parentheses; and the form of the constant, rather than implicit or
explicit typing of the symbolic name, determines the data type of
the variable. Statement format:
PARAMETER p=c [,p=c]...
p Is a symbolic name.
c Is a constant, the symbolic name of a constant, or a
compile-time constant expression.
The VIRTUAL statement is included for compatibility with PDP-11
FORTRAN. It has the same form and effect as the DIMENSION
statement (see Help Topic: Statements DIMENSION).
In DEC Fortran, you can use the following alternative syntax for
binary, octal, and hexadecimal constants:
Alternative Syntax Equivalent
Binary B'0..1' '0..1'B
Octal O'0..7' '0..7'O
Hexadecimal X'0..F' or Z'0..F' '0..F'X or '0..F'Z
In DEC Fortran, you can specify the following form for a record
r Is a numeric expression with a value that represents the position of the record to be accessed using direct access I/O. The value must be greater than or equal to 1, and less than or equal to the maximum number of records allowed in the file. If necessary, a record number is converted to integer data type before being used.