317 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			317 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
. \" Definitions of F, L and LR for the benefit of systems
 | 
						|
. \" whose -man lacks them...
 | 
						|
.de F
 | 
						|
.nh
 | 
						|
.if n \%\&\\$1
 | 
						|
.if t \%\&\f(CW\\$1\fR
 | 
						|
.hy 14
 | 
						|
..
 | 
						|
.de L
 | 
						|
.nh
 | 
						|
.if n \%`\\$1'
 | 
						|
.if t \%\&\f(CW\\$1\fR
 | 
						|
.hy 14
 | 
						|
..
 | 
						|
.de LR
 | 
						|
.nh
 | 
						|
.if n \%`\\$1'\\$2
 | 
						|
.if t \%\&\f(CW\\$1\fR\\$2
 | 
						|
.hy 14
 | 
						|
..
 | 
						|
.TH F2C 6
 | 
						|
.CT 1 prog_other
 | 
						|
.SH NAME
 | 
						|
f\^2c \(mi Convert Fortran 77 to C or C++
 | 
						|
.SH SYNOPSIS
 | 
						|
.B ~em/lib.bin/f\^2c
 | 
						|
[
 | 
						|
.I option ...
 | 
						|
]
 | 
						|
.I file ...
 | 
						|
.SH DESCRIPTION
 | 
						|
.I F2c
 | 
						|
converts Fortran 77 source code in
 | 
						|
.I files
 | 
						|
with names ending in
 | 
						|
.L .f
 | 
						|
or
 | 
						|
.L .F
 | 
						|
to C (or C++) source files in the
 | 
						|
current directory, with
 | 
						|
.L .c
 | 
						|
substituted
 | 
						|
for the final
 | 
						|
.L .f
 | 
						|
or
 | 
						|
.LR .F .
 | 
						|
If no Fortran files are named,
 | 
						|
.I f\^2c
 | 
						|
reads Fortran from standard input and
 | 
						|
writes C on standard output.
 | 
						|
.I File
 | 
						|
names that end with
 | 
						|
.L .p
 | 
						|
or
 | 
						|
.L .P
 | 
						|
are taken to be prototype
 | 
						|
files, as produced by option
 | 
						|
.LR -P ,
 | 
						|
and are read first.
 | 
						|
.PP
 | 
						|
The following options have the same meaning as in
 | 
						|
.IR f\^77 (1).
 | 
						|
.TP
 | 
						|
.B -C
 | 
						|
Compile code to check that subscripts are within declared array bounds.
 | 
						|
.TP
 | 
						|
.B -I2
 | 
						|
Render INTEGER and LOGICAL as short,
 | 
						|
INTEGER\(**4 as long int.  Assume the default \fIlibF77\fR
 | 
						|
and \fIlibI77\fR:  allow only INTEGER\(**4 (and no LOGICAL)
 | 
						|
variables in INQUIREs.  Option
 | 
						|
.L -I4
 | 
						|
confirms the default rendering of INTEGER as long int.
 | 
						|
.TP
 | 
						|
.B -onetrip
 | 
						|
Compile DO loops that are performed at least once if reached.
 | 
						|
(Fortran 77 DO loops are not performed at all if the upper limit is smaller than the lower limit.)
 | 
						|
.TP
 | 
						|
.B -U
 | 
						|
Honor the case of variable and external names.  Fortran keywords must be in
 | 
						|
.I
 | 
						|
lower
 | 
						|
case.
 | 
						|
.TP
 | 
						|
.B -u
 | 
						|
Make the default type of a variable `undefined' rather than using the default Fortran rules.
 | 
						|
.TP
 | 
						|
.B -w
 | 
						|
Suppress all warning messages.
 | 
						|
If the option is
 | 
						|
.LR -w66 ,
 | 
						|
only Fortran 66 compatibility warnings are suppressed.
 | 
						|
.PP
 | 
						|
The following options are peculiar to
 | 
						|
.IR f\^2c .
 | 
						|
.TP
 | 
						|
.B -A
 | 
						|
Produce
 | 
						|
.SM ANSI
 | 
						|
C.
 | 
						|
Default is old-style C.
 | 
						|
.TP
 | 
						|
.B -a
 | 
						|
Make local variables automatic rather than static
 | 
						|
unless they appear in a
 | 
						|
.SM "DATA, EQUIVALENCE, NAMELIST,"
 | 
						|
or
 | 
						|
.SM SAVE
 | 
						|
statement.
 | 
						|
.TP
 | 
						|
.B -C++
 | 
						|
Output C++ code.
 | 
						|
.TP
 | 
						|
.B -c
 | 
						|
Include original Fortran source as comments.
 | 
						|
.TP
 | 
						|
.B -E
 | 
						|
Declare uninitialized
 | 
						|
.SM COMMON
 | 
						|
to be
 | 
						|
.B Extern
 | 
						|
(overridably defined in
 | 
						|
.F f2c.h
 | 
						|
as
 | 
						|
.B extern).
 | 
						|
.TP
 | 
						|
.B -ec
 | 
						|
Place uninitialized
 | 
						|
.SM COMMON
 | 
						|
blocks in separate files:
 | 
						|
.B COMMON /ABC/
 | 
						|
appears in file
 | 
						|
.BR abc_com.c .
 | 
						|
Option
 | 
						|
.LR -e1c
 | 
						|
bundles the separate files
 | 
						|
into the output file, with comments that give an unbundling
 | 
						|
.IR sed (1)
 | 
						|
script.
 | 
						|
.TP
 | 
						|
.B -ext
 | 
						|
Complain about
 | 
						|
.IR f\^77 (1)
 | 
						|
extensions.
 | 
						|
.TP
 | 
						|
.B -g
 | 
						|
Include original Fortran line numbers as comments.
 | 
						|
.TP
 | 
						|
.B -h
 | 
						|
Try to align character strings on word (or, if the option is
 | 
						|
.LR -hd ,
 | 
						|
on double-word) boundaries.
 | 
						|
.TP
 | 
						|
.B -i2
 | 
						|
Similar to
 | 
						|
.BR -I2 ,
 | 
						|
but assume a modified
 | 
						|
.I libF77
 | 
						|
and
 | 
						|
.I libI77
 | 
						|
(compiled with
 | 
						|
.BR -Df\^2c_i2 ),
 | 
						|
so
 | 
						|
.SM INTEGER
 | 
						|
and
 | 
						|
.SM LOGICAL
 | 
						|
variables may be assigned by
 | 
						|
.SM INQUIRE
 | 
						|
and array lengths are stored in short ints.
 | 
						|
.TP
 | 
						|
.B -kr
 | 
						|
Use temporary values to enforce Fortran expression evaluation
 | 
						|
where K&R (first edition) parenthesization rules allow rearrangement.
 | 
						|
If the option is
 | 
						|
.LR -krd ,
 | 
						|
use double precision temporaries even for single-precision operands.
 | 
						|
.TP
 | 
						|
.B -P
 | 
						|
Write a
 | 
						|
.IB file .P
 | 
						|
of ANSI (or C++) prototypes
 | 
						|
for procedures defined in each input
 | 
						|
.IB file .f
 | 
						|
or
 | 
						|
.IB file .F .
 | 
						|
When reading Fortran from standard input, write prototypes
 | 
						|
at the beginning of standard output.
 | 
						|
Implies
 | 
						|
.B -A
 | 
						|
unless option
 | 
						|
.L -C++
 | 
						|
is present.  Option
 | 
						|
.B -Ps
 | 
						|
implies
 | 
						|
.B -P ,
 | 
						|
and gives exit status 4 if rerunning
 | 
						|
.I f\^2c
 | 
						|
may change prototypes or declarations.
 | 
						|
.TP
 | 
						|
.B -p
 | 
						|
Supply preprocessor definitions to make common-block members
 | 
						|
look like local variables.
 | 
						|
.TP
 | 
						|
.B -R
 | 
						|
Do not promote
 | 
						|
.SM REAL
 | 
						|
functions and operations to
 | 
						|
.SM DOUBLE PRECISION.
 | 
						|
Option
 | 
						|
.L -!R
 | 
						|
confirms the default, which imitates
 | 
						|
.IR f\^77 .
 | 
						|
.TP
 | 
						|
.B -r
 | 
						|
Cast values of REAL functions (including intrinsics) to REAL.
 | 
						|
.TP
 | 
						|
.B -r8
 | 
						|
Promote
 | 
						|
.SM REAL
 | 
						|
to
 | 
						|
.SM DOUBLE PRECISION, COMPLEX
 | 
						|
to
 | 
						|
.SM DOUBLE COMPLEX.
 | 
						|
.TP
 | 
						|
.BI -T dir
 | 
						|
Put temporary files in directory
 | 
						|
.I dir.
 | 
						|
.TP
 | 
						|
.B -w8
 | 
						|
Suppress warnings when
 | 
						|
.SM COMMON
 | 
						|
or
 | 
						|
.SM EQUIVALENCE
 | 
						|
forces odd-word alignment of doubles.
 | 
						|
.TP
 | 
						|
.BI -W n
 | 
						|
Assume
 | 
						|
.I n
 | 
						|
characters/word (default 4)
 | 
						|
when initializing numeric variables with character data.
 | 
						|
.TP
 | 
						|
.B -z
 | 
						|
Do not implicitly recognize
 | 
						|
.SM DOUBLE COMPLEX.
 | 
						|
.TP
 | 
						|
.B -!bs
 | 
						|
Do not recognize \fIb\fRack\fIs\fRlash escapes
 | 
						|
(\e", \e', \e0, \e\e, \eb, \ef, \en, \er, \et, \ev) in character strings.
 | 
						|
.TP
 | 
						|
.B -!c
 | 
						|
Inhibit C output, but produce
 | 
						|
.B -P
 | 
						|
output.
 | 
						|
.TP
 | 
						|
.B -!I
 | 
						|
Reject
 | 
						|
.B include
 | 
						|
statements.
 | 
						|
.TP
 | 
						|
.B -!it
 | 
						|
Don't infer types of untyped
 | 
						|
.SM EXTERNAL
 | 
						|
procedures from use as parameters to previously defined or prototyped
 | 
						|
procedures.
 | 
						|
.TP
 | 
						|
.B -!P
 | 
						|
Do not attempt to infer
 | 
						|
.SM ANSI
 | 
						|
or C++
 | 
						|
prototypes from usage.
 | 
						|
.PP
 | 
						|
The resulting C invokes the support routines of
 | 
						|
.IR f\^77 ;
 | 
						|
object code should be loaded by
 | 
						|
.I f\^77
 | 
						|
or with
 | 
						|
.IR ld (1)
 | 
						|
or
 | 
						|
.IR cc (1)
 | 
						|
options
 | 
						|
.BR "-lF77 -lI77 -lm" .
 | 
						|
Calling conventions
 | 
						|
are those of
 | 
						|
.IR f\&77 :
 | 
						|
see the reference below.
 | 
						|
.br
 | 
						|
.SH FILES
 | 
						|
.TP
 | 
						|
.IB file .[fF]
 | 
						|
input file
 | 
						|
.TP
 | 
						|
.B *.c
 | 
						|
output file
 | 
						|
.TP
 | 
						|
.F ~em/include/fortran/f2c.h
 | 
						|
header file
 | 
						|
.SH "SEE ALSO"
 | 
						|
S. I. Feldman and
 | 
						|
P. J. Weinberger,
 | 
						|
`A Portable Fortran 77 Compiler',
 | 
						|
\fIUNIX Time Sharing System Programmer's Manual\fR,
 | 
						|
Tenth Edition, Volume 2, AT&T Bell Laboratories, 1990.
 | 
						|
.SH DIAGNOSTICS
 | 
						|
The diagnostics produced by
 | 
						|
.I f\^2c
 | 
						|
are intended to be
 | 
						|
self-explanatory.
 | 
						|
.SH BUGS
 | 
						|
Floating-point constant expressions are simplified in
 | 
						|
the floating-point arithmetic of the machine running
 | 
						|
.IR f\^2c ,
 | 
						|
so they are typically accurate to at most 16 or 17 decimal places.
 | 
						|
.br
 | 
						|
Untypable
 | 
						|
.SM EXTERNAL
 | 
						|
functions are declared
 | 
						|
.BR int .
 |