Annotation of researchv10no/cmd/f2c/fixes, revision 1.1.1.1

1.1       root        1: 31 Aug. 1989:
                      2:    1. A(min(i,j)) now is translated correctly (where A is an array).
                      3:    2. 7 and 8 character variable names are allowed (but elicit a
                      4:       complaint under -ext).
                      5:    3. LOGICAL*1 is treated as LOGICAL, with just one error message
                      6:       per LOGICAL*1 statement (rather than one per variable declared
                      7:       in that statement).  [Note that LOGICAL*1 is not in Fortran 77.]
                      8:       Like f77, f2c now allows the format in a read or write statement
                      9:       to be an integer array.
                     10: 
                     11: 5 Sept. 1989:
                     12:    Fixed botch in argument passing of substrings of equivalenced
                     13: variables.
                     14: 
                     15: 15 Sept. 1989:
                     16:    Warn about incorrect code generated when a character-valued
                     17: function is not declared external and is passed as a parameter
                     18: (in violation of the Fortran 77 standard) before it is invoked.
                     19: Example:
                     20: 
                     21:        subroutine foo(a,b)
                     22:        character*10 a,b
                     23:        call goo(a,b)
                     24:        b = a(3)
                     25:        end
                     26: 
                     27: 18 Sept. 1989:
                     28:    Complain about overlapping initializations.
                     29: 
                     30: 20 Sept. 1989:
                     31:    Warn about names declared EXTERNAL but never referenced;
                     32: include such names as externs in the generated C (even
                     33: though most C compilers will discard them).
                     34: 
                     35: 24 Sept. 1989:
                     36:    New option -w8 to suppress complaint when COMMON or EQUIVALENCE
                     37: forces word alignment of a double.
                     38:    Under -A (for ANSI C), ensure that floating constants (terminated
                     39: by 'f') contain either a decimal point or an exponent field.
                     40:    Repair bugs sometimes encountered with CHAR and ICHAR intrinsic
                     41: functions.
                     42:    Restore f77's optimizations for copying and comparing character
                     43: strings of length 1.
                     44:    Always assume floating-point valued routines in libF77 return
                     45: doubles, even under -R.
                     46:    Repair occasional omission of arguments in routines having multiple
                     47: entry points.
                     48:    Repair bugs in computing offsets of character strings involved
                     49: in EQUIVALENCE.
                     50:    Don't omit structure qualification when COMMON variables are used
                     51: as FORMATs or internal files.
                     52: 
                     53: 2 Oct. 1989:
                     54:    Warn about variables that appear only in data stmts; don't emit them.
                     55:    Fix bugs in character DATA for noncharacter variables
                     56: involved in EQUIVALENCE.
                     57:    Treat noncharacter variables initialized (at least partly) with
                     58: character data as though they were equivalenced -- put out a struct
                     59: and #define the variables.  This eliminates the hideous and nonportable
                     60: numeric values that were used to initialize such variables.
                     61:    Treat IMPLICIT NONE as IMPLICIT UNDEFINED(A-Z) .
                     62:    Quit when given invalid options.
                     63: 
                     64: 8 Oct. 1989:
                     65:   Modified naming scheme for generated intermediate variables;
                     66: more are recycled, fewer distinct ones used.
                     67:   New option -W nn specifies nn characters/word for Hollerith
                     68: data initializing non-character variables.
                     69:   Bug fix: x(i:min(i+10,j)) used to elicit "Can't handle opcode 31 yet".
                     70:   Integer expressions of the form (i+const1) - (i+const2), where
                     71: i is a scalar integer variable, are now simplified to (const1-const2);
                     72: this leads to simpler translation of some substring expressions.
                     73:   Initialize uninitialized portions of character string arrays to 0
                     74: rather than to blanks.
                     75: 
                     76: 9 Oct. 1989:
                     77:   New option -c to insert comments showing original Fortran source.
                     78:   New option -g to insert line numbers of original Fortran source.
                     79: 
                     80: 10 Oct. 1989:
                     81:   ! recognized as in-line comment delimiter (a la Fortran 88).
                     82: 
                     83: 24 Oct. 1989:
                     84:   New options to ease coping with systems that want the structs
                     85: that result from COMMON blocks to be defined just once:
                     86:   -E causes uninitialized COMMON blocks to be declared Extern;
                     87: if Extern is undefined, f2c.h #defines it to be extern.
                     88:   -ec causes a separate .c file to be emitted for each
                     89: uninitialized COMMON block: COMMON /ABC/ yields abc_com.c;
                     90: thus one can compile *_com.c into a library to ensure
                     91: precisely one definition.
                     92:   -e1c is similar to -ec, except that everything goes into
                     93: one file, along with comments that give a sed script for
                     94: splitting the file into the pieces that -ec would give.
                     95: This is for use with netlib's "execute f2c" service (for which
                     96: -ec is coerced into -e1c, and the sed script will put everything
                     97: but the COMMON definitions into f2c_out.c ).
                     98: 
                     99: 28 Oct. 1989:
                    100:   Convert "i = i op ..." into "i op= ...;" even when i is a
                    101: dummy argument.
                    102: 
                    103: 13 Nov. 1989:
                    104:   Name integer constants (passed as arguments) c__... rather
                    105: than c_... so
                    106:        common /c/stuff
                    107:        call foo(1)
                    108:        ...
                    109: is translated correctly.
                    110: 
                    111: 19 Nov. 1989:
                    112:   Floating-point constants are now kept as strings unless they
                    113: are involved in constant expressions that get simplified.  The
                    114: floating-point constants kept as strings can have arbitrarily
                    115: many significant figures and a very large exponent field (as
                    116: large as long int allows on the machine on which f2c runs).
                    117: Thus, for example, the body of
                    118: 
                    119:        subroutine zot(x)
                    120:        double precision x(6), pi
                    121:        parameter (pi=3.1415926535897932384626433832795028841972)
                    122:        x(1) = pi
                    123:        x(2) = pi+1
                    124:        x(3) = 9287349823749272.7429874923740978492734D-298374
                    125:        x(4) = .89
                    126:        x(5) = 4.0005
                    127:        x(6) = 10D7
                    128:        end
                    129: 
                    130: now gets translated into
                    131: 
                    132:     x[1] = 3.1415926535897932384626433832795028841972;
                    133:     x[2] = 4.1415926535897931;
                    134:     x[3] = 9.2873498237492727429874923740978492734e-298359;
                    135:     x[4] = (float).89;
                    136:     x[5] = (float)4.0005;
                    137:     x[6] = 1e8;
                    138: 
                    139: rather than the former
                    140: 
                    141:     x[1] = 3.1415926535897931;
                    142:     x[2] = 4.1415926535897931;
                    143:     x[3] = 0.;
                    144:     x[4] = (float)0.89000000000000003;
                    145:     x[5] = (float)4.0004999999999997;
                    146:     x[6] = 100000000.;
                    147: 
                    148:   Recognition of f77 machine-constant intrinsics deleted, i.e.,
                    149: epbase, epprec, epemin, epemax, eptiny, ephuge, epmrsp.
                    150: 
                    151: 22 Nov. 1989:
                    152:   Workarounds for glitches on some Sun systems...
                    153:   libf77: libF77/makefile modified to point out possible need
                    154: to compile libF77/main.c with -Donexit=on_exit .
                    155:   libi77: libI77/wref.c (and libI77/README) modified so non-ANSI
                    156: systems can compile with USE_STRLEN defined, which will cause
                    157:        sprintf(b = buf, "%#.*f", d, x);
                    158:        n = strlen(b) + d1;
                    159: rather than
                    160:        n = sprintf(b = buf, "%#.*f", d, x) + d1;
                    161: to be compiled.
                    162: 
                    163: 26 Nov. 1989:
                    164:   Longer names are now accepted (up to 50 characters); names may
                    165: contain underscores (in which case they will have two underscores
                    166: appended, to avoid clashes with library names).
                    167: 
                    168: 28 Nov. 1989:
                    169:   libi77 updated:
                    170:        1. Allow 3 (or, on Crays, 4) digit exponents under format Ew.d .
                    171:        2. Try to get things right on machines where ints have 16 bits.
                    172: 
                    173: 29 Nov. 1989:
                    174:   Supplied missing semicolon in parameterless subroutines that
                    175: have multiple entry points (all of them parameterless).
                    176: 
                    177: 30 Nov. 1989:
                    178:   libf77 and libi77 revised to use types from f2c.h.
                    179:   f2c now types floating-point valued C library routines as "double"
                    180: rather than "doublereal" (for use with nonstandard C compilers for
                    181: which "double" is IEEE double extended).
                    182: 
                    183: 1 Dec. 1989:
                    184:   f2c.h updated to eliminate #defines rendered unnecessary (and,
                    185: indeed, dangerous) by change of 26 Nov. to long names possibly
                    186: containing underscores.
                    187:   libi77 further revised: yesterday's change omitted two tweaks to fmt.h
                    188: (tweaks which only matter if float and real or double and doublereal are
                    189: different types).
                    190: 
                    191: 2 Dec. 1989:
                    192:   Better error message (than "bad tag") for NAMELIST, which no longer
                    193: inhibits C output.
                    194: 
                    195: 4 Dec. 1989:
                    196:   Allow capital letters in hex constants (f77 extension; e.g.,
                    197: x'a012BCd', X'A012BCD' and x'a012bcd' are all treated as the integer
                    198: 167848909).
                    199:   libi77 further revised: lio.c lio.h lread.c wref.c wrtfmt.c tweaked
                    200: again to allow float and real or double and doublereal to be different.
                    201: 
                    202: 6 Dec. 1989:
                    203:   Revised f2c.h -- required for the following...
                    204:   Simpler looking translations for abs, min, max, using #defines in
                    205: revised f2c.h .
                    206:   libi77: more corrections to types; additions for NAMELIST.
                    207:   Corrected casts in some I/O calls.
                    208:   Translation of NAMELIST; libi77 must still be revised.  Currently
                    209: libi77 gives you a run-time error message if you attempt NAMELIST I/O.
                    210: 
                    211: 7 Dec. 1989:
                    212:   Fixed bug that prevented local integer variables that appear in DATA
                    213: stmts from being ASSIGNed statement labels.
                    214:   Fillers (for DATA statements initializing EQUIVALENCEd variables and
                    215: variables in COMMON) typed integer rather than doublereal (for slightly
                    216: more portability, e.g. to Crays).
                    217:   libi77: missing return values supplied in a few places; some tests
                    218: reordered for better working on the Cray.
                    219:   libf77: better accuracy for complex divide, complex square root,
                    220: real mod function (casts to double; double temporaries).
                    221: 
                    222: 9 Dec. 1989:
                    223:   Fixed bug that caused needless (albeit harmless) empty lines to be
                    224: inserted in the C output when a comment line contained trailing blanks.
                    225:   Further tweak to type of fillers: allow doublereal fillers if the
                    226: struct has doublereal data.
                    227: 
                    228: 11 Dec. 1989:
                    229:   Alteration of rule for producing external (C) names from names that
                    230: contain underscores.  Now the external name is always obtained by
                    231: appending a pair of underscores.
                    232: 
                    233: 12 Dec. 1989:
                    234:   C production inhibited after most errors.
                    235: 
                    236: 15 Dec. 1989:
                    237:   Fixed bug in headers for subroutines having two or more character
                    238: strings arguments:  the length arguments were reversed.
                    239: 
                    240: 19 Dec. 1989:
                    241:   f2c.h libf77 libi77: adjusted so #undefs in f2c.h should not foil
                    242: compilation of libF77 and libI77.
                    243:   libf77: getenv_ adjusted to work with unsorted environments.
                    244:   libi77: the iostat= specifier should now work right with internal I/O.
                    245: 
                    246: 20 Dec. 1989:
                    247:   f2c bugs fixed: In the absence of an err= specifier, the iostat=
                    248: specifier was generally set wrong.  Character strings containing
                    249: explicit nulls (\0) were truncated at the first null.
                    250:   Unlabeled DO loops recognized; must be terminated by ENDDO.
                    251: (Don't ask for CYCLE, EXIT, named DO loops, or DO WHILE.)
                    252: 
                    253: 29 Dec. 1989:
                    254:   Nested unlabeled DO loops now handled properly; new warning for
                    255: extraneous text at end of FORMAT.
                    256: 
                    257: 30 Dec. 1989:
                    258:   Fixed bug in translating dble(real(...)), dble(sngl(...)), and
                    259: dble(float(...)), where ... is either of type double complex or
                    260: is an expression requiring assignment to intermediate variables (e.g.,
                    261: dble(real(foo(x+1))), where foo is a function and x is a variable).
                    262: Regard nonblank label fields on continuation lines as an error.
                    263: 
                    264: 3 Jan. 1990:
                    265:   New option -C++ yields output that should be understood
                    266: by C++ compilers.
                    267: 
                    268: 6 Jan. 1989:
                    269:   -a now excludes variables that appear in a namelist from those
                    270: that it makes automatic.  (As before, it also excludes variables
                    271: that appear in a common, data, equivalence, or save statement.)
                    272:   The syntactically correct Fortran
                    273:        read(*,i) x
                    274:        end
                    275: now yields syntactically correct C (even though both the Fortran
                    276: and C are buggy -- no FORMAT has not been ASSIGNed to i).
                    277: 
                    278: 7 Jan. 1990:
                    279:   libi77: routines supporting NAMELIST added.  Surrounding quotes
                    280: made optional when no ambiguity arises in a list or namelist READ
                    281: of a character-string value.
                    282: 
                    283: 9 Jan. 1990:
                    284:   f2c.src made available.
                    285: 
                    286: 16 Jan. 1990:
                    287:   New options -P to produce ANSI C or C++ prototypes for procedures
                    288: defined.  Change to -A and -C++: f2c tries to infer prototypes for
                    289: invoked procedures unless the new -!P option is given.  New warning
                    290: messages for inconsistent calling sequences among procedures within
                    291: a single file.  Most of f2c/src is affected.
                    292:   f2c.h: typedefs for procedure arguments added; netlib's f2c service
                    293: will insert appropriate typedefs for use with older versions of f2c.h.
                    294: 
                    295: 17 Jan. 1990:
                    296:   f2c/src: defs.h exec.c format.c proc.c putpcc.c version.c xsum0.out
                    297: updated.  Castargs and protofile made extern in defs.h; exec.c
                    298: modified so superfluous else clauses are diagnosed; unused variables
                    299: omitted from declarations in format.c proc.c putpcc.c .
                    300: 
                    301: 21 Jan. 1990:
                    302:   No C emitted for procedures declared external but not referenced.
                    303:   f2c.h: more new types added for use with -P.
                    304:   New feature: f2c accepts as arguments files ending in .p or .P;
                    305: such files are assumed to be prototype files, such as produced by
                    306: the -P option.  All prototype files are read before any Fortran files
                    307: and apply globally to all Fortran files.  Suitable prototypes help f2c
                    308: warn about calling-sequence errors and can tell f2c how to type
                    309: procedures declared external but not explicitly typed; the latter is
                    310: mainly of interest for users of the -A and -C++ options.  (Prototype
                    311: arguments are not available to netlib's "execute f2c" service.)
                    312:   New option -it tells f2c to try to infer types of untyped external
                    313: arguments from their use as parameters to prototyped or previously
                    314: defined procedures.
                    315:   f2c/src: many minor cleanups; most modules changed.  Individual
                    316: files in f2c/src are now in "bundle" format.  The former f2c.1 is
                    317: now f2c.1t; "f2c.1t from f2c" and "f2c.1t from f2c/src" are now the
                    318: same, as are "f2c.1 from f2c" and "f2c.1 from f2c/src".  People who
                    319: do not obtain a new copy of "all from f2c/src" should at least add
                    320:        fclose(sortfp);
                    321: after the call on do_init_data(outfile, sortfp) in format_data.c .
                    322: 
                    323: 22 Jan. 1990:
                    324:   Cleaner man page wording (thanks to Doug McIlroy).
                    325:   -it now also applies to all untyped EXTERNAL procedures, not just
                    326: arguments.
                    327: 
                    328: 23 Jan. 01:34:00 EST 1990:
                    329:   Bug fixes: under -A and -C++, incorrect C was generated for
                    330: subroutines having multiple entries but no arguments.
                    331:   Under -A -P, subroutines of no arguments were given prototype
                    332: calling sequence () rather than (void).
                    333:   Character-valued functions elicited erroneous warning messages
                    334: about inconsistent calling sequences when referenced by another
                    335: procedure in the same file.
                    336:   f2c.1t: omit first appearance of libF77.a in FILES section;
                    337: load order of libraries is -lF77 -lI77, not vice versa (bug
                    338: introduced in yesterday's edits); define .F macro for those whose
                    339: -man lacks it.  (For a while after yesterday's fixes were posted,
                    340: f2c.1t was out of date.  Sorry!)
                    341: 
                    342: 23 Jan. 9:53:24 EST 1990:
                    343:   Character substring expressions involving function calls having
                    344: character arguments (including the intrinsic len function) yielded
                    345: incorrect C.
                    346:   Procedures defined after invocation (in the same file) with
                    347: conflicting argument types also got an erroneous message about
                    348: the wrong number of arguments.
                    349: 
                    350: 24 Jan. 11:44:00 EST 1990:
                    351:   Bug fixes: -p omitted #undefs; COMMON block names containing
                    352: underscores had their C names incorrectly computed; a COMMON block
                    353: having the name of a previously defined procedure wreaked havoc;
                    354: if all arguments were .P files, f2c tried reading the second as a
                    355: Fortran file.
                    356:   New feature: -P emits comments showing COMMON block lengths, so one
                    357: can get warnings of incompatible COMMON block lengths by having f2c
                    358: read .P (or .p) files.  Now by running f2c twice, first with -P -!c
                    359: (or -P!c),  then with *.P among the arguments, you can be warned of
                    360: inconsistent COMMON usage, and COMMON blocks having inconsistent
                    361: lengths will be given the maximum length.  (The latter always did
                    362: happen within each input file; now -P lets you extend this behavior
                    363: across files.)
                    364: 
                    365: 26 Jan. 16:44:00 EST 1990:
                    366:   Option -it made less aggressive: untyped external procedures that
                    367: are invoked are now typed by the rules of Fortran, rather than by
                    368: previous use of procedures to which they are passed as arguments
                    369: before being invoked.
                    370:   Option -P now includes information about references, i.e., called
                    371: procedures, in the prototype files (in the form of special comments).
                    372: This allows iterative invocations of f2c to infer more about untyped
                    373: external names, particularly when multiple Fortran files are involved.
                    374:   As usual, there are some obscure bug fixes:
                    375: 1.  Repair of erroneous warning messages about inconsistent number of
                    376: arguments that arose when a character dummy parameter was discovered
                    377: to be a function or when multiple entry points involved character
                    378: variables appearing in a previous entry point.
                    379: 2.  Repair of memory fault after error msg about "adjustable character
                    380: function".
                    381: 3.  Under -U, allow MAIN_ as a subroutine name (in the same file as a
                    382: main program).
                    383: 4.  Change for consistency: a known function invoked as a subroutine,
                    384: then as a function elicits a warning rather than an error.
                    385: 
                    386: 26 Jan. 22:32:00 EST 1990:
                    387:   Fixed two bugs that resulted in incorrect C for substrings, within
                    388: the body of a character-valued function, of the function's name, when
                    389: those substrings were arguments to another function (even implicitly,
                    390: as in character-string assignment).
                    391: 
                    392: 28 Jan. 18:32:00 EST 1990:
                    393:   libf77, libi77: checksum files added; "make check" looks for
                    394: transmission errors.  NAMELIST read modified to allow $ rather than &
                    395: to precede a namelist name, to allow $ rather than / to terminate
                    396: input where the name of another variable would otherwise be expected,
                    397: and to regard all nonprinting ASCII characters <= ' ' as spaces.
                    398: 
                    399: 29 Jan. 02:11:00 EST 1990:
                    400:   "fc from f2c" added.
                    401:   -it option made the default; -!it turns it off.  Type information is
                    402: now updated in a previously missed case.
                    403:   -P option tweaked again; message about when rerunning f2c may change
                    404: prototypes or declarations made more accurate.
                    405:   New option -Ps implies -P and returns exit status 4 if rerunning
                    406: f2c -P with prototype inputs might change prototypes or declarations.
                    407: Now you can execute a crude script like
                    408: 
                    409:        cat *.f >zap.F
                    410:        rm -f zap.P
                    411:        while :; do
                    412:                f2c -Ps -!c zap.[FP]
                    413:                case $? in 4) ;; *) break;; esac
                    414:                done
                    415: 
                    416: to get a file zap.P of the best prototypes f2c can determine for *.f .
                    417: 
                    418: Jan. 29 07:30:21 EST 1990:
                    419:   Forgot to check for error status when setting return code 4 under -Ps;
                    420: error status (1, 2, 3, or, for caught signal, 126) now takes precedence.
                    421: 
                    422: Jan 29 14:17:00 EST 1990:
                    423:   Incorrect handling of
                    424:        open(n,'filename')
                    425: repaired -- now treated as
                    426:        open(n,file='filename')
                    427: (and, under -ext, given an error message).
                    428:   New optional source file memset.c for people whose systems don't
                    429: provide memset, memcmp, and memcpy; #include <string.h> in mem.c
                    430: changed to #include "string.h" so BSD people can create a local
                    431: string.h that simply says #include <strings.h> .
                    432: 
                    433: Jan 30 10:34:00 EST 1990:
                    434:   Fix erroneous warning at end of definition of a procedure with
                    435: character arguments when the procedure had previously been called with
                    436: a numeric argument instead of a character argument.  (There were two
                    437: warnings, the second one incorrectly complaining of a wrong number of
                    438: arguments.)
                    439: 
                    440: Jan 30 16:29:41 EST 1990:
                    441:   Fix case where -P and -Ps erroneously reported another iteration
                    442: necessary.  (Only harm is the extra iteration.)
                    443: 
                    444: Feb 3 01:40:00 EST 1990:
                    445:   Supply semicolon occasionally omitted under -c .
                    446:   Try to force correct alignment when numeric variables are initialized
                    447: with character data (a non-standard and non-portable practice).  You
                    448: must use the -W option if your code has such data statements and is
                    449: meant to run on a machine with other than 4 characters/word; e.g., for
                    450: code meant to run on a Cray, you would specify -W8 .
                    451:   Allow parentheses around expressions in output lists (in write and
                    452: print statements).
                    453:   Rename source files so their names are <= 12 characters long
                    454: (so there's room to append .Z and still have <= 14 characters);
                    455: renamed files:  formatdata.c niceprintf.c niceprintf.h safstrncpy.c .
                    456:   f2c material made available by anonymous ftp from research.att.com
                    457: (look in dist/f2c ).
                    458: 
                    459: Feb 3 03:49:00 EST 1990:
                    460:   Repair memory fault that arose from use (in an assignment or
                    461: call) of a non-argument variable declared CHARACTER*(*).
                    462: 
                    463: Feb 9 01:35:43 EST 1990:
                    464:   Fix erroneous error msg about bad types in
                    465:        subroutine foo(a,adim)
                    466:        dimension a(adim)
                    467:        integer adim
                    468:   Fix improper passing of character args (and possible memory fault)
                    469: in the expression part of a computed goto.
                    470:   Fix botched calling sequences in array references involving
                    471: functions having character args.
                    472:   Fix memory fault caused by invocation of character-valued functions
                    473: of no arguments.
                    474:   Fix botched calling sequence of a character*1-valued function
                    475: assigned to a character*1 variable.
                    476:   Fix bug in error msg for inconsistent number of args in prototypes.
                    477:   Allow generation of C output despite inconsistencies in prototypes,
                    478: but give exit code 8.
                    479:   Simplify include logic (by removing some bogus logic); never
                    480: prepend "/usr/include/" to file names.
                    481:   Minor cleanups (that should produce no visible change in f2c's
                    482: behavior) in intr.c parse.h main.c defs.h formatdata.c p1output.c .
                    483: 
                    484: Feb 10 00:19:38 EST 1990:
                    485:   Insert (integer) casts when floating-point expressions are used
                    486: as subscripts.
                    487:   Make SAVE stmt (with no variable list) override -a .
                    488:   Minor cleanups: change field to Field in struct Addrblock (for the
                    489: benefit of buggy C compilers); omit system("/bin/cp ...") in misc.c .
                    490: 
                    491: Feb 13 00:39:00 EST 1990:
                    492:   Error msg fix in gram.dcl: change "cannot make %s parameter"
                    493: to "cannot make into parameter".
                    494: 
                    495: Feb 14 14:02:00 EST 1990:
                    496:   Various cleanups (invisible on systems with 4-byte ints), thanks
                    497: to Dave Regan: vaxx.c eliminated; %d changed to %ld various places;
                    498: external names adjusted for the benefit of stupid systems (that ignore
                    499: case and recognize only 6 significant characters in external names);
                    500: buffer shortened in xsum.c (e.g. for MS-DOS); fopen modes distinguish
                    501: text and binary files; several unused functions eliminated; missing
                    502: arg supplied to an unlikely fatalstr invocation.
                    503: 
                    504: Thu Feb 15 19:15:53 EST 1990:
                    505:   More cleanups (invisible on systems with 4 byte ints); casts inserted
                    506: so most complaints from cyntax(1) and lint(1) go away; a few (int)
                    507: versus (long) casts corrected.
                    508: 
                    509: Fri Feb 16 19:55:00 EST 1990:
                    510:   Recognize and translate unnamed Fortran 8x do while statements.
                    511:   Fix bug that occasionally caused improper breaking of character
                    512: strings.
                    513:   New error message for attempts to provide DATA in a type-declaration
                    514: statement.
                    515: 
                    516: Sat Feb 17 11:43:00 EST 1990:
                    517:   Fix infinite loop clf -> Fatal -> done -> clf after I/O error.
                    518:   Change "if (addrp->vclass = CLPROC)" to "if (addrp->vclass == CLPROC)"
                    519: in p1_addr (in p1output.c); this was probably harmless.
                    520:   Move a misplaced } in lex.c (which slowed initkey()).
                    521:   Thanks to Gary Word for pointing these things out.
                    522: 
                    523: Sun Feb 18 18:07:00 EST 1990:
                    524:   Detect overlapping initializations of arrays and scalar variables
                    525: in previously missed cases.
                    526:   Treat logical*2 as logical (after issuing a warning).
                    527:   Don't pass string literals to p1_comment().
                    528:   Correct a cast (introduced 16 Feb.) in gram.expr; this matters e.g.
                    529: on a Cray.
                    530:   Attempt to isolate UNIX-specific things in sysdep.c (a new source
                    531: file).  Unless sysdep.c is compiled with SYSTEM_SORT defined, the
                    532: intermediate files created for DATA statements are now sorted in-core
                    533: without invoking system().
                    534: 
                    535: Tue Feb 20 16:10:35 EST 1990:
                    536:   Move definition of binread and binwrite from init.c to sysdep.c .
                    537:   Recognize Fortran 8x tokens < <= == >= > <> as synonyms for
                    538: .LT. .LE. .EQ. .GE. .GT. .NE.
                    539:   Minor cleanup in putpcc.c:  fully remove simoffset().
                    540:   More discussion of system dependencies added to libI77/README.
                    541: 
                    542: Tue Feb 20 21:44:07 EST 1990:
                    543:   Minor cleanups for the benefit of EBCDIC machines -- try to remove
                    544: the assumption that 'a' through 'z' are contiguous.  (Thanks again to
                    545: Gary Word.)  Also, change log2 to log_2 (shouldn't be necessary).
                    546: 
                    547: Wed Feb 21 06:24:56 EST 1990:
                    548:   Fix botch in init.c introduced in previous change; only matters
                    549: to non-ASCII machines.
                    550: 
                    551: Thu Feb 22 17:29:12 EST 1990:
                    552:   Allow several entry points to mention the same array.  Protect
                    553: parameter adjustments with if's (for the case that an array is not
                    554: an argument to all entrypoints).
                    555:   Under -u, allow
                    556:        subroutine foo(x,n)
                    557:        real x(n)
                    558:        integer n
                    559:   Compute intermediate variables used to evaluate dimension expressions
                    560: at the right time.  Example previously mistranslated:
                    561:        subroutine foo(x,k,m,n)
                    562:        real x(min(k,m,n))
                    563:        ...
                    564:        write(*,*) x
                    565:   Detect duplicate arguments.  (The error msg points to the first
                    566: executable stmt -- not wonderful, but not worth fixing.)
                    567:   Minor cleanup of min/max computation (sometimes slightly simpler).
                    568: 
                    569: Sun Feb 25 09:39:01 EST 1990:
                    570:   Minor tweak to multiple entry points: protect parameter adjustments
                    571: with if's only for (array) args that do not appear in all entry points.
                    572:   Minor tweaks to format.c and io.c (invisible unless your compiler
                    573: complained at the duplicate #defines of IOSUNIT and IOSFMT or at
                    574: comparisons of p1gets(...) with NULL).
                    575: 
                    576: Sun Feb 25 18:40:10 EST 1990:
                    577:   Fix bug introduced Feb. 22: if a subprogram contained DATA and the
                    578: first executable statement was labeled, then the label got lost.
                    579: (Just change INEXEC to INDATA in p1output.c; it occurs just once.)
                    580: 
                    581: Mon Feb 26 17:45:10 EST 1990:
                    582:   Fix bug in handling of " and ' in comments.
                    583: 
                    584: Wed Mar 28 01:43:06 EST 1990:
                    585: libI77:
                    586:  1. Repair nasty I/O bug: opening two files and closing the first
                    587: (after possibly reading or writing it), then writing the second caused
                    588: the last buffer of the second to be lost.
                    589:  2. Formatted reads of logical values treated all letters other than
                    590: t or T as f (false).
                    591:  libI77 files changed: err.c rdfmt.c Version.c
                    592:  (Request "libi77 from f2c" -- you can't get these files individually.)
                    593: 
                    594: f2c itself:
                    595:   Repair nasty bug in translation of
                    596:        ELSE IF (condition involving complicated abs, min, or max)
                    597: -- auxiliary statements were emitted at the wrong place.
                    598:   Supply semicolon previously omitted from the translation of a label
                    599: (of a CONTINUE) immediately preceding an ELSE IF or an ELSE.  This
                    600: bug made f2c produce invalid C.
                    601:   Correct a memory fault that occurred (on some machines) when the
                    602: error message "adjustable dimension on non-argument" should be given.
                    603:   Minor tweaks to remove some harmless warnings by overly chatty C
                    604: compilers.
                    605:   Argument arays having constant dimensions but a variable lower bound
                    606: (e.g., x(n+1:n+3)) had a * omitted from scalar arguments involved in
                    607: the array offset computation.
                    608: 
                    609: Wed Mar 28 18:47:59 EST 1990:
                    610: libf77: add exit(0) to end of main [return(0) encounters a Cray bug]
                    611: 
                    612: Sun Apr  1 16:20:58 EDT 1990:
                    613:   Avoid dereferencing null when processing equivalences after an error.
                    614: 
                    615: Fri Apr  6 08:29:49 EDT 1990:
                    616:   Calls involving alternate return specifiers omitted processing
                    617: needed for things like min, max, abs, and // (concatenation).
                    618:   INTEGER*2 PARAMETERs were treated as INTEGER*4.
                    619:   Convert some O(n^2) parsing to O(n).
                    620: 
                    621: Tue Apr 10 20:07:02 EDT 1990:
                    622:   When inconsistent calling sequences involve differing numbers of
                    623: arguments, report the first differing argument rather than the numbers
                    624: of arguments.
                    625:   Fix bug under -a: formatted I/O in which either the unit or the
                    626: format was a local character variable sometimes resulted in invalid C
                    627: (a static struct initialized with an automatic component).
                    628:   Improve error message for invalid flag after elided -.
                    629:   Complain when literal table overflows, rather than infinitely
                    630: looping.  (The complaint mentions the new and otherwise undocumented
                    631: -NL option for specifying a larger literal table.)
                    632:   New option -h for forcing strings to word (or, with -hd, double-word)
                    633: boundaries where possible.
                    634:   Repair a bug that could cause improper splitting of strings.
                    635:   Fix bug (cast of c to doublereal) in
                    636:        subroutine foo(c,r)
                    637:        double complex c
                    638:        double precision r
                    639:        c = cmplx(r,real(c))
                    640:        end
                    641:   New include file "sysdep.h" has some things from defs.h (and
                    642: elsewhere) that one may need to modify on some systems.
                    643:   Some large arrays that were previously statically allocated are now
                    644: dynamically allocated when f2c starts running.
                    645:   f2c/src files changed:
                    646:        README cds.c defs.h f2c.1 f2c.1t format.c formatdata.c init.c
                    647:        io.c lex.c main.c makefile mem.c misc.c names.c niceprintf.c
                    648:        output.c parse_args.c pread.c put.c putpcc.c sysdep.h
                    649:        version.c xsum0.out
                    650: 
                    651: Wed Apr 11 18:27:12 EDT 1990:
                    652:   Fix bug in argument consistency checking of character, complex, and
                    653: double complex valued functions.  If the same source file contained a
                    654: definition of such a function with arguments not explicitly typed,
                    655: then subsequent references to the function might get erroneous
                    656: warnings of inconsistent calling sequences.
                    657:   Tweaks to sysdep.h for partially ANSI systems.
                    658:   New options -kr and -krd cause f2c to use temporary variables to
                    659: enforce Fortran evaluation-order rules with pernicious, old-style C
                    660: compilers that apply the associative law to floating-point operations.
                    661: 
                    662: Sat Apr 14 15:50:15 EDT 1990:
                    663:   libi77: libI77 adjusted to allow list-directed and namelist I/O
                    664: of internal files; bug in namelist I/O of logical and character arrays
                    665: fixed; list input of complex numbers adjusted to permit d or D to
                    666: denote the start of the exponent field of a component.
                    667:   f2c itself: fix bug in handling complicated lower-bound
                    668: expressions for character substrings; e.g., min and max did not work
                    669: right, nor did function invocations involving character arguments.
                    670:   Switch to octal notation, rather than hexadecimal, for nonprinting
                    671: characters in character and string constants.
                    672:   Fix bug (when neither -A nor -C++ was specified) in typing of
                    673: external arguments of type complex, double complex, or character:
                    674:        subroutine foo(c)
                    675:        external c
                    676:        complex c
                    677: now results in
                    678:        /* Complex */ int (*c) ();
                    679: (as, indeed, it once did) rather than
                    680:        complex (*c) ();
                    681: 
                    682: Sat Apr 14 22:50:39 EDT 1990:
                    683:   libI77/makefile: updated "make check" to omit lio.c
                    684:   lib[FI]77/makefile: trivial change: define CC = cc, reference $(CC).
                    685:   (Request, e.g., "libi77 from f2c" -- you can't ask for individual
                    686: files from lib[FI]77.)
                    687: 
                    688: Wed Apr 18 00:56:37 EDT 1990:
                    689:   Move declaration of atof() from defs.h to sysdep.h, where it is
                    690: now not declared if stdlib.h is included.  (NeXT's stdlib.h has a
                    691: #define atof that otherwise wreaks havoc.)
                    692:   Under -u, provide a more intelligible error message (than "bad tag")
                    693: for an attempt to define a function without specifying its type.
                    694: 
                    695: Wed Apr 18 17:26:27 EDT 1990:
                    696:   Recognize \v (vertical tab) in Hollerith as well as quoted strings;
                    697: add recognition of \r (carriage return).
                    698:   New option -!bs turns off recognition of escapes in character strings
                    699: (\0, \\, \b, \f, \n, \r, \t, \v).
                    700:   Move to sysdep.c initialization of some arrays whose initialization
                    701: assumed ASCII; #define Table_size in sysdep.h rather than using
                    702: hard-coded 256 in allocating arrays of size 1 << (bits/byte).
                    703: 
                    704: Thu Apr 19 08:13:21 EDT 1990:
                    705:   Warn when escapes would make Hollerith extend beyond statement end.
                    706:   Omit max() definition from misc.c (should be invisible except on
                    707: systems that erroneously #define max in stdlib.h).
                    708: 
                    709: Mon Apr 23 22:24:51 EDT 1990:
                    710:   When producing default-style C (no -A or -C++), cast switch
                    711: expressions to (int).
                    712:   Move "-lF77 -lI77 -lm -lc" to link_msg, defined in sysdep.c .
                    713:   Add #define scrub(x) to sysdep.h, with invocations in format.c and
                    714: formatdata.c, so that people who have systems like VMS that would
                    715: otherwise create multiple versions of intermediate files can
                    716: #define scrub(x) unlink(x)
                    717: 
                    718: Tue Apr 24 18:28:36 EDT 1990:
                    719:   Pass string lengths once rather than twice to a function of character
                    720: arguments involved in comparison of character strings of length 1.
                    721: 
                    722: Fri Apr 27 13:11:52 EDT 1990:
                    723:   Fix bug that made f2c gag on concatenations involving char(...) on
                    724: some systems.
                    725: 
                    726: Sat Apr 28 23:20:16 EDT 1990:
                    727:   Fix control-stack bug in
                    728:        if(...) then
                    729:        else if (complicated condition)
                    730:        else
                    731:        endif
                    732: (where the complicated condition causes assignment to an auxiliary
                    733: variable, e.g., max(a*b,c)).
                    734: 
                    735: Mon Apr 30 13:30:10 EDT 1990:
                    736:   Change fillers for DATA with holes from substructures to arrays
                    737: (in an attempt to make things work right with C compilers that have
                    738: funny padding rules for substructures, e.g., Sun C compilers).
                    739:   Minor cleanup of exec.c (should not affect generated C).
                    740: 
                    741: Mon Apr 30 23:13:51 EDT 1990:
                    742:   Fix bug in handling return values of functions having multiple
                    743: entry points of differing return types.
                    744: 
                    745: Sat May  5 01:45:18 EDT 1990:
                    746:   Fix type inference bug in
                    747:        subroutine foo(x)
                    748:        call goo(x)
                    749:        end
                    750:        subroutine goo(i)
                    751:        i = 3
                    752:        end
                    753: Instead of warning of inconsistent calling sequences for goo,
                    754: f2c was simply making i a real variable; now i is correctly
                    755: typed as an integer variable, and f2c issues an error message.
                    756:   Adjust error messages issued at end of declarations so they
                    757: don't blame the first executable statement.
                    758: 
                    759: Sun May  6 01:29:07 EDT 1990:
                    760:   Fix bug in -P and -Ps: warn when the definition of a subprogram adds
                    761: information that would change prototypes or previous declarations.
                    762: 
                    763: Thu May 10 18:09:15 EDT 1990:
                    764:   Fix further obscure bug with (default) -it: inconsistent calling
                    765: sequences and I/O statements could interact to cause a memory fault.
                    766: Example:
                    767:       SUBROUTINE FOO
                    768:       CALL GOO(' Something') ! Forgot integer first arg
                    769:       END
                    770:       SUBROUTINE GOO(IUNIT,MSG)
                    771:       CHARACTER*(*)MSG
                    772:       WRITE(IUNIT,'(1X,A)') MSG
                    773:       END
                    774: 
                    775: Fri May 11 16:49:11 EDT 1990:
                    776:   Under -!c, do not delete any .c files (when there are errors).
                    777:   Avoid dereferencing 0 when a fatal error occurs while reading
                    778: Fortran on stdin.
                    779: 
                    780: Wed May 16 18:24:42 EDT 1990:
                    781:   f2c.ps made available.
                    782: 
                    783: Mon Jun  4 12:53:08 EDT 1990:
                    784:   Diagnose I/O units of invalid type.
                    785:   Add specific error msg about dummy arguments in common.
                    786: 
                    787: Wed Jun 13 12:43:17 EDT 1990:
                    788:   Under -A, supply a missing "[1]" for CHARACTER*1 variables that appear
                    789: both in a DATA statement and in either COMMON or EQUIVALENCE.
                    790: 
                    791: Mon Jun 18 16:58:31 EDT 1990:
                    792:   Trivial updates to f2c.ps .  ("Fortran 8x" --> "Fortran 90"; omit
                    793: "(draft)" from "(draft) ANSI C".)
                    794: 
                    795: Tue Jun 19 07:36:32 EDT 1990:
                    796:   Fix incorrect code generated for ELSE IF(expression involving
                    797: function call passing non-constant substring).
                    798:   Under -h, preserve the property that strings are null-terminated
                    799: where possible.
                    800:   Remove spaces between # and define in lex.c output.c parse.h .
                    801: 
                    802: Mon Jun 25 07:22:59 EDT 1990:
                    803:   Minor tweak to makefile to reduce unnecessary recompilations.
                    804: 
                    805: Tue Jun 26 11:49:53 EDT 1990:
                    806:   Fix unintended truncation of some integer constants on machines
                    807: where casting a long to (int) may change the value.  E.g., when f2c
                    808: ran on machines with 16-bit ints, "i = 99999" was being translated
                    809: to "i = -31073;".
                    810: 
                    811: Wed Jun 27 11:05:32 EDT 1990:
                    812:   Arrange for CHARACTER-valued PARAMETERs to honor their length
                    813: specifications.  Allow CHAR(nn) in expressions defining such PARAMETERs.
                    814: 
                    815: Fri Jul 20 09:17:30 EDT 1990:
                    816:   Avoid dereferencing 0 when a FORMAT statement has no label.
                    817: 
                    818: Thu Jul 26 11:09:39 EDT 1990:
                    819:   Remarks about VOID and binread,binwrite added to README.
                    820:   Tweaks to parse_args: should be invisible unless your compiler
                    821: complained at (short)*store.
                    822: 
                    823: Thu Aug  2 02:07:58 EDT 1990:
                    824:   f2c.ps: change the first line of page 5 from
                    825:        include stuff
                    826: to
                    827:        include 'stuff'
                    828: 
                    829: Tue Aug 14 13:21:24 EDT 1990:
                    830:   libi77: libI77 adjusted to treat tabs as spaces in list input.
                    831: 
                    832: Fri Aug 17 07:24:53 EDT 1990:
                    833:   libi77: libI77 adjusted so a blank='ZERO' clause (upper case Z)
                    834: in an open of a currently open file works right.
                    835: 
                    836: Tue Aug 28 01:56:44 EDT 1990:
                    837:   Fix bug in warnings of inconsistent calling sequences: if an
                    838: argument to a subprogram was never referenced, then a previous
                    839: invocation of the subprogram (in the same source file) that
                    840: passed something of the wrong type for that argument did not
                    841: elicit a warning message.
                    842: 
                    843: Thu Aug 30 09:46:12 EDT 1990:
                    844:   libi77: prevent embedded blanks in list output of complex values;
                    845: omit exponent field in list output of values of magnitude between
                    846: 10 and 1e8; prevent writing stdin and reading stdout or stderr;
                    847: don't close stdin, stdout, or stderr when reopening units 5, 6, 0.
                    848: 
                    849: Tue Sep  4 12:30:57 EDT 1990:
                    850:   Fix bug in C emitted under -I2 or -i2 for INTEGER*4 FUNCTION.
                    851:   Warn of missing final END even if there are previous errors.
                    852: 
                    853: Fri Sep  7 13:55:34 EDT 1990:
                    854:   Remark about "make xsum.out" and "make f2c" added to README.
                    855: 
                    856: Tue Sep 18 23:50:01 EDT 1990:
                    857:   Fix null dereference (and, on some systems, writing of bogus *_com.c
                    858: files) under -ec or -e1c when a prototype file (*.p or *.P) describes
                    859: COMMON blocks that do not appear in the Fortran source.
                    860:   libi77:
                    861:     Add some #ifdef lines (#ifdef MSDOS, #ifndef MSDOS) to avoid
                    862: references to stat and fstat on non-UNIX systems.
                    863:     On UNIX systems, add component udev to unit; decide that old
                    864: and new files are the same iff both the uinode and udev components
                    865: of unit agree.
                    866:     When an open stmt specifies STATUS='OLD', use stat rather than
                    867: access (on UNIX systems) to check the existence of the file (in case
                    868: directories leading to the file have funny permissions and this is
                    869: a setuid or setgid program).
                    870: 
                    871: Thu Sep 27 16:04:09 EDT 1990:
                    872:   Supply missing entry for Impldoblock in blksize array of cpexpr
                    873: (in expr.c).  No examples are known where this omission caused trouble.
                    874: 
                    875: Tue Oct  2 22:58:09 EDT 1990:
                    876:   libf77: test signal(...) == SIG_IGN rather than & 01 in main().
                    877:   libi77: adjust rewind.c so two successive rewinds after a write
                    878: don't clobber the file.
                    879: 
                    880: Thu Oct 11 18:00:14 EDT 1990:
                    881:   libi77: minor cleanups: add #include "fcntl.h" to endfile.c, err.c,
                    882: open.c; adjust g_char in util.c for segmented memories; in f_inqu
                    883: (inquire.c), define x appropriately when MSDOS is defined.
                    884: 
                    885: Mon Oct 15 20:02:11 EDT 1990:
                    886:   Add #ifdef MSDOS pointer adjustments to mem.c; treat NAME= as a
                    887: synonym for FILE= in OPEN statements.
                    888: 
                    889: Wed Oct 17 16:40:37 EDT 1990:
                    890:   libf77, libi77: minor cleanups: _cleanup() and abort() invocations
                    891: replaced by invocations of sig_die in main.c; some error messages
                    892: previously lost in buffers will now appear.
                    893: 
                    894: Mon Oct 22 16:11:27 EDT 1990:
                    895:   libf77: separate sig_die from main (for folks who don't want to use
                    896: the main in libF77).
                    897:   libi77: minor tweak to comments in README.
                    898: 
                    899: Fri Nov  2 13:49:35 EST 1990:
                    900:   Use two underscores rather than one in generated temporary variable
                    901: names to avoid conflict with COMMON names.  f2c.ps updated to reflect
                    902: this change and the NAME= extension introduced 15 Oct.
                    903:   Repair a rare memory fault in io.c .
                    904: 
                    905: Mon Nov  5 16:43:55 EST 1990:
                    906:   libi77: changes to open.c (and err.c): complain if an open stmt
                    907: specifies new= and the file already exists (as specified by Fortrans 77
                    908: and 90); allow file= to be omitted in open stmts and allow
                    909: status='replace' (Fortran 90 extensions).
                    910: 
                    911: Fri Nov 30 10:10:14 EST 1990:
                    912:   Adjust malloc.c for unusual systems whose sbrk() can return values
                    913: not properly aligned for doubles.
                    914:   Arrange for slightly more helpful and less repetitive warnings for
                    915: non-character variables initialized with character data; these warnings
                    916: are (still) suppressed by -w66.
                    917: 
                    918: Fri Nov 30 15:57:59 EST 1990:
                    919:   Minor tweak to README (about changing VOID in f2c.h).
                    920: 
                    921: Mon Dec  3 07:36:20 EST 1990:
                    922:   Fix spelling of "character" in f2c.1t.
                    923: 
                    924: Tue Dec  4 09:48:56 EST 1990:
                    925:   Remark about link_msg and libf2c added to f2c/README.
                    926: 
                    927: Thu Dec  6 08:33:24 EST 1990:
                    928:   Under -U, render label nnn as L_nnn rather than Lnnn.
                    929: 
                    930: Fri Dec  7 18:05:00 EST 1990:
                    931:   Add more names from f2c.h (e.g. integer, real) to the c_keywords
                    932: list of names to which an underscore is appended to avoid confusion.
                    933: 
                    934: Mon Dec 10 19:11:15 EST 1990:
                    935:   Minor tweaks to makefile (./xsum) and README (binread/binwrite).
                    936:   libi77: a few modifications for POSIX systems; meant to be invisible
                    937: elsewhere.
                    938: 
                    939: Sun Dec 16 23:03:16 EST 1990:
                    940:   Fix null dereference caused by unusual erroneous input, e.g.
                    941:        call foo('abc')
                    942:        end
                    943:        subroutine foo(msg)
                    944:        data n/3/
                    945:        character*(*) msg
                    946:        end
                    947: (Subroutine foo is illegal because the character statement comes after a
                    948: data statement.)
                    949:   Use decimal rather than hex constants in xsum.c (to prevent
                    950: erroneous warning messages about constant overflow).
                    951: 
                    952: Mon Dec 17 12:26:40 EST 1990:
                    953:   Fix rare extra underscore in character length parameters passed
                    954: for multiple entry points.
                    955: 
                    956: Wed Dec 19 17:19:26 EST 1990:
                    957:   Allow generation of C despite error messages about bad alignment
                    958: forced by equivalence.
                    959:   Allow variable-length concatenations in I/O statements, such as
                    960:        open(3, file=bletch(1:n) // '.xyz')
                    961: 
                    962: Fri Dec 28 17:08:30 EST 1990:
                    963:   Fix bug under -p with formats and internal I/O "units" in COMMON,
                    964: as in
                    965:       COMMON /FIGLEA/F
                    966:       CHARACTER*20 F
                    967:       F = '(A)'
                    968:       WRITE (*,FMT=F) 'Hello, world!'
                    969:       END
                    970: 
                    971: Tue Jan 15 12:00:24 EST 1991:
                    972:   Fix bug when two equivalence groups are merged, the second with
                    973: nonzero offset, and the result is then merged into a common block.
                    974: Example:
                    975:       INTEGER W(3), X(3), Y(3), Z(3)
                    976:       COMMON /ZOT/ Z
                    977:       EQUIVALENCE (W(1),X(1)), (X(2),Y(1)), (Z(3),X(1))
                    978: ***** W WAS GIVEN THE WRONG OFFSET
                    979:   Recognize Fortran 90's optional NML= in NAMELIST READs and WRITEs.
                    980: (Currently NML= and FMT= are treated as synonyms -- there's no
                    981: error message if, e.g., NML= specifies a format.)
                    982:   libi77: minor adjustment to allow internal READs from character
                    983: string constants in read-only memory.
                    984: 
                    985: Fri Jan 18 22:56:15 EST 1991:
                    986:   Add comment to README about needing to comment out the typedef of
                    987: size_t in sysdep.h on some systems, e.g. Sun 4.1.
                    988:   Fix misspelling of "statement" in an error message in lex.c
                    989: 
                    990: Wed Jan 23 00:38:48 EST 1991:
                    991:   Allow hex, octal, and binary constants to have the qualifying letter
                    992: (z, x, o, or b) either before or after the quoted string containing the
                    993: digits.  For now this change will not be reflected in f2c.ps .
                    994: 
                    995: Tue Jan 29 16:23:45 EST 1991:
                    996:   Arrange for character-valued statement functions to give results of
                    997: the right length (that of the statement function's name).
                    998: 
                    999: Wed Jan 30 07:05:32 EST 1991:
                   1000:   More tweaks for character-valued statement functions: an error
                   1001: check and an adjustment so a right-hand side of nonconstant length
                   1002: (e.g., a substring) is handled right.
                   1003: 
                   1004: Wed Jan 30 09:49:36 EST 1991:
                   1005:   Fix p1_head to avoid printing (char *)0 with %s.
                   1006: 
                   1007: Thu Jan 31 13:53:44 EST 1991:
                   1008:   Add a test after the cleanup call generated for I/O statements with
                   1009: ERR= or END= clauses to catch the unlikely event that the cleanup
                   1010: routine encounters an error.
                   1011: 
                   1012: Mon Feb  4 08:00:58 EST 1991:
                   1013:   Minor cleanup: omit unneeded jumps and labels from code generated for
                   1014: some NAMELIST READs and WRITEs with IOSTAT=, ERR=, and/or END=.
                   1015: 
                   1016: Tue Feb  5 01:39:36 EST 1991:
                   1017:   Change Mktemp to mktmp (for the benefit of systems so brain-damaged
                   1018: that they do not distinguish case in external names -- and that for
                   1019: some reason want to load mktemp).  Try to get xsum0.out right this
                   1020: time (it somehow didn't get updated on 4 Feb. 1991).
                   1021:   Add note to libi77/README about adjusting the interpretation of
                   1022: RECL= specifiers in OPENs for direct unformatted I/O.
                   1023: 
                   1024: Thu Feb  7 17:24:42 EST 1991:
                   1025:   New option -r casts values of REAL functions, including intrinsics,
                   1026: to REAL.  This only matters for unportable code like
                   1027:        real r
                   1028:        r = asin(1.)
                   1029:        if (r .eq. asin(1.)) ...
                   1030: [The behavior of such code varies with the Fortran compiler used --
                   1031: and sometimes is affected by compiler options.]  For now, the man page
                   1032: at the end of f2c.ps is the only part of f2c.ps that reflects this new
                   1033: option.
                   1034: 
                   1035: Fri Feb  8 18:12:51 EST 1991:
                   1036:   Cast pointer differences passed as arguments to the appropriate type.
                   1037: This matters, e.g., with MSDOS compilers that yield a long pointer
                   1038: difference but have int == short.
                   1039:   Disallow nonpositive dimensions.
                   1040: 
                   1041: Fri Feb 15 12:24:15 EST 1991:
                   1042:   Change %d to %ld in sprintf call in putpower in putpcc.c.
                   1043:   Free more memory (e.g. allowing translation of larger Fortran
                   1044: files under MS-DOS).
                   1045:   Recognize READ (character expression) and WRITE (character expression)
                   1046: as formatted I/O with the format given by the character expression.
                   1047:   Update year in Notice.
                   1048: 
                   1049: Sat Feb 16 00:42:32 EST 1991:
                   1050:   Recant recognizing WRITE(character expression) as formatted output
                   1051: -- Fortran 77 is not symmetric in its syntax for READ and WRITE.
                   1052: 
                   1053: Mon Mar  4 15:19:42 EST 1991:
                   1054:   Fix bug in passing the real part of a complex argument to an intrinsic
                   1055: function.  Omit unneeded parentheses in nested calls to intrinsics.
                   1056: Example:
                   1057:        subroutine foo(x, y)
                   1058:        complex y
                   1059:        x = exp(sin(real(y))) + exp(imag(y))
                   1060:        end
                   1061: 
                   1062: Fri Mar  8 15:05:42 EST 1991:
                   1063:   Fix a comment in expr.c; omit safstrncpy.c (which had bugs in
                   1064: cases not used by f2c).
                   1065: 
                   1066: Wed Mar 13 02:27:23 EST 1991:
                   1067:   Initialize firstmemblock->next in mem_init in mem.c .  [On most
                   1068: systems it was fortuituously 0, but with System V, -lmalloc could
                   1069: trip on this missed initialization.]
                   1070: 
                   1071: Wed Mar 13 11:47:42 EST 1991:
                   1072:   Fix a reference to freed memory.
                   1073: 
                   1074: Wed Mar 27 00:42:19 EST 1991:
                   1075:   Fix a memory fault caused by such illegal Fortran as
                   1076:        function foo
                   1077:        x = 3
                   1078:        logical foo     ! declaration among executables
                   1079:        foo=.false.     ! used to suffer memory fault
                   1080:        end
                   1081: 
                   1082: Fri Apr  5 08:30:31 EST 1991:
                   1083:   Fix loss of % in some format expressions, e.g.
                   1084:        write(*,'(1h%)')
                   1085:   Fix botch introduced 27 March 1991 that caused subroutines with
                   1086: multiple entry points to have extraneous declarations of ret_val.
                   1087: 
                   1088: Fri Apr  5 12:44:02 EST 1991
                   1089:   Try again to omit extraneous ret_val declarations -- this morning's
                   1090: fix was sometimes wrong.
                   1091: 
                   1092: Mon Apr  8 13:47:06 EDT 1991:
                   1093:   Arrange for s_rnge to have the right prototype under -A -C .
                   1094: 
                   1095: Wed Apr 17 13:36:03 EDT 1991:
                   1096:   New fatal error message for apparent invocation of a recursive
                   1097: statement function.
                   1098: 
                   1099: Thu Apr 25 15:13:37 EDT 1991:
                   1100:   F2c and libi77 adjusted so NAMELIST works with -i2.  (I forgot
                   1101: about -i2 when adding NAMELIST.)  This required a change to f2c.h
                   1102: (that only affects NAMELIST I/O under -i2.)  Man-page description of
                   1103: -i2 adjusted to reflect that -i2 stores array lengths in short ints.
                   1104: 
                   1105: Fri Apr 26 02:54:41 EDT 1991:
                   1106:   Libi77: fix some bugs in NAMELIST reading of multi-dimensional arrays
                   1107: (file rsne.c).
                   1108: 
                   1109: Thu May  9 02:13:51 EDT 1991:
                   1110:   Omit a trailing space in expr.c (could cause a false xsum value if
                   1111: a mailer drops the trailing blank).
                   1112: 
                   1113: Thu May 16 13:14:59 EDT 1991:
                   1114:   Libi77: increase LEFBL in lio.h to overcome a NeXT bug.
                   1115:   Tweak for compilers that recognize "nested" comments: inside comments,
                   1116: turn /* into /+ (as well as */ into +/).
                   1117: 
                   1118: Sat May 25 11:44:25 EDT 1991:
                   1119:   libf77: s_rnge: declare line long int rather than int.
                   1120: 
                   1121: Fri May 31 07:51:50 EDT 1991:
                   1122:   libf77: system_: officially return status.
                   1123: 
                   1124: Mon Jun 17 16:52:53 EDT 1991:
                   1125:   Minor tweaks: omit unnecessary declaration of strcmp (that caused
                   1126: trouble on a system where strcmp was a macro) from misc.c; add
                   1127: SHELL = /bin/sh to makefiles.
                   1128:   Fix a dereference of null when a CHARACTER*(*) declaration appears
                   1129: (illegally) after DATA.  Complain only once per subroutine about
                   1130: declarations appearing after DATA.
                   1131: 
                   1132: Mon Jul  1 00:28:13 EDT 1991:
                   1133:   Add test and error message for illegal use of subroutine names, e.g.
                   1134:       SUBROUTINE ZAP(A)
                   1135:       ZAP = A
                   1136:       END
                   1137: 
                   1138: Mon Jul  8 21:49:20 EDT 1991:
                   1139:   Issue a warning about things like
                   1140:        integer i
                   1141:        i = 'abc'
                   1142: (which is treated as i = ichar('a')).  [It might be nice to treat 'abc'
                   1143: as an integer initialized (in a DATA statement) with 'abc', but
                   1144: other matters have higher priority.]
                   1145:   Render
                   1146:        i = ichar('A')
                   1147: as
                   1148:        i = 'A';
                   1149: rather than
                   1150:        i = 65;
                   1151: (which assumes ASCII).
                   1152: 
                   1153: Fri Jul 12 07:41:30 EDT 1991:
                   1154:   Note added to README about erroneous definitions of __STDC__ .
                   1155: 
                   1156: Sat Jul 13 13:38:54 EDT 1991:
                   1157:   Fix bugs in double type convesions of complex values, e.g.
                   1158: sngl(real(...)) or dble(real(...)) (where ... is complex).
                   1159: 
                   1160: Mon Jul 15 13:21:42 EDT 1991:
                   1161:   Fix bug introduced 8 July 1991 that caused erroneous warnings
                   1162: "ichar([first char. of] char. string) assumed for conversion to numeric"
                   1163: when a subroutine had an array of character strings as an argument.
                   1164: 
                   1165: Wed Aug 28 01:12:17 EDT 1991:
                   1166:   Omit an unused function in format.c, an unused variable in proc.c .
                   1167:   Under -r8, promote complex to double complex (as the man page claims).
                   1168: 
                   1169: Fri Aug 30 17:19:17 EDT 1991:
                   1170:   f2c.ps updated: slightly expand description of intrinsics and,or,xor,
                   1171: not; add mention of intrinsics lshift, rshift; add note about f2c
                   1172: accepting Fortran 90 inline comments (starting with !); update Cobalt
                   1173: Blue address.
                   1174: 
                   1175: Tue Sep 17 07:17:33 EDT 1991:
                   1176:   libI77: err.c and open.c modified to use modes "rb" and "wb"
                   1177: when (f)opening unformatted files; README updated to point out
                   1178: that it may be necessary to change these modes to "r" and "w"
                   1179: on some non-ANSI systems.
                   1180: 
                   1181: Tue Oct 15 10:25:49 EDT 1991:
                   1182:   Minor tweaks that make some PC compilers happier: insert some
                   1183: casts, add args to signal functions.
                   1184:   Change -g to emit uncommented #line lines -- and to emit more of them;
                   1185: update fc, f2c.1, f2c.1t, f2c.ps to reflect this.
                   1186:   Change uchar to Uchar in xsum.c .
                   1187:   Bring gram.c up to date.
                   1188: 
                   1189: Thu Oct 17 09:22:05 EDT 1991:
                   1190:   libi77: README, fio.h, sue.c, uio.c changed so the length field
                   1191: in unformatted sequential records has type long rather than int
                   1192: (unless UIOLEN_int is #defined).  This is for systems where sizeof(int)
                   1193: can vary, depending on the compiler or compiler options.
                   1194: 
                   1195: Thu Oct 17 13:42:59 EDT 1991:
                   1196:   libi77: inquire.c: when MSDOS is defined, don't strcmp units[i].ufnm
                   1197: when it is NULL.
                   1198: 
                   1199: Fri Oct 18 15:16:00 EDT 1991:
                   1200:   Correct xsum0.out in "all from f2c/src" (somehow botched on 15 Oct.).
                   1201: 
                   1202: Tue Oct 22 18:12:56 EDT 1991:
                   1203:   Fix memory fault when a character*(*) argument is used (illegally)
                   1204: as a dummy variable in the definition of a statement function.  (The
                   1205: memory fault occurred when the statement function was invoked.)
                   1206:   Complain about implicit character*(*).
                   1207: 
                   1208: Thu Nov 14 08:50:42 EST 1991:
                   1209:   libi77: change uint to Uint in fmt.h, rdfmt.c, wrtfmt.c; this change
                   1210: should be invisible unless you're running a brain-damaged system.
                   1211: 
                   1212: Mon Nov 25 19:04:40 EST 1991:
                   1213:   libi77: correct botches introduced 17 Oct. 1991 and 14 Nov. 1991
                   1214: (change uint to Uint in lwrite.c; other changes that only matter if
                   1215: sizeof(int) != sizeof(long)).
                   1216:   Add a more meaningful error message when bailing out due to an attempt
                   1217: to invoke a COMMON variable as a function.
                   1218: 
                   1219: Sun Dec  1 19:29:24 EST 1991:
                   1220:   libi77: uio.c: add test for read failure (seq. unformatted reads);
                   1221: adjust an error return from EOF to off end of record.
                   1222: 
                   1223: Tue Dec 10 17:42:28 EST 1991:
                   1224:   Add tests to prevent memory faults with bad uses of character*(*).
                   1225: 
                   1226: Thu Dec 12 11:24:41 EST 1991:
                   1227:   libi77: fix bug with internal list input that caused the last
                   1228: character of each record to be ignored; adjust error message in
                   1229: internal formatted input from "end-of-file" to "off end of record"
                   1230: if the format specifies more characters than the record contains.
                   1231: 
                   1232: Wed Dec 18 17:48:11 EST 1991:
                   1233:   Fix bug in translating nonsensical ichar invocations involving
                   1234: concatenations.
                   1235:   Fix bug in passing intrinsics lle, llt, lge, lgt as arguments;
                   1236: hl_le was being passed rather than l_le, etc.
                   1237:   libf77: adjust length parameters from long to ftnlen, for
                   1238: compiling with f2c_i2 defined.
                   1239: 
                   1240: Sat Dec 21 15:30:57 EST 1991:
                   1241:   Allow DO nnn ... to end with an END DO statement labelled nnn.
                   1242: 
                   1243: Tue Dec 31 13:53:47 EST 1991:
                   1244:   Fix bug in handling dimension a(n**3,2) -- pow_ii was called
                   1245: incorrectly.
                   1246:   Fix bug in translating
                   1247:        subroutine x(abc,n)
                   1248:        character abc(n)
                   1249:        write(abc,'(i10)') 123
                   1250:        end
                   1251: (omitted declaration and initialiation of abc_dim1).
                   1252:   Complain about dimension expressions of such invalid types
                   1253: as complex and logical.
                   1254: 
                   1255: Fri Jan 17 11:54:20 EST 1992:
                   1256:   Diagnose some illegal uses of main program name (rather than
                   1257: memory faulting).
                   1258:   libi77:  (1) In list and namelist input, treat "r* ," and "r*,"
                   1259: alike (where r is a positive integer constant), and fix a bug in
                   1260: handling null values following items with repeat counts (e.g.,
                   1261: 2*1,,3).  (2) For namelist reading of a numeric array, allow a new
                   1262: name-value subsequence to terminate the current one (as though the
                   1263: current one ended with the right number of null values).
                   1264: (3) [lio.h, lwrite.c]:  omit insignificant zeros in list and namelist
                   1265: output.  (Compile with -DOld_list_output to get the old behavior.)
                   1266: 
                   1267: Sat Jan 18 15:58:01 EST 1992:
                   1268:   libi77:  make list output consistent with F format by printing .1
                   1269: rather than 0.1 (introduced yesterday).
                   1270: 
                   1271: Wed Jan 22 08:32:43 EST 1992:
                   1272:   libi77:  add comment to README pointing out preconnection of
                   1273: Fortran units 5, 6, 0 to stdin, stdout, stderr (respectively).
                   1274: 
                   1275: Mon Feb  3 11:57:53 EST 1992:
                   1276:   libi77:  fix namelist read bug that caused the character following
                   1277: a comma to be ignored.
                   1278: 
                   1279: Fri Feb 28 01:04:26 EST 1992:
                   1280:   libf77:  fix buggy z_sqrt.c (double precision square root), which
                   1281: misbehaved for arguments in the southwest quadrant.
                   1282: 
                   1283: Thu Mar 19 15:05:18 EST 1992:
                   1284:   Fix bug (introduced 17 Jan 1992) in handling multiple entry points
                   1285: of differing types (with implicitly typed entries appearing after
                   1286: the first executable statement).
                   1287:   Fix memory fault in the following illegal Fortran:
                   1288:         double precision foo(i)
                   1289: *      illegal: above should be "double precision function foo(i)"
                   1290:         foo = i * 3.2
                   1291:         entry moo(i)
                   1292:         end
                   1293:   Note about ANSI_Libraries (relevant, e.g., to IRIX 4.0.1 and AIX)
                   1294: added to README.
                   1295:   Abort zero divides during constant simplification.
                   1296: 
                   1297: Sat Mar 21 01:27:09 EST 1992:
                   1298:   Tweak ckalloc (misc.c) for systems where malloc(0) = 0; this matters
                   1299: for subroutines with multiple entry points but no arguments.
                   1300:   Add "struct memblock;" to init.c (irrelevant to most compilers).
                   1301: 
                   1302: Wed Mar 25 13:31:05 EST 1992:
                   1303:   Fix bug with IMPLICIT INTEGER*4(...): under -i2 or -I2, the *4 was
                   1304: ignored.
                   1305: 
                   1306: Tue May  5 09:53:55 EDT 1992:
                   1307:   Tweaks to README; e.g., ANSI_LIbraries changed to ANSI_Libraries .
                   1308: 
                   1309: Wed May  6 23:49:07 EDT 1992
                   1310:   Under -A and -C++, have subroutines return 0 (even if they have
                   1311: no * arguments).
                   1312:   Adjust libi77 (rsne.c and lread.c) for systems where ungetc is
                   1313: a macro.  Tweak lib[FI]77/makefile to use unique intermediate file
                   1314: names (for parallel makes).
                   1315: 
                   1316: Tue May 19 09:03:05 EDT 1992:
                   1317:   Adjust libI77 to make err= work with internal list and formatted I/O.
                   1318: 
                   1319: Sat May 23 18:17:42 EDT 1992:
                   1320:   Under -A and -C++, supply "return 0;" after the code generated for
                   1321: a STOP statement -- the C compiler doesn't know that s_stop won't
                   1322: return.
                   1323:   New (mutually exclusive) options:
                   1324:        -f      treats all input lines as free-format lines,
                   1325:                honoring text that appears after column 72
                   1326:                and not padding lines shorter than 72 characters
                   1327:                with blanks (which matters if a character string
                   1328:                is continued across 2 or more lines).
                   1329:        -72     treats text appearing after column 72 as an error.
                   1330: 
                   1331: Sun May 24 09:45:37 EDT 1992:
                   1332:   Tweak description of -f in f2c.1 and f2c.1t; update f2c.ps .
                   1333: 
                   1334: Fri May 29 01:17:15 EDT 1992:
                   1335:   Complain about externals used as variables.  Example
                   1336:        subroutine foo(a,b)
                   1337:        external b
                   1338:        a = a*b         ! illegal use of b; perhaps should be b()
                   1339:        end
                   1340: 
                   1341: Mon Jun 15 11:15:27 EDT 1992:
                   1342:   Fix bug in handling namelists with names that have underscores.
                   1343: 
                   1344: Sat Jun 27 17:30:59 EDT 1992:
                   1345:   Under -A and -C++, end Main program aliases with "return 0;".
                   1346:   Under -A and -C++, use .P files and usage in previous subprograms
                   1347: in the current file to give prototypes for functions declared EXTERNAL
                   1348: but not invoked.
                   1349:   Fix memory fault under -d1 -P .
                   1350:   Under -A and -C++, cast arguments to the right types in calling
                   1351: a function that has been defined in the current file or in a .P file.
                   1352:   Fix bug in handling multi-dimensional arrays with array references
                   1353: in their leading dimensions.
                   1354:   Fix bug in the intrinsic cmplx function when the first argument
                   1355: involves an expression for which f2c generates temporary variables,
                   1356: e.g. cmplx(abs(real(a)),1.) .
                   1357: 
                   1358: Sat Jul 18 07:36:58 EDT 1992:
                   1359:   Fix buglet with -e1c (invisible on most systems) temporary file
                   1360: f2c_functions was unlinked before being closed.
                   1361:   libf77: fix bugs in evaluating m**n for integer n < 0 and m an
                   1362: integer different from 1 or a real or double precision 0.
                   1363: Catch SIGTRAP (to print "Trace trap" before aborting).  Programs
                   1364: that previously erroneously computed 1 for 0**-1 may now fault.
                   1365: Relevant routines: main.c pow_di.c pow_hh.c pow_ii.c pow_ri.c .
                   1366: 
                   1367: Sat Jul 18 08:40:10 EDT 1992:
                   1368:   libi77: allow namelist input to end with & (e.g. &end).
                   1369: 
                   1370: Thu Jul 23 00:14:43 EDT 1992
                   1371:   Append two underscores rather than one to C keywords used as
                   1372: local variables to avoid conflicts with similarly named COMMON blocks.
                   1373: 
                   1374: Thu Jul 23 11:20:55 EDT 1992:
                   1375:   libf77, libi77 updated to assume ANSI prototypes unless KR_headers
                   1376: is #defined.
                   1377:   libi77 now recognizes a Z format item as in Fortran 90;
                   1378: the implementation assumes 8-bit bytes and botches character strings
                   1379: on little-endian machines (by printing their bytes from right to
                   1380: left): expect this bug to persist; fixing it would require a
                   1381: change to the I/O calling sequences.
                   1382: 
                   1383: Tue Jul 28 15:18:33 EDT 1992:
                   1384:   libi77: insert missed "#ifdef KR_headers" lines around getnum
                   1385: header in rsne.c.  Version not updated.
                   1386: 
                   1387: NOTE: "index from f2c" now ends with current timestamps of files in
                   1388: "all from f2c/src", sorted by time.  To bring your source up to date,
                   1389: obtain source files with a timestamp later than the time shown in your
                   1390: version.c.
                   1391: 
                   1392: Fri Aug 14 08:07:09 EDT 1992:
                   1393:   libi77: tweak wrt_E in wref.c to avoid signing NaNs.
                   1394: 
                   1395: Sun Aug 23 19:05:22 EDT 1992:
                   1396:   fc: supply : after O in getopt invocation (for -O1 -O2 -O3).
                   1397: 
                   1398: Mon Aug 24 18:37:59 EDT 1992:
                   1399:   Recant above tweak to fc: getopt is dumber than I thought;
                   1400: it's necessary to say -O 1 (etc.).
                   1401:   libF77/README: add comments about ABORT, ERF, DERF, ERFC, DERFC,
                   1402: GETARG, GETENV, IARGC, SIGNAL, and SYSTEM.
                   1403: 
                   1404: Tue Oct 27 01:57:42 EST 1992:
                   1405:   libf77, libi77:
                   1406:     1.  Fix botched indirection in signal_.c.
                   1407:     2.  Supply missing l_eof = 0 assignment to s_rsne() in rsne.c (so
                   1408: end-of-file on other files won't confuse namelist reads of external
                   1409: files).
                   1410:     3.  Prepend f__ to external names that are only of internal
                   1411: interest to lib[FI]77. 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.