|
|
1.1 root 1:
2: ====== old index for f2c, now "readme from f2c" ============
3:
4: FILES:
5:
6: f2c.h Include file necessary for compiling output of the converter.
7: See the second NOTE below.
8:
9: f2c.1 Man page for f2c.
10:
11: f2c.1t Source for f2c.1 (to be processed by troff -man or nroff -man).
12:
13: libf77 Library of non I/O support routines the generated C may need.
14: Fortran main programs result in a C function named MAIN__ that
15: is meant to be invoked by the main() in libf77.
16:
17: libi77 Library of Fortran I/O routines the generated C may need.
18: Note that some vendors (e.g., BSD, Sun and MIPS) provide a
19: libF77 and libI77 that are incompatible with f2c -- they
20: provide some differently named routines or routines with the
21: names that f2c expects, but with different calling sequences.
22: On such systems, the recommended procedure is to merge
23: libf77 and libi77 into a single library, say libf2c, to install
24: it where you can access it by specifying -lf2c , and to adjust
25: the definition of link_msg in sysdep.c appropriately.
26:
27: f2c.ps Postscript for a technical report on f2c. After you strip the
28: mail header, the first line should be "%!PS".
29:
30: fixes The complete change log, reporting bug fixes and other changes.
31: (Some recent change-log entries are given below).
32:
33: fc A shell script that uses f2c and imitates much of the behavior
34: of commonly found f77 commands. You will almost certainly
35: need to adjust some of the shell-variable assignments to make
36: this script work on your system.
37:
38:
39: SUBDIRECTORY:
40:
41: f2c/src Source for the converter itself, including a file of checksums
42: and source for a program to compute the checksums (to verify
43: correct transmission of the source), is available: ask netlib to
44: send all from f2c/src
45: If the checksums show damage to just a few source files, or if
46: the change log file (see "fixes" below) reports corrections to
47: some source files, you can request those files individually
48: "from f2c/src". For example, to get defs.h and xsum0.out, you
49: would ask netlib to
50: send defs.h xsum0.out from f2c/src
51: "all from f2c/src" is 654329 bytes long.
52:
53: Tip: if asked to send over 99,000 bytes in one request, netlib
54: breaks the shipment into 1000 line pieces and sends each piece
55: separately (since otherwise some mailers might gag). To avoid
56: the hassle of reassembling the pieces, try to keep each request
57: under 99,000 bytes long. The final number in each line of
58: xsum0.out gives the length of each file in f2c/src. For
59: example,
60: send exec.c expr.c from f2c/src
61: send format.c format_data.c from f2c/src
62: will give you slightly less hassle than
63: send exec.c expr.c format.c format_data.c from f2c/src
64: Alternatively, if all the mailers in your return path allow
65: long messages, you can supply an appropriate mailsize line in
66: your netlib request, e.g.
67: mailsize 200k
68: send exec.c expr.c format.c format_data.c from f2c/src
69:
70: If you have trouble generating gram.c, you can ask netlib to
71: send gram.c from f2c/src
72: Then `xsum gram.c` should report
73: gram.c e2eca42c 57277
74: NOTE: For now, you may exercise f2c by sending netlib a message whose
75: first line is "execute f2c" and whose remaining lines are
76: the Fortran 77 source that you wish to have converted.
77: Return mail brings you the resulting C, with f2c's error
78: messages between #ifdef uNdEfInEd and #endif at the end.
79: (To understand line numbers in the error messages, regard
80: the "execute f2c" line as line 0. It is stripped away by
81: the netlib software before f2c sees your Fortran input.)
82: Options described in the man page may be transmitted to
83: netlib by having the first line of input be a comment
84: whose first 6 characters are "c$f2c " and whose remaining
85: characters are the desired options, e.g., "c$f2c -R -u".
86: This scheme may change -- ask netlib to
87: send index from f2c
88: if you do not get the behavior you expect.
89:
90: During the initial experimental period, incoming Fortran
91: will be saved in a file. Don't send any secrets!
92:
93:
94: BUGS: Please send bug reports (including the shortest example
95: you can find that illustrates the bug) to research!dmg
96: or [email protected] . You might first check whether
97: the bug goes away when you turn optimization off.
98:
99:
100: NOTE: f2c.h defines several types, e.g., real, integer, doublereal.
101: The definitions in f2c.h are suitable for most machines, but if
102: your machine has sizeof(double) > 2*sizeof(long), you may need
103: to adjust f2c.h appropriately. f2c assumes
104: sizeof(doublecomplex) = 2*sizeof(doublereal)
105: sizeof(doublereal) = sizeof(complex)
106: sizeof(doublereal) = 2*sizeof(real)
107: sizeof(real) = sizeof(integer)
108: sizeof(real) = sizeof(logical)
109: sizeof(real) = 2*sizeof(shortint)
110: EQUIVALENCEs may not be translated correctly if these
111: assumptions are violated.
112:
113: There exists a C compiler that objects to the lines
114: typedef VOID C_f; /* complex function */
115: typedef VOID H_f; /* character function */
116: typedef VOID Z_f; /* double complex function */
117: in f2c.h . If yours is such a compiler, do two things:
118: 1. Complain to your vendor about this compiler bug.
119: 2. Find the line
120: #define VOID void
121: in f2c.h and change it to
122: #define VOID int
123: (For readability, the f2c.h lines shown above have had two
124: tabs inserted before their first character.)
125:
126: FTP: All the material described above is now available by ftp from
127: research.att.com (login: netlib; Password: your E-mail address;
128: cd f2c). You must uncompress the .Z files once you have a
129: copy of them, e.g., by
130: uncompress *.Z
131:
132: -----------------
133: Recent change log (partial)
134: -----------------
135:
136: Tue Oct 15 10:25:49 EDT 1991:
137: Minor tweaks that make some PC compilers happier: insert some
138: casts, add args to signal functions.
139: Change -g to emit uncommented #line lines -- and to emit more of them;
140: update fc, f2c.1, f2c.1t, f2c.ps to reflect this.
141:
142: Thu Oct 17 09:22:05 EDT 1991:
143: libi77: README, fio.h, sue.c, uio.c changed so the length field
144: in unformatted sequential records has type long rather than int
145: (unless UIOLEN_int is #defined). This is for systems where sizeof(int)
146: can vary, depending on the compiler or compiler options.
147:
148: Thu Oct 17 13:42:59 EDT 1991:
149: libi77: inquire.c: when MSDOS is defined, don't strcmp units[i].ufnm
150: when it is NULL.
151:
152: Tue Oct 22 18:12:56 EDT 1991:
153: Fix memory fault when a character*(*) argument is used (illegally)
154: as a dummy variable in the definition of a statement function. (The
155: memory fault occurred when the statement function was invoked.)
156: Complain about implicit character*(*).
157:
158: Thu Nov 14 08:50:42 EST 1991:
159: libi77: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c; this change
160: should be invisible unless you're running a brain-damaged system.
161:
162: Mon Nov 25 19:04:40 EST 1991:
163: libi77: correct botches introduced 17 Oct. 1991 and 14 Nov. 1991
164: (change uint to Uint in lwrite.c; other changes that only matter if
165: sizeof(int) != sizeof(long)).
166: Add a more meaningful error message when bailing out due to an attempt
167: to invoke a COMMON variable as a function.
168:
169: Sun Dec 1 19:29:24 EST 1991:
170: libi77: uio.c: add test for read failure (seq. unformatted reads);
171: adjust an error return from EOF to off end of record.
172:
173: Tue Dec 10 17:42:28 EST 1991:
174: Add tests to prevent memory faults with bad uses of character*(*).
175:
176: Thu Dec 12 11:24:41 EST 1991:
177: libi77: fix bug with internal list input that caused the last
178: character of each record to be ignored; adjust error message in
179: internal formatted input from "end-of-file" to "off end of record"
180: if the format specifies more characters than the record contains.
181:
182: Wed Dec 18 17:48:11 EST 1991:
183: Fix bug in translating nonsensical ichar invocations involving
184: concatenations.
185: Fix bug in passing intrinsics lle, llt, lge, lgt as arguments;
186: hl_le was being passed rather than l_le, etc.
187: libf77: adjust length parameters from long to ftnlen, for
188: compiling with f2c_i2 defined.
189:
190: Sat Dec 21 15:30:57 EST 1991:
191: Allow DO nnn ... to end with an END DO statement labeled nnn.
192:
193: Tue Dec 31 13:53:47 EST 1991:
194: Fix bug in handling dimension a(n**3,2) -- pow_ii was called
195: incorrectly.
196: Fix bug in translating
197: subroutine x(abc,n)
198: character abc(n)
199: write(abc,'(i10)') 123
200: end
201: (omitted declaration and initialiation of abc_dim1).
202:
203: Fri Jan 17 11:54:20 EST 1992:
204: Diagnose some illegal uses of main program name (rather than
205: memory faulting).
206: libi77: (1) In list and namelist input, treat "r* ," and "r*,"
207: alike (where r is a positive integer constant), and fix a bug in
208: handling null values following items with repeat counts (e.g.,
209: 2*1,,3). (2) For namelist reading of a numeric array, allow a new
210: name-value subsequence to terminate the current one (as though the
211: current one ended with the right number of null values).
212: (3) [lio.h, lwrite.c]: omit insignificant zeros in list and namelist
213: output. (Compile with -DOld_list_output to get the old behavior.)
214:
215: Sat Jan 18 15:58:01 EST 1992:
216: libi77: make list output consistent with F format by printing .1
217: rather than 0.1 (introduced yesterday).
218:
219: Wed Jan 22 08:32:43 EST 1992:
220: libi77: add comment to README pointing out preconnection of
221: Fortran units 5, 6, 0 to stdin, stdout, stderr (respectively).
222:
223: Mon Feb 3 11:57:53 EST 1992:
224: libi77: fix namelist read bug that caused the character following
225: a comma to be ignored.
226:
227: Fri Feb 28 01:04:26 EST 1992:
228: libf77: fix buggy z_sqrt.c (double precision square root), which
229: misbehaved for arguments in the southwest quadrant.
230:
231: Thu Mar 19 15:05:18 EST 1992:
232: Fix bug (introduced 17 Jan 1992) in handling multiple entry points
233: of differing types (with implicitly typed entries appearing after
234: the first executable statement).
235: Fix memory fault in the following illegal Fortran:
236: double precision foo(i)
237: * illegal: above should be "double precision function foo(i)"
238: foo = i * 3.2
239: entry moo(i)
240: end
241: Note about ANSI_Libraries (relevant, e.g., to IRIX 4.0.1 and AIX)
242: added to README.
243: Abort zero divides during constant simplification.
244:
245: Sat Mar 21 01:27:09 EST 1992:
246: Tweak ckalloc (misc.c) for systems where malloc(0) = 0; this matters
247: for subroutines with multiple entry points but no arguments.
248: Add "struct memblock;" to init.c (irrelevant to most compilers).
249:
250: Wed Mar 25 13:31:05 EST 1992:
251: Fix bug with IMPLICIT INTEGER*4(...): under -i2 or -I2, the *4 was
252: ignored.
253:
254: Tue May 5 09:53:55 EDT 1992:
255: Tweaks to README; e.g., ANSI_LIbraries changed to ANSI_Libraries .
256:
257: Wed May 6 23:49:07 EDT 1992
258: Under -A and -C++, have subroutines return 0 (even if they have
259: no * arguments).
260: Adjust libi77 (rsne.c and lread.c) for systems where ungetc is
261: a macro. Tweak lib[FI]77/makefile to use unique intermediate file
262: names (for parallel makes).
263:
264: Tue May 19 09:03:05 EDT 1992:
265: Adjust libI77 to make err= work with internal list and formatted I/O.
266:
267: Sat May 23 18:17:42 EDT 1992:
268: Under -A and -C++, supply "return 0;" after the code generated for
269: a STOP statement -- the C compiler doesn't know that s_stop won't
270: return.
271: New (mutually exclusive) options:
272: -f treats all input lines as free-format lines,
273: honoring text that appears after column 72
274: and not padding lines shorter than 72 characters
275: with blanks (which matters if a character string
276: is continued across 2 or more lines).
277: -72 treats text appearing after column 72 as an error.
278:
279: Sun May 24 09:45:37 EDT 1992:
280: Tweak description of -f in f2c.1 and f2c.1t; update f2c.ps .
281:
282: Fri May 29 01:17:15 EDT 1992:
283: Complain about externals used as variables. Example
284: subroutine foo(a,b)
285: external b
286: a = a*b ! illegal use of b; perhaps should be b()
287: end
288:
289: Mon Jun 15 11:15:27 EDT 1992:
290: Fix bug in handling namelists with names that have underscores.
291:
292: Sat Jun 27 17:30:59 EDT 1992:
293: Under -A and -C++, end Main program aliases with "return 0;".
294: Under -A and -C++, use .P files and usage in previous subprograms
295: in the current file to give prototypes for functions declared EXTERNAL
296: but not invoked.
297: Fix memory fault under -d1 -P .
298: Under -A and -C++, cast arguments to the right types in calling
299: a function that has been defined in the current file or in a .P file.
300: Fix bug in handling multi-dimensional arrays with array references
301: in their leading dimensions.
302: Fix bug in the intrinsic cmplx function when the first argument
303: involves an expression for which f2c generates temporary variables,
304: e.g. cmplx(abs(real(a)),1.) .
305:
306: Sat Jul 18 07:36:58 EDT 1992:
307: Fix buglet with -e1c (invisible on most systems) temporary file
308: f2c_functions was unlinked before being closed.
309: libf77: fix bugs in evaluating m**n for integer n < 0 and m an
310: integer different from 1 or a real or double precision 0.
311: Catch SIGTRAP (to print "Trace trap" before aborting). Programs
312: that previously erroneously computed 1 for 0**-1 may now fault.
313: Relevant routines: main.c pow_di.c pow_hh.c pow_ii.c pow_ri.c .
314:
315: Sat Jul 18 08:40:10 EDT 1992:
316: libi77: allow namelist input to end with & (e.g. &end).
317:
318: Thu Jul 23 00:14:43 EDT 1992:
319: Append two underscores rather than one to C keywords used as
320: local variables to avoid conflicts with similarly named COMMON blocks.
321:
322: Thu Jul 23 11:20:55 EDT 1992:
323: libf77, libi77 updated to assume ANSI prototypes unless KR_headers
324: is #defined.
325: libi77 now recognizes a Z format item as in Fortran 90;
326: the implementation assumes 8-bit bytes and botches character strings
327: on little-endian machines (by printing their bytes from right to
328: left): expect this bug to persist; fixing it would require a
329: change to the I/O calling sequences.
330:
331: Tue Jul 28 15:18:33 EDT 1992:
332: libi77: insert missed "#ifdef KR_headers" lines around getnum
333: header in rsne.c. Version not updated.
334:
335: Thu Aug 6 14:19:22 EDT 1992:
336: Update "names.c from f2c/src", which missed being updated on 23 July.
337:
338: Fri Aug 14 08:07:09 EDT 1992:
339: libi77: tweak wrt_E in wref.c to avoid signing NaNs.
340:
341: Sun Aug 23 19:05:22 EDT 1992:
342: fc: supply : after O in getopt invocation (for -O1 -O2 -O3).
343:
344: Mon Aug 24 18:37:59 EDT 1992:
345: Recant above tweak to fc: getopt is dumber than I thought;
346: it's necessary to say -O 1 (etc.).
347: libF77/README: add comments about ABORT, ERF, DERF, ERFC, DERFC,
348: GETARG, GETENV, IARGC, SIGNAL, and SYSTEM.
349:
350: Tue Oct 27 01:57:42 EST 1992:
351: libf77, libi77:
352: 1. Fix botched indirection in signal_.c.
353: 2. Supply missing l_eof = 0 assignment to s_rsne() in rsne.c (so
354: end-of-file on other files won't confuse namelist reads of external
355: files).
356: 3. Prepend f__ to external names that are only of internal
357: interest to lib[FI]77.
358:
359: Current timestamps of files in "all from f2c/src", sorted by time,
360: appear below (mm/dd/year hh:mm:ss). To bring your source up to date,
361: obtain source files with a timestamp later than the time shown in your
362: version.c. Note that the time shown in the current version.c is the
363: timestamp of the source module that immediately follows version.c below:
364:
365: 7/23/1992 0:03:19 xsum0.out
366: 7/22/1992 22:54:58 version.c
367: 7/22/1992 22:54:52 misc.c
368: 7/18/1992 0:41:22 names.c
369: 6/27/1992 14:50:07 vax.c
370: 6/27/1992 14:17:39 expr.c
371: 6/20/1992 13:36:37 output.c
372: 6/20/1992 11:41:38 pread.c
373: 6/20/1992 11:06:07 putpcc.c
374: 6/20/1992 10:58:23 proc.c
375: 6/20/1992 8:14:11 format.c
376: 6/20/1992 8:03:20 defs.h
377: 6/20/1992 5:34:05 sysdep.c
378: 6/19/1992 7:15:28 main.c
379: 5/24/1992 9:44:46 f2c.1
380: 5/24/1992 8:57:16 f2c.1t
381: 5/23/1992 14:18:33 lex.c
382: 5/22/1992 23:09:57 gram.exec
383: 5/05/1992 9:44:35 README
384: 3/25/1992 12:58:56 init.c
385: 1/17/1992 10:56:46 Notice
386: 12/30/1991 17:17:44 io.c
387: 12/21/1991 15:24:34 exec.c
388: 12/18/1991 16:11:29 intr.c
389: 12/18/1991 15:32:02 put.c
390: 10/15/1991 9:09:35 niceprintf.c
391: 10/15/1991 1:27:37 formatdata.c
392: 10/15/1991 1:26:39 sysdep.h
393: 10/14/1991 12:30:48 p1output.c
394: 10/11/1991 18:59:37 defines.h
395: 9/09/1991 23:15:17 xsum.c
396: 8/28/1991 0:07:01 gram.dcl
397: 6/17/1991 16:43:01 gram.head
398: 6/06/1991 0:41:56 makefile
399: 4/25/1991 12:56:19 f2c.h
400: 4/05/1991 7:43:45 mem.c
401: 2/08/1991 11:29:18 malloc.c
402: 1/15/1991 1:21:00 equiv.c
403: 11/30/1990 9:47:48 data.c
404: 7/26/1990 10:54:47 parse_args.c
405: 7/26/1990 10:44:26 parse.h
406: 5/11/1990 14:17:04 error.c
407: 4/18/1990 12:25:18 cds.c
408: 4/06/1990 0:00:57 gram.io
409: 4/05/1990 23:40:09 gram.expr
410: 3/27/1990 16:39:18 names.h
411: 3/27/1990 10:05:15 p1defs.h
412: 2/16/1990 10:37:27 tokens
413: 2/14/1990 2:00:20 format.h
414: 2/14/1990 1:38:46 output.h
415: 2/14/1990 0:54:06 iob.h
416: 2/03/1990 0:58:26 niceprintf.h
417: 1/29/1990 13:26:52 memset.c
418: 1/11/1990 18:02:51 ftypes.h
419: 1/07/1990 1:20:01 usignal.h
420: 11/27/1989 8:27:37 machdefs.h
421: 7/01/1989 11:59:44 pccdefs.h
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.