|
|
1.1 ! root 1: Update info on the f77 I/O library ! 2: 6 June, 1985 ! 3: In order of fix (not in reverse order) ! 4: ! 5: 01 Feb, 1980 ! 6: All instances of: ! 7: if(!init) f_init(); ! 8: have been removed. f_init() is called from main.c on startup in the new ! 9: libF77.a . ! 10: ! 11: 01 Feb, 1980 ! 12: Backspace now allows non-seek files to reset the EOF flag. ! 13: ! 14: 20 Mar, 1980 ! 15: The way SIGINT is handled in libF77/main.c has been changed. ! 16: If the signal is not SIG_DFL, it is left alone as otherwise the ! 17: program will be killed if run in the background and the user types DEL. ! 18: The signal trap that used to be in the I/O lib has been removed. ! 19: ! 20: 20 Mar, 1980 ! 21: The ANSI fortran standard requires that I/O routines return to the caller ! 22: on any error condition if iostat= is specified even if no err= or end= ! 23: trap is specified. The implication of this is that the program must ! 24: be prepared to deal with ALL I/O errors if iostat= is specified. ! 25: If only one trap is specified, end= for example, the program must test the ! 26: iostat variable for positive/non-zero after the I/O call since return ! 27: will occur on any error. This seems awkward and I've chosen to make this ! 28: feature optional. I am interested in other views on this. ! 29: ! 30: In the current version of the compiler (using the modified io.c), ! 31: iostat= is used only to return status information from ! 32: I/O calls but does not itself cause return on any I/O error. Only ! 33: the traps, err= and end=, will cause a return/branch, and only for ! 34: the specified trap(s). ! 35: ! 36: This feature has been made a compile time option in the current version ! 37: of (modified) io.c It implements the standard correctly if compiled ! 38: with -DKOSHER or -DIOSRETURN. Otherwise it executes as currently ! 39: implemented. ! 40: ! 41: 18 Apr, 1980 ! 42: As originally implemented the '$' specification caused a NULL to be ! 43: output (inplace of the \n) Actually NULL's should never appear in the ! 44: formatted output streams. Therefore in "sfe.c" in x_putc() and pr_put() ! 45: add if (c) before the instances of putc(c,cf) ! 46: ! 47: 12 May, 1980 ! 48: Spaces (ASCII 040) do not have significance in FORMAT statements except ! 49: within strings. In order to accomodate old programs that may have ! 50: arbitrary occurances of spaces, all spaces are now ignored. Thus the ! 51: format ( 1 0 X , 1 2 F 1 0 . 4 / ) is accepted. ! 52: ! 53: 12 May, 1980 ! 54: A bug in handling partially filled "unformatted direct" records has been ! 55: fixed by ensuring that all records are complete when written. The bug was ! 56: that the last record of such a file would cause EOF if a read was attempted ! 57: for a full record. Existing files of this form should be "fixed" by ! 58: reading and rewriting the last record using the new version of libI77.a ! 59: ! 60: 12 May, 1980 ! 61: BACKSPACE will now open a default file (fort.N) if the specified logical ! 62: unit is not open. REWIND and other I/O already did this. CLOSE and ! 63: ENDFILE do not open a default file. ! 64: ! 65: ?? November, 1980 ! 66: The modified io.c no longer supported. SIF feels it should conform ! 67: exactly with the standard. This means that iostat= will cause return ! 68: in all cases, regardless of the presence or absence of err= or end=. ! 69: ! 70: ?? February, 1981 ! 71: Backspace will reset EOF on any unit, even if it can't "seek". ! 72: You still can't "rewind" non-seekable units. ! 73: ! 74: 25 March, 1981 ! 75: There is now a f77 I/O error list available in the lib. libU77.a routines ! 76: use it. All error numbers have symbollic values. ! 77: ! 78: 18 April, 1981 ! 79: Zero fill can be forced on output of true zero by the BZ format control. ! 80: ! 81: 28 April, 1981 ! 82: It is now possible to read into a hollerith field in a format string. ! 83: This is not encouraged! ! 84: ! 85: 8 May, 1981 ! 86: There is a pseudo-lib to force ANSI-fortran-66 I/O to logical unit 6: ! 87: carriage control will be interpreted, and blanks will be '0's. ! 88: Include -lI66 on the command line. ! 89: ! 90: 8 May, 1981 ! 91: The error report will show non-graphic chars as ^X a la vi. ! 92: ! 93: 11 August, 1981 ! 94: SFE read with a null list at EOF now takes the error branch. ! 95: All routines check the return value of 'nowreading/nowwriting'; this ! 96: should fix the bug causing infinite looping on close of a write ! 97: protected file on which writing had been attempted (it will take the err= ! 98: branch, if any) ! 99: ! 100: 6 December, 1981 ! 101: t_runc now looks for current pos >= EOF. This solves the bug where ! 102: it loops indefinitely in close if written to /dev/null. ! 103: ! 104: 12 May, 1982 ! 105: backspace on a lu at EOF now clears the stdio flags as well as the libI77 ! 106: EOF flag. This fixes the problem of spurious EOF branches on terminal ! 107: input. ! 108: ! 109: open now checks for a non-zero recl argument on sequential access files. ! 110: It complains and ignores the recl spec. ! 111: ! 112: 10 January, 1983 ! 113: Mag tape I/O routines added. See topen.3f. The reason is that Fortran-77 ! 114: I/O requirements are very difficult (or impossible) to meet on mag tape. ! 115: ! 116: 15 April, 1983 ! 117: new routine, ioinit, allows specifying "open at beginning" for files, ! 118: carriage control on unit 6, and preset association of logical units ! 119: with file pathnames from the environment. ! 120: ! 121: 28 April, 1983 ! 122: The new kernel features of 4.2bsd have been incorporated. A number ! 123: of obscure bugs fixed. ! 124: ! 125: Files are now opened at the BEGINNING!! ! 126: ! 127: 4.3 BSD, Mar-June, 1985: ! 128: ! 129: Appropriately named environment variables now override default file ! 130: names and names in open statements. See "Intro. to I/O lib." for details. ! 131: ! 132: Unit numbers can vary from 0-99, number simultaneously open varies by ! 133: system - I/O lib. doesn't check this. No longer explicitly initialize ! 134: unit table to zero, it's global so C guarantees zeros; why waste space ! 135: in the modules? ! 136: ! 137: Much of input scanning for formatted reads has been rewritten; illegal ! 138: data will now be caught! On list directed reads, tabs are now fully ! 139: equivalent to blanks; <count>* followed by blanks now skips <count> ! 140: items in the list as the standard requires & counts work with complex data. ! 141: ! 142: Formats in format statements are compiled; those in character constants ! 143: and variables in I/O statements are not. ! 144: ! 145: All errors call f77_abort() in libF77 for centralized error handling. ! 146: ! 147: Now attempt to get to next record if doing 'err=' branch on error. ! 148: Standard does not require this, but it is nice not to leave the ! 149: system hanging in mid record. ! 150: ! 151: Lot's of routines and variables made static; number of T,C, and D ! 152: symbols in the library went from about 230 to 130. ! 153: ! 154: .c files reorganized so only get whats needed loaded; e.g. ! 155: you no longer get formatted read routines loaded if you only do ! 156: formatted writes. ! 157: ! 158: the library now checks for infinite loops in formats - printing multiple ! 159: records after the list is exhausted. ! 160: ! 161: standard error is now buffered. ! 162: ! 163: error messages have been improved. ! 164: ! 165: July 12, 1985: ! 166: Moved f77_abort() and patch it here from libF77/main.c so that C programs ! 167: which call Fortran programs which do Fortran I/O will load properly. ! 168: ! 169: July 25, 1985: ! 170: fixed auxilliary I/O to be closer to standard: close is no-op on non-existent ! 171: unit or not connected unit; rewind & backspace are no-ops on non-connected ! 172: units; endfile opens non-connected unit. inquire returns true when asked ! 173: if units 0-MAXUNIT exist, false for other integers, it used to return ! 174: false for legal but unconnected & error for illegal #s. ! 175: ! 176: Inquire now fills in all requested fields, even if file or unit doesn't ! 177: exist or is not connected. inquire by unit now correctly returns unit ! 178: number. ! 179: ! 180: Added Namelist I/O - mostly like IBM, but similar to VMS. ! 181: ! 182: Cosmetic change - 'sequential' and 'external' are now set only to YES and NO.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.