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 717Fri Jun 18 02:33:08 EDT 1999 718 libf2c.zip: rename backspace.c backspac.c, and fix a glitch in it 719-- b->ufd may change in t_runc(). (For now, it's still backspace.c 720in the libi77 bundle.) 721 722Sun Jun 27 22:05:47 EDT 1999 723 libf2c.zip, libi77: rsne.c: fix bug in namelist input: a misplaced 724increment could cause wrong array elements to be assigned; e.g., 725"&input k(5)=10*1 &end" assigned k(5) and k(15 .. 23). 726 727 728Current timestamps of files in "all from f2c/src", sorted by time, 729appear below (mm/dd/year hh:mm:ss). To bring your source up to date, 730obtain source files with a timestamp later than the time shown in your 731version.c. Note that the time shown in the current version.c is the 732timestamp of the source module that immediately follows version.c below: 733 734 5/03/1999 12:46:15 version.c 735 5/03/1999 12:39:35 formatdata.c 736 5/03/1999 12:31:14 format.c 737 5/03/1999 12:27:17 p1output.c 738 5/03/1999 12:27:17 data.c 739 5/03/1999 10:01:12 xsum0.out 740 5/03/1999 9:59:36 io.c 741 5/03/1999 9:59:36 misc.c 742 5/03/1999 9:59:36 init.c 743 3/26/1999 23:18:11 lex.c 744 3/11/1999 16:44:17 expr.c 745 3/11/1999 16:42:42 exec.c 746 2/10/1999 17:43:01 defs.h 747 9/08/1998 10:16:51 f2c.1 748 9/08/1998 10:16:48 f2c.1t 749 9/08/1998 10:14:53 intr.c 750 5/16/1998 16:55:49 output.c 751 4/03/1998 17:15:05 gram.c 752 4/03/1998 17:14:59 gram.dcl 753 3/09/1998 0:30:23 putpcc.c 754 2/25/1998 8:18:04 makefile 75512/04/1997 17:44:11 niceprintf.c 756 8/05/1997 10:31:26 malloc.c 757 7/24/1997 17:10:55 README 758 7/24/1997 16:06:19 Notice 759 7/21/1997 12:58:44 proc.c 760 2/11/1997 23:39:14 vax.c 76112/04/1996 13:07:53 gram.exec 762 9/12/1996 12:12:46 equiv.c 763 8/26/1996 9:41:13 sysdep.c 764 7/09/1996 10:40:45 names.c 765 7/04/1996 9:55:45 sysdep.h 766 7/04/1996 9:55:43 put.c 767 7/04/1996 9:55:41 pread.c 768 7/04/1996 9:55:40 parse_args.c 769 7/04/1996 9:55:36 mem.c 770 7/04/1996 9:55:36 memset.c 771 7/04/1996 9:55:35 main.c 772 7/04/1996 9:55:29 error.c 773 7/04/1996 9:55:27 cds.c 774 7/03/1996 15:47:49 xsum.c 775 6/19/1996 7:04:27 f2c.h 776 6/19/1996 2:52:05 defines.h 777 5/13/1996 0:40:32 gram.head 778 2/25/1994 2:07:19 parse.h 779 2/22/1994 19:07:20 iob.h 780 2/22/1994 18:56:53 p1defs.h 781 2/22/1994 18:53:46 output.h 782 2/22/1994 18:51:14 names.h 783 2/22/1994 18:30:41 format.h 784 1/18/1994 18:12:52 tokens 785 3/06/1993 14:13:58 gram.expr 786 1/28/1993 9:03:16 ftypes.h 787 4/06/1990 0:00:57 gram.io 788 2/03/1990 0:58:26 niceprintf.h 789 1/07/1990 1:20:01 usignal.h 79011/27/1989 8:27:37 machdefs.h 791 7/01/1989 11:59:44 pccdefs.h 792