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