[comp.sys.sgi] Trouble with DATA statement

mccalpin@masig3.ocean.fsu.edu (John D. McCalpin) (08/14/89)

The following code section does not compile on the Personal IRIS.
It appears to be standard FORTRAN --- it comes from TOOLPACK,
which is supposed to be very standard.  It compiles just fine on the
IRIS 3000 and on both Sun 3 and Sun 4's.

The compiler error message is not helpful:
	Syntax error on line 15 ---- (This line contains the DATA statement)

Replacing the 'F' and 'T' variables with .FALSE. and .TRUE. does not
help, leading me to believe that the implied DO-loops are causing the
trouble....
----------------------------------------------------------------------------
        SUBROUTINE CIITEM(NODE,OCCURS,STYPE,STATUS,INTFIL)
        INTEGER MAXL,NCII,CIIFIL,CIIERR
        PARAMETER (MAXL=11,NCII=21,CIIFIL=7,CIIERR=5)
 
        LOGICAL T,F
        PARAMETER (T=.TRUE.,F=.FALSE.)
 
        INTEGER PTR,TEXT(134),CIINUM,TYPCHK,CIITYP(NCII),I,
     +          NTYPE,DTYPE,SYMBOL(8),SSTYPE(132)
        LOGICAL CIIAST(NCII),CIIVAR(NCII),CIISTY(8,NCII)
        CHARACTER*(MAXL) CIINAM,CIILST(NCII)
 
        SAVE CIILST,CIITYP,CIIAST,CIIVAR,CIISTY,SSTYPE
 
        DATA (CIILST(I),CIIAST(I),CIITYP(I),CIIVAR(I),
     +        (CIISTY(J,I),J=1,8),I=19,NCII)/
     +'STATUS',F,6,F,F,F,T,T,F,F,F,F,
     +'UNFORMATTED',F,6,T,F,F,F,F,T,F,F,F,
     +'UNIT',T,0,F,T,T,T,T,T,T,T,T/
 
        END
----------------------------------------------------------------------------
--
John D. McCalpin - mccalpin@masig1.ocean.fsu.edu - mccalpin@nu.cs.fsu.edu
		   mccalpin@delocn.udel.edu

calvin@dinkum.wpd.sgi.com (Calvin H. Vu) (08/16/89)

In article <MCCALPIN.89Aug14071609@masig3.ocean.fsu.edu>, mccalpin@masig3.ocean.fsu.edu (John D. McCalpin) writes:
> The following code section does not compile on the Personal IRIS.
> Replacing the 'F' and 'T' variables with .FALSE. and .TRUE. does not
> help, leading me to believe that the implied DO-loops are causing the
> trouble....
> ----------------------------------------------------------------------------
>         SUBROUTINE CIITEM(NODE,OCCURS,STYPE,STATUS,INTFIL)
>         INTEGER MAXL,NCII,CIIFIL,CIIERR
>         PARAMETER (MAXL=11,NCII=21,CIIFIL=7,CIIERR=5)
>  
>         LOGICAL T,F
>         PARAMETER (T=.TRUE.,F=.FALSE.)
>  
>         INTEGER PTR,TEXT(134),CIINUM,TYPCHK,CIITYP(NCII),I,
>      +          NTYPE,DTYPE,SYMBOL(8),SSTYPE(132)
>         LOGICAL CIIAST(NCII),CIIVAR(NCII),CIISTY(8,NCII)
>         CHARACTER*(MAXL) CIINAM,CIILST(NCII)
>  
>         SAVE CIILST,CIITYP,CIIAST,CIIVAR,CIISTY,SSTYPE
>  
>         DATA (CIILST(I),CIIAST(I),CIITYP(I),CIIVAR(I),
>      +        (CIISTY(J,I),J=1,8),I=19,NCII)/
>      +'STATUS',F,6,F,F,F,T,T,F,F,F,F,
>      +'UNFORMATTED',F,6,T,F,F,F,F,T,F,F,F,
>      +'UNIT',T,0,F,T,T,T,T,T,T,T,T/
>  
>         END
	The problem is in the nested implied do loop.   We fixed this bug
	as early as May last year and sent the fix to MIPS.    Unfortunately, 
	when integrating MIPS 1.31 release, I opted for MIPS's own fix to this
	problem (for source compatibility) which, I found out later, only
	worked if the nested implied do loop is at the beginning of the
	implied do loop list, and not if it follows other items in the list.
	In other words, your DATA statement will compile correctly if
	CIISTY is at the beginning of the list (or stand alone in a separate
	DATA statement).   Oh well, you know the workaround then :-).
	Anyway, this has been fixed in our 3.2 release which will be coming
	out soon, I hope.
> ----------------------------------------------------------------------------
> --
> John D. McCalpin - mccalpin@masig1.ocean.fsu.edu - mccalpin@nu.cs.fsu.edu
> 		   mccalpin@delocn.udel.edu

 Calvin Vu