International Standard ISO/IEC 8652:1995


Information technology -- Programming languages -- Ada
AMENDMENT 1 (Draft 5)



Technologies de l'information -- Langages de programmation -- Ada
AMENDEMENT 1


Amendment 1 to International Standard ISO/IEC 8652:1995 was prepared by AXE Consultants.


© 2004, AXE Consultants. All Rights Reserved.

This document may be copied, in whole or in part, in any form or by any means, as is, or with alterations, provided that (1) alterations are clearly marked as alterations and (2) this copyright notice is included unmodified in any copy. Compiled copies of standard library units and examples need not contain this copyright notice so long as the notice is included in all copies of the source code and documentation. Any other use or distribution of this document is prohibited without the prior express permission of AXE.



Introduction

International Standard ISO/IEC 8652:1995 defines the Ada programming language.

This amendment modifies Ada by making changes and additions that improve:

This amendment incorporates the following major additions to the International Standard:

This Amendment is organized by sections corresponding to those in the International Standard. These sections include wording changes and additions to the International Standard. Clause and subclause headings are given for each clause that contains a wording change. Clauses and subclauses that do not contain any change or addition are omitted.

For each change, an anchor paragraph from the International Standard (as corrected by Technical Corrigendum 1) is given. New or revised text and instructions are given with each change. The anchor paragraph can be replaced or deleted, or text can be inserted before or after it. When a heading immediately precedes the anchor paragraph, any text inserted before the paragraph is intended to appear under the heading.

Typographical conventions:

Instructions about the text changes are in this font. The actual text changes are in the same fonts as the International Standard - this font for text, this font for syntax, and this font for Ada source code. Note that this document is designed to be viewed with the default font as some Roman font, similar to the Ada 95 standard. This may require some adjustments to your browser.

Disclaimer:

This document is a draft of a possible amendment to Ada 95 (International Standard ISO/IEC 8652:1995). This draft contains only proposals substantially approved by the ISO/IEC JTC 1/SC 22/WG 9 Ada Rapporteur Group (ARG). Many other important proposals are under consideration by the ARG. Neither the ARG nor any other group has determined which, if any, of these proposals will be included in the amendment. Any proposal may be substantially changed or withdrawn before this document begins standardization, and other proposals may be added. This document is not an official publication or work product of the ARG.




Section 1: General


1.1.2 Structure

Replace paragraph 13: [AI95-00347-01]

by:




Section 2: Lexical Elements


2.9 Reserved Words

Replace paragraph 3: [AI95-00218-03]

by:




Section 3: Declarations and Types


3.2 Types and Subtypes

Replace paragraph 4: [AI95-00326-01]

by:

Replace paragraph 5: [AI95-00326-01]

by:

3.2.1 Type Declarations

Replace paragraph 8: [AI95-00326-01]

by:

3.2.2 Subtype Declarations

Replace paragraph 3: [AI95-00231-01]

by:

Delete paragraph 5: [AI95-00231-01]

3.3.1 Object Declarations

Replace paragraph 5: [AI95-00287-01]

by:

3.4.1 Derivation Classes

Replace paragraph 6: [AI95-00230-01]

by:

3.5.4 Integer Types

Replace paragraph 16: [AI95-00340-01]

by:

3.6 Array Types

Replace paragraph 7: [AI95-00230-01]

by:

Replace paragraph 22: [AI95-00230-01]

by:

3.6.2 Operations of Array Types

Replace paragraph 16: [AI95-00287-01]

by:

3.7 Discriminants

Replace paragraph 1: [AI95-00326-01]

by:

Replace paragraph 5: [AI95-00231-01]

by:

Replace paragraph 9: [AI95-00231-01; AI95-00254-01]

by:

Delete paragraph 10: [AI95-00230-01]

3.8 Record Types

Delete paragraph 8: [AI95-00287-01]

Replace paragraph 18: [AI95-00230-01]

by:

Replace paragraph 25: [AI95-00287-01]

by:

3.9.2 Dispatching Operations of Tagged Types

Replace paragraph 17: [AI95-00196-01]

by:

Insert after paragraph 18: [AI95-00196-01]

the new paragraph:

3.10 Access Types

Replace paragraph 2: [AI95-00231-01]

by:

Replace paragraph 6: [AI95-00231-01; AI95-00254-01]

by:

Replace paragraph 9: [AI95-00225-01]

by:

Replace paragraph 12: [AI95-00230-01; AI95-00231-01; AI95-00254-01]

by:

Replace paragraph 13: [AI95-00230-01; AI95-00231-01]

by:

Replace paragraph 14: [AI95-00231-01]

by:

Replace paragraph 15: [AI95-00231-01]

by:

Replace paragraph 17: [AI95-00230-01]

by:

3.10.1 Incomplete Type Declarations

Replace paragraph 2: [AI95-00326-01]

by:

Replace paragraph 4: [AI95-00326-01]

by:

Replace paragraph 5: [AI95-00326-01]

by:

Delete paragraph 7: [AI95-00326-01]

Replace paragraph 8: [AI95-00326-01]

by:

Replace paragraph 9: [AI95-00326-01]

by:

Replace paragraph 10: [AI95-00217-06; AI95-00326-01]

by:

Replace paragraph 11: [AI95-00326-01]

by:

3.10.2 Operations of Access Types

Replace paragraph 2: [AI95-00235-01]

by:

Replace paragraph 12: [AI95-00230-01]

by:

Replace paragraph 13: [AI95-00254-01]

by:

Replace paragraph 32: [AI95-00229-01]

by:




Section 4: Names and Expressions


4.1.3 Selected Components

Insert after paragraph 9: [AI95-00252-01]

the new paragraph:

Insert after paragraph 15: [AI95-00252-01]

the new paragraph:

4.2 Literals

Delete paragraph 2: [AI95-00230-01]

Delete paragraph 7: [AI95-00230-01; AI95-00231-01]

Replace paragraph 8: [AI95-00230-01]

by:

4.3 Aggregates

Replace paragraph 3: [AI95-00287-01]

by:

4.3.1 Record Aggregates

Replace paragraph 4: [AI95-00287-01]

by:

Replace paragraph 8: [AI95-00287-01]

by:

Replace paragraph 16: [AI95-00287-01]

by:

Insert after paragraph 17: [AI95-00287-01]

the new paragraph:

Insert before paragraph 20: [AI95-00287-01]

the new paragraph:

4.3.2 Extension Aggregates

Replace paragraph 4: [AI95-00287-01]

by:

Replace paragraph 5: [AI95-00306-01]

by:

4.3.3 Array Aggregates

Replace paragraph 3: [AI95-00287-01]

by:

Replace paragraph 5: [AI95-00287-01]

by:

Replace paragraph 7: [AI95-00287-01]

by:

Insert before paragraph 24: [AI95-00287-01]

the new paragraph:

4.5.2 Relational Operators and Membership Tests

Insert after paragraph 7: [AI95-00230-01]

the new paragraphs:

Insert after paragraph 9: [AI95-00230-01]

the new paragraphs:

4.6 Type Conversions

Replace paragraph 9: [AI95-00246-01]

by:

Replace paragraph 12: [AI95-00246-01]

by:

Replace paragraph 12.1: [AI95-00246-01]

by:

Replace paragraph 13: [AI95-00230-01]

by:

Replace paragraph 18: [AI95-00230-01]

by:

Replace paragraph 49: [AI95-00230-01; AI95-00231-01]

by:

Replace paragraph 51: [AI95-00231-01]

by:

4.8 Allocators

Replace paragraph 5: [AI95-00287-01]

by:

4.9 Static Expressions and Static Subtypes

Replace paragraph 26: [AI95-00263-01]

by:

Replace paragraph 38: [AI95-00268-01]

by:

4.9.1 Statically Matching Constraints and Subtypes

Replace paragraph 2: [AI95-00231-01; AI95-00254-01]

by:




Section 5: Statements


No changes in this section.




Section 6: Subprograms


6.1 Subprogram Declarations

Replace paragraph 2: [AI95-00218-03]

by:

Replace paragraph 3: [AI95-00218-03]

by:

Replace paragraph 15: [AI95-00231-01]

by:

Replace paragraph 23: [AI95-00231-01]

by:

Replace paragraph 24: [AI95-00231-01; AI95-00254-01]

by:

Replace paragraph 27: [AI95-00254-01]

by:

6.3 Subprogram Bodies

Replace paragraph 2: [AI95-00218-03]

by:

6.3.1 Conformance Rules

Replace paragraph 10: [AI95-00252-01]

by:

Insert after paragraph 13: [AI95-00254-01]

the new paragraph:

6.4 Subprogram Calls

Replace paragraph 8: [AI95-00310-01]

by:

6.5 Return Statements

Replace paragraph 18: [AI95-00316-01]

by:




Section 7: Packages


7.4 Deferred Constants

Replace paragraph 9: [AI95-00256-01]

by:

7.5 Limited Types

Replace paragraph 1: [AI95-00287-01]

by:

Insert before paragraph 2: [AI95-00287-01]

the new paragraph:

Insert after paragraph 8: [AI95-00287-01]

the new paragraph:

Replace paragraph 9: [AI95-00287-01]

by:

Delete paragraph 10: [AI95-00287-01]

Delete paragraph 11: [AI95-00287-01]

Delete paragraph 12: [AI95-00287-01]

Delete paragraph 13: [AI95-00287-01]

Delete paragraph 14: [AI95-00287-01]

Delete paragraph 15: [AI95-00287-01]

7.6 User-Defined Assignment and Finalization

Replace paragraph 5: [AI95-00161-01]

by:

Replace paragraph 7: [AI95-00161-01]

by:

Replace paragraph 21: [AI95-00147-01]

by:

7.6.1 Completion and Finalization

Replace paragraph 16: [AI95-00256-01]

by:




Section 8: Visibility Rules


8.3 Visibility

Replace paragraph 20: [AI95-00217-06]

by:

Insert after paragraph 23: [AI95-00195-01]

the new paragraph:

Insert after paragraph 26: [AI95-00218-03]

the new paragraphs:

8.4 Use Clauses

Replace paragraph 5: [AI95-00217-06]

by:

Insert after paragraph 7: [AI95-00217-06]

the new paragraph:

Replace paragraph 8: [AI95-00217-06]

by:

8.5.1 Object Renaming Declarations

Replace paragraph 2: [AI95-00230-01]

by:

Replace paragraph 3: [AI95-00231-01; AI95-00254-01]

by:

Replace paragraph 4: [AI95-00231-01; AI95-00254-01]

by:

Replace paragraph 6: [AI95-00230-01]

by:

8.5.3 Package Renaming Declarations

Replace paragraph 3: [AI95-00217-06]

by:

8.5.4 Subprogram Renaming Declarations

Replace paragraph 2: [AI95-00218-03]

by:

Insert after paragraph 5: [AI95-00228-01]

the new paragraph:

8.6 The Context of Overload Resolution

Replace paragraph 25: [AI95-00230-01; AI95-00231-01; AI95-00254-01]

by:




Section 9: Tasks and Synchronization


9.1 Task Units and Task Objects

Replace paragraph 21: [AI95-00287-01]

by:

9.4 Protected Units and Protected Objects

Replace paragraph 23: [AI95-00287-01]

by:

9.6 Delay Statements, Duration, and Time

Replace paragraph 10: [AI95-00161-01]

by:




Section 10: Program Structure and Compilation Issues


10.1.1 Compilation Units - Library Units

Insert after paragraph 12: [AI95-00217-06; AI95-00326-01]

the new paragraphs:

Replace paragraph 26: [AI95-00217-06]

by:

10.1.2 Context Clauses - With Clauses

Replace paragraph 4: [AI95-00217-06; AI95-00326-01]

by:

Replace paragraph 6: [AI95-00217-06]

by:

Replace paragraph 8: [AI95-00217-06; AI95-00220-01; AI95-00262-01]

by:

10.1.3 Subunits of Compilation Units

Replace paragraph 8: [AI95-00243-01]

by:

10.1.4 The Compilation Process

Replace paragraph 3: [AI95-00217-06]

by:

Replace paragraph 6: [AI95-00217-06]

by:

10.1.5 Pragmas and Program Units

Replace paragraph 9: [AI95-00212-01]

by:

10.2 Program Execution

Replace paragraph 6: [AI95-00217-06]

by:

Replace paragraph 9: [AI95-00256-01]

by:

10.2.1 Elaboration Control

Insert after paragraph 4: [AI95-00161-01]

the new paragraphs:

Replace paragraph 9: [AI95-00161-01]

by:

Insert after paragraph 11: [AI95-00161-01]

the new paragraphs:




Section 11: Exceptions


11.3 Raise Statements

Replace paragraph 2: [AI95-00361-01]

by:

Insert after paragraph 3: [AI95-00361-01]

the new paragraph:

Replace paragraph 4: [AI95-00361-01]

by:

11.4.1 The Package Exceptions

Replace paragraph 10: [AI95-00361-01]

by:

Replace paragraph 14: [AI95-00241-01]

by:

11.5 Suppressing Checks

Replace paragraph 1: [AI95-00224-01]

by:

Replace paragraph 3: [AI95-00224-01]

by:

Replace paragraph 4: [AI95-00224-01]

by:

Replace paragraph 5: [AI95-00224-01]

by:

Replace paragraph 6: [AI95-00224-01]

by:

Delete paragraph 7: [AI95-00224-01]

Replace paragraph 8: [AI95-00224-01]

by:

Replace paragraph 27: [AI95-00224-01]

by:

Insert after paragraph 29: [AI95-00224-01]

the new paragraph:




Section 12: Generic Units


12.3 Generic Instantiation

Replace paragraph 2: [AI95-00218-03]

by:

12.4 Formal Objects

Delete paragraph 8: [AI95-00287-01]

Replace paragraph 9: [AI95-00255-01]

by:

12.5 Formal Types

Replace paragraph 8: [AI95-00233-01]

by:

12.5.1 Formal Private and Derived Types

Insert after paragraph 10: [AI95-00231-01]

the new paragraph:

Replace paragraph 20: [AI95-00233-01]

by:

Replace paragraph 21: [AI95-00233-01]

by:

12.5.4 Formal Access Types

Replace paragraph 4: [AI95-00231-01]

by:

12.7 Formal Packages

Replace paragraph 3: [AI95-00317-01]

by:

Replace paragraph 5: [AI95-00317-01]

by:

Replace paragraph 10: [AI95-00317-01]

by:




Section 13: Representation Issues


13.1 Representation Items

Replace paragraph 11: [AI95-00326-01]

by:

13.3 Representation Attributes

Delete paragraph 26: [AI95-00247-01]

13.7 The Package System

Replace paragraph 12: [AI95-00161-01]

by:

In paragraph 15 replace: [AI95-00221-01]

by:

Replace paragraph 35: [AI95-00221-01]

by:

13.9.1 Data Validity

Replace paragraph 12: [AI95-00167-01]

by:

13.11 Storage Management

Replace paragraph 6: [AI95-00161-01]

by:

Replace paragraph 25: [AI95-00230-01]

by:

13.11.1 The Max_Size_In_Storage_Elements Attribute

Replace paragraph 3: [AI95-00256-01]

by:

13.12 Pragma Restrictions

Insert after paragraph 7: [AI95-00257-01]

the new paragraphs:

13.13.1 The Package Streams

Replace paragraph 3: [AI95-00161-01]

by:

Replace paragraph 8: [AI95-00227-01]

by:

Insert after paragraph 10: [AI95-00227-01]

the new paragraph:

13.13.2 Stream-Oriented Attributes

Insert before paragraph 2: [AI95-00270-01]

the new paragraphs:

Replace paragraph 9: [AI95-00195-01; AI95-00270-01]

by:

Replace paragraph 17: [AI95-00270-01]

by:

Replace paragraph 27: [AI95-00195-01]

by:

Insert after paragraph 28: [AI95-00260-01]

the new paragraphs:

Replace paragraph 31: [AI95-00260-01]

by:

Replace paragraph 34: [AI95-00260-01]

by:

Replace paragraph 35: [AI95-00195-01]

by:

Replace paragraph 36: [AI95-00195-01]

by:

Insert after paragraph 36.1: [AI95-00195-01]

the new paragraphs:

Insert after paragraph 38: [AI95-00260-01]

the new paragraph:




Annex A: Predefined Language Environment


A.4.2 The Package Strings.Maps

Replace paragraph 4: [AI95-00161-01]

by:

Replace paragraph 20: [AI95-00161-01]

by:

A.4.3 Fixed-Length String Handling

Insert after paragraph 8: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 56: [AI95-00301-01]

the new paragraphs:

Replace paragraph 58: [AI95-00301-01]

by:

Replace paragraph 60: [AI95-00301-01]

by:

A.4.4 Bounded-Length String Handling

Insert after paragraph 12: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 28: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 43: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 92: [AI95-00301-01]

the new paragraphs:

Replace paragraph 101: [AI95-00238-01; AI95-00301-01]

by:

A.4.5 Unbounded-Length String Handling

Replace paragraph 4: [AI95-00161-01]

by:

Insert after paragraph 11: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 22: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 38: [AI95-00301-01]

the new paragraphs:

Insert after paragraph 79: [AI95-00301-01]

the new paragraph:

Insert after paragraph 82: [AI95-00301-01]

the new paragraph:

A.4.7 Wide_String Handling

Replace paragraph 4: [AI95-00161-01]

by:

Replace paragraph 20: [AI95-00161-01]

by:

A.5.3 Attributes of Floating Point Types

Insert after paragraph 41: [AI95-00267-01]

the new paragraphs:

A.8 Sequential and Direct Files

Replace paragraph 1: [AI95-00283-01]

by:

A.8.2 File Management

Replace paragraph 3: [AI95-00283-01]

by:

Replace paragraph 22: [AI95-00248-01]

by:

A.10.1 The Package Text_IO

Insert after paragraph 48: [AI95-00301-01]

the new paragraphs:

A.10.6 Get and Put Procedures

In paragraph 5 replace: [AI95-00223-01]

by:

A.10.7 Input-Output of Characters and Strings

Replace paragraph 13: [AI95-00301-01]

by:

Insert after paragraph 17: [AI95-00301-01]

the new paragraphs:

A.10.11 Input-Output for Unbounded Strings

Insert new clause: [AI95-00301-01]

A.11 Wide Text Input-Output

Insert after paragraph 3: [AI95-00301-01]

the new paragraph:

A.12.1 The Package Streams.Stream_IO

Replace paragraph 28: [AI95-00283-01]

by:

Replace paragraph 28.1: [AI95-00085-01]

by:

Replace paragraph 30: [AI95-00256-01]

by:

A.16 The Package Directories

Insert new clause: [AI95-00248-01]




Annex B: Interface to Other Languages


B.3 Interfacing with C

Replace paragraph 50: [AI95-00258-01]

by:

Replace paragraph 60.2: [AI95-00216-01]

by:

B.3.1 The Package Interfaces.C.Strings

Replace paragraph 5: [AI95-00161-01]

by:

Replace paragraph 6: [AI95-00276-01]

by:

Replace paragraph 50: [AI95-00242-01]

by:

B.3.3 Pragma Unchecked_Union

Insert new clause: [AI95-00216-01]




Annex C: Systems Programming


C.3.1 Protected Procedure Handlers

Replace paragraph 8: [AI95-00253-01]

by:

C.4 Preelaboration Requirements

Insert after paragraph 4: [AI95-00161-01]

the new paragraph:

C.6 Shared Variable Control

Replace paragraph 7: [AI95-00272-01]

by:

Insert after paragraph 21: [AI95-00259-01]

the new paragraphs:




Annex D: Real-Time Systems


D.2 Priority Scheduling

Replace paragraph 1: [AI95-00321-01]

by:

D.2.1 The Task Dispatching Model

Replace paragraph 1: [AI95-00321-01]

by:

Replace paragraph 2: [AI95-00321-01]

by:

Replace paragraph 4: [AI95-00321-01]

by:

Replace paragraph 5: [AI95-00321-01]

by:

Replace paragraph 6: [AI95-00321-01]

by:

Delete paragraph 7: [AI95-00321-01]

Delete paragraph 8: [AI95-00321-01]

Replace paragraph 9: [AI95-00321-01]

by:

Insert after paragraph 10: [AI95-00321-01]

the new paragraph:

Insert after paragraph 16: [AI95-00321-01]

the new paragraph:

D.2.2 Pragma Task_Dispatching_Policy

Replace the title: [AI95-00321-01]

by:

Replace paragraph 3: [AI95-00321-01]

by:

Delete paragraph 5: [AI95-00321-01]

Delete paragraph 7: [AI95-00321-01]

Delete paragraph 8: [AI95-00321-01]

Delete paragraph 9: [AI95-00321-01]

Delete paragraph 10: [AI95-00321-01]

Delete paragraph 11: [AI95-00321-01]

Delete paragraph 12: [AI95-00321-01]

Delete paragraph 13: [AI95-00321-01]

Delete paragraph 14: [AI95-00321-01]

Delete paragraph 15: [AI95-00321-01]

Delete paragraph 16: [AI95-00321-01]

Replace paragraph 17: [AI95-00256-01; AI95-00321-01]

by:

Delete paragraph 18: [AI95-00321-01]

Delete paragraph 19: [AI95-00321-01]

Delete paragraph 20: [AI95-00321-01]

Delete paragraph 21: [AI95-00321-01]

D.2.3 Preemptive Dispatching

Insert new clause: [AI95-00321-01]

D.2.4 Non-Preemptive Dispatching

Insert new clause: [AI95-00298-01]

D.3 Priority Ceiling Locking

Replace paragraph 15: [AI95-00256-01]

by:

D.4 Entry Queuing Policies

Replace paragraph 15: [AI95-00256-01]

by:

D.7 Tasking Restrictions

Insert after paragraph 10: [AI95-00305-01; AI95-00353-01]

the new paragraphs:

Replace paragraph 15: [AI95-00305-01]

by:

Insert after paragraph 19: [AI95-00305-01]

the new paragraph:

D.13 Run-time Profiles and the Ravenscar Profile

Insert new clause: [AI95-00249-01; AI95-00297-01]




Annex E: Distributed Systems


E.2.2 Remote Types Library Units

Replace paragraph 8: [AI95-00240-01]

by:

Replace paragraph 14: [AI95-00240-01]

by:

E.2.3 Remote Call Interface Library Units

Replace paragraph 14: [AI95-00240-01]

by:

E.5 Partition Communication Subsystem

Replace paragraph 1: [AI95-00273-01]

by:

Insert after paragraph 27: [AI95-00273-01]

the new paragraph:




Annex F: Information Systems


No changes in this section.




Annex G: Numerics


G.1.1 Complex Types

Replace paragraph 4: [AI95-00161-01]

by:

G.1.2 Complex Elementary Functions

Replace paragraph 15: [AI95-00185-01]

by:

Replace paragraph 16: [AI95-00185-01]

by:

Replace paragraph 17: [AI95-00185-01]

by:

Replace paragraph 20: [AI95-00185-01]

by:

G.1.3 Complex Input-Output

Insert before paragraph 10: [AI95-00328-01]

the new paragraph:

G.2.2 Model-Oriented Attributes of Floating Point Types

Replace paragraph 3: [AI95-00256-01]

by:

G.3 Vector and Matrix Manipulation

Insert new clause: [AI95-00296-01]

G.3.1 Real Vectors and Matrices

Insert new clause: [AI95-00296-01]

G.3.2 Complex Vectors and Matrices

Insert new clause: [AI95-00296-01]




Annex H: Safety and Security


Replace the title: [AI95-00347-01]

by:

Replace paragraph 1: [AI95-00347-01]

by:

H.4 Safety and Security Restrictions

Replace the title: [AI95-00347-01]

by:

Replace paragraph 2: [AI95-00347-01]

by:

H.5 Pragma Detect_Blocking

Insert new clause: [AI95-00305-01]

H.6 Pragma Partition_Elaboration_Policy

Insert new clause: [AI95-00265-01]




Annex J: Obsolescent Features


J.10 Specific Suppression of Checks

Insert new clause: [AI95-00224-01]

J.11 The Class Attribute of Untagged Incomplete Types

Insert new clause: [AI95-00326-01]