Node: Sensible Non-standard Constructs, Next: READONLY Keyword, Previous: POINTER Statements, Up: Missing Features
g77
rejects things other compilers accept,
like INTRINSIC SQRT,SQRT
.
As time permits in the future, some of these things that are easy for
humans to read and write and unlikely to be intended to mean something
else will be accepted by g77
(though -fpedantic
should
trigger warnings about such non-standard constructs).
Until g77
no longer gratuitously rejects sensible code,
you might as well fix your code
to be more standard-conforming and portable.
The kind of case that is important to except from the recommendation to change your code is one where following good coding rules would force you to write non-standard code that nevertheless has a clear meaning.
For example, when writing an INCLUDE
file that
defines a common block, it might be appropriate to
include a SAVE
statement for the common block
(such as SAVE /CBLOCK/
), so that variables
defined in the common block retain their values even
when all procedures declaring the common block become
inactive (return to their callers).
However, putting SAVE
statements in an INCLUDE
file would prevent otherwise standard-conforming code
from also specifying the SAVE
statement, by itself,
to indicate that all local variables and arrays are to
have the SAVE
attribute.
For this reason, g77
already has been changed to
allow this combination, because although the general
problem of gratuitously rejecting unambiguous and
"safe" constructs still exists in g77
, this
particular construct was deemed useful enough that
it was worth fixing g77
for just this case.
So, while there is no need to change your code
to avoid using this particular construct, there
might be other, equally appropriate but non-standard
constructs, that you shouldn't have to stop using
just because g77
(or any other compiler)
gratuitously rejects it.
Until the general problem is solved, if you have
any such construct you believe is worthwhile
using (e.g. not just an arbitrary, redundant
specification of an attribute), please submit a
bug report with an explanation, so we can consider
fixing g77
just for cases like yours.