|
|
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.