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
                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


                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-


                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-


                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


                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


                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


                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-


                27      common inconsistency created by equiva-


                29      () imbalance in expression

                30      expression syntax error

                31      illegal variable in equivalence

                33      non array/function used with


                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


                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


                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