.th FC I 8/20/73
.sh NAME
fc \*- fortran compiler
.sh SYNOPSIS
.bd fc
[
.bd \*-c
] sfile1.f ... ofile1 ...
.sh DESCRIPTION
.it Fc
is the UNIX Fortran compiler.
It accepts three types of arguments:
.s3
Arguments whose names end with `.f' are assumed to be
Fortran 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').
.s3
Other arguments (except for
\fB\*-c\fR)
are assumed
to be either loader flags, or
object programs, typically produced by an earlier
.it 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
.bd a.out.
.s3
The
.bd \*-c
argument suppresses the loading phase, as does
any syntax error in any of the routines being compiled.
.s3
The following is a list
of differences between
.it fc
and ANSI standard Fortran (also see the BUGS section):
.s3
.lp +4 4
1.	Arbitrary combination of types is allowed
in expressions.  Not all combinations are expected to
be supported at runtime.
All of the normal
conversions involving integer, real, double
precision and complex are allowed.
.s3
.lp +4 4
2.	DEC's \fBimplicit\fR statement is recognized.
E.g.:
.bd "implicit integer /i\*-n/".
.s3
.lp +4 4
3.	The types
doublecomplex, logical*1,
integer*1, integer*2 and real*8 (double precision)
are supported.
.s3
.lp +4 4
4.	\fB&\fR as the first character of a line
signals a continuation card.
.s3
.lp +4 4
5.	\fBc\fR as the first character of a line signals a comment.
.s3
.lp +4 4
6.	All keywords are recognized in lower case.
.s3
.lp +4 4
7.	The notion of `column 7' is not implemented.
.s3
.lp +4 4
8.	G-format input is free form\*-
leading blanks are ignored, the first blank after the start
of the number terminates the field.
.s3
.lp +4 4
9.	A comma in any numeric or logical input field terminates
the field.
.s3
.lp +4 4
10.	There is no carriage control on output.
.s3
.lp +4 4
11.	A sequence of
.it n
characters in double quotes `"' is equivalent to
.it n
.bd h
followed by those characters.
.s3
.lp +4 4
12.	In
.bd data
statements, a hollerith string may initialize an array
or a sequence of array elements.
.s3
.lp +4 4
13.	The number of storage units requested by a binary
.bd read
must be identical to the number contained
in the record being read.
.s3
.i0
In I/O statements, only unit numbers 0-19 are supported.
Unit number
.it n
refers to file
fort\fInn;\fR
(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
.it setfil
(III)
for a way to associate unit numbers with named files.
.sh FILES
.ta 1.5i
file.f	input file
.nf
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
.fi
.sh "SEE ALSO"
ANSI standard,
ld(I) for loader flags
.br
Also see the writeups on the precious few
non-standard Fortran subroutines,
ierror and setfil (III)
.sh 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 diagnostics
are given by number as follows:
.s3
.lp +5 5
1	invalid log argument
.lp +5 5
2	bad arg count to amod
.lp +5 5
3	bad arg count to atan2
.lp +5 5
4	excessive argument to cabs
.lp +5 5
5	exp too large in cexp
.lp +5 5
6	bad arg count to cmplx
.lp +5 5
7	bad arg count to dim
.lp +5 5
8	excessive argument to exp
.lp +5 5
9	bad arg count to idim
.lp +5 5
10	bad arg count to isign
.lp +5 5
11	bad arg count to mod
.lp +5 5
12	bad arg count to sign
.lp +5 5
13	illegal argument to sqrt
.lp +5 5
14	assigned/computed goto out of range
.lp +5 5
15	subscript out of range
.lp +5 5
16	real**real overflow
.lp +5 5
17	(negative real)**real
.s3
.lp +5 5
100	illegal I/O unit number
.lp +5 5
101	inconsistent use of I/O unit
.lp +5 5
102	cannot create output file
.lp +5 5
103	cannot open input file
.lp +5 5
104	EOF on input file
.lp +5 5
105	illegal character in format
.lp +5 5
106	format does not begin with (
.lp +5 5
107	no conversion in format but non-empty list
.lp +5 5
108	excessive parenthesis depth in format
.lp +5 5
109	illegal format specification
.lp +5 5
110	illegal character in input field
.lp +5 5
111	end of format in hollerith specification
.lp +5 5
999	unimplemented input conversion
.i0
Any of these errors can be caught by the program;
see
.it ierror
(III).
.sh BUGS
The following is a list of
those features not yet implemented:
.s3
.br
arithmetic statement functions
.br
scale factors on input
.s3
.bd Backspace
statement.
