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