1 FORTRAN
! SBL2001 - Correct text for /D_LINES.  17-Feb-1981
! JLC3001 - Add V3 qualifiers.          05-Jun-1981
! JLC3002 - Change SOURCE_LIST to SHOW, add /STANDARD qualifier 14-Aug-1981
! JLC3003 - Change number of underflows reported from ten to 2  14-Sep-1981
! JLC3004 - Add /NOSHOW, SHOW=ALL, SHOW=NONE    06-Oct-1981
! JLC3005 - Change SHOW default to /NOSHOW      06-Oct-1981
! JLC3006 - Make editorial changes to /STANDARD 22-Oct-1981
! JLC3007 - Add /SHOW=[NO]MAP   23-Mar-1882
! JLC3008 - Document source file correlation with /DEBUG        25-Mar-1982
! MODIFIED BY MITRE TO ADD THE LANGUAGE HELP FILE.  D GRAY NOV-1981
! this Language help file is still at FORTRAN V2.0 level
! MITRE does not place any copywright or restriction on the use of this
! file.  We assume that the file is property of Digital Equipment Corp.
Invokes the VAX-11 FORTRAN compiler to  compile  one  or  more  source
programs.   This  command is described in detail in the VAX-11 FORTRAN
User's Guide.

 Format:

      FORTRAN   file-spec[,...]

2 Parameters

 file-spec[,...]


  Specifies one or more VAX-11  FORTRAN  source  programs  to  be
  compiled.  If you do not specify a file type, the compiler uses
  the default file type of FOR.

  You can specify more than one input file.  If you separate  the
  file  specifications  with  commas  (,),  each file is compiled
  separately and an object module is produced for each file.   If
  you  separate  the file specifications with plus signs (+), the
  files are concatenated and compiled as  a  single  input  file,
  producing  one  object  module  and, if /LIST is specified, one
  listing.
2 Qualifiers


/CHECK[=(option[,...])] (D=(NOBOUNDS,OVERFLOW,NOUNDERFLOW))
/NOCHECK

  Controls whether the compiler produces extra code to check  for
  program correctness at run time.  You can request the following
  options:

    ALL           Provides  BOUNDS,   OVERFLOW,   and   UNDERFLOW
                  checks.

    NONE          Provides no checking.

    [NO]BOUNDS    Controls the production of code to  check  that
                  all  array  references and substring references
                  are to addresses within the address  boundaries
                  specified in the array declaration or character
                  variable  declaration.    The   BOUNDS   option
                  produces this code.

    [NO]OVERFLOW  Enables or  disables  integer  overflow  traps.
                  Fixed-point    calculations   involving   BYTE,
                  INTEGER*2, and INTEGER*4 data types are checked
                  for  arithmetic  overflow  when you specify the
                  OVERFLOW option.

    [NO]UNDERFLOW Enables   or   disables   floating    underflow
                  exceptions.   If  /CHECK=UNDERFLOW,  then error
                  messages are issued for the first two  floating
                  underflows.   Regardless  of the setting of the
                  UNDERFLOW qualifier,  zero  is  stored  as  the
                  result   which   underflowed  and  the  program
                  continues.


  By default, if you omit  the  /CHECK  qualifier  entirely,  the
  compiler  produces  code  to  check  only  for integer overflow
  (equivalent to /CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW).

  However, if you specify  /CHECK  without  options,  you  obtain
  BOUNDS,   OVERFLOW,   and  UNDERFLOW  checking  (equivalent  to
  /CHECK=ALL).

  Note that /NOCHECK is equivalent to /CHECK=NONE.

  If you specify more than one option, separate  them  by  commas
  and enclose the list in parentheses.


/CONTINUATIONS=n (D=19)

  Specifies the  maximum  number  of  continuation  lines  to  be
  permitted.

  The number of lines, n, is a decimal number from 0 through  99.
  By  default,  the compiler accepts a maximum of 19 continuation
  lines.


/CROSS_REFERENCE
/NOCROSS_REFERENCE (D)

  Controls whether the compiler generates  a  cross-reference  as
  part of the symbol table map.

  The   default   is   /NOCROSS_REFERENCE   which    omits    the
  cross-reference  from  the  symbol  map.   The /CROSS_REFERENCE
  qualifier  is  ignored  unless  /LIST  is   specified,   either
  explicitly or by default.


/DEBUG[=(option[,...])] (D=(NOSYMBOLS, TRACEBACK))
/NODEBUG

  Controls whether the compiler  makes  local  symbol  table  and
  traceback  information  available  to  the debugger and the run
  time error reporting mechanism.

  You can request the following options:

    ALL           Provides both local symbol table and  traceback
                  information.

    NONE          Provides  neither  local   symbol   table   nor
                  traceback information.

    [NO]SYMBOLS   Controls whether the  debugger  receives  local
                  symbol  definitions for user-defined variables,
                  arrays, and labels  on  executable  statements,
                  and  whether  the debugger receives source line
                  correlation  records.    The   SYMBOLS   option
                  provides this information.

    [NO]TRACEBACK Controls the production  of  compiler-generated
                  line  numbers  so  that  the  debugger  and the
                  run-time error traceback routine can  translate
                  virtual    addresses    into   source   program
                  subroutine  names  and   line   numbers.    The
                  TRACEBACK option produces the line numbers.

  By default, if you completely omit the  /DEBUG  qualifier,  the
  compiler produces only an address correlation table (equivalent
  to  /DEBUG=(NOSYMBOLS,TRACEBACK)).   However,  if  you  specify
  /DEBUG  without  any  options,  the default is both SYMBOLS and
  TRACEBACK (equivalent to /DEBUG=ALL).

  Note that /NODEBUG is equivalent to /DEBUG=NONE.

  For details on how to debug a VAX-11 FORTRAN program  with  the
  VAX-11 Symbolic Debugger, see the VAX-11 FORTRAN User's Guide.


/D_LINES
/NOD_LINES (D)

  Indicates whether the compiler reads and  compiles  lines  that
  have  a  D  in  column 1 of the source program.  If you specify
  /D_LINES, lines that have a D in column 1 are compiled.

  The default is /NOD_LINES, which  means  the  compiler  assumes
  that lines beginning with a D are comments and does not compile
  them.


/DML

  Controls  whether  the  FORTRAN  Data   Manipulation   Language
  preprocessor  is invoked before the compiler.  The preprocessor
  produces an intermediate file which  is  compiled.   The  /SHOW
  qualifier controls whether the expanded source generated by the
  preprocessor appears in the listing file.

  The default is not to invoke the DML preprocessor.


/F77 (D)
/NOF77

  Controls whether FORTRAN-77 interpretation rules are  used  for
  those  statements that have a meaning that is incompatible with
  FORTRAN IV-PLUS.

  The default is /F77.   If  you  specify  /NOF77,  the  compiler
  selects   FORTRAN   IV-PLUS   interpretations   in   cases   of
  incompatibility.


/G_FLOATING
/NOG_FLOATING (D)

  Controls  the  interpretation  of  REAL*8,  COMPLEX*16,  DOUBLE
  PRECISION and DOUBLE COMPLEX declarations.

  The default is /NOG_FLOATING,  which  causes  the  compiler  to
  interpret  the above declarations as the VAX-11 D_floating data
  type.  If you specify /G_FLOATING, the compiler interprets them
  as  the  VAX-11  G_floating  data type.  See the VAX-11 FORTRAN
  User's Guide for more details.


/I4 (D)
/NOI4

  Controls  how  the  compiler  interprets  INTEGER  and  LOGICAL
  declarations  that  do  not  specify  a length.  If you specify
  /NOI4,  the  compiler  interprets  these   as   INTEGER*2   and
  LOGICAL*2, respectively.

  The default is /I4, which means the compiler  interprets  these
  declarations as INTEGER*4 and LOGICAL*4.

  NOTE: THE GENERAL MITRE TAFS DEFAULT FOR THIS IS /NOI4.  IF YOU
  WANT I4 AS DEFAULT ADD $DEL/SYM/GLO FORTRAN TO YOUR LOGIN.COM


/LIBRARY

  Indicates that an input file is a text  library.   The  default
  file type for a text library is .TLB.  The INCLUDE statement in
  a FORTRAN program allows  you  to  extract  modules  from  text
  libraries.

  The /LIBRARY qualifier can appear on one or more of  the  files
  in  a  list  of files separated by plus signs.  At least one of
  the files in the list must be a non-library file.


/LIST[=file-spec]
/NOLIST

  Controls whether a listing file is produced.

  If the FORTRAN command is executed from interactive  mode,  the
  compiler,  by  default, does not create a listing file.  If the
  FORTRAN command is executed  from  batch  mode,  /LIST  is  the
  default;   the compiler gives a listing file the same file name
  as the first input source file and a file type of LIS.


/MACHINE_CODE
/NOMACHINE_CODE (D)

  Controls whether the listing produced by the compiler  includes
  the machine language code generated by the compiler.

  The default is /NOMACHINE_CODE, which  omits  machine  language
  code in the listing.  The /MACHINE_CODE qualifier is ignored if
  /LIST is not specified, either explicitly or by default.


/OBJECT[=file-spec] (D)
/NOOBJECT

  Controls whether the compiler produces an output object module.

  By default, the compiler produces an object module that has the
  same  file  name as the first input source file and a file type
  of OBJ.


/OPTIMIZE (D)
/NOOPTIMIZE

  Controls whether the compiler optimizes the compiled program to
  generate more efficient code.

  Use /NOOPTIMIZE in conjunction with  the  /DEBUG  qualifier  to
  link  a  VAX-11  FORTRAN  program  with  the  debugger  so that
  variables always contain their updated values.


/SHOW [= (option [,...])] (D=(NOINCLUDE,MAP,NOPREPROCESSOR))
/NOSHOW

  Controls listing file options.  You can  select  the  following
  options.

    ALL           Include all required and optional components in
                  the listing file.

    NONE          Do not include any optional components  of  the
                  listing file.

    [NO]INCLUDE   Enable or disable inclusion in the listing file
                  of source lines from files specified in INCLUDE
                  statements.  This qualifier can be  overrridden
                  by   the   /[NO]LIST   option  in  the  INCLUDE
                  statement.

    [NO]MAP       Enable or disable inclusion of the  symbol  map
                  in the listing file.

    [NO]PREPROCESSOR   Enable    or    disable    inclusion    of
                  preprocessor-generated   source  lines  in  the
                  listing file.



  Note that /SHOW is  equivalent  to  /SHOW=ALL  and  /NOSHOW  is
  equivalent to /SHOW=NONE.

  The /SHOW qualifier is  ignored  if  /LIST  is  not  specified,
  either  explicitly or by default.  The /SHOW=NOMAP qualifier is
  ignored if /CROSS_REFERENCE is specified.


/STANDARD [= (options [,...])]
/NOSTANDARD     (D)

  Controls   whether   the   compiler   produces    informational
  diagnostics for extensions to ANSI X3.9-1978 (FORTRAN-77).  You
  can specify the following options.

    ALL           Produce  informational  diagnostics   for   all
                  detected extensions.

    NONE          Do not produce  informational  diagnostics  for
                  extensions to the standard.

    [NO]SYNTAX    Produce informational  diagnostics  for  syntax
                  extensions.

    [NO]SOURCE_FORM Produce informational diagnostics  for  lower
                  case source and leading tab characters.

  The default is /NOSTANDARD (equivalent to /STANDARD=NONE).   If
  you  specify  /STANDARD  with no arguments, it is equivalent to
  /STANDARD=(SYNTAX,  NOSOURCE_FORM).   The  /STANDARD  qualifier
  only  has effect if you specify /WARNINGS, either explicitly or
  by default.

  Note the difference between the /STANDARD and /F77  qualifiers.
  The  /STANDARD  qualifier causes diagnostics to be produced for
  non-standard features.  The /F77 qualifier causes  the  FORTRAN
  77  interpretation  to  be  chosen  for  constructs  which mean
  different things in FORTRAN 77 and  previous  versions  of  VAX
  FORTRAN.


/WARNINGS       (D)
/NOWARNINGS

  Controls whether the compiler produces diagnostic messages  for
  W-level(warning) and I-level(informational) conditions.


  The default is /WARNINGS.   Use  /NOWARNINGS  to  override  the
  compiler default.
2 statements                                                                   

2 ACCEPT
 ACCEPT f[,list]
    f      is a format specifier.
           =* to denote list directed formatting
    list   is an I/O list.

    Reads one or more records from FOR$ACCEPT.
     Which defaults to SYS$INPUT.
2 ARITHMETIC REPLACEMENT
    v=e
    v   is a variable name, an array element name,
        or a character substring name.
    e   is an expression.

    Assigns the value of the arithmetic,
    logical, or character expression to the variable.
2 ASSIGN
 ASSIGN s TO v
    s   is the label of a FORMAT statement or an executable statement.
    v   is an integer variable name.

    Associates the statement label s with the integer variable v for
    later use as a format specifier or in an assigned GO TO statement.

2 BACKSPACE
 BACKSPACE ([UNIT=]u[,IOSTAT=ios][,ERR=s])
 BACKSPACE u
    u   is a logical unit specifier.
    ios is an integer variable or integer array element.
    s   is the label of an executable statement.

    Backspaces the currently open file on logical unit u one record.

2 BLOCK DATA
 BLOCK DATA [nam]
    nam   is a symbolic name.

    Specifies the subprogram that follows as a BLOCK DATA subprogram.

2 CALL
 CALL f[([a][,[a]]...)]
    f   is a subprogram name or entry point.
    a   is an expression, an array name, a procedure name, or an
        alternate return specifier.  An alternate return specifier 
        is *s or &s, where s is the label of an executable statement.

    Calls the subroutine subprogram with the name specified by f, 
    passing the actual arguments a to replace the dummy arguments
    in the subroutine definition.

2 CLOSE
 CLOSE ([UNIT=]u[,p][,IOSTAT=ios][,ERR=s])
 CLOSE u
    p   is one the following parameters:
        STATUS    'SAVE'
        DISPOSE = 'KEEP'
         (DISP)   'DELETE'
                  'PRINT'
                  'SUBMIT'
                  'PRINT/DELETE'
                  'SUBMIT/DELETE'
    u     is a logical unit specifier.
    s     is the label of an executable statement.
    ios   is an integer variable or integer array element.

    Closes the specified file.

2 COMMON
 COMMON [/[cb]/] nlist [[,]/[cb]/nlist]...
    cb     is a common block name.
    nlist  is a list of one or more variable names, array names, or array 
           declarators separated by commas.

    Reserves one or more blocks of storage space under the name
    specified to contain the variables associated with that block name.

2 CONTINUE
 CONTINUE
    Causes no processing.

2 DATA
 DATA nlist/clist/[[,] nlist/clist/]...
    nlist  is a list of one or more variable names, array names, array
           element names, character substring names, or implied DO lists, 
           separated by commas.  Subscript expressions and substring
           expressions must be constant.
    clist  is a list of one or more constants separated by commas, each 
           optionally preceded by j*, where j is a nonzero, unsigned
           integer constant.

    Initially stores elements of clist in the corresponding elements
    of nlist.

2 DECODE
 DECODE (c,f,b[,IOSTAT=ios][,ERR=s])[list]
    c      is an integer expression.
    f      is a format specifier.
    b      is a variable name, array name, array element name, or
           character substring name.
    ios    is an input/output status specifier.
    s      is a label of an executable statement.
    list   is an I/O list.

    Reads c characters from buffer b and assigns values to the elements
    in the list converted according to format specification f.

2 DEFINE
 DEFINE FILE u(m,n,U,v)[,u(m,n,U,v)]...
    u    is a logical unit specifier.
    m    is a constant or variable.
    n    is a constant or variable.
    U    specifies unformatted.
    v    is an integer variable name.

    Defines the record structure of a direct access file where u is the
    logical unit number, m is the number of fixed-length records in the 
    file, n is the length in 16-bit words of a single record, U is a
    fixed argument, and v is the associated variable.

2 DELETE
 DELETE ([UNIT=]u[,REC=r][.IOSTAT=ios][,ERR=s])
 DELETE (u'r[,IOSTAT=ios][,ERR=s])
    u   is a logical unit specifier.
    r   is a relative record number specifier.
    ios is an input/output specifier.
    s   is the label of an executable statement.

    Deletes records from relative or indexed files, where u is the 
    logical unit connected to the file, r is the number of the record in
    a relative file, ios is an input/output status specifier, and s is
    the label of the statement to which control is to be transferred
    if an error occurs.

2 DIMENSION
 DIMENSION a(d)[,a(d)]...
    a(d)   An array declarator.

    Specifies storage space requirements for arrays.

2 DO
 DO [s [,]] v= e1,e2[,e3]
    s   is the label of an executable statement.
    v   is a variable name.
    e1,e2,e3 are numeric expressions.

    Executes the DO loop by performing the following steps:
    1.  Evaluates cnt= INT((e2-e1+e3)/e3)
    2.  Sets v=e1
    3.  If cnt is less than or equal to zero, does not execute the loop
    4.  If cnt is greater than zero, then
        a.  Executes the statements in the body of the loop
        b.  Evaluates v=v+e
        c.  Decrements the loop count (cnt=cnt-1).  If cnt is greater
            than zero, repeats the loop
2 DO_WHILE
 DO [s[,]]WHILE(e)
    s   is a statement label.
    e   is a logical expression.

    Similar to the DO statement, but executes as long as the logical
    expression contained in the statement continues to be true, instead
    of for a specified number of iterations.

2 ELSE
 ELSE
    Defines a block of statements to be executed if logical expressions
    in previous IF THEN and ELSE IF THEN statements have values of 
    false.  See IF THEN.

2 ELSE IF THEN
 ELSE IF (e) THEN
    e   is a logical expression.

    Defines a block of statements to be executed if logical expressions
    in previous IF THEN and ELSE IF THEN statements have values of 
    false, and the logical expression e has a value of true. See IF THEN.

2 ENCODE
 ENCODE (c,f,b[,IOSTAT=ios][,ERR=s])[list]
    c   is an integer expression.
    f   is a format specifier.
    b   is a variable name, array name, array element name, or substring 
        name.
    ios is an input/output specifier.
    s   is a label of an executable statement.
   list is an I/O list.

    Writes c characters into buffer b, which contains the values of the
    elements of the list, converted according to format specifiction f.
2 END
 END
    Delimits a program unit.
2 END_DO
 END DO
    May be used in place of a labeled statement to delimit the body of
    a DO loop.
2 ENDFILE
 ENDFILE ([UNIT=]u[IOSTAT=ios][,ERR=s])
 ENDFILE u
    u   is a logical unit specifier.
    ios is an input/output specifier.
    s   is the label of an executable statement.

    Writes an end-file record on logical unit u.

2 END IF
 END IF
    Terminates block IF construct.  See IF THEN.
2 ENTRY
 ENTRY nam [([p[,p]...])]
    nam  is a subprogram name.
    p    is a symbolic name or an alternate return specifier(*).

    Defines an alternate entry point within a subroutine or function
    subprogram.
2 EQUIVALENCE
 EQUIVALENCE (nlist)[,(nlist)]...
    nlist is a list of two or more variable names, array names, array 
          element names, or character substring names separated by commas. 

    Subscript expressions and substring expressions must be 
    compile-time constant expressions.
    Assigns each of the names in nlist the same storage location.
2 EXTERNAL
 EXTERNAL v[,v]...
    v   is a subprogram name.

    Defines the names specified as user-defined subprograms.
2 FIND
 FIND ([UNIT=]u,REC=r[,IOSTAT=ios][ERR=s])
 FIND (u'r[,IOSTAT=ios][,ERR=s])
    u   is a logical unit specifier.
    r   is an integer expression.
    ios is an input/output specifier.
    s   is the label of an executable statement.

    Positions the file on logical unit u to record r and sets the 
    associated variable to record number r.
2 FORMAT
 FORMAT (field specification,...)
    Describes the format in which one or more records are to be 
    transmitted; a statement label must be present.
2 FUNCTION
 [typ] FUNCTION nam[*n][([p[,p]...])]
    typ   is a data type specifier.
    nam   is a symbolic name.
    *n    is a data type length specifier.
    p     is a symbolic name.

    Begins a function subprogram, indicating the program name and any
    dummy argument names (p).  An optional type specification can be
    included.
2 GO TO
 GO TO s
    s   is a label of an executable statement.

    Transfers control to statement number s.
 GO TO (slist)[,] e
    slist  is a list of one or more statement labels separated by commas.
    e      is an integer expression.

    Transfers control to the statement specified by the value of e
    (if e=1, control transfers to the first statement label; if e=2,
    control transfers to the second statement label, and so forth).
    If e is less than 1 or greater than the number of statement labels
    present, no transfer takes place.
 GO TO v [[,](slist)]
    v      is an integer variable name.
    slist  is a list of one or more statement labels separated by commas.

    Transfers control to the statement most recently associated with
    v by an ASSIGN statement.
2 IF
 IF (e) s1,s2,s3
    e         is an expression.
    s1,s2,s3  are labels of executable statements.

    Transfers control to statement s1 depending on the value of e (if
    e is less than zero, control transfers to s1; if e equals zero,
    control transfers to s2; if e is greater than zero, control
    transfers to s3).
 IF (e) st
    e   is an expression.
    st  is any executable statement except a DO, END DO, END, block IF,
        or logical IF.

    Executes the statement if the logical expression has a value of true.
 IF (el) THEN
    block
         ELSE IF (e2) THEN
    block
         ELSE
    block
         END IF
    e1,e2  are logical expressions.
    block  is a series of zero or more FORTRAN statements.

    Defines blocks of statements and conditioinally executes them.
    If the logical expression in the IF THEN statemnt has a value of 
    true, the first block is executed and control transfers to the 
    first executable statement after the END IF statement.

    If the logical expression has a value of false, the precess is 
    repeated for the next ELSE IF THEN statement.  If all logical 
    expressions have values of false, the ELSE block is executed.
    If there is no ELSE block, control transfers to the next executable
    statement following END IF.
2 IMPLICIT
 IMPLICIT typ (a[,a]...)[,typ(a[,a]...)]...
    typ  is a data type specifier.
    a    is either a single letter, or two letters in alphabetical order
         separated by a hyphen (that is, X-Y).

    The element a represents a single (or a range of) letter(s) whose
    presence as the initial letter of a variable specifies the variable
    to be of that data type.
2 INCLUDE
 INCLUDE 'file specification[/[NO]LIST]'
    'file specification'   is a character constant.

    Includes the source statements in the compilation from the file
    specified.
2 INQUIRE
 INQUIRE (par[,par]...)
    par   is a keyword specification having the form
            key=variable
    key   is a keyword as described below.
    value  depends on the keyword.

     Keyword            Values      Keyword           Values
      inputs                         outputs(cont)
     FILE                fin        FORMATTED           cv
     UNIT                  e        IOSTAT               v
                                    KEYED               cv
      outputs                       NAMED               lv
     ACCESS               cv        NEXTREC              v
     BLANK                cv        NUMBER               v
     CARRIAGECONTROL      cv        OPENED              lv
     DIRECT               cv        ORGANIZATION        cv
     ERR                   s        RECL                 v
     EXIST                lv        RECORDTYPE          cv
     FORM                 cv        SEQUENTIAL          cv
                                    UNFORMATTED         cv

    e    is a numeric expression.
    fin  is a character expression.
    v    is an integer variable or integer array element.
    lv   is a logical variable or array element.
    cv   is a character variable, array element, or substring reference.
    s    is the label of an executable statement.
    Furnishes information on specified characteristics of a file or of a
    logical unit and its connections to a file.
2 INTRINSIC
 INTRINSIC fun [,fun]...
    fun  is an intrinsic function name.

    Identifies symbolic names as representing intrinsic functions and
    allows those names to be used as actual arguments.
2 OPEN
 OPEN(par[,par]...)
    par   is a keyword specification in one of the following forms:
             1)   key
             2)   key = value
    key   is a keyword, as described below.
    value  depends on the keyword.

           Keyword              Values
           ACCESS               'SEQUENTIAL'
                                'DIRECT'
                                'KEYED'
                                'APPEND'
           ASSOCIATEVARIABLE         v
           BLOCKSIZE                 e
           BLANK                'NULL'
                                'ZERO'
           BUFFERCOUNT               e
           CARRIAGECONTROL      'FORTRAN'
                                'LIST'
                                'NONE'
           DISP                 (same as DISPOSE)
           DISPOSE              'KEEP' or 'SAVE'
                                'PRINT'
                                'DELETE'
                                'SUBMIT'
                                'SUBMIT/DELETE'
                                'PRINT/DELETE'
           ERR                       s
           EXTENDSIZE                e
           FILE                      c
           FORM                 'FORMATTED'
                                'UNFORMATTED'
           INITIALSIZE               e
           IOSTAT                    v
           KEY                   keyspec
           MAXREC                    e
           NAME                 (same as File)
           NOSPANBLOCKS              -
           ORGANIZATION         'SEQUENTIAL'
                                'RELATIVE'
                                'INDEXED'
           READONLY                  -
           RECL                      e
           RECORDSIZE           (same as RECL)
           RECORDTYPE           'FIXED'
                                'VARIABLE'
                                'SEGMENTED'
           SHARED                    -
           STATUS               'OLD'
                                'NEW'
                                'SCRATCH'
                                'UNKNOWN'
           TYPE                 (same as STATUS)
           UNIT                      e
           USEROPEN                  p

    c   is a character expression, numeric array name, numeric variable
        name, numeric array element name, or Hollerith constant.
    e   is a numeric expression.
    p   is a program unit name.
    s   is a statement label.
    v   is an integer variable name.
    keyspec is (e1:e2[:type]),
    where:
     e1 is the beginning byte of the key field
     e2 is the ending byte of the key field
     type is either INTEGER or CHARACTER
     Opens a file on the specified logical unit according to the 
     parameters specified by the keywords.
2 PARAMETER
 PARAMETER (p=c [,p=c]...)
    p   is a symbolic name.
    c   is a constant or compile-time constant expression.

    Defines a symbolic name for a constant.
2 PAUSE
 PAUSE [disp]
    disp   is a decimal digit string containing 1 to 5 digits or a
           character constant.

    Suspends program execution and prints the display, if one is
    specified.
2 PRINT
 PRINT f[,list]
    f      is a format specifier. (* denotes list-directed output)
    list   is an I/O list.

    Writes one or more logical records to unit FOR$PRINT, containing
    the values of the elements in the list.  The records are converted
    according to f.
2 PROGRAM
 PROGRAM nam
    nam   A symbolic name.

    Specifies a name for the main program.
2 READ
    A statement to read one or more logical records into core.
3 SEQUENTIAL
 READ ([UNIT=][u,[FMT=]f][,IOSTAT=ios][,END=s][,ERR=s])[list]
 READ f[,list]
    u    is a logical unit specifier.
    f    is a format specifier,
         =* to denote list-directed formatting,
         if not present read unformatted.
    ios  is an input/output specifier.
    s    is a label of an executable statement.
    list is an I/O list.

   Reads one or more logical records from unit u and assigns values
   to the elements in the list.  The records are converted according
   to the format specifier (f), if present.  Otherwise, reads one
   unformatted record from unit u and assigns values to the
   elements in the list.

3 DIRECT_ACCESS
 READ ([UNIT]=u[,[FMT=]f],REC=r[,iostat=ios][,ERR=s])[list]
 READ (u'r[,[FMT=]f][,IOSTAT=ios][,ERR=s])[list]
    u    is a logical unit specifier.
    r    is a relative record number specifier.
    f    is a format specifier
         if not present read unformatted.
    ios  is an input/output specifier.
    s    is a label of an executable statement.
    list is an I/O list.

   Reads record r from unit u and assigns values to the elements in
   the list.  The record is converted according to f.

3 KEYED_ACCESS
 READ ([UNIT=]u, [FMT=]f,keyspec[,KEYID=kn][IOSTAT=ios][,ERR=s])[list]
 READ ([UNIT=]u, keyspec[,KEYID=kn][IOSTAT=ios][,ERR=s])[list]
    u       is a logical unit specifier.
    f       is a format specifier.
    keyspec is a key specifier.
    kn      is a key-of-reference specifier.
    s       is a label of an executable statement.
    list    is an I/O list.

   Reads one or more logical records, specified by key value, and
   assigns values to the elements in the list.

3 INTERNAL_FILE
 READ ([UNIT=]c,FMT=f,[,IOSTAT=ios][,ERR=s][,END=s])[list]
    c     is a internal file specifier.
    f     is a format specifier.
    ios   is an input/output status specifier.
    s     is a label of an executable statement.
    list  is an I/O list.

   Reads into elements in the list one or more internal records 
   containing character strings, converting in accordance with the 
   format specification.
2 RETURN
 RETURN [i]

    Returns control to the calling program from the current subprogram.
    The optional argument is an integer value that indicates which 
    alternate return is to be taken.
2 REWIND
 REWIND([UNIT=]u[,IOSTAT=ios][,ERR=s])
 REWIND u
    u    is a logical unit specifier.
    ios  is an input/output status specifier.
    s    is a label of an executable statement.

    Repositions logical unit u to the beginning of the currently 
    opened file.
2 REWRITE
 REWRITE([UNIT=]u,[FMT=]f[,IOSTAT=ios][,ERR=s])[list]
 REWRITE([unit=]u[,IOSTAT=ios][,ERR=s])[list]
    u     is a logical unit specifier.
    f     is a format specifier.
    ios   is an input/output status specifier.
    s     is a label of an executable statement.
    list  is an I/O list.

    Transfers data from internal storage to the current record in an
    indexed file.
2 SAVE
 SAVE[s[,s]...]
    a      is the name of a variable, an array, or a named common block 
           enclosed in slashes.

    Retains the definition status of an entity after the execution
    of a RETURN or END statement in a subprogram.
2 STATEMENT FUNCTION
 STATEMENT FUNCTION
 f([p[,p]...])=e
    f    is a symbolic name.
    p    is a symbolic name.
    e    is an expression.

    Creates a user-defined function having the variables p as dummy
    arguments.  When referred to, the expression is evaluated using the
    actual arguments in the function call.
2 STOP
 STOP [disp]
    disp   is a decimal digit string containing 1 to 5 digits or a
           character constant.

    Terminates program execution and prints the display, if one is 
    specified.
2 SUBROUTINE
 SUBROUTINE nam[([p[,p]...])]
    nam    is a symbolic name.
    p       is a symbolic name or an alternate return specifier (*).

    Begins a subroutine subprogram, indicating the program name and any
    dummy argument names (p).
2 TYPE
 TYPE f[,list]
    f    is a format specifier. (* denotes list-directed output)
    list is an I/O list.

    Writes one or more logical records to unit FOR$TYPE, containing
    the values of the elements in the list.  The records are converted
    according to f.
2 TYPE_DECLARATION
 TYPE DECLARATION
 typ v[/clist/][,v[/clist/]...
    typ   is one of the following data type specifiers:
           BYTE                           REAL*8
           LOGICAL                        REAL*16
           LOGICAL*1                      DOUBLE PRECISION
           LOGICAL*2                      COMPLEX
           LOGICAL*4                      COMPLEX*8
           INTEGER                        COMPLEX*16
           INTEGER*2                      DOUBLE COMPLEX
           INTEGER*4                      CHARACTER*len
           REAL                           CHARACTER*(*)
           REAL*4

  v     is a variable name, array name, function or function entry name,
        or an array declarator.  The name can optionally be followed by
        a data type length specifier (*n).  For character entities, the 
        length specifier can be *len or *(*).
 clist  is an initial value or values to be assigned to the immediately
        preceding variable or array element.
        The symbolic names (v) are assigned the specified data type.
2 UNLOCK
 UNLOCK ([UNIT=]u[IOSTAT=ios][,ERR=s])
 UNLOCK u
    u    is a logical unit specifier.
    ios  is an input/output specifier.
    s    is the label of an executable statement.

    Removes the access protection from the file connected to Logical
    Unit u.
2 VIRTUAL
 VIRTUAL a(d)[,a(d)]...
    Equivalent to the DIMENSION statement.
2 WRITE
    Writes one or more logical records to unit u.

3 SEQUENTIAL
 WRITE ([unit=]u[,[FMT=]f][,IOSTAT=ios][,ERR=s])[list]
    u     is a logical unit specifier.
    f     is a format specifier. (* denotes list-directed output)
          if not present write unformatted records.
    ios   is an input/output specifier.
    s     is a label of an executable statement.
    list  is an I/O list.

   Writes one or more logical records to unit u, containing the values
   of the elements in the list.  The records are converted according to
   f if present. Otherwise, writes one unformatted record to unit u,
   containing the values of the elements in the list.

3 DIRECT_ACCESS
 WRITE ([UNIT=]u, REC=r[,FMT=f][,IOSTAT=ios][,ERR=s])[list]
 WRITE (u'r[,f][,ERR=s])[list]
    u     is a logical unit specifier.
    r     is a relative record number specifier.
    f     is a format specifier.
          if not present use unformatted write.
    ios   is an input/output specifier.
    s     is a label of an executable statement.
    list  is an I/O list.

   Writes the values of the elements of the list to record r on unit
   u.  The record is converted according to f, if present.  Otherwise
   Writes an unformatted record.

3 INTERNAL_FILE
 WRITE ([unit=]c,FMT=f[,IOSTAT=ios][,ERR=s])[List]
    c     is an internal file specifier.
    f     is a format specifier.
    s     is a label of an executable statement.
    ios   is an input/output specifier.
    list  is an I/O list.

   Writes elements in the list ot the internal file specified by the
   unit, converting to character strings in accordance with the 
   format specification.
2 CHARACTER_SET                                                                
  The FORTRAN character set consists of:
        1. The letters A through Z and a through z
        2. The numerals 0 through 9
        3. The following special characters:
 Char.  name         Character  name     Character   name
        Space or Tab     =    Equal sign     +    Plus sign
   -    Minus sign       *    Asterisk       /    Slash
   (    Left parenthesis )    Right paren.   ,    Comma
   .    period           '    Apostrophe     "    Quotation mark
   $    Dollar sign      _    Underline      !    exclamation point
   :    Colon            <    Left angle b.  >    right angle b.
   %    percent sign     @    Ampersand
3 ASCII_CHARACTER_SET
  Following is a table representing the ASCII charater set:

        0    1    2    3    4    5    6    7
   0    NUL  DLE  SP   0    @    P         p
   1    SOH  DC1  !    1    A    Q    a    q
   2    STX  DC2  "    2    B    R    b    r
   3    ETX  DC3  #    3    C    S    c    s
   4    EOT  DC4  $    4    D    T    d    t
   5    ENQ  NAK  %    5    E    U    e    u
   6    ACK  SYN  &    6    F    V    f    v
   7    BEL  ETB  '    7    G    W    g    w
   8    BS   CAN  (    8    H    X    h    x
   9    HT   EM   )    9    I    Y    i    y
   A    LF   SUB  *    :    J    Z    j    z
   B    VT   ESC  +    ;    K    [    k    {
   C    FF   FS   ,    <    L    \    l    |
   D    CR   GS   -    =    M    ]    m    }
   E    SO   RS   .    >    N    ^    n    ~
   F    SI   US   /    ?    O    _    o    DEL

3 ASCII_SPECIAL_characters
   NUL Null                   DLE  Data Link Escape
   SOH Start of Heading       DC1  Device Control 1
   STX Start of Text          DC2  Device Control 2
   ETX End of Text            DC3  Device Control 3
   EOT End of Transmission    DC4  Device Control 4
   ENQ Enquiry                NAK  Negative Acknowledge
   ACK Acknowledge            SYN  Synchronous Idle
   BEL Bell                   ETB  End of Transmission Block
   BS  Backspace              CAN  Cancel
   HT  Horizontal Tabulation  EM   End of Medium
   VT  Vertical Tabulation    SUB  Substitute
   FF  Form Feed              ESC  Escape
   CR  Carriage Return        FS   File Separator
   SO  Shift Out              GS   Group Separator
   SI  Shift In               US   Unit Separator
   SP  Space                  DEL  Delete
2 ERROR_CODES
  The following table lists the FORTRAN-specific errors processed by the 
  Run-Time Library.  For each error, the table shows the message text,
  the symbolic condition name, the FORTRAN-specific error code, and the
  severity code.

                   Summary of FORTRAN Run-Time Errors

       FORTRAN
      Condition    Err
       Symbol       #   Sev            Message Text

    FOR$_NOTFORSPE  1    F   not a FORTRAN-specific error
    FOR$_REWERR     20   F   REWIND error
    FOR$_DUPFILSPE  21   F   duplicate file specifications
    FOR$_INPRECTOO  22   F   input record too long
    FOR$_BACERR     23   F   BACKSPACE err
    FOR$_ENDDURREA  24   F   end-of-file during read
    FOR$_RECNUMOUT  25   F   record number outside range
    FOR$_OPEDEFREQ  26   F   OPEN or DEFINE FILE required
    FOR$_TOOMANREC  27   F   too many records in I/O statement
    FOR$_CLOERR     28   F   CLOSE error
    FOR$_FILNOTFOU  29   F   file not found
    FOR$_OPEFAI     30   F   open failure
    FOR$_MIXFILACC  31   F   mixed file access modes
    FOR$_INVLOGUNI  32   F   invalid logical unit number
    FOR$_ENDFILERR  33   F   ENDFILE error
    FOR$_UNIALROPE  34   F   unit already open
    FOR$_SEGRECFOR  35   F   segmented record format error
    FOR$_ATTACCNON  36   F   attempt to access non-existent record
    FOR$_INCRECLEN  37   F   inconsistent record length
    FOR$_ERRDURWRI  38   F   error during write
    FOR$_ERRDURREA  39   F   error during read
    FOR$_RECIO_OPE  40   F   recursive I/O operation
    FOR$_INSVIRMEM  41   F   insufficient virtual memory
    FOR$_NO_SUCDEV  42   F   no such device
    FOR$_FILNAMSPE  43   F   file name specification error
    FOR$_INCRECTYP  44   F   inconsistent record type
    FOR$_KEYVALERR  45   F   keyword value error in OPEN statement
    FOR$_INCOPECLO  46   F   inconsistent OPEN/CLOSE parameters
    FOR$_WRIREAFIL  47   F   write to READONLY file
    FOR$_INVARGFOR  48   F   invalid argument to FORTRAN Run-Time Library
    FOR$_INVKEYSPE  49   F   invalid key specification
    FOR$_INCKEYCHG  50   F   inconsistent key change or duplicate key
    FOR$_INCFILORG  51   F   inconsistent file organization
    FOR$_SPERECLOC  52   F   specified record locked
    FOR$_NO_CURREC  53   F   no current record
    FOR$_REWRITERR  54   F   REWRITE error
    FOR$_DELERR     55   F   DELETE error
    FOR$_UNLERR     56   F   UNLOCK error
    FOR$_FINERR     57   F   FIND error
    FOR$_LISIO_SYN  59  F,C  list-directed I/O syntax error
    FOR$_INFFORLOO  60   F   infinite format loop
    FOR$_FORVARMIS  61  F,C  format/variable-type mismatch
    FOR$_SYNERRFOR  62   F   syntax error in format
    FOR$_OUTCONERR  63  E,C  output conversion error
    FOR$_INPCONERR  64  F,C  input conversion error
    FOR$_OUTSTAOVE  66   F   output statement overflows record
    FOR$_INPSTAREQ  67   F   input statement requires too much data
    FOR$_VFEVALERR  68  F,C  variable format expression value error
    SS$_INTOVF      70  F,C  arithmetic trap, integer overflow
    SS$_INTDIV      71  F,C  arithmetic trap, integer zero divide
    SS$_FLTOVF      72  F,C  arithmetic trap, floating overflow
    SS$_FLTOVF_F    72  F,C  arithmetic fault, floating overflow
    SS$_FLTDIV      73  F,C  arithmetic trap, zero divide
    SS$_FLTDIV_F    73  F,C  arithmetic fault, zero divide
    SS$_FLTUND      74  F,C  arithmetic trap, floating underflow
    SS$_FLTUND_F    74  F,C  arithmetic fault, floating overflow
    SS$_SUBRNG      77  F,C  subscript out of range
    MTH$_WRONUMARG  80   F   wrong number of arguments
    MTH$_INVARGMAT  81   F   invalid argument to math library
    MTH$_UNDEXP     82  F,C  undefined exponentiation
    MTH$_LOGZERNEG  83  F,C  logarithm of zero or negative value
    MTH$_SQUROONEG  84  F,C  square root of negative value
    MTH$_SIGLOSMAT  87  F,C  significance lost in math library
    MTH$_FLOOVEMAT  88  F,C  floating overflow in math library
    MTH$_FLOUNDMAT  89  F,C  floating underflow in math library
    FOR$_ADJARRDIM  93  F,C  adjustable array dimension error

    For additional information type:  HELP ERROR MMM NNNNNNN to receive
information about error MMM$_NNNNNNNN. For example, to get more 
information about fortran error 93 type HELP ERROR FOR ADJARRDIM.
