|
|
1.1 root 1: Bug fixes to f77 installed 30 June 1989:
2:
3: 1. The type of PARAMETERs is now honored. Previously, the type was
4: deduced from the assigned constant, so, e.g.,
5: DOUBLE PRECISION ONE
6: PARAMETER (ONE = 1.0)
7: resulted in ONE being a REAL constant.
8:
9: 2. As the Fortran 77 specifies, a comma is now allowed after the
10: label in a DO statement, e.g.
11: DO 10, i = 1, n
12:
13: 3. A statement function argument can be subscripted variable of same
14: name as the dummy argument used in defining the statement function.
15: For example,
16:
17: REAL X(5)
18: F(X) = X**2
19: ...
20: Y = F(X(2))
21:
22: 4. The calling sequence expected by procedures (functions and subroutines)
23: has been adjusted to match the calling sequence that has long been
24: passed. Previously, procedures expected a length parameter to
25: accompany procedure arguments. This change only matters in an
26: example like the following, in which a CHARACTER argument follows
27: a procedure argument:
28: CHARACTER *30 TITLE
29: EXTERNAL GOO
30: TITLE = 'HERE''S ABOUT THIRTY CHARACTERS'
31: CALL FOO(GOO, TITLE)
32: END
33: SUBROUTINE FOO(GOO, T)
34: EXTERNAL GOO
35: CHARACTER *(*) T
36: WRITE(6,'(1X,2A)') 'FOO: ', T
37: CALL GOO(T)
38: END
39: SUBROUTINE GOO(T)
40: CHARACTER *(*) T
41: WRITE(*,*) 'GOO: ', T
42: END
43:
44: This bug fix also eliminates the old warning
45: "Dummy procedure not declared EXTERNAL. Code may be wrong."
46:
47: 5. DATA statements with general implied DOs now work. Previously only
48: an initial, singly nested DO worked. Examples that previously
49: failed (with different error messages):
50:
51: INTEGER IXVI, JXVI, KX1I(2), MX2I(2,2)
52: DATA IXVI, JXVI, KX1I(2),
53: 1 ((MX2I(IVI, JVI), IVI=1,2), JVI=1,2) /5, 6, 8, 4*4/
54: write(*,*) ixvi, jxvi, kx1i(2), mx2i
55: END
56:
57: integer IXVI, MX2I(2,2)
58: DATA IXVI, ((MX2I(IVI, JVI), IVI=1,2), JVI=1,2) /5, 4*4/
59: write(*,*) ixvi, mx2i
60: END
61:
62: 6. A loop like "DO 10 i = 1, 1, -1" no longer has its range omitted.
63:
64: 7. ASSIGNed FORMAT labels work.
65:
66: 8. New flags -b and -B are now available: -b warns when the above bug
67: fixes affect generated objects; -B causes f77 to revert to the
68: previous buggy behavior. These are meant as debugging aids ("Why
69: am I now getting different answers?") and as portability aids --
70: some compilers derived from f77 retain some of the above bugs.
71:
72: 9. The default maximum number of statement labels is now larger, so
73: it should less often be necessary to rerun f77 specifying -Ns402 .
74:
75: 10. Statement functions among executable statements are now always
76: disallowed. Previously, if there were DATA statements, then
77: an unintended "extension" allowed statement function definitions
78: to appear among the executables. (Statement function definitions
79: may appear among DATA statements, but not after the first
80: executable statement.)
81:
82: Please send further bug reports to dmg.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.