|
|
1.1 root 1: . \" Definitions of F, L and LR for the benefit of systems
2: . \" whose -man lacks them...
3: .de F
4: .nh
5: .if n \%\&\\$1
6: .if t \%\&\f(CW\\$1\fR
7: .hy 14
8: ..
9: .de L
10: .nh
11: .if n \%`\\$1'
12: .if t \%\&\f(CW\\$1\fR
13: .hy 14
14: ..
15: .de LR
16: .nh
17: .if n \%`\\$1'\\$2
18: .if t \%\&\f(CW\\$1\fR\\$2
19: .hy 14
20: ..
21: .TH F2C 1
22: .CT 1 prog_other
23: .SH NAME
24: f\^2c \(mi Convert Fortran 77 to C or C++
25: .SH SYNOPSIS
26: .B f\^2c
27: [
28: .I option ...
29: ]
30: .I file ...
31: .SH DESCRIPTION
32: .I F2c
33: converts Fortran 77 source code in
34: .I files
35: with names ending in
36: .L .f
37: or
38: .L .F
39: to C (or C++) source files in the
40: current directory, with
41: .L .c
42: substituted
43: for the final
44: .L .f
45: or
46: .LR .F .
47: If no Fortran files are named,
48: .I f\^2c
49: reads Fortran from standard input and
50: writes C on standard output.
51: .I File
52: names that end with
53: .L .p
54: or
55: .L .P
56: are taken to be prototype
57: files, as produced by option
58: .LR -P ,
59: and are read first.
60: .PP
61: The following options have the same meaning as in
62: .IR f\^77 (1).
63: .TP
64: .B -C
65: Compile code to check that subscripts are within declared array bounds.
66: .TP
67: .B -I2
68: Render INTEGER and LOGICAL as short,
69: INTEGER\(**4 as long int. Assume the default \fIlibF77\fR
70: and \fIlibI77\fR: allow only INTEGER\(**4 (and no LOGICAL)
71: variables in INQUIREs. Option
72: .L -I4
73: confirms the default rendering of INTEGER as long int.
74: .TP
75: .B -onetrip
76: Compile DO loops that are performed at least once if reached.
77: (Fortran 77 DO loops are not performed at all if the upper limit is smaller than the lower limit.)
78: .TP
79: .B -U
80: Honor the case of variable and external names. Fortran keywords must be in
81: .I
82: lower
83: case.
84: .TP
85: .B -u
86: Make the default type of a variable `undefined' rather than using the default Fortran rules.
87: .TP
88: .B -w
89: Suppress all warning messages.
90: If the option is
91: .LR -w66 ,
92: only Fortran 66 compatibility warnings are suppressed.
93: .PP
94: The following options are peculiar to
95: .IR f\^2c .
96: .TP
97: .B -A
98: Produce
99: .SM ANSI
100: C.
101: Default is old-style C.
102: .TP
103: .B -a
104: Make local variables automatic rather than static
105: unless they appear in a
106: .SM "DATA, EQUIVALENCE, NAMELIST,"
107: or
108: .SM SAVE
109: statement.
110: .TP
111: .B -C++
112: Output C++ code.
113: .TP
114: .B -c
115: Include original Fortran source as comments.
116: .TP
117: .B -E
118: Declare uninitialized
119: .SM COMMON
120: to be
121: .B Extern
122: (overridably defined in
123: .F f2c.h
124: as
125: .B extern).
126: .TP
127: .B -ec
128: Place uninitialized
129: .SM COMMON
130: blocks in separate files:
131: .B COMMON /ABC/
132: appears in file
133: .BR abc_com.c .
134: Option
135: .LR -e1c
136: bundles the separate files
137: into the output file, with comments that give an unbundling
138: .IR sed (1)
139: script.
140: .TP
141: .B -ext
142: Complain about
143: .IR f\^77 (1)
144: extensions.
145: .TP
146: .B -f
147: Assume free-format input: accept text after column 72 and do not
148: pad fixed-format lines shorter than 72 characters with blanks.
149: .TP
150: .B -72
151: Treat text appearing after column 72 as an error.
152: .TP
153: .B -g
154: Include original Fortran line numbers in \f(CW#line\fR lines.
155: .TP
156: .B -h
157: Emulate Fortran 66's treatment of Hollerith: try to align character strings on
158: word (or, if the option is
159: .LR -hd ,
160: on double-word) boundaries.
161: .TP
162: .B -i2
163: Similar to
164: .BR -I2 ,
165: but assume a modified
166: .I libF77
167: and
168: .I libI77
169: (compiled with
170: .BR -Df\^2c_i2 ),
171: so
172: .SM INTEGER
173: and
174: .SM LOGICAL
175: variables may be assigned by
176: .SM INQUIRE
177: and array lengths are stored in short ints.
178: .TP
179: .B -kr
180: Use temporary values to enforce Fortran expression evaluation
181: where K&R (first edition) parenthesization rules allow rearrangement.
182: If the option is
183: .LR -krd ,
184: use double precision temporaries even for single-precision operands.
185: .TP
186: .B -P
187: Write a
188: .IB file .P
189: of ANSI (or C++) prototypes
190: for definitions in each input
191: .IB file .f
192: or
193: .IB file .F .
194: When reading Fortran from standard input, write prototypes
195: at the beginning of standard output. Option
196: .B -Ps
197: implies
198: .B -P
199: and gives exit status 4 if rerunning
200: .I f\^2c
201: may change prototypes or declarations.
202: .TP
203: .B -p
204: Supply preprocessor definitions to make common-block members
205: look like local variables.
206: .TP
207: .B -R
208: Do not promote
209: .SM REAL
210: functions and operations to
211: .SM DOUBLE PRECISION.
212: Option
213: .L -!R
214: confirms the default, which imitates
215: .IR f\^77 .
216: .TP
217: .B -r
218: Cast values of REAL functions (including intrinsics) to REAL.
219: .TP
220: .B -r8
221: Promote
222: .SM REAL
223: to
224: .SM DOUBLE PRECISION, COMPLEX
225: to
226: .SM DOUBLE COMPLEX.
227: .TP
228: .B -s
229: Preserve multidimensional subscripts.
230: .TP
231: .BI -T dir
232: Put temporary files in directory
233: .I dir.
234: .TP
235: .B -w8
236: Suppress warnings when
237: .SM COMMON
238: or
239: .SM EQUIVALENCE
240: forces odd-word alignment of doubles.
241: .TP
242: .BI -W n
243: Assume
244: .I n
245: characters/word (default 4)
246: when initializing numeric variables with character data.
247: .TP
248: .B -z
249: Do not implicitly recognize
250: .SM DOUBLE COMPLEX.
251: .TP
252: .B -!bs
253: Do not recognize \fIb\fRack\fIs\fRlash escapes
254: (\e", \e', \e0, \e\e, \eb, \ef, \en, \er, \et, \ev) in character strings.
255: .TP
256: .B -!c
257: Inhibit C output, but produce
258: .B -P
259: output.
260: .TP
261: .B -!I
262: Reject
263: .B include
264: statements.
265: .TP
266: .B -!i8
267: Disallow
268: .SM INTEGER*8.
269: .TP
270: .B -!it
271: Don't infer types of untyped
272: .SM EXTERNAL
273: procedures from use as parameters to previously defined or prototyped
274: procedures.
275: .TP
276: .B -!P
277: Do not attempt to infer
278: .SM ANSI
279: or C++
280: prototypes from usage.
281: .PP
282: The resulting C invokes the support routines of
283: .IR f\^77 ;
284: object code should be loaded by
285: .I f\^77
286: or with
287: .IR ld (1)
288: or
289: .IR cc (1)
290: options
291: .BR "-lF77 -lI77 -lm" .
292: Calling conventions
293: are those of
294: .IR f\&77 :
295: see the reference below.
296: .br
297: .SH FILES
298: .TP
299: .IB file .[fF]
300: input file
301: .TP
302: .B *.c
303: output file
304: .TP
305: .F /usr/include/f2c.h
306: header file
307: .TP
308: .F /usr/lib/libF77.a
309: intrinsic function library
310: .TP
311: .F /usr/lib/libI77.a
312: Fortran I/O library
313: .TP
314: .F /lib/libc.a
315: C library, see section 3
316: .SH "SEE ALSO"
317: S. I. Feldman and
318: P. J. Weinberger,
319: `A Portable Fortran 77 Compiler',
320: \fIUNIX Time Sharing System Programmer's Manual\fR,
321: Tenth Edition, Volume 2, AT&T Bell Laboratories, 1990.
322: .SH DIAGNOSTICS
323: The diagnostics produced by
324: .I f\^2c
325: are intended to be
326: self-explanatory.
327: .SH BUGS
328: Floating-point constant expressions are simplified in
329: the floating-point arithmetic of the machine running
330: .IR f\^2c ,
331: so they are typically accurate to at most 16 or 17 decimal places.
332: .br
333: Untypable
334: .SM EXTERNAL
335: functions are declared
336: .BR int .
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.