1999-09-18 10:51:31 +00:00
|
|
|
|
|
|
|
====== old index for f2c, now "readme from f2c" ============
|
|
|
|
|
|
|
|
FILES:
|
|
|
|
|
|
|
|
f2c.h Include file necessary for compiling output of the converter.
|
|
|
|
See the second NOTE below.
|
|
|
|
|
|
|
|
f2c.1 Man page for f2c.
|
|
|
|
|
|
|
|
f2c.1t Source for f2c.1 (to be processed by troff -man or nroff -man).
|
|
|
|
|
|
|
|
libf77 Library of non I/O support routines the generated C may need.
|
|
|
|
Fortran main programs result in a C function named MAIN__ that
|
|
|
|
is meant to be invoked by the main() in libf77.
|
|
|
|
|
|
|
|
libi77 Library of Fortran I/O routines the generated C may need.
|
|
|
|
Note that some vendors (e.g., BSD, Sun and MIPS) provide a
|
|
|
|
libF77 and libI77 that are incompatible with f2c -- they
|
|
|
|
provide some differently named routines or routines with the
|
|
|
|
names that f2c expects, but with different calling sequences.
|
|
|
|
On such systems, the recommended procedure is to merge
|
|
|
|
libf77 and libi77 into a single library, say libf2c, and to
|
|
|
|
install it where you can access it by specifying -lf2c . The
|
|
|
|
definition of link_msg in sysdep.c assumes this arrangement.
|
|
|
|
|
|
|
|
Both libf77 and libi77 are bundles, meant to be unpacked by the
|
|
|
|
Bourne (or Korn) shell. MS-DOS users can use the MKS Toolkit
|
|
|
|
to unpack libf77 and libi77.
|
|
|
|
|
|
|
|
libf2c.zip
|
|
|
|
Only available by ftp: combination of libf77 and libi77, with
|
|
|
|
Unix and PC makefiles.
|
|
|
|
|
|
|
|
f2c.ps Postscript for a technical report on f2c. After you strip the
|
|
|
|
mail header, the first line should be "%!PS".
|
|
|
|
|
|
|
|
fixes The complete change log, reporting bug fixes and other changes.
|
|
|
|
(Some recent change-log entries are given below).
|
|
|
|
|
|
|
|
fc A shell script that uses f2c and imitates much of the behavior
|
|
|
|
of commonly found f77 commands. You will almost certainly
|
|
|
|
need to adjust some of the shell-variable assignments to make
|
|
|
|
this script work on your system.
|
|
|
|
|
|
|
|
|
|
|
|
SUBDIRECTORY:
|
|
|
|
|
|
|
|
f2c/src Source for the converter itself, including a file of checksums
|
|
|
|
and source for a program to compute the checksums (to verify
|
|
|
|
correct transmission of the source), is available: ask netlib
|
|
|
|
(e.g., netlib@netlib.bell-labs.com) to
|
|
|
|
send all from f2c/src
|
|
|
|
If the checksums show damage to just a few source files, or if
|
|
|
|
the change log file (see "fixes" below) reports corrections to
|
|
|
|
some source files, you can request those files individually
|
|
|
|
"from f2c/src". For example, to get defs.h and xsum0.out, you
|
|
|
|
would ask netlib to
|
|
|
|
send defs.h xsum0.out from f2c/src
|
|
|
|
"all from f2c/src" is about 640 kilobytes long; for convenience
|
|
|
|
(and checksums), it includes copies of f2c.h, f2c.1, and f2c.1t.
|
|
|
|
|
|
|
|
Tip: if asked to send over 99,000 bytes in one request, netlib
|
|
|
|
breaks the shipment into 1000 line pieces and sends each piece
|
|
|
|
separately (since otherwise some mailers might gag). To avoid
|
|
|
|
the hassle of reassembling the pieces, try to keep each request
|
|
|
|
under 99,000 bytes long. The final number in each line of
|
|
|
|
xsum0.out gives the length of each file in f2c/src. For
|
|
|
|
example,
|
|
|
|
send exec.c expr.c from f2c/src
|
|
|
|
send format.c format_data.c from f2c/src
|
|
|
|
will give you slightly less hassle than
|
|
|
|
send exec.c expr.c format.c format_data.c from f2c/src
|
|
|
|
Alternatively, if all the mailers in your return path allow
|
|
|
|
long messages, you can supply an appropriate mailsize line in
|
|
|
|
your netlib request, e.g.
|
|
|
|
mailsize 200k
|
|
|
|
send exec.c expr.c format.c format_data.c from f2c/src
|
|
|
|
|
|
|
|
The makefile used to generate gram.c; now we distribute a
|
|
|
|
working gram.c, and you must say
|
|
|
|
make gram1.c
|
|
|
|
mv gram1.c gram.c
|
|
|
|
if you want to generate your own gram.c -- there are just too
|
|
|
|
many broken variants of yacc floating around nowadays for
|
|
|
|
generation of gram.c to be the default.
|
|
|
|
|
|
|
|
NOTE: You may exercise f2c by sending netlib@netlib.bell-labs.com
|
|
|
|
a message whose first line is "execute f2c" and whose remaining
|
|
|
|
lines are the Fortran 77 source that you wish to have converted.
|
|
|
|
Return mail brings you the resulting C, with f2c's error
|
|
|
|
messages between #ifdef uNdEfInEd and #endif at the end.
|
|
|
|
(To understand line numbers in the error messages, regard
|
|
|
|
the "execute f2c" line as line 0. It is stripped away by
|
|
|
|
the netlib software before f2c sees your Fortran input.)
|
|
|
|
Options described in the man page may be transmitted to
|
|
|
|
netlib by having the first line of input be a comment
|
|
|
|
whose first 6 characters are "c$f2c " and whose remaining
|
|
|
|
characters are the desired options, e.g., "c$f2c -R -u".
|
|
|
|
|
|
|
|
You may say "execute f2c" in the Subject line instead of (but
|
|
|
|
*not* in addition to) in the first line of the message body.
|
|
|
|
|
|
|
|
The incoming Fortran is saved, at least for a while. Don't
|
|
|
|
send any secrets!
|
|
|
|
|
|
|
|
|
|
|
|
BUGS: Please send bug reports (including the shortest example
|
|
|
|
you can find that illustrates the bug) to research!dmg
|
|
|
|
or dmg@bell-labs.com . You might first check whether
|
|
|
|
the bug goes away when you turn optimization off.
|
|
|
|
|
|
|
|
|
|
|
|
NOTE: f2c.h defines several types, e.g., real, integer, doublereal.
|
|
|
|
The definitions in f2c.h are suitable for most machines, but if
|
|
|
|
your machine has sizeof(double) > 2*sizeof(long), you may need
|
|
|
|
to adjust f2c.h appropriately. f2c assumes
|
|
|
|
sizeof(doublecomplex) = 2*sizeof(doublereal)
|
|
|
|
sizeof(doublereal) = sizeof(complex)
|
|
|
|
sizeof(doublereal) = 2*sizeof(real)
|
|
|
|
sizeof(real) = sizeof(integer)
|
|
|
|
sizeof(real) = sizeof(logical)
|
|
|
|
sizeof(real) = 2*sizeof(shortint)
|
|
|
|
EQUIVALENCEs may not be translated correctly if these
|
|
|
|
assumptions are violated.
|
|
|
|
|
|
|
|
On machines, such as those using a DEC Alpha processor, on
|
|
|
|
which sizeof(short) == 2, sizeof(int) == sizeof(float) == 4,
|
|
|
|
and sizeof(long) == sizeof(double) == 8, it suffices to
|
|
|
|
modify f2c.h by removing the first occurrence of "long "
|
|
|
|
on each line containing "long ", e.g., by issuing the
|
|
|
|
commands
|
|
|
|
mv f2c.h f2c.h0
|
|
|
|
sed 's/long //' f2c.h0 >f2c.h
|
|
|
|
On such machines, one can enable INTEGER*8 by uncommenting
|
|
|
|
the typedef of longint in f2c.h, so it reads
|
|
|
|
typedef long longint;
|
|
|
|
by compiling libI77 with -DAllow_TYQUAD, and by adjusting
|
|
|
|
libF77/makefile as described in libF77/README.
|
|
|
|
|
|
|
|
Some machines may have sizeof(int) == 4, sizeof(float) == 8,
|
|
|
|
and sizeof(long long) == 8. On such machines, adjust f2c.h
|
|
|
|
by changing "long int " to "long long ", e.g., by saying
|
|
|
|
mv f2c.h f2c.h0
|
|
|
|
sed 's/long int /long long /' f2c.h0 >f2c.h
|
|
|
|
One can enable INTEGER*8 on such machines as described
|
|
|
|
above, but with
|
|
|
|
typedef long long longint;
|
|
|
|
|
|
|
|
There exists a C compiler that objects to the lines
|
|
|
|
typedef VOID C_f; /* complex function */
|
|
|
|
typedef VOID H_f; /* character function */
|
|
|
|
typedef VOID Z_f; /* double complex function */
|
|
|
|
in f2c.h . If yours is such a compiler, do two things:
|
|
|
|
1. Complain to your vendor about this compiler bug.
|
|
|
|
2. Find the line
|
|
|
|
#define VOID void
|
|
|
|
in f2c.h and change it to
|
|
|
|
#define VOID int
|
|
|
|
(For readability, the f2c.h lines shown above have had two
|
|
|
|
tabs inserted before their first character.)
|
|
|
|
|
|
|
|
FTP: All the material described above is now available by anonymous
|
|
|
|
ftp from netlib.bell-labs.com (login: anonymous; Password: your
|
|
|
|
E-mail address; cd netlib/f2c). Note that you can say, e.g.,
|
|
|
|
|
|
|
|
cd /netlib/f2c/src
|
|
|
|
binary
|
|
|
|
prompt
|
|
|
|
mget *.gz
|
|
|
|
|
|
|
|
to get all the .gz files in src. You must uncompress the .gz
|
|
|
|
files once you have a copy of them, e.g., by
|
|
|
|
|
|
|
|
gzip -dN *.gz
|
|
|
|
|
|
|
|
You can also get the entire f2c tree as a tar file:
|
|
|
|
|
|
|
|
ftp://netlib.bell-labs.com/netlib/f2c.tar
|
|
|
|
|
|
|
|
(which is a synthetic file -- created on the fly and not visible
|
|
|
|
to ftp's "ls" or "dir" commands).
|
|
|
|
|
|
|
|
Subdirectory msdos contains two PC versions of f2c,
|
|
|
|
f2c.exe.gz and f2cx.exe.gz; the latter uses extended memory.
|
|
|
|
The README in that directory provides more details.
|
|
|
|
|
|
|
|
Changes appear first in the f2c files available by E-mail
|
|
|
|
from netlib@netlib.bell-labs.com. If the deamons work right,
|
|
|
|
changed files are available the next day by ftp from
|
|
|
|
netlib.bell-labs.com. In due course, they reach other netlib servers.
|
|
|
|
|
|
|
|
CHANGE NOTIFICATION:
|
|
|
|
Send the E-mail message
|
|
|
|
subscribe f2c
|
|
|
|
to netlib@netlib.bell-labs.com to request notification of new and
|
|
|
|
changed f2c files. (Beware that automatically sent change
|
|
|
|
notifications may reach you before changes have reached
|
|
|
|
ftp://netlib.bell-labs.com/netlib/f2c or to other netlib servers.)
|
|
|
|
Send the E-mail message
|
|
|
|
unsubscribe f2c
|
|
|
|
to recant your notification request.
|
|
|
|
|
|
|
|
-----------------
|
|
|
|
Recent change log (partial)
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
Mon May 13 23:35:26 EDT 1996
|
|
|
|
Recognize Fortran 90's /= as a synonym for .NE.. (<> remains a
|
|
|
|
synonym for .NE..)
|
|
|
|
Emit an empty int function of no arguments to supply an external
|
|
|
|
name to named block data subprograms (so they can be called somewhere
|
|
|
|
to force them to be loaded from a library).
|
|
|
|
Fix bug (memory fault) in handling the following illegal Fortran:
|
|
|
|
parameter(i=1)
|
|
|
|
equivalence(i,j)
|
|
|
|
end
|
|
|
|
Treat cdabs, cdcos, cdexp, cdlog, cdsin, and cdsqrt as synonyms for
|
|
|
|
the double complex intrinsics zabs, zcos, zexp, zlog, zsin, and zsqrt,
|
|
|
|
respectively, unless -cd is specified.
|
|
|
|
Recognize the Fortran 90 bit-manipulation intrinsics btest, iand,
|
|
|
|
ibclr, ibits, ibset, ieor, ior, ishft, and ishftc, unless -i90 is
|
|
|
|
specified. Note that iand, ieor, and ior are thus now synonyms for
|
|
|
|
"and", "xor", and "or", respectively.
|
|
|
|
Add three macros (bit_test, bit_clear, bit_set) to f2c.h for use
|
|
|
|
with btest, ibclr, and ibset, respectively. Add new functions
|
|
|
|
[lq]bit_bits, [lq]bit_shift, and [lq]_bit_cshift to libF77 for
|
|
|
|
use with ibits, ishft, and ishftc, respectively.
|
|
|
|
Add integer function ftell(unit) (returning -1 on error) and
|
|
|
|
subroutine fseek(unit, offset, whence, *) to libI77 (with branch to
|
|
|
|
label * on error).
|
|
|
|
|
|
|
|
Tue May 14 23:21:12 EDT 1996
|
|
|
|
Fix glitch (possible memory fault, or worse) in handling multiple
|
|
|
|
entry points with names over 28 characters long.
|
|
|
|
|
|
|
|
Mon Jun 10 01:20:16 EDT 1996
|
|
|
|
Update netlib E-mail and ftp addresses in f2c/readme and
|
|
|
|
f2c/src/readme (which are different files) -- to reflect the upcoming
|
|
|
|
breakup of AT&T.
|
|
|
|
libf77: trivial tweaks to F77_aloc.c and system_.c; Version.c not
|
|
|
|
changed.
|
|
|
|
libi77: Adjust rsli.c and lread.c so internal list input with too
|
|
|
|
few items in the input string will honor end= .
|
|
|
|
|
|
|
|
Mon Jun 10 22:59:57 EDT 1996
|
|
|
|
Add Bits_per_Byte to sysdep.h and adjust definition of Table_size
|
|
|
|
to depend on Bits_per_Byte (forcing Table_size to be a power of 2); in
|
|
|
|
lex.c, change "comstart[c & 0xfff]" to "comstart[c & (Table_size-1)]"
|
|
|
|
to avoid an out-of-range subscript on end-of-file.
|
|
|
|
|
|
|
|
Wed Jun 12 00:24:28 EDT 1996
|
|
|
|
Fix bug in output.c (dereferencing a freed pointer) revealed in
|
|
|
|
print * !np in out_call in output.c clobbered by free
|
|
|
|
end !during out_expr.
|
|
|
|
|
|
|
|
Wed Jun 19 08:12:47 EDT 1996
|
|
|
|
f2c.h: add types uinteger, ulongint (for libF77); add qbit_clear
|
|
|
|
and qbit_set macros (in a commented-out section) for integer*8.
|
|
|
|
For integer*8, use qbit_clear and qbit_set for ibclr and ibset.
|
|
|
|
libf77: add casts to unsigned in [lq]bitshft.c.
|
|
|
|
|
|
|
|
Thu Jun 20 13:30:43 EDT 1996
|
|
|
|
Complain at character*(*) in common (rather than faulting).
|
|
|
|
Fix bug in recognizing hex constants that start with "16#" (e.g.,
|
|
|
|
16#1234abcd, which is a synonym for z'1234abcd').
|
|
|
|
Fix bugs in constant folding of expressions involving btest, ibclr,
|
|
|
|
and ibset.
|
|
|
|
Fix bug in constant folding of rshift(16#80000000, -31) (on a 32-bit
|
|
|
|
machine; more generally, the bug was in constant folding of
|
|
|
|
rshift(ibset(0,NBITS-1), 1-NBITS) when f2c runs on a machine with
|
|
|
|
long ints having NBITS bits.
|
|
|
|
|
|
|
|
Mon Jun 24 07:58:53 EDT 1996
|
|
|
|
Adjust struct Literal and newlabel() function to accommodate huge
|
|
|
|
source files (with more than 32767 newlabel() invocations).
|
|
|
|
Omit .c file when the .f file has a missing final end statement.
|
|
|
|
|
|
|
|
Wed Jun 26 14:00:02 EDT 1996
|
|
|
|
libi77: Add discussion of MXUNIT (highest allowed Fortran unit number)
|
|
|
|
to libI77/README.
|
|
|
|
|
|
|
|
Fri Jun 28 14:16:11 EDT 1996
|
|
|
|
Fix glitch with -onetrip: the temporary variable used for nonconstant
|
|
|
|
initial loop variable values was recycled too soon. Example:
|
|
|
|
do i = j+1, k
|
|
|
|
call foo(i+1) ! temp for j+1 was reused here
|
|
|
|
enddo
|
|
|
|
end
|
|
|
|
|
|
|
|
Tue Jul 2 16:11:27 EDT 1996
|
|
|
|
formatdata.c: add a 0 to the end of the basetype array (for TYBLANK)
|
|
|
|
(an omission that was harmless on most machines).
|
|
|
|
expr.c: fix a dereference of NULL that was only possible with buggy
|
|
|
|
input, such as
|
|
|
|
subroutine $sub(s) ! the '$' is erroneous
|
|
|
|
character s*(*)
|
|
|
|
s(1:) = ' '
|
|
|
|
end
|
|
|
|
|
|
|
|
Sat Jul 6 00:44:56 EDT 1996
|
|
|
|
Fix glitch in the intrinsic "real" function when applied to a
|
|
|
|
complex (or double complex) variable and passed as an argument to
|
|
|
|
some intrinsic functions. Example:
|
|
|
|
complex a
|
|
|
|
b = sqrt(real(a))
|
|
|
|
end
|
|
|
|
Fix glitch (only visible if you do not use f2c's malloc and the
|
|
|
|
malloc you do use is defective in the sense that malloc(0) returns 0)
|
|
|
|
in handling include files that end with another include (perhaps
|
|
|
|
followed by comments).
|
|
|
|
Fix glitch with character*(*) arguments named "h" and "i" when
|
|
|
|
the body of the subroutine invokes the intrinsic LEN function.
|
|
|
|
Arrange that after a previous "f2c -P foo.f" has produced foo.P,
|
|
|
|
running "f2c foo.P foo.f" will produce valid C when foo.f contains
|
|
|
|
call sub('1234')
|
|
|
|
end
|
|
|
|
subroutine sub(msg)
|
|
|
|
end
|
|
|
|
Specifically, the length argument in "call sub" is now suppressed.
|
|
|
|
With or without foo.P, it is also now suppressed when the order of
|
|
|
|
subprograms in file foo.f is reversed:
|
|
|
|
subroutine sub(msg)
|
|
|
|
end
|
|
|
|
call sub('1234')
|
|
|
|
end
|
|
|
|
Adjust copyright notices to reflect AT&T breakup.
|
|
|
|
|
|
|
|
Wed Jul 10 09:25:49 EDT 1996
|
|
|
|
Fix bug (possible memory fault) in handling erroneously placed
|
|
|
|
and inconsistent declarations. Example that faulted:
|
|
|
|
character*1 w(8)
|
|
|
|
call foo(w)
|
|
|
|
end
|
|
|
|
subroutine foo(m)
|
|
|
|
data h /0.5/
|
|
|
|
integer m(2) ! should be before data
|
|
|
|
end
|
|
|
|
Fix bug (possible fault) in handling illegal "if" constructions.
|
|
|
|
Example (that faulted):
|
|
|
|
subroutine foo(i,j)
|
|
|
|
if (i) then ! bug: i is integer, not logical
|
|
|
|
else if (j) then ! bug: j is integer, not logical
|
|
|
|
endif
|
|
|
|
end
|
|
|
|
Fix glitch with character*(*) argument named "ret_len" to a
|
|
|
|
character*(*) function.
|
|
|
|
|
|
|
|
Wed Jul 10 23:04:16 EDT 1996
|
|
|
|
Fix more glitches in the intrinsic "real" function when applied to a
|
|
|
|
complex (or double complex) variable and passed as an argument to
|
|
|
|
some intrinsic functions. Example:
|
|
|
|
complex a, b
|
|
|
|
r = sqrt(real(conjg(a))) + sqrt(real(a*b))
|
|
|
|
end
|
|
|
|
|
|
|
|
Thu Jul 11 17:27:16 EDT 1996
|
|
|
|
Fix a memory fault associated with complicated, illegal input.
|
|
|
|
Example:
|
|
|
|
subroutine goo
|
|
|
|
character a
|
|
|
|
call foo(a) ! inconsistent with subsequent def and call
|
|
|
|
end
|
|
|
|
subroutine foo(a)
|
|
|
|
end
|
|
|
|
call foo(a)
|
|
|
|
end
|
|
|
|
|
|
|
|
Wed Jul 17 19:18:28 EDT 1996
|
|
|
|
Fix yet another case of intrinsic "real" applied to a complex
|
|
|
|
argument. Example:
|
|
|
|
complex a(3)
|
|
|
|
x = sqrt(real(a(2))) ! gave error message about bad tag
|
|
|
|
end
|
|
|
|
|
|
|
|
Mon Aug 26 11:28:57 EDT 1996
|
|
|
|
Tweak sysdep.c for non-Unix systems in which process ID's can be
|
|
|
|
over 5 digits long.
|
|
|
|
|
|
|
|
Tue Aug 27 08:31:32 EDT 1996
|
|
|
|
Adjust the ishft intrinsic to use unsigned right shifts. (Previously,
|
|
|
|
a negative constant second operand resulted in a possibly signed shift.)
|
|
|
|
|
|
|
|
Thu Sep 12 14:04:07 EDT 1996
|
|
|
|
equiv.c: fix glitch with -DKR_headers.
|
|
|
|
libi77: fmtlib.c: fix bug in printing the most negative integer.
|
|
|
|
|
|
|
|
Fri Sep 13 08:54:40 EDT 1996
|
|
|
|
Diagnose some illegal appearances of substring notation.
|
|
|
|
|
|
|
|
Tue Sep 17 17:48:09 EDT 1996
|
|
|
|
Fix fault in handling some complex parameters. Example:
|
|
|
|
subroutine foo(a)
|
|
|
|
double complex a, b
|
|
|
|
parameter(b = (0,1))
|
|
|
|
a = b ! f2c faulted here
|
|
|
|
end
|
|
|
|
|
|
|
|
Thu Sep 26 07:47:10 EDT 1996
|
|
|
|
libi77: fmt.h: for formatted writes of negative integer*1 values,
|
|
|
|
make ic signed on ANSI systems. If formatted writes of integer*1
|
|
|
|
values trouble you when using a K&R C compiler, switch to an ANSI
|
|
|
|
compiler or use a compiler flag that makes characters signed.
|
|
|
|
|
|
|
|
Tue Oct 1 14:41:36 EDT 1996
|
|
|
|
Give a better error message when dummy arguments appear in data
|
|
|
|
statements.
|
|
|
|
|
|
|
|
Thu Oct 17 13:37:22 EDT 1996
|
|
|
|
Fix bug in typechecking arguments to character and complex (or
|
|
|
|
double complex) functions; the bug could cause length arguments
|
|
|
|
for character arguments to be omitted on invocations appearing
|
|
|
|
textually after the first invocation. For example, in
|
|
|
|
subroutine foo
|
|
|
|
character c
|
|
|
|
complex zot
|
|
|
|
call goo(zot(c), zot(c))
|
|
|
|
end
|
|
|
|
the length was omitted from the second invocation of zot, and
|
|
|
|
there was an erroneous error message about inconsistent calling
|
|
|
|
sequences.
|
|
|
|
|
|
|
|
Wed Dec 4 13:59:14 EST 1996
|
|
|
|
Fix bug revealed by
|
|
|
|
subroutine test(cdum,rdum)
|
|
|
|
complex cdum
|
|
|
|
rdum=cos(real(cdum)) ! "Unexpected tag 3 in opconv_fudge"
|
|
|
|
end
|
|
|
|
Fix glitch in parsing "DO 10 D0 = 1, 10".
|
|
|
|
Fix glitch in parsing
|
|
|
|
real*8 x
|
|
|
|
real*8 x ! erroneous "incompatible type" message
|
|
|
|
call foo(x)
|
|
|
|
end
|
|
|
|
lib[FI]77/makefile: add comment about omitting -x under Solaris.
|
|
|
|
|
|
|
|
Mon Dec 9 23:15:02 EST 1996
|
|
|
|
Fix glitch in parameter adjustments for arrays whose lower
|
|
|
|
bound depends on a scalar argument. Example:
|
|
|
|
subroutine bug(p,z,m,n)
|
|
|
|
integer z(*),m,n
|
|
|
|
double precision p(z(m):z(m) + n) ! p_offset botched
|
|
|
|
call foo(p(0), p(n))
|
|
|
|
end
|
|
|
|
libi77: complain about non-positive rec= in direct read and write
|
|
|
|
statements.
|
|
|
|
libf77: trivial adjustments; Version.c not changed.
|
|
|
|
|
|
|
|
Wed Feb 12 00:18:03 EST 1997
|
|
|
|
output.c: fix (seldom problematic) glitch in out_call: put parens
|
|
|
|
around the ... in a test of the form "if (q->tag == TADDR && ...)".
|
|
|
|
vax.c: fix bug revealed in the "psi_offset =" assignment in the
|
|
|
|
following example:
|
|
|
|
subroutine foo(psi,m)
|
|
|
|
integer z(100),m
|
|
|
|
common /a/ z
|
|
|
|
double precision psi(z(m):z(m) + 10)
|
|
|
|
call foo(m+1, psi(0),psi(10))
|
|
|
|
end
|
|
|
|
|
|
|
|
Mon Feb 24 23:44:54 EST 1997
|
|
|
|
For consistency with f2c's current treatment of adjacent character
|
|
|
|
strings in FORMAT statements, recognize a Hollerith string following
|
|
|
|
a string (and merge adjacent strings in FORMAT statements).
|
|
|
|
|
|
|
|
Wed Feb 26 13:41:11 EST 1997
|
|
|
|
New libf2c.zip, a combination of the libf77 and libi77 bundles (and
|
|
|
|
available only by ftp).
|
|
|
|
libf77: adjust functions with a complex output argument to permit
|
|
|
|
aliasing it with input arguments. (For now, at least, this is just
|
|
|
|
for possible benefit of g77.)
|
|
|
|
libi77: tweak to ftell_.c for systems with strange definitions of
|
|
|
|
SEEK_SET, etc.
|
|
|
|
|
|
|
|
Tue Apr 8 20:57:08 EDT 1997
|
|
|
|
libf77: [cz]_div.c: tweaks invisible on most systems (that may
|
|
|
|
improve things slightly with optimized compilation on systems that use
|
|
|
|
gratuitous extra precision).
|
|
|
|
libi77: fmt.c: adjust to complain at missing numbers in formats
|
|
|
|
(but still treat missing ".nnn" as ".0").
|
|
|
|
|
|
|
|
Fri Apr 11 14:05:57 EDT 1997
|
|
|
|
libi77: err.c: attempt to make stderr line buffered rather than
|
|
|
|
fully buffered. (Buffering is needed for format items T and TR.)
|
|
|
|
|
|
|
|
Thu Apr 17 22:42:43 EDT 1997
|
|
|
|
libf77: add F77_aloc.o to makefile (and makefile.u in libf2c.zip).
|
|
|
|
|
|
|
|
Fri Apr 25 19:32:09 EDT 1997
|
|
|
|
libf77: add [de]time_.c (which may give trouble on some systems).
|
|
|
|
|
|
|
|
Tue May 27 09:18:52 EDT 1997
|
|
|
|
libi77: ftell_.c: fix typo that caused the third argument to be
|
|
|
|
treated as 2 on some systems.
|
|
|
|
|
|
|
|
Mon Jun 9 00:04:37 EDT 1997
|
|
|
|
libi77 (and libf2c.zip): adjust include order in err.c lread.c wref.c
|
|
|
|
rdfmt.c to include fmt.h (etc.) after system includes. Version.c not
|
|
|
|
changed.
|
|
|
|
|
|
|
|
Mon Jun 9 14:29:13 EDT 1997
|
|
|
|
src/gram.c updated; somehow it did not reflect the change of
|
|
|
|
19961001 to gram.dcl.
|
|
|
|
|
|
|
|
Mon Jul 21 16:04:54 EDT 1997
|
|
|
|
proc.c: fix glitch in logic for "nonpositive dimension" message.
|
|
|
|
libi77: inquire.c: always include string.h (for possible use with
|
|
|
|
-DNON_UNIX_STDIO); Version.c not changed.
|
|
|
|
|
|
|
|
Thu Jul 24 17:11:23 EDT 1997
|
|
|
|
Tweak "Notice" to reflect the AT&T breakup -- we missed it when
|
|
|
|
updating the copyright notices in the source files last summer.
|
|
|
|
Adjust src/makefile so malloc.o is not used by default, but can
|
|
|
|
be specified with "make MALLOC=malloc.o".
|
|
|
|
Add comments to src/README about the "CRAY" T3E.
|
|
|
|
|
|
|
|
Tue Aug 5 14:53:25 EDT 1997
|
|
|
|
Add definition of calloc to malloc.c; this makes f2c's malloc
|
|
|
|
work on some systems where trouble hitherto arose because references
|
|
|
|
to calloc brought in the system's malloc. (On sensible systems,
|
|
|
|
calloc is defined separately from malloc. To avoid confusion on
|
|
|
|
other systems, f2c/malloc.c now defines calloc.)
|
|
|
|
libi77: lread.c: adjust to accord with a change to the Fortran 8X
|
|
|
|
draft (in 1990 or 1991) that rescinded permission to elide quote marks
|
|
|
|
in namelist input of character data; to get the old behavior, compile
|
|
|
|
with F8X_NML_ELIDE_QUOTES #defined. wrtfmt.o: wrt_G: tweak to print
|
|
|
|
the right number of 0's for zero under G format.
|
|
|
|
|
|
|
|
Sat Aug 16 05:45:32 EDT 1997
|
|
|
|
libi77: iio.c: fix bug in internal writes to an array of character
|
|
|
|
strings that sometimes caused one more array element than required by
|
|
|
|
the format to be blank-filled. Example: format(1x).
|
|
|
|
|
|
|
|
Wed Sep 17 00:39:29 EDT 1997
|
|
|
|
libi77: fmt.[ch] rdfmt.c wrtfmt.c: tweak struct syl for machines
|
|
|
|
with 64-bit pointers and 32-bit ints that did not 64-bit align
|
|
|
|
struct syl (e.g., Linux on the DEC Alpha). This change should be
|
|
|
|
invisible on other machines.
|
|
|
|
|
|
|
|
Sun Sep 21 22:05:19 EDT 1997
|
|
|
|
libf77: [de]time_.c (Unix systems only): change return type to double.
|
|
|
|
|
|
|
|
Thu Dec 4 22:10:09 EST 1997
|
|
|
|
Fix bug with handling large blocks of comments (over 4k); parts of the
|
|
|
|
second and subsequent blocks were likely to be lost (not copied into
|
|
|
|
comments in the resulting C). Allow comment lines to be longer before
|
|
|
|
breaking them.
|
|
|
|
|
|
|
|
Mon Jan 19 17:19:27 EST 1998
|
|
|
|
makefile: change the rule for making gram.c to one for making gram1.c;
|
|
|
|
henceforth, asking netlib to "send all from f2c/src" will bring you a
|
|
|
|
working gram.c. Nowadays there are simply too many broken versions of
|
|
|
|
yacc floating around.
|
|
|
|
libi77: backspace.c: for b->ufmt==0, change sizeof(int) to
|
|
|
|
sizeof(uiolen). On machines where this would make a difference, it is
|
|
|
|
best for portability to compile libI77 with -DUIOLEN_int, which will
|
|
|
|
render the change invisible.
|
|
|
|
|
|
|
|
Tue Feb 24 08:35:33 EST 1998
|
|
|
|
makefile: remove gram.c from the "make clean" rule.
|
|
|
|
|
|
|
|
Wed Feb 25 08:29:39 EST 1998
|
|
|
|
makefile: change CFLAGS assignment to -O; add "veryclean" rule.
|
|
|
|
|
|
|
|
Wed Mar 4 13:13:21 EST 1998
|
|
|
|
libi77: open.c: fix glitch in comparing file names under
|
|
|
|
-DNON_UNIX_STDIO.
|
|
|
|
|
|
|
|
Mon Mar 9 23:56:56 EST 1998
|
|
|
|
putpcc.c: omit an unnecessary temporary variable in computing
|
|
|
|
(expr)**3.
|
|
|
|
libf77, libi77: minor tweaks to make some C++ compilers happy;
|
|
|
|
Version.c not changed.
|
|
|
|
|
|
|
|
Wed Mar 18 18:08:47 EST 1998
|
|
|
|
libf77: minor tweaks to [ed]time_.c; Version.c not changed.
|
|
|
|
libi77: endfile.c, open.c: acquire temporary files from tmpfile(),
|
|
|
|
unless compiled with -DNON_ANSI_STDIO, which uses mktemp().
|
|
|
|
New buffering scheme independent of NON_UNIX_STDIO for handling T
|
|
|
|
format items. Now -DNON_UNIX_STDIO is no longer be necessary for
|
|
|
|
Linux, and libf2c no longer causes stderr to be buffered -- the former
|
|
|
|
setbuf or setvbuf call for stderr was to make T format items work.
|
|
|
|
open.c: use the Posix access() function to check existence or
|
|
|
|
nonexistence of files, except under -DNON_POSIX_STDIO, where trial
|
|
|
|
fopen calls are used. In open.c, fix botch in changes of 19980304.
|
|
|
|
libf2c.zip: the PC makefiles are now set for NT/W95, with comments
|
|
|
|
about changes for DOS.
|
|
|
|
|
|
|
|
Fri Apr 3 17:22:12 EST 1998
|
|
|
|
Adjust fix of 19960913 to again permit substring notation on
|
|
|
|
character variables in data statements.
|
|
|
|
|
|
|
|
Sun Apr 5 19:26:50 EDT 1998
|
|
|
|
libi77: wsfe.c: make $ format item work: this was lost in the changes
|
|
|
|
of 17 March 1998.
|
|
|
|
|
|
|
|
Sat May 16 19:08:51 EDT 1998
|
|
|
|
Adjust output of ftnlen constants: rather than appending L,
|
|
|
|
prepend (ftnlen). This should make the resulting C more portable,
|
|
|
|
e.g., to systems (such as DEC Alpha Unix systems) on which long
|
|
|
|
may be longer than ftnlen.
|
|
|
|
Adjust -r so it also casts REAL expressions passed to intrinsic
|
|
|
|
functions to REAL.
|
|
|
|
|
|
|
|
Wed May 27 16:02:35 EDT 1998
|
|
|
|
libf2c.zip: tweak description of compiling libf2c for INTEGER*8
|
|
|
|
to accord with makefile.u rather than libF77/makefile.
|
|
|
|
|
|
|
|
Thu May 28 22:45:59 EDT 1998
|
|
|
|
libi77: backspace.c dfe.c due.c iio.c lread.c rsfe.c sue.c wsfe.c:
|
|
|
|
set f__curunit sooner so various error messages will correctly
|
|
|
|
identify the I/O unit involved.
|
|
|
|
libf2c.zip: above, plus tweaks to PC makefiles: for some purposes,
|
|
|
|
it's still best to compile with -DMSDOS (even for use with NT).
|
|
|
|
|
|
|
|
Thu Jun 18 01:22:52 EDT 1998
|
|
|
|
libi77: lread.c: modified so floating-point numbers (containing
|
|
|
|
either a decimal point or an exponent field) are treated as errors
|
|
|
|
when they appear as list input for integer data. Compile lread.c with
|
|
|
|
-DALLOW_FLOAT_IN_INTEGER_LIST_INPUT to restore the old behavior.
|
|
|
|
|
1999-09-19 05:59:11 +00:00
|
|
|
Mon Aug 31 10:38:54 EDT 1998
|
|
|
|
formatdata.c: if possible, and assuming doubles must be aligned on
|
|
|
|
double boundaries, use existing holes in DATA for common blocks to
|
|
|
|
force alignment of the block. For example,
|
|
|
|
block data
|
|
|
|
common /abc/ a, b
|
|
|
|
double precision a
|
|
|
|
integer b(2)
|
|
|
|
data b(2)/1/
|
|
|
|
end
|
|
|
|
used to generate
|
|
|
|
struct {
|
|
|
|
integer fill_1[3];
|
|
|
|
integer e_2;
|
|
|
|
doublereal e_3;
|
|
|
|
} abc_ = { {0}, 1, 0. };
|
|
|
|
and now generates
|
|
|
|
struct {
|
|
|
|
doublereal fill_1[1];
|
|
|
|
integer fill_2[1];
|
|
|
|
integer e_3;
|
|
|
|
} abc_ = { {0}, {0}, 1 };
|
|
|
|
In the old generated C, e_3 was added to force alignment; in the new C,
|
|
|
|
fill_1 does this job.
|
|
|
|
|
|
|
|
Mon Sep 7 19:48:51 EDT 1998
|
|
|
|
libi77: move e_wdfe from sfe.c to dfe.c, where it was originally.
|
|
|
|
Why did it ever move to sfe.c?
|
|
|
|
|
|
|
|
Tue Sep 8 10:22:50 EDT 1998
|
|
|
|
Treat dreal as a synonym for dble unless -cd is specified on the
|
|
|
|
command line.
|
|
|
|
|
|
|
|
Sun Sep 13 22:23:41 EDT 1998
|
|
|
|
format.c: fix bug in writing prototypes under f2c -A ... *.P:
|
|
|
|
under some circumstances involving external functions with no known
|
|
|
|
type, a null pointer was passed to printf.
|
|
|
|
|
|
|
|
Tue Oct 20 23:25:54 EDT 1998
|
|
|
|
Comments added to libf2c/README and libF77/README, pointing out
|
|
|
|
the need to modify signal1.h on some systems.
|
|
|
|
|
|
|
|
Thu Nov 12 15:34:09 EST 1998
|
|
|
|
libf77, libf2c.zip: minor tweaks to [de]time_.c and the makefiles,
|
|
|
|
so makefile.sy, makefile.vc, and makefile.wat deal with [de]time_.c.
|
|
|
|
|
|
|
|
Wed Feb 10 22:59:52 EST 1999
|
|
|
|
defs.h lex.c: permit long names (up to at least roughly
|
|
|
|
MAX_SHARPLINE_LEN = 1000 characters long) in #line lines (which only
|
|
|
|
matters under -g).
|
|
|
|
fc: add -U option; recognize .so files.
|
|
|
|
|
|
|
|
Sat Feb 13 10:18:27 EST 1999
|
|
|
|
libf2c: endfile.c, lread.c, signal1.h0: minor tweaks to make some
|
|
|
|
(C++) compilers happier; f77_aloc.c: make exit_() visible to C++
|
|
|
|
compilers. Version strings not changed.
|
|
|
|
|
|
|
|
Thu Mar 11 23:14:02 EST 1999
|
|
|
|
Modify f2c (exec.c, expr.c) to diagnose incorrect mixing of types
|
|
|
|
when (f2c extended) intrinsic functions are involved, as in
|
|
|
|
(not(17) .and. 4). Catching this in the first executable statement
|
|
|
|
is a bit tricky, as some checking must be postponed until all statement
|
|
|
|
function declarations have been parsed. Thus there is a chance of
|
|
|
|
today's changes introducing bugs under (let us hope) unusual conditions.
|
|
|
|
|
|
|
|
Sun Mar 28 13:17:44 EST 1999
|
|
|
|
lex.c: tweak to get the file name right in error messages caused
|
|
|
|
by statements just after a # nnn "filename" line emitted by the C
|
|
|
|
preprocessor. (The trouble is that the line following the # nnn line
|
|
|
|
must be read to see if it is a continuation of the stuff that preceded
|
|
|
|
the # nnn line.) When # nnn "filename" lines appear among the lines
|
|
|
|
for a Fortran statement, the filename reported in an error message for
|
|
|
|
the statement should now be the file that was current when the first
|
|
|
|
line of the statement was read.
|
|
|
|
|
|
|
|
Sun May 2 22:38:25 EDT 1999
|
|
|
|
libf77, libi77, libf2c.zip: make getenv_() more portable (call
|
|
|
|
getenv() rather than knowing about char **environ); adjust some
|
|
|
|
complex intrinsics to work with overlapping arguments (caused by
|
|
|
|
inappropriate use of equivalence); open.c: get "external" versus
|
|
|
|
"internal" right in the error message if a file cannot be opened;
|
|
|
|
err.c: cast a pointer difference to (int) for %d; rdfmt.c: omit
|
|
|
|
fixed-length buffer that could be overwritten by formats Inn or Lnn
|
|
|
|
with nn > 83.
|
|
|
|
|
|
|
|
Mon May 3 13:14:07 EDT 1999
|
|
|
|
"Invisible" changes to omit a few compiler warnings in f2c and
|
|
|
|
libf2c; two new casts in libf2c/open.c that matter with 64-bit longs,
|
|
|
|
and one more tweak (libf2c/c_log.c) for pathological equivalences.
|
|
|
|
Minor update to "fc" script: new -L flag and comment correction.
|
|
|
|
|
|
|
|
Tue May 4 10:06:26 EDT 1999
|
2000-06-04 08:30:31 +00:00
|
|
|
libf77, libf2c.zip: forgot to copy yesterday's latest updates to
|
1999-09-19 05:59:11 +00:00
|
|
|
netlib.
|
|
|
|
|
2000-06-04 08:30:31 +00:00
|
|
|
Fri Jun 18 02:33:08 EDT 1999
|
|
|
|
libf2c.zip: rename backspace.c backspac.c, and fix a glitch in it
|
|
|
|
-- b->ufd may change in t_runc(). (For now, it's still backspace.c
|
|
|
|
in the libi77 bundle.)
|
|
|
|
|
|
|
|
Sun Jun 27 22:05:47 EDT 1999
|
|
|
|
libf2c.zip, libi77: rsne.c: fix bug in namelist input: a misplaced
|
|
|
|
increment could cause wrong array elements to be assigned; e.g.,
|
|
|
|
"&input k(5)=10*1 &end" assigned k(5) and k(15 .. 23).
|
|
|
|
|
|
|
|
|
1999-09-18 10:51:31 +00:00
|
|
|
Current timestamps of files in "all from f2c/src", sorted by time,
|
|
|
|
appear below (mm/dd/year hh:mm:ss). To bring your source up to date,
|
|
|
|
obtain source files with a timestamp later than the time shown in your
|
|
|
|
version.c. Note that the time shown in the current version.c is the
|
|
|
|
timestamp of the source module that immediately follows version.c below:
|
|
|
|
|
1999-09-19 05:59:11 +00:00
|
|
|
5/03/1999 12:46:15 version.c
|
|
|
|
5/03/1999 12:39:35 formatdata.c
|
|
|
|
5/03/1999 12:31:14 format.c
|
|
|
|
5/03/1999 12:27:17 p1output.c
|
|
|
|
5/03/1999 12:27:17 data.c
|
|
|
|
5/03/1999 10:01:12 xsum0.out
|
|
|
|
5/03/1999 9:59:36 io.c
|
|
|
|
5/03/1999 9:59:36 misc.c
|
|
|
|
5/03/1999 9:59:36 init.c
|
|
|
|
3/26/1999 23:18:11 lex.c
|
|
|
|
3/11/1999 16:44:17 expr.c
|
|
|
|
3/11/1999 16:42:42 exec.c
|
|
|
|
2/10/1999 17:43:01 defs.h
|
|
|
|
9/08/1998 10:16:51 f2c.1
|
|
|
|
9/08/1998 10:16:48 f2c.1t
|
|
|
|
9/08/1998 10:14:53 intr.c
|
1999-09-18 10:51:31 +00:00
|
|
|
5/16/1998 16:55:49 output.c
|
|
|
|
4/03/1998 17:15:05 gram.c
|
|
|
|
4/03/1998 17:14:59 gram.dcl
|
|
|
|
3/09/1998 0:30:23 putpcc.c
|
|
|
|
2/25/1998 8:18:04 makefile
|
|
|
|
12/04/1997 17:44:11 niceprintf.c
|
|
|
|
8/05/1997 10:31:26 malloc.c
|
|
|
|
7/24/1997 17:10:55 README
|
|
|
|
7/24/1997 16:06:19 Notice
|
|
|
|
7/21/1997 12:58:44 proc.c
|
|
|
|
2/11/1997 23:39:14 vax.c
|
|
|
|
12/04/1996 13:07:53 gram.exec
|
|
|
|
9/12/1996 12:12:46 equiv.c
|
|
|
|
8/26/1996 9:41:13 sysdep.c
|
|
|
|
7/09/1996 10:40:45 names.c
|
|
|
|
7/04/1996 9:55:45 sysdep.h
|
|
|
|
7/04/1996 9:55:43 put.c
|
|
|
|
7/04/1996 9:55:41 pread.c
|
|
|
|
7/04/1996 9:55:40 parse_args.c
|
|
|
|
7/04/1996 9:55:36 mem.c
|
1999-09-19 05:59:11 +00:00
|
|
|
7/04/1996 9:55:36 memset.c
|
1999-09-18 10:51:31 +00:00
|
|
|
7/04/1996 9:55:35 main.c
|
|
|
|
7/04/1996 9:55:29 error.c
|
|
|
|
7/04/1996 9:55:27 cds.c
|
|
|
|
7/03/1996 15:47:49 xsum.c
|
|
|
|
6/19/1996 7:04:27 f2c.h
|
|
|
|
6/19/1996 2:52:05 defines.h
|
|
|
|
5/13/1996 0:40:32 gram.head
|
|
|
|
2/25/1994 2:07:19 parse.h
|
|
|
|
2/22/1994 19:07:20 iob.h
|
|
|
|
2/22/1994 18:56:53 p1defs.h
|
|
|
|
2/22/1994 18:53:46 output.h
|
|
|
|
2/22/1994 18:51:14 names.h
|
|
|
|
2/22/1994 18:30:41 format.h
|
|
|
|
1/18/1994 18:12:52 tokens
|
|
|
|
3/06/1993 14:13:58 gram.expr
|
|
|
|
1/28/1993 9:03:16 ftypes.h
|
|
|
|
4/06/1990 0:00:57 gram.io
|
|
|
|
2/03/1990 0:58:26 niceprintf.h
|
|
|
|
1/07/1990 1:20:01 usignal.h
|
|
|
|
11/27/1989 8:27:37 machdefs.h
|
|
|
|
7/01/1989 11:59:44 pccdefs.h
|