3/15/72                                                    FC (I)
NAME            fc -- fortran compiler
SYNOPSIS        fc [ -c ] sfile .f ... ofile  ...
                               1            1
DESCRIPTION     fc is the UNIX Fortran compiler.  It accepts
                three types of arguments:
                Arguments whose names end with ".f" are assumed
                to be Fortran source programs; they are compiled,
                and the object program is left on the file
                sfile .o (i.e.  the file whose name is that of
                     1
                the source with ".o" substituted for ".f").
                Other arguments (except for "-c") are assumed to
                be either loader flags, or object programs, typi-
                cally produced by an earlier fc run, or perhaps
                libraries of Fortran-compatible routines.  These
                programs, together with the results of any compi-
                lations specified, are loaded (in the order
                given) to produce an executable program with name
                a.out.
                The "-c" argument suppresses the loading phase,
                as does any syntax error in any of the routines
                being compiled.
                The following is a list of differences between fc
                and ANSI standard Fortran (also see the BUGS sec-
                tion):
                1. Arbitrary combination of types is allowed in
                   expressions.  Not all combinations are ex-
                   pected to be supported at runtime.  All of the
                   normal conversions involving integer, real,
                   double precision and complex are allowed.
                2. The 'standard' implicit statement is recog-
                   nized.
                3. The types doublecomplex, logical*1, integer*2
                   and real*8 (doubleprecision) are supported.
                4. & as the first character of a line signals a
                   continuation card.
                5. c as the first character of a line signals a
                   comment.
                6. All keywords are recognized in lower case.
                7. The notion of 'column 7' is not implemented.
                8. G-format input is free form-- leading blanks
                   are ignored, the first blank after the start
                   of the number terminates the field.
                9. A comma in any numeric or logical input field
                   terminates the field.
               10. There is no carriage control on output.
                In I/O statements, only unit numbers 0-19 are
                supported.  Unit number nn corresponds to file
                "fortnn;" (e.g. unit 9 is file "fort09").  For
                input, the file must exist; for output, it will
                be created.
FILES           file.f                  input file
                a.out                   loaded output
                f.tmp[123]              temporary (deleted)
                /usr/fort/fc[1234]      compilation phases
                /usr/lib/fr0.o          runtime startoff
                /usr/lib/filib.a        interpreter library
                /usr/lib/libf.a         builtin functions, etc.
                /usr/lib/liba.a         system library
SEE ALSO        ANSI standard
DIAGNOSTICS     Compile-time diagnostics are given by number.  If
                the source code is available, it is printed with
                an underline at the current character pointer.
                Errors possible are:
                1       statement too long
                2       syntax error in type statement
                3       redeclaration
                4       missing ( in array declarator
                5       syntax error in dimension statement
                6       inappropriate or gratuitous array
                        declarator
                7       syntax error in subscript bound
                8       illegal character
                9       common variable is a parameter or already
                        in common
                10      common syntax error
                11      subroutine/blockdata/function not first
                        statement
                12      subroutine/function syntax error
                13      block data syntax error
                14      redeclaration in external
                15      external syntax error
                16      implicit syntax error
                17      subscript on non-array
                18      incorrect subscript count
                19      subscript out of range
                20      subscript syntax error
                23      equivalence inconsistency
                24      equivalence syntax error
                25      separate common blocks equivalenced
                26      common block illegally extended by equiv-
                        alence
                27      common inconsistency created by equiva-
                        lence
                29      () imbalance in expression
                30      expression syntax error
                31      illegal variable in equivalence
                33      non array/function used with
                        subscripts/arguments
                35      goto syntax error
                37      illegal return
                38      continue, return, stop, call, end, or
                        pause syntax error
                39      assign syntax error
                40      if syntax error
                41      I/O syntax error
                42      do or I/O iteration error
                43      do end missing
                50      illegal statement in block data
                51      multiply defined labels
                52      undefined label
                53      dimension mismatch
                54      expression syntax error
                55      end of statement in hollerith constant
                56      array too large
                99      β table overflow
                101     unrecognized statement
                Runtime diagnostics:
                1       invalid log argument
                2       bad arg count to amod
                3       bad arg count to atan2
                4       excessive argument to cabs
                5       exp too large in cexp
                6       bad arg count to cmplx
                7       bad arg count to dim
                8       excessive argument to exp
                9       bad arg count to idim
                10      bad arg count to isign
                11      bad arg count to mod
                12      bad arg count to sign
                13      illegal argument to sqrt
                14      assigned/computed goto out of range
                15      subscript out of range
                100     illegal I/O unit number
                101     inconsistent use of I/O unit
                102     cannot create output file
                103     cannot open input file
                104     EOF on input file
                105     illegal character in format
                106     format does not begin with (
                107     no conversion in format but non-empty
                        list
                108     excessive parenthesis depth in format
                109     illegal format specification
                110     illegal character in input field
                111     end of format in hollerith specification
                999     unimplemented input conversion
BUGS            The following is a list of those features not yet
                implemented:
                loading of common (a BLOCK DATA program must be
                written to allocate common).
                arithmetic statement functions
                data statements
                backspace, endfile, rewind runtime
                binary I/O
                no scale factors on input
OWNER           dmr, ken