CVS difference for ai22s/ai22-0024-1.html
--- ai22s/ai22-0024-1.html 2022/09/03 05:35:45 1.1
+++ ai22s/ai22-0024-1.html 2022/09/10 09:05:14 1.2
@@ -1,11 +1,17 @@
-<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0024-1/02</title>
+<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><title>AI22-0024-1/03</title>
<style type="text/css">
table td,table th{padding:0}
-.c25{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-c
olor:#f0f0f0;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}
-.c20{border-spacing:0;border-collapse:collapse;margin-right:auto}
-.c14{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}
-.c28{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
-.c3{color:inherit;text-decoration:inherit}
+.c24{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-c
olor:#f0f0f0;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}
+.c2{background-color:#f0f0f0;font-family:"Consolas";color:#444444;font-weight:400}
+.c29{border-spacing:0;border-collapse:collapse;margin-right:auto}
+.c17{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}
+.c10{background-color:#f0f0f0;font-family:"Consolas";color:#888888;font-weight:400}
+.c5{background-color:#f0f0f0;font-family:"Consolas";color:#444444;font-weight:700}
+.c1{background-color:#f0f0f0;font-family:"Consolas";color:#880000;font-weight:400}
+.c9{background-color:#f0f0f0;font-family:"Consolas";color:#880000;font-weight:700}
+.c30{background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt}
+.c4{color:inherit;text-decoration:inherit}
+.c20{border:1px solid black;margin:5px}
.c18{height:0pt}
P.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:14pt; padding-bottom:0pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:
400; text-decoration:none; vertical-align:baseline; font-style:normal}
H2.head{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:12pt; color:#000000; font-size:14pt; padding-bottom:6pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; tex
t-align:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
@@ -22,14 +28,18 @@
P.time{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0; padding-top:0pt; color:#000000; font-size:9pt; padding-bottom:9pt; font-family:"Arial","Liberation Sans",sans-serif; line-height:1.15; orphans:2; widows:2; text-align:left; font-weight:4
00; text-decoration:none; vertical-align:baseline; font-style:italic}
SPAN.name{font-family:"Lucida Calligraphy",cursive; font-style:normal}
SPAN.ins{color:#005500}
-P.a4{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; orphans:2; widows:2; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; text-align
:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
-SPAN.a29{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline}
+P.a4{margin-bottom:0; margin-top:0; margin-left:0; margin-right:0;color:#000000;font-size:26pt;font-family:"Arial","Liberation Sans",sans-serif; padding-top:0pt; padding-bottom:3pt; line-height:1.15; page-break-after:avoid; orphans:2; widows:2; text-align
:left; font-weight:400; text-decoration:none; vertical-align:baseline; font-style:normal}
+SPAN.a15{background-color:#f0f0f0; font-family:"Consolas"; color:#888888; font-weight:400; text-decoration:none; vertical-align:baseline; font-size:11pt; font-style:normal}
+SPAN.a16{background-color:#f0f0f0; font-family:"Consolas"; color:#888888; font-weight:400; font-style:italic}
+SPAN.a30{text-decoration-skip-ink:none; -webkit-text-decoration-skip:none; color:#1155cc; text-decoration:underline}
</style>
-</head><body class="c28 doc-content"><p class="a4">AI22-0024-1</p>
+</head><body class="c30 doc-content"><p class="a4">AI22-0024-1</p>
<p class="head">!standard 3.9.3(7/5)
- 22-08-30 AI22-0024-1/02</p>
+ 22-09-09 AI22-0024-1/03</p>
<p class="head">!standard 4.1.3(9.2/3)</p>
<p class="head">!class binding interpretation 22-01-20</p>
+<p class="head">!status Corrigendum 1-2022 22-09-09</p>
+<p class="head">!status ARG Approved 8-0-1 22-09-09</p>
<p class="head">!status work item 22-01-20</p>
<p class="head">!status received 21-04-28</p>
<p class="head">!priority Low</p>
@@ -49,8 +59,8 @@
<h2 class="head">!issue</h2>
<p class="text">Following is a distillation of another ACATS test that gets different results </p>
<p class="text">in different Ada 2012 compilers:</p>
-<a id="t.0539a8d78e6c3da25e277d06a9eed551b6241ac7"></a><a id="t.0"></a><table class="c20"><tr class="c18"></tr></table><p class="text"> </p>
-<a id="t.0a83fcf6f0060650be3d1940649573282238d897"></a><a id="t.1"></a><table class="c20"><tr class="c18"><td class="c25">
+<a id="t.0539a8d78e6c3da25e277d06a9eed551b6241ac7"></a><a id="t.0"></a><table class="c29"><tr class="c18"></tr></table><p class="text"> </p>
+<a id="t.0a83fcf6f0060650be3d1940649573282238d897"></a><a id="t.1"></a><table class="c29"><tr class="c18"><td class="c24">
<p class="codt"><b>procedure</b> B950001 <b>is</b><br>
<b>package</b> Nested <b>is</b><br>
<b>type</b> Intf <b>is</b> <b>synchronized</b> <b>interface</b>;<br>
@@ -91,7 +101,7 @@
<p class="txts">The test also renames these calls:</p>
-<a id="t.99e97e28b61f37c8758585a612fac6cc328ca2d4"></a><a id="t.2"></a><table class="c20"><tr class="c18"><td class="c25">
+<a id="t.99e97e28b61f37c8758585a612fac6cc328ca2d4"></a><a id="t.2"></a><table class="c29"><tr class="c18"><td class="c24">
<p class="codt"><b>procedure</b> RPE139 <b>renames</b> Intf_In_Parm.PEN1; -- ERROR: Prefix is
constant<br>
<b>procedure</b> RPE149 <b>renames</b> Intf_In_Out_Parm.PEN1; -- OK. Prefix is variable</p>
@@ -106,16 +116,16 @@
<ul class="wbl"><li>For the purposes of defining the primitive operations of the formal type, each
of the primitive operations of the actual type is considered to be a subprogram (with an intrinsic
calling convention — see
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-3-1.html">6.3.1</a></span>)
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-3-1.html">6.3.1</a></span>)
whose body consists of a dispatching call upon the corresponding operation of <i>T</i>, with its
formal parameters as the actual parameters. If it is a function, the result of the dispatching call
is returned.</li>
<li>If the corresponding operation of <i>T</i> has no controlling formal parameters, then the
controlling tag value is determined by the context of the call, according to the rules for
tag-indeterminate calls (see
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-3-9-2.html">3.9.2</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-3-9-2.html">3.9.2</a></span>
and
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-5-2.html">5.2</a></span>).
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-5-2.html">5.2</a></span>).
In the case where the tag would be statically determined to be that of the formal type, the call
raises Program_Error. If such a function is renamed, any call on the renaming raises
Program_Error.</li>
@@ -126,29 +136,29 @@
<p class="text">If we look at the current rules relating to prefixed views, we find that the
profile of a prefixed view is defined in 4.1.3(9.2/3):</p>
<p class="wrds">The
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
denotes a view of this subprogram that omits the first formal parameter. This view is called a
<i>prefixed view</i> of the subprogram, and the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
of the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
(after any implicit dereference) is called the <i>prefix</i> of the prefixed view.</p>
<p class="text"> The semantics of a call on a prefixed view are given in RM 6.4(9.1/5):</p>
<p class="wrds">If the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0091">name</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0091">name</a></span>
or
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
of a subprogram call denotes a prefixed view (see
-<span class="a29"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html">4.1.3</a></span>),
+<span class="a30"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html">4.1.3</a></span>),
the subprogram call is equivalent to a call on the underlying subprogram, with the first actual
parameter being provided by the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
of the prefixed view (or the Access attribute of this
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
if the first formal parameter is an access parameter), and the remaining actual parameters given by
the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-4.html#S0219">actual_parameter_part</a></span>,
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-4.html#S0219">actual_parameter_part</a></span>,
if any. </p>
<p class="txts">This does not clarify the properties of a <i>renaming</i> of a prefixed view when
@@ -175,38 +185,40 @@
<h2 class="head">!wording</h2>
<p class="inst">Modify 4.1.3(9.2/3):</p>
<p class="word">The
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
denotes a view of this subprogram that omits the first formal parameter. This view is called a
<i>prefixed view</i> of the subprogram, and the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
of the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html#S0098">selected_component</a></span>
(after any implicit dereference) is called the <i>prefix</i> of the prefixed view.
<span class="ins">{In the special case where the prefix is class-wide and controlling, the prefixed
view is not abstract, even if the unprefixed view is abstract; otherwise the prefixed view is
abstract if and only if the unprefixed view is abstract. A renaming of a prefixed view whose prefix
is class-wide and controlling shall have an expected profile such that each formal parameter or
-result type corresponding to a controlling (access) parameter or result in the unprefixed view, is
-(an access to) the same class-wide type as the prefix; otherwise the unprefixed view shall not be
-abstract and the types of the formal parameters or result in the expected profile shall match those
-of the corresponding formal parameters or result of the unprefixed view. When renaming a prefixed
-view whose prefix is tag-indeterminate and controlling, the controlling tag is statically
-determined to be that of the type of the prefix.}</span></p>
+result type corresponding to a controlling parameter (or access parameter) or result (or access
+result) in the unprefixed view, is the same class-wide type (or access to class-wide type) as
+the prefix; otherwise the unprefixed view shall not be abstract and the types of the formal
+parameters or result in the expected profile shall match those of the corresponding formal
+parameters or result of the unprefixed view. Any constraints on the formal parameters or results
+come from the unprefixed view, as with a normal subprogram renaming. When renaming a prefixed view
+whose prefix is tag-indeterminate and controlling, the controlling tag is statically determined to
+be that of the type of the prefix.}</span></p>
<p class="inst">Modify 6.4(9.1/5):</p>
<p class="wrds">If the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0091">name</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0091">name</a></span>
or
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
of a subprogram call denotes a prefixed view (see
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html">4.1.3</a></span>),
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1-3.html">4.1.3</a></span>),
the subprogram call is equivalent to a call on the underlying subprogram, with the first actual
parameter being provided by the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
of the prefixed view (or the Access attribute of this
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-4-1.html#S0093">prefix</a></span>
if the first formal parameter is an access parameter), and the remaining actual parameters given by
the
-<span class="c14"><a class="c3" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-4.html#S0219">actual_parameter_part</a></span>,
+<span class="c17"><a class="c4" href="http://www.ada-auth.org/standards/2xaarm/html/AA-6-4.html#S0219">actual_parameter_part</a></span>,
if any. <span class="ins">{[Redundant: In the case where the prefix is class-wide and controlling,
if there are multiple controlling parameters, a check is made that they all have the same tag, as
defined in 3.9.2. A call on a renaming of a prefixed view results in a dispatching call if the
@@ -269,21 +281,59 @@
<p class="txts">It might help to look at an example:</p>
-<a id="t.a943e863f7ff539b0a82525f010c1a75a7727aec"></a><a id="t.3"></a><table class="c20"><tr class="c18"><td class="c25">
-<p class="codt"> <b>package</b> P1 <b>is</b><br>
- <b>type</b> Intf <b>is</b> <b>interface</b>;<br>
- <b>function</b> F1 (A : <b>in</b> Intf; B : <b>in</b> Natural)<br>
- <b>return</b> Boolean <b>is</b> <b>abstract</b>;<br>
- <b>function</b> F2 (A : <b>in</b> Intf'Class; B : <b>in</b> Intf)<br>
- <b>return</b> Boolean <b>is</b> <b>abstract</b>;<br>
- <b>function</b> F3 (A, B : <b>in</b> Intf) <b>return</b> Boolean <b>is</b>
-<b>abstract</b>;<br>
- <b>end</b> P1;<br>
+<a id="t.a943e863f7ff539b0a82525f010c1a75a7727aec"></a><a id="t.3"></a><table class="c29"><tr class="c18"><td class="c24">
+<p class="text"><span class="c2">
+</span><span class="c5">package</span><span class="c2"> </span><span class="c9">P1
+</span><span class="c5">is</span><span class="c2"><br>
+ </span><span class="c5">type</span><span class="c2">
+</span><span class="c1">Intf </span><span class="c5">is</span><span class="c2">
+</span><span class="c5">interface</span><span class="c2">;<br>
+ </span><span class="c5">function</span><span class="c2">
+</span><span class="c9">F1</span><span class="c2"> (A :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Intf</span><span class="c2">; B :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Natural</span><span class="c2">)<br>
+ </span><span class="c5">return</span><span class="c2">
+</span><span class="c1">Boolean</span><span class="c2">
+</span><span class="c5">is</span><span class="c2">
+</span><span class="c5">abstract</span><span class="c2">;<br>
+ </span><span class="c5">function</span><span class="c2">
+</span><span class="c9">F2</span><span class="c2"> (A :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Intf'Class</span><span class="c2">; B :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Intf</span><span class="c2">)<br>
+ </span><span class="c5">return</span><span class="c2">
+</span><span class="c1">Boolean</span><span class="c2">
+</span><span class="c5">is</span><span class="c2">
+</span><span class="c5">abstract</span><span class="c2">;<br>
+ </span><span class="c5">function</span><span class="c2">
+</span><span class="c9">F3</span><span class="c2"> (A, B :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Intf</span><span class="c2">)
+</span><span class="c5">return</span><span class="c2">
+</span><span class="c1">Boolean</span><span class="c2">
+</span><span class="c5">is</span><span class="c2">
+</span><span class="c5">abstract</span><span class="c2">;<br>
+</span><sup><a href="#cmnt1">[a]</a></sup><span class="c2">
+</span><span class="c5">end</span><span class="c2"> P1;<br>
<br>
- <b>procedure</b> Test (Obj : <b>in</b> P1.Intf'Class; Val : <b>in</b> Natural)
-<b>is</b><br>
- <b>function</b> R1a (B : <b>in</b> Natural) <b>return</b> Boolean
-<b>renames</b> Obj.F1; -- (1a)</p>
+ </span><span class="c5">procedure</span><span class="c2">
+</span><span class="c9">Test</span><span class="c2"> (Obj :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">P1.Intf</span><span class="c2">'Class; Val :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Natural</span><span class="c2">)
+</span><span class="c5">is</span><span class="c2"><br>
+ </span><span class="c5">function</span><span class="c2">
+</span><span class="c9">R1a</span><span class="c2"> (B :
+</span><span class="c5">in</span><span class="c2">
+</span><span class="c1">Natural</span><span class="c2">)
+</span><span class="c5">return</span><span class="c2">
+</span><span class="c1">Boolean</span><span class="c2">
+</span><span class="c5">renames</span><span class="c2"> Obj.F1; </span><span class="a15">--
+(1a)</span></p>
<p class="codt"> <b>function</b> R1b (B : <b>in</b> Natural)
<b>return</b> Boolean -- Illegal -- (1b)</p>
<p class="codt"> <b>renames</b> P1.Intf(Obj).F1; -- because
@@ -295,13 +345,21 @@
is call on abstract subp<br>
<b>function</b> R3 (B : <b>in</b> P1.Intf'Class)
-- (3)</p>
-<p class="codt"> <b>return</b> Boolean <b>renames</b> Obj.F3;<br>
- <b>begin</b><br>
- <b>if</b> R1a(1) <b>then</b> -- OK. R1a will dispatch
-<i>internally</i> based on Obj<br>
+<p class="text"><span class="c2">
+ </span><span class="c5">return</span><span class="c2">
+</span><span class="c1">Boolean</span><span class="c2">
+</span><span class="c5">renames</span><span class="c2"> Obj.F3;<br>
+</span><sup><a href="#cmnt2">[b]</a></sup><span class="c2">
+</span><span class="c5">begin</span><span class="c2"><br>
+ </span><span class="c5">if</span><span class="c2">
+R1a(</span><span class="c1">1</span><span class="c2">)
+</span><span class="c5">then</span><span class="c2"> </span><span class="c10">--
+OK. R1a will dispatch </span><span class="a16">internally</span><span class="c10"> based on
+Obj</span><span class="c2"><br>
null;<br>
- <b>elsif</b> R2(Obj) <b>then</b> -- Not legal unless R2 is itself a
-primitive</p>
+ </span><span class="c5">elsif</span><span class="c2"> R2(Obj)
+</span><span class="c5">then</span><span class="c2"> </span><span class="a15">-- Not legal unless
+R2 is itself a primitive</span></p>
<p class="codt">
-- (which it isn't) even though P1.F2(Val, Obj)<br>
-- is
@@ -313,7 +371,7 @@
null;<br>
<b>end</b> <b>if</b>;<br>
<b>end</b> Test;</p>
-</td></tr><tr class="c18"><td class="c25">
+</td></tr><tr class="c18"><td class="c24">
<p class="codt"> </p>
</td></tr></table><p class="text"> </p>
<p class="text">R1a and R1b correspond to the two alternatives of the first case above. R1a is
@@ -418,4 +476,7 @@
<p class="txts">it is best deferred.</p>
-</body></html>
+<div class="c20"><p class="text"><a href="#cmnt_ref1">[a]</a>Obj.F3(BC) is equiv to F3(Obj, BC)</p>
+</div><div class="c20"><p class="text"><a href="#cmnt_ref2">[b]</a>Please add example of code for
+R3 -- Ed S.</p>
+</div></body></html>
Questions? Ask the ACAA Technical Agent