J3/01-305
Date: 6 August 2001
To: J3
From: WG5 Members
Subject: Interp 6 (Character length specification of a function result)
WG5 members in London considered Interp 6 and recommend as
follows. The HISTORY mentions the action recommended by WG5.
----------------------------------------------------------------------
NUMBER: 000006
TITLE: Character length specification of a function result
KEYWORDS: character, function result
DEFECT TYPE: Interpretation
STATUS: J3 consideration in progress
QUESTION:
Consider the following program:
PROGRAM main
CHARACTER(8) arg, func
EXTERNAL func
CALL sub(arg, func)
END PROGRAM
SUBROUTINE sub(arg, func)
CHARACTER(*) arg, func
CHARACTER(8) str
str = func(arg)
...
END SUBROUTINE
CHARACTER(8) FUNCTION func(arg)
CHARACTER(*) arg
...
END FUNCTION
Some implementations error the reference to FUNC in subroutine SUB and some
do
not. The implementations that do not error the reference to FUNC use
essentially the following as the argument for allowing the reference:
The rules for when an asterisk can be used to specify character length are
specified on in section 5.1.1.5 (middle of page 51 of the Fortran 95
standard).
* The first rule states that an asterisk may be used to declare a dummy
argument of a procedure. It is clear that FUNC is a dummy argument of
SUB.
* The third rule says that in an external function, the length of the
result may be specified within the function itself with an asterisk
but
if the result length is so specified, any invoker of the function must
specify the character length of the function result as something other
than an asterisk. But the function that is being invoked in the above
example does not declare its result length using the asterisk, so this
rule does not apply.
Is the above sample program a standard conforming program with respect to
the
concept of declaring the function result length in the invoking program as
an
asterisk?
ANSWER: Yes. When item (1) on page 51 is applied to the argument func of
sub,
it tells us that its length is 8 for the call from the main program.
EDITS: None
SUBMITTED BY: Larry Rolison
HISTORY: J3/97-242 m143 submitted
WG5-N1456 Draft answer