[comp.lang.misc] Parallel FORTRAN bite

pardo@june.cs.washington.edu (David Keppel) (05/31/90)

One of my friends was trying to write a program to run on a Connection
Machine.  He used the construct

	DOALL I = 1, N

and the program RAN, but it gave wrong answers.  He eventually
discovered that CM FORTRAN doesn't have the DOALL extension, and that
the compiler was dutifully converting his code to

	DO ALLI = 1, N

Thank god he wasn't writing code for the Range Safety Officer on the
next shuttle launch!

	;-D on  ( DAIIC: Do As If I'm Crazy )  Pardo
-- 
		    pardo@cs.washington.edu
    {rutgers,cornell,ucsd,ubc-cs,tektronix}!uw-beaver!june!pardo
-- 
Send compilers articles to compilers@esegue.segue.boston.ma.us
{spdcc | ima | lotus}!esegue.  Meta-mail to compilers-request@esegue.
Please send responses to the author of the message, not the poster.

sampson@cod.nosc.mil (Charles H. Sampson) (06/12/90)

In article <1990May31.161025.3138@esegue.segue.boston.ma.us> pardo@june.cs.washington.edu (David Keppel) writes:
>	DOALL I = 1, N
> [appeared to the Connection Machine compiler to be]
>	DO ALLI = 1, N

     Just to clarify a "fine" point, in ANSI FORTRAN '77, the construct

                             DOALLI=1,N

(spaces are null in FORTRAN) is defined to mean

                           DO ALLI = 1, N

(spaces are still null, but I hope my meaning is clear).  Therefore, the
so-called DOALL extension has changed the semantics of standard FORTRAN,
rather than extending the language.  The shuttle people might have a right
to be peeved, but they shouldn't direct their displeasure at the CM FORTRAN
implementors.

[I agree, adding ambiguous syntax that can change the meaning of an existing
legal program is not good language design.  The entire issue of parallel
extensions to Fortran and to C is a hot topic -- I get lots of interesting
mailings from the Numerical C Extensions Group. -John]
[From sampson@cod.nosc.mil (Charles H. Sampson)]
-- 
Send compilers articles to compilers@esegue.segue.boston.ma.us
{spdcc | ima | lotus| world}!esegue.  Meta-mail to compilers-request@esegue.

hirchert@ux1.cso.uiuc.edu (Kurt Hirchert) (06/12/90)

In article <1990Jun11.191754.2691@esegue.segue.boston.ma.us> sampson@cod.nosc.mil (Charles H. Sampson) writes:
>
>In article <1990May31.161025.3138@esegue.segue.boston.ma.us> pardo@june.cs.washington.edu (David Keppel) writes:
>>	DOALL I = 1, N
>> [appeared to the Connection Machine compiler to be]
>>	DO ALLI = 1, N
>
>     Just to clarify a "fine" point, in ANSI FORTRAN '77, the construct
>
>                             DOALLI=1,N
>
>(spaces are null in FORTRAN) is defined to mean
>
>                           DO ALLI = 1, N
>
>(spaces are still null, but I hope my meaning is clear).  Therefore, the
>so-called DOALL extension has changed the semantics of standard FORTRAN, ...

To clarify the clarification, there is no statement

                           DO ALLI = 1, N

in FORTRAN 77.  All DO statements in FORTRAN 77 have a statement label, e.g.,

                           DO 10 ALLI = 1, N

The form without a statement label is an extension.  I believe the most common
definition of this extension is in Mil. Std. 1753.  The form without a
statement label is also contained in the proposed Fortran 90.
-- 
Kurt W. Hirchert     hirchert@ncsa.uiuc.edu
National Center for Supercomputing Applications
[Oops, you're right. -John]
-- 
Send compilers articles to compilers@esegue.segue.boston.ma.us
{spdcc | ima | lotus| world}!esegue.  Meta-mail to compilers-request@esegue.