V10/cmd/f77/f77.fixes

Bug fixes to f77 installed 30 June 1989:

1. The type of PARAMETERs is now honored.  Previously, the type was
   deduced from the assigned constant, so, e.g.,
	DOUBLE PRECISION ONE
	PARAMETER (ONE = 1.0)
   resulted in ONE being a REAL constant.

2. As the Fortran 77 specifies, a comma is now allowed after the
   label in a DO statement, e.g.
	DO 10, i = 1, n

3. A statement function argument can be subscripted variable of same
   name as the dummy argument used in defining the statement function.
   For example,

	REAL X(5)
	F(X) = X**2
	...
	Y = F(X(2))
	
4. The calling sequence expected by procedures (functions and subroutines)
   has been adjusted to match the calling sequence that has long been
   passed.  Previously, procedures expected a length parameter to
   accompany procedure arguments.  This change only matters in an
   example like the following, in which a CHARACTER argument follows
   a procedure argument:
	CHARACTER *30 TITLE
	EXTERNAL GOO
	TITLE = 'HERE''S ABOUT THIRTY CHARACTERS'
	CALL FOO(GOO, TITLE)
	END
	SUBROUTINE FOO(GOO, T)
	EXTERNAL GOO
	CHARACTER *(*) T
	WRITE(6,'(1X,2A)') 'FOO: ', T
	CALL GOO(T)
	END
	SUBROUTINE GOO(T)
	CHARACTER *(*) T
	WRITE(*,*) 'GOO: ', T
	END

   This bug fix also eliminates the old warning
   "Dummy procedure not declared EXTERNAL. Code may be wrong."
	
5. DATA statements with general implied DOs now work.  Previously only
   an initial, singly nested DO worked.  Examples that previously
   failed (with different error messages):

        INTEGER IXVI, JXVI, KX1I(2), MX2I(2,2)
        DATA IXVI, JXVI, KX1I(2),
     1     ((MX2I(IVI, JVI), IVI=1,2), JVI=1,2) /5, 6, 8, 4*4/
	write(*,*) ixvi, jxvi, kx1i(2), mx2i
        END

        integer IXVI, MX2I(2,2)
        DATA IXVI, ((MX2I(IVI, JVI), IVI=1,2), JVI=1,2) /5, 4*4/
	write(*,*) ixvi, mx2i
        END

6. A loop like "DO 10 i = 1, 1, -1" no longer has its range omitted.

7. ASSIGNed FORMAT labels work.

8. New flags -b and -B are now available: -b warns when the above bug
   fixes affect generated objects; -B causes f77 to revert to the
   previous buggy behavior.  These are meant as debugging aids ("Why
   am I now getting different answers?") and as portability aids --
   some compilers derived from f77 retain some of the above bugs.

9. The default maximum number of statement labels is now larger, so
   it should less often be necessary to rerun f77 specifying -Ns402 .

10. Statement functions among executable statements are now always
    disallowed.  Previously, if there were DATA statements, then
    an unintended "extension" allowed statement function definitions
    to appear among the executables.  (Statement function definitions
    may appear among DATA statements, but not after the first
    executable statement.)

Please send further bug reports to dmg.