\documentclass[nocolor,memo]{j3}
\renewcommand{\hdate}{13 November 2003}
\renewcommand{\vers}{J3/03-267r1}
\usepackage{lineno}
\usepackage{longtable}
\usepackage{xr}
\externaldocument{007}
\ifx\pdfoutput\undefined
\usepackage[hypertex,plainpages,hyperindex=true]{hyperref}
\hypersetup{%
hypertexnames=false%
}
% Specify the driver for the color package, which package is included
% by the J3 document class using a RequirePackage command.
\ExecuteOptions{dvips}
%\ExecuteOptions{xdvi}
\else
\pdfoutput=1
\usepackage[pdftex,plainpages,hyperindex=true,pdfpagelabels]{hyperref}
\hypersetup{%
hypertexnames=false,%
colorlinks=true,%
linktocpage=true,%
}
% Specify the driver for the color package, which package is included
% by the J3 document class using a RequirePackage command.
\ExecuteOptions{pdftex}
\fi
\begin{document}
\vspace{-10pt}
\begin{tabbing}
Subject: \hspace*{0.25in}\=SAME\_TYPE\_AS is inconsistent with SELECT
TYPE\\
From: \>Van Snyder\\
\end{tabbing}
\pagewiselinenumbers
\leftlinenumbers
\linenumbers*
\mgpar{\addbar{1}}The disposition of edits in this paper is in 03-270.
\section{The problems}
A \si{type-spec} in a \si{type-guard-stmt} in a SELECT TYPE construct is
allowed to be of an intrinsic type, but neither argument of the
SAME\_TYPE\_AS intrinsic procedure is allowed to be of intrinsic type.
This is inconsistent.
The description of the effect of the CLASS IS statement doesn't work if
the \si{type-spec} specifies an intrinsic type, because the term ``is an
extension type of'' doesn't apply to intrinsic types. The MOLD argument
of the EXTENDS\_TYPE\_OF intrinsic procedure isn't allowed to be of
intrinsic type, so this is OK.
An obscure point relevant to the SAME\_TYPE\_AS intrinsic procedure would
benefit from clarification.
\section{The solutions}
Allow either argument of the SAME\_TYPE\_AS intrinsic procedure to be of
intrinsic type.
Add a sentence to Note 13.17.
Prohibit the \si{type-spec} in a CLASS IS \si{type-guard-stmt} from
specifying an intrinsic type.
\edits{03-007r2}
\sep\mgpar{162:20+}\dcons[C815$\frac12$]{(\snref{type-guard-stmt}) The
\si{type-spec} in a CLASS IS \si{type-guard-stmt} shall not specify an
intrinsic type.}
\sep\mgpar{347:30, 348:1}[Editor: Insert ``intrinsic or'' before
``extensible'' twice.]
\sep\mgpar{348:4+2}[Editor: Add a sentence in Note 13.17 ``An unlimited
polymorphic object has no declared type; therefore, if either A or B is
an unlimimited polymorphic object that is a disassociated pointer or an
unallocated allocatable, the result is false.'']
\section{Malcolm has proposed...}
Malcolm has proposed that neither the EXTENDS\_TYPE\_OF nor the
SAME\_TYPE\_AS intrinsic procedure are useful because they provide the
same functionality as the SELECT TYPE constuct; they could therefore be
deleted without loss. They don't provide quite the same functionality,
however: The intrinsics test the relation between objects, while the
construct tests the relation between an object and a \si{type-spec}. The
functionality of the intrinsics is actually impossible to get by using
the construct. The functionality of EXTENDS\_TYPE\_OF is probably not
very useful, but the functionality of SAME\_TYPE\_AS probably is useful,
for example to inquire whether two dummy arguments have the same dynamic
type~--- most likely to produce error messages. Therefore, it's probably
OK to delete EXTENDS\_TYPE\_OF but not SAME\_TYPE\_AS.
\sep\mgpar{296:15}[Editor: Delete.]
\sep\mgpar{316:11-22+2}[Editor: Delete (including Note 13.9).]
On the other hand, EXTENDS\_TYPE\_OF doesn't add much complexity to the
standard.
\label{lastpage}
\end{document}