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