\documentclass[nocolor,memo]{j3}
\renewcommand{\hdate}{12 May 2006}
\renewcommand{\vers}{J3/06-154r4}
\usepackage{lineno}
\usepackage{longtable}
\usepackage{xr}
\externaldocument{007}
\input pdftest
\begin{document}
\vspace{-10pt}
\begin{tabbing}
Subject: \hspace*{0.25in}\=Integrating left-hand functions\\
From: \>Van Snyder\\
References: \>UK-007, UK-008\\
\end{tabbing}
\pagewiselinenumbers
\leftlinenumbers
\linenumbers*
\section{Introduction}
UK-007 allows a pointer function as an actual argument that corresponds to
a dummy argument that does not have INTENT(IN); the actual argument is the
result's target. UK-008 allows a pointer function as the left-hand side
of an intrinsic assignment; the value is assigned to the result's target.
Conspicuously absent are several remaining cases of variable definition
contexts (\ref{D16:Variable definition context}) [\pageref{D16:Variable
definition context}:29ff]
\section{Specification}
Allow a pointer function reference everywhere a variable other than a
named variable is allowed. In all cases, the variable is the target of
the function's result.
This paper proposes to change the fundamental definition of \si{variable}
to include the ``lvalue'' case. Cases where ``lvalue'' is not allowed
are (almost) already covered by using ``named variable''.
\section{Syntax}
No new syntax is required, although new syntax rules are needed and some
syntax rules require change.
\edits{04-007}
\sep\mgpar{xiii}[Editor: Invent some blather about \si{variable} having
more meanings.]
\sep\mgpar{67:18-19}[The \si{do-variable} is exactly what's needed here --
constraints and all.]
\bnfi{ac-do-variable}{\si{do-variable}}
\sep\mgpar{87:34}[The \si{do-variable} is exactly what's needed here --
constraints and all.]
\bnfi{data-i-do-variable}{\si{do-variable}}
\sep\mgpar{88:4}[Editor: Delete because \si{do-variable} is exactly what's
needed here -- constraints and all.]
\sep\mgpar{103:6+}\bnfo{\si{expr}}
\sep\mgpar{103:7+}\dcons[C601$\frac12$]{(\snref{variable}) The \si{expr}
shall be a reference to a function that has a pointer result.}
A variable is either the data object denoted by \si{designator} or the
target of \si{expr}.
\sep\mgpar{165:16}[Editor: Replace the RHS of \sref{do-variable} with
``\si{scalar-int-variable-name}'' since we really want to strip everything
else off.]
\sep\mgpar{165:17}[Editor: Delete ``named scalar''.]
\sep\mgpar{424:4+}[Editor: Add a new paragraph:]
If a reference to a function appears in a variable-definition context the
result of the function reference shall be a pointer that is associated
with a definable target. That target is the variable that becomes defined
or undefined.
\section{Integration with 014}
\sep\mgpar{138:12-13, 15+}Delete the edits for these two places introduced
by 05-278r2 (but maybe keep the revision of C715, revised to refer to
R734, for aesthetic reasons).
\sep\mgpar{183:32+}[In the edit introduced by 06-138r2, replace the first
``\si{scalar-int-variable}'' by ``variable'' and the second by ``the
variable'', since it's the variable, not the syntax term, that gets a
value (probably need this anyway).]
\sep
In 06-014r0, delete "assigned" before "variable" from edits for the
following places:
[116:12] [138:15+] [138:18] [138:18] [138:19-139:1] [139:1] [139:2+1-6]
[139:2+8-11] [139:3-] [138:3-12 s/b 139:3-12] [139:21] [139:22-23]
[139:23] [140:1] [140:2-3] [140:4-5] [141:1-3] [141:3+2-5] [141:4-5]
[141:6-11] [141:12-13] [141:14-23] [142:0+6] [142:1-2] [142:27-30]
[146:30] [147:19, 23] [148:5] [286:31]
In 06-014r0, delete edits for the following places: [420:11-13]
[423:28+2-3], or at least delete "assigned" before "variable"
In 06-014r0, delete edit for [425:26+]
\section{Editorial suggestions}
We probably need this stuff anyway, so we might as well say it here to
avoid forgetting it.
\sep\mgpar{161:23+}[Editor: Add a new third paragraph in
\ref{D8:Attributes of associate names}:]
If the selector is a pointer it shall be associated with a target; the
target is associated with the associating entity.
\sep\mgpar{189:21}[Editor: Insert ``nonpointer'' before ``variable''.]
\sep\mgpar{189:26+ New \P}If a pointer appears in the contexts specified
above for a nonpointer variable, the pointer shall be associated with a
target that has the ASYNCHRONOUS attribute.
\sep\mgpar{211:21-216:12}[Editor: Replace
``\si{scalar-default-char-variable}'', ``\si{scalar-int-variable}'' and
``\si{scalar-default-logical-vari\-ab\-le}'' by ``variable''
throughout 9.9.1.2 through 9.9.1.32, since it's the variable, not the
syntax term, that gets a value.]
\sep\mgpar{216:25}[Editor: Replace ``\si{scalar-int-variable}'' by
``variable'', since it's the variable, not the syntax term, that
gets a value.]
\sep\mgpar{217:17}[Editor: Replace ``\si{scalar-int-variable}'' by
``variable'', since it's the variable, not the syntax term, that
gets a value.]
\sep\mgpar{217:19}[Editor: Replace ``\si{iomsg-variable}'' by ``variable
in the IOMSG= specifier'', since it's the variable, not the syntax term,
that gets a value.]
\sep\mgpar{217:20-21}[Editor: Replace ``\si{scalar-int-variable}'' by
``variable'', since it's the variable, not the syntax term, that
gets a value.]
\sep\mgpar{217:40}[Editor: Replace ``\si{scalar-int-variable}'' by
``variable'', since it's the variable, not the syntax term, that
gets a value.]
\sep\mgpar{217:42}[Editor: Replace ``\si{iomsg-variable}'' by ``variable
in the IOMSG= specifier'', since it's the variable, not the syntax term,
that gets a value.]
\sep\mgpar{218:14}[Editor: Replace ``\si{scalar-int-variable}'' by
``variable'', since it's the variable, not the syntax term, that
gets a value.]
\sep\mgpar{218:16}[Editor: Replace ``\si{iomsg-variable}'' by ``variable
in the IOMSG= specifier'', since it's the variable, not the syntax term,
that gets a value.]
\sep\mgpar{218:17}[Editor: Replace ``\si{scalar-int-variable}'' by
``variable'', since it's the variable, not the syntax term, that
gets a value.]
\sep\mgpar{423:41}[Editor: Replace ``An \dots or'' by ``a
\si{scalar-int-variable} in an IOSTAT= or SIZE= specifier, or an
\si{iomsg-variable} in an''.]
\sep\mgpar{423:42}[Editor: Replace ``definable variable'' by ``variable''
(or ``\si{scalar-default-char-variable}, \si{scalar-int-variable}, or
\si{scalar-default-logical-variable}''?).]
\label{lastpage}
\end{document}