Thread View: net.lang.f77
5 messages
5 total messages
Started by Stephen Kenkel
Tue, 24 Jun 1986 16:23
possible implied-do bug?
Author: Stephen Kenkel
Date: Tue, 24 Jun 1986 16:23
Date: Tue, 24 Jun 1986 16:23
18 lines
979 bytes
979 bytes
The following program compiles under VMS fortran, but not
f77:
dimension l(10),m(10),n(10)
write (*, * ) i,((l(k), m(k), n (k)), k=1,10)
end
This version works:
dimension l(10),m(10),n(10)
write (*, * ) i,(l(k), m(k), n (k), k=1,10)
end
The extra parenthesis around the items in the implied do list
appears to be causing trouble. Is this a bug, or is the compiler
in compliance with the standard?
Thanks.
Re: possible implied-do bug?
Author: Andrew Koenig
Date: Wed, 25 Jun 1986 12:46
Date: Wed, 25 Jun 1986 12:46
28 lines
1320 bytes
1320 bytes
> The following program compiles under VMS fortran, but not > f77: > > dimension l(10),m(10),n(10) > write (*, * ) i,((l(k), m(k), n (k)), k=1,10) > end > > This version works: > > dimension l(10),m(10),n(10) > write (*, * ) i,(l(k), m(k), n (k), k=1,10) > end > > The extra parenthesis around the items in the implied do list > appears to be causing trouble. Is this a bug, or is the compiler > in compliance with the standard? > > Thanks. The compiler is in compliance with the standard. The list of expressions in an implied DO must not be parenthesized. Otherwise there would be an ambiguity: write (*,*) ((3.0,4.0), k = 1, n) Does this print ten alternating repetitions of 3.0 and 4.0, or is (3.0,4.0) a complex constant?
Re: possible implied-do bug?
Author: Steve Dever
Date: Wed, 25 Jun 1986 20:05
Date: Wed, 25 Jun 1986 20:05
22 lines
1302 bytes
1302 bytes
In article <1452@alvin.mcnc.UUCP> kenkel@mcnc.UUCP (Stephen Kenkel) writes:
>The following program compiles under VMS fortran, but not
>f77:
>
> dimension l(10),m(10),n(10)
> write (*, * ) i,((l(k), m(k), n (k)), k=1,10)
> end
>
The ANSI FORTRAN standard (section 12.8.2.3) states that an implied DO list
has the form:
(dlist, i = e1, e2 [, e3])
where dlist is an input/output list.
The standard does not allow an extra set of parentheses around
an I/O list in a READ or WRITE statement so the compiler is correct in not
accepting them. This was allowed in the FORTRAN-66 standard but was removed
to eliminate the syntactic conflict with complex constants in a list-directed
output list.
Steve Dever (sun!steved)
Re: possible implied-do bug?
Author: steve
Date: Thu, 26 Jun 1986 17:27
Date: Thu, 26 Jun 1986 17:27
83 lines
3695 bytes
3695 bytes
In article <1452@alvin.mcnc.UUCP>, kenkel@mcnc.UUCP (Stephen Kenkel) writes: > The following program compiles under VMS fortran, but not f77: > > dimension l(10),m(10),n(10) > write (*, * ) i,((l(k), m(k), n (k)), k=1,10) > end > > This version works: > > dimension l(10),m(10),n(10) > write (*, * ) i,(l(k), m(k), n (k), k=1,10) > end > > The extra parenthesis around the items in the implied do list > appears to be causing trouble. Is this a bug, or is the compiler > in compliance with the standard? It looks like f77 is complying with the standard and VMS Fortran has relaxed the requirements. Quoting from the ANSI standard: 12.8.2.3 Implied-DO List. An implied-DO list if of the form: ( dlist, i = e1, e2 [,e3] ) where: i, e1, e2, and e3 are as specified for the DO statement (11.10) dlist is an input/output list ....... 12.8.2 Input/Ouput List. ..... An input/output list is a list (2.10) of input/output list items and implied-DO lists (12.8.2.3). An input/output list item is either an input list item or an output list item. ..... 12.8.2.2 Output list items. An output list item must be one of the following: (1) A variable name (2) An array element name (3) A character substring name (4) An array name (5) Any other expression except a character expression involving concatenation of an operand whose length specification is an asterisk in parentheses unless the operand is the symbolic name of a constant. Note that a constant, an expression involving operators or function references, or an expression enclosed in parentheses may appear as an output list item but must not appear as an input list item. 2.10 List A list is a nonempty sequence (2.1) of syntactic entities seperated by commas. The entities in the list are called list items. Essentially, the stuff after the ( in an implied-DO list before the indexing information must be a valid I/O list. The only time parentheses are allowed in an I/O list is surrounding an expression or surrounding an implied-DO list. A sequence of things seperated by commas is certainly not a valid Fortran expression. Since there is no loop index information given, it is not a valid implied-DO list either. Therefore it is not a valid I/O list item. Editorial remark: It has been my experience that VMS Fortran is *very* liberal in what it will accept as valid Fortran. If you care at all about being portable, get a copy of the ANSI standard and throw away your vendor's manuals. The other recommendation I would make is to always use the /STANDARD qualifier when you compile on a VAX. This should flag most of the non-standard extensions you are using. I don't know how picky this is on a VAX since all of my developement work is done on a Ridge but it should help. -- ...smeagol\ Steve Schlaifer ......wlbr->!jplgodo!steve Advance Projects Group, Jet Propulsion Labs ....logico/ 4800 Oak Grove Drive, M/S 156/204 Pasadena, California, 91109 +1 818 354 3171
Re: possible implied-do bug?
Author: Cathy
Date: Mon, 30 Jun 1986 22:48
Date: Mon, 30 Jun 1986 22:48
46 lines
1708 bytes
1708 bytes
In article <1452@alvin.mcnc.UUCP> kenkel@mcnc.UUCP writes:
>The following program compiles under VMS fortran, but not
>f77:
>
> dimension l(10),m(10),n(10)
> write (*, * ) i,((l(k), m(k), n (k)), k=1,10)
> end
>
>This version works:
>
...
>
>The extra parenthesis around the items in the implied do list
>appears to be causing trouble. Is this a bug, or is the compiler
>in compliance with the standard?
>
The compiler seems to agree with the standard. The syntax is:
io_implied_do_list
: "(" io_list "," id "=" exp "," exp [ "," exp ] ")"
;
io_list
: io_entity ( "," io_entity )*
;
io_entity
: array_variable
| io_implied_do_list
;
The extra bracket would imply an internal io_implied_do_list.
Best wishes,
Cathy
--
- Marxist unite!
- Leaders unite!
- Bad-spellers of the of the world untie!
UUCP: ...!seismo!mcvax!ukc!dcl-cs!cathy
DARPA: cathy%lancs.comp@ucl-cs | Post: University of Lancaster,
JANET: cathy@uk.ac.lancs.comp | Department of Computing,
Phone: +44 524 65201 ext ???? | Bailrigg, Lancaster, LA1 4YR, UK.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads