79
Form Approd• " AD-A264 88I/TIOI PAGE - OPM No. 0704-0l/88 lell Ib I!1 Isft I l'E llt IIl b eima or any the, aspc of this coiison of r4ofmation. wwLudsrg 6, 9 P.etot for rsd.Vn9 bu.n4 to liii (iii I I11 1111 I~ I i5 tJetterson Daen Highway. Sudse 1204, Arfigon. VA 222C2-4X2. andi to Un . c Oflo h'On~t~OýI And 1419,flalry AP-a.'m Ctcs of ,. ... .- :PORT DATE 3. REPORT TYPE AND DATES COVERED IFinal: 19 Mar 93 4. TITLE AND SUBTITLE 5 FUNDING NUMBERS Validation Summary Report: Digital Equipment Corporation, DEC Ada for OpenVMS VAX Systems, Version 3.0-7, VAXstation 4000 Model 60 (host) => VAXstation 3100 Model 48 (target), 930319S1.11317 6. AUTHOR(S) National Institute of Standards and Technology Gaithersburg, MD USA 7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) .8 PERFORMING ORGANIZATION National Institute of Standards and Technology REPORT NUMBER National Computer Systems Laboratory NIST93DEC505_3_1.11 Bldg. 255, Rm A266 Gaithersburg, MD 20899 USA 9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSORING/MONITORING AGENCY Ada Joint Program Office D T CREPORT NUMBER United Slates Department of Defense ELECTE Pentagon, PM 321 14 A2619 Washington, D.C. 20301-3081 I 'PIY 2 6 1993 11. SUPPLEMENTARY NOTES 12a DISTRIBUTION!AVAILABI LITY STATEMENT 12b DISTRIBUTiON CODE Approved for public release; distribution unlimited. 13 ABSTRACT (Maximum 200 words) Digital Equipment Corporation, DEC Ada for OpenVMS VAX Systems, Version 3.0-7, VAXstation 4000 Model 60 (under VMS Version 5.5) (host) to VAXstation 3100 Model 48 (under VAXELN Version 4.4) (target), ACVC 1.11 93-11589 14. SUBJECT TERMS 15. NUMBER OF PAGES Ada programming language, Ada Compiler Val. Summary Report, Ada Compiler Val. ........ Capability, Val. Testing, Ada Val. Office, Ada Val. Facility, ANSI/MIL-STD-1815A, AJPO. 16. PRICE CODE 17. SECURITY CLASSIFICATION 18 SECURITY CLASSIFICATION 19, SECURITY CLASSIFICATION 20. LIMITATION OF ABSTRACT OF REPORT OF ABbr RACT UNCLASSIFIED UNCLASSIFED UNCLASSIFIED NSN 7540-01-280-550 Standard Form 298, (Rev. 2-89) Prescribed by ANSI Std 239-128

AD-A264 88I/TIOI PAGE Form OPM No. 0704-0l/88 I!1 … · lell Ib I!1 Isft I l'E llt IIl b eima or any the, aspc of this coiison of r4ofmation. ... of the ACVC may be found in the

Embed Size (px)

Citation preview

Form Approd• "AD-A264 88I/TIOI PAGE - OPM No. 0704-0l/88

lell Ib I!1 Isft I l'E llt IIl b eima or any the, aspc of this coiison of r4ofmation. wwLudsrg 6,9 P.etot for rsd.Vn9 bu.n4 toliii (iii I I11 1111 I~ I i5 tJetterson Daen Highway. Sudse 1204, Arfigon. VA 222C2-4X2. andi to Un . c Oflo h'On~t~OýI And 1419,flalry AP-a.'m Ctcs of

,. ... .- :PORT DATE 3. REPORT TYPE AND DATES COVERED

IFinal: 19 Mar 93

4. TITLE AND SUBTITLE 5 FUNDING NUMBERS

Validation Summary Report: Digital Equipment Corporation, DEC Ada for OpenVMSVAX Systems, Version 3.0-7, VAXstation 4000 Model 60 (host) => VAXstation 3100Model 48 (target), 930319S1.11317

6. AUTHOR(S)

National Institute of Standards and TechnologyGaithersburg, MDUSA

7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) .8 PERFORMING ORGANIZATION

National Institute of Standards and Technology REPORT NUMBER

National Computer Systems Laboratory NIST93DEC505_3_1.11

Bldg. 255, Rm A266Gaithersburg, MD 20899 USA

9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSORING/MONITORING AGENCY

Ada Joint Program Office D T CREPORT NUMBER

United Slates Department of Defense ELECTEPentagon, PM 321 14 A2619Washington, D.C. 20301-3081 I 'PIY 2 6 199311. SUPPLEMENTARY NOTES

12a DISTRIBUTION!AVAILABI LITY STATEMENT 12b DISTRIBUTiON CODE

Approved for public release; distribution unlimited.

13 ABSTRACT (Maximum 200 words)

Digital Equipment Corporation, DEC Ada for OpenVMS VAX Systems, Version 3.0-7, VAXstation 4000 Model 60 (underVMS Version 5.5) (host) to VAXstation 3100 Model 48 (under VAXELN Version 4.4) (target), ACVC 1.11

93-11589

14. SUBJECT TERMS 15. NUMBER OF PAGES

Ada programming language, Ada Compiler Val. Summary Report, Ada Compiler Val. ........Capability, Val. Testing, Ada Val. Office, Ada Val. Facility, ANSI/MIL-STD-1815A, AJPO. 16. PRICE CODE

17. SECURITY CLASSIFICATION 18 SECURITY CLASSIFICATION 19, SECURITY CLASSIFICATION 20. LIMITATION OF ABSTRACT

OF REPORT OF ABbr RACTUNCLASSIFIED UNCLASSIFED UNCLASSIFIED

NSN 7540-01-280-550 Standard Form 298, (Rev. 2-89)Prescribed by ANSI Std 239-128

AVF Control Number: NIST93DEC505_3_1.11DATE COMPLETED

BEFORE ON-SITE: 93-02-09AFTER ON-SITE: 93-03-22REVISIONS:

Ada COMPILERVALIDATION SUMMARY REPORT:

Certificate Number: 930319S1.11317Digital Equipment Corporation

DEC Ada for OpenVMS VAX Systems, Version 3.0-7VAXstation 4000 Model 60 =>

VAXstation 3100 Model 48

Prepared By:Software Standards Validation Group

Computer Systems LaboratoryNational Institute of Standards and Technology

Building 225, Room A266Gaithersburg, Maryland 20899

1A - j

I-... .. ..* .' _ _

II ~~' ~ -

AVF Control Number: NIST93DEC505_3_1.11

Certificate Information

The following Ada implementation was tested and determined to passACVC 1.11. Testing was completed on March 19, 1993.

Compiler Name and Version: DEC Ada for OpenVMS VAX Systems,Version 3.0-7

Host Computer System: VAXstation 4000 Model 60 under VMSVersion 5.5

Target Computer System: VAXstation 3100 Model 48 under

VAXELN Version 4.4

Target Runtime System: VAXELN Ada Verson 2.2

See section 3.1 for any additional information about the testingenvironment.

As a result of this validation effort, Validation Certificate930319S1.11317 is awarded to Digital Equipment Corporation. Thiscertificate expires 2 years after ANSI/MIL-STD-1815B is approved byANSI.

This report has been reviewed and is approved.

Ada Va idat on/ acl ty Ada Validation FacilityDr. David K. J fe s n Mr. L. Arnold qohnsonChief, Information S stems Manager, Software Standards

Engineering Division (ISED) Validation GroupComputer Systems Laboratory (CSL)

National Institute of Standards and TechnologyBuilding 225, Room A266Gaithersburg MD 20899

Ada/a idation Organization Ada Joint Program OfficeDirct Computer & Software Dr. John Solomond

Engineering Division DirectorInstitute for Defense Analyses Department of DefenseAlexandria VA 22311 Washington DC 20301

DEC~~I~ r CNF OR.ANC•

The 'following declaration of conformance was supplied by thecustomer.

Customer: Digital Equipment Corporation

Certificate Awardee: Digital Equipment Corporation

Ada Validation Facility: National Institute of Standards andTechnology

Computer Systems Laboratory (CSL)Software Validation GroupBuilding 225, Room A266Gaithersburg, Maryland 20899

ACVC Version: 1.12

Ada impla.;"ation:

Compiler Name and version; DEC Ada for OpenVMS VAX Systems,Version 3.0-7

Host Computer System: VAXstation 4000 Model 60 under VYSVersion 5.5

Target Computer System: VAXstation 3100 Model 48 underVAXELN Version 4.4

Target Runtime System: VAXELN Ada Verson 2.2

Declaration:

I the undersigned, declare that I have no knowledge of deliberatedeviations from the Ada Language Standard ANS:/MIL-STD-1815A ISO8652-1987 in the implementation listed above.

Customer Signature Date

Company Digital Equipment CorporationTitle: Project Manager

Certiicate Awardee Signature Date

e) Non-Processed Floating-PointPrecision Tests 0

f) Total Number of Inapplicable Tests 80 (c+d+e)g) Total Number of Tests for ACVC 1.11 4170 (a+b+f)

3.3 TEST EXECUTION

A magnetic tape containing the customized test suite (see section1.3) was taken on-site by the vali~ation team for processing. Thecontents of the magnetic tape were loaded onto VAX 6000 Model 350and transferred to the host computer by Ethernet. The test suitewas transferred from the host computer to the target computer byEthernet.

After the test files were loaded onto the host computer, the fullset of tests was compiled and then transferred to the targetcomputer for execution.

The results were captured on the target computer system andtransferred to the host by Ethernet and then transferred from thehost computer to the VAX 6000 Model 350 where a magnetic waswritten capturing the test results.

Testing was performed using command scripts provided by thecustomer and reviewed by the validation team. See Appendix B fora complete listing of the processing options for thisimplementation. It also indicates the default options. Theoptions invoked explicitly for validation testing during this testwere:

ADA/COPYSOURCE/NODEBUG/NODIAG/ERRORLIMIT=l000/LIST/NOSHOW

Test output, compiler and linker listings, and job logs werecaptured on magnetic tape and archived at the AVF. The listingsexamined on-site by the validation team were also archived.

3-2

TABLE OF CONTENTS

CHAPTER 1 .................................................. 1-1INTRODUCTION ............................................ i-1

1.1 USE OF THIS VALIDATION SUMMARY REPORT ........... 1-I1 . 2 REFERENCES ...................................... 1-11 .3 ACVC TEST CLASSES ............................... 1-21.4 DEFINITION OF TERMS .......... *..................-3

CHAPTER 2 ............ .... ......... . ...... ..... ..... 2-1IMPLEMENTATION DEPENDENCIES. ......... . ............. 2-12.1 WITHDRAWN TESTS....... .o. .... * .................. 2-12.2 INAPPLICABLE TESTS ................ .. ........ 2-i2 .3 TEST MODIFICATIONS. .. ........... .. ................ 2-4

CHAPTER 3 3-I..................3-1PROCESSING INFORMATION .................................. 3-1

3.1 TESTING ENVIRONMENT ............................. 3-13.2 SUMMARY OF TEST RESULTS......................... 3-13 .3 TEST EXECUTION .............. ................... 3-2

APPENDIX A ................................................. A-iMACRO PARAMETERS ........................................ A-i

APPENDIX B .......... . ...................................... B-iCOMPILATION SYSTEM OPTIONS .............................. B-iLINKER OPTIONS .......................................... B-2

APPENDIX C ....... . .......................................... C-iAPPENDIX F OF THE Ada STANDARD .......................... C-i

CHAPTER 1

INTRODUCTION

The Ada implementation described above was tested according to theAda Validation Procedures (Pro90) against the Ada Standard [Ada83)using the current Ada Compiler Validation Capability (ACVC). ThisValidation Summary Report (VSR) gives an account of the testing ofthis Ada implementation. For any technical terms used in thisreport, the reader is referred to [Pro90]. A detailed descriptionof the ACVC may be found in the current ACVC User's Guide [UG89].

1.1 USE OF THIS VALIDATION SUMMARY REPORT

Consistent with the national laws of the originating country, theAda Certification Body may make full and free public disclosure ofthis report. In tha United States, this is provided in accordancewith the "Freedom of Information Act" (5 U.S.C. #552). The resultsof this validation apply only to the computers, operating systems,and compiler versions identified in this report.

The organizations represented on the signature page of this reportdo not represent or warrant that all statements set forth in thisreport are accurate and complete, or that the subjectimplementation has no nonconformities to the Ada Standard otherthan those presented. Copies of this report are available to thepublic from the AVF which performed this validation or from:

National Technical Information Service5285 Port Royal RoadSpringfield VA 22161

Questions regarding this report or the validation test resultsshould be directed to the AVF which performed this validation orto:

Ada Validation OrganizationComputer and Software Engineering DivisionInstitute for Defense Analyses1801 North Beauregard StreetAlexandria VA 22311-1772

1.2 REFERENCES

[Ada83] Reference Manual for the Ada Programming Language,ANSI/MIL-STD-1815A, February 1983 and ISO 8652-1987.

1-1

(Pro9O] Ada Compiler Validation Procedures, Version 2.1, Ada JointProgram Office, August 1990.

[UG89] Ada Compiler Validation Capability User's Guide, 21 June1989.

1.3 ACVC TEST CLASSES

Compliance of Ada implementations is tested by means of the ACVC.The ACVC contains a collection of test programs structured into sixtest classes: A, B, C, D, E, and L. The first letter of a testname identifies the class to which it belongs. Class A, C, D, andE tests are executable. Class B and class L tests are expected toproduce errors at compile time and link time, respectively.

The executable tests are written in a self-checking manner andproduce a PASSED, FAILED, or NOT APPLICABLE message indicating theresult when they are executed. Three Ada library units, thepackages REPORT and SPPRTl3, and the procedure CHECK FILE are usedfor this purpose. The package REPORT also provides a set ofidentity functions used to defeat some compiler optimizationsallowed by the Ada Standard that would circumvent a test objective.The package SPPRT13 is used by many tests for Chapter 13 of the AdaStandard. The procedure CHECK FILE is used to check the contentsof text files written by some of the Class C tests for Chapter 14of the Ada Standard. The operation of REPORT and CHECK FILE ischecked by a set of executable tests. If these units are notoperating correctly, validation testing is discontinued.

Class B tests check that a compiler detects illegal language usage.Class B tests are not executable. Each test in this class iscompiled and the resulting compilation listing is examined toverify that all violations of the Ada Standard are detected. Someof the class B tests contain legal Ada code which must not beflagged illegal by the compiler. This behavior is also verified.

Class L tests check that an Ada implementation correctly detectsviolation of the Ada Standard involving multiple, separatelycompiled units. Errors are expected at link time, and execution isattempted.

In some tests of the ACVC, certain macro strings have to bereplaced by implementation-specific values -- for example, thelargest integer. A list of the values used for this implementationis provided in Appendix A. In addition to these anticipated testmodifications, additional changes may be required to removeunforeseen conflicts between the tests and implementation-dependentcharacteristics. The modifications required for thisimplementation are described in section 2.3.

1-2

For each Ada implementation, a customized test suite is produced bythe AVF. This customization consists of making the modificationsdescribed in the preceding paragraph, removing withdrawn tests (seesection 2.1) and, possibly some inapplicable tests (see Section 3.2and [UG89]).

In order to pass an ACVC an Ada implementation must process eachtest of the customized test suite according to the Ada Standard.

1.4 DEFINITION OF TERMS

Ada Compiler The software and any needed hardware thathave to be added to a given host andtarget computer system to allowtransformation of Ada programs intoexecutable form and execution thereof.

Ada Compiler The means for testing compliance of AdaValidation implementations, Validation consisting ofCapability (ACVC) the test suite, the support programs, the

ACVC Capability user's guide and thetemplate for the validation summary (ACVC)report.

Ada Implementation An Ada compiler with its host computersystem and its target computer system.

Ada Joint Program The part of the certification body whichOffice (AJPO) provides policy and guidance for the Ada

certification office system.

Ada Validation The part of the certification body whichFacility (AVF) carries out the procedures required to

establish the compliance of an Adaimplementation.

Ada Validation The part of the certification body thatOrganization (AVO) provides technical guidance for operations

of the Ada certification system.

Compliance of an The ability of the implementation to passAda Implementation an ACVC an Ada version.

1-3

Computer System A functional unit, consisting of one ormore computers and associated software,that uses common storage for all or partof a program and also for all or part ofthe data necessary for the execution ofthe program; executes user- written oruser-designated programs; performsuser-designated data manipulation,including arithmetic operations and logicoperations; and that can execute programsthat modify themselves during execution. Acomputer system may be a stand-alone unitor may consist of several inter-connectedunits.

Conformity Fulfillment by a product, process orservice of all requirements specified.

Customer An individual or corporate entity whoenters into an agreement with an AVF whichspecifies the terms and conditions for AVFservices (of any kind) to be performed.

Declaration of A formal statement from a customerConformance assuring that conformity is realized or

attainable on the Ada implementation forwhich validation status is realized.

Host Computer A computer system where Ada sourceSystem programs are transformed into executable

form.

Inapplicable Test A test that contains one or more testobjectives found to be irrelevant for thegiven Ada implementation.

ISO International Organization forStandardization.

LRM The Ada standard, or Language ReferenceM a n u a 1 , p u b 1 i s h e d a sANSI/MIL-STD-1815A-1983 and ISO 8652-1987.Citations from the LRM take the form"<section>.<subsection>:<paragraph>."

Operating System Software that controls the execution ofprograms and that provides services suchas resource allocation, scheduling,input/output control, and data management.Usually, operating systems arepredominantly software, but partial orcomplete hardware implementations arepossible.

1-4

Target Computer A computer system where the executableSystem form of Ada programs are executed.

Validated Ada The compiler of a validated AdaCompiler implementation.

Validated Ada An Ada implementation that has beenImplementation validated successfully either by AVF

testing or by registration (Pro90].

Validation The process of checking the conformity ofan Ada compiler to the Ada programminglanguage and of issuing a certificate forthis implementation.

Withdrawn Test A test found to be incorrect and not usedin conformity testing. A test may beincorrect because it has an invalid testobjective, fails to meet its testobjective, or contains erroneous orillegal use of the Ada programminglanguage.

1-5

CHAPTER 2

IMPLEMENTATION DEPENDENCIES

2.1 WITHDRAWN TESTS

Some tests are withdrawn by the AVO from the ACVC because they donot conform to the Ada Standard. The following 95 tests had beenwithdrawn by the Ada Validation Organization (AVO) at the time ofvalidation testing. The rationale for withdrawing each test isavailable from either the AVO or the AVF. The publication date forthis list of withdrawn tests is 91-08-02.

E28005C B28006C C32203A C34006D C35508I C35508JC35508M C35508N C35702A C35702B B41308B C43004AC45114A C45346A C45612A C45612B C45612C C45651AC46022A B49008A B49008B A74006A C74308A B83022BB83022H B83025B B83025D B83026B C83026A C83041AB85001L C86001F C94021A C97116A C98003B BA2011ACB7001A CB7001B CB7004A CC1223A BC1226A CC1226BBC3009B BD1B02B BD1B06A AD1BO8A BD2AO2A CD2A21ECD2A23E CD2A32A CD2A41A CD2A41E CD2A87A CD2BI5CBD3006A BD4008A CD4022A CD4022D CD4024B CD4024CCD4024D CD4031A CD4051D CDSI51A CD7004C ED7005DCD7005E AD7006A CD7006E AD7201A AD7201E CD7204BAD7206A BD8002A BD8004C CD9005A CD9005B CDA201ECE21071 CE2117A CE2117B CE2119B CE2205B CE2405ACE3111C CE3116A CE3118A CE3411B CE3412B CE3607BCE3607C CE3607D CE3812A CE3814A CE3902B

2.2 INAPPLICABLE TESTS

A test is inapplicable if it contains test objectives which areirrelevant for a given Ada implementation. The inapplicabilitycriteria for some tests are explained in documents issued by ISOand the AJPO known as Ada Commentaries and commonly referenced inthe format AI-ddddd. For this implementation, the following testswere determined to be inapplicable for the reasons indicated;references to Ada Commentaries are included as appropriate.

C24113W..Y (3 tests) use a line length in the input file whichexceeds 255 characters.

C35713B, C45423B, B86001T, and C86006H check for the predefinedtype SHORT-FLOAT; for this implementation, there is no such type.

2-1

C45531M..P and C45532M..P (8 tests) check fixed-point operationsfor types that require a SYSTEM.MAX MANTISSA of 47 or greater; forthis implementation, MAXMANTISSA is less than 47.

C45624A..B (2 tests) check that the proper exception is raised ifMACHINE OVERFLOWS is FALSE for floating point types and the resultsof various floating-point operations lie outside the range of thebase type; for this implementation, MACHINEOVERFLOWS is TRUE.

B86001Y uses the name of a predefined fixed-point type other thantype DURATION; for this implementation, there is no such type.

B91001H checks that an address clause may not precede an entrydeclaration; this implementation does not support address clausesfor entries. (See section 2.3.)

C96005B uses values of type DURATION's base type that are outsidethe range of type DURATION; for this implementation, the ranges arethe same.

CD1009C checks whether a length clause can specify a non-defaultsize for a floating-point type; this implementation does notsupport such sizes.

CD2A84A, CD2A84E, CD2A84I..J (2 tests), and CD2A840 use lengthclauses to specif", non-default sizes for access types; thisimplementation does not support such sizes.

CD2Bl5B checks that STORAGE ERROR is raised when the storage sizespecified for a collection is too small to hold a single value ofthe designated type; this implementation allocates more space thanwas specified by the length clause, as allowed by AI-00558.

BD8001A, BD8003A, BD8004A..B (2 tests), and AD8O11A use machinecode insertions; this implementation provides no packageMACHINECODE.

The 18 tests listed in the following table check that USE ERROR israised if the given file operations are not supported for the givencombination of mode and access method; this implementation supportsthese operations.

Test File Operation Mode File Access Method

CE2102E CREATE OUTFILE SEQUENTIAL_10CE2102F CREATE INOUT FILE DIRECT 10CE2102J CREATE OUT FILE DIRECT IOCE2102N OPEN INPILE SEQUENTIAL_10CE21020 RESET IN FILE SEQUENTIAL_IOCE2102P OPEN OUT FILE SEQUENTIAL_IOCE2102Q RESET OUT_FILE SEQUENTIALIO

2-2

CE2102R OPEN INOUT FILE DIRECT 10CE2102S RESET INOUT FILE DIRECT 10CE2102T OPEN IN FILE DIRECT IOCE2102U RESET IN FILE DIRECT IOCE2102V OPEN OUTFILE DIRECT0IOCE2102W RESET OUTFILE DIREC' IOCE3102F RESET Any Mode TEXT_10CE3102G DELETE TEXT IOCE3102I CREATE OUT FILE TEXT-IOCE3102J OPEN IN FILE TEXTIOCE3102K OPEN OUTFILE TEXTIO

The tests listed in the following table check the given fileoperations for the given combination of mode and access method;this implementation does not support these operations.

Test File Operation Mode File Access Method

CE2105A CREATE IN FILE SEQUENTIALIOCE2105B CREATE IN-FILE DIRECT_10CE3109A CREATE INFILE TEXTIO

The following 12 tests check operations on sequential, direct, andtext files when multiple internal files are associated with thesame external file and one or more are open for writing; USEERRORis raised when this association is attempted.

CE2107B CE2107E CE2107G CE2110B CE2110DCE2111D CE2111H CE3111B CE3111D..E CE3114BCE3115A

CE2107C..D (2 tests), CE2107H, and CE2107L apply function NAME totemporary sequential, direct, and text files in an attempt toassociate multiple internal files with the same external file;USEERROR is raised because temporary files have no name.

CE2108B, CE21O8D, and CE3112B use the names of temporarysequential, direct, and text files that were created in other testsin order to check that the temporary files are not accessible afterthe completion of those tests; for this implementation, temporaryfiles have no name.

CE2111C checks that a supplied mode parameter can be RESET fromIN FILE to OUT FILE (An amplification in accessing privileges whilethe external file is being accessed). The proper exception israised.

CE2203A checks that WRITE raises USE ERROR if the capacity of anexternal sequential file is exceeded; this implementation cannotrestrict file capacity.

2-3

CE2401H, EE2401D, and EE240IG use instantiations of DIRECT 10 withunconstrained array and record types; this implementation raisesUSEERROR on the attempt to create a file of such types.

CE2403A checks that WRITE raises USE ERROR if the capacity of anexternal direct file is exceeded; -this implementation cannotrestrict file capacity.

CE3304A checks that SET LINE LENGTH and SETPAGE LENGTH raiseUSEERROR if they specify an inappropriate value for the externalfile; there are no inappropriate values for this implementation.

CE3413B checks that PAGE raises LAYOUT ERROR when the value of thepage number exceeds COUNT'LAST; for this implementation, the valueof COUNT'LAST is greater than 150000, making the checking of thisobjective impractical.

2.3 TEST MODIFICATIONS

Modifications (see section 1.3) were required for 1 test.

B91001H was graded inapplicable by Evaluation Modification asdirected by the AVO. This test expects an error to be cited for anentry declaration that follows an address clause for a precedingentry; but this implementation does not support address clauses forentries (rather, it provides a package that allows a task to waitfor the delivery of one or more signals), and so rejects theaddress clause.

2-4

CHAPTER 3

PROCESSING INFORMATION

3.1 TESTING ENVIRONMENT

The Ada implementation tested in this validation effort isdescribed adequately by the information given in the initial pagesof this report.

For technical and sales information about this Ada implementation,contact:

Attn: Maryanne CacciolaAda Product Manager

Digital Equipment Corporation110 Spit Brook Road (ZKO2-1/M1l)

Nashua, NH 03062(603) 881-1028

Testing of this Ada implementation was conducted at the customer'ssite by a validation team from the AVF.

3.2 SUMMARY OF TEST RESULTS

An Ada Implementation passes a given ACVC version if it processeseach test of the customized test suite in accordance with the AdaProgramming Language Standard, whether the test is applicable orinapplicable; otherwise, the Ada Implementation fails the ACVC[Pro90].

For all processed tests (inapplicable and applicable), a result wasobtained that conforms to the Ada Programming Language Standard.

The list of items below gives the number of ACVC tests in variouscategories. All tests were processed, except those that werewithdrawn because of test errors (item b; see section 2.1), thosethat require a floating-point precision that exceeds theimplementation's maximum precision (item e; see section 2.2), andthose that depend on the support of a file system -- if none issupported (item d). All tests passed, except those that are listedin s'ctions 2.1 and 2.2 (counted in items b and f, below).

a) Total Number of Applicable Tests 3995

b) Total Nimber of Withdrawn Tests 95c) Processed Inapplicable Tests 80d) Non-Processed I/O Tests 0

3-1

e) Non-Processed Floating-PointPrecision Tests 0

f) Total Number of Inapplicable Tests 80 (c+d+e)g) Total Number of Tests for ACVC 1.11 4170 (a+b+f)

When this implementation was tested, the tests listed in section

2.1 had been withdrawn because of test errors.

3.3 TEST EXECUTION

A magnetic tape containing the customized test suite (see section1.3) was taken on-site by the validation team for processing. Thecontents of the magnetic tape were loaded onto VAX 6000 Model 350and transferred to the host computer by Ethernet. The test suitewas transferred from the host computer to the target computer byEthernet.

After the test files were loaded onto the host computer, the fullset of tests was compiled and then transferred to the targetcomputer for execution.

The results were captured on the target computer system andtransferred to the host by Ethernet and then transferred from thehost computer to the VAX 6000 Model 350 where a magnetic waswritten capturing the test results.

Testing was performed using command scripts provided by thecustomer and reviewed by the validation team. See Appendix B fora complete listing of the processing options for thisimplementation. It also indicates the default options. Theoptions invoked explicitly for validation testing during this testwere:

ADA/COPYSOURCE/NODEBUG/NODIAG/ERRORLIMIT=l000/LIST/NOSHOW

Test output, compiler and linker listings, and job logs werecaptured on magnetic tape and archived at the AVF. The listingsexamined on-site by the validation team were also archived.

3-2

APPENDIX A

MACRO PARAMETERS

This appendix contains the macro parameters used for customizing theACVC. The meaning and purpose of these parameters are explained in(UG89). The parameter values are presented in two tables. The firsttable lists the values that are defined in terms of the maximum input-line length, which is the value for $MAXINLEN--also listed here. Thesevalues are expressed here as Ada string aggregates, where 'V" representsthe maximum input-line length.

Macro Parameter Macro Value

$MAXINLEN 255-- Value of V

$BIGID (I. .V-l => 'A', V => '1')

$BIGID2 (1. .V-1 => 'A', V => '2')

SBIGID3 (I..V/2 => 'A') & '3' & (1..V-I-V/2 => 'A')

$BIGID4 (1..V/2 => 'A') & '4' & (1..V-I-V/2 => 'A')

$BIGINTLIT (I..V-3 => '0') & "298"

$BIGREALLIT (I..V-5 => '0') & "690.0"

$BIGSTRINGI '"' & (1..V/2 => 'A') & 'll

$BIGSTRING2 '"' & (1..V-l-V/2 => 'A') & '1' &

$BLANKS (l..V-20 => '

$MAXLENINTBASED LITERAL"2:" & (I..V-5 => '0') & "11:"

SMAXLENREAL BASEDLITERAL"16:-" & (I..V-7 => '0') & "F.E:"

$MAXSTRING LITERAL '"' & (I..V-2 => 'A') & '""

A-I

The following table contains the values for the remaining macroparameters.

Macro Parameter Macro Value

$AcCSIZE 32

$ALIGNMENT 4

$COUNTLAST 2_147_483_647

$OEFAULTMENSIZE 2**31-1

$DEFAULTSTORUNIT 8

$DEFAULTSYS NAME VAXELN

SDELTADOC 2. Q** (-31)

SENTRYADDRESS FCNDECL.ENTRYADDRESS

$ENTRYADDRESSI FCNDECL.ENTRYADDRESS1

SENTRYADDRESS2 FCNDECL.ENTRYADDRESS2

SFIELDLAST 2_147_483_647

SFILETERMINATOR J

$FIXEDNAME NO SUCHFIXEDTYPE

S FLOATNAME LONGLONGFLOAT

$FORMSTRING fill

$FORMSTRING2 "CANNOT RESTRICTFILECAPACITY"I

$GREATERTHAN DURATION 75 000.0

$GREATERTHANDURATIONBASELAST 131_073.0

SGREATERTHANFLOATBASELAST 1.80141E+38

SGREATERTHAN FLOATSAFE LARGE 1.7014117E+38

$GREATERTHANSHORT FLOATSAFELARGE l.0E308

$HIGH-PRIORITY 15

A-2

$ILLEGALEXTERNAL FILE NAMEI BAD/CHAR'@. -!

SILLEGALEXTERNALFILENAME2 xl"&(1. .256=>'c')&"y

$INAPPROPRIATELINELENGTH -1

$INAPPROPRIATEPAGELENGTH -1

SINCLUDEPRAGMAl PRAGMA INCLUDE ("'A28006D1.TST")

$INCLUDEPRAGMA2 PRAGMA INCLUDE ("B28006E1.TST"l)

$INTEGERFIRST -2147483648

$INTEGERLAST 2147483647

$INTEGERLASTPLUS_1 2_147_483_648

$INTERFACELANGUAGE C

$LESSTHANDURATION -75 000.0

$LESSTHANDURATIONBASEFIRST -131_073.0

SLINETERMINATORII

SLOWPRIORITY 0

$MACHINECODESTATEMENT NULL;

$MACHINECODETYPE NOSUCH TYPE

$MANTISSADOC 31

$MAX-DIGITS 33

$MAXINT 2147483647

$MAXINTPLUS 1 2_147_483 648

$MININT -2147483648

$NAME SHORTSHORTINTEGER

$NAMELIST VAX_VMS,VAXELN,OPENVMSAXP,RISC_ULTRIX,MILSTD_1750A,MC68000,14C68020,MC68040, CPU32

SNAMESPECIFICATIONi DISK$IPSE: (000000]X2120A. ;1

SHAMESPECIFICATION2 DISX$IPSE: tOOOOOOIX2120B. ;1

A- 3

$NAMESPECIFICATION3 DISK$!x'ZE: [QOOQOQIX3119A. ;1

$NEG BASED INT 16#FFFfIFFFE#

$NEWMEMSIZE 1_048_576

SNEWSTOR-UNIT 8

$NEWSYSNAME VAXVMS

SPAGETERMINATORII

$RECORDDEFINITION RECORD NULL; END RECORD;

$RECORDNAME NOSUCHMACHINECODETYPE

$TASI(_SIZE 32

STASKSTORAGESIZE 0

STICK 10. O** (-2)

:?vARIABLEADDRESS FCNDECL.VARIABLEADDRESS

SVARIABLEADDRESS1 FCNDECL.VARIABLEADDRESS1

$VARIABLE ADDRESS2 FCND.-7L.VARIABLE ADDRESS2

$YQUR PRAGMA EXPORTOBJECT

A-4

APPENDIX B

COMPILATION SYSTEM OPTIONS

The compiler options of this Ada implementation, as described in thisAppendix, are provided by the customer. Unless specifically notedotherwise, references in this appendix are to compiler documentation andnot to this report.

B-i

Compiler options for DEC Ada hosted on OpenVMS VAX and OpenVMS AXP

systems

The default compiler options were used except as follows:

1. /LIST was used to produce compiler listings.

2. /NODEBUG was used to inhibit the generation of debugginginformation in the object file since such information is notrelevant to validation.

3. /ERROR LIMIT-1000 was used since more than 30 errors arediagnosed for some validation tests.

4. /NOSHOW was used to exclude portability information from thecompiler listings

The DEC Ada compiler options and defaults for OpenVMS VAX and OpenVMS

AXP systems are summarized as follows:

o /ANALYSISDATA or /NOANALYSISDATA

Controls whether a "ata analysis file containing source codecross-referencing and static analysis information is created.The default is /NOANALYSISDATA.

o /CHECK or /NOCHECK

Controls whether run-time error checking is suppressed. (Useof /NOCHECK is equivalent to giving all possible suppresspragmas in the source program.) The default is /CHECK (errorchecking is not suppressed except by pragma).

o /COPYSOURCE or /NOCOPYSOURCE

Controls whether the source being compiled is copied into thecompilation library for a successful compilation. Thedefault is /COPYSOURCE.

o /DEBUG or /NODEBUG or /DEBUG-option

where option is one of

ALL, SYMBOLS or NOSYMBOLS, TRACEBACK or NOTRACEBACK, or NONE

Controls the inclusion of debugging symbol table informationin the compiled object module. The default is /DEBUG or,equivalently, /DEBUG-ALL.

o /DESIGN or /NODESIGN

Controls whether the input file is processed as a design orcompiled as an Ada source. The default is'/NODESIGN, in

which case the file is compiled.

o /DIAGNOSTICS, /DIAGNOSTICS-file-name, or /NODIAGNOSTICS

Controls whether a special diagnostics file is produced foruse with the VAX Language-Sensitive Editor (a separateDIGITAL product). The default is /NODIAGNOSTICS.

o /ERRORLIMIT-n

Controls the number of error level diagnostics that areallowed within a single compilation unit before thecompilation is aborted. The default is /ERRORLIMIT-30.

o /LIBRARY-directory-name

Specifies the name :f the Ada compilation library to be usedas the context for the compilation. The default is thelibrary last established by the ACS SET LIBRARY command.

o /LIST, /LIST-file-name, or /NOLIST

Controls whether a listing file is produced. /LIST without afile-name uses a default file-name of the formsourcename.LIS, where sourcename is the name of the sourcefile being compiled. The default is /NOLIST (for bothinteractive and batch mode).

o /LOAD or /NOLOAD

Controls whether the current program library is updated withsuccessfully processed units contained in the source file.The default is /LOAD,

o /MACHINECODE or /NOMACHINE CODE

Controls whether generated machine code (approximatingassembler notation) is included in the listing file, ifproduced. The default is /NOMACHINECODE.

o /NOTESOURCE or /NONOTESOURCE

Controls whether the file specification of the current sourcefile is noted in the compilation library. (This copy is usedfor certain automated (re)compilation features.) The defaultis /NOTESOURCE.

o /OPTIMIZE or /NOOPTIMIZE

Controls whether full or minimal optimization is applied inproducing the compiled code. The default is /OPTIMIZE.(/NOOPTIMIZE is primarily of use in combination with /DEBUG.)

o /SYNTAXONLY or /NOSYNTAXONLY

Controls whether a syntax check only is performed. Thedefault is /NOSYNTAXONLY, which indicates that fullprocessing is done.

o /SHOW-PORTABILITY or /NOSHOW

Controls whether a portability summary is included in thelisting. The default is /SHOW-PORTABILITY.

o /WARNINGS-(category:destination,...)

Specifies which categories of informational and warning levelmessages are displayed for which destinations. Thecategories can be WARNINGS, WEAK__WARNINGS, SUPPLEMENTAL,COMPILATION NOTES and STATUS. The destinations can be ALL,NONE or combinations of TERMINAL, LISTING or DIAGNOSTICS.The default is

/WARNINGS-(WARN:ALL,WEAK:ALL,SUPP:ALL,COMP:NONE,STAT:LIST)

LINKER OPTIONS

The linker options of this Ada implementation, as described in thisAppendix, are provided by the customer. Unless specifically notedotherwise, references in this appendix are to linker documentation andnot to this report.

B-2

Linker options for DEC Ada hosted on OpenVMS VAX and OpenVMS AXPsystems

DEC Ada programs are linked using the "ACS LINK" command. The defaultACS LINK options were used except as follows:

1. /COMMAND was used. ACS LINK checks that all units in aprogram are current and writes a command file to create theexecutable image using the VMS linker. By default, thiscommand file is invoked in a subprocess and the image islinked. If /COMMAND is specified, the command file iswritten but not invoked. For validation, /COMMAND was used,and the generated command file was invoked after the ACS LINKcommand to do the actual 'ink. This approach saves theoverhead of spawning a subprocess for each executablevalidation test.

2. /NOTRACE was specified to exclude traceback symbolinformation from the image file since this information isonly relevant when debugging programs.

3. /EXECUTABLE was used to specify the name of the executableimage file.

4. For VAXELN targets only, /SYSTEMNAME-VAXELN was used.

The options and defaults for linking Ada programs are summarized

below.

o /COMMAND-file-name

Write a command file create the executable image using theVMS linker but do not invoke this commmand file.

o /DEBUG or /NODEBUG

Controls whether a debugger symbol table is included in theexecutable image. The default is /NODEBUG.

o /EXECUTABLE, /EXECUTABLE-file-name, or /NOEXECUTABLE

Controls whether the linker creates an executable image fileand optionally provides the name of the file. The default is/EXECUTABLE.

o /LOG or /NOLOG

Controls wheter a list of all units in the image isdisplayed. The default is /NOLOG.

o /MAIN or /NOMAIN

Specifies whether the main Ada unit is the main "program. The

default is /MAIN which indicates that the main Ada unit is

the main program.

o /MAP, /MAP-file-name, or /NOMAP

Controls whether the linker creates an image map listingfile. The default is /NOMAP. If /MAP is specified, someother options can be specified to control the level of detailin the map listing file.

o /OUTPUT-file-name

If specified, requests that output be written to a file otherthan to the standard output device.

o /SYSLIB or /NOSYSLIB

Controls whether the linker automatically searches thedefault system library for unresolved references. Bydefault, it is automatically searched.

o /SYSSHR or /NOSYSSHR

Controls whether the linker automatically searches thedefault system shareable image library for unresolvedreferences. By default, it is automatically searched.

o /SYSTEMNAME-system

Directs the program library manager to produce an image forexecution on a particular operating system. On VAX systems,the possible values are VAXVMS or VAXELN. On AXP systems,the only value supported is OpenVMS_AXP.

If /SYSTEM NAME is not specified, the setting of the pragmaSYSTEMNAME determines the target environment.

o /TRACEBACK or /NOTRACEBACK

Controls whether subprogram traceback information is includedin the executable image for run-time error reporting. Thedefault is /TRACEBACK.

o /USERLIBRARY-(table,...) or /NOUSERLIBRARY

Controls whether the linker searches any user-defined defaultlibraries for unresolved external symbols. By default, thelinker searches process, group, and system logical nametables for user-defined library definitions.

Additional options are provided that control whether the link is donewhile the user waits or is done in a background mode. Using oneoption or the other has no effect on the executable image that isgenerated.

APPENDIX C

APPENDIX F OF THE Ada STANDARD

The only allowed implementation dependencies correspond toimplementation-dependent pragmas, to certain machine-dependentconventions as mentioned in Chapter 13 of the Ada Standard, and tocertain allowed restrictions on representation clauses. Theimplementation-dependent characteristics of this Ada implementation,as described in this Appendix, are provided by the customer. Unlessspecifically noted otherwise, references in this Appendix are tocompiler documentation and not to this report.Implementation-specific portions of the package STANDARD, which arenot a part of Appendix F, are:

package STANDARD is

type INTEGER is range -2147483648..2147483647;type LONG INTEGER is range -2147483648..2147483647;type SHORT INTEGER is range -32768..32768;type SHORTSHORTINTEGER is range -128..127;

type FLOAT is digits 6 range -l.70141E+38..I.70141E+38;type LONGFLOAT is digits 15 range

-8.988465674312E+307..8.988465674312E+307;type LONGLONG FLOAT is digits 33 range

-5.9486574767861588254287966331400E+4921..5.9486574767861588254287966331400E+4931;

type DURATION is delta 1.0E-4 range -131072.0..131071.9999;

end STANDARD;

C-I

BPredefined Language Pragmas

This annex defines the pragmas LIST, PAGE, and OPTIMIZE, and summarizesthe definitions given elsewhere of the remaining language-defined pragmas.

The DEC Ada pragmas IDENT and TITLE are also defined in this annex.

Pragma Meaning

AST-ENTRY On VMS systems only.

Takes the simple name of a singleentry as the single argument; at mostone ASTENTRY pragma is allowedfor any given entry. This pragmamust be used in combination with theASTENTRY attribute, and is onlyallowed after the entry declaration andin the same task type specification orsingle task as the entry to which itapplies. This pragma specifies that thegiven entry may be used to handle aVMS asynchronous system trap (AST)resulting from a VMS system servicecall. The pragma does not affectnormal use of the entry (see 9.12a).

COMMON-OBJECT Takes an internal name denotingan object, and optionally takes anexternal designator (the name of alinker storage area) and a size asarguments. This pragma is onlyallowed at the place of a declarativeitem, and must apply to a variabledeclared by an earlier declarativeitem of the same declarative part or

8-1

package specification. The variablemust have a size that is known atcompile time, and it must not requireimplicit initialization. This pragma isnot allowed for objects declared witha renaming declaration. This pragmaenables the shared use of objects thatare stored in overlaid storage areas(see 13.9a.2.3).

COMPONENTALIGNMENT Takes an alignment choice andoptionally the simple name of an arrayor record type as arguments. When nosimple name is specified, the pragmamust occur within a declarative part orpackage specification, and the effect ofthe pragma extends to types declaredfrom the place of the pragma to theend of the innermost declarative partor package specification in whichthe pragma was declared. When asimple name is specified, the pragmaand the type declaration must bothoccur immediately within the samedeclarative part, package specification,or task specification; the declarationmust occur before the pragma. Theposition of the pragma and therestrictions on the named type aregoverned by the same rules as those fora representation clause. This pragmaspecifies the kind of alignment used forthe components of the array or recordtypes to which it applies (see 13.1a).

2 CONTROLLED Takes the simple name of an accesstype as the single argument. Thispragma is only allowed immediately'within the declarative part or packagespecification that contains thedeclaration of the access type; thedeclaration must occur before thepragma. This pragma is not allowed fora derived type. This pragma specifies

B-2

that automatic storage reclamationmust not be performed for objectsdesignated by values of the access type,except upon leaving the innermostblock statement, subprogram body, ortask body that encloses the access typedeclaration, or after leaving the mainprogram (see 4.8).

ELABORATE Takes one or more simple namesdenoting library units as arguments.This pragma is only allowedimmediately after the context clauseof a compilation unit (before thesubsequent library unit or secondaryunit). Each argument must bethe simple name of a library unitmentioned by the context clause.This pragma specifies that the

corresponding library unit bodymust be elaborated before thegiven compilation unit. If the givencompilation unit is a subunit, thelibrary unit body must be elaboratedbefore the body of the ancestor libraryunit of the subunit (see 10.5).

EXPORTEXCEPTION On VMS systems only.

Takes an internal name denoting anexception, and optionally takes anexternal designator (the name of alinker global symbol), a form (ADAor VMS), and a code (a static integerexpression that is interpreted as acondition code) as arguments. A codevalue must be specified when theform is VMS (the default if the formis not specified). This pragma is onlyallowed at the place of a declarativeitem, and must apply to an exceptiondeclared by an earlier declarativeitem of the same declarative partor package specification; it is not

8-3

allowed for an exception declaredwith a renaming declaration or for anexception declared in a generic unit.This pragma permits an Ada exceptionto be handled by programs written inanother programming language (see13.9a.3.2).

EXPORTFUNCTION Takes an internal name denotinga function, and optionally takes anexternal designator (the name of alinker global symbol), parameter types,result type, parameter mechanisms,and result mechanism as arguments.This pragma is only allowed at theplace of a declarative item, andmust apply to a function declaredby an earlier declarative item of thesame declarative part or packagespecification. In the case of a functiondeclared as a compilation unit, thepragma is only allowed after thefunction declaration and beforeany subsequent compilation unit.This pragma is not allowed for afunction declared with a renamingdeclaration, and it is not allowed for ageneric function (it may be given fora generic instantiation). This pragmapermits an Ada function to be calledfrom a program written in anotherprogramming language (see 13.9a.1.3).

EXPORTOBJECT Takes an internal name denoting anobject, and optionally takes an externaldesignator (the name of a linker globalsymbol) and size option (a linkerabsolute global symbol that will bedefined in the object module-usefulon VMS systems only) as arguments.This pragma is only allowed at theplace of a declarative item, and mustapply to a constant or a variabledeclared by an earlier declarative

8-4

item of the same declarative part orpackage specification; the declarationmust occur at the outermost level of alibrary package specification or body.The object to be exported must havea size that is known at compile time.This pragma is not allowed for objectsdeclared with a renaming declaration,and is not allowed in a generic unit.This pragma permits an Ada object tobe referred to by a routine written inanother programming language (see13.9a.2.2 ).

EXPORTPROCEDURE Takes an internal name denotinga piucedure, and optionally takesan external designator (the name ofa linker global symbol), parametertypes, and parameter mechanismsas arguments. This pragma is onlyallowed at the place of a declarativeitem, and must apply to a proceduredeclared by an earlier declarativeitem of the same declarative part orpackage specification. In the case of aprocedure declared as a compilationunit, the pragma is only allowedafter the procedure declaration andbefore any subsequent compilationunit. This pragma is not allowed fora procedure declared with a renamingdeclaration, and is not allowed for ageneric procedure (it may be given fora generic instantiation). This pragmapermits an Ada routine to be calledfrom a program written in anotherprogramming language (see 13.9a.1.3).

EXPORTYALUEDPROCEDURE Takes an internal name denotinga procedure, and optionally takesan external designator (the name ofa linker global symbol), parametertypes, and parameter mechanismsas arguments. This pragma is only

B-5

allowed at the place of a declarativeitem, and must apply to a proceduredeclared by an earlier declarative itemof the same declarative part or packagespecification. In the case of a proceduredeclared as a compilation unit, thepragma is only allowed after theprocedure declaration and before anysubsequent compilation unit. The first(or only) parameter of the proceduremust be of mode out. This pragma isnot allowed for a procedure declaredwith a renaming declaration and is notallowed for a generic procedure (it maybe given for a generic instantiation).This pragma permits an Ada procedureto behave as a function that bothreturns a value and causes side effectson its parameters when it is calledfrom a routine written in anotherprogramming language (see 13.9a.1.3).

FLOAT-REPRESENTATION On VMS systems only.

On VMS VAX systems, takes VAX_FLOAT as the single argument. OnVMS AXP systems, takes eitherVAX-FLOAT or IEEEFLOAT asthe single argument; the default isVAX FLOAT. This pragma is onlyallowed at the start of a compilation,before the first compilation unit (ifany) of the compilation. It specifiesthe choice of representation to beused for the predefined floating pointtypes in the packages SYSTEM andSTANDARD. (see 3.5.7a).

IDENT Takes a string literal of 31 or fewercharacters as the single argument. Thepragma IDENT has the following form:

pragma IDENT (string literal);

B-6

This pragma is allowed only inthe outermost declarative part ordeclarative items of a compilation unit.The given string is used to identifythe object module associated with thecompilation unit in which the pragmaIDENT occurs.

IMPORTEXCEPTION On VMS systems only.

Takes an inte.rnal name denoting anexception, and optionally takes anexternal designator (the name of a

linker global symbol), a form (ADAor VMS), and a code (a static integerexpression that is interpreted as acondition code) as arguments. A codevalue is allowed only when the formis VMS (the default if the form isnot specified). This pragma is only

allowed at the place of a declarativeitem, and must apply to an exceptiondeclared by an earlier declarative itemof the same declarative part or packagespecification; it is not allowed for anexception declared with a renamingdeclaration. This pragma permits anon-Ada exception (most notably, aVMS condition) to be handled by anAda program (see 13.9a.3.1).

IMPORT-FUNCTION Takes an internal name denotinga function, and optionally takes anexternal designator (the name of alinker global symbol), parameter types,result type, parameter mechanisms,and result mechanism as arguments.On VMS systems, a first optionalparameter is also available as anargument. The pragma INTERFACEmust be used with this pragma(see 13.9). This pragma is only allowedat the place of a declarative item, andmust apply to a function declared

8-7

by an earlier declarative item of thesame declarative part or packagespecification. In the case of a functiondeclared as a compilation unit, thepragma is only allowed after thefunction declaration and before anysubsequent compilation unit. Thispragma is allowed for a functiondeclared with a renaming declaration;it is not allowed for a generic functionor a generic function instantiation.This pragma permits a non-Adaroutine to be used as an Ada function(see 13.9a.1. 1).

IMPORTOBJECT Takes an internal name denotingan object, and optionally takes anexternal designator (the name of alinker global symbol) and size (a linkerabsolute global symbol that will bedefined in the object module-usefulon VMS systems only) as arguments.This pragma is only allowed at theplace of a declarative item, andmust apply to a variable declaredby an earlier declarative item of thesame declarative part or packagespecification. The variable must havea size that is known at compile time,and it cannot have an initial value.This pragma is not allowed for objectsdeclared with a renaming declaration.This pragma permits storage declaredin a non-Ada routine to be referred toby an Ada program (see 13.9a.2. 1).

IMPORTPROCEDURE Takes an internal name denotinga procedure, and optionally takesan external designator (the name ofa linker global symbol), parametertypes, and parameter mechanismsas arguments. On VMS systems,a first optional parameter is alsoavailable as an argument. The pragma

B-8

INTERFACE must be used with thispragma (see 13.9). This pragma is onlyallowed at the place of a declarativeitem, and must apply to a proceduredeclared by an earlier declarativeitem of the same declarative part orpackage specification. In the case of aprocedure declared as a compilationunit, the pragma is only allowed afterthe procedure declaration and beforeany subsequent compilation unit. Thispragma is allowed for a proceduredeclared with a renaming declaration;it is not allowed for a generic procedureor a generic procedure instantiation.This pragma permits a non-Ada routineto be used as an Ada procedure(see 13.9a,1.1).

IMPORTVALUEDPROCEDURE Takes an internal name denotinga procedure, and optionally takesan external designator (the name ofa linker global symbol), parametertypes, and parameter mechanismsas arguments. On VMS systems,a first optional parameter is alsoavailable as an argument. The pragmaINTERFACE must be used with thispragma (see 13.9). This pragma is onlyallowed at the place of a declarativeitem, and must apply to a proceduredeclared by an earlier declarative itemof the same declarative part or packagespecification. In the case of a proceduredeclared as a compilation unit, thepragma is only allowed after theprocedure declaration and before any'subsequent compilation unit. The first(or only) parameter of the proceduremust be of mode out. This pragmais allowed for a procedure declaredwith a renaming declaration; it is notallowed for a generic procedure. This

B-9

pragma permits a non-Ada routine thatreturns a value and causes side effectson its parameters to be used as an Adaprocedure (see 13.9a.1.1).

INLINE Takes one or more names asarguments; each name is either thename of a subprogram or the name ofa generic subprogram. This pragmais only allowed at the place of adeclarative item in a declarative partor package specification, or after alibrary unit in a compilation, but beforeany subsequent compilation unit. Thispragma specifies that the subprogrambodies should be expanded inline ateach call whenever possible; in the caseof a generic subprogram, the pragmaapplies to calls of its instantiations(see 6.3.2).

INLINEGENERIC Takes one or more names asarguments; each name is either thename of a generic declaration or thename of an i~istance of a genericdeclaration. This pragma is onlyallowed at the place of a declarativeitem in a declarative part or packagespecification, or after a library unitin a compilation, but before anysubsequent compilation unit. Eachargument must be the simple nameof a generic subprogram or package,

or a (nongeneric) subprogram orpackage that is an instance of a genericsubprogram or package declared byan earlier declarative item of thesame declarative part or packagespecification. This pragma specifiesthat inline expansion of the genericbody is desired for each instantiationof the named generic declarations orof the particular named instances;the pragma does not apply to calls of

B-1O

instances of generic subprograms(see 12.1a).

INTERFACE Takes a language name and asubprogram name as arguments. Thispragma is allowed at the place of adeclarative item, and must apply inthis case to a subprogram declaredby an earlier declarative item of thesame declarative part or packagespecification. This pragma is alsoallowed for a library unit; in this casethe pragma must appear after thesubprogram declaration, and beforeany subsequent compilation unit. Thispragma specifies the other language(and thereby the calling conventions)and informs the compiler that anobject module will be supplied for thecorresponding subprogram (see 13.9).

In DEC Ada, the pragma INTERFACEis required in combination with thepragmas IMPORT-FUNCTION,IMPORT-PROCEDURE, andIMPORTVALUEDPROCEDUREwhen any of those pragmas are used(see 13.9a.1).

INTERFACE-NAME Takes an internal name and anexternal name as arguments. Theinternal name may be an Ada simplename that denotes a subprogram oran object. If the declared entity is afunction, the internal name may be astring literal that denotes an operatorsymbol. The external name may be anystring literal; the literal is used as a •linker global symbol that is associatedwith the external subprogram orobject. This pragma is only allowedat the place of a declarative item,and must apply to an entity declaredby an earlier declarative item of the

B-il

same declarative part or packagespecification.

If this pragma applies to a subprogram,then the pragma INTERFACE mustalso apply (see 13.9). If a subprogramhas been declared as a compilationunit, the pragma is only allowed afterthe subprogram declaration and beforeany subsequent compilation unit. Thispragma is allowed for subprogramsdeclared with a renaming declaration.This pragma is not allowed for ageneric subprogram or a genericsubprogram instantiation.

If this pragma applies to an object,then the size of the object must beknown at compile time. This pragma isnot allowed for an the object declaredwith a renaming declaration.

This pragma associates an externalsymbol with the internal Ada name fora subprogram or object (see 13.9b).

LIST Takes one of the identifiers ON orOFF as the single argument. Thispragma is allowed anywhere a pragmais allowed. It specifies that listing ofthe compilation is to be continued orsuspended until a LIST pragma withthe opposite argument is given withinthe same compilation. The pragmaitself is always listed if the compiler isproducing a listing.

LONGFLOAT On VMS systems only. Also, thevalue of the pragma FLOAT_REPRESENTATION must be VAX_FLOAT.

B-12

Takes either D_FLOAT or GFLOATas the single argument. The defaultis G_FLOAT. This pragma is onlyallowed at the start of a compilation,before the first compilation unit(if any) of the compilation. It specifiesthe choice of representation to be usedfor the predefined type LONG_FLOATin the package STANDARD, and forfloating point typ? declarations withdigits specified 1. the range 7 .. 15(see 3.5.7b).

MAINSTORAGE On VMS VAX systems only.

Takes one or two nonnegative staticsimple expressions of some integer typeas arguments. This pragma is onlyallowed in the outermost declarativepart of a library subprogram; at mostone such pragma is allowed in a librarysubprogram. It has an effect only whenthe subprogram to which it applies isused as a main program. This pragmacauses a fixed-size stack to be createdfor a main task (the task associatedwith a main program), and determinesthe number of storage units (bytes)to be allocated for the stack workingstorage area or guard pages or both.The value specified for either or boththe working storage area and guardpages is rounded up to an integralnumber of pages. A value of zero forthe working storage area results in theuse of a default size; a value of zero forthe guard pages results in no guardstorage. A negative value for eitherworking storage or guard pages causesthe pragma to be ignored (see 13.2b).

7 MEMORY-SIZE Takes a numeric literal as the singleargument. This pragma is only allowedat the start of a compilation, before the

B-13

first compilation unit (if any) of thecompilation. The effect of this pragmais to use the value of the specifiednumeric literal for the definition of thenamed number MEMORY.SIZE(see 13.7).

8 OPTIMIZE Takes one of the identifiers TIMEor SPACE as the single argument.This pragma is only allowed within adeclarative part and it applies to theblock or body enclosing the declarativepart. It specifies whether time or spaceis the primary optimization criterion.

In DEC Ada, this pragma is onlyallowed immediately within adeclarative part of a body declaration.

9 PACK Takes the simple name of a record orarray type as the single argument. Theallowed positions for this pragma, andthe restrictions on the named type,are governed by the same rules as fora representation clause. The pragmaspecifies that storage minimizationshould be the main criterion whenselecting the representation of thegiven type (see 13.1).

10 PAGE This pragma has no argument, and isallowed anywhere a pragma is allowed.It specifies that the program text whichfollows the pragma should start on anew page (if the compiler is currentlyproducing a listing).

PRIORITY Takes a static expression of thepredefined integer subtype PRIORITYas the single argument. This pragma isonly allowed within the specification ofa task unit or immediately within theoutermost declarative part of a mainprogram. It specifies the priority of the

B-14

task (or tasks of the task type) or the

priority of the main program (see 9.8).

PSECT-OBJECT On VMS systems only.

Has the same syntax and the sameeffect as the pragma COMMON_OBJECT (see 13.9a.2.3).

72 SHARED Takes the simple name of a variable asthe single argument. This pragma isallowed only for a variable declared byan object declaration and whose typeis a scalar or access type; the variabledeclaration and the pragma mustboth occur (in this order) immediatelywithin the same declarative part orpackage specification. This pragmaspecifies that every read or update ofthe variable is a synchronization pointfor that variable. An implementationmust restrict the objects for whichthis pragma is allowed to objectsfor which each of direct reading anddirect updating is implemented as anindivisible operation (see 9.11).

SHARE-GENERIC On VMS systems only.

Takes one or more name - asarguments; each name is either thename of a generic declaration or thename of an instance of a genericdeclaration. This pragma is onlyallowed at the place of a declarativeitem in a declarative part or packagespecification, or afler a library unit in acompilation, but before any subsequentcompilation unit. Each argumenteither must be the simple name of ageneric subprogram or package, or itmust be a (nongeneric) subprogramor package that is an instance of ageneric subprogram or package. If theargument is an instance of a generic

B-15

4 4

subprogram or package, then it mustbe declared by an earlier declarativeitem of the same declarative part orpackage specification. This pragma

specifies that generic codc sharing isdesired for each instantiation of thenamed generic declarations or of theparticular named instances (see 12.1b).

13 STORAGEUNIT Takes a numeric literal as the singleargument. This pragma is only allowedat the start of a compilation, before the

first compilation unit (if any) of thecompilation. The effect of this pragma

is to use the value of the specifiednumeric literal for the definition of the

named number STORAGE-UNIT(see 13.7).

In DEC Ada, the only argument

allowed for this pragma is 8 (bits).

14 SUPPRESS Takes as arguments the identifierof a check and optionally also the

name of either an object, a type orsubtype, a subprogram, a task unit, ora generic unit. This pragma is onlyallowed either immediately within adeclarative part or immediately within

a package specification. In the latter

case, the only allowed form is with a

name that denotes an entity (or severaloverloaded subprograms) declaredimmediately within the packagespecification. The p. -mission to omitthe given check extends from theplace of the pragma to the end of thedeclarative region associated with theinnermost enclosing block statement orprogram unit. For a pragma given in apackage specification, the permissionextends to the end of the scope of thenamed entity.

B-16

If the pragma includes a name, thepermission to omit the given checkis further restricted: it is given onlyfor operations on the named objector on all objects of the base type of anamed type or subtype; for calls of anamed subprogram; for activations oftasks of the named task type; or forinstantiations of the 'given generic unit(see 11.7).

SUPPRESS-ALL This pragma has no argument and isonly allowed following a compilationunit. This pragma specifies thatall run-time checks in the unit aresuppressed (see 11.7).

15 SYSTEMNAME Takes an enumeration literal as thesingle argument. This pragma is onlyallowed at the start of a compilation,before the first compilation unit(if any) of the compilation. The effect ofthis pragma is to use the enumerationliteral with the specified identifierfor the definition of the constantSYSTEMNAME. This pragma isonly allowed if the specified identifiercorresponds to one of the literals of thetype NAME declared in the packageSYSTEM (see 13.7).

TASKSTORAGE Takes the simple name of a tasktype and a static expression of someinteger type as arguments. Thispragma is allowed anywhere that atask storage specification is allowed;that is, the declaration of the tasktype to which the pragma applies andthe pragma must both occur (in thisorder) immediately within the samedeclarative part, package specification,or task specification. The effect ofthis pragma is to use the value of theexpression as the number of storage

B-17

units (bytes) to be allocated as guardstorage. The value is rounded up toan appropriate boundary. A negativevalue causes the pragma to be ignored.A zero value has system-specificresults: on VMS VAX systems, a valueof zero results in no guard storage;on VMS AXP and ULTRIX systems,a value of zero results in a minimalguard area (see 13.2a).

TIMESLICE On VMS systems only.

Takes a static expression of thepredefined fixed point type DURATION(in the package STANDARD) as thesingle argument. This p-agma is onlyallowed in the outermost declarativepart of a library subprogram, and atmost one such pragma is allowed in alibrary subprogram. It has an effectonly when the subprogram to whichit applies is used as a main program.This pragma causes the task schedulerto turn time slicing on or off and, onsome systems, to limit the amount ofcontinuous execution time given to atask(see 9.8a; see also the appropriaterun-time reference manual forimplementation differences acrosssystems).

TITLE Takes a title or a subtitle string, orboth, as arguments. The pragmaTITLE has the following form:

pragma TITLE (titling-option[,titling-option]);

titling-option[TITLE ->] string literal

I [SUBTITLE =>] string_literal

6-18

This pragma is allowed anywhere apragma is allowed; the given stringssupersede the default title and/orsubtitle portions of a compilationlisting.

VOLATILE Takes the simple name of a variableas the single argument. This pragmais only allowed for a variable declaredby an object declaration. The variabledeclaration and the pragma mustboth occur (in this order) immediatelywithin the same declarative part orpackage specification. The pragmamust appear before any occurrence ofthe name of the variable other thanin an address clause or in one of theDEC Ada pragmas IMPORTOBJECT,EXPORTOBJECT, COMMON-OBJECT, or PSECTOBJECT. Thevariable cannot be declared by arenaming declaration. The pragmaVOLATILE specifies that the variablemay be modified asynchronously. Thispragma instructs the compiler to obtainthe value of a variable from memoryeach time it is used (see 9.11).

8-19

FImplementation-Dependent Characteristics

Note

This appendix is not part of the standard definition of the Adaprogramming language.

This appendix summarizes the implementation-dependent characteristics of

DEC Ada by presenting the following:

" Lists of the DEC Ada pragmas and attributes.

"* The specifications of the package SYSTEM.

* The restrictions on representation clauses and unchecked type conversions.

* The conventions for names denoting implementation-dependentcomponents in record representation clauses.

* The interpretation of expressions in address clauses.

* The implementation-dependent characteristics of the input-outputpackages.

* Other implementation-dependent characteristics.

See the relevant run-time reference manual for additional implementation-specific details.

F.1 Implementation-Dependent PragmasDEC Ada provides the following pragmas, which are defined elsewhere in thetext. In addition, DEC Ada restricts the predefined language pragmas INLINEand INTERFACE. See Annex B for a descriptive pragma summary.

F-1 Implementation-Dependent Pragmas F 1

DEC Ada systems

Pragma on which It applies Section

AST_ENTRY OpenVMS 9.12a

COMMONOBJECT All 13.9a.2.3

COMPONENTALIGNMENT All 13.1a

EXPORT-EXCEPTION OpenVMS 13.9a.3.2

EXPORTFUNCTION All 13.9a.1.3

EXPORT OBJECT All 13.9a.2.2

EXPORTPROCEDURE A!. 13.9a.1.3

EXPORTVALUEDPROCEDURE All 13.9a.1.3FLOATREPRESENTATION OpenVMS 3,5.7a

IDENT All Annex BIMPORTEXCEPTION OpenVMS 13.9a.3.1

IMPORTFUNCTION All 13.9a.1.1IMPORT-OBJECT All 13.9a.2.1

IMPORTPROCEDURE All 13.9a.1.1

IMPORTVALUEDPROCEDURE All 13.9a.1.1

INLINEGENERIC All 12.la

INTERFACENAME All 13.9b

LONGFLOAT OpenVMS 3.5.7b

MAINSTORAGE OpenVMS VAX 13.2b

PSECTOBJECT OpenVMS 13.9a.2.3

SHAREGENERIC OpenVMS 12.1b

SUPPRESS-ALL All 11.7

TASKSTORAGE All 13.2a

TIMESLICE OpenVMS 9.8a

TITLE All Annex B

VOLATILE All 9.11

F.2 Implementation-Dependent AttributesDEC Ada provides the following attributes, which are defined elsewhere in thetext. See Annex A for a descriptive attribute summary,

F.2 Implementation-Dependent Attributes F-2

DEC Ada systems

Attribute on which It applies Section

AST_ENTRY OpenVMS 9.12aBIT All 13.7.2MACHINE-SIZE All 13.7.2

NULLPARAMETER All 13.9a.1.2

TYPECLASS All 13.7a.2

F.3 Specification of the Package SystemDEC Ada provides a system-specific version of the package SYSTEM foreach system on which it is supported. The individual package SYSTEMspecifications appear in the fol'owing sections.

F.3.1 The Package System on OpenVMS VAX Systemspackage SYSTEM is

type NAME is-- DEC Ada implementations

(VAX VMS, VAXELN, OpenVMS AXP, RISCULTRIX,-- XD Ada implementationsMILSTD_1750A, MC68000, MC68020, MC68040, CPU32);

for NAME use (1, 2, 7, 8, 101, 102, 103, 104, 105);

SYSTEM NAME constant NAME := VAX VMS;STORAGE-UNIT constant := 8;MEMORY SIZE constant 2=2"'31-1;MAXINT constant 2**31-1;MIN INT constant -(2"'31);MAX-DIGITS constant 33;MAX MANTISSA constant 31;FINE DELTA constant 2.0"*(-31);TICK constant 10.0"*(-2);

subtype PRIORITY is INTEGER range 0 .. 15;

type INTEGER 8 is range -128 .. 127;for INTEGER 8'SIZE use 8;

type INTEGER 16 is range -32_768 .. 32_767;for INTEGER_16'SIZE use 16;

type INTEGER 32 is range -2_147_483_648 .. 2_147_483_647;for INTEGER_32'SIZE use 32;

type LARGESTINTEGER is range MININT _. MAX INT;

F-3 The Package System on OpenVMS VAX Systems F.3.1

-- Address type

type ADDRESS is private;

ADDRESS ZERO Constant ADDRESS;NO ADDR7 constant ADDRESS;NULLADDRESS constant ADDRESS;

-- Note that because ADDRESS is a private type-- the functions "=" and "/=" are already available and-- do not have to be explicitly defined

-- function "=" (LEFT, RIGHT ADDRESS) return BOOLEAN;-- function "/" (LEFT, RIGHT ADDRESS) return BOOLEAN;

function "<" (LEFT, RIGHT ADDRESS) return BOOLEAN;function "<=" (LEFT, RIGHT ADDRESS) return BOOLEAN;function ">" (LEFT, RIGHT ADDRESS) return BOOLEAN;function ">=" (LEFT, RIGHT ADDRESS) return BOOLEAN;

generictype TARGET is private;

function FETCHFROMADDRESS (A ADDRESS) return TARGET;

generictype TARGET is private;

procedure ASSIGN TO ADDRESS (A ADDRESS; T TARGET);

-- DEC Ada floating point type declarations for the VAX-- floating point data types

type F FLOAT is {digits 6};type D -FLOAT is (digits 9};type G FLOAT is (digits 15);type H-FLOAT is (digits 33);

type TYPE-CLASS is (TYPE-CLASSENUMERATION,TYPE CLASS INTEGER,TYPE CLASS FIXED POINT,TYPE CLASS-_FLOATINGPOINT,TYPE CLASS ARRAY,TYPE CLASSRECORD,TYPE CLASSACCESS,TYPECLASS TASK,TYPE- CLASS_ADDRESS);

-- AST handler type

type ASTHANDLER is limited private;

NOASTHANDLER : constant AST-HANDLER;

-- Non-Ada exception

NONADAERROR : exception;

-- Hardware-oriented types and functions

F.3.1 The Package System on OpenVMS VAX Systems F-4

type BIT ARRAY is array (INTEGER range <>) of BOOLEAN;pragma PACK(BITARRAY);

subtype BIT ARRAY 8 is BIT ARRAY (0 7);subtype BIT -ARRAY 16 is BIT ARRAY (0 15);subtype BIT ARRAY-32 is BIT-ARRAY (0 31);subtype BIT-ARRAY-64 is BIT-_ARRAY (0 63);

type UNSIGNED BYTE is range 0 .. 255;for UNSIGNED-BYTE' SIZE use 8;

function "not" (LEFT UNSIGNEDBYTE) return UNSIGNEDBYTE;function "and" (LEFT, RIGHT UNSIGNEDBYTE) return UNSIGNED BYTE;function "or" (LEFT, RIGHT UNSIGNEDBYTE) return UNSIGNED-BYTE;function "xor" (LEFT, RIGHT UNSIGNEDBYTE) return UNSIGNEDBYTE;

function TO UNSIGNED BYTE (X BIT ARRAY_8) return UNSIGNED BYTE;function TO-BIT ARRAY_8 (X UNSIGNEDBYTE) return BITARRAY 8;

type UNSIGNEDBYTEARRAY is array (INTEGER range <>) of UNSIGNEDBYTE;

type UNSIGNED WORD is range 0 .. 65535;for UNSIGNEDWORD'SIZE use 16;

function "not" (LEFT UNSIGNEDWORD) return UNSIGNEDWORD;function "and" (LEFT, RIGHT UNSIGNEDWORD) return UNSIGNED_WORD;function "or' (LEFT, RIGHT UNSIGNEDWORD) return UNSIGNEDWORD;function "xor" (LEFT, RIGHT UNSIGNEDWORD) return UNSIGNEDWORD;

function TOUNSIGNED WORD (X BIT ARRAY 16) return UNSIGNEDWORD;

function TO BIT ARRAY_16 (X UNSIGNEDWORD) return BITARRAY_16;

type UNSIGNEDWORDARRAY is array (INTEGER range <>) of UNSIGNEDWORD;

type UNSIGNED LONGWORD is range -2_147_483_648 .. 2147_483 647;for UNSIGNEDLONGWORD'SIZE use 32;

function "not" (LEFT UNSIGNEDLONGWORD) return UNSIGNED LONGWORD;function "and" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNEDLONGWORD;function "or" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNED LONGWORD;function "xor" (LEFT, RIGHT UNSIGNED LONGWORD) return UNSIGNEDLONGWORD;

function TOUNSIGNED LONGWORD ( : BIT ARRAY 32) return UNSIGNED LONGWORD;function TO-BITARRAY_32 (X : UNSIGNED_-LONGWORD) return BITARRAY_32;

type UNSIGNED LONGWORD ARRAY isarray (INTEGER range <>) of UNSIGNEDLONGWORD;

F-5 The Package System on OpenVMS VAX Systems F.3.1

type UNSIGNEDQUADWORD isrecord

LO UNSIGNED LONGWORD;Li UNSIGNED-LONGWORD;

end record;for UNSIGNED QUADWORD'SIZE use 64;for UNSIGNED_QUADWORD use

recordat mod 8;

end record;

function "not" (LEFT UNSIGNED QUADWORD) return UNSIGNED QUADWORD;function "and" (LEFT, RIGHT UNSIGNEDQUADWORD) return UNSIGNEDQUADWORD;function "or" (LEFT, RIGHT UNSIGNED QUADWORD) return UNSIGNED QUADWORD;function "xor" (LEFT, RIGHT UNSIGNED_QUADWORD) return UNSIGNEDQUADWORD;

function TO UNSIGNED QUADWORD (X : BIT ARRAY 64) return UNSIGNED QUADWORD;function TO-BITARRAY_64 (X : UNSIGNED_-QUADWORD) return BITARRAY_64;

type UNSIGNED QUADWORD ARRAY isarray (INTEGER range <>) of UNSIGNEDQUADWORD;

function TO ADDRESS (X INTEGER) return ADDRESS;function TO-ADDRESS (X UNSIGNED LONGWORD) return ADDRESS;function TOADDRESS (X (universal__integer)) return ADDRESS;

function TO INTEGER (X ADDRESS) return INTEGER;function TO-UNSIGNEDLONGWORD (X ADDRESS) return UNSIGNEDLONGWORD;

function TOUNSIGNEDLONGWORD (X ASTHANDLER) return UNSIGNEDLONGWORD;

Conventional names for static subtypes of type UNSIGNED LONGWORD

F.3.1 The Package System on OpenVMS VAX Systems F-6

subtype UNSIGNED_1 is UNSIGNED LONGWORD range 0 2** 1-1;subtype UNSIGNED 2 is UNSIGNED7LONGWORD range 0 2** 2-1;subtype UNSIGNED_3 is UNSIGNED-LONGWORD range 0 2** 3-1;subtype UNSIGNED_4 is UNSIGNED LONGWORD range 0 2** 4-1;subtype UNSIGNED_5 is UNSIGNED LONGWORD range 0 2** 5-1;subtype UNSIGNED_6 is UNSIGNED LONGWORD range 0 2** 6-1;subtype UNSIGNED_7 is UNSIGNED LONGWORD range 0 2** 7-1;subtype UNSIGNED_8 is UNSIGNED-LONGWORD range 0 2** 8-1;subtype UNSIGNED_9 is UNSIGNED LONGWORD range 0 2** 9-1;subtype UNSIGNED_10 is UNSIGNED LONGWORD range 0 2**l9-1;subtype UNSIGNED-11 is UNSIGNED -LONGWORD range 0 2**"1-1;subtype UNSIGNED_12 is UNSIGNEDLONGWORD range 0 2**12il;subtype UNSIGNED_13 is UNSIGNED LONGWORD range 0 2**13-1;subtype UNSIGNED_14 is UNSIGNED LONGWORD range 0 2**14-1;subtype UNSIGNED 15 is UNSIGNED-LONGWORD range 0 2**15-1;subtype UNSIGNED_16 is UNSIGNED LONGWORD range 0 2**16-1;subtype UNSIGNED_17 is UNSIGNED LONGWORD range 0 2**17-1;subtype UNSIGNED_18 is UNSIGNED LONGWORD range 0 2**18-1;subtype UNSIGNED_19 is UNSIGNED LONGWORD range 0 2**19-1;subtype UNSIGNED-20 is UNSIGNED LONGWORD range 0 2**20-1;subtype UNSIGNED_21 is UNSIGNED LONGWORD range 0 2**21-1;subtype UNSIGNED- 22 is UNSIGNED -LONGWORD range 0 2**22-1;subtype UNSIGNED_23 is UNSIGNED LONGWORD range 0 2**23-1;subtype UNSIGNED-24 is UNSIGNED-LONGWORD, range 0 2**24-1;subtype UNSIGNED_25 is UNSIGNED LONGWORD range 0 2**25-1;subtype UNSIGNED_26 is UNSIGNEDLONGWORD range 0 2**26-1;subtype UNSIGNED_27 is UNSIGNED -LONGWORD range 0 2**27-1;subtype UNSIGNED_28 is UNSIGNED LONGWORD range 0 2**28-1;subtype UNSIGNED_29 is UNSIGNED LONGWORD range 0 2**29-1;subtype UNSIGNED_30 is UNSIGNED -LONGWORD range 0 2**30-1;subtype UNSIGNED-31 is UNSIGNED-LONGWORD range 0 2'*30-1;

Functions for obtaining global symbol values

function IMPORT VALUE (SYMBOL : STRING) return UNSIGNED LONGWORD;function IMPORT-ADDRESS (SYMBOL : STRING) return ADDRESS;

VAX d.vice and process register operations

function READ REGISTER (SOURCE UNSIGNED BYTE) return UNSIGNED BYTE;function READ -REGISTER (SOURCE UNSIGNEDWORD) return UNSIGNED-WORD;function READ REGISTER (SOURCE UNSIGNEDLONGWORD)

return UNSIGNED LONGWORD;

procedure WRITE REGISTER(SOURCE UNSIGNED BYTE;TARGET out UNSIGNED BYTE);

procedure WRITEREGISTER(SOURCE UNSIGNED WORD;TARGET out UNSIGNELD WORD);

procedure WRITE REGISTER(SOURCE UNSIGNED LONGWORD;TARGET out UNSIGNED LONGWORD);

function MFPR (REG NUMBER INTEGER) return UNSIGNEDLONGWORD;procedure MTPR (REG NUMBER INTEGER;

SOURCE UNSIGNEDLONGWORD);

F-7 The Package System on OpenVMS VAX Systems F.3.1

-- VAX interlocked-instruction procedures

procedure CLEARINTERLOCKED (BIT in out BOOLEAN;OLD VALUE out BOOLEAN);

procedure SETINTERLOCKED (BIT : in out BOOLEAN;OLDVALUE out BOOLEAN);

type ALIGNEDWORD isrecord

VALUE : SHORT-INTEGER;end record;

for ALIGNED WORD userecord

at mod 2;end record;

procedure ADDINTERLOCKED (ADDEND in SHORTINTEGER;AUGEND in out ALIGNED WORD;SIGN out INTEGER);

type INSQSTATUS is (OK NOT FIRST, FAIL NO LOCK, OKFIRST);for INSQ_STATUS use (0, 1, 2);

type REMQSTATUS is (OK _NOT EMPTY, FAIL NO LOCK,OKEMPTY, FAILWAS_EMPTY);

for REMQSTATUS use (0, 1, 2, 3);

procedure INSQHI (ITEM in ADDRESS;HEADER in ADDRESS;STATUS out INSQSTATUS);

procedure REMQHI (HEADER in ADDRESS;ITEM out ADDRESS;STATUS out REMQ STATUS);

procedure INSQTI (ITEM in ADDRESS;HEADER in ADDRESS;STATUS out INSQSTATUS);

procedure REMQTI (HEADER in ADDRESS;ITEM Out ADDRESS;STATUS out REMQSTATUS);

private

-- Not showr

end SYSTEM;

F.132 The Package System on OpenVMS AXP Systems F-8

F.3.2 The Package System on OpenVMS AXP Systemspackage SYSTEM is

type NAME is-- DEC Ada implomentations

(VAXVMS, VAXELN, OpenVMS AXP, RISCULTRIX,-- XD Ada implementationsMILSTD_1750A, MC68000, MC68020, MC68040, CPU32);

for NAME use (1, 2, 7, 8, 101, 102, 103, 104, 105);

SYSTEM NAME constant NAME := OpenVMSAXP;STORAGE UNIT constant 8;MEMORYSIZE constant 2**31-1;MAX INT constant 2**31-1;MIN INT constant := 2"'31);MAX DIGITS constant 15;MAX-MANTISSA constant 31;FINEDELTA constant :=2.0*(-31;TICK constant 10.0"*(-3);

subtype PRIORITY is INTEGER range 0 .. 15;

type INTEGER 8 is range -128 .. 127;for INTEGER_8' SIZE use 8;

type INTEGER 16 is range -32_768 .. 32_767;for INTEGER_16' SIZE use 16;

type INTEGER 32 is range -2 147 483 648 .. 2147 483 647;for INTEGER_32'SIZE use 32;

type LARGESTINTEGER is range MININT .. MAX INT;

-- Address type

type ADDRESS is private;

ADDRESS ZERO constant ADDRESS;NO ADDR- constant ADDRESS;NULLADDRESS constant ADDRESS;

-- Note that because ADDRESS is a private type-- the functions "=" and "/=" are already available and-- do not have to be explicitly defined

-- function "=" (LEFT, RIGHT ADDRESS) return BOOLEAN;-- function "/=" (LEFT, RIGHT ADDRESS) return BOOLEAN;

function "<' (LEFT, RIGHT ADDRESS) return BOOLEAN;function "<=" (LEFT, RIGHT ADDRESS) return BOOLEAN;function ">" (LEFT, RIGHT ADDRESS) return BOOLEAN;function ">=" (LEFT, RIGHT ADDRESS) return BOOLEAN;

generictype TARGET is private;

function FETCHFROM ADDRESS (A : ADDRESS) return TARGET;

F-9 The Package System on OpenVMS AXP Systems F.3.2

generictype TARGET is private;

procedure ASSIGN TO ADDRESS (A : ADDRESS; T : TARGET);

-- DEC Ada floating point type declarations for the VAX-- floating point data types

type F FLOAT is (digits 61;type D-FLOAT is (digits 9);type G7FLOAT is (digits 15);

-- DEC Ada floating point type declarations for the IEEE-- floating point data types

type IEEE SINGLE FLOAT is (digits 6);type IEEE-DOUBLE_-FLOAT is (digits 15);

type TYPE-CLASS is (TYPECLASSENUMERATION,TYPE CLASS INTEGER,TYPE CLASS-FIXED POINT,TYPE CLASSFLOATINGPOINT,TYPE CLASS ARRAY,TYPE CLASS RECORD,TYPE CLASS-ACCESS,TYPECLASS TASK,TYPECLASSADDRESS);

AST handler type

type AST-HANDLER is limited private;

NOASTHANDLER : constant ASTHANDLER;

Non-Ada exception

NONADAERROR : exception;

Hardware-oriented types and functions

type BIT ARMAY is array (INTEGER range <>) of BOOLEAN;pragma PACK(BITARRAY);

subtype BIT ARRAY_8 is BITARRAY (0 7);subtype BIT ARRAY_16 is BITARRAY (0 15);subtype BIT-ARRAY_32 is BIT-ARRAY (0 31);subtype BITARRAY64 is BIT-_ARRAY (0 0);

type UNSIGNED BYTE is range 0 _ 255;for UNSIGNED7BYTE' SIZE use 8;

function "not" (LEFT UNSIGNED BYTE) return UNSIGNEDBYTE;function "and" (LEFT, RIGHT UNSIGNED BYTE) return UNSIGNEDBYTE;function "or" (LEFT, RIGHT UNSIGNED BYTE) return UNSIGNED BYTE;function "xor" (LEFT, RIGHT UNSIGNEDBYTE) return UNSIGNEDBYTE;

function TO UNSIGNED BYTE (X BIT ARRAY 8) return UNSIGNED BYTE;function TOBITARRAY_8 (X UNSIGNEDBYTE) return BIT ARRAY_8;

F.3.2 The Package System on OpenVMS AXP Systems F-10

type UNSIGNEDBYTE_ARRAY is array (INTEGER range <>) of UNSIGNEDBYTE;

type UNSIGNED WORD is range 0 . 65535;for UNSIGNED-WORD' SIZE use 16;

function "not" (LEFT UNSIGNED WORD) return UNSIGNEDWORD;function "and" (LEFT, RIGHT UNSIGNED WORD) return UNSIGNED WORD;function "or" (LEFT, RIGHT UNSIGNEDWORD) return UNSIGNED WORD;function "xor" (LEFT, RIGHT UNSIGNED_-tORD) return UNSIGiED_-WORD;

function TO UNSIGNED WORD (X BIT ARRAY 16) return UNSIGNED WORD;

function TO-BIT_ARRAY_16 (X UNSIGNED_WORD) return BITARIAY_16;

type UNSIGNEDWORDARRAY is array (INTEGER range <>) of UNSIGNEDWORD;

type UNSIGNED LONGWORD is range -2_147 483 648 .. 2147_483 647;for UNSIGNED LONGWORD'SIZE use 32;

function "not" (LEFT : UNSIGNED LONGWORD) return UNSIGNED LONGWORD;function "and" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNED-LONGWORD;function "or" (LEFT, RIGHT UNSIGNED LONGWORD) return UNSIGNED LONGWORD;function "xor" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNEDLONGWORD;

function TO UNSIGNED LONGWORD (X : BIT ARRAY 32) return UNSIGNED LONGWORD;function TO-BITARRAY_32 (X : UNSIGNED-LONGWORD) return BITARRAY_32;

type UNSIGNED LONGWORD ARRAY isarray (INTEGER range <>) of UNSIGNEDLONGWORD;

type UNSIGNEDQUADWORD isrecord

LO UNSIGNED LONGWORD;L: UNSIGNED-LONGWORD;

end record;for UNSIGNED QUADWORD'SIZE use 64;for UNSIGNED QUADWORD use

recordat mod 8;

end record;

function "not" (LEFT UNSIGNED QUADWORD) return UNSIGNED QUADWORD;function "and" (LEFT, RIGHT UNSIGNED QUADWORD) return UNSIGNED QUADWORD;function "or" (LEFT, RIGHT UNSIGNED QUADWORD) return UNSIGNED QUADWORD;function "xor" (LEFT, RIGHT UNSIGNEDQUADWORD) return UNSIGNEDQUADWORD;

function TO UNSIGNED QUADWORD (X : BIT ARRAY 64) return UNSIGNED QUADWORD;function TOBITARRAY_64 (X : UNSIGNED-QUADWORD) return BITARRAY_64;

type UNSIGNEDQUADWORD ARRAY isarray (INTEGER range <>) of UNSIGNEDQUADWORD;

function TOADDRESS (X INTEGER) return ADDRESS;function TOADDRESS (X UNSIGNED LONGWORD) return ADDRESS;function TOADDRESS (X (universal integerl) return ADDRESS;

function TO INTEGER (X ADDRESS) return INTEGER;function TO-UNSIGNEDLONGWORD (X ADDRESS) return UNSIGNEDLONGWORD;

F-11 The Package System on OpenVMS AXP Systems F.3.2

function TOUNSIGNEDLONGWORD (X : AST-HANDLER) return UNSIGNEDLONGWORD;

Conventional names for static subtypes of type UNSIGNED LONGWORD

subtype UNSIGNED 1 is UNSIGNED LONGWORD range 0 2** 1-1;subtype UNSIGNED 2 is UNSIGNED LONGWORD range 0 2** 2-1;subtype UNSIGNED_3 is UNSIGNED LONGWORD range 0 2** 3-1;subtype UNSIGNED_4 is UNSIGNED LONGWORD range 0 2** 4-1;subtype UNSIGNED_5 is UNSIGNED LONGWORD range 0 2** 5-1;subtype UNSIGNED_6 is UNSIGNED LONGWORD range 0 2** 6-1;subtype UNSIGNED_7 is UNSIGNED LONGWORD range 0 2** 7-1;subtype UNSIGNED_8 is UNSIGNED LONGWORD range 0 2** 8-1;subtype UNSIGNED_9 is UNSIGNED LONGWORD range 0 2** 9-1;subtype UNSIGNED_10 is UNSIGNED LONGWORD range 0 2**10-1;subtype UNSIGNED_11 is UNSIGNED LONGWORD range 0 2**11-1;subtype UNSIGNED 12 is UNSIGNED -LONGWORD range 0 2**12-1;subtype UNSIGNED_13 is UNSIGNED -LONGWORD range 0 2**13-1;subtype UNSIGNED_14 is UNSIGNED LONGWORD range 0 2**14-1;subtype UNSIGNED-15 is UNSIGNED-LONGWORD range 0 2**15-1;subtype UNSIGNED_16 is UNSIGNED LONGWORD range 0 2**16-1;subtype UNSIGNED_17 is UNSIGNED-LONGWORD range 0 2**17-1;subtype UNSIGNED_18 is UNSIGNED LONGWORD range 0 2*.18-1;subtype UNSIGNED_19 is UNSIGNED -LONGWORD range 0 2**19-1;subtype UNSIGNED 20 is UNSIGNED LONGWORD range 0 2**20-1;subtype UNSIGNED_21 is UNSIGNED LONGWORD range 0 2**21-1;subtype UNSIGNED_22 is UNSIGNED LONGWORD range 0 2**22-1;subtype UNSIGNED_23 is UNSIGNED LONGWORD range 0 2**23-1;subtype UNSIGNED_24 is UNSIGNED LONGWORD range 0 2**24-1;subtype UNSIGNED_25 is UNSIGNED LONGWORD range 0 2**25-1;subtype UNSIGNED_26 is UNSIGNED LONGWORD range 0 2*"26-1;subtype UNSIGNED_27 is UNSIGNED LONGWORD range 0 2**27-1;subtype UNSIGNED_28 is UNSIGNED LONGWORD range 0 2**28-1;subtype UNSIGNED_29 is UNSIGNED LONGWORD range 0 .. 2**29-1;subtype UNSIGNED_30 is UNSIGNED LONGWORD range 0 .. 2*"30-1;subtype UNSIGNED_31 is UNSIGNEDLONGWORD range 0 .. 2**31-1;

-- Function for obtaining global symbol values

function IMPORT-VALUE (SYMBOL : STRING) return UNSIGNEDLONGWORD;

private

-- Not shown

end SYSTEM;

F.3.3 The Package System on ULTRIX Systems F-12

F.3.3 The Package System on ULTRIX Systemspackage SYSTEM is

type NAME is (RISCULTRIX);for NAME use (RISCULTRIX => 6);

SYSTEM NAME constant NAME := RISCULTRIX;STORAGE UNIT constant 8;MEMORY SIZE constant 2**31-1;MAX INT constant 2**31-1;MININT constant -(2"'31);MAXDIGITS constant .15;MAX MANTISSA constant 31;FINE DELTA constant 2.0,*(-31);TICK constant 3.906 * 10.0"*(-3);

subtype PRIORITY is INTEGER range 0 .. 15;

-- Address type

type ADDRESS is private;

ADDRESSZERO : constant ADDRESS;

function "+" (LEFT ADDRESS; RIGHT INTEGER) return ADDRESS;function "+" (LEFT INTEGER; RIGHT ADDRESS) return ADDRESS;function ... (LEFT ADDRESS; RIGHT ADDRESS) return INTEGER;function "-" (LEFT ADDRESS; RIGHT INTEGER) return ADDRESS;

-- function "=" (LEFT, RIGHT ADDRESS) return BOOLEAN;-- function "/=" (LEFT, RIGHT ADDRESS) return BOOLEAN;

function "<" (LEFT, RIGHT ADDRESS) return BOOLEAN;function "<=" (LEFT, RIGHT ADDRESS) return BOOLEAN;function ">" (LEFT, RIGHT ADDRESS) return BOOLEAN;function ">=" (LEFT, RIGHT ADDRESS) return BOOLEAN;

-- Note that because ADDRESS is a private type-- the functions "=" and "/=" are already available and-- do not have to be explicitly defined

generictype TARGET is private;

function FETCHFROMADDRESS (A ADDRESS) return TARGET;

generictype TARGET is private;

procedure ASSIGNTOADDRESS (A ADDRESS; T ; TARGET);

-- DEC Ada floating point type declarations for the IEEE-- floating point data types

type IEEE SINGLE FLOAT is (digits 6);type IEEE-DOUBLEFLOAT is (digits 15);

F-I3 The Package System on ULTRIX Systems F3.3

type TYPE-CLASS is (TYPE__CLASSENUMERATION,TYPE CLASS INTEGER,TYPE CLASS FIXED POINT,TYPE CLASS FLOATINGPOINT,TYPE CLASS ARRAY,TYPECLASS RECORD,TYPE CLASS ACCESS,TYPE-CLASS-TASK,TYPECLASSADDRESS);

Non-Ada exception

NON ADAERROR : exception;

Hardware-oriented types and functions

type BIT ARRAY is array (INTEGER range <>) of BOOLEAN;pragma PACK(BITARRAY);

subtype BIT ARRAY 8 is BITARRAY (0 7);subtype BIT-ARRAY-16 is BITARRAY (0 15);subtype BIT -ARRAY 32 is BIT ARRAY (0 31);subtype BIT ARPAY-64 is BIT ARRAY (0 63);

type UNSIGNED BYTE is range 0 .. 255;for UNSIGNEDBYTE'SIZE use 8;

function "not" (LEFT UNSIGNED BYTE) return UNSIGNED BYTE;function "and" (LEFT, RIGHT UNSIGNED BYTE) return UNSIGNED7BYTE;function "or" (LEFT, RIGHT UNSIGNED-BYTE) return UNSIGNEDBYTE;function "xor" (LEFT, RIGHT UNSIGNEDBYTE) return UNSIGNEDBYTE;

function TC UNSIGNED BYTE (X BIT ARRAY 8) return UNSIGNED-BYTE;function TO-BITARRAY_8 (X : UNSIGNEDBYTE) return BITARRAY_8;

type UNSIGNEDBYTE_ARRAY is array (INTEGER range <>) of UNSIGNEDBYTE;

type UNSIGNED WORD is range 0 .. 65535;for UNSIGNEDWORD'SIZE use 16;

function "not" (LEFT UNSIGNEDWORD) return UNSIGNED WORD;function "and" (LEFT, RIGHT UNSIGNEDWORD) return UNSIGNEDWORD;function "or" (LEFT, RIGHT UNSIGNED WORD) return UNSIGNEDWORD;function "xor" (LEFT, RIGHT UNSIGNEDWORD) return UNSIGNED__WORD;

function TO UNSIGNED WORD (X BITARRAY_16) return UNSIGNEDWORD;function TO-BIT ARRAY_16 (X UNSIGNEDWORD) return BITARRAY 16;

type UNSIGNEDWORD ARRAY is array (INTEGER range <>) of UNSIGNEDWORD;

type UNSIGNED LONGWORD is range MIN INT .. MAXINT;for UNSIGNEDLONGWORD' SIZE use 32;

function "not" (LEFT UNSIGNED LONGWORD) return UNSIGNED LONGWORD;function "and" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNEDLONGWORD;function "or" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNED LONGWORD;function "xor" (LEFT, RIGHT UNSIGNEDLONGWORD) return UNSIGNEDLONGWORD;

F.3.3 The Package System on ULTRIX Systems F-14

function TO UNSIGNED LONGWORD (X : BITARRAY_32)return UNSIGNED LONGWORD;

function TOBITARrAY_32 (X : UNSIGNED LONGWORD) return BIT ARRAY_32;

type UNSIGNED LONGWORD ARRAY isarray (INTEGER range <>) of UNSIGNEDLONGWORD;

type UNSIGNED QUADWORD is recordLO UNSIGNED LONGWORD;L1 UNSIGNED LONGWORD;end record;

for UNSIGNEDQUADWORD'SIZE use 64;

function "not" (LEFT UNSIGNEDQUADWORD) return UNSIGNEDQUADWORD;function "and" (LEFT, RIGiIT UNSIGNED QUADWORD) return UNSIGNED QUADWORD;function "or" (LEFT, RIGHT UNSIGNED QUADWORD) return UNSIGNEDQUADWORD;function "xor" (LEFT, RIGHT UNSIGNED QUADWORD) return UNSIGNEDQUADWORD;

function TO UNSIGNED QUADWORD (X : BITARRAY_64)return UNSIGNED QUADWORD;

function TO_BITARRAY_64 (X : UNSIGNEDQUADWORD) return BITARRAY_64;

type UNSIGNEDQUADWORDARRAZ isarray (INTEGER range <>) of UNSIGNEDQUADWORD;

function TO ADDRESS (X INTEGER) return ADDRESS;function TO-ADDRESS (X UNSIGNED LONGWORD) return ADDRESS;function TOADDRESS (X (universal integer)) return ADDRESS;

function TOINTEGER (X ADDRESS) return INTEGER;function TO-UNSIGNEDLONGWORD (X ADDRESS) return UNSIGNEDLONGWORD;

Conventional names for static subtypes of type UNSIGNED LONGWORD

subtype UNSIGNED 1 is UNSIGNED LONGWORD range 0 2** 1-1;subtype UNSIGNED 2 is UNSIGNED-LONGWORD range 0 2** 2-1;subtype UNSIGNED-3 is UNSIGNED-LONGWORD range 0 2** 3-1;subtype UNSIGNED-4 is UNSIGNED-LONGWORD range 0 2** 4-1;subtype UNSIGNED -5 is UNSIGNED -LONGWORD range 0 2** 5-1;subtype UNSIGNED 6 is UNSIGNED LONGWORD range 0 2** 6-1;subtype UNSIGNED-7 is UNSIGNED-LONGWORD range 0 2** 7-1;subtype UNSIGNED 8 is UNSIGNED LONGWORD range 0 2** 8-1;subtype UNSIGNED79 is UNSIGNED-LONGWORD range 0 2** 9-1;subtype UNSIGNED_10 is UNSIGNED LONGWORD range 0 2**10-1;subtype UNSIGNED 11 is UNSIGNED LONGWORD range 0 2**11-1;subtype UNSIGNED 12 is UNSIGNED LONGWORD range 0 2**12-1;subtype UNSIGNED 13 is UNSIGNED LONGWORD range 0 2**13-1;subtype UNSIGNED 14 is UNSIGNED LONGWORD range 0 2**14-1;subtype UNSIGNED 15 is UNSIGNED-LONGWORD range 0 2**15-1;subtype UNSIGNED 16 is UNSIGNED -LONGWORD range 0 2**16-1;subtype UNSIGNED 17 is UNSIGNED LONGWORD range 0 2**17-1;subtype UNSIGNED_18 is UNSIGNED LONGWORD range 0 2**18-1;subtype UNSIGNED -19 is UNSIGNED LONGWORD range 0 2**19-1;subtype UNSIGNED-20 is UNSIGNED-LONGWORD range 0 2**20-1;

F-15 The Package System on ULTRIX Systems F.3.3

subtype UNSIGNED 21 is UNSIGNED LONGWORD range 0 2**21-1;subtype UNSIGNED 22 is UNSIGNED-LONGWORD range 0 .. 2**22-1;subtype UNSIGNED-23 is UNSIGNED-LONGWORD range 0 .. 2**23-1;subtype UNSIGNED-24 is UNSIGNED-LONGWORD range 0 2**24-1;subtype UNSIGNED -25 is UNSIGNED-LONGWORD range 0 2**25-1;subtype UNSIGNED-26 is UNSIGNEu-LONGWOi• range 0 .. 2**26-1lsubtype UNSIGNED 27 is UNSIGNED LONGWORD range 0 2**27-1;subtype UNSIGNED 28 is UNSIGNED LONGWORD range 0 .. 2**28-1;subtype UNSIGNED 29 is UNSIGNED LONGWORD range 0 2**29-1;subtype UNSIGNED 30 is UNSIGNED LONGWORD range 0 .. 2**30-1;subtype UNSIGNED_31 is UNSIGNEDLONGWORD range 0 2*"*31-I;

-- Function for obtaining global symbol values

function IMPORT-VALUE (SYMBOL : STRING) return UNSIGNEDLONGWORD;

private

-- Not shown

end SYSTEM;

F.4 Restrictions on Representation ClausesThe representation clauses allowed in DEC Ada are length, enumeration,record representation, and address clauses.

In DEC Ada, a representation clause for a generic formal type or a type thatdepends on a generic formal type is not allowed. In addition, a representationclause for a composite type that has a component or subcomponent of a genericformal type or a type derived from a generic formal type is not allowed.

F.5 Restrictions on Unchecked Type ConversionsDEC Ada supports the generic function UNCHECKEDCONVERSION with

the following restrictions on the class of types involved:

"* The actual subtype corresponding to the formal type TARGET must not bean unconstrained array type.

"* The actual subtype correspGnding to the formal type TARGET must not bean unconstrained type with discriminants.

Further, when the target type is a type with discriminants, the value resultingfrom a call of the conversion function resulting from an instantiation ofUNCHECKED-CONVERSION is checked to ensure that the discriminantssatisfy the constraints of the actual subtype.

F.5 Restrictions on Unchecked Type Conversions F-I6

If the size of the source value is greater than the size of the target subtype,then the high order bits of the value are ignored (truncated); if the size ofthe source value is less than the size of the target subtype, then the value isextended with zero bits to form the result value.

F.6 Conventions for Implementation-Generated NamesDenoting Implementation-Dependent Components inRecord Representation Clauses

DEC Ada does not allocate implementation-dependent components in records.

F.7 Interpretation of Expressions Appearing in AddressClauses

Expressions appearing in address clauses must be of the type ADDRESSdefined in the package SYSTEM (see 13.7a.1 and F.3). In DEC Ada, values oftype SYSTEM.ADDRESS are interpreted as virtual addresses in the machine'saddress space.

DEC Ada allows address clauses for objects and imported subprograms (see13.5).

DEC Ada does not support interrupts as defined in section 13.5.1.

On OpenVMS systems, DEC Ada provides the pragma ASTENTRY and theASTENTRY attribute as alternative mechanisms for handling asynchronousinterrupts from the OpenVMS operating system (see 9.12a).

For information on handling ULTRIX signals, see the DEC Ada Run-TimeReference Manual for ULTRIX Systems.

F.8 Implementation-Dependent Characteristics ofInput-Output Packages

In addition to the standard predefined input-output packages(SEQUENTIAL_,O, DIRECT_10, TEXT_10, and 10_EXCEPTIONS), DEC Adaprovides packages for handling sequential and direct files with mixed-typeelements:

"* SEQUENTIALMIXED_1O (see 14.2b.4).

"* DIRECT MIXED-1O (see 14.2b.6).

DEC Ada does not provide the low level input-output package described in thissection.

F-17 Implementation-Dependent Characteristics of Input-Output Packages F.8

As specified in section 14.4, DEC Ada raises the following language-definedexceptions for error conditions that occur during input-output operations:STATUS-ERROR, MODEERROR, NAMEERROR, USEERROR, END-ERROR, DATAERROR, and LAYOUTERROR. DEC Ada does not raise thelanguage-defined exception DEVICEERROR; device-related errors cause theexception USEERROR to be raised.

The exception USE_ERROR is raised under the following conditions:

"* If the capacity of the external file has been exceeded.

"* In all CREATE operations if the mode specified is INFILE.

"* In all CREATE operations if the file attributes specified by the FORMparameter are not supported by the package.

" In all CREATE, OPEN, DELETE, and RESET operations if, for thespecified mode, the environment does not support the operation for anexternal file.

"* In all NAME operations if the file has no name.

"* In the SETLINELENGTH and SETPAGELENGTH operations on textfiles if the lengths specified are inappropriate for the external file.

" In text files if an operation is attempted that is not possible for reasonsthat depend on characteristics of the external file.

DEC Ada provides other input-output packages that are available on specificsystems. The following sections outline those packages. The following sectionsalso give system-specific information about the overall set of DEC Adainput-output packages and input-output exceptions.

F.8.1 DEC Ada Input-Output Packages on OpenVMS SystemsOn OpenVMS systems, the DEC Ada predefined packages and their operationsare implemented using OpenVMS Record Management Services (RMS)file organizations and facilities. To give users the maximum benefit of theunderlying RMS input-output facilities, DEC Ada provides the followingOpenVMS-specific packages:

"* RELATIVE_1O (see 14.2a.3).

"• INDEXEDIO (see 14.2a.5).

"* REIATIVEMIXED_10 (see 14.2b.8).

"• INDEXED-MIXEDIO (see 14.2b.10).

"• AUX_IO_EXCEPTIONS (see 14.5a).

F,8.1 DEC Ada Input-Output Packages on OpenVMS Systems F-18

-- - -- -

The following sections summarize the implementation-dependent characteris-tics of the DEC Ada input-output packages. The DEC Ada Run-Tme ReferenceManual for OpenVMS Systems discusses these characteristics in more detail.

F.8.1.1 Interpretation of the FORM Parameter on OpenVMS SystemsOn OpenVMS systems, the value of the FORM parameter may be a stringof statements of the OpenVMS Record Management Services (RMS) FileDefinition Language (FDL), or it may be a string referring to a text file of FDLstatements (called an FDL file).

FDL is a special-purpose OpenVMS language for writing file specifications.These specifications are then used by DEC Ada run-time routines to createor open files. See the DEC Ada Run-Time Reference Manual for OpenVMSSystems for the rules governing the FORM parameter and for a generaldescription of FDL. See the Guide to OpenVMS File Applications and theOpenVMS Record Management Utilities Reference Manual for completeinformation on FDL.

On OpenVMS systems, each input-output package has a default string of FDLstatements that is used to open or create a file. Thus, in general, specificationof a FORM parameter is not necessary: it is never necessary in an OPENprocedure; it may be necessary in a CREATE procedure. The packages forwhich a value for the FORM parameter must be specified in a CREATEprocedure are as follows:

" The packages DIRECTJO and RELATIVE_1O require that a maximumelement (record) size be specified in the FORM parameter if the item withwhich the package is instantiated is unconstrained.

" The packages DIRECT MIXED_10 and RELATIVEMIXED-1O requirethat a maximum element (record) size be specified in the FORM parameter.

" The packages INDEXED_10 and INDEXEDMIXED_.1O require thatinformation about keys be specified in the FORM parameter.

Any explicit FORM specification supersedes the default attributes of thegoverning input-output package. The DEC Ada Run-Time Reference Manualfor OpenVMS Systems describes the default external file attributes of eachinput-output package.

The use of the FORM parameter is described for each input-output package •in chapter 14. For information on the default FORM parameters for eachDEC Ada input-output package and for information en using the FORMparameter to specify external file attributes, see the DEC Ada Run-71meReference Manual for OpenVMS Systems. For information on FDL, see theGuide to Open VMS File Applications and the Open VMS Record ManagementUtilities Reference Manual.

F-19 Interpretation of the FORM Parameter on OpenVMS Systems F.8.1.1

F.1.1.2 Input-Output Exceptions on OpenVMS SystemsIn addition to the DEC Ada exceptions that apply on all systems, the followingalso apply on OpenVMS systems:

"* The DEC Ada exceptions LOCK_ERROR, EXISTENCEERROR, and KEY_ERROR are raised for relative and indexed input-output operations.

"* The exception USEERROR is raised as follows in relative and indexedfiles:

- In the WRITE operations on relative or indexed files if the element inthe position indicated has already been written.

- In the DELETEELEMENT operations on relative and indexed files ifthe current element is undefined at the start of the operation.

- In the UPDATE operations on indexed files if tne current element isundefined or if the specified key violates the external file attributes.

" The exception NAMEERROR is raised as specified in section 14.4:by a call of a CREATE or OPEN procedure if the string given for theNAME parameter does not allow the identification of an external file. OnOpenVMS systems, the value of a NAME parameter can be a string thatdenotes a OpenVMS file specification or a OpenVMS logical name (in eithercase, the string names an external file). For a CREATE procedure, thevalue of a NAME parameter can also be a null string, in which case itnames a temporary external file that is deleted when the main programexits. The DEC Ada Run-Time Reference Manual for OpenVMS Systemsexplains the naming of external files in more detail.

" The exception LAYOUT-ERROR is raised as specified in section 14.4: intext input-output by COL, LINE, or PAGE if the value reLurned exceedsCOUNT' LAST. The exception LAYOUTERROR is also raised on output byan attempt to set column or line numbers in excess of specified maximumline or page lengths, and by attempts to PITT too many characters toa string. In the DEC Ada mixed input-output packages, the exceptionLAYOUTERROR is raised by GET-ITEM if no more items can be readfrom the file buffer; it is raised by PUTITEM if the current positionexceeds the file buffer size.

F.8.1.2 Input-Output Exceptions on OpenVMS Systems F-20

F.8.2 Input-Output Packages on ULTRIX Systems

On ULTRIX systems, the DEC Ada predefined packages and their operationsare implemented using ULTRIX file facilities. DEC Ada provides no additionalinput-output packages specifically related to ULTRIX systems.

The following sections summarize the ULTRIX-specific characteristics of theDEC Ada input-output packages. The DEC Ada Run-Time Reference Manualfor ULTRIX Systems discusses these characteristics in more detail.

F.8.2.1 Interpretation of the FORM Parameter on ULTRIX SystemsOn ULTRIX systems, the value of the FORM parameter must be a characterstring, defined as follows:

string "[field {,field}]"

field == field id => field-value

field id BUFFER SIZE I ELEMENTSIZE I FILED_,DSR... R

field value digit {digit}

Depending wi the fields specified, the value of the FORM parameter mayrepresent one or more of the following:

" The size of the buffer used during file operations. The field value specifiesthe number of bytes in the buffer.

" The maximum element size for a direct file. The field value specifies themaximum number of bytes in the element.

" An ULTRIX file descriptor for the Ada file being opened. The UlTrRIX filedescriptor must be open.

If the file descriptor is not open, or if it refers to an Ada file that isalready open, then the exception USEERROR is raised. Note that thefile descriptor option can be used only in the FORM parameter of an OPENprocedure.

Each input-output package has an implementation-defined value form stringthat is used to open or create a file. Thus, in general, specification of a FORMparameter is not necessary. The packages for which a value for the FORMparameter must be specified in a CREATE procedure are as follows:

"* The package DIRECT_10 requires that a maximum element size bespecified in the FORM parameter if the item with which the package isinstantiated is unconstrained.

"* The package DIRECT_MIXED_IO requires that a maximum element sizebe specified in the FORM parameter.

F-21 Interpretation of the FORM Parameter on ULTRIX Systems F.8.2.1

The use of the FORM parameter is described for each input-output package inchapter 14. For information on using the FORM parameter to specify externalfile attributes, see the DEC Ada Run-Time Reference Manual for ULTRIXSystems.

F.8.2.2 Input-Output Exceptions on ULTRIX SystemsIn addition to the DEC Ada exceptions that apply on all systems, the followingalso apply on ULTRIX systems:

" The exception NAME-ERROR is raised as specified in section 14.4: by acall of a CREATE or OPEN procedure if the string given for the NAMEparameter does not allow the identification of an external file. On ULTRIXsystems, the value of a NAME parameter can be a string that denotes anULTRIX file specification. For a CREATE procedure, the value of a NAMEparameter can also be a null string, in which case it names a temporaryexternal file that is deleted when the main program exits. The DEC AdaRun-Time Reference Manual for ULTRIX Systems explains the naming ofexternal files in more detail.

" The exception LAYOUT_ERROR is raised as specified in section 14.4: intext input-output by COL, LINE, or PAGE if the value returned exceedsCOUNT' LAST. The exception LAYOUTERROR is also raised on output byan attempt to set column or line numbers in excess of specified maximumline or page lengths, and by attempts to PUT too many characters toa string. In the DEC Ada mixed input-output packages, the exceptionLAYOUTERROR is raised by GETITEM if no more items can be readfrom the file buffer; it is raised by PUTITEM if the current positionexceeds the file buffer size.

F.9 Other Implementation CharacteristicsImplementation characteristics relating to the definition of a main program,various numeric ranges, and implementation limits are summarized in thefollowing sections.

F.9.1 Definition of a Main ProgramDEC Ada permits a library unit to be used as a main program tunder thefollowing conditions:

* If it is a procedure with no formal parameters.

On OpenVMS systems, the status returned to the OpenVMS environmentupon normal completion of the procedure is the value 1.

On ULTRIX systems, the status returned to the ULTRIX environmentupon normal completion of the procedure is the value 0.

F.9.1 Definition of a Main Program F-22

" If it is a function with no formal parameters whose returned value is ofa discrete type. In this case, the status returned to the operating-systemenvironment upon normal completion of the function is the function value.

" If it is a procedure declared with the pragma EXPORTVALUED_PROCEDURE, and it has one formal out parameter that is of a discretetype. In this case, the status returned to the operating-system environmentupon normal completion of the procedure is the value of the first (and only)parameter.

Note that when a main function or a main procedure declared with the pragmaEXPORTVALUEDPROCEDURE returns a discrete value whose size is lessthan 32 bits, the value is zero- or sign-extended as appropriate.

F.9.2 Values of Integer AttributesThe ranges of values for integer types declared in the package STANDARD areas follows:

Systems on which it

Integer type Range applies

SHORTSHORTINTEGER -128.. 127 All

SHORTINTEGER -32768.. 32767 AllINTEGER -2147483648.. 2147483647 AllLONGINTEGER -2147483648.. 2147483647 OpenVMS

F-23 Values of Integer Attributes F.9.2

For the applicable input-output packages, the ranges of values for the typesCOUNT and POSITIVECOUNT are as follows:

COUNT 0.. INTEGER' LAST

POSITIVE-COUNT 1 .. INTEGER' LAST

For the package TEXTO, the range of values for the type FIELD is as follows:

FIELD 0 .. INTEGER' LAST

F.9.3 Values of Floating Point AttributesDEC Ada provides a number of predefined floating point types, as shown in thefollowing table:

Systems on whichType Representation It applies Section

FLOAT Ffloating All OpenVMS' 3.5.7IEEE single float ULTRIX,

OpenVMS AXP 2

LONGFLOAT Dfloating or G-floating All OpenVMS' 3.5.7IEEE double float ULTRIX,

OpenVMS AXP2

LONGLONGFLOAT Hfloating OpenVMS VAX 3.5.7FFLOAT Ffloating All OpenVMS 3.5.7

D_FLOAT Dfloating All OpenVMS 3.5.7

GFLOAT Gfloating All OpenVMS 3.5.7

HFLOAT Hfloating OpenVMS VAX 3.5.7IEEESINGLEFLOAT IEEE single float ULTRIX, 3.5.7

OpenVMS AXPYIEEEDOUBLEFLOAT IEEE double float ULTRIX, 3.5.7

OpenVMS AXP2

'When the value of the pragma FLOATREPRESENTATION is VAXYLOAT.2When the value of the pragma FLOATREI3RESENTATION is IEEE-FLOAT.

The values of the floating point attributes for the different floating pointrepresentations appear in the following tables.

F.9.3 Values of Floating Point Attributes F-24

F.9.3.1 Fjfloating Characteristics

Fjfloating value and approximate decimal equivalentAttribute (where applicable)

DIGITS 6

MANTISSA 21

EMAX 84

EPSILON 16#0.1000_O00#e-4approximately 9.53674E-07

SMALL 16#0.8000 000#e--21approximately 2.58494E-26

LARGE 16#0.FFFF_F80#e+21approximately 1.93428E+25

SAFEEMAX 127

SAFESMALL 16#0.1000 000#e-31approximately 2.93874E-39

SAFELARGE 16#0.7FFFFCO#e+32approximately 1.70141E+38

FIRST -16#0.7FFFFF8#e+32approximately -1.70141E+38

LAST 16#0.7FFF_FF8#e+32approximately 1.70141E+38

MACHINE_RADIX 2

MACHINE-MANTISSA 24

MAC4TNEEMAX 127

MACHINEEMIN -127

MACHINEROUNDS True

MACHINEOVERFLOWS True

F-25 FFfloating Characteristics F.9.3-1

F.9.3.2 D-floating Characteristics

Dfloating value and approximate decimal equivalentAttribute (where applicable)

DIGITS 9

MANTISSA 31

EMAX 124

EPSILON 16#0.4000_0000_0000_000#e-7approximately 9.3132257461548E-10

SMALL 16#0.8000_0000_0000_000#e-31approximately 2.3509887016446E-38

LARGE 16#0.FFFFFFFE_0000_000#e+31approximately 2.1267647922655E+37

SAFE_EMAX 127

SAFESMALL 16#0.1000_0000_0000_000#e-31approximately 2.9387358770557E-39

SAFELARGE 16#0.7FFF-FFFF 0000_000#e+ 32approximately 1.7014118338124E+38

FIRST -16#0.7FFFFFFFFFFFFF8#e+32approximately -1.7014118346047E+38

LAST 16#0.7FFF _FFFFFFFFF8#e+32approximately 1.7014118346047E+38

MACHINE_RADIX 2

MACHINEMANTISSA 56

MACHINEEMAX 127

MACHINEEMIN -127

MACHINEROUNDS True

MACHINEOVERFLOWS True

F.9.3.2 DOfloating Characteristics F-26

F.9.3.3 Gtfloating Characteristics

G floating value and approximate decimal equivalentAttribute (where applicable)

DIGITS 15

MANTISSA 51

EMAX 204

EPSILON 16#0.4000_0000_0000_00#e-12approximately 8.881784197001E-16

SMALL 16#0.8000_0000_0000 00#e-51approximately 1.944692274332E-62

LARGE 16#0.FFFFFFF_FF FFFE0#e+51approximately 2.571100870814E+61

SAFEEMAX 1023

SAFESMALL 16#0.1000_0000 0000_00#e-255approximately 5.562684646268E-309

SAFELARGE 16#0.7FFFFFFFFFFFFO#e+256approximately 8.988465674312E+307

FIRST -16#0.7FFFFFFFFFFFFC#e.+256approximately -8.988465674312E+307

LAST 16#0.7FFF FFFFFFFF FC#e+256approximately 8.988465674312E+307

MACHINERADIX 2

MACHINE_MANTISSA 53

MACHINEEMAX 1023

MACHINEEMIN -1023

MACHINE_ROUNDS True

MACHINE-OVERFLOWS True

F-27 Gifloating Characteristics F.9.3.3

F.9.3.4 H floating Characteristics

H_floating value and approximate decimal equivalentAttribute (where applicable)

DIGITS 33

MANTISSA 111

EMAX 444

EPSILON 16#0.4000_0000_0000 0000_0000_0000_0000_0#e-27approximately 7.7037197775489434122239117703397E-34

SMALL 16#0.8000_0000_0000 0000_0000_0000_0000_0#e-111approximately 1.1006568214637918210934318020936E-134

LARGE 16#0.FFFFFFFFFFFF FFFFFFFFFFFFFFFE 0#e+ 111approximately 4.5427420268475430659332737993000E+ 133

SAFEEMAX 16383

SAFESMALL 16#0.1000 0000 0000 0000_0000_0000_0000_0#e-4095approximately 8.4052578577802337656566945433044E-4933

SAFELARGE 16#0.7FFFFFFF FFFFFFFFFFFFFFFFF_FFFF_0#e+4096approximately 5.9486574767861588254287966331400E+4931

FIRST -16#0.7FFF PFFF_FFFFFFFF FFFFFFFFFFFFC#e+4096approximately -5.9486574767861588254287966331400E+4931

LAST 16#0.7FFF_ FFFFFFFFFFFFFFFFFFFFFFFFC#e+4096approximately 5.9486574767861588254287966331400E+4931

MACHINERADIX 2MACHINEMANTISSA 113

MACHINEEMAX 16383

MACHINEEMIN -16383

MACHINE-ROUNDS True

MACHINE-OVERFLOWS True

F9.3.4 H floating Characteristics F-28

F.9.3.5 IEEE Single Float Characteristics

IEEE single float value and approximate decima, equivalentAttribute (where applicable)

DIGITS 6

MANTISSA 21

EMAX 84

EPSILON 16#0.1000_000#e-4approximately 9.53674E-07

SMALL 16#0.8000_000#e-21approximately 2.5849E-26

LARGE 16#0.FFFFF80#E+21approximately 1.93428E+25

SAFEEMAX 125

SAFESMALLapproximately 1.17549E-38

SAFELARGEapproximately 4.25353E+37

FIRSTapproximately -3.40282E+38

LASTapproximately 3.40282E+38

MACHINERADIX 2

MACHINEMANTISSA 24

MACHINEEMAX 128

MACHINEEMIN -125

MACHINE-ROUNDS True

MACHINE-OVERFLOWS True

F-29 IEEE Single Float Characteristics F.9.3.5

F.9.3.6 IEEE Double Float Characteristics

IEEE double float value and approximate decimal equivalentAttribute (where applicable)

DIGITS 15

MANTISSA 51

EMAX 204

EPSILONapproximately 8.8817841970012E-16

SMALLapproximately 1.9446922743316E-62

LARGEapproximately 2.5711008708144E+61

SAFE EMAX 1021

SAFESMALLapproximately 2.22507385850720E-308

SAFELARGEapproximately 2.2471164185779E+307

FIRSTapproximately -1.7976931348623E+308

LASTapproximately 1.7976931348623E+308

MACHINERADIX 2

MACHINEMANTISSA 53

MACHINEEMAX 1024

MACHINEEMIN -1021

MACHINEROUNDS True

MACHINE OVERFLOWS True

F.9.4 Attributes of Type DURATIONThe values of the significant attributes of the type DURATION are as follows:

DURATION' DELTA 0.0001

DURATION' SMALL 2-'

DURATION' FIRST -131072.0000

F.9.4 Attributes of Type DURATION F-30

DURATION' LAST 131071.9999

DURATION' LARGE 131071.9999

F.9.5 Implementation Limits

DECsystemson which it

Limit applies Value

Maximum number of formal parameters in a All 32subprogram or entry declaration that are of anunconstrained record type

Maximum identifier length (number of characters) All 255

Maximum number of characters in a source line All 255

Maximum number of discriminants for a record type All 245

Maximum number of formal parameters in an entry or All 246subprogram declaration

Maximum number of dimensions in an array type All 255

Maximum number of library units and subunits in a All 4095compilation closure)

Maximum number of library units and subunits in an All 16383execution closure

2

Maximum number of objects declared with the pragma All 32757COMMONOBJECT or PSECTOBJECT

Maximum number of enumeration literals in an All 65535enumeration type definition

Maximum number of lines in a source file All 65534

Maximum number of bits in any object All 2• -3

Maximum size of the static portion of a stack frame All 230(approximate)

'The compilation closure of a given unit is the total set of units that the given unit depends on,directly and indirectly.2The execution closure of a given unit is the compilation closure plus all associated secondary units(library bodies and subunits).

F-31 Implementation Limits F.9-5