FC(I)                        8/20/73                        FC(I)



NAME
     fc - Fortran compiler

SYNOPSIS
     fc [ -c ] sfile1.f ... ofile1 ...

DESCRIPTION
     Fc  is the UNIX Fortran compiler.  It accepts three types of
     arguments:

     Arguments whose names end with `.f' are assumed to  be  For-
     tran source program units; they are compiled, and the object
     program is left on the file sfile1.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, typically produced by an
     earlier fc run, or perhaps libraries  of  Fortran-compatible
     routines.   These programs, together with the results of any
     compilations 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 section):

     1.  Arbitrary  combination  of  types  is allowed in expres-
         sions.  Not all combinations are expected to be support-
         ed  at runtime.  All of the normal conversions involving
         integer, real, double precision and complex are allowed.

     2.  Two forms of ``implicit'' statements are recognized: im-
         plicit integer /i-n/ or implicit integer (i-n).

     3.  The types  doublecomplex,  logical*1,  integer*1,  inte-
         ger*2,  integer*4  (same as integer), real*4 (real), and
         real*8 (double precision) are supported.

     4.  & as the first character of a line signals  a  continua-
         tion 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.


                              - 1 -




FC(I)                        8/20/73                        FC(I)


     10. There is no carriage control on output.

     11. A sequence of n  characters  in  double  quotes  `"'  is
         equivalent to n h followed by those characters.

     12. In data statements, a hollerith string may initialize an
         array or a sequence of array elements.

     13. The number of storage units requested by a  binary  read
         must  be identical to the number contained in the record
         being read.

     14. If the first character in an input file is ``#'', a pre-
         processor  identical  to  the  C preprocessor is called,
         which implements ``#define'' and ``#include'' preproces-
         sor  statements.   (See  the  C reference manual for de-
         tails.)  The preprocessor does not  recognize  Hollerith
         strings written with nh.

     In  I/O  statements,  only  unit numbers 0-19 are supported.
     Unit number n refers 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
     standard  input  file; unit 6 with the standard output file.
     Also see setfil(III) for a way to  associate  unit  numbers
     with named files.

FILES
     a.out          loaded output
     f.tmp[123]     temporary (deleted)
     /usr/fort/fc1  compiler proper
     /lib/fr0.o     runtime startoff
     /lib/filib.a   interpreter library
     /lib/libf.a    builtin functions, etc.
     /lib/liba.a    system library

SEE ALSO
     rc(I), which announces a more pleasant Fortran dialect; the
     ANSI standard; ld(I) for loader flags.   For  some  subrou-
     tines, try ierror, getarg, setfil(III).

DIAGNOSTICS
     Compile-time  diagnostics  are given in English, accompanied
     if possible with the offending line number and  source  line
     with  an underscore where the error occurred.  Runtime diag-
     nostics are given by number as follows:

     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


                              - 2 -




FC(I)                        8/20/73                        FC(I)


     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
     17   (negative real)**real
     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
     112  bad argument to setfil
     120  bad argument to ierror
     999  unimplemented input conversion

BUGS
     The following is a list of those features not yet implement-
     ed:
     arithmetic statement functions
     scale factors on input
     Backspace statement.




























                              - 3 -