VMS Help
FORTRAN, /DESIGN
*Conan The Librarian (sorry for the slow response - running on an old VAX)
|
|
/[NO]DESIGN[=(option[,...])] D=/NODESIGN
Controls whether the compiler analyzes the source code for program
design information in comment text and Language Sensitive Editor
(LSE) placeholders.
If you omit the /DESIGN qualifier entirely, the default is
/DESIGN=(NOCOMMENTS,NOPLACEHOLDERS) (equivalent to /DESIGN=NONE or
/NODESIGN). However, if you specify /DESIGN without any options,
the default is /DESIGN (COMMENTS,PLACEHOLDERS) (equivalent to
/DESIGN=ALL).
In addition, if /ANALYSIS_DATA is also specified, information about
design information in comments and placeholders is added to the
analysis data file.
Controls whether the compiler analyzes the text of each comment
(either a full-line or end-of-line comment) for program design
information. Comment text is scanned for tags that are defined in
the current DEC Language Sensitive Editor environment file.
Certain tags are predefined by LSE; however, you can add, change,
or remove tags as desired. See the DEC Language Sensitive Editor
documentation for details.
If you also specify the /ANALYSIS_DATA qualifier, the SCA analysis
data file includes information about tags found, text of tagged and
untagged comments, and their locations in the source file. You can
then use SCA and LSE commands to retrieve the design information.
At compile time, the compiler reports any errors detected by
comment analysis routines. If LSE and SCA are not installed or if
a severe error is reported by the comment analysis routines, the
compilation is aborted.
Groups of full-line comments are identified by the compiler as
"comment blocks", including lines that consist of whitespace
followed by a "!" comment introducer. Differences in indentation
of full-line comments are ignored for the purposes of grouping
comments into blocks. A comment block ends when a completely blank
line or a line which is not a full-line comment is detected.
End-of-line comments, where non-blank text is followed by a "!"
comment introducer, are treated as self-contained comment blocks.
Comments from source that is included with the INCLUDE or
DICTIONARY statements are also analyzed for design information.
The end of an INCLUDE module or DICTIONARY definition, by itself,
does not end a comment block.
Comments beginning with a "D" or "d" in column 1 are not examined
for program design information.
Controls whether the compiler accepts DEC Language-Sensitive Editor
placeholders (in well-defined contexts) as valid program syntax.
Compaq Fortran 77 recognizes five types of placeholders defined by LSE:
{required-placeholder}
{required-list-placeholder}...
[optional-placeholder]
[optional-list-placeholder]...
«pseudocode-placeholder»
An alternative syntax which uses 7-bit ASCII character set
delimiters for a pseudocode placeholder is also accepted by Compaq
Fortran 77:
<<pseudocode-placeholder>>
There is no list form of pseudocode placeholder.
A placeholder must be terminated before the end of the line, and
the closing delimiter must correspond to the opening delimiter.
For example, the following placeholder is invalid:
[invalid-delimiter}
Any text can appear inside a delimiter except for the closing
delimiter. There is no ability to "quote" a closing delimiter in
order to allow its inclusion as text. Nesting of delimiters is not
supported.
If you also specify the /ANALYSIS_DATA qualifier, information about
placeholders and their use is included in the SCA analysis data
file.
If placeholder analysis is performed on a compilation unit that
contains placeholders in valid contexts, the compiler does not
generate an object file. An object file is generated, however, if
no placeholders are found in the compilation unit undergoing
placeholder analysis.
If LSE placeholders are present in the source file and you do not
specify the /DESIGN=PLACEHOLDER qualifier, the compiler treats the
placeholders as invalid syntax and generates an error message.
Allowed Contexts for Placeholders:
A placeholder can be used to replace either an entire Fortran
statement or a part of a statement. As a replacement for an entire
statement, there are no restrictions on where a placeholder can
appear. Otherwise, as a replacement for a portion of a statement,
a placeholder is generally treated as an undeclared identifier
whose implicit type is INTEGER. This implicit typing is unaffected
by the IMPLICIT or IMPLICIT NONE statements, but is affected by the
/[NO]I4 command qualifier or the OPTIONS statement qualifier.
Each occurrence of a placeholder is considered as a unique instance
and is unaffected by earlier uses of a syntactically identical
placeholder. For example, in the following code sequence, each
occurrence of "[abc]" is considered to be a never-before-seen
identifier:
INTEGER [abc]
REAL [abc]
The implicit typing of placeholders as INTEGER allows them to be
used in most reasonable contexts, but if they are used in contexts
where an integer identifier would not be allowed, semantic error
messages are generated. For example, the following statement is
invalid because of the type mismatch:
CHAR__VAR = CHAR__VAR // [placeholder]
Like any other undeclared variable, placeholders are considered
scalars and cannot be used in a context that requires the variable
to be declared as an array.
Given the above restrictions, placeholders can appear in the
following contexts:
o As a variable name in a type specification, AUTOMATIC, COMMON,
DATA, DIMENSION, EQUIVALENCE, POINTER, RECORD, SAVE, STATIC, or
VOLATILE statement, and CPAR$ CONTEXT_SHARED or CPAR$ PRIVATE
directives.
o As the symbolic name in an EXTERNAL or PARAMETER statement.
o As an integer expression.
o As the target of an assignment statement.
o As the name of subroutine in a CALL statement.
o As the name of a function in a function reference.
o As an integer variable in an ASSIGN or assigned GOTO statement.
o As the control variable in a DO statement or implied DO list in
an I/O statement.
o As the lock variable in a CPAR$ LOCKON or CPAR$ LOCKOFF
directive (the placeholder is treated as LOGICAL*4 in these
contexts only).
o As an integer variable in an I/O statement other than the unit
or format specifier.
Placeholders are not allowed in the following contexts:
o As the symbolic name in a BLOCK DATA, ENTRY, FUNCTION,
INTRINSIC, PROCEDURE, or PROGRAM statement.
o As formal (dummy) argument names in an ENTRY, FUNCTION, or
PROCEDURE statement.
o As the name of a common block.
o As a structure name.
o In a NAMELIST statement, either as the group name or as one of
the variables to be included in the group.
o As the unit or format specifier in an I/O statement.
Same interpretation as (COMMENTS,PLACEHOLDERS).
Same interpretation as (NOCOMMENTS,NOPLACEHOLDERS).
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.