Here are the details:
Unformatted record size in words rather than bytes
In f77, direct-access, unformatted files are always opened with the logical record size in bytes.
If the -xl[d] option is not set, then the argument n in the OPEN option RECL=n is assumed to be the number of bytes to use for the record size.
If the -xl[d] option is set, then the argument n in the OPEN option RECL=n is assumed to be the number of words, so the compiler uses n*4 as the number of bytes for the record size.
If the -xl[d] option is set, and if the compiler cannot determine if the file is formatted or unformatted, then it issues a warning message that the record size may need to be adjusted. This result could happen if the information is passed in variable character strings.
The record size returned by an INQUIRE statement is not adjusted by the compiler; that is, INQUIRE always returns the number of bytes.
These record sizes apply to direct-access, unformatted files only.
VMS-style logical file names
If the -xl[d] option is set, then the compiler interprets VMS logical file names on the INCLUDE statement if it finds the environment variable, LOGICALNAMEMAPPING, to define the mapping between the logical names and the UNIX path name.
You set the environment variable to a string of the form:
"lname1=path1; lname2=path2; "
Remember these rules for VMS style logical file names:
Each lname is a logical name and each path1, path2, and so forth, is the path name of a directory (without a trailing /).
It ignores all blanks when parsing this string.
It strips any trailing /[no]list from the file name in the INCLUDE statement.
Logical names in a file name are delimited by the first : in the VMS file name.
It converts file names from lname1:file to the path1/file form.
For logical names, uppercase and lowercase are significant. If a logical name is encountered on the INCLUDE statement which is not specified in the LOGICALNAMEMAPPING, the file name is used, unchanged.
Quote (") character introducing octal constants
If the -xl[d] compiler option is on, a VMS FORTRAN octal integer constant is treated as its decimal form.
Example: VMS octal integer constant:
JCOUNT = ICOUNT + "703
The above statement is treated as:
JCOUNT = ICOUNT + 451
If the -xl[d] option is not on, then the "703 is an error.
With -xl[d], the VMS FORTRAN notation "703 signals f77 to convert from the integer octal constant to its integer decimal equivalent, 451 in this case. In VMS FORTRAN, "703 cannot be the start of a character constant, because VMS FORTRAN character constants are delimited by apostrophes, not quotes.
Backslash (\) as ordinary character within character constants
If the -xl[d] option is on, a backslash in a character string is treated as an ordinary character; otherwise, it is treated as an escape character.
Nonstandard form of the PARAMETER statement
The alternate PARAMETER statement syntax is allowed, if the -xl[d] option is on.
Example: VMS alternate form of PARAMETER statement omits the parentheses:
PARAMETER FLAG1 = .TRUE.
Debugging lines as comment lines or FORTRAN statements (-xld)
The compiler interprets debugging lines as comment lines or FORTRAN statements, depending on whether the -xld option is set. If set, they are compiled; otherwise, they are treated as comments.
REAL A(5) / 5.0, 6.0, 7.0, 8.0, 9.0 / DO I = 1, 5 X = A(I)**2 D PRINT *, I, X END DO PRINT *, 'done' END
With -xld, this code prints I and X. Without -xld, it does not print them.
Align structures as in VMS FORTRAN
Use this feature if your program has some detailed knowledge of how VMS structures are implemented. If you need to share structures with C, you should use the default: no -xl