xref: /original-bsd/usr.bin/f77/libI77/NEWS (revision 9d1db70c)
1		Update info on the f77 I/O library
2			6 June, 1985
3		In order of fix (not in reverse order)
4
501 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
1101 Feb, 1980
12   Backspace now allows non-seek files to reset the EOF flag.
13
1420 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
2020 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
4118 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
4712 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
5312 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
6012 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
7425 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
7818 April, 1981
79   Zero fill can be forced on output of true zero by the BZ format control.
80
8128 April, 1981
82   It is now possible to read into a hollerith field in a format string.
83   This is not encouraged!
84
858 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
908 May, 1981
91   The error report will show non-graphic chars as ^X a la vi.
92
9311 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
1006 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
10412 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
11210 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
11615 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
12128 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
1274.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
165July 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
169July 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.
183