CVS difference for ai12s/ai12-0445-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0445-1.txt

--- ai12s/ai12-0445-1.txt	2022/04/29 05:48:48	1.1
+++ ai12s/ai12-0445-1.txt	2022/05/04 00:03:04	1.2
@@ -1,25 +1,46 @@
-!standard 3.2(8)                                       22-04-28  AI12-0445-1/01
+!standard 3.2(8)                                       22-05-02  AI12-0445-1/02
 !standard 3.10.2(20)
 !standard 5.5.3(28/5)
 !standard 5.5.3(29/5)
+!standard 7.6.1(16/2)
+!standard 9.6.1(82/2)
 !standard 9.8(20/3)
+!standard 10.1.1(24)
+!standard 10.1.4(2)
+!standard 11.1(6)
+!standard 11.4.2(26/3)
+!standard 12.5.1(1/3)
 !standard 13.1(7/2)
 !standard 13.3(37/2)
 !standard 13.3(55)
+!standard 13.3(58.13/5)
+!standard 13.6(1/3)
+!standard 13.6(2/5)
+!standard 13.11(21.6/3)
+!standard 13.11(22)
 !standard 13.11.2(9/3)
 !standard 13.11.3(5.2/4)
+!standard 13.11.4(19/3)
+!standard 13.13.2(56/3)
+!standard 13.13.2(56.1/3)
+!standard A.1(51)
 !standard A.4.2(1)
 !standard A.4.4(1)
 !standard A.4.5(1)
 !standard A.5.2(29/3)
 !standard A.5.2(40.1/1)
+!standard A.6(1/2)
 !standard A.10.4(1)
 !standard A.10.6(7)
+!standard A.13(1)
 !standard A.18.31(16/5)
 !standard B.1(3)
+!standard B.3.2(2)
 !standard C.3(9)
-!standard xx.xx()
-!standard xx.xx()
+!standard D.9(12)
+!standard D.9(13)
+!standard D.15(1/3)
+!standard G(4)
 !class presentation 22-04-28
 !status work item 22-04-28
 !status received 22-02-18
@@ -46,10 +67,9 @@
 As such, we need to remove any occurrences of those words from any normative
 text, and for some things that is complex.
 
-
 !recommendation
 
-** TBD
+Update the wording as described below.
 
 !wording
 
@@ -107,6 +127,37 @@
 
 [See previous paragraph for comments - Editor.]
 
+Modify 7.6.1(16/2):
+
+   * For an Adjust invoked as part of assignment operations other than those
+     invoked as part of an assignment_statement, [other]{some of the}
+     adjustments due to be performed [might or might not]{can} be performed,
+     and then Program_Error is raised. During its propagation, finalization 
+     [might or might not]{may} be applied to objects whose Adjust failed. For
+     an Adjust invoked as part of an assignment_statement, any other adjustments
+     due to be performed are performed, and then Program_Error is raised.
+
+["might or might not" is doubly bad. "can or cannot" doesn't make much sense.
+I thought of using "it is not specified whether other adjustments due to be
+performed are actually performed", but that's pretty long (and one would have
+to do something similar for the next sentence). Tucker suggested the above
+for the first part, but missed the second "might or might not". I wonder if
+"may" is better than "can" here (this is normative, so we can use
+"may") - Editor.]
+
+Modify 9.6.1(82/2):
+
+    Returns a string form of the Date relative to the given Time_Zone.
+    The format is "Year-Month-Day Hour:Minute:Second", where the Year
+    is a 4-digit value, and all others are 2-digit values, of the functions
+    defined in Calendar and Calendar.Formatting, including a leading zero, if
+    {necessary}[needed]. The separators between the values are a minus,
+    another minus, a colon, and a single space between the Day and Hour. If
+    Include_Time_Fraction is True, the integer part of Sub_Seconds*100 is 
+    suffixed to the string as a point followed by a 2-digit value.
+
+[Replace "needed" - Editor.]
+
 Modify 9.8(20/3):
 
     An attempt to execute an asynchronous_select as part of the execution of
@@ -119,8 +170,81 @@
     {does not necessarily}[might or might not] have an effect.
 
 ["might or might not" is doubly bad, "can or cannot" is doesn't have the
-right meaning, so I tried the above rewording. - Editor.]
+right meaning, so I tried the above rewording - Editor.]
+
+Modify 10.1.1(24):
+
+  * The semantic dependences (see below) are the ones needed to check the
+    compile-time rules across compilation unit boundaries; a compilation
+    unit depends semantically on the other compilation units
+    {necessary}[needed] to determine its legality. The visibility rules are
+    based on the semantic dependences.
+
+[Replace "needed" - Editor.]
+
+Modify 10.1.4(2):
+
+    The declarative_items of the environment are library_items appearing in an
+    order such that there are no forward semantic dependences. Each included
+    subunit occurs in place of the corresponding stub. The visibility rules
+    apply as if the environment were the outermost declarative region, except 
+    that with_clauses are {necessary}[needed] to make declarations of library
+    units visible (see 10.1.2).
+
+[Replace "needed" - Editor.]
+
+Modify 11.1(6):
+
+    The execution of any construct raises Storage_Error if there is
+    insufficient storage for that execution. The amount of storage 
+    {necessary}[needed] for the execution of constructs is unspecified.
+
+[Replace "needed" - Editor.]
 
+Modify 11.4.2(26/3):
+
+    If the result of a function call in an assertion is not {used}[needed] to
+    determine the value of the assertion expression, an implementation is
+    permitted to omit the function call. This permission applies even if the
+    function has side effects.
+
+[Replace "needed" - Editor.]
+
+Modify 11.6(6/3):
+
+  * If an exception is raised due to the failure of a language-defined
+    check, then upon reaching the corresponding exception_handler (or the
+    termination of the task, if none), the external interactions that have
+    occurred {have to}[need] reflect only that the exception was raised
+    somewhere within the execution of the sequence_of_statements with the
+    handler (or the task_body), possibly earlier (or later if the interactions
+    are independent of the result of the checked operation) than that defined
+    by the canonical semantics, but not within the execution of some
+    abort-deferred operation or independent subprogram that does not
+    dynamically enclose the execution of the construct whose check failed.
+    An independent subprogram is one that is defined outside the library
+    unit containing the construct whose check failed, and for which the
+    Inline aspect is False. Any assignment that occurred outside of such
+    abort-deferred operations or independent subprograms can be disrupted
+    by the raising of the exception, causing the object or its parts to
+    become abnormal, and certain subsequent uses of the object to be
+    erroneous, as explained in 13.9.1.
+
+[Replace "need" - Editor.]
+
+Modify 12.5.1(1/3):
+
+    In its most general form, the category determined for a formal private
+    type is all types, but the category can be restricted to only nonlimited
+    types or to only tagged types. Similarly, the category for a formal
+    incomplete type is all types but the category can be restricted to only
+    tagged types; unlike other formal types, the actual type [does not need
+    to be able to be]{can be incompletely defined, and not ready to be} frozen
+    (see 13.14). The category determined for a formal derived type is the
+    derivation class rooted at the ancestor type.
+
+[Replace "need to" - Editor.]
+
 Modify 13.1(7/2):
 
     The representation of an object consists of a certain number of bits (the
@@ -147,16 +271,63 @@
 [Replace "need". Could use a form of "should" here instead, maybe - Editor.]
 
 Modify 13.3(55):
+
+   * The Size (if not specified) of a static discrete or fixed point subtype
+     should be the number of bits {necessary}[needed] to represent each value
+     belonging to the subtype using an unbiased representation, leaving
+     space for a sign bit only if the subtype contains negative values. If
+     such a subtype is a first subtype, then an implementation should
+     support a specified Size for it that reflects this representation.
+
+[Replace "needed" - Editor.]
+
+Modify 13.3(58.13/5):
+
+   * If S is some other subtype, only confirming specifications of
+     Object_Size [need]{are required to} be supported.
+
+[Replace "need". Could use a form of "should" here instead, maybe - Editor.]
+
+Modify 13.6(1/3):
+
+    A type_conversion (see 4.6) can be used to convert between two different
+    representations of the same array or record. To convert an array from one
+    representation to another, two array types [need to be declared] with
+    matching component subtypes[,] and convertible index types{ are required}.
+    If one type has Pack specified and the other does not, then explicit
+    conversion can be used to pack or unpack an array.
+
+[Replace "need to" - Editor.]
 
-    * The Size (if not specified) of a static discrete or fixed point subtype
-      should be the number of bits {necessary}[needed] to represent each value
-      belonging to the subtype using an unbiased representation, leaving
-      space for a sign bit only if the subtype contains negative values. If
-      such a subtype is a first subtype, then an implementation should
-      support a specified Size for it that reflects this representation.
+Modify 13.6(2/5):
 
+    To convert an untagged record from one representation to another, two
+    record types with a common ancestor type [need to be declared]{are
+    required}. Distinct representations can then be specified for the record
+    types, and explicit conversion between the types can be used to effect a
+    change in representation.
+
+[Replace "need to" - Editor.]
+
+Modify 13.11(21.6/3):
+
+    The number of calls to Allocate [needed]{that will be used} to implement
+    an allocator for any particular type is unspecified. The number of calls
+    to Deallocate [needed]{that will be used} to implement an instance of
+    Unchecked_Deallocation (see 13.11.2) for any particular object is the same
+    as the number of Allocate calls for that object.
+
 [Replace "needed" - Editor.]
 
+Modify 13.11(22):
+
+    An implementation shall document the set of values that a user-defined
+    Allocate procedure [needs]{has} to accept for the Alignment parameter. An
+    implementation shall document how the standard storage pool is chosen, and
+    how storage is allocated by standard storage pools.
+
+[Replace "needs". "Has" should be OK here, as this is already a requirement - Editor.]
+
 Modify 13.11.2(9/3):
 
     c)  Free(X), when X is not equal to null first performs finalization of
@@ -173,15 +344,60 @@
 
 Modify 13.11.3(5.2/4):
 
-   Otherwise, the expected type for the Default_Storage_Pool aspect is
-   Root_Storage_Pool'Class and the aspect_definition shall be a name that denotes
-   a variable. This aspect overrides any Default_Storage_Pool pragma that {applies}
-   [might apply] to the generic unit; if the aspect is not specified, the default
-   pool of the instance is that defined for the generic unit.
+    Otherwise, the expected type for the Default_Storage_Pool aspect is
+    Root_Storage_Pool'Class and the aspect_definition shall be a name that
+    denotes a variable. This aspect overrides any Default_Storage_Pool pragma
+    that {applies}[might apply] to the generic unit; if the aspect is not
+    specified, the default pool of the instance is that defined for the
+    generic unit.
 
 [We don't need "might" here, as we already have "any" to say that there doesn't have
 to be one. So we can just use "applies". - Editor]
 
+Modify 13.11.4(19/3):
+
+   A subpool object is an object of a type descended from Root_Subpool.
+   Typically, subpool objects are managed by the containing storage pool; only
+   the handles [need]{have to} be exposed to clients of the storage pool.
+   Subpool objects are designated by subpool handles, and are the run-time
+   representation of a subpool.
+
+[Replace "need" - Editor.]
+
+Modify 13.13.2(56/3):
+
+   The number of calls performed by the predefined implementation of the
+   stream-oriented attributes on the Read and Write operations of the stream
+   type is unspecified. An implementation may take advantage of this
+   permission to perform internal buffering. However, all the calls on the
+   Read and Write operations of the stream type [needed]{used} to implement
+   an explicit invocation of a stream-oriented attribute shall take place
+   before this invocation returns. An explicit invocation is one appearing
+   explicitly in the program text, possibly through a generic instantiation
+   (see 12.3).
+
+[Replace "needed" - Editor.]
+
+Modify 13.13.2(56.1/3):
+
+   If T is a discriminated type and its discriminants have defaults, then
+   in two cases an execution of the default implementation of S'Read is not
+   required to create an anonymous object of type T: If the discriminant
+   values that are read in are equal to the corresponding discriminant values
+   of Item, then {creation of a new} [no] object of type T [need be created]
+   {can be bypassed} and Item may be used instead. If they are not equal and
+   Item is a constrained variable, then Constraint_Error may be raised at that
+   point, before any further values are read from the stream and before the
+   object of type T is created.
+
+[Replace "need be" - Editor.]
+
+Modify A.1(51):
+
+   An implementation may provide additional predefined integer types and
+   additional predefined floating point types. [Not]{Some or} all of these
+   types [need have names]{may be anonymous}.
+
 Modify A.4.2(1):
 
     The package Strings.Maps defines the types, operations, and other entities
@@ -240,8 +456,24 @@
 
 [The usual fixes for "might not" don't work here. "Cannot" is too definite (we
 don't know that the sequence is bad, just that it might be). We fall back on
-the "necessarily" crutch - Editor.]
+the "necessarily" crutch. Tucker had a suggestion that did not replace the
+first "might", so it wasn't used - Editor.]
+
+Modify A.6(1/2):
+
+   Input-output is provided through language-defined packages, each of which
+   is a child of the root package Ada. The generic packages Sequential_IO and
+   Direct_IO define input-output operations applicable to files containing
+   elements of a given type. The generic package Storage_IO supports reading
+   from and writing to an in-memory buffer. Additional operations for text
+   input-output are supplied in the packages Text_IO, Wide_Text_IO, and
+   Wide_Wide_Text_IO. Heterogeneous input-output is provided through the child
+   packages Streams.Stream_IO and Text_IO.Text_Streams (see also 13.13). The
+   package IO_Exceptions defines the exceptions [needed]{used} by the
+   predefined input-output packages.
 
+[Replace "needed" - Editor.]
+
 Modify A.10.4(1):
 
     The subprograms described in this subclause are concerned with the line
@@ -270,19 +502,11 @@
 
 [Replace "needed" - Editor.]
 
-Modify A.10.9(26):
+Modify A.13(1):
 
-    If Exp has the value zero, there is no exponent part. If Exp has a
-    value greater than zero, then the exponent part to be output has
-    as many digits as are {necessary}[needed] to represent the exponent part
-    of the value of Item (for which a single digit integer part is used), and
-    includes an initial sign (plus or minus). If the exponent part to
-    be output has fewer than Exp characters, including the sign, then
-    leading zeros precede the digits, to make up the difference. For
-    the value 0.0 of Item, the exponent has the value zero.
+    The package IO_Exceptions defines the exceptions [needed]{used} by the
+    predefined input-output packages.
 
-[Replace "needed" - Editor.]
-
 Modify A.18.31(16/5):
 
    The Implementation Advice about the Move and Swap operations is deleted
@@ -299,10 +523,16 @@
 
 [Replace "needed" - Editor.]
 
-Modify C.3(9):
+Modify B.3.2(2):
 
-C.3 Interrupt Support
+   The generic allows two styles of usage: one in which the array is
+   terminated by a special terminator element; and another in which the
+   programmer [needs to keep]{keeps} track of the length.
 
+[Replace "needs to" - Editor.]
+
+Modify C.3(9):
+
    The implementation shall provide a mechanism to determine the minimum
    stack space that is {necessary}[needed] for each interrupt handler and to 
    reserve that space for the execution of the handler. This space should
@@ -311,11 +541,58 @@
 
 [Replace "needed" - Editor.]
 
+Modify D.9(12):
+
+   * An upper bound on the lateness of a delay_relative_statement, for a
+     positive value of the delay expression, in a situation where the task
+     has sufficient priority to preempt the processor as soon as it becomes
+     ready, and [does not need to wait]{can proceed without waiting} for any
+     other execution resources. The upper bound is expressed as a function of
+     the value of the delay expression. The lateness is obtained by
+     subtracting the value of the delay expression from the actual duration.
+     The actual duration is measured from a point immediately before a task
+     executes the delay_statement to a point immediately after the task
+     resumes execution following this statement.
+
+[Replace "need to" - Editor.]
 
+Modify D.9(13):
 
-[*** TBD: A number of remaining paragraphs that still need wording proposals
-are found at the start of the !appendix - Editor.]
+   * An upper bound on the lateness of a delay_until_statement, in a
+     situation where the value of the requested expiration time is after
+     the time the task begins executing the statement, the task has
+     sufficient priority to preempt the processor as soon as it becomes
+     ready, and it [does not need to wait]{can proceed without waiting} for
+     any other execution resources. The upper bound is expressed as a
+     function of the difference between the requested expiration time and
+     the clock value at the time the statement begins execution. The lateness
+     of a delay_until_statement is obtained by subtracting the requested
+     expiration time from the real time that the task resumes execution
+     following this statement.
 
+[Replace "need to" - Editor.]
+
+Modify D.15(1/3):
+
+    This subclause describes a language-defined package to allow user-defined
+    protected procedures to be executed at a specified time without the
+    [need for]{use of} a task or a delay statement.
+
+[Replace "need for" - Editor.]
+
+Modify G(4):
+
+   * a mode ("relaxed mode"), in which {there are} no accuracy or other numeric
+     performance requirements [need]{to} be satisfied, as for implementations not
+     conforming to the Numerics Annex;
+
+[Replace "need" - Editor.]
+
+
+[A number of paragraphs that contain forms of the word "need" and are not
+uses of Ada technical terms but that we do not propose to changes can be
+found at the start of the !appendix - Editor.]
+
 !discussion
 
 To summarize the ISO rules from the Directives part 2 (often referred to as the
@@ -401,99 +678,13 @@
 are notes anyway.
 
 !appendix
-
-Here are wording involving "might" that don't have obvious fixes:
 
-7.6.1(16/2):
+Here is wording involving forms of "need" that we won't try to fix:
+[Note: There are also many technical uses of "need" that we are not changing,
+and ISO appears to be primarily worried about "need to" and "need not", so
+it's fairly unlikely that they will look at them in enough detail to raise
+an objection.]
 
-   * For an Adjust invoked as part of assignment operations other than
-        those invoked as part of an assignment_statement, other adjustments
-        due to be performed might or might not be performed, and then
-        Program_Error is raised. During its propagation, finalization might or
-        might not be applied to objects whose Adjust failed. For an Adjust
-        invoked as part of an assignment_statement, any other adjustments due
-        to be performed are performed, and then Program_Error is raised.
-
-["might or might not" is doubly bad. "can or cannot" doesn't make much sense.
-I thought of using "it is not specified whether other adjustments due to be
-performed are actually performed", but that's pretty long (and one would have
-to do something similar for the next sentence). Any better ideas??]
-
-
-
-Here are wording changes involving "need to" that ought to be replaced (the
-ISO "house rules" mention "need to" rather than "need" itself):
-
-Introduction
-
-52.20/5   * The Jorvik profile is introduced to support hard real-time
-        applications that need to go beyond the restrictions of the Ravenscar
-        profile.
-
-[Did not try.]
-
-12.5.1 Formal Private and Derived Types
-
-1/3 In its most general form, the category determined for a formal private
-type is all types, but the category can be restricted to only nonlimited types
-or to only tagged types. Similarly, the category for a formal incomplete type
-is all types but the category can be restricted to only tagged types; unlike
-other formal types, the actual type does not need to be able to be frozen (see
-13.14). The category determined for a formal derived type is the derivation
-class rooted at the ancestor type.
-
-[Did not try to find rewording.]
-
-13.6 Change of Representation
-
-1/3 A type_conversion (see 4.6) can be used to convert between two different
-representations of the same array or record. To convert an array from one
-representation to another, two array types need to be declared with matching
-component subtypes, and convertible index types. If one type has Pack
-specified and the other does not, then explicit conversion can be used to pack
-or unpack an array.
-
-[Did not try to find rewording.]
-
-2/5 To convert an untagged record from one representation to another, two
-record types with a common ancestor type need to be declared. Distinct
-representations can then be specified for the record types, and explicit
-conversion between the types can be used to effect a change in representation.
-
-[Did not try to find rewording.]
-
-D.9 Delay Accuracy
-
-12    * An upper bound on the lateness of a delay_relative_statement, for a
-        positive value of the delay expression, in a situation where the task
-        has sufficient priority to preempt the processor as soon as it becomes
-        ready, and does not need to wait for any other execution resources.
-        The upper bound is expressed as a function of the value of the delay
-        expression. The lateness is obtained by subtracting the value of the
-        delay expression from the actual duration. The actual duration is
-        measured from a point immediately before a task executes the
-        delay_statement to a point immediately after the task resumes
-        execution following this statement.
-
-[Did not try to find rewording.]
-
-13    * An upper bound on the lateness of a delay_until_statement, in a
-        situation where the value of the requested expiration time is after
-        the time the task begins executing the statement, the task has
-        sufficient priority to preempt the processor as soon as it becomes
-        ready, and it does not need to wait for any other execution resources.
-        The upper bound is expressed as a function of the difference between
-        the requested expiration time and the clock value at the time the
-        statement begins execution. The lateness of a delay_until_statement is
-        obtained by subtracting the requested expiration time from the real
-        time that the task resumes execution following this statement.
-
-[Did not try to find rewording.]
-
-
-Here are wording changes involving other forms of "need" that aren't technical
-uses or "need not" or "need to": 
-
 3.5.10 Operations of Fixed Point Types
 
 4   S'Fore      S'Fore yields the minimum number of characters needed before
@@ -505,7 +696,8 @@
                 2.) The value of this attribute is of the type
                 universal_integer.
 
-[Did not try to find rewording.]
+[Tucker felt that this should not be changed. He said: "Refuse to believe ISO 
+will object to this." Not having any idea myself, I've left it out - Editor.]
 
 5   S'Aft       S'Aft yields the number of decimal digits needed after the
                 decimal point to accommodate the delta of the subtype S,
@@ -514,176 +706,9 @@
                 smallest positive integer N for which (10**N)*S'Delta is
                 greater than or equal to one.) The value of this attribute is
                 of the type universal_integer.
-
-[Did not try to find rewording.]
-
-9.6.1 Formatting, Time Zones, and other operations for Time
-
-82/2        Returns a string form of the Date relative to the given Time_Zone.
-            The format is "Year-Month-Day Hour:Minute:Second", where the Year
-            is a 4-digit value, and all others are 2-digit values, of the
-            functions defined in Calendar and Calendar.Formatting, including a
-            leading zero, if {necessary}[needed]. The separators between the values are a
-            minus, another minus, a colon, and a single space between the Day
-            and Hour. If Include_Time_Fraction is True, the integer part of
-            Sub_Seconds*100 is suffixed to the string as a point followed by a
-            2-digit value.
-
-[Replace "needed".]
-
-10.1.1 Compilation Units - Library Units
-
-24    * The semantic dependences (see below) are the ones needed to check the
-        compile-time rules across compilation unit boundaries; a compilation
-        unit depends semantically on the other compilation units {necessary}[needed] to
-        determine its legality. The visibility rules are based on the semantic
-        dependences.
-
-[Replace "needed".]
-
-10.1.4 The Compilation Process
-
-2   The declarative_items of the environment are library_items appearing in an
-order such that there are no forward semantic dependences. Each included
-subunit occurs in place of the corresponding stub. The visibility rules apply
-as if the environment were the outermost declarative region, except that with_-
-clauses are {necessary}[needed] to make declarations of library units visible (see 10.1.2).
-
-[Replace "needed".]
-
-11.1 Exception Declarations
-
-6   The execution of any construct raises Storage_Error if there is
-insufficient storage for that execution. The amount of storage {necessary}[needed] for the
-execution of constructs is unspecified.
-
-[Replace "needed".]
-
-11.4.2 Pragmas Assert and Assertion_Policy
-
-26/3 If the result of a function call in an assertion is not {necessary}[needed] to
-determine the value of the assertion expression, an implementation is
-permitted to omit the function call. This permission applies even if the
-function has side effects.
 
-[Replace "needed".]
+[See previous paragraph.]
 
-11.6 Exceptions and Optimization
-
-6/3   * If an exception is raised due to the failure of a language-defined
-        check, then upon reaching the corresponding exception_handler (or the
-        termination of the task, if none), the external interactions that have
-        occurred need reflect only that the exception was raised somewhere
-        within the execution of the sequence_of_statements with the handler
-        (or the task_body), possibly earlier (or later if the interactions are
-        independent of the result of the checked operation) than that defined
-        by the canonical semantics, but not within the execution of some
-        abort-deferred operation or independent subprogram that does not
-        dynamically enclose the execution of the construct whose check failed.
-        An independent subprogram is one that is defined outside the library
-        unit containing the construct whose check failed, and for which the
-        Inline aspect is False. Any assignment that occurred outside of such
-        abort-deferred operations or independent subprograms can be disrupted
-        by the raising of the exception, causing the object or its parts to
-        become abnormal, and certain subsequent uses of the object to be
-        erroneous, as explained in 13.9.1.
-
-[No attempt to fix.]
-
-12.5.1 Formal Private and Derived Types
-
-
-1/3 In its most general form, the category determined for a formal private
-type is all types, but the category can be restricted to only nonlimited types
-or to only tagged types. Similarly, the category for a formal incomplete type
-is all types but the category can be restricted to only tagged types; unlike
-other formal types, the actual type does not need to be able to be frozen (see
-13.14). The category determined for a formal derived type is the derivation
-class rooted at the ancestor type.
-
-[No attempt to fix.]
-
-13.3 Operational and Representation Attributes
-
-51.16/5   * If S is some other subtype, only confirming specifications of
-        Object_Size need be supported.
-
-[No attempt to fix.]
-
-13.11 Storage Management
-
-21.6/3 The number of calls to Allocate needed to implement an allocator for
-any particular type is unspecified. The number of calls to Deallocate needed
-to implement an instance of Unchecked_Deallocation (see 13.11.2) for any
-particular object is the same as the number of Allocate calls for that object.
-
-[No attempt to fix.]
-
-22  An implementation shall document the set of values that a user-defined
-Allocate procedure needs to accept for the Alignment parameter. An
-implementation shall document how the standard storage pool is chosen, and how
-storage is allocated by standard storage pools.
-
-[No attempt to fix.]
-
-13.11.4 Storage Subpools
-
-19/3 A subpool object is an object of a type descended from Root_Subpool.
-Typically, subpool objects are managed by the containing storage pool; only
-the handles need be exposed to clients of the storage pool. Subpool objects
-are designated by subpool handles, and are the run-time representation of a
-subpool.
-
-[No attempt to fix.]
-
-13.13.2 Stream-Oriented Attributes
-
-56/3 The number of calls performed by the predefined implementation of the
-stream-oriented attributes on the Read and Write operations of the stream type
-is unspecified. An implementation may take advantage of this permission to
-perform internal buffering. However, all the calls on the Read and Write
-operations of the stream type needed to implement an explicit invocation of a
-stream-oriented attribute shall take place before this invocation returns. An
-explicit invocation is one appearing explicitly in the program text, possibly
-through a generic instantiation (see 12.3).
-
-[No attempt to fix.]
-
-56.1/3 If T is a discriminated type and its discriminants have defaults, then
-in two cases an execution of the default implementation of S'Read is not
-required to create an anonymous object of type T: If the discriminant values
-that are read in are equal to the corresponding discriminant values of Item,
-then no object of type T need be created and Item may be used instead. If they
-are not equal and Item is a constrained variable, then Constraint_Error may be
-raised at that point, before any further values are read from the stream and
-before the object of type T is created.
-
-[No attempt to fix.]
-
-A.1 The Package Standard
-
-51  An implementation may provide additional predefined integer types and
-additional predefined floating point types. Not all of these types need have
-names.
-
-[No attempt to fix. Isn't the last part redundant with rules in 3.5.4 and 
-3.5.7? And why do we care about unnamed types in Standard?]
-
-A.6 Input-Output
-
-1/2 Input-output is provided through language-defined packages, each of which
-is a child of the root package Ada. The generic packages Sequential_IO and
-Direct_IO define input-output operations applicable to files containing
-elements of a given type. The generic package Storage_IO supports reading from
-and writing to an in-memory buffer. Additional operations for text
-input-output are supplied in the packages Text_IO, Wide_Text_IO, and
-Wide_Wide_Text_IO. Heterogeneous input-output is provided through the child
-packages Streams.Stream_IO and Text_IO.Text_Streams (see also 13.13). The
-package IO_Exceptions defines the exceptions needed by the predefined
-input-output packages.
-
-[No attempt to fix.]
-
 A.10.9 Input-Output for Real Types
 
 23          Outputs the value of the parameter Item as a decimal literal with
@@ -695,15 +720,23 @@
             represent the integer part of the value of Item, overriding Fore
             if necessary, or consists of the digit zero if the value of Item
             has no integer part.
-
-[The easy fix here leaves too many "necessary"s.]
-
-A.13 Exceptions in Input-Output
 
-1   The package IO_Exceptions defines the exceptions needed by the predefined
-input-output packages.
+[Tucker felt that this should not be changed. He said: "This is consistent
+with my earlier recommendation when talking about number of digits needed 
+for various representations." My usual suggestion would leave this wording
+with too many "necessary"s, so no change was made - Editor.]
+
+26          If Exp has the value zero, there is no exponent part. If Exp has a
+            value greater than zero, then the exponent part to be output has
+            as many digits as are needed to represent the exponent part of the
+            value of Item (for which a single digit integer part is used), and
+            includes an initial sign (plus or minus). If the exponent part to
+            be output has fewer than Exp characters, including the sign, then
+            leading zeros precede the digits, to make up the difference. For
+            the value 0.0 of Item, the exponent has the value zero.
 
-[No attempt to fix.]
+[Tucker wanted to leave this unchanged in order to be consistent with the other
+similar paragraphs that we are not changing - Editor.]
 
 A.18.2 The Generic Package Containers.Vectors
 
@@ -717,35 +750,9 @@
             into the new storage and deallocates any storage no longer needed.
             Any exception raised during allocation is propagated and Container
             is not modified.
-
-[No attempt to fix.]
-
-B.3.2 The Generic Package Interfaces.C.Pointers
-
-2   The generic allows two styles of usage: one in which the array is
-terminated by a special terminator element; and another in which the
-programmer needs to keep track of the length.
-
-[No attempt to fix.]
-
-D.15 Timing Events
-
-1/3 This subclause describes a language-defined package to allow user-defined
-protected procedures to be executed at a specified time without the need for a
-task or a delay statement.
-
-[No attempt to fix.]
-
-                                  Annex G
-                                 (normative)
-
-                                  Numerics
-
-4     * a mode ("relaxed mode"), in which no accuracy or other numeric
-        performance requirements need be satisfied, as for implementations not
-        conforming to the Numerics Annex;
 
-[No attempt to fix.]
+[Tucker suggests not changing. We could have used a word like "required" there,
+but that seems unnecessary - Editor.]
 
                                    Annex H
                                  (normative)

Questions? Ask the ACAA Technical Agent