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