FC (I)                       9/1/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 program units; they are com-

                piled, 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.



                Unit 5 is permanently associated with the stan-

                dard input file; unit 6 with the standard output

                file.



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

                22      DATA syntax error

                23      Illegal variable in DATA

                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

                28      DATA table overflow

                29      () imbalance in expression

                30      expression syntax error

                31      illegal variable in equivalence

                32      Storage initialized twice by DATA

                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

                16      real**real overflow



                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:



                arithmetic statement functions



                backspace, endfile, rewind runtime



                binary I/O



                no scale factors on input