NameDateSize

..27-Sep-201339

ChangeLogH A D22-Nov-201253.8 KiB

changes.netlibH A D22-Nov-2012114.3 KiB

configureH A D22-Nov-201254.2 KiB

configure.inH A D22-Nov-20127.6 KiB

disclaimer.netlibH A D22-Nov-2012801

f2c.hH A D22-Nov-20122.7 KiB

f2cext.cH A D22-Nov-201213.8 KiB

g2c.hinH A D22-Nov-20125.5 KiB

libF77/H22-Nov-2012135

libI77/H22-Nov-201247

libU77/H22-Nov-201266

Makefile.inH A D22-Nov-20128.6 KiB

permission.netlibH A D22-Nov-20121.2 KiB

READMEH A D22-Nov-20125.4 KiB

readme.netlibH A D22-Nov-201229 KiB

TODOH A D22-Nov-2012368

README

11998-08-11
2
3This directory contains the libf2c library packaged for use with g77
4to configure and build automatically (in principle!) as part of the
5top-level configure and make steps.  g77 names this library `libg2c'
6to avoid conflicts with existing copies of `libf2c' on a system.
7
8Some small changes have been made vis-a-vis the netlib distribution of
9libf2c, which comes from <ftp:bell-labs.com/netlib/f2c/> and is maintained
10(excellently) by David M. Gay <dmg@bell-labs.com>.  See the Notice files
11for copyright information.  We usually try to get g77-specific changes
12rolled back into the libf2c distribution.
13
14Files that come directly from netlib are either maintained in the
15libf2c directory under their original names or, if they are not pertinent
16for g77's version of libf2c, under their original names with `.netlib'
17appended.  For example, permissions.netlib is a copy of f2c's top-level
18`permissions' file in the netlib distribution.  In this case, it applies
19only to the relevant portions of the libF77/ and libI77/ directories; it
20does not apply to the libU77/ directory, which is distributed under
21different licensing arrangements.  Similarly, the `makefile.netlib' files
22in the libF77/ and libI77/ subdirectories are copies of the respective
23`makefile' files in the netlib distribution, but are not used when
24building g77's version of libf2c.
25
26The README.netlib files in libF77/ and libI77/ thus might be
27interesting, but should not be taken as guidelines for how to
28configure and build libf2c in g77's distribution.
29
30* Read permissions.netlib for licensing conditions that apply to
31  distributing programs containing portions of code in the libF77/ and
32  libI77/ subdirectories.  Also read disclaimer.netlib.
33
34* Read libU77/COPYING.LIB for licensing conditions that apply to
35  distributing programs containing portions of code in the libU77/
36  subdirectory.
37
38Among the user-visible changes (choices) g77 makes in its version of libf2c:
39
40-  f2c.h configured to default to padding unformatted direct reads
41   (#define Pad_UDread), because that's the behavior most users
42   expect.
43
44-  f2c.h configured to default to outputting leading zeros before
45   decimal points in formatted and list-directed output, to be compatible
46   with many other compilers (#define WANT_LEAD_0).  Either way is
47   standard-conforming, however, and you should try to avoid writing
48   code that assumes one format or another.
49
50-  dtime_() and etime_() are from Dave Love's libU77, not from
51   netlib's libF77.
52
53-  Routines that are intended to be called directly via user code
54   (as in `CALL EXIT', but not the support routines for `OPEN')
55   have been renamed from `<name>' to `G77_<name>_0'.  This, in
56   combination with g77 recognizing these names as intrinsics and
57   calling them directly by those names, reduces the likelihood of
58   interface mismatches occurring due to use of compiler options
59   that change code generation, and permits use of these names as
60   both intrinsics and user-supplied routines in applications (as
61   required by the Fortran standards).  f2cext.c contains "jacket"
62   routines named `<name>' that call `G77_<name>_0', to support
63   code that relies on calling the relevant routines as `EXTERNAL'
64   routines.
65
66   Note that the `_0' in the name denotes version 0 of the *interface*,
67   not the *implementation*, of a routine.  The interface of a
68   given routine *must not change* -- instead, introduce a new copy
69   of the code, with an increment (e.g. `_1') suffix, having the
70   new interface.  Whether the previous interface is maintained is
71   not as important as ensuring the routine implementing the new
72   interface is never successfully linked to a call in existing,
73   e.g. previously compiled, code that expects the old interface.
74
75-  Version.c in the subdirectories contains g77-specific version
76   information and a routine (per subdirectory) to print both the
77   netlib and g77 version information when called.  The `g77 -v'
78   command is designed to trigger this, by compiling, linking, and
79   running a small program that calls the routines in sequence.
80
81-  libF77/main.c no longer contains the actual code to copy the
82   argc and argv values into globals or to set up the signal-handling
83   environment.  These have been removed to libF77/setarg.c and
84   libF77/setsig.c, respectively.  libF77/main.c contains procedure
85   calls to the new code in place of the code itself.  This should
86   simplify linking executables with a main() function other than
87   that in libF77/main.c (such as one written by the user in C or
88   C++).  See the g77 documentation for more information.
89
90-  Complex-arithmetic support routines in libF77/ take a different approach
91   to avoiding problems resulting from aliased input and output arguments,
92   which should avoid particularly unusual alias problems that netlib
93   libf2c might suffer from.
94
95-  libF77/signal_.c supports systems with 64-bit pointers and 32-bit
96   integers.
97
98-  I/O routines in libI77/ have code to detect attempts to do recursive
99   I/O more "directly", mainly to lead to a clearer diagnostic than
100   typically occurs under such conditions.
101
102-  Formatted-I/O routines in libI77/ have code to pretty-print a FORMAT
103   string when printing a fatal diagnostic involving formatted I/O.
104
105-  libI77/open.c supports a more robust, perhaps more secure, method
106   of naming temporary files on some systems.
107
108-  Some g77-specific handling of building under Microsoft operating
109   systems exists, mainly in libI77/.
110

readme.netlib

1
2====== old index for f2c, now "readme from f2c" ============
3
4FILES:
5
6f2c.h	Include file necessary for compiling output of the converter.
7	See the second NOTE below.
8
9f2c.1	Man page for f2c.
10
11f2c.1t	Source for f2c.1 (to be processed by troff -man or nroff -man).
12
13libf77	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
17libi77	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, and to
24        install it where you can access it by specifying -lf2c .  The
25        definition of link_msg in sysdep.c assumes this arrangement.
26
27	Both libf77 and libi77 are bundles, meant to be unpacked by the
28	Bourne (or Korn) shell.  MS-DOS users can use the MKS Toolkit
29	to unpack libf77 and libi77.
30
31libf2c.zip
32	Only available by ftp: combination of libf77 and libi77, with
33	Unix and PC makefiles.
34
35f2c.ps	Postscript for a technical report on f2c.  After you strip the
36	mail header, the first line should be "%!PS".
37
38fixes	The complete change log, reporting bug fixes and other changes.
39	(Some recent change-log entries are given below).
40
41fc	A shell script that uses f2c and imitates much of the behavior
42	of commonly found f77 commands.  You will almost certainly
43	need to adjust some of the shell-variable assignments to make
44	this script work on your system.
45
46
47SUBDIRECTORY:
48
49f2c/src	Source for the converter itself, including a file of checksums
50	and source for a program to compute the checksums (to verify
51	correct transmission of the source), is available: ask netlib
52	(e.g., netlib@netlib.bell-labs.com) to
53		send all from f2c/src
54	If the checksums show damage to just a few source files, or if
55	the change log file (see "fixes" below) reports corrections to
56	some source files, you can request those files individually
57	"from f2c/src".  For example, to get defs.h and xsum0.out, you
58	would ask netlib to
59		send defs.h xsum0.out from f2c/src
60	"all from f2c/src" is about 640 kilobytes long; for convenience
61	(and checksums), it includes copies of f2c.h, f2c.1, and f2c.1t.
62
63	Tip: if asked to send over 99,000 bytes in one request, netlib
64	breaks the shipment into 1000 line pieces and sends each piece
65	separately (since otherwise some mailers might gag).  To avoid
66	the hassle of reassembling the pieces, try to keep each request
67	under 99,000 bytes long.  The final number in each line of
68	xsum0.out gives the length of each file in f2c/src.  For
69	example,
70		send exec.c expr.c from f2c/src
71		send format.c format_data.c from f2c/src
72	will give you slightly less hassle than
73		send exec.c expr.c format.c format_data.c from f2c/src
74	Alternatively, if all the mailers in your return path allow
75	long messages, you can supply an appropriate mailsize line in
76	your netlib request, e.g.
77		mailsize 200k
78		send exec.c expr.c format.c format_data.c from f2c/src
79
80	The makefile used to generate gram.c; now we distribute a
81	working gram.c, and you must say
82		make gram1.c
83		mv gram1.c gram.c
84	if you want to generate your own gram.c -- there are just too
85	many broken variants of yacc floating around nowadays for
86	generation of gram.c to be the default.
87
88NOTE:	You may exercise f2c by sending netlib@netlib.bell-labs.com
89	a message whose first line is "execute f2c" and whose remaining
90	lines are the Fortran 77 source that you wish to have converted.
91	Return mail brings you the resulting C, with f2c's error
92	messages between #ifdef uNdEfInEd and #endif at the end.
93	(To understand line numbers in the error messages, regard
94	the "execute f2c" line as line 0.  It is stripped away by
95	the netlib software before f2c sees your Fortran input.)
96	Options described in the man page may be transmitted to
97	netlib by having the first line of input be a comment
98	whose first 6 characters are "c$f2c " and whose remaining
99	characters are the desired options, e.g., "c$f2c -R -u".
100
101	You may say "execute f2c" in the Subject line instead of (but
102	*not* in addition to) in the first line of the message body.
103
104	The incoming Fortran is saved, at least for a while.  Don't
105	send any secrets!
106
107
108BUGS:	Please send bug reports (including the shortest example
109	you can find that illustrates the bug) to research!dmg
110	or dmg@bell-labs.com .  You might first check whether
111	the bug goes away when you turn optimization off.
112
113
114NOTE:	f2c.h defines several types, e.g., real, integer, doublereal.
115	The definitions in f2c.h are suitable for most machines, but if
116	your machine has sizeof(double) > 2*sizeof(long), you may need
117	to adjust f2c.h appropriately.  f2c assumes
118		sizeof(doublecomplex) = 2*sizeof(doublereal)
119		sizeof(doublereal) = sizeof(complex)
120		sizeof(doublereal) = 2*sizeof(real)
121		sizeof(real) = sizeof(integer)
122		sizeof(real) = sizeof(logical)
123		sizeof(real) = 2*sizeof(shortint)
124	EQUIVALENCEs may not be translated correctly if these
125	assumptions are violated.
126
127	On machines, such as those using a DEC Alpha processor, on
128	which sizeof(short) == 2, sizeof(int) == sizeof(float) == 4,
129	and sizeof(long) == sizeof(double) == 8, it suffices to
130	modify f2c.h by removing the first occurrence of "long "
131	on each line containing "long ", e.g., by issuing the
132	commands
133		mv f2c.h f2c.h0
134		sed 's/long //' f2c.h0 >f2c.h
135	On such machines, one can enable INTEGER*8 by uncommenting
136	the typedef of longint in f2c.h, so it reads
137		typedef long longint;
138	by compiling libI77 with -DAllow_TYQUAD, and by adjusting
139	libF77/makefile as described in libF77/README.
140
141	Some machines may have sizeof(int) == 4, sizeof(float) == 8,
142	and sizeof(long long) == 8.  On such machines, adjust f2c.h
143	by changing "long int " to "long long ", e.g., by saying
144		mv f2c.h f2c.h0
145		sed 's/long int /long long /' f2c.h0 >f2c.h
146	One can enable INTEGER*8 on such machines as described
147	above, but with
148		typedef long long longint;
149
150	There exists a C compiler that objects to the lines
151		typedef VOID C_f;	/* complex function */
152		typedef VOID H_f;	/* character function */
153		typedef VOID Z_f;	/* double complex function */
154	in f2c.h .  If yours is such a compiler, do two things:
155	1. Complain to your vendor about this compiler bug.
156	2. Find the line
157		#define VOID void
158	   in f2c.h and change it to
159		#define VOID int
160	(For readability, the f2c.h lines shown above have had two
161	tabs inserted before their first character.)
162
163FTP:	All the material described above is now available by anonymous
164	ftp from netlib.bell-labs.com (login: anonymous; Password: your
165	E-mail address; cd netlib/f2c).  Note that you can say, e.g.,
166
167		cd /netlib/f2c/src
168		binary
169		prompt
170		mget *.gz
171
172	to get all the .gz files in src.  You must uncompress the .gz
173	files once you have a copy of them, e.g., by
174
175		gzip -dN *.gz
176
177	You can also get the entire f2c tree as a tar file:
178
179		ftp://netlib.bell-labs.com/netlib/f2c.tar
180
181	(which is a synthetic file -- created on the fly and not visible
182	to ftp's "ls" or "dir" commands).
183
184	Subdirectory msdos contains two PC versions of f2c,
185	f2c.exe.gz and f2cx.exe.gz; the latter uses extended memory.
186	The README in that directory provides more details.
187
188	Changes appear first in the f2c files available by E-mail
189	from netlib@netlib.bell-labs.com.  If the deamons work right,
190	changed files are available the next day by ftp from
191	netlib.bell-labs.com.  In due course, they reach other netlib servers.
192
193CHANGE NOTIFICATION:
194	Send the E-mail message
195		subscribe f2c
196	to netlib@netlib.bell-labs.com to request notification of new and
197	changed f2c files.  (Beware that automatically sent change
198	notifications may reach you before changes have reached
199	ftp://netlib.bell-labs.com/netlib/f2c or to other netlib servers.)
200	Send the E-mail message
201		unsubscribe f2c
202	to recant your notification request.
203
204-----------------
205Recent change log (partial)
206-----------------
207
208Mon May 13 23:35:26 EDT 1996
209  Recognize Fortran 90's /= as a synonym for .NE..  (<> remains a
210synonym for .NE..)
211  Emit an empty int function of no arguments to supply an external
212name to named block data subprograms (so they can be called somewhere
213to force them to be loaded from a library).
214  Fix bug (memory fault) in handling the following illegal Fortran:
215	parameter(i=1)
216	equivalence(i,j)
217	end
218  Treat cdabs, cdcos, cdexp, cdlog, cdsin, and cdsqrt as synonyms for
219the double complex intrinsics zabs, zcos, zexp, zlog, zsin, and zsqrt,
220respectively, unless -cd is specified.
221  Recognize the Fortran 90 bit-manipulation intrinsics btest, iand,
222ibclr, ibits, ibset, ieor, ior, ishft, and ishftc, unless -i90 is
223specified.  Note that iand, ieor, and ior are thus now synonyms for
224"and", "xor", and "or", respectively.
225  Add three macros (bit_test, bit_clear, bit_set) to f2c.h for use
226with btest, ibclr, and ibset, respectively.  Add new functions
227[lq]bit_bits, [lq]bit_shift, and [lq]_bit_cshift to libF77 for
228use with ibits, ishft, and ishftc, respectively.
229  Add integer function ftell(unit) (returning -1 on error) and
230subroutine fseek(unit, offset, whence, *) to libI77 (with branch to
231label * on error).
232
233Tue May 14 23:21:12 EDT 1996
234  Fix glitch (possible memory fault, or worse) in handling multiple
235entry points with names over 28 characters long.
236
237Mon Jun 10 01:20:16 EDT 1996
238  Update netlib E-mail and ftp addresses in f2c/readme and
239f2c/src/readme (which are different files) -- to reflect the upcoming
240breakup of AT&T.
241  libf77: trivial tweaks to F77_aloc.c and system_.c; Version.c not
242changed.
243  libi77: Adjust rsli.c and lread.c so internal list input with too
244few items in the input string will honor end= .
245
246Mon Jun 10 22:59:57 EDT 1996
247  Add Bits_per_Byte to sysdep.h and adjust definition of Table_size
248to depend on Bits_per_Byte (forcing Table_size to be a power of 2); in
249lex.c, change "comstart[c & 0xfff]" to "comstart[c & (Table_size-1)]"
250to avoid an out-of-range subscript on end-of-file.
251
252Wed Jun 12 00:24:28 EDT 1996
253  Fix bug in output.c (dereferencing a freed pointer) revealed in
254	print *		!np in out_call in output.c clobbered by free
255	end		!during out_expr.
256
257Wed Jun 19 08:12:47 EDT 1996
258  f2c.h: add types uinteger, ulongint (for libF77); add qbit_clear
259and qbit_set macros (in a commented-out section) for integer*8.
260  For integer*8, use qbit_clear and qbit_set for ibclr and ibset.
261  libf77: add casts to unsigned in [lq]bitshft.c.
262
263Thu Jun 20 13:30:43 EDT 1996
264  Complain at character*(*) in common (rather than faulting).
265  Fix bug in recognizing hex constants that start with "16#" (e.g.,
26616#1234abcd, which is a synonym for z'1234abcd').
267  Fix bugs in constant folding of expressions involving btest, ibclr,
268and ibset.
269  Fix bug in constant folding of rshift(16#80000000, -31) (on a 32-bit
270machine; more generally, the bug was in constant folding of
271rshift(ibset(0,NBITS-1), 1-NBITS) when f2c runs on a machine with
272long ints having NBITS bits.
273
274Mon Jun 24 07:58:53 EDT 1996
275  Adjust struct Literal and newlabel() function to accommodate huge
276source files (with more than 32767 newlabel() invocations).
277  Omit .c file when the .f file has a missing final end statement.
278
279Wed Jun 26 14:00:02 EDT 1996
280  libi77: Add discussion of MXUNIT (highest allowed Fortran unit number)
281to libI77/README.
282
283Fri Jun 28 14:16:11 EDT 1996
284  Fix glitch with -onetrip: the temporary variable used for nonconstant
285initial loop variable values was recycled too soon.  Example:
286	do i = j+1, k
287		call foo(i+1)	! temp for j+1 was reused here
288		enddo
289	end
290
291Tue Jul  2 16:11:27 EDT 1996
292  formatdata.c: add a 0 to the end of the basetype array (for TYBLANK)
293(an omission that was harmless on most machines).
294  expr.c: fix a dereference of NULL that was only possible with buggy
295input, such as
296	subroutine $sub(s)	! the '$' is erroneous
297	character s*(*)
298	s(1:) = ' '
299	end
300
301Sat Jul  6 00:44:56 EDT 1996
302  Fix glitch in the intrinsic "real" function when applied to a
303complex (or double complex) variable and passed as an argument to
304some intrinsic functions.  Example:
305	complex a
306	b = sqrt(real(a))
307	end
308  Fix glitch (only visible if you do not use f2c's malloc and the
309malloc you do use is defective in the sense that malloc(0) returns 0)
310in handling include files that end with another include (perhaps
311followed by comments).
312  Fix glitch with character*(*) arguments named "h" and "i" when
313the body of the subroutine invokes the intrinsic LEN function.
314  Arrange that after a previous "f2c -P foo.f" has produced foo.P,
315running "f2c foo.P foo.f" will produce valid C when foo.f contains
316	call sub('1234')
317	end
318	subroutine sub(msg)
319	end
320Specifically, the length argument in "call sub" is now suppressed.
321With or without foo.P, it is also now suppressed when the order of
322subprograms in file foo.f is reversed:
323	subroutine sub(msg)
324	end
325	call sub('1234')
326	end
327  Adjust copyright notices to reflect AT&T breakup.
328
329Wed Jul 10 09:25:49 EDT 1996
330  Fix bug (possible memory fault) in handling erroneously placed
331and inconsistent declarations.  Example that faulted:
332	character*1 w(8)
333	call foo(w)
334	end
335	subroutine foo(m)
336	data h /0.5/
337	integer m(2)	! should be before data
338	end
339  Fix bug (possible fault) in handling illegal "if" constructions.
340Example (that faulted):
341	subroutine foo(i,j)
342	if (i) then		! bug: i is integer, not logical
343	else if (j) then	! bug: j is integer, not logical
344	endif
345	end
346  Fix glitch with character*(*) argument named "ret_len" to a
347character*(*) function.
348
349Wed Jul 10 23:04:16 EDT 1996
350  Fix more glitches in the intrinsic "real" function when applied to a
351complex (or double complex) variable and passed as an argument to
352some intrinsic functions.  Example:
353	complex a, b
354	r = sqrt(real(conjg(a))) + sqrt(real(a*b))
355	end
356
357Thu Jul 11 17:27:16 EDT 1996
358  Fix a memory fault associated with complicated, illegal input.
359Example:
360	subroutine goo
361	character a
362	call foo(a)	! inconsistent with subsequent def and call
363	end
364	subroutine foo(a)
365	end
366	call foo(a)
367	end
368
369Wed Jul 17 19:18:28 EDT 1996
370  Fix yet another case of intrinsic "real" applied to a complex
371argument.  Example:
372	complex a(3)
373	x = sqrt(real(a(2)))	! gave error message about bad tag
374	end
375
376Mon Aug 26 11:28:57 EDT 1996
377  Tweak sysdep.c for non-Unix systems in which process ID's can be
378over 5 digits long.
379
380Tue Aug 27 08:31:32 EDT 1996
381  Adjust the ishft intrinsic to use unsigned right shifts.  (Previously,
382a negative constant second operand resulted in a possibly signed shift.)
383
384Thu Sep 12 14:04:07 EDT 1996
385  equiv.c: fix glitch with -DKR_headers.
386  libi77: fmtlib.c: fix bug in printing the most negative integer.
387
388Fri Sep 13 08:54:40 EDT 1996
389  Diagnose some illegal appearances of substring notation.
390
391Tue Sep 17 17:48:09 EDT 1996
392  Fix fault in handling some complex parameters.  Example:
393	subroutine foo(a)
394	double complex a, b
395	parameter(b = (0,1))
396	a = b	! f2c faulted here
397	end
398
399Thu Sep 26 07:47:10 EDT 1996
400  libi77:  fmt.h:  for formatted writes of negative integer*1 values,
401make ic signed on ANSI systems.  If formatted writes of integer*1
402values trouble you when using a K&R C compiler, switch to an ANSI
403compiler or use a compiler flag that makes characters signed.
404
405Tue Oct  1 14:41:36 EDT 1996
406  Give a better error message when dummy arguments appear in data
407statements.
408
409Thu Oct 17 13:37:22 EDT 1996
410  Fix bug in typechecking arguments to character and complex (or
411double complex) functions; the bug could cause length arguments
412for character arguments to be omitted on invocations appearing
413textually after the first invocation.  For example, in
414	subroutine foo
415	character c
416	complex zot
417	call goo(zot(c), zot(c))
418	end
419the length was omitted from the second invocation of zot, and
420there was an erroneous error message about inconsistent calling
421sequences.
422
423Wed Dec  4 13:59:14 EST 1996
424  Fix bug revealed by
425	subroutine test(cdum,rdum)
426	complex cdum
427	rdum=cos(real(cdum))	! "Unexpected tag 3 in opconv_fudge"
428	end
429  Fix glitch in parsing "DO 10 D0 = 1, 10".
430  Fix glitch in parsing
431	real*8 x
432	real*8 x	! erroneous "incompatible type" message
433	call foo(x)
434	end
435  lib[FI]77/makefile: add comment about omitting -x under Solaris.
436
437Mon Dec  9 23:15:02 EST 1996
438  Fix glitch in parameter adjustments for arrays whose lower
439bound depends on a scalar argument.  Example:
440	subroutine bug(p,z,m,n)
441	integer z(*),m,n
442	double precision p(z(m):z(m) + n)	! p_offset botched
443	call foo(p(0), p(n))
444	end
445  libi77: complain about non-positive rec= in direct read and write
446statements.
447  libf77: trivial adjustments; Version.c not changed.
448
449Wed Feb 12 00:18:03 EST 1997
450  output.c: fix (seldom problematic) glitch in out_call: put parens
451around the ... in a test of the form "if (q->tag == TADDR && ...)".
452  vax.c: fix bug revealed in the "psi_offset =" assignment in the
453following example:
454	subroutine foo(psi,m)
455	integer z(100),m
456	common /a/ z
457	double precision psi(z(m):z(m) + 10)
458	call foo(m+1, psi(0),psi(10))
459	end
460
461Mon Feb 24 23:44:54 EST 1997
462  For consistency with f2c's current treatment of adjacent character
463strings in FORMAT statements, recognize a Hollerith string following
464a string (and merge adjacent strings in FORMAT statements).
465
466Wed Feb 26 13:41:11 EST 1997
467  New libf2c.zip, a combination of the libf77 and libi77 bundles (and
468available only by ftp).
469  libf77: adjust functions with a complex output argument to permit
470aliasing it with input arguments.  (For now, at least, this is just
471for possible benefit of g77.)
472  libi77: tweak to ftell_.c for systems with strange definitions of
473SEEK_SET, etc.
474
475Tue Apr  8 20:57:08 EDT 1997
476  libf77: [cz]_div.c: tweaks invisible on most systems (that may
477improve things slightly with optimized compilation on systems that use
478gratuitous extra precision).
479  libi77: fmt.c: adjust to complain at missing numbers in formats
480(but still treat missing ".nnn" as ".0").
481
482Fri Apr 11 14:05:57 EDT 1997
483  libi77: err.c: attempt to make stderr line buffered rather than
484fully buffered.  (Buffering is needed for format items T and TR.)
485
486Thu Apr 17 22:42:43 EDT 1997
487 libf77: add F77_aloc.o to makefile (and makefile.u in libf2c.zip).
488
489Fri Apr 25 19:32:09 EDT 1997
490 libf77: add [de]time_.c (which may give trouble on some systems).
491
492Tue May 27 09:18:52 EDT 1997
493 libi77: ftell_.c: fix typo that caused the third argument to be
494treated as 2 on some systems.
495
496Mon Jun  9 00:04:37 EDT 1997
497 libi77 (and libf2c.zip): adjust include order in err.c lread.c wref.c
498rdfmt.c to include fmt.h (etc.) after system includes.  Version.c not
499changed.
500
501Mon Jun  9 14:29:13 EDT 1997
502 src/gram.c updated; somehow it did not reflect the change of
50319961001 to gram.dcl.
504
505Mon Jul 21 16:04:54 EDT 1997
506  proc.c: fix glitch in logic for "nonpositive dimension" message.
507  libi77: inquire.c: always include string.h (for possible use with
508-DNON_UNIX_STDIO); Version.c not changed.
509
510Thu Jul 24 17:11:23 EDT 1997
511  Tweak "Notice" to reflect the AT&T breakup -- we missed it when
512updating the copyright notices in the source files last summer.
513  Adjust src/makefile so malloc.o is not used by default, but can
514be specified with "make MALLOC=malloc.o".
515  Add comments to src/README about the "CRAY" T3E.
516
517Tue Aug  5 14:53:25 EDT 1997
518  Add definition of calloc to malloc.c; this makes f2c's malloc
519work on some systems where trouble hitherto arose because references
520to calloc brought in the system's malloc.  (On sensible systems,
521calloc is defined separately from malloc.  To avoid confusion on
522other systems, f2c/malloc.c now defines calloc.)
523  libi77: lread.c: adjust to accord with a change to the Fortran 8X
524draft (in 1990 or 1991) that rescinded permission to elide quote marks
525in namelist input of character data; to get the old behavior, compile
526with F8X_NML_ELIDE_QUOTES #defined.  wrtfmt.o: wrt_G: tweak to print
527the right number of 0's for zero under G format.
528
529Sat Aug 16 05:45:32 EDT 1997
530  libi77: iio.c: fix bug in internal writes to an array of character
531strings that sometimes caused one more array element than required by
532the format to be blank-filled.  Example: format(1x).
533
534Wed Sep 17 00:39:29 EDT 1997
535  libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
536with 64-bit pointers and 32-bit ints that did not 64-bit align
537struct syl (e.g., Linux on the DEC Alpha).  This change should be
538invisible on other machines.
539
540Sun Sep 21 22:05:19 EDT 1997
541  libf77: [de]time_.c (Unix systems only): change return type to double.
542
543Thu Dec  4 22:10:09 EST 1997
544  Fix bug with handling large blocks of comments (over 4k); parts of the
545second and subsequent blocks were likely to be lost (not copied into
546comments in the resulting C).  Allow comment lines to be longer before
547breaking them.
548
549Mon Jan 19 17:19:27 EST 1998
550  makefile: change the rule for making gram.c to one for making gram1.c;
551henceforth, asking netlib to "send all from f2c/src" will bring you a
552working gram.c.  Nowadays there are simply too many broken versions of
553yacc floating around.
554  libi77: backspace.c: for b->ufmt==0, change sizeof(int) to
555sizeof(uiolen).  On machines where this would make a difference, it is
556best for portability to compile libI77 with -DUIOLEN_int, which will
557render the change invisible.
558
559Tue Feb 24 08:35:33 EST 1998
560  makefile: remove gram.c from the "make clean" rule.
561
562Wed Feb 25 08:29:39 EST 1998
563  makefile: change CFLAGS assignment to -O; add "veryclean" rule.
564
565Wed Mar  4 13:13:21 EST 1998
566  libi77: open.c: fix glitch in comparing file names under
567-DNON_UNIX_STDIO.
568
569Mon Mar  9 23:56:56 EST 1998
570  putpcc.c: omit an unnecessary temporary variable in computing
571(expr)**3.
572  libf77, libi77: minor tweaks to make some C++ compilers happy;
573Version.c not changed.
574
575Wed Mar 18 18:08:47 EST 1998
576  libf77: minor tweaks to [ed]time_.c; Version.c not changed.
577  libi77: endfile.c, open.c: acquire temporary files from tmpfile(),
578unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
579New buffering scheme independent of NON_UNIX_STDIO for handling T
580format items.  Now -DNON_UNIX_STDIO is no longer be necessary for
581Linux, and libf2c no longer causes stderr to be buffered -- the former
582setbuf or setvbuf call for stderr was to make T format items work.
583open.c: use the Posix access() function to check existence or
584nonexistence of files, except under -DNON_POSIX_STDIO, where trial
585fopen calls are used.  In open.c, fix botch in changes of 19980304.
586  libf2c.zip: the PC makefiles are now set for NT/W95, with comments
587about changes for DOS.
588
589Fri Apr  3 17:22:12 EST 1998
590  Adjust fix of 19960913 to again permit substring notation on
591character variables in data statements.
592
593Sun Apr  5 19:26:50 EDT 1998
594  libi77: wsfe.c: make $ format item work: this was lost in the changes
595of 17 March 1998.
596
597Sat May 16 19:08:51 EDT 1998
598  Adjust output of ftnlen constants: rather than appending L,
599prepend (ftnlen).  This should make the resulting C more portable,
600e.g., to systems (such as DEC Alpha Unix systems) on which long
601may be longer than ftnlen.
602  Adjust -r so it also casts REAL expressions passed to intrinsic
603functions to REAL.
604
605Wed May 27 16:02:35 EDT 1998
606  libf2c.zip: tweak description of compiling libf2c for INTEGER*8
607to accord with makefile.u rather than libF77/makefile.
608
609Thu May 28 22:45:59 EDT 1998
610  libi77: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
611set f__curunit sooner so various error messages will correctly
612identify the I/O unit involved.
613  libf2c.zip: above, plus tweaks to PC makefiles: for some purposes,
614it's still best to compile with -DMSDOS (even for use with NT).
615
616Thu Jun 18 01:22:52 EDT 1998
617  libi77: lread.c: modified so floating-point numbers (containing
618either a decimal point or an exponent field) are treated as errors
619when they appear as list input for integer data.  Compile lread.c with
620-DALLOW_FLOAT_IN_INTEGER_LIST_INPUT to restore the old behavior.
621
622Mon Aug 31 10:38:54 EDT 1998
623  formatdata.c: if possible, and assuming doubles must be aligned on
624double boundaries, use existing holes in DATA for common blocks to
625force alignment of the block.  For example,
626	block data
627	common /abc/ a, b
628	double precision a
629	integer b(2)
630	data b(2)/1/
631	end
632used to generate
633	struct {
634	    integer fill_1[3];
635	    integer e_2;
636	    doublereal e_3;
637	    } abc_ = { {0}, 1, 0. };
638and now generates
639	struct {
640	    doublereal fill_1[1];
641	    integer fill_2[1];
642	    integer e_3;
643	    } abc_ = { {0}, {0}, 1 };
644In the old generated C, e_3 was added to force alignment; in the new C,
645fill_1 does this job.
646
647Mon Sep  7 19:48:51 EDT 1998
648  libi77: move e_wdfe from sfe.c to dfe.c, where it was originally.
649Why did it ever move to sfe.c?
650
651Tue Sep  8 10:22:50 EDT 1998
652  Treat dreal as a synonym for dble unless -cd is specified on the
653command line.
654
655Sun Sep 13 22:23:41 EDT 1998
656  format.c: fix bug in writing prototypes under f2c -A ... *.P:
657under some circumstances involving external functions with no known
658type, a null pointer was passed to printf.
659
660Tue Oct 20 23:25:54 EDT 1998
661  Comments added to libf2c/README and libF77/README, pointing out
662the need to modify signal1.h on some systems.
663
664Thu Nov 12 15:34:09 EST 1998
665  libf77, libf2c.zip: minor tweaks to [de]time_.c and the makefiles,
666so makefile.sy, makefile.vc, and makefile.wat deal with [de]time_.c.
667
668Wed Feb 10 22:59:52 EST 1999
669  defs.h lex.c: permit long names (up to at least roughly
670MAX_SHARPLINE_LEN = 1000 characters long) in #line lines (which only
671matters under -g).
672  fc: add -U option; recognize .so files.
673
674Sat Feb 13 10:18:27 EST 1999
675  libf2c: endfile.c, lread.c, signal1.h0: minor tweaks to make some
676(C++) compilers happier; f77_aloc.c: make exit_() visible to C++
677compilers.  Version strings not changed.
678
679Thu Mar 11 23:14:02 EST 1999
680  Modify f2c (exec.c, expr.c) to diagnose incorrect mixing of types
681when (f2c extended) intrinsic functions are involved, as in
682(not(17) .and. 4).  Catching this in the first executable statement
683is a bit tricky, as some checking must be postponed until all statement
684function declarations have been parsed.  Thus there is a chance of
685today's changes introducing bugs under (let us hope) unusual conditions.
686
687Sun Mar 28 13:17:44 EST 1999
688  lex.c: tweak to get the file name right in error messages caused
689by statements just after a # nnn "filename" line emitted by the C
690preprocessor.  (The trouble is that the line following the # nnn line
691must be read to see if it is a continuation of the stuff that preceded
692the # nnn line.)  When # nnn "filename" lines appear among the lines
693for a Fortran statement, the filename reported in an error message for
694the statement should now be the file that was current when the first
695line of the statement was read.
696
697Sun May  2 22:38:25 EDT 1999
698  libf77, libi77, libf2c.zip: make getenv_() more portable (call
699getenv() rather than knowing about char **environ); adjust some
700complex intrinsics to work with overlapping arguments (caused by
701inappropriate use of equivalence); open.c: get "external" versus
702"internal" right in the error message if a file cannot be opened;
703err.c: cast a pointer difference to (int) for %d; rdfmt.c: omit
704fixed-length buffer that could be overwritten by formats Inn or Lnn
705with nn > 83.
706
707Mon May  3 13:14:07 EDT 1999
708  "Invisible" changes to omit a few compiler warnings in f2c and
709libf2c; two new casts in libf2c/open.c that matter with 64-bit longs,
710and one more tweak (libf2c/c_log.c) for pathological equivalences.
711  Minor update to "fc" script: new -L flag and comment correction.
712
713Tue May  4 10:06:26 EDT 1999
714   libf77, libf2c.zip: forgot to copy yesterday's latest updates to
715netlib.
716
717Current timestamps of files in "all from f2c/src", sorted by time,
718appear below (mm/dd/year hh:mm:ss).  To bring your source up to date,
719obtain source files with a timestamp later than the time shown in your
720version.c.  Note that the time shown in the current version.c is the
721timestamp of the source module that immediately follows version.c below:
722
723 5/03/1999  12:46:15  version.c
724 5/03/1999  12:39:35  formatdata.c
725 5/03/1999  12:31:14  format.c
726 5/03/1999  12:27:17  p1output.c
727 5/03/1999  12:27:17  data.c
728 5/03/1999  10:01:12  xsum0.out
729 5/03/1999   9:59:36  io.c
730 5/03/1999   9:59:36  misc.c
731 5/03/1999   9:59:36  init.c
732 3/26/1999  23:18:11  lex.c
733 3/11/1999  16:44:17  expr.c
734 3/11/1999  16:42:42  exec.c
735 2/10/1999  17:43:01  defs.h
736 9/08/1998  10:16:51  f2c.1
737 9/08/1998  10:16:48  f2c.1t
738 9/08/1998  10:14:53  intr.c
739 5/16/1998  16:55:49  output.c
740 4/03/1998  17:15:05  gram.c
741 4/03/1998  17:14:59  gram.dcl
742 3/09/1998   0:30:23  putpcc.c
743 2/25/1998   8:18:04  makefile
74412/04/1997  17:44:11  niceprintf.c
745 8/05/1997  10:31:26  malloc.c
746 7/24/1997  17:10:55  README
747 7/24/1997  16:06:19  Notice
748 7/21/1997  12:58:44  proc.c
749 2/11/1997  23:39:14  vax.c
75012/04/1996  13:07:53  gram.exec
751 9/12/1996  12:12:46  equiv.c
752 8/26/1996   9:41:13  sysdep.c
753 7/09/1996  10:40:45  names.c
754 7/04/1996   9:55:45  sysdep.h
755 7/04/1996   9:55:43  put.c
756 7/04/1996   9:55:41  pread.c
757 7/04/1996   9:55:40  parse_args.c
758 7/04/1996   9:55:36  mem.c
759 7/04/1996   9:55:36  memset.c
760 7/04/1996   9:55:35  main.c
761 7/04/1996   9:55:29  error.c
762 7/04/1996   9:55:27  cds.c
763 7/03/1996  15:47:49  xsum.c
764 6/19/1996   7:04:27  f2c.h
765 6/19/1996   2:52:05  defines.h
766 5/13/1996   0:40:32  gram.head
767 2/25/1994   2:07:19  parse.h
768 2/22/1994  19:07:20  iob.h
769 2/22/1994  18:56:53  p1defs.h
770 2/22/1994  18:53:46  output.h
771 2/22/1994  18:51:14  names.h
772 2/22/1994  18:30:41  format.h
773 1/18/1994  18:12:52  tokens
774 3/06/1993  14:13:58  gram.expr
775 1/28/1993   9:03:16  ftypes.h
776 4/06/1990   0:00:57  gram.io
777 2/03/1990   0:58:26  niceprintf.h
778 1/07/1990   1:20:01  usignal.h
77911/27/1989   8:27:37  machdefs.h
780 7/01/1989  11:59:44  pccdefs.h
781