THE ADA COMPILER VALIDATION CAPABILITY (ACVC) VERSION 2.1 USER'S GUIDE (Revision 1) March 21, 1997 Purchase Order 43NANB710619 Prepared for: National Institute of Standards and Technology Information Technology Laboratory Building 820NN, Room 517 Gaithersburg, MD 20899-0001 Prepared by: CTA INCORPORATED 5100 Springfield Pike, Suite 100 Dayton, OH 45431 Contents SECTION 1. INTRODUCTION 1 1.1 Definition of Terms 2 1.2 References 3 1.3 ACVC Purpose 4 SECTION 2. CHANGES FOR ACVC 2.1 5 2.1 Change in ACVC Sponsorship 5 2.2 Improved Technology 5 2.3 Changes in 9XBasic 6 2.4 Changes in Ada95 Tests 6 2.5 Changes in Test Focus and/or Restrictions 6 2.6 Changes in Delivery Structure 7 SECTION 3. CONFIGURATION INFORMATION 9 3.1 Introduction 9 3.2 Structure 9 3.2.1 Physical 10 3.2.2 Logical 11 3.2.3 Legacy Tests 12 3.2.4 Foundation Code 12 3.2.5 Special Section 13 Tests 12 3.2.6 Foreign Language Code 13 3.3 Test Classes 13 3.3.1 Class A 13 3.3.2 Class B 13 3.3.3 Class C 14 3.3.4 Class D 14 3.3.5 Class E 15 3.3.6 Class L 15 3.3.7 Foundation Code 16 3.3.8 Special Needs Annex Tests 16 3.4 Naming Convention 16 3.4.1 Legacy Naming 16 3.4.2 ACVC 2.1 Naming 18 3.4.3 Multiple File Tests 20 3.5 Test Program Format 20 3.6 General Standards 21 3.7 Test Structure 22 3.8 Delivery Directory Structure 24 3.9 File Format 25 SECTION 4 USING THE ACVC 27 4.1 Introduction 27 4.2 Installation of the ACVC Test Suite 27 4.2.1 Contents of the ACVC Delivery 27 4.2.2 Guide to Decompressing Files 29 4.2.2.1 Decompressing Zipped Files 30 4.2.2.2 Decompressing Unix Compress Files 31 4.3 Tailoring the ACVC Test Suite 31 4.3.1 ImpDef Customization 32 4.3.2 Macro Defs Customization 32 4.3.3 Processing for Wide_Character Tests 33 4.3.4 Package SPPRT13 and Function FcnDecl 34 4.3.5 Modification of Package REPORT 35 4.3.6 Allowed Test Modifications 35 4.4 Processing the Support Files 36 4.4.1 Support Files 36 4.4.2 "CZ" Acceptance Tests 37 4.5 Establishing Command Scripts 37 4.5.1 Command Scripts 37 4.5.2 Dependencies 38 4.6 Processing ACVC Tests 38 4.6.1 Required Tests 38 4.6.2 Test Partitions 38 4.6.3 Bundling Test Programs 39 4.6.4 Processing That May be Omitted 39 4.6.5 Tests with Special Processing Requirement 40 4.6.5.1 Foreign Language Interface Tests 40 4.6.5.2 Tests for the Distributed Processing Annex 42 4.6.5.3 Tests for the Numerics Annex 44 4.6.5.4 Tests that use Configuration Pragmas 44 4.6.6 Focus on Specific Areas 45 4.7 Grading Test Results 45 4.7.1 Expected results for Executable Tests 46 4.7.2 Expected Results for Class B 47 4.7.3 Expected Results for Class L 47 4.7.4 Inapplicable Tests 48 4.7.5 Withdrawn Tests 48 4.8 Addressing Problems or Issues 49 4.8.1 Typical Issues 49 4.8.2 Deviation from Expected Results - Petition & Review 49 4.9 Reprocessing and Regrading 50 APPENDICES 51 Section 1. Introduction This document is a revision of the same-named document delivered to the National Institute of Standards and Technology (NIST) on December 16, 1996 by Science Applications International Corporation. This revision was performed by CTA INCORPORATED under contract to the NIST (Purchase Order 43NANB710619). The Ada Compiler Validation Capability (ACVC) is the official test method used to check conformity of an Ada implementation with the Ada programming language standard (ANSI/ISO/IEC 8652:1995, FIPS PUB 119-1). The ACVC User's Guide is part of the ACVC and is distributed with the test programs and testing support packages. It explains the contents and use of the ACVC test suite. This version of the ACVC is 2.1. ACVC versions based on ANSI/MIL-STD-1815A- 1983, ISO/8652:1987 (Ada 83) were numbered 1.x where x ranged from 1 to 11. ACVC versions numbered 2.0, 2.0.1 based on ANSI/ISO/IEC 8652:1995 (Ada95) have previously been released. ACVC 2.1 contains test programs to check for conformity to new language features defined in [Ada95], as well as test programs to check for conformity to language features shared between Ada83 and Ada95. Subsequent maintenance or enhancement versions of the suite, if they are required, will be numbered 2.2, etc. The ACVC User's Guide describes the set of ACVC tests and how they are to be used in preparation for validation. The formal procedures for validation are described in [Pro97], and the rules in that document govern all validations, notwithstanding anything in this document that may be interpreted differently. Moreover, this guide does not discuss specific requirements on processing of the ACVC test suite, or submission and grading of results that an Ada Validation Facility (AVF) may impose. The User's Guide is intended to be used by compiler implementers, software developers who maintain a version of the ACVC as a quality control or software acceptance tool, and third-party testers (e.g., Ada Validation Facilities). Section 2 of the User's Guide for ACVC 2.1 summarizes the changes between ACVC 2.1 and ACVC 2.0.1. Section 3 describes the configuration of the ACVC, including a description of the ACVC software and delivery files. Section 4 provides step-by-step instructions for installing and using the test programs and test support packages, and for grading test results. The appendices include other information that characterizes the ACVC 2.1 release. Refer to Sections 1.1 and 4.7 for the definition of an acceptable result and the rules for grading ACVC 2.1 test program results. Section 4.8.2 provides instructions for submitting a petition against a test program if a user believes that a deviation from the acceptable results for a given test program is in fact conforming behavior. The ACVC test suite is available from AVFs, on the Defense Information Systems Agency Center for Software Ada host machine (formerly known as the AJPO host) [ sw-eng.falls-church.va.us ], or from the National Technical Information System (NTIS). 1.1 Definition of Terms Acceptable result : The result of processing an ACVC test program that meets the explicit grading criteria for a grade of "passed" or inapplicable. ACVC Implementer's Guide (AIG) : A document describing the test objectives used to produce test programs for Ada83 ACVC versions (1.1-1.11). AIG section references are embedded in Ada83 test naming conventions. Ada implementation : An Ada compilation system, including any required run- time support software, together with its host and target computer systems. Ada Joint Program Office (AJPO) : The part of the certification body that provides policy and guidance for the Ada certification system. Ada programming language : The language defined by reference [Ada95]. Ada Validation Facility (AVF) : The part of the certification body that carries out the procedures required to perform validation testing of an Ada implementation. Ada Validation Organization (AVO) : The part of the certification body that provides technical guidance for operations of the Ada certification system. Certification Body : The organizations (AJPO, AVO, AVFs) collectively responsible for defining and implementing Ada validation policy, including production and maintenance of the ACVC tests, and award of Ada validation certificates. Challenge : A documented disagreement with the test objective, test code, test grading criteria, or result of processing an ACVC test program when the result is not PASSED or INAPPLICABLE according to the established grading criteria. A challenge is submitted to the AVO. Conforming implementation : An implementation that produces an acceptable result for every applicable test. Any deviation constitutes a non- conformity. Core language : Sections 2-13 and Annexes A, B, and J of [Ada95]. All implementations are required to implement the core language. The validation tests for core language features are required of all implementations. Coverage matrix : A document containing an analysis of every paragraph of [Ada95]. Each paragraph has an indication of whether is contains a testable Ada95 requirement, whether it is upwardly compatible from Ada83, or whether is testable in the ACVC suite (e.g. it contains an example). Paragraphs that contain testable requirements also indicate what ACVC test(s) specifically examine features described in the paragraph. Deviation : Failure of an Ada implementation to produce an acceptable result when processing an ACVC test program. Foundation Code : Packages used by multiple tests; foundation code is designed to be reusable. Generally a foundation is a package containing types, variables, and subprograms that are applicable and useful to a series of related tests. Foundation code is never expected to cause compile time errors. It may be compiled once for all tests that use it or recompiled for each test that uses it; it must be bound with each test that uses it. Legacy Tests : Tests that were included in ACVC 1.12 that have been incorporated into ACVC 2.1. The vast majority of these tests check for language features that are upwardly compatible from Ada83 to Ada95. Some of these tests have been modified from the ACVC 1.12 versions to ensure that Ada95 rules are properly implemented in cases where there were extensions or incompatibilities from Ada83 to Ada95. National Institute of Standards and Technology (NIST) : The branch of the U.S. Department of Commerce that formerly provided policy and guidance for the Ada certification system and maintainedhe ACVC. Special Needs Annex : One of annexes C through H of [Ada95]. Validation against one or more Special Needs Annexes is optional. There are validation tests that apply to each of the Special Needs Annexes; the appropriate set of tests must be correctly processed (in addition to all of the core language tests) for an implementation to be validated for a Special Needs Annex. Test Objectives Document (TOD) : A document containing the test objectives used for new ACVC tests that focus on Ada95-specific features. Withdrawn Tests : A test found to be incorrect and not used in conformity testing. A test may be incorrect because it has an invalid test objective, fails to meet its test objective, or contains erroneous or illegal use of the Ada programming language. Withdrawn tests are not applicable to any implementation. Withdrawn tests are often modified and restored to subsequent ACVC releases. Withdrawn Test List : A list maintained by the AVO documenting the currently withdrawn tests. The withdrawn test list is updated from time to time as protests from implementers are received and processed, or as other technical information is received. 9XBasic : A set of tests included in ACVC 2.0 and ACVC 2.0.1 which tested for Ada language features that are upwardly compatible from Ada83 to Ada95. The term 9XBasic is no longer used in conjunction with ACVC 2.1. 1.2 References 1. [Ada83] ANSI/MIL-STD-1815A-1983, ISO 8652:1987, FIPS 119 Reference Manual for the Ada Programming Language--superseded by ISO-8652:95) 2. [Ada95] ANSI/ISO/IEC 8652:1995, FIPS 119-1 The Reference Manual for the Ada Programming Language, February 1995 3. [Pro97] Ada Compiler Validation Procedures, Defense Information Systems Agency Center for Software 1.3 ACVC Purpose The purpose of the ACVC is to check whether an Ada compilation system is a conforming implementation, i.e., whether it produces an acceptable result for every applicable test. A fundamental goal of validation is to promote Ada software portability by ensuring consistent processing of Ada language features as prescribed by [Ada95]. ACVC tests use language features in contexts and idioms expected in production software. While they exercise a wide range of language feature uses, they do not and cannot include examples of all possible feature uses and interactions. It is important to recognize that the ACVC tests do not guarantee compiler correctness. A compilation system that correctly processes the ACVC tests is not thereby deemed error-free, nor is it thereby deemed capable of correctly processing all software that is submitted to it. The ACVC tests do not check or report performance parameters (e.g., compile-time capacities or run-time speed). They do not check or report for characteristics such as the presence and effectiveness of compiler optimization. They do not investigate or report compiler or implementation choices in cases where the standard allows options. Section 2. Changes for ACVC 2.1 2.1 Change in ACVC Sponsorship As of April 7, 1997, the Ada Joint Program Office (AJPO) reassumed responsibility for operation of the Ada compiler validation process and maintenance of the ACVC. Questions, issues, and communications for the AJPO should be submitted to: Mr. Gary Shupe Ada Joint Program Office, Code JEKSA Defense Information Systems Agency 5600 Columbia Pike Falls Church, VA 22041 Phone: 703/681-2462 email: shupeg@ncr.disa.mil Technical questions and issues regarding validation should be emailed to: avo@sw-eng.falls-church.va.us or sent by post to Mr. Shupe at the above address. Questions, issues, and communications concerning the ACVC 2.1 Test Suite and its maintenance should be sent to Mr. Shupe. 2.2 Improved Technology Ada95 compiler technology continued to improve after the release of ACVC 2.0 and ACVC 2.0.1. While there are some tests in the 2.1 suite that have not been successfully processed by any compilers, most tests have been run against multiple testbed compilers. All tests that are beyond compiler capability at the time of release have been carefully reviewed by the test suite developers and by the ACVC Review Team. Many incompatibilities and unintentional errors have been removed as a result. We continue to invite comments about test correctness. Disputes should be submitted through the normal process (see Section 4.8.2). Other comments are welcome; please submit them via e-mail to: avo@sw-eng.falls-church.va.us and copy: acvc@sw-eng.falls-church.va.us 2.3 Changes in 9XBasic The suite no longer identifies a specific set of tests as 9XBasic tests (distinct from specifically Ada95 tests). The tests have been retained, however, and the names are unchanged. This document refers to them as legacy tests. In ACVC 2.0 and ACVC 2.0.1, the 9XBasic tests were intended to be neutral between Ada83 and Ada95. Each test in that set should have passed when run under either an Ada83 or an Ada95 compiler. This design was meant to facilitate transition of Ada83 compilers to Ada95 rules. In order to achieve neutrality, tests that included code that could not easily be modified to be neutral were either deleted or had sections of code deleted. Many of these tests have been returned to the test suite with modifications that enforce Ada95 rules. These tests have retained their original names, since, in most cases, the changes were not extensive. All known errors in these tests were corrected for ACVC 2.1. 2.4 Changes in Ada95 Tests All known errors in Ada95 tests were corrected for ACVC 2.1. There is no longer a feature categorization of tests in ACVC 2.1. All applicable ACVC 2.1 tests must be processed and passed by an implementation. There were 452 new Ada95 tests added to ACVC 2.0, for a total of 803 tests that specifically examine language features new to Ada95. There is a full complement of tests for each of the Special Needs Annexes (SNA). Tests for an SNA apply only to an implementation that is validating against that SNA. Note that many of the SNA tests have special requirements for their processing. Although tests for the correct implementation and enforcement of Ada95 rules are embedded throughout the test suite, there are a small number of tests that check specifically for the proper processing of incompatibilities. These are tests that originated as ACVC 1.12 tests and were significantly rewritten. They are intended to help identify potential trouble areas in Ada95 compilers derived from Ada83 compilers. These tests are listed in Appendix A. As Ada95 infrastructure matures, these tests may be removed to make room for other test issues. 2.5 Changes in Test Focus and/or Restrictions For ACVC 2.0 and ACVC 2.0.1, the newer tests were organized into groups that included only specified language features (e.g., object-oriented, child library, real-time). The usual design approach severely limited the interaction of language features. As an aid to transition, these tests were categorized and identified. This grouping is not a feature of ACVC 2.1. Moreover, tests that were added after ACVC 2.0 have no such convention restricting or limiting their use of any Ada95 feature. 2.6 Changes in Delivery Structure The delivery structure for ACVC 2.1 has been significantly changed from 2.0, 2.0.1, and all earlier ACVC delivery structures. It no longer splits the delivery tree into 9XBasic and Ada95 branches, nor does it include any other intermediate structure (e.g., "BTests"). The subdirectories b2, b3, etc. are included immediately under the top level directory. All core tests, whether legacy tests or newer tests, are included in the same tree structure (e.g., all c9 tests are included in the same c9 branch; there is not a ...9XBasic...c9 branch and an ...ada95...c9 branch). There are not separate major branches for core tests and special needs annex tests. SNA tests are included in subdirectories cxc, cxd, etc. that are parallel with b2, b3, etc. Section 3.8 describes the delivery structure for ACVC 2.1. Section 3. Configuration Information 3.1 Introduction This section describes the physical and logical structure of the ACVC delivery, and it describes the test classes, naming conventions used, test program format, test structure, delivery structure, and file format. ACVC 2.1 incorporates ACVC 2.0 / 2.0.1, which was a transition set of validations tests. This suite uses a different delivery structure from ACVC 2.0 / 2.0.1, but retains existing test names. Note that, as in ACVC 2.0 / 2.0.1, the naming conventions used by legacy tests and newer tests are slightly different. Legacy tools such as macro.dfs and the macro processor remain a necessary part of the test suite; they have been augmented by newer tools such as TCTouch, ImpDef (and its child packages) and the Wide_Character test processor. The baseline for ACVC 2.0 / 2.0.1 was ACVC 1.12, which was developed and released for public comment but was never required for validation. Approximately 75% of the ACVC 1.12 tests were retained as legacy tests (9XBasic) in ACVC 2.0 / 2.0.1; they provide the same level of conformance testing as ACVC 1.11. ACVC 2.0 / 2.0.1 achieved its smaller size by eliminating tests that were not conformance tests, tests that were substantially duplicative, tests of pathological or non-usage oriented feature combinations, and tests that were not compatible with Ada95. ACVC 2.1 retains that level of conformance testing while adding additional emphasis on Ada95 specific language features and transition incompatibilities between Ada83 and Ada95. Many legacy tests that were deleted from ACVC 2.0.1 were modified to enforce Ada95 rules and re-incorporated into ACVC 2.1. The test suite does not provide tools or scripts that can be used to manage complete test processing, since such tools are normally site specific. 3.2 Structure The ACVC 2.1 test software includes test code (that exercises specific Ada features), foundation code (used by multiple tests), support code (used to generate test results), and tool code (used to build tools necessary to customize ACVC tests). The suite includes tests for the core language and tests for the Special Needs Annexes. Table 1 summarizes the number of tests and files in the ACVC suite. Total Core SNA Found Docs Other Files 4242 3919 245 44 11 23 Tests 3662 3474 188 - - - Table 1. The delivery structure of the test suite is described in Section 3.8. 3.2.1 Physical Table 1 summarizes the number of files that compose ACVC 2.1. In addition to files containing test code proper, the ACVC 2.1 test suite includes various support files: Others consists of 1 List of all files 14 Code that is referenced by tests 4 Code and data used for preprocessing tests to insert implementation specific information 4 Test routine for reporting code Note that the number of files containing test code is larger than the number of tests in the ACVC suite because several tests use code included in separate files. A file name consists of a name plus an extension. Multiple files that contain code used by a single test have related names. File names are the same as that of the test contained in the file when possible. File names conform to MS-DOS naming conventions, therefore they may be shorter than the software name because of file name length restrictions (e.g., enumchek rather than enumcheck). File (and test) names follow conventions that indicate their function in the test suite; naming conventions are explained in Section 3.4. The files are organized into distinct directories and subdirectories based on their function in the test suite. The directory organization is explained in Section 3.8. The ACVC is available to the general public from an AVF or on the Internet via FTP: ftp sw-eng.falls-church.va.us Login as user anonymous, and use your email address as password. Change to the working directory public/adaic/compilers and look for an acvc subdirectory. For World-Wide Web users, start with this URL: http://sw-eng.falls-church.va.us/adaic/compilers Note that the ACVC files are available in both compressed Unix tar and DOS zipped formats. Section 4.2.2 provides a discussion of techniques to convert these files to a usable format. Always read the README file. 3.2.2 Logical Table 1 summarizes the number of tests that check the conformance of an Ada implementation to the core language and conformance to the Special Needs Annexes of [Ada95]. Core tests apply to all implementations. Special Needs Annex tests are not required for any implementation. Tests for a given Special Needs Annex may be processed by implementations that claim implementation of that annex. In general, no test result depends on the processing or the result of any other test. Exceptions are noted in Section 4.5.2. No annex test depends on the implementation of any other annex, except possibly in cases where one annex specifically depends on another in Ada95 (e.g., no test for the Information Processing Annex uses features from any other annex, however Real Time Annex and Distributed Processing tests may depend on Systems Programming Annex features). [There is a single exception to this rule: see Section 4.6.5.2.] Annex tests may use any core feature. Tests may be created from one or more compilation units. If a test consists of a single compilation unit (a main subprogram only), the test code will be contained in a single file. Tests built from more than one compilation unit may require multiple files. Moreover, some compilation units, called foundation code, may be used by more than one test. Even in these cases, the resulting tests are strictly independent: if test A and test B use the same foundation code, the results of processing (and running, if appropriate) A have no effect on the results of processing (and running, if appropriate) B. Foundation code is more fully explained in Section 3.2.4. Tests are named using conventions that provide (limited) information about the test. The test naming conventions are explained in Section 3.4. Each test belongs to a single test class that indicates whether it is or is not an executable test. Test classes are explained in Section 3.3. In addition to test code and foundation code, there is code on which many or all of the executable tests in the suite depend (e.g., package Report, package ImpDef, package TCTouch). Some of this code must be customized to each implementation. There is also code that must be used to build support tools used to customize the suite of tests to an implementation. The customization process is described in Section 4.3. 3.2.3 Legacy Tests Many tests check only language features that are common to Ada83 and Ada95. The vast majority of these tests came unmodified from the ACVC 1.12 suite. Some tests were modified to check for the correct implementation of Ada95 rules in cases where language rules changed from Ada83. These tests were called 9XBasic tests in ACVC 2.0 and ACVC 2.0.1. 3.2.4 Foundation Code Some tests use foundation code. Foundation code is reusable across multiple tests that are themselves independent of each other. It is intended to be compiled and included in an environment as part of the compilation process of a test. If the test is executable, the foundation code must be bound with all other code for the test prior to execution. Foundation code is always expected to compile successfully; it is never expected to be run by itself. Foundation code is not, in and of itself, a test, and is therefore not characterized by a test class (see 3.3). One may think of it as providing some utility definitions and routines to a number of different tests. Names of foundation units (and therefore names of files containing foundation code) are distinguished as described in Naming Convention, Section 3.4. 3.2.5 Special Section 13 Tests Section 13 includes implementation advice paragraphs. The ACVC does not require implementations to conform to those paragraphs unless they are validating with Annex C, Systems Programming ( cf. C.2(2): "The implementation shall support at least the functionality defined by the recommended levels of support in Section 13.") The relevant tests are listed below. Implementations that are not validating with Annex C are still required to process these tests. Such implementations may reject the representation clauses marked with the special comment "-- N/A => ERROR", in which case the test will be graded as "unsupported". If an implementation accepts all the representation clauses in one of these tests, then the test must be bound (linked) and executed, with a passed or not_applicable result. Implementations that are validating with Annex C are required to process and pass these tests. CD10001 CD20001 CD30001 CD30002 CD30003 CD30004 CD30005 CD33001 CD33002 CD40001 CD90001 All implementations are required to correctly process and pass the Section 13 tests not listed above. 3.2.6 Foreign Language Code Several tests for Annex B features (and one Section 13 test) include files containing non-Ada code (Fortran, C, Cobol). These tests must be compiled, bound, and run by implementations that support foreign language interfaces to the respective non-Ada language. The foreign language code uses only the most basic language semantics and should be compilable by all Fortran, C, and Cobol compilers, respectively. In cases where a foreign language does not accept the code as provided, modifications are allowable. See Section 4.3.6. Files that contain foreign code are identified by a special file extension. See Section 3.4.2. The tests which include Fortran code are: CXB5004, CXB5005 The tests which include C code are: CXB3013 and CD30005 The tests which include Cobol code are: CXB4009 3.3 Test Classes There are six different classes of ACVC tests, reflecting different testing requirements of language conformity testing. Each test belongs to exactly one of the six classes, and its membership is encoded in the test name, as explained later. The purpose and nature of each test category is explained below. The test classifications provide an initial indication of the criteria that are used to determine whether a test has been passed or failed. 3.3.1 Class A Class A tests check for acceptance (compilation) of language constructs that are expected to compile without error. An implementation passes a class A test if the test compiles, binds, and executes reporting "PASSED". Any other behavior is a failure. Only legacy tests are included in this class. 3.3.2 Class B Class B tests check that illegal constructs are recognized and treated as fatal errors. They are not expected to successfully compile, bind, or execute. Lines that contain errors are marked "-- ERROR:", and generally include a brief description of the illegality on the same or following line. (The flag includes a final ":" so that search programs can easily distinguish it from other occurrences of the word "error" in the test code or documentation.) Some tests also mark some lines as "-- OK", indicating that the line must not be flagged as an error. Lines so marked are often, but not always, constructs that were errors in Ada83 but are correct in Ada95. An implementation passes a class B test if each indicated error in the test is detected and reported. The test fails if one or more of the indicated errors are not reported. If the test structure is such that a compiler cannot recover sufficiently to identify all errors, it may be permissible to "split" the test program into separate units for re-processing (see Section 4.3.6 for instructions on modifying tests). In some cases and for some constructs, compilers may adopt various error handling and reporting strategies. In cases where the test designers determined that an error might or might not be reported, but that an error report would be appropriate, the line is marked with "-- OPTIONAL ERROR:" In such cases, an implementation is allowed to report an error or fail to report an error without affecting the final grade of the test. 3.3.3 Class C Class C tests check that executable constructs are implemented correctly and produce expected results. These tests are expected to compile, bind, execute and report "PASSED" or "NOT-APPLICABLE". Each class C test reports "PASSED", "NOT-APPLICABLE", or "FAILED" based on the results of the conditions tested. An implementation passes a class C test if it compiles, binds, executes, and reports "PASSED". It fails if it does not successfully compile or bind, if it fails to complete execution (hangs or crashes), if the reported result is "FAILED", or if it does not produce an output report or only partially produces one. The tests CZ1101A, CZ1102A, CZ1103A, and CZ00004 are treated separately, as described in Section 4.4.2. 3.3.4 Class D Class D tests check that implementations perform exact arithmetic on large literal numbers. These tests are expected to compile, bind, execute and report "PASSED". Each test reports "PASSED" or "FAILED" based on the conditions tested. Some implementations may report errors at compile time for some of them, if the literal numbers exceed compiler limits. An implementation passes a class D test if it compiles, binds, executes, and reports "PASSED". It passes if the compiler issues an appropriate error message because a capacity limit has been exceeded. It fails if does not report "PASSED" unless a capacity limits is exceeded. It fails if it does not successfully compile (subject to the above caveat) or bind, if it fails to complete execution (hangs or crashes), if the reported result is "FAILED", or if it does not produce an output report or only partially produces one. Only legacy tests are included in this class. 3.3.5 Class E Class E tests check for constructs that may require inspection to verify. They have special grading criteria that are stated within the test source. They are generally expected to compile, bind and execute successfully, but some implementations may report errors at compile time for some tests. The "TENTATIVELY PASSED" message indicates special conditions that must be checked to determine whether the test is passed. An implementation passes a class E test if it reports "TENTATIVELY PASSED", and the special conditions noted in the test are satisfied. It also passes if there is a compile time error reported that satisfies the special conditions. Class E tests fail if the grading criteria in the test source are not satisfied, or if they fail to complete execution (hang or crashes), if the reported result is "FAILED", or if they do not produce an output report or only partially produce one. Only legacy tests are included in this class. 3.3.6 Class L Class L tests check that all library unit dependencies within a program are satisfied before the program can be bound and executed, that circularity among units is detected, or that pragmas that apply to an entire partition are correctly processed. These tests are normally expected to compile successfully but not to bind or execute. Some implementations may report errors at compile time; potentially illegal constructs are flagged with "-- ERROR:" Some class L tests indicate where bind errors are expected. Successful processing does not require that a binder match error messages with these indications. An implementation passes a class L test if does not successfully complete the bind phase. It passes a class L test if it detects an error and issues a compile time error message. It fails if the test successfully binds and/or executes. An L test need not report "FAILED" (although many do if they execute). This result is acceptable if the test has flagged errors and the compiler has identified them. As with B-tests, the test designers determined some constructs may or may not generate an error report, and that either behavior would be appropriate. Such lines are marked with "-- OPTIONAL ERROR:" In such cases, an implementation is allowed to report an error or fail to report an error. If an error is reported at compile time, the binder need not be invoked. If no errors are reported at compile time, the binder must be invoked and must not successfully complete the bind phase. 3.3.7 Foundation Code Files containing foundation code are named using the regular test name conventions (see Section 3.4). It may appear from their names that they represent class F tests. There is no such test class. Foundation code is only used to build other tests. 3.3.8 Special Needs Annex Tests Special Needs Annex tests have no separate classifications and are classified in the same way as all other tests. There are Class B, Class C, and Class L SNA tests. 3.4 Naming Convention This section describes the naming conventions used in ACVC 2.1, specifically as they apply to files. All file names are of the form ., where is a one, two, or three character extension. File names indicate test class, compilation order (if applicable), and whether the test is implementation dependent or requires customization. When a test is included in a single file, duplicates the test name. The same is true of a foundation. In multiple file tests, the first 7 characters of the file are normally the same as the name of the test, however in some cases, the structure of the test requires that the file name be different from the Ada unit. The application of the conventions to tests is straightforward. There are two different but similar naming conventions used in ACVC 2.1. Legacy tests use the naming conventions of previous ACVC versions. Tests new since ACVC 1.12 use the new convention. The conventions are consistently distinguishable at the 7th character of the name: legacy names have a letter in the 7th position, whereas newer names have a digit. 3.4.1 Legacy Naming The name of a legacy test is composed of seven or eight characters. Each character position serves a specific purpose as described in the table below. The first column identifies the character position(s) starting from the left, the second column gives the kind of character allowed, and the third gives the corresponding meaning: Position 1 Letter Test class (cf. Section 3.3) 2 Hexadecimal AIG chapter containing the test objective 3 Hexadecimal Section within the above AIG chapter 4 Alpha-numeric Sub-section of the above AIG section 5-6 Decimal Number of the test objective within the above sub- section 7 Letter Letter identifier of the sub-objective of the above objective. 8 Alpha-numeric optional - Compilation sequence identifier -- indicates the compilation order of multiple files that make up a single test. This position is used only if the test comprises multiple files. The convention is illustrated in Figure 1. Figure 1. Legacy File Name Convention In multiple file tests, the intended order of compilation is indicated by a numeral at position 8. The first file to be compiled has '0', the second has '1', and so forth. Note: The use of a ninth character ('m') to indicate the file containing the main subprogram has been discontinued. The following table lists the files containing the main subprograms of the legacy multiple file tests. ad7001c0.ada ad7001d0.ada b38103c3.ada b38103e0.ada b63009c3.ada b73004b0.ada b83003b0.ada b83004b0.ada b83004c2.ada b83004d0.ada b83024f0.ada b83e01e0.ada b83e01f0.ada b86001a1.ada b95020b2.ada ba1001a0.ada ba1010a0.ada ba1010b0.ada ba1010c0.ada ba1010d0.ada ba1010e0.ada ba1010f0.ada ba1010g0.ada ba1010h0.ada ba1010i0.ada ba1010j0.ada ba1010k0.ada ba1010l0.ada ba1010m0.ada ba1010n0.ada ba1010p0.ada ba1010q0.ada ba1011b0.ada ba1011c0.ada ba1020a0.ada ba1020b6.ada ba1020c0.ada ba1020f2.ada ba1101b0.ada ba1101c2.ada ba1109a2.ada ba1110a1.ada ba2001f0.ada ba2003b0.ada ba2011a1.ada ba3001a0.ada ba3001b0.ada ba3001c0.ada ba3001e0.ada ba3001f0.ada ba3006a6.ada ba3006b4.ada c38108c1.ada c38108d0.ada c39006c0.ada c39006f3.ada c64005d0.ada c83022g0.ada c83024e1.ada c83f01c2.ada c83f01d0.ada c83f03c2.ada c83f03d0.ada c86004b2.ada c86004c2.ada ca1011a6.ada ca1012a4.dep ca1012b4.ada ca1013a6.ada ca1014a0.ada ca1020d3.ada ca1020e3.ada ca1022a6.ada ca1102a2.ada ca2001h3.ada ca2002a0.ada ca2003a0.ada ca2004a0.ada ca2007a0.ada ca2008a0.ada ca2009c0.dep ca2009f0.dep ca3011a4.dep ca5003a6.ada ca5003b5.ada ca5004b1.ada cc3019b2.ada cc3019c2.ada ea3004g4.ada la5001a7.ada la5007a1.ada la5007b1.ada la5007c1.ada la5007d1.ada la5007e1.ada la5007f1.ada la5007g1.ada la5008a1.ada la5008b1.ada la5008c1.ada la5008d1.ada la5008e1.ada la5008f1.ada la5008g1.ada The file name extension is three characters long. There are four extensions: .ada A file that contains only Ada code. It does not require any pre- processing to create a compilable test. It will be submitted directly to the implementation for determination of test results. All implementations must correctly process these tests. .dep A file that has a test involving implementation-dependent features of the language. These tests may not apply to all implementations. .tst A file that has "code" that is not quite Ada; it contains "macro" symbols to be replaced by implementation-dependent values, and it must be customized (macro expanded) to prepare it for compilation (see Section 4.3.2). Once customized, the resulting test must be processed as indicated by its class. .adt A file that has been modified by the macro processor. It contains only Ada code and may be submitted to the implementation for results. All implementations must correctly process these tests. There are no files in the ACVC distribution with this extension; they are only produced as the output of the macro processor. Tests developed since ACVC 1.12 use different file name extensions. Note that legacy tests have not been renamed for ACVC 2.1. Since [Ada95] includes some organizational differences from [Ada83], this means that the names of legacy tests sometimes will not correspond to the clause of [Ada95] in which the tested feature is described. 3.4.2 ACVC 2.1 Naming The name of an Ada95 test is composed of seven or eight characters. Foundation code has a name composed of seven characters. The use of each character position is described below. The first column indicates the character position(s) starting from the left, and the second column indicates the kind of character allowed, and the third column gives the corresponding meaning: Position 1 Letter Test class; foundations are marked 'F' 2 Alpha-numeric If other than an 'x', the section of [Ada95] describing the feature under test. An 'x' indicates that the test includes one or more features from an annex of [Ada95] 3 Alpha-numeric Core clause or annex letter identifier (either core or Special Needs Annex) 4 Hexadecimal Sub-clause (if a core test), or clause (if an annex test) 5 Alpha-numeric Foundation identifier (alphabetic, unless no foundation is required, in which case a '0') 6-7 Decimal Sequence number of this test in a series of tests for the same clause; foundation code will have "00" . 8 Alpha-numeric optional - Compilation sequence identifier -- indicates the suggested or required compilation order of multiple files that make up a single test (0 is compiled first). This position is used only if the test comprises multiple files. This convention is illustrated in Figure 2. Figure 2. Naming convention in ACVC 2.1 The file name extension is a one or two character file name extension. There are six extensions: .a A file that contains only Ada code (except for configuration pragmas in the case of some Special Needs Annex tests). It does not require any processing to prepare it for compilation (unless configuration pragmas must be handled separately). It is normally submitted directly to the implementation for determination of test results. .am A file that contains the main subprogram for a multi-file test. Generally, this extension is used for one only file of a test. In rare cases (some Annex E tests), a multi-file test may have more than one file containing a "main" subprogram; in such cases, the correct testing procedure is described in the Special Requirements section of the test prologue. .aw A file that has "code" that is not quite Ada; it contains one or more designated strings that must be replaced by a character from the upper half of ISO8850-1 (Latin-1) (see Section 4.3.3). The resulting test must be compiled and run as all other class C tests. .ftn A file that contains Fortran language code and must be compiled by a Fortran compiler. These files are used by tests that check a foreign language interface to Fortran. .c A file that contains C language code and must be compiled by a C compiler. These files are used by tests that check a foreign language interface to C. .cbl A file that contains Cobol language code and must be compiled by a Cobol compiler. These files are used by tests that check a foreign language interface to Cobol. A test that depends on foundation code has an alphabetic character in the fifth position of its name. The required foundation will have the same characters in the second through fifth positions of its name. For example, C123Axx depends on F123A00. 3.4.3 Multiple File Tests When tests are contained in multiple files (i.e., compilation units are contained in different files), the file names are related. The first seven positions of the names of all the files (other than foundation files) comprised by a single test will be identical. The eighth position will provide a distinguishing alpha-numeric which indicates the suggested or required compilation order. In legacy tests, the ninth position is used to indicate the file that contains the main program. For newer tests, the extension ".am" indicates the file with the main program. All tests apply the convention of naming the main subprogram the same as the file (excluding the file extension) plus the letter 'm' (for legacy tests only). For example, the legacy test, C39006F, is contained in four files, named c39006f0.ada, c39006f1.ada, c39006f2.ada, and c39006f3m.ada. The main sub-program of the test is contained in c39006f3.ada and is named "C390006F3M". The test C390006 is also contained in four files, named c3900060.a, c3900061.a, c3900062.a, and c3900063.am. The main subprogram of the test is contained in c3900063.am and is named "C3900063". There are a small number of Special Needs Annex tests for the Distributed Processing Annex that require two active partitions and have two main subprograms. These tests have two files with the .am extension to signify the location of the (multiple) main subprograms. 3.5 Test Program Format Each test file is composed of a test prologue, documenting the test, and the test code proper. All prologue content is marked as Ada comments. [The prologue in files containing non-Ada code is marked according to the comment conventions of the foreign language.] The prologue for all tests is based on that of legacy tests. Legacy tests are generally, but not entirely, consistent in their use of the prologue. The format of the prologue between test files and foundation files is slightly different. The general format of the prologue is as follows: - The distribution name of the file containing this prologue. DISCLAIMER - Use restrictions for ACVC tests; included in all tests. OBJECTIVE - A statement of the test objective; included in all tests. TEST DESCRIPTION - A short description of the design or strategy of the test or other pertinent information. Included in all newer tests but not generally included in legacy tests. SPECIAL REQUIREMENTS - optional - Included if the test has any special requirements for processing. Normally, this section will be found only in special needs Annex tests. For example, an Annex E test may check for the correct implementation of partitions; the requirements for test partitioning and what to use as a main subprogram in each partition would be documented in this section. TEST FILES - optional - Included if the test depends on multiple files; identifies the component files of a multi-file test. APPLICABILITY CRITERIA - optional - Specifies the conditions under which the test can be ruled inapplicable. PASS/FAIL CRITERIA - optional - Explains how to interpret compilation, binding, and/or run-time results for grading the test. MACRO SUBSTITUTIONS - optional - Identifies the macro symbol(s) in the file that must be replaced and provides a brief description of what the replacement(s) represent. CHANGE HISTORY- History of the test file. Included in all tests. All tests have the line immediately after the disclaimer marked "--*". The newer tests have the line after the last prologue line (before the first line of executable code) marked "--!" No other comment lines are marked with those conventions, so the next line after the disclaimer and the first line of code may be found quickly with an editor search. Some tests are composed of multiple files (other than foundation code). Rather than repeating the complete prologue in each file, an alternate approach has been used. The file containing the main program has the complete prologue; the other, related files have those sections that apply to files (TEST FILES, CHANGE HISTORY) and refer to the main file for the other sections. 3.6 General Standards ACVC tests were developed to a general set of standards. To promote a variety of code styles and usage idioms in the tests, standards were not necessarily rigorously enforced but were used as guidelines for test writers. A maximum line length of 79 characters was used to enhance electronic distribution of tests (except when specific testing requirements dictated otherwise, usually in .dep and .tst files). Tests tend to be about 120 executable lines long, though many tests deviate from this norm (either longer or shorter) to achieve a design that focuses on the objective and a readable, maintainable test. Sometimes complex objectives have been divided into sub-objectives to achieve complete coverage in comprehensible, maintainable tests. Some tests check multiple sub- objectives; in other cases, sub-objectives are checked in separate tests. Legacy tests use only the basic 55-character set (26 capital letters, 10 digits, and 19 punctuation marks). Unless there is a specific test requirement, numeric values are in the range (-2048..2047), which can be represented in 12 bits. Numeric values are generally in the range (-128..127). Tests new to ACVC 2.0 and ACVC 2.1 use both upper and lower case letters and may use larger numeric values (but within the range (-65536..65535) except in rare cases). Legacy tests tend to use as few Ada features as necessary to write a self- checking executable test that can be read and maintained. Newer tests tend to exhibit a usage oriented style, employing a rich assortment and interaction of features and exemplifying the kind of code styles and idioms that compilers may encounter in practice. In the newer tests, Ada reserved words are entirely in lower case. Identifiers normally have their initial letter capitalized. Every attempt has been made to choose meaningful identifiers. In B class tests, identifier names often provide a clue to the specific case or situation under test. In C class tests, identifiers are normally chosen to help document the test design or the intent of the code. The newer executable tests generally provide some visual separation of those test elements which focus on conformance issues from those which govern the flow of a test. For example, there is frequently a need to establish preconditions for a test and examine post-conditions after a section of test code has executed. To distinguish between constructs (types, objects, etc.) that are part of the test code and those that are artifacts of the testing process (e.g., pre-, post-conditions), the latter have "TC_" prefixed to the identifier name. This prefix is shorthand for "Test_Control". 3.7 Test Structure Executable tests (class A, C, D, E) generally use the following format: with Report; procedure Testname is begin Report.Test ("Testname", "Description ..."); ... if Post_Condition /= Correct_Value then Report.Failed ("Reason"); end if; ... Report.Result; end Testname; The initial call to Report.Test prints the test objective using Text_IO output. After each section of test code, there is normally a check of post conditions. The if statement in this skeleton is such a check; unexpected results produce a call to Report.Failed. The sequence of test code / check of results may be repeated several times in a single test. Finally, there is a call to Report.Result that will print the test result to Text_IO output. Often, but not always, this structure in enclosed in a declare block. One or more calls to Report.Failed will report a result of "FAILED" and a brief suggestion of the likely reason for that result. More complex tests may include calls to Report.Failed in the code other than in the main program, and therefore exhibit the following format for the main procedure: with Report; procedure Testname is begin Report.Test ("Testname", "Description ..."); ... Subtest_Call; ... Report.Result; end Testname; Fail conditions are detected in subprograms (or tasks) and Report.Failed is called within them. Occasionally, as a test is running, it will determine that it is not applicable. In such a case, it will call Report.Not_Applicable which will report a result of "NOT_APPLICABLE" (unless there is also a call to Report.Failed). Often, a test calls one of the functions Report.Ident_Int or Report.Ident_Bool to obtain a value that could be provided as a literal. These functions are intended to prevent optimizers from eliminating certain sections of test code. The ACVC suite has no intention of trying to discourage the application of optimizer technology, however satisfactory testing of language features often requires the presence and execution of specific lines of test code. Report.Ident_Int and Report.Ident_Bool are structured so that they can be modified when needed to defeat optimizer advances. Class B tests may be structured differently. Since they are not executable, they normally do not include calls to Report.Test or Report.Result (since those lines of code would have no output effect). Instead, intentional errors are coded that invoke specific legality rules. The source code includes comments that document expected compiler results. Legal constructs may also be included in B class tests. Constructs that are allowed by the legality rules are marked "-- OK"; constructs that are disallowed are marked "-- ERROR:". There is usually a brief indication of the nature of an intentional error on the same line or the line following a comment. The indications of expected results are approximately right justified to the code file margin, about column 79, for quick visual identification. Class L tests are multifile tests with illegalities that should be detected at bind time. They are generally structured like class C tests, often with calls to Report.Test and Report.Result, but they are not expected to execute. 3.8 Delivery Directory Structure The delivery of ACVC tests is structured into a directory tree that reflects the organization of the test suite and support code. See Fig. 3. The top level directory contains the support subdirectory, the docs subdirectory, and a subdirectory for each major grouping of tests. The support subdirectory contains all support packages (Report, ImpDef, TCTouch) and the source code for all test processing tools (Macro expander, Wide Character processor). Each of the other subdirectories contains all tests that begin with the indicated prefix. For example, all of the B2* tests are in the b2 subdirectory; all of the cxh* tests are in the cxh subdirectory. Note that all of the A* tests are in the a directory, all of the D* tests are included in the d subdirectory, and all of the E* tests are included in the e subdirectory. The l directory contains the L tests for the core; other L tests are in directories named with three letters, indicating the class (l) and the Specialized Needs Annex to which the tests apply. Subdirectories that would be empty are not stubbed. Figure 3 sketches this scheme, but does not show complete detail. A list of all subdirectories is included in Section 4.2.2. Figure 3. Delivery Directory Structure 3.9 File Format To conserve space, all files in ACVC 2.1 (including test files, foundation files, and support files) have been compressed, except for three informational files. Decompressed files (see Section 4.2.2) use only ASCII characters. No formatting control characters, rulers or other information intended for word processors or editors is included in the files. Files with the .zip extension have been compressed using a DOS zip utility; files with the .Z extension have been compressed with Unix compress and put in Unix tar format. Section 4 Using The ACVC 4.1 Introduction There are eight major steps involved in using the ACVC test suite; two of them are sometimes not required. The steps are: installing the software, tailoring the software, processing the support files, establishing command scripts, processing the ACVC tests, grading the test results, addressing problems (if necessary), and reprocessing problem tests (if necessary). The first six of these tasks must be completed successfully to accomplish a test run. The first four normally need be completed only once for each ACVC release. Each step is explained in the following sections. The flow from one to the next is illustrated in figure 4. 4.2 Installation of the ACVC Test Suite The ACVC test suite must be unloaded from the delivery medium or downloaded from a delivery site before it can be unpacked, customized for an implementation, run, and graded. 4.2.1 Contents of the ACVC Delivery The delivery consists of 9 archives (sets of compressed files) or a single compressed tar file. Each archive or compressed tar file contains compressed versions of ACVC software (test, foundation, and/or support code) structured into a directory tree. Files must be extracted from the archives. Archive contents are described later in this section. The following uncompressed files are included in the delivery: README acvc2_1.lst ug.txt The file named README contains a description of the distribution and extraction procedures. The file named acvc2_1.lst contains the names of all test files (including foundations) and support files in ACVC 2.1.The file named ug.txt is an ASCII version of this User's Guide. Since none of these files is compressed, they may be read in an editor, listed to the screen of a PC, or printed to standard print output. All are ASCII files. Figure 4. Using the ACVC Figure 4 (Cont.) Using the ACVC 4.2.2 Guide to Decompressing Files The ACVC files are provided in two forms: compressed in zip format and compressed in Unix compress format. Zipped files are included in 9 zip archives (files) with the file extension .zip. The Unix compressed file, with extenxion .Z, contains a Unix tar file. This section provides generic instructions for uncompressing them. These instructions are not the only ways to uncompress the files; sophisticated users may wish to use their own procedures. If the instructions below are used, the following subdirectories will have been created and populated with test files after all uncompression: .\acvc2_1\a .\acvc2_1\b2 .\acvc2_1\b3 .\acvc2_1b4 .\acvc2_1\b5 .\acvc2_1\b6 .\acvc2_1\b7 .\acvc2_1\b8 .\acvc2_1\b9 .\acvc2_1\ba .\acvc2_1\bb .\acvc2_1\bc .\acvc2_1\bd .\acvc2_1\be .\acvc2_1\bxa .\acvc2_1\bxb .\acvc2_1\c2 .\acvc2_1\c3 .\acvc2_1\c4 .\acvc2_1\c5 .\acvc2_1\c6 .\acvc2_1\c7 .\acvc2_1\c8 .\acvc2_1\c9 .\acvc2_1\ca .\acvc2_1\cb .\acvc2_1\cc .\acvc2_1\cd .\acvc2_1\ce .\acvc2_1\cz .\acvc2_1\d .\acvc2_1\e .\acvc2_1\l .\acvc2_1\cxa .\acvc2_1\cxb .\acvc2_1\bxc .\acvc2_1\bxd .\acvc2_1\bxe .\acvc2_1\bxf .\acvc2_1\bxg .\acvc2_1\bxh .\acvc2_1\cxc .\acvc2_1\cxd .\acvc2_1\cxe .\acvc2_1\cxf .\acvc2_1\cxg .\acvc2_1\cxh .\acvc2_1\lxd .\acvc2_1\lxe .\acvc2_1\lxh .\acvc2_1\docs .\acvc2_1\support Note that the names are given here in all lowercase; some systems may create lowercase names. The path separator, shown here as '\', may also differ. You may wish to copy the three uncompressed files into the acvc2_1 directory. 4.2.2.1 Decompressing Zipped Files All ACVC files other than those noted in Section 4.2.1 have been compressed (zipped) into compressed archives (zip-files) that have the MS-DOS file extension ".zip". A DOS utility was used to compress them. They must be decompressed before they can be further processed. All ACVC 2.1 files may be decompressed using the following steps. Approximately 23 MB of free space on a DOS machine hard drive will be required to accomplish the decompression using this technique. Copy each archive (file with .zip extension) to the hard disk. Decompress it using the default settings (no options). For example, if the archive name is acvc1.zip, type unzip acvc1 or pkunzip -r acvc1 The files were compressed on a Unix system, where is used as a line terminator. If they are decompressed on a system that uses as a line terminator, the above unzip command should be modified to unzip -a acvc1 After all files have been extracted from the archive, delete the archive file from the hard disk if you wish to conserve space. As it decompresses files, unzip will restore the directory structure of the files, creating all needed subdirectories. Some users may prefer to work with ACVC files in an alternate directory structure or none at all. If the unzip utility is invoked with the "-j" option, all files in the archive will be decompressed and placed in the local working directory. In other words, none of the above subdirectories will be created. Since there are too many ACVC files to fit into a root DOS directory, if you wish to put all files in a single directory, you must first create a subdirectory (e.g., mkdir \ACVC) and unzip all archives there. 4.2.2.2 Decompressing Unix Compress Files All ACVC files have been included in a Unix tar format file and then compressed using the Unix compress utility. To create a set of ACVC files, first copy the compressed file acvc2_1.tar.Z from the tape to a hard drive. Uncompress the file with the Unix command uncompress acvc2_1.tar.Z (note that particular Unix implementations may have different formats or require specific qualifiers.) After the acvc file has been uncompressed, it must be untarred. Move to the directory where you want the ACVC2_1 directory to be created and then untar the ACVC file tar -xvf /acvc2_1.tar where is the location of the uncompressed tar file. Please note that these are generic instructions and may need to be customized or modified for specific systems. 4.3 Tailoring the ACVC Test Suite There are some files in the delivery that require modification before ACVC 2.1 is ready for processing by an Ada implementation. Package ImpDef (impdef.a) must be edited to include values suitable for proper testing of an implementation if the defaults are not acceptable. ImpDef is a package that is new to the 2.X suite, and all users will have to do this modification. The macros.dfs file must similarly be edited to include values suitable for testing. This file is slightly different from previous ACVC suites, so all users will have to modify it, but most changes can be retained from previous versions. All .tst files (including package Spprt13 (spprt13s.tst) ) must have their macro symbols replaced by implementation specific values. A body for FcnDecl (fcndecl.ada) must be provided if necessary. Finally, Package Report (repbody.ada) must be modified if necessary; previous modifications can generally be carried forward. The required customization is described in the following sections. 4.3.1 ImpDef Customization All implementations must customize impdef.a for ACVC 2.1 unless they wish to rely on the defaults provided. ImpDef must be part of the environment whenever a test that depends on it is processed. Note that in ACVC 2.1, ImpDef uses child libraries for the Special Needs Annexes. The only ImpDef children that need be modified are those associated with the SNAs that the implementation uses for validation. ACVC tests use the entities in ImpDef to control test execution. Much of the information in ImpDef relates to the timing of running code; for example, the minimum time required to allow a task switch may be used by a test as a parameter to a delay statement. The time to use is obtained as an ImpDef constant. impdef.a was added as a new feature to ACVC 2.0 suite. It is related to macro.dfs in that it must be customized with values specific to an implementation and ACVC tests will rely on these values. ImpDef is different in the following respects: • Defaults are provided. Some implementations may be able to rely entirely on the default values and subprograms, so no customization would be necessary. • Some implementations may choose to provide bodies for one procedure and/or one function. Bodies so provided must satisfy requirements stated in ImpDef. • It is not used for macro expansion of tests. Instead, ImpDef must be available at compile time (i.e., included in the environment) for tests that rely upon it. There are child packages of ImpDef for each of the Special Needs Annexes. An implementation that uses one or more of the Special Needs Annexes in its validation must customize the associated ImpDef child packages (or rely on their defaults) and must set the appropriate booleans in impdef.a. Specific instructions for the values required by ImpDef and its children are included in impdef.a, impdefc.a, impdefd.a, impdefe.a, impdefg.a, and impdefh.a. (Note that impdefc, for example, refers to Annex C.) A copy of ImpDef is included in Appendix B. 4.3.2 Macro Defs Customization The details of macro.dfs have changed from ACVC 1.11, ACVC 2.0, and ACVC 2.0.1 to ACVC 2.1. A macro.dfs that worked with a previous suite will have to be modified for ACVC 2.1. macro.dfs has remained substantially the same between ACVC 2.0, ACVC 2.0.1, and ACVC 2.1, but some changes are required. Tests in files with the extension ".tst" contain symbols that represent implementation dependent values. The symbols are identifiers with a initial dollar sign ('$'). Each symbol must be replaced with an appropriate textual value to make the tests compilable. The Macrosub program distributed with the ACVC can automatically perform the required substitutions. This program reads the replacement values for the symbols from the file macro.dfs and edits all the ".tst" tests in the suite to make the needed changes. It writes the resulting, compilable programs into files with the same name as the original but with the extension .adt. A sample macro.dfs is included with the ACVC, and is included in Appendix D; it contains descriptions of all the symbols used in the test suite. Substitutions using the Macrosub program may be made as follows: 1. Edit the file macro.dfs using values appropriate for the implementation. Symbols that use the value of MAX_IN_LEN are calculated automatically and need not be entered. 2. Create a file called tsttests.dat that includes all of the .tst test file names, and their directory locations if necessary. A version of this file (without directory information) is supplied. 3. Compile and bind MacroSub. 4. Run MacroSub. The program will replace all symbols in the .tst files with values from macro.dfs. Test files with the original test name but the extension .adt will contain the processable tests. The original .tst files will not be modified. 4.3.3 Processing for Wide_Character Tests There are two new tests in ACVC 2.1 that require preprocessing. They must be processed with the Wide Character tool; the macro expander tool will not work with them. Information for these tests is not included in macro.dfs. There are two tests in ACVC 2.1 that check an implementation's ability to process characters drawn from the full set of graphic symbols of ISO 10646 BMP (See [Ada95] 2.1). Since such characters cannot be included in the distribution media in a way that can reliably be read by an arbitrary implementation, they contain character sequences that must be replaced by the intended character. A special tool, the WideChr program, which will automatically perform the required substitutions, has been included with this distribution. The affected tests are contained in files with the extension .aw. Each such test contains a six or eight character sequence of the form "[ab]" or "[abcd]" Note that double quotes make up part of the special sequence (acting as part of the escape sequence). The processor will replace the string with a character that is designated by 16#abcd#, where the alphanumeric characters 'a', 'b', 'c', 'd', are hexadecimal digits. Note that the strings to be replaced do not start with '$', and the replacement is synthetic, not substitution. Therefore, the macro expander tool will not work with these tests. The WideChr tool takes the designated tests as input. The names of the required tests are included in the WideChr tool code as constants. It reads path names for the tests from ImpDef. The tool reads the tests, synthesizes the necessary replacements, and writes the resulting, compilable programs into files with the same name as the original but with the extension .a. Substitutions using the WideChr program may be made as follows: 1. Edit the file impdef.a to indicate the path where the tests are located. This value will be concatenated with the test name to form the complete name of a file. 3. Compile and bind WideChr. 4. Run WideChr. The program will replace all special sequences in the .aw files with synthesized characters. Test files with the original test name but the extension .a, in the same path location as the original .aw files, will contain the processable tests. The original .aw files will not be modified. 4.3.4 Package SPPRT13 and Function FcnDecl Package SPPRT13 declares six constants of type System.Address that are primarily used by tests of Section 13 features. It is in the file spprt13s.tst. As distributed, the package uses macro symbols which must be replaced. In most cases, the substitution can be accomplished by the macro substitution described in the preceding section. If appropriate literals, constants, or predefined function calls can be used to initialize these constants, they should be supplied in macro.dfs. Otherwise, the package FCNDECL must be modified. The version of SPPRT13 distributed with ACVC 2.1 is slightly different from the version distributed with ACVC 1.11. A body is not required for this package (and would, therefore, be illegal in Ada95). All implementations should verify that package SPPRT13 can be properly customized using the macro substitution technique. Note that in Ada95, a body for SPPRT13 is illegal. The specification for package FCNDECL is in the file fcndecl.ada. SPPRT13 depends on FCNDECL (in a context clause that both "with"s it and "use"s it). As supplied with the ACVC, FCNDECL is an empty package specification. If appropriate literals, constants, or predefined function calls cannot be used to customize the constants declared in SPPRT13, the implementer must declare appropriate functions in the specification of FCNDECL and provide bodies for them in a package body or with a pragma Import. Modifications to FCNDECL must receive advance approval from the AVF (and, if necessary, the AVO) before use in a validation attempt. 4.3.5 Modification of Package REPORT All executable tests use the Report support package. It contains routines to automate test result reporting as well as routines designed to prevent optimizers from removing key sections of test code. The specification of package Report is in the file repspec.ada; the body is in repbody.ada. Under some conditions, the body of package Report may need to be modified. For example, the target system for a cross-compiler may require a simpler I/O package than the standard package Text_IO. In such a case, it may be necessary to replace the context clause and the I/O procedure names in the body of Report. Modifications to Report must receive advance approval from the AVF (and, if necessary, the AVO) before use in a validation attempt. 4.3.6 Allowed Test Modifications Class B tests have one or more errors that implementations must identify. These tests are structured such that, normally, implementations can report all included errors. Occasionally, an implementation will fail to find all errors in a B-test because it encounters a limit (e.g., error cascading, resulting in too many error reports) or is unable to recover from an error. In such cases, a user may split a single B-test into two or more tests. The resulting tests must contain all of the errors included in the original test, and they must adhere as closely as possible to the style and content of the original test. Very often, the only modification needed is to comment out earlier errors so that later errors can be identified. In some cases, code insertion will be required. An implementation must be able to demonstrate that it can detect and report all intended B-test errors. Splits may also be required in executable tests, if, for example, an implementation capacity limitations is encountered (e.g., a number of generic instantiations too large for the implementation). In very exceptional cases, tests may be modified by the addition of a length clause (to alter the default size of a collection), or by the addition of an elaboration Pragma (to force an elaboration order). Tests that use configuration pragmas (see 4.6.5.4) may require modification since the method of processing configuration pragmas is implementation dependent. Some tests include foreign language code (Fortran, C, or Cobol). While the features used should be acceptable to all Fortran, C, and Cobol implementations, respectively, some implementations may require modification to the non-Ada code. Modifications must, of course, preserve the input-output semantics of the (foreign language) subprogram; otherwise, the ACVC test will report a failure. All splits and modifications must be approved in advance by the AVF (and, if necessary, the AVO) before they are used in a validation attempt. It is the responsibility of the user to propose a B-test split that satisfies the intention of the original test. Modified tests should be named by appending an alphanumeric character to the name of the original test. When possible, line numbers of the original test should be preserved in the modification. All tests must be submitted to the compiler as distributed (and customized, if required). If a test is executable (class A, C, D, E) and compiles successfully, then it must be run. Modified tests or split tests may be processed next. Only the results of the modified tests will be graded. 4.4 Processing the Support Files After all the files identified in Section 4.3 have been customized as needed and required, the support files can be processed and the reporting mechanism can be verified. 4.4.1 Support Files The following files are necessary to many of the ACVC tests. Implementations that maintain program libraries may wish to compile them into the program library used for validation: repspec.ada repbody.ada impdef.a impdefc.a (If validating Annex C) fcndecl.ada impdefd.a (If validating Annex D) checkfil.ada impdefe.a (If validating Annex E) lencheck.ada impdefg.a (If validating Annex G) enumchek.ada impdefh.a (If validating Annex H) spprt13s.adt (after macro substitution) tctouch.ada (Depending on local requirements and strategy, it may also be convenient to compile all foundation code into the program library as well.) 4.4.2 "CZ" Acceptance Tests Four tests having names beginning "CZ" are part of the ACVC suite. Unlike other tests in the suite, they do not focus on Ada language features. Instead, they are intended primarily to verify that software needed for the correct execution of the test suite works as expected and required. They check, for example, to see that package Report and package TC_Touch work correctly. All CZ tests must execute correctly and exhibit the prescribed behavior for a successful validation. The acceptance test CZ1103A must be processed and run as the first step of a validation attempt to ensure correct operation of CHECKFILE. (Some of the executable file I/O tests use a file checking procedure named CHECKFILE that determines an implementation's text file characteristics. The source code for this procedure is in the file checkfil.ada.) CZ1103A checks whether errors in text files are properly detected, therefore, CZ1103A will print some failure messages when it is executed. The presence of these messages does not necessarily mean the test has failed. A listing of the expected output for CZ1103A is included in Appendix D (times and dates in the actual output will differ). The acceptance test CZ00004 produces output that verifies the intent of the validation. It relies on ImpDef having been correctly updated for the validation and produces output identifying the annexes (if any) that will be included as part of the validation. 4.5 Establishing Command Scripts Users will often find it convenient to run large numbers of ACVC tests with command scripts. This section discusses some of the issues to be considered in developing a script. 4.5.1 Command Scripts All compiler options and switches that are appropriate and necessary to run the ACVC tests must be identified and included in commands that invoke the compiler. The same is true for the binder or any other post-compilation tools. Any implementation dependent processing of partitions, configuration pragmas, and strict mode processing must be part of the scripts for running tests that rely on these features. A script should compile (only) all class B tests. It should compile and bind all class L tests; if link errors are not explicitly given, the script should attempt to execute the L tests. It should compile all class F files. It should compile, bind, and execute all class A, C, D, and E tests. 4.5.2 Dependencies A command script must take account of all required dependencies. As noted earlier, some tests are composed of multiple test files. Also, some tests include foundation code, that may be used by other tests. If a foundation is not already in the environment, it must be compiled as part of building the test. All files that are used in a test must be compiled in the proper order, as indicated by the file name. For implementations that require the extraction individual compilation units from test files before submission to the compiler, the individual units must be submitted to the compiler in the same order in which they appear in the file. 4.6 Processing ACVC Tests After the ACVC tests and support code have been installed and all required modifications and preliminary processing has been completed, the suite can be processed by an implementation. This section describes the tests required for validation, required partitioning, how tests may be bundled for efficiency, and certain processing that may be streamlined. It also describes how the suite has been organized to allow a user to focus on specific development needs. 4.6.1 Required Tests An implementation may be validated against the core language only or the core language plus one or more Special Needs Annexes. All core tests (except as noted in 4.6.4) must be processed with acceptable results for validation against the core language. All legacy tests, as well as all newer tests for clauses 2-13 and annexes A and B are core tests. Validation including one or more Special Needs Annexes requires that all tests for the annex(es) in question be correctly processed in addition to all core tests Tests that are not applicable to an implementation (e.g., because of size limitations) and tests that report "NOT APPLICABLE" when run by an implementation must nevertheless be processed and demonstrate appropriate results. Tests that are on the current Withdrawn List as maintained by the AVO need not be processed. 4.6.2 Test Partitions Unless otherwise directed by the Special Requirements section of a test, all tests are to be configured and run in a single partition. The method of specifying such a partition is implementation dependent and not determined by the ACVC. The only tests that must be run in multiple partitions are those which test Annex E, Distributed Systems. 4.6.3 Bundling Test Programs In some situations, the usual test processing sequence may require an unacceptable amount of time. For example, running tests on an embedded target may impose significant overhead time to download individual tests. In these cases, executable tests may be bundled into aggregates of multiple tests. A set of bundled tests will have a driver that calls each test in turn; ACVC tests will then be called procedures rather than main procedures. No source changes in the tests are allowed when bundling; that is, the only allowed change is the method of calling the test. All bundles must be approved by the AVF (and, if necessary, the AVO) to qualify for a validation attempt. It is the responsibility of the user to identify the tests to be bundled and to write a driver for them. 4.6.4 Processing That May be Omitted All applicable ACVC tests must be correctly processed, subject to the caveats below. During the period when ACVC 2.0.1 was required, Ada95 core tests that failed did not necessarily prevent an implementation from being validated under ACVC 2.0. This policy no longer applies for ACVC 2.1. A user may streamline processing of the ACVC tests to the greatest degree possible consistent with complete processing of all tests. Many Ada95 tests rely on foundation code. A foundation need not be compiled anew each time a different test uses it. In a processing model based on a program library, it is reasonable to compile the code into the library only once and allow the binder to use the processed results for each test that "with"s the foundation. A user may determine, with AVF concurrence, that some tests require support that is impossible for the implementation under test to provide. For example, there are tests that assume the availability of file I/O whereas some (embedded target) implementations do not support file I/O. Those tests need not be processed during on-site testing; however, the implementer must demonstrate that they are handled in accordance with the language standard. This demonstration may be performed before on-site testing, in which case it need not be repeated. Annex B tests that require foreign language code (Fortran, C, Cobol) to be compiled and bound with Ada code need not be processed if an implementation does not support a foreign language interface to the respective language. Tests for the Special Needs Annexes of [Ada95] need not be processed except by implementations that wish to be validated for an annex. In that case, only the tests for the annex in question (in addition to all core tests) need be processed. No test on the withdrawn list need be processed. 4.6.5 Tests with Special Processing Requirement Some tests may require special handling. These are primarily SNA tests, but some core tests are affected. For example, distributed processing tests may require an executable image in multiple partitions, where partitions are constructed in an implementation specific manner. Real-time processing tests may have configuration pragmas that have to be handled in an implementation specific way. Numeric Processing tests require strict mode processing to be selected. Each such test has a Special Requirements section in the test header describing any implementation specific handling that is required for the test. A list of all such tests is included in Appendix A. 4.6.5.1 Foreign Language Interface Tests Annex B, Interface to Other Languages, is part of the Ada95 core language. Any implementation that provides interfaces to C, Cobol, and/or Fortran must correctly process, and pass, the tests for interfaces to C, Cobol, and/or Fortran code respectively. If an implementation does not have a C language interface, the tests identified below as C Language Interface tests are not applicable. If an implementation does not have a Cobol language interface, the tests identified below as Cobol Language Interface tests are not applicable. If an implementation does not have a Fortran language interface, the tests identified below as Fortran Language Interface tests are not applicable. Some interface tests contain routines written in the foreign language. A file containing foreign language code must be compiled through the appropriate compiler. Although the foreign language code included in ACVC tests uses no special or unique features, and should be accepted by any standard (C, Cobol, or Fortran) compiler, there may be dialect problems that prevent the code from compiling correctly. Modifications to the foreign language code are allowable; the modifications must follow the code as supplied as closely as possible, and the result must satisfy the requirements stated in the file header. Such modifications must be approved in advance by the AVF (and, if necessary, the AVO). The method for compiling foreign code is implementation dependent and not specified as part of the ACVC. Ada code in these tests must be compiled as usual. The Ada code includes Pragma Interface which references the foreign language code. The link name of foreign language object code must be provided in ImpDef. When all code has been compiled, the test must be bound (including the foreign language object code) and run. The method for binding Ada and foreign language code is implementation dependent and not specified as part of the ACVC. The test must report "PASSED" when executed. C Language Interface If the implementation has a C language interface, the tests identified below must be passed. The starred tests contain C code that must be compiled and linked. The C code is easily identifiable because the file has the extension ".C". The C code may be modified to satisfy dialect requirements of the C compiler. The C code files must be compiled through a C compiler, and the resulting object code must be bound with the compiled Ada code. Pragma Interface will take the name of the C code from ImpDef. CD30005* CXB3001 CXB3002 CXB3003 CXB3004 CXB3005 CXB3006 CXB3007 CXB3008 CXB3009 CXB3010 CXB3011 CXB3012 CXB3013* CXB3014 CXB3015 CXB3016 Cobol Language Interface If the implementation has a Cobol language interface, the tests identified below must be passed. The starred tests contain Cobol code that must be compiled and linked. The Cobol code is easily identifiable because the file has the extension ".CBL". The Cobol code may be modified to satisfy dialect requirements of the Cobol compiler. The Cobol code files must be compiled through a Cobol compiler, and the resulting object code must be bound with the compiled Ada code. Pragma Interface will take the name of the Cobol code from ImpDef. CXB4001 CXB4002 CXB4003 CXB4004 CXB4005 CXB4006 CXB4007 CXB4008 CXB4009* Fortran Language Interface If the implementation has a Fortran language interface, the tests identified below must be passed. The starred tests contain Fortran code that must be compiled and linked. The Fortran code is easily identifiable because the file has the extension ".FTN". The Fortran code may be modified to satisfy dialect requirements of the Fortran compiler. The Fortran code files must be compiled through a Fortran compiler, and the resulting object code must be bound with the compiled Ada code. Pragma Interface will take the name of the Fortran code from ImpDef. CXB5001 CXB5002 CXB5003 CXB5004* CXB5005* 4.6.5.2 Tests for the Distributed Processing Annex The ACVC tests for the Distribution Annex are applicable only to implementations that wish to validate this SNA. Not all of these tests apply to all implementations, since the annex includes some implementation permissions that affect the applicability of some tests. The principal factors affecting test applicability are: 1. whether or not the Remote_Call_Interface pragma is supported; 2. whether or not a Partition Communication System (PCS) is provided (i.e., whether a body for System.RPC is provided by the implementation); 3. if a body for System.RPC is provided, whether or not it can be replaced; 4. whether or not the Real-Time Annex is also supported. An implementation may validate against the annex without providing a PCS. An implementation may disallow replacement of language-defined compilation units like System.RPC. However, in order to validate against the Distribution Annex, an implementation must either provide a PCS or allow a body for System.RPC to be compiled. Remote_Call_Interface pragma [Ada95] allows explicit message-based communication between active partitions as an alternative to RPC [E.2.3(20)]. If an implementation does not support the Remote_Call_Interface pragma then the following tests are not applicable: BXE2009 BXE2010 BXE2011 BXE4001 CXE2001 CXE4001 CXE4002 CXE4003 CXE4004 CXE4005 CXE4006 CXE5002 CXE5003 LXE3001 Partition Communication System An implementation is not required to provide a PCS [E.5(27)] in order to validate the Distribution Annex. If no PCS is provided then the following tests are not applicable: CXE1001 CXE2001 CXE4001 CXE4002 CXE4003 CXE4004 CXE4005 CXE4006 System.RPC Two tests provide a body for System.RPC. If an implementation does not allow the compilation of a body for System.RPC then the tests identified below are not applicable. An implementation may include a private part that includes declarations, such as additional procedures and functions, that impose additional requirements on System.RPC. If an implementation allows the compilation of a body for System.RPC and includes additional declarations, then the same declarations (and implementations) may be added to the body of System.RPC in the tests identified below. Declarations in the private part of the implementation's System.RPC do not affect the applicability of the tests in this group. CXE5002 CXE5003 Real-Time Annex Support Many implementations that support the Distribution Annex will also support the Real-Time Annex. Test CXE4003 is designed to take advantage of Real-Time Annex features in order to better test the Distribution Annex. For implementations that do not support the Real-Time Annex, test CXE4003 must be modified. This modification consists of deleting all lines that end with the comment "--RT". Configuring Multi-Partition Tests Some Distribution Annex tests require multiple partitions to run the test, but no more than two partitions are required for running any of them. All multi- partition tests contain a main procedure for each of the two partitions. The two partitions are referred to as "A" and "B" and the main procedures for these partitions are named _A and _B respectively. Each test contains instructions naming the compilation units to be included in each partition. Most implementations will be primarily concerned with the main procedure and RCI packages that are to be assigned to each partition; the remainder of the partition contents will be determined by the normal dependency rules. The naming convention used in multi-partition tests aid in making the partition assignments. If the name of a compilation unit ends in "_A" then it should be assigned to partition A. Compilation units with names ending in "_B" should be assigned to partition B. The following tests require that two partitions be available to run the test: CXE1001 CXE2001* CXE4001 CXE4002 CXE4003 CXE4004 CXE4005 CXE4006 CXE5002 CXE5003 LXE3001 LXE3002* (*) Tests CXE2001 and LXE3002 contain a Shared_Passive package and two active partitions. They may be configured with either two or three partitions. The two partition configuration must have two active partitions and the Shared_Passive package may be assigned to either one of the active partitions. The three partition configuration consists of two active partitions and a single passive partition, and the passive partition will contain the single Shared_Passive package. Running Multi_Partition Tests All of the multi-partition tests include the package Report in both of the active partitions. In order for the test to pass, both partitions must produce a passed message (except for LXE3002 - see special instructions for that test). If either partition produces a failed message, or if one or both partitions do not produce a passed message, the test is graded "failed". When running the multi-partition tests it is not important which partition is started first. Generally, partition A acts as a server and partition B is a client, so starting partition A first is usually best. In the event a test fails due to the exception Communication_Error being raised, it is permissible to rerun the test. 4.6.5.3 Tests for the Numerics Annex Many of the tests for Annex G, Numerics, must be run in strict mode. The method for selecting strict mode is implementation dependent and not specified by the ACVC. (Note that the tests for numerical functions specified in Annex A may, but need not, be run in strict mode.) The following tests must be run in strict mode: CXG2003 CXG2004 CXG2006 CXG2007 CXG2008 CXG2009 CXG2010 CXG2011 CXG2012 CXG2013 CXG2014 CXG2015 CXG2016 CXG2017 CXG2018 CXG2019 CXG2020 CXG2021 CXG2022 CXG2023 CXG2024 4.6.5.4 Tests that use Configuration Pragmas Several of the tests in Annex D, Real Time Processing, Annex E, Distributed Processing, and Annex H, Safety and Security, use configuration pragmas. The technique for applying a configuration pragma to a test composed of multiple compilation units is implementation dependent and not specified by the ACVC. Every implementation that uses any such test in a validation must therefore take the appropriate steps, which may include modifications to the test code and/or post-compilation processing, to ensure that such a pragma is correctly applied. The following tests require special processing of the configuration pragma: BA15001 BXC5001 BXH4001 BXH4002 BXH4003 BXH4004 BXH4005 BXH4006 BXH4007 BXH4008 BXH4009 BXH4010 BXH4011 BXH4012 BXH4013 CXD1004 CXD1005 CXD2001 CXD2002 CXD2003 CXD2004 CXD2005 CXD2006 CXD2007 CXD2008 CXD3001 CXD3002 CXD3003 CXD4001 CXD4003 CXD4004 CXD4005 CXD4006 CXD4007 CXD4008 CXD4009 CXD4010 CXD5002 CXD6002 CXD6003 CXDA003 CXDB005 CXH1001 CXH3001 CXH3003 LXD7001 LXD7003 LXD7004 LXD7005 LXD7006 LXD7007 LXD7008 LXD7009 LXH4001 LXH4002 LXH4003 LXH4004 LXH4005 LXH4006 LXH4007 LXH4008 LXH4009 LXH4010 LXH4011 LXH4012 LXH4013 4.6.6 Focus on Specific Areas The ACVC test suite is structured to allow compiler developers and testers to use parts of the suite to focus on specific compiler feature areas. Both the legacy tests and the newer tests tend to focus on specific language features in individual tests. The name of the test is generally a good indicator of the primary feature content of the test, as explained in the discussion of naming conventions. Beware that legacy test names have not changed, but the Ada Reference Manual organization has changed from [Ada83] to [Ada95], so some legacy test names point to the wrong clause of [Ada95]. Further, note that the general style and approach of the newer tests creates user-oriented test situations by including a variety of features and interactions. Only the primary test focus can be indicated in the test name. ACVC 2.1 tests are divided into core tests and Special Needs Annex tests. Recall that annexes A and B are part of the core language. All annex tests (including those for annexes A and B) have an 'X' as the second character of their name; Special Needs Annex tests have a letter between 'C' and 'H' (inclusive) corresponding to the annex designation, as the third character of the test name. 4.7 Grading Test Results Although a single test may examine multiple language issues, ACVC test results are graded "passed", "failed", or "not applicable" as a whole. All customized, applicable tests must be processed by an implementation. Results must be evaluated against the expected results for each class of test. Results that do not conform with expectations constitute failures. The only exceptions allowed are discussed above in test splitting and modification; in such cases, processing the approved modified test(s) must produce the expected behavior. Any differences from the general discussion of expected results below for executable or non-executable tests are included as explicit test conditions in test prologues. Warning or other informational messages do not affect the pass/fail status of tests. Expected results for executable and non-executable tests are discussed in Sections 4.7.1 - 4.7.3. Tests that are non-applicable for an implementation are discussed in 4.7.4. Withdrawn tests are discussed in 4.7.5. 4.7.1 Expected results for Executable Tests Executable tests (classes A, C, D, E) must be processed by the compiler and any post-compilation steps (e.g., binder, partitioner) without any errors. They must be loaded into an execution target and run. Normal execution of tests results in an introductory message that summarizes the test objective, possibly some informative comments about the test progress, a final message giving pass / fail status, and graceful, silent termination. They may report "PASSED", "TENTATIVELY PASSED", "FAILED", OR "NOT APPLICABLE". A test that fails to compile and bind, including compiling and binding any foundation code on which it depends is graded as "failed", unless the test includes features that need not be supported by all implementations. For example, an implementation may reject the declaration of a numeric type that it does not support. Allowable cases are clearly stated in the Applicability Criteria of tests. Annex L of [Ada95] requires implementations to document such implementation-defined characteristics. A test that reports "FAILED" is graded as "failed" unless the AVF, and possibly the AVO, determine that the test is not applicable for the implementation. A test that reports "PASSED" is graded as "passed" unless the test produces the pass message but fails to terminate gracefully (e.g., crashes, hangs, raises an unexpected exception, produces an earlier or later "FAILED" message). This kind of aberrant behavior may occur, for example, in certain tasking tests, where there are multiple threads of control. A pass status message may be produced by one thread, but another thread may asynchronously crash or fail to terminate properly. A test that reports "NOT APPLICABLE" must be run by the implementation and is graded as "passed" unless it produces the not-applicable message and then fails to terminate gracefully. A test that reports "TENTATIVELY PASSED" is graded as "passed" if the test results satisfy the pass/fail criteria in the test. Normally, verification requires manual inspection of the test output. A test that fails to report, or produces only a partial report, will be graded as "failed" unless the AVF, and possibly the AVO, determine that the test is not applicable for the implementation. 4.7.2 Expected Results for Class B Class B tests are expected to be compiled but are not subject to any more processing and are not intended to be executable. An implementation must correctly report each clearly marked error (the notation "-- ERROR:" occurs at the right hand side of the source). A multiple unit B test file generally will have errors only in one compilation unit. Error messages must provide some means of specifying the location of an error, but they are not required to be in direct proximity with the "-- ERROR:" marking of the errors. Some B-tests also include the notation "-- OK" to indicate constructs that must not be identified as errors. This is especially important since some constructs were errors in Ada83 that are legal in Ada95. Some B-tests exercise constructs whose correctness depends on source code that is textually separated (e.g., a deferred constant and its full declaration). In these cases, it may be reasonable to report an error at both locations. Such cases are marked with "-- OPTIONAL ERROR". These lines may be flagged as errors by some, but not all, implementations. Unless an optional error is marked as an error for the wrong reason, an error report (or lack of it) does not affect the pass/fail status of the test. A test is graded as "passed" if it reports each error in the test, providing correct characterizations of the errors. A test is graded as "failed" if it fails to report on each error in the test or if it marks legal code as erroneous, or if it fails to correctly characterize each error it reports. 4.7.3 Expected Results for Class L Class L tests are expected to receive all pre-run-time processing (compilation, binding, etc.) but are not intended to be executable. These tests consist of multiple units, and there are one or more intentional errors included in their source code. An implementation must correctly report these errors. Due to the nature of L tests, there is some variability in where the errors may be reported. Often, errors will be detected and reported at bind time. Some implementations may detect and report some errors at compile time. Either strategy is acceptable so long as the documented error(s) in the tests are identified and reported. The error report must provide a correct characterization of the error and its location. Errors expected to be reported at bind time (or before) are marked "-- ERROR:" and have a short indication of the errors. Errors that could be reported at compile time are marked "-- OPTIONAL ERROR". Note that there is no requirement that binder error reports be related to marked lines in the test code (as there is with B-class tests); it is sufficient to identify errors and refuse to bind the test for execution. If the compiler identifies errors, the error indication must correspond to the nature of the errors marked "--ERROR" or "--OPTIONAL ERROR" and must indicate the location of the error. A test is graded as "passed" if it identifies the error(s) before run-time. A test is graded as "failed" if the compilation system does not find any errors, or if it marks legal code as erroneous, if it incorrectly characterizes errors, or if it executes and produces the "FAILED" message. In rare instances, an L test may run and yet not be incorrect for some implementations. In this case, the test reports "TENTATIVELY PASSED", and it does not fail if the special requirements indicated by the test documentation and output are satisfied. Except for these special cases, an L test fails if it begins execution. 4.7.4 Inapplicable Tests Each ACVC test has a test objective that is described in the test prologue. Some objectives address Ada language features that need not be supported by every Ada implementation (e.g., "check floating-point operations for digits 18"). These test programs generally also contain an explicit indication of their applicability and the expected behavior of an implementation for which they do not apply. A test may be inapplicable for an implementation given: • appropriate ACVC grading criteria; or • an AVO ruling on a petition to accept a deviation from expected results. Appropriate grading criteria include: a. whether a test completes execution and reports "NOT APPLICABLE"; b. whether a test is rejected at compile or bind time for a reason that satisfies grading criteria stated in the test program. All applicable test programs must be processed and passed. 4.7.5 Withdrawn Tests From time to time, the AVO determines that one or more tests included in a release of the ACVC should be withdrawn from the test suite. Tests that are withdrawn are not processed during a validation attempt and are not considered when grading an implementation. Usually, a test is withdrawn because an error has been discovered in it. A withdrawn test will not be reissued in the same test suite, although it may be revised and reissued in a later suite. The AVO maintains a list of withdrawn tests. 4.8 Addressing Problems or Issues After all tests have been processed and graded, any remaining problems should be addressed. Test failures must be identified and resolved. This section discusses issues that are not due to implementation errors (bugs). 4.8.1 Typical Issues Here are some typical causes of unexpected ACVC test failures (often resulting from clerical errors): Processing a test that is on the AVO list of withdrawn tests; Processing a test that is not applicable to the implementation (as explained in Section 4.7.4; Processing files (or tests, see Section 4.5.2) in an incorrect order; Processing tests when units required in the environment are not present. Test result failures resulting from technical errors may include: Incorrect values in ImpDef, which provide inappropriate values to tests at run-time; Incorrect values in macro.dfs which result in incorrectly customized tests; Incorrect substitutions in wide_character tests; Need to modify a test (e.g., split a B-test). Finally, occasionally a user discovers an error in a new ACVC test. More rarely, errors are uncovered by compiler advances in tests that are apparently stable. In either case, if users believe that a test is in error, they may file a dispute with the AVF. The dispute process is described in the next section. 4.8.2 Deviation from Expected Results - Petition & Review Each test indicates in its prologue what it expects from a conforming implementation. The result of processing a test is acceptable if and only if the result is explicitly allowed by the grading criteria for the test. A user may challenge an ACVC test on the grounds of applicability or correctness. A challenger should submit a petition against the test program to an AVF or to the AVO, following the procedure and the format presented in [Pro97]. A petition must clearly state whether it is a claim that the test does not apply to the implementation or that the test is erroneous. The petition must indicate the specific section of code that is disputed and provide a full explanation of the reason for the dispute. AVFs will forward petitions from their customers to the AVO for decisions. The AVO will evaluate the petitioner's claims and decide whether • the test is applicable to the implementation (i.e., deviation is not allowed); • the test is not applicable to the implementation (i.e., deviation is allowed); • the test should be withdrawn (deviation is allowed and the test is not considered in determining validation results). A deviation is considered to be a test failure unless a petition to allow the deviation has been accepted by the AVO. 4.9 Reprocessing and Regrading After all problems have been resolved, tests that failed can be reprocessed and regraded. This step completes the ACVC testing process. Appendices [This page intentionally blank] Appendix A. Version Description This version consists of 3662 ACVC 2.1 tests in 4164 files, not including foundation and other support units. Core Tests The following tests constitute the set of tests for core language features of Ada95. Note that Annexes A and B are part of the core language A22006B A22006C A22006D A26007A A27003A A29003A A2A031A A33003A A34017C A35101B A35402A A35801F A35902C A38106D A38106E A49027A A49027B A49027C A54B01A A54B02A A55B12A A55B13A A55B14A A71004A A73001I A73001J A74105B A74106A A74106B A74106C A74205E A74205F A83009A A83009B A83A02A A83A02B A83A06A A83A08A A83C01C A83C01H A83C01I A85007D A85013B A87B59A A95001C A95074D A97106A A99006A AA2010A AA2012A AC1015B AC3106A AC3206A AC3207A AD7001B AD7001C AD7001D AD7006A AD7101A AD7101C AD7102A AD7103A AD7103C AD7104A AD7201A AD7203B AD7205B AD8011A ADA101A AE2113A AE2113B AE3002G AE3101A AE3702A AE3709A B22001A B22001B B22001C B22001D B22001E B22001F B22001G B22001H B22001I B22001J B22001K B22001L B22001M B22001N B23002A B23004A B23004B B24001A B24001B B24001C B24005A B24005B B24007A B24009A B24009B B24104A B24204A B24204B B24204C B24204D B24204E B24204F B24205A B24206A B24206B B24211B B25002A B25002B B26001A B26002A B26005A B28001A B28001B B28001C B28001D B28001E B28001F B28001G B28001H B28001I B28001J B28001K B28001L B28001M B28001N B28001O B28001P B28001Q B28001R B28001S B28001T B28001U B28001V B28001W B29001A B2A003A B2A003B B2A003C B2A003D B2A003E B2A003F B2A005A B2A005B B2A007A B2A010A B2A021A B32101A B32103A B32104A B32106A B32201A B32202A B32202B B32202C B330001 B33001A B33101A B33102A B33102B B33102C B33102D B33102E B33201A B33201B B33201C B33201D B33201E B33204A B33205A B33302A B34001B B34001E B34002B B34003B B34004B B34005B B34005E B34005H B34005K B34005N B34005Q B34005T B34006B B34006E B34006H B34006K B34007B B34007E B34007H B34007K B34007N B34007Q B34007T B34008B B34009B B34009E B34009H B34009K B34011A B34014B B34014D B34014F B34014I B34014M B34014O B34014Q B34014S B34014V B34014Z B35004A B35101A B35103A B35103B B35302A B354001 B35401A B35401B B35403A B35501A B35501B B35506A B35506B B35506C B35506D B35701A B35709A B35901A B35901C B35901D B35A01A B35A08A B360001 B36001A B36002A B36101A B36102A B36103A B36105C B36171A B36171B B36171C B36171D B36171E B36171F B36171G B36171H B36171I B36201A B36307A B370001 B370002 B37004A B37004B B37004C B37004D B37004E B37004F B37004G B37101A B37102A B37104A B37106A B37201A B37201B B37203A B37301I B37301J B37302A B37303A B37309B B37310B B37311A B37312B B37401A B37409B B380001 B38003A B38003B B38003C B38003D B38008A B38008B B38009A B38009D B38101A B38101B B38101C B38103A B38103B B38103C B38103D B38103E B38105A B38105B B38203A B390001 B391001 B391002 B391003 B391004 B392001 B392002 B392003 B392004 B392005 B392006 B392007 B392008 B392009 B393001 B393002 B393003 B393004 B393005 B393006 B3A0001 B3A0002 B3A0003 B3A0004 B3A2002 B3A2003 B3A2004 B3A2005 B3A2006 B3A2007 B3A2008 B3A2009 B3A2010 B3A2011 B3A2012 B3A2013 B3A2014 B3A2015 B41101A B41101C B41201A B41201C B41202C B41202D B41324B B41325B B41327B B430001 B43001M B43002D B43002E B43002F B43002G B43002H B43002I B43002J B43002K B43005A B43005B B43005F B43101A B43102A B43102B B43105C B43201A B43201C B43201D B43202A B43202C B43209B B43221A B43221B B43223A B44001A B44001B B44002B B44002C B44004A B44004B B44004C B44004D B44004E B45102A B45116A B45121A B45204A B45205A B45206C B45207A B45207B B45207C B45207D B45207G B45207H B45207I B45207J B45207M B45207N B45207O B45207P B45207S B45207T B45207U B45207V B45208A B45208B B45208C B45208G B45208H B45208I B45208M B45208N B45208S B45208T B45209A B45209B B45209C B45209D B45209E B45209F B45209G B45209H B45209I B45209J B45209K B45221A B45261A B45261B B45261C B45261D B45301A B45301B B45301C B45302A B45341A B45501A B45501B B45501C B45522A B45537A B45601A B45625A B45661A B460001 B460002 B460004 B46002A B46003A B46004A B46004B B46004C B46004D B46004E B46005A B47001A B480001 B48001A B48001B B48002A B48002B B48002C B48002D B48002E B48002G B48003A B48003B B48003C B48003D B48003E B490001 B490002 B49002A B49004A B49005A B49007A B49007B B49008A B49008C B49009B B49009C B49010A B49011A B4A010C B4A016A B51001A B51004B B51004C B52002A B52002B B52002C B52002D B52002E B52002F B52002G B52004A B52004B B52004C B52004D B52004E B53001A B53001B B53002A B53002B B53009A B53009B B53009C B54A01B B54A01F B54A01G B54A01L B54A05A B54A05B B54A10A B54A12A B54A20A B54A21A B54A25A B54A60A B54A60B B54B01B B54B01C B54B02B B54B02C B54B02D B54B04A B54B04B B54B05A B54B06A B55A01A B55A01D B55A01E B55A01J B55A01K B55A01L B55A01N B55A01O B55A01T B55A01U B55A01V B55B01A B55B01B B55B09B B55B09C B55B09D B55B12B B55B12C B55B17A B55B17B B55B17C B55B18A B56001A B56001D B56001E B56001F B56001G B56001H B57001A B57001B B57001C B57001D B58001A B58002A B58002B B58002C B58003A B58003B B59001A B59001C B59001D B59001E B59001F B59001G B59001H B59001I B610001 B61001F B61005A B61006A B61011A B62001A B62001B B62001C B62001D B63001A B63001B B63005A B63005B B63006A B63009A B63009B B63009C B63103A B64002A B64002C B64003A B64004A B64004B B64004C B64004D B64004E B64004F B641001 B64101A B64201A B65001A B65002A B65002B B660001 B660002 B66001A B66001B B66001C B66001D B67001A B67001B B67001C B67001D B67001H B67001I B67001J B67001K B67004A B71001A B71001B B71001C B71001D B71001F B71001G B71001H B71001I B71001J B71001L B71001M B71001N B71001O B71001P B71001R B71001T B71001U B71001V B720001 B730001 B730002 B730003 B730004 B730005 B73001A B73001B B73001C B73001D B73001E B73001F B73001G B73001H B73004A B73004B B731A01 B731A02 B740001 B74001A B74001B B74101A B74101B B74103A B74103D B74103E B74103G B74103I B74104A B74105A B74105C B74201A B74202A B74202B B74202C B74202D B74203B B74203C B74203D B74203E B74205A B74207A B74304A B74304B B74304C B74404A B74404B B74409A B810001 B830001 B83001A B83003A B83003B B83003C B83004A B83004B B83004D B83006A B83006B B83008A B83008B B83011A B83023B B83024B B83024F B83026B B83027B B83027D B83028B B83029B B83030B B83030D B83031B B83031D B83031F B83032B B83033B B83041E B83A01A B83A01B B83A01C B83A05A B83A06B B83A06H B83A07A B83A07B B83A07C B83A08B B83A09A B83B01A B83B02C B83E01A B83E01B B83E01C B83E01D B83E01E B83E01F B83E11A B83F02A B83F02B B83F02C B840001 B84001A B84002B B84004A B84005B B84006A B84007A B84008B B85001A B85001B B85001C B85001D B85001E B85001F B85001G B85001H B85001I B85001J B85001K B85001L B85002A B85003A B85003B B85004A B85008F B85008G B85008H B85010A B85010B B85012A B85013C B85013D B85015A B86001A B87B23B B87B26A B87B48C B91001B B91001C B91001D B91001E B91001F B91001G B91002A B91002B B91002C B91002D B91002E B91002F B91002G B91002H B91002I B91002J B91002K B91002L B91003A B91003B B91003C B91003D B91003E B91004A B91005A B92001A B92001B B940001 B940002 B940003 B940004 B940005 B940006 B940007 B95001A B95001B B95001D B95002A B95003A B95004A B95004B B95006A B95006B B95006C B95006D B95007A B95007B B95020A B95020B B95030A B95031A B95032A B95061A B95061B B95061C B95061D B95061E B95061F B95061G B95062A B95063A B95064A B95068A B95070A B95080A B95080C B95081A B95082A B95082B B95082C B95082D B95082E B95082F B95083A B95094A B95094B B95094C B951001 B952001 B952002 B952003 B952004 B954001 B954003 B954004 B960001 B96002A B97102B B97102C B97102D B97102F B97102G B97102H B97102I B97103A B97103B B97103D B97103E B97103F B97103G B97104A B97104B B97104C B97104D B97104E B97104F B97104G B97107A B97108A B97108B B97109A B97110A B97110B B97111A B97206A B97306A B99001A B99001B B99002A B99002B B99002C B99003A B9A001A B9A001B BA1001A BA1001D BA1010A BA1010B BA1010C BA1010D BA1010E BA1010F BA1010G BA1010H BA1010I BA1010J BA1010K BA1010L BA1010M BA1010N BA1010P BA1010Q BA1011B BA1011C BA1020A BA1020B BA1020C BA1020F BA11001 BA11002 BA11003 BA11004 BA11005 BA11007 BA11008 BA11009 BA11010 BA11011 BA11012 BA1101A BA1101B BA1101C BA1101E BA1101F BA1101G BA1109A BA1110A BA12001 BA12002 BA12003 BA12004 BA12005 BA12007 BA12008 BA13B01 BA13B02 BA15001 BA2001A BA2001B BA2001C BA2001D BA2001F0 BA2003B BA2011A BA2013A BA2013B BA21001 BA21002 BA21003 BA21A01 BA21A02 BA3001A BA3001B BA3001E BA3001F BA3006A BA3006B BB10001 BB20001 BB2001A BB2002A BB2003A BB2003B BB2003C BB3001A BB3002A BC1001A BC1002A BC1005A BC1008A BC1008B BC1008C BC1009A BC1011A BC1011B BC1011C BC1012A BC1013A BC1014A BC1014B BC1016A BC1016B BC1101A BC1102A BC1103A BC1106A BC1107A BC1109A BC1109B BC1109C BC1109D BC1110A BC1201A BC1201B BC1201C BC1201D BC1201E BC1201F BC1201G BC1201H BC1201I BC1201J BC1201K BC1201L BC1202A BC1202C BC1202E BC1202F BC1202G BC1203A BC1205A BC1206A BC1207A BC1208A BC1226A BC1230A BC1303A BC1303B BC1303C BC1303D BC1303E BC1303F BC1303G BC1306A BC2001B BC2001C BC2001D BC2001E BC2004A BC2004B BC30001 BC3001A BC3002A BC3002B BC3002C BC3002D BC3002E BC3005A BC3005B BC3005C BC3006A BC3009C BC3011B BC3013A BC3016G BC3018A BC3101A BC3101B BC3102A BC3102B BC3103B BC3123C BC3201A BC3201B BC3201C BC3202A BC3202B BC3202C BC3202D BC3205C BC3301A BC3301B BC3302A BC3302B BC3303A BC3304A BC3401A BC3401B BC3402A BC3402B BC3403A BC3403B BC3403C BC3404A BC3404B BC3404C BC3404D BC3404E BC3404F BC3405A BC3405B BC3405D BC3405E BC3405F BC3501A BC3501B BC3501C BC3501D BC3501E BC3501F BC3501G BC3501H BC3501I BC3501J BC3501K BC3502A BC3502B BC3502C BC3502D BC3502E BC3502F BC3502G BC3502H BC3502I BC3502J BC3502K BC3502L BC3502M BC3502N BC3502O BC3503A BC3503C BC3503D BC3503E BC3503F BC3604A BC3604B BC3607A BC40001 BC40002 BC50001 BC50002 BC50003 BC50004 BC51002 BC51003 BC51004 BC51005 BC51006 BC51007 BC51011 BC51012 BC51013 BC51015 BC51016 BC51017 BC51018 BC51019 BC51020 BC51B01 BC51B02 BC51C01 BC51C02 BC53001 BC53002 BC54001 BC54002 BC54003 BC54A01 BC54A02 BC54A03 BC54A04 BC54A05 BC54A06 BC70001 BC70002 BC70003 BC70004 BC70005 BC70006 BC70007 BC70008 BC70009 BC70010 BD1B01A BD1B02B BD1B03C BD1B05E BD1B06J BD2001B BD2A01H BD2A02A BD2A03A BD2A03B BD2A06A BD2A25A BD2A35A BD2A45A BD2A55A BD2A55B BD2A67A BD2A77A BD2A85A BD2A85B BD2B01C BD2B02A BD2B03A BD2B03B BD2B03C BD2C01D BD2C02A BD2C03A BD2D01C BD2D01D BD2D02A BD2D03A BD2D03B BD3001A BD3001B BD3001C BD3002A BD3003A BD3003B BD3012A BD3013A BD4001A BD4002A BD4003A BD4003B BD4003C BD4006A BD4007A BD4009A BD4011A BD5001A BD5005A BD5005D BD5102A BD5102B BD5103A BD5104A BD7001A BD7101H BD7201C BD7203A BD7204A BD7205A BD7301A BD7302A BD8001A BD8002A BD8003A BD8004A BD8004B BD8004C BDB0A01 BDD2001 BDE0001 BDE0002 BDE0003 BDE0004 BDE0005 BDE0006 BDE0007 BDE0008 BE2101E BE2101J BE2114A BE2116A BE2208A BE3002A BE3002E BE3205A BE3301C BE3606C BE3703A BE3802A BE3803A BE3902A BE3903A BXA8001 BXAC001 BXAC002 BXAC003 BXAC004 BXAC005 C23001A C23003A C23003B C23003G C23003I C23006A C23006B C23006C C23006D C23006E C23006F C23006G C24002D C24003A C24003B C24003C C24106A C24202D C24203A C24203B C24207A C24211A C250001 C250002 C25001A C25001B C26006A C26008A C2A001A C2A001B C2A001C C2A002A C2A008A C2A021B C32001A C32001B C32001C C32001D C32001E C32107A C32107C C32108A C32108B C32111A C32111B C32112B C32113A C32115A C32115B C330001 C330002 C332001 C340001 C34001A C34001C C34001D C34001F C34002A C34002C C34003A C34003C C34004A C34004C C34005A C34005C C34005D C34005F C34005G C34005I C34005J C34005L C34005M C34005O C34005P C34005R C34005S C34005U C34005V C34006A C34006D C34006F C34006G C34006J C34006L C34007A C34007D C34007F C34007G C34007I C34007J C34007M C34007P C34007R C34007S C34007U C34007V C34008A C34009A C34009D C34009F C34009G C34009J C34009L C34011B C34012A C34014A C34014C C34014E C34014G C34014H C34014N C34014P C34014R C34014T C34014U C34018A C340A01 C340A02 C341A01 C341A02 C341A03 C341A04 C35003A C35003B C35003D C35102A C352001 C354002 C354003 C35502A C35502B C35502C C35502D C35502E C35502F C35502G C35502H C35502I C35502J C35502K C35502L C35502M C35502N C35502O C35502P C35503A C35503B C35503C C35503D C35503E C35503F C35503G C35503H C35503K C35503L C35503O C35503P C35504A C35504B C35505C C35505E C35505F C35507A C35507B C35507C C35507E C35507G C35507H C35507I C35507J C35507K C35507L C35507M C35507N C35507O C35507P C35508A C35508B C35508C C35508E C35508G C35508H C35508K C35508L C35508O C35508P C35703A C35704A C35704B C35704C C35704D C35801D C35902D C35904A C35904B C35A02A C35A05A C35A05D C35A05N C35A05Q C35A07A C35A07D C35A08B C360002 C36104A C36104B C36172A C36172B C36172C C36174A C36180A C36202C C36203A C36204A C36204B C36204C C36204D C36205A C36205B C36205C C36205D C36205E C36205F C36205G C36205H C36205I C36205J C36205K C36205L C36301A C36301B C36302A C36304A C36305A C37002A C37003A C37003B C37005A C37006A C37008A C37008B C37009A C37010A C37010B C371001 C371002 C371003 C37102B C37103A C37105A C37107A C37108B C37206A C37207A C37208A C37208B C37209A C37209B C37210A C37211A C37211B C37211C C37211D C37211E C37213B C37213D C37213F C37213H C37213J C37213K C37213L C37215B C37215D C37215F C37215H C37217A C37217B C37217C C37304A C37305A C37306A C37309A C37310A C37312A C37402A C37403A C37404A C37404B C37405A C37411A C38002A C38002B C38005A C38005B C38005C C38006A C38102A C38102B C38102C C38102D C38102E C38104A C38107A C38107B C38108A C38108B C38108C C38108D C38202A C390001 C390002 C390003 C390004 C390005 C390006 C390007 C390010 C390011 C39006A C39006B C39006C C39006D C39006E C39006F C39006G C39007A C39007B C39008A C39008B C39008C C390A01 C390A02 C390A03 C391001 C391002 C392002 C392003 C392004 C392005 C392008 C392010 C392011 C392012 C392A01 C392C05 C392C07 C392D01 C392D02 C392D03 C393001 C393007 C393008 C393009 C393010 C393011 C393012 C393A02 C393A03 C393A05 C393A06 C393B12 C393B13 C393B14 C3A0001 C3A0002 C3A0003 C3A0004 C3A0005 C3A0006 C3A0007 C3A0008 C3A0009 C3A0010 C3A0011 C3A0012 C3A0013 C3A0014 C3A1001 C3A1002 C3A2001 C3A2002 C3A2003 C3A2A01 C3A2A02 C410001 C41101D C41103A C41103B C41104A C41105A C41107A C41201D C41203A C41203B C41204A C41205A C41206A C41207A C41301A C41303A C41303B C41303C C41303E C41303F C41303G C41303I C41303J C41303K C41303M C41303N C41303O C41303Q C41303R C41303S C41303U C41303V C41303W C41304A C41304B C41306A C41306B C41306C C41307D C41309A C41320A C41321A C41322A C41323A C41324A C41325A C41326A C41327A C41328A C41401A C41402A C41404A C42006A C42007E C43003A C43004A C43004C C431001 C43103A C43103B C43104A C43105A C43105B C43106A C43107A C43108A C432001 C432002 C432003 C432004 C43204A C43204C C43204E C43204F C43204G C43204H C43204I C43205A C43205B C43205C C43205D C43205E C43205G C43205H C43205I C43205J C43205K C43206A C43207B C43207D C43208A C43208B C43209A C43210A C43211A C43212A C43212C C43214A C43214B C43214C C43214D C43214E C43214F C43215A C43215B C43222A C43224A C44003D C44003F C44003G C450001 C45112A C45112B C45113A C45114B C452001 C45201A C45201B C45202B C45210A C45211A C45220A C45220B C45220C C45220D C45220E C45220F C45231A C45231B C45231C C45231D C45232B C45242B C45251A C45252A C45252B C45253A C45262A C45262B C45262C C45262D C45264A C45264B C45264C C45265A C45271A C45272A C45273A C45274A C45274B C45274C C45281A C45282A C45282B C45291A C45303A C45304A C45304B C45304C C45322A C45323A C45331A C45342A C45343A C45344A C45345B C45347A C45347B C45347C C45347D C45411A C45411B C45411C C45411D C45413A C45431A C45502B C45502C C45503A C45503B C45503C C45504A C45504B C45504C C45504D C45504E C45504F C45505A C45523A C45531A C45531B C45531C C45531D C45531E C45531F C45531G C45531H C45531I C45531J C45531K C45531L C45531M C45531N C45531O C45531P C45532A C45532B C45532C C45532D C45532E C45532F C45532G C45532H C45532I C45532J C45532K C45532L C45532M C45532N C45532O C45532P C45534B C45536A C45611A C45611B C45611C C45613A C45613B C45613C C45614A C45614B C45614C C45622A C45624A C45624B C45631A C45631B C45631C C45632A C45632B C45632C C45651A C45662A C45662B C45672A C460001 C460002 C460004 C460005 C460006 C460007 C460008 C460009 C460010 C46011A C46013A C46014A C46021A C46024A C46031A C46032A C46033A C46041A C46042A C46043B C46044B C46051A C46051B C46051C C46052A C46053A C46054A C460A01 C460A02 C47002A C47002B C47002C C47002D C47003A C47004A C47005A C47006A C47007A C47008A C47009A C47009B C48004A C48004B C48004C C48004D C48004E C48004F C48005A C48005B C48006A C48006B C48007A C48007B C48007C C48008A C48008C C48009A C48009B C48009C C48009D C48009E C48009F C48009G C48009H C48009I C48009J C48010A C48011A C48012A C490001 C490002 C490003 C49020A C49021A C49022A C49022B C49022C C49023A C49024A C49025A C49026A C4A005B C4A006A C4A007A C4A010A C4A010B C4A011A C4A012B C4A013A C4A014A C51004A C52005A C52005B C52005C C52005D C52005E C52005F C52008A C52008B C52009A C52009B C52010A C52011A C52011B C52101A C52102A C52102B C52102C C52102D C52103A C52103B C52103C C52103F C52103G C52103H C52103K C52103L C52103M C52103P C52103Q C52103R C52103X C52104A C52104B C52104C C52104F C52104G C52104H C52104K C52104L C52104M C52104P C52104Q C52104R C52104X C52104Y C53007A C540001 C54A03A C54A04A C54A07A C54A13A C54A13B C54A13C C54A13D C54A22A C54A23A C54A24A C54A24B C54A42A C54A42B C54A42C C54A42D C54A42E C54A42F C54A42G C55B03A C55B04A C55B05A C55B06A C55B06B C55B07A C55B07B C55B10A C55B11A C55B11B C55B15A C55B16A C55C02A C55C02B C56002A C57003A C57004A C57004B C58004C C58004D C58004G C58005A C58005B C58005H C58006A C58006B C59002A C59002B C59002C C61008A C61009A C61010A C62002A C62003A C62003B C62004A C62006A C631001 C640001 C64002B C64004G C64005A C64005B C64005C C64005D C641001 C64103B C64103C C64103D C64103E C64103F C64104A C64104B C64104C C64104D C64104E C64104F C64104G C64104H C64104I C64104J C64104K C64104L C64104M C64104N C64104O C64105A C64105B C64105C C64105D C64106A C64106B C64106C C64106D C64107A C64108A C64109A C64109B C64109C C64109D C64109E C64109F C64109G C64109H C64109I C64109J C64109K C64109L C64201B C64201C C64202A C650001 C65003A C65003B C66002A C66002C C66002D C66002E C66002F C66002G C67002A C67002B C67002C C67002D C67002E C67003F C67005A C67005B C67005C C67005D C72001B C72002A C730001 C730002 C730004 C73002A C730A01 C730A02 C74004A C74203A C74206A C74207B C74208A C74208B C74209A C74210A C74211A C74211B C74302A C74302B C74305A C74305B C74306A C74307A C74401D C74401E C74401K C74401Q C74402A C74402B C74406A C74407B C74409B C760001 C760002 C760007 C760009 C760010 C760011 C760012 C761001 C761002 C761003 C761004 C761005 C761006 C761007 C761008 C761009 C83007A C83012D C83022A C83022G C83023A C83024A C83024E C83025A C83025C C83027A C83027C C83028A C83029A C83030A C83030C C83031A C83031C C83031E C83032A C83033A C83051A C83B02A C83B02B C83E02A C83E02B C83E03A C83F01A C83F01B C83F01C C83F01D C83F03A C83F03B C83F03C C83F03D C840001 C84002A C84005A C84008A C84009A C85004B C85005A C85005B C85005C C85005D C85005E C85005F C85005G C85006A C85006B C85006C C85006D C85006E C85006F C85006G C85007A C85007E C85009A C85011A C85013A C85014A C85014B C85014C C85017A C85018A C85018B C85019A C854001 C86003A C86004A C86004B C86004C C86006I C86007A C87A05A C87A05B C87B02A C87B02B C87B03A C87B04A C87B04B C87B04C C87B05A C87B06A C87B07A C87B07B C87B07C C87B07D C87B07E C87B08A C87B09A C87B09C C87B10A C87B11A C87B11B C87B13A C87B14A C87B14B C87B14C C87B14D C87B15A C87B16A C87B17A C87B18A C87B18B C87B19A C87B23A C87B24A C87B24B C87B26B C87B27A C87B28A C87B29A C87B30A C87B31A C87B32A C87B33A C87B34A C87B34B C87B34C C87B35C C87B38A C87B39A C87B40A C87B41A C87B42A C87B43A C87B44A C87B45A C87B45C C87B47A C87B48A C87B48B C87B50A C87B54A C87B57A C87B62A C87B62B C87B62C C87B62D C910001 C910002 C91004B C91004C C91006A C91007A C92002A C92003A C92005A C92005B C92006A C930001 C93001A C93002A C93003A C93004A C93004B C93004C C93004D C93004F C93005A C93005B C93005C C93005D C93005E C93005F C93005G C93005H C93006A C93007A C93008A C93008B C940001 C940002 C940004 C940005 C940006 C940007 C940010 C940011 C940012 C940013 C940014 C940015 C940016 C94001A C94001B C94001C C94001E C94001F C94001G C94002A C94002B C94002D C94002E C94002F C94002G C94004A C94004B C94004C C94005A C94005B C94006A C94007A C94007B C94008A C94008B C94008C C94008D C94010A C94011A C94020A C940A03 C95008A C95009A C95010A C95011A C95012A C95021A C95022A C95022B C95033A C95033B C95034A C95034B C95035A C95040A C95040B C95040C C95040D C95041A C95065A C95065B C95065C C95065D C95065E C95065F C95066A C95067A C95071A C95072A C95072B C95073A C95074C C95076A C95078A C95080B C95082G C95085A C95085B C95085C C95085D C95085E C95085F C95085G C95085H C95085I C95085J C95085K C95085L C95085M C95085N C95085O C95086A C95086B C95086C C95086D C95086E C95086F C95087A C95087B C95087C C95087D C95088A C95089A C95090A C95092A C95093A C95095A C95095B C95095C C95095D C95095E C951001 C951002 C953001 C953002 C953003 C954001 C954010 C954011 C954012 C954013 C954014 C954015 C954016 C954017 C954018 C954019 C954020 C954021 C954022 C954023 C954024 C954025 C954026 C954A01 C954A02 C954A03 C960001 C960002 C960004 C96001A C96004A C96005A C96005B C96005D C96005F C96006A C96007A C96008A C96008B C97112A C97113A C97114A C97115A C97116A C97117A C97117B C97117C C97118A C97120A C97120B C97201A C97201B C97201C C97201D C97201E C97201G C97201H C97201X C97202A C97203A C97203B C97203C C97204A C97204B C97205A C97205B C97301A C97301B C97301C C97301D C97301E C97302A C97303A C97303B C97303C C97304A C97304B C97305A C97305B C97305C C97305D C97307A C974001 C974002 C974003 C974004 C974005 C974006 C974007 C974008 C974009 C974010 C974011 C974012 C974013 C974014 C980001 C980002 C980003 C99004A C99005A C9A003A C9A004A C9A005A C9A007A C9A008A C9A009A C9A009C C9A009F C9A009G C9A009H C9A010A C9A011A C9A011B CA1003A CA1004A CA1005A CA1006A CA1011A CA1012A CA1012B CA1013A CA1014A CA1020D CA1020E CA1022A CA11001 CA11002 CA11003 CA11004 CA11005 CA11006 CA11007 CA11008 CA11009 CA11010 CA11011 CA11012 CA11013 CA11014 CA11015 CA11016 CA11017 CA11018 CA11019 CA11020 CA11021 CA11022 CA1102A CA1106A CA1108A CA1108B CA11A01 CA11A02 CA11B01 CA11B02 CA11C01 CA11C02 CA11C03 CA11D01 CA11D02 CA11D03 CA13001 CA13002 CA13003 CA13A01 CA13A02 CA2001H CA2002A CA2003A CA2004A CA2007A CA2008A CA2009A CA2009C CA2009D CA2009F CA2011B CA3011A CA5003A CA5003B CA5004A CA5004B CA5006A CB1001A CB1004A CB1005A CB1010A CB1010B CB1010C CB1010D CB20001 CB20003 CB20004 CB20005 CB20006 CB20007 CB2004A CB2005A CB2006A CB2007A CB20A02 CB3003A CB3003B CB3004A CB40005 CB4001A CB4002A CB4003A CB4004A CB4005A CB4006A CB4007A CB4008A CB4009A CB4013A CB40A01 CB40A02 CB40A03 CB40A04 CB41001 CB41002 CB41003 CB41004 CB5001A CB5001B CB5002A CC1004A CC1005B CC1010A CC1010B CC1018A CC1104C CC1107B CC1111A CC1204A CC1207B CC1220A CC1221A CC1221B CC1221C CC1221D CC1222A CC1223A CC1224A CC1225A CC1226B CC1227A CC1301A CC1302A CC1304A CC1304B CC1307A CC1307B CC1308A CC1310A CC1311A CC1311B CC2002A CC30001 CC30002 CC3004A CC3007A CC3007B CC3011A CC3011D CC3012A CC3015A CC3016B CC3016C CC3016F CC3016I CC3017B CC3017C CC3019A CC3019B CC3019C CC3106B CC3120A CC3120B CC3121A CC3123A CC3125A CC3125B CC3125C CC3125D CC3126A CC3127A CC3128A CC3203A CC3207B CC3220A CC3221A CC3222A CC3223A CC3224A CC3225A CC3230A CC3231A CC3232A CC3233A CC3234A CC3235A CC3236A CC3240A CC3305A CC3305B CC3305C CC3305D CC3601A CC3601C CC3602A CC3603A CC3605A CC3606A CC3606B CC3607B CC40001 CC50001 CC50A01 CC50A02 CC51001 CC51002 CC51003 CC51004 CC51006 CC51007 CC51A01 CC51B03 CC51D01 CC51D02 CC54001 CC54002 CC54003 CC54004 CC70001 CC70002 CC70003 CC70A01 CC70A02 CC70B01 CC70B02 CC70C01 CC70C02 CD10001 CD1009A CD1009B CD1009C CD1009D CD1009E CD1009F CD1009G CD1009H CD1009I CD1009J CD1009K CD1009L CD1009M CD1009N CD1009O CD1009P CD1009Q CD1009R CD1009S CD1009T CD1009U CD1009V CD1009W CD1009X CD1009Y CD1009Z CD1C03A CD1C03B CD1C03C CD1C03E CD1C03F CD1C03G CD1C03H CD1C03I CD1C04A CD1C04D CD1C04E CD1C06A CD20001 CD2A21A CD2A21C CD2A21E CD2A22A CD2A22E CD2A22I CD2A22J CD2A23A CD2A23E CD2A24A CD2A24E CD2A24I CD2A24J CD2A31A CD2A31C CD2A31E CD2A32A CD2A32C CD2A32E CD2A32G CD2A32I CD2A32J CD2A51A CD2A53A CD2A53E CD2A83C CD2A91C CD2B11A CD2B11B CD2B11D CD2B11E CD2B11F CD2B15C CD2B16A CD2C11A CD2C11D CD2D11A CD2D13A CD30001 CD30002 CD30003 CD30004 CD30005 CD3014A CD3014C CD3014D CD3014F CD3015A CD3015C CD3015E CD3015F CD3015G CD3015H CD3015I CD3015K CD3021A CD33001 CD33002 CD40001 CD4031A CD4041A CD4051A CD4051B CD4051C CD4051D CD5003A CD5003B CD5003C CD5003D CD5003E CD5003F CD5003G CD5003H CD5003I CD5011A CD5011C CD5011E CD5011G CD5011I CD5011K CD5011M CD5011Q CD5011S CD5012A CD5012B CD5012E CD5012F CD5012I CD5012M CD5013A CD5013C CD5013E CD5013G CD5013I CD5013K CD5013M CD5013O CD5014A CD5014C CD5014E CD5014G CD5014I CD5014K CD5014M CD5014O CD5014T CD5014V CD5014X CD5014Y CD5014Z CD70001 CD7002A CD7007B CD7101D CD7101E CD7101F CD7101G CD7103D CD7202A CD7204B CD7204C CD72A01 CD72A02 CD7305A CD90001 CD92001 CDA201A CDA201B CDA201C CDA201E CDB0A01 CDB0A02 CDE0001 CE2102A CE2102B CE2102C CE2102D CE2102E CE2102F CE2102G CE2102H CE2102I CE2102J CE2102K CE2102L CE2102M CE2102N CE2102O CE2102P CE2102Q CE2102R CE2102S CE2102T CE2102U CE2102V CE2102W CE2102X CE2102Y CE2103A CE2103B CE2103C CE2103D CE2104A CE2104B CE2104C CE2104D CE2106A CE2106B CE2108E CE2108F CE2108G CE2108H CE2109A CE2109B CE2109C CE2110A CE2110C CE2111A CE2111B CE2111C CE2111E CE2111F CE2111G CE2111I CE2120A CE2120B CE2201A CE2201B CE2201C CE2201D CE2201E CE2201F CE2201G CE2201H CE2201I CE2201J CE2201K CE2201L CE2201M CE2201N CE2202A CE2203A CE2204A CE2204B CE2204C CE2204D CE2205A CE2206A CE2208B CE2401A CE2401B CE2401C CE2401E CE2401F CE2401H CE2401I CE2401J CE2401K CE2401L CE2402A CE2403A CE2404A CE2404B CE2405B CE2406A CE2407A CE2407B CE2408A CE2408B CE2409A CE2409B CE2410A CE2410B CE2411A CE3002B CE3002C CE3002D CE3002F CE3102A CE3102B CE3102D CE3102E CE3102F CE3102G CE3102H CE3102I CE3102J CE3102K CE3103A CE3104A CE3104B CE3104C CE3106A CE3106B CE3107A CE3107B CE3108A CE3108B CE3110A CE3112C CE3112D CE3114A CE3115A CE3119A CE3201A CE3202A CE3206A CE3207A CE3301A CE3302A CE3303A CE3304A CE3305A CE3306A CE3401A CE3402A CE3402C CE3402D CE3402E CE3403A CE3403B CE3403C CE3403D CE3403E CE3403F CE3404A CE3404B CE3404C CE3404D CE3405A CE3405C CE3405D CE3406A CE3406B CE3406C CE3406D CE3407A CE3407B CE3407C CE3408A CE3408B CE3408C CE3409A CE3409B CE3409C CE3409D CE3409E CE3410A CE3410B CE3410C CE3410D CE3410E CE3411A CE3411C CE3412A CE3413A CE3413B CE3413C CE3414A CE3601A CE3602A CE3602B CE3602C CE3602D CE3603A CE3604A CE3604B CE3605A CE3605B CE3605C CE3605D CE3605E CE3606A CE3606B CE3701A CE3704A CE3704B CE3704C CE3704D CE3704E CE3704F CE3704M CE3704N CE3704O CE3705A CE3705B CE3705C CE3705D CE3705E CE3706C CE3706D CE3706F CE3706G CE3707A CE3708A CE3801A CE3801B CE3804A CE3804B CE3804C CE3804D CE3804E CE3804F CE3804G CE3804H CE3804I CE3804J CE3804M CE3804O CE3804P CE3805A CE3805B CE3806A CE3806B CE3806C CE3806D CE3806E CE3806F CE3806G CE3806H CE3809A CE3809B CE3810A CE3810B CE3815A CE3901A CE3902B CE3904A CE3904B CE3905A CE3905B CE3905C CE3905L CE3906A CE3906B CE3906C CE3906D CE3906E CE3906F CE3907A CE3908A CXA3001 CXA3002 CXA3003 CXA3004 CXA4001 CXA4002 CXA4003 CXA4004 CXA4005 CXA4006 CXA4007 CXA4008 CXA4009 CXA4010 CXA4011 CXA4012 CXA4013 CXA4014 CXA4015 CXA4016 CXA4017 CXA4018 CXA4019 CXA4020 CXA4021 CXA4022 CXA4023 CXA4024 CXA4025 CXA4026 CXA4027 CXA4028 CXA4029 CXA4030 CXA4031 CXA4032 CXA4033 CXA5011 CXA5012 CXA5013 CXA5015 CXA5A01 CXA5A02 CXA5A03 CXA5A04 CXA5A05 CXA5A06 CXA5A07 CXA5A08 CXA5A09 CXA5A10 CXA8001 CXA8002 CXA8003 CXA9001 CXA9002 CXAA001 CXAA002 CXAA003 CXAA004 CXAA005 CXAA006 CXAA007 CXAA008 CXAA009 CXAA010 CXAA011 CXAA012 CXAA013 CXAA014 CXAA015 CXAA016 CXAA017 CXAA018 CXAB001 CXAC001 CXAC002 CXAC003 CXAC004 CXACA01 CXACA02 CXACB01 CXACB02 CXACC01 CXAF001 CXB2001 CXB2002 CXB2003 CXB3001 CXB3002 CXB3003 CXB3004 CXB3005 CXB3006 CXB3007 CXB3008 CXB3009 CXB3010 CXB3011 CXB3012 CXB3013 CXB3014 CXB3015 CXB3016 CXB4001 CXB4002 CXB4003 CXB4004 CXB4005 CXB4006 CXB4007 CXB4008 CXB4009 CXB5001 CXB5002 CXB5003 CXB5004 CXB5005 D4A002A D4A002B D4A004A D4A004B E28002B E28005D E52103Y EA3004G EB4011A EB4012A EB4014A EE3203A EE3204A EE3402B EE3409F EE3412C LA1001F LA14001 LA14002 LA14003 LA14004 LA14005 LA14006 LA14007 LA14008 LA14009 LA14010 LA14011 LA14012 LA14013 LA14014 LA14015 LA14016 LA14017 LA14018 LA14019 LA14020 LA14021 LA14022 LA14023 LA14024 LA14025 LA14026 LA14027 LA5001A LA5007A LA5007B LA5007C LA5007D LA5007E LA5007F LA5007G LA5008A LA5008B LA5008C LA5008D LA5008E LA5008F LA5008G Special Needs Annex Tests BXC3001 BXC3002 BXC5001 BXC6001 BXC6002 BXC6003 BXC6A01 BXC6A02 BXC6A03 BXC6A04 BXD1001 BXD1002 BXE2007 BXE2008 BXE2009 BXE2010 BXE2011 BXE2012 BXE2A01 BXE2A02 BXE2A03 BXE2A04 BXE2A05 BXE2A06 BXE4001 BXF1001 BXH4001 BXH4002 BXH4003 BXH4004 BXH4005 BXH4006 BXH4007 BXH4008 BXH4009 BXH4010 BXH4011 BXH4012 BXH4013 CXC3001 CXC3002 CXC3003 CXC3004 CXC3005 CXC3006 CXC3007 CXC3008 CXC6001 CXC6002 CXC6003 CXC7001 CXC7002 CXC7003 CXD1001 CXD1002 CXD1003 CXD1004 CXD1005 CXD1006 CXD1007 CXD1008 CXD2001 CXD2002 CXD2003 CXD2004 CXD2005 CXD2006 CXD2007 CXD2008 CXD3001 CXD3002 CXD3003 CXD4001 CXD4002 CXD4003 CXD4004 CXD4005 CXD4006 CXD4007 CXD4008 CXD4009 CXD4010 CXD5001 CXD5002 CXD6001 CXD6002 CXD6003 CXD8001 CXD8002 CXD8003 CXD9001 CXDA001 CXDA002 CXDA003 CXDA004 CXDB001 CXDB002 CXDB003 CXDB004 CXDB005 CXDC001 CXE1001 CXE2001 CXE4001 CXE4002 CXE4003 CXE4004 CXE4005 CXE4006 CXE5001 CXE5002 CXE5003 CXF1001 CXF2001 CXF2002 CXF2003 CXF2004 CXF2005 CXF2A01 CXF2A02 CXF3001 CXF3002 CXF3003 CXF3004 CXF3A01 CXF3A02 CXF3A03 CXF3A04 CXF3A05 CXF3A06 CXF3A07 CXF3A08 CXG1001 CXG1002 CXG1003 CXG1004 CXG1005 CXG2001 CXG2002 CXG2003 CXG2004 CXG2005 CXG2006 CXG2007 CXG2008 CXG2009 CXG2010 CXG2011 CXG2012 CXG2013 CXG2014 CXG2015 CXG2016 CXG2017 CXG2018 CXG2019 CXG2020 CXG2021 CXG2022 CXG2023 CXG2024 CXH1001 CXH3001 CXH3002 CXH3003 LA14001 LA14002 LA14003 LA14004 LA14005 LA14006 LA14007 LA14008 LA14009 LA14010 LA14011 LA14012 LA14013 LA14014 LA14015 LA14016 LA14017 LA14018 LA14019 LA14020 LA14021 LA14022 LA14023 LA14024 LA14025 LA14026 LA14027 LXD7001 LXD7003 LXD7004 LXD7005 LXD7006 LXD7007 LXD7008 LXD7009 LXE3001 LXE3002 LXH4001 LXH4002 LXH4003 LXH4004 LXH4005 LXH4006 LXH4007 LXH4008 LXH4009 LXH4010 LXH4011 LXH4012 LXH4013 Tests With Special Requirements BA15001 BXC5001 BXH4001 BXH4002 BXH4003 BXH4004 BXH4005 BXH4006 BXH4007 BXH4008 BXH4009 BXH4010 BXH4011 BXH4012 BXH4013 C250001 C250002 CD30005 CXB3008 CXB3013 CXB4009 CXB5004 CXB5005 CXC3001 CXC3003 CXC3004 CXC3006 CXC3008 CXD1004 CXD1005 CXD2001 CXD2002 CXD2003 CXD2004 CXD2005 CXD2006 CXD2007 CXD2008 CXD3001 CXD3002 CXD3003 CXD4001 CXD4003 CXD4004 CXD4005 CXD4006 CXD4007 CXD4008 CXD4009 CXD4010 CXD5002 CXDA003 CXDA004 CXDB005 CXE1001 CXE2001 CXE4001 CXE4002 CXE4003 CXE4004 CXE4005 CXE4006 CXE5002 CXE5003 CXG1002 CXG1005 CXG2002 CXG2003 CXG2004 CXG2006 CXG2007 CXG2008 CXG2009 CXG2010 CXG2011 CXG2012 CXG2013 CXG2014 CXG2015 CXG2016 CXG2017 CXG2018 CXG2019 CXG2020 CXG2021 CXG2022 CXG2023 CXG2024 CXH1001 CXH3001 CXH3003 LA14001 LA14002 LA14003 LA14004 LA14005 LA14006 LA14007 LA14008 LA14009 LA14010 LA14011 LA14012 LA14013 LA14014 LA14015 LA14016 LA14017 LA14018 LA14019 LA14020 LA14021 LA14022 LA14023 LA14024 LA14025 LA14026 LA14027 LXD7009 LXE3001 LXE3002 LXH4001 LXH4002 LXH4003 LXH4004 LXH4005 LXH4006 LXH4007 LXH4008 LXH4009 LXH4010 LXH4011 LXH4012 LXH4013 Tests That Depend on ImpDef A49207C C761007 C930001 C940001 C940002 C940004 C940005 C940007 C940010 C940013 C940014 C940016 C940A03 C951001 C951002 C953001 C954001 C954010 C954011 C954012 C954013 C954014 C954015 C954016 C954017 C954018 C954019 C954020 C954021 C954022 C954023 C954024 C954025 C954026 C954A01 C954A02 C954A03 C960001 C960002 C974001 C974002 C974003 C974004 C974005 C974008 C974009 C974010 C974011 C974012 C974013 C980001 C980003 CB20001 CD10001 CD30002 CD30005 CD72A01 CD72A02 CXA5011 CXA5012 CXA5013 CXB3013 CXB4009 CXB5004 CXB5005 CXC3001 CXC3003 CXC3004 CXC3006 CXC3007 CXC3008 CXC6003 CXC7002 CXC7003 CXD1008 CXD2001 CXD2002 CXD2003 CXD2004 CXD2005 CXD2006 CXD2007 CXD2008 CXD4001 CXD4002 CXD4003 CXD4004 CXD4005 CXD4006 CXD4007 CXD4008 CXD4009 CXD5001 CXD5002 CXD6001 CXD6002 CXD6003 CXD8002 CXD8003 CXD9001 CXDA002 CXDA003 CXDA004 CXDB001 CXDB003 CXDB004 CXDB005 CXDC001 CXE4003 CXG1005 CXG2006 CXH1001 LXD7008 Transition Tests These tests are specifically intended to test areas where language rules changed from Ada83 to Ada95. B490002 BB10001 C332001 C371001 C371002 C371003 C460009 C460010 C540001 C631001 CDE0001 Foreign Language Tests These tests check the proper implementation of foreign language interfaces. They include files that must be compiled through a C, Cobol, or Fortran compiler and linked with the compiled Ada test code. CD30005 - C CXB3013 - C CXB4009 - Cobol CXB5004 - Fortran CXB5005 - Fortran Additional Test Files Since ACVC 2.0.1 The following test files have been added since ACVC 2.0.1: b330001.a b34014q.ada b34014s.ada b34014z.ada b370001.a b370002.a b380001.a b391003.a b391004.a b393005.a b3a0002.a b3a0004.a b3a2005.a b3a2008.a b3a2011.a b3a2012.a b3a2013.a b3a2014.a b3a2015.a b430001.a b460002.a b460003.a b460004.a b480001.a b490001.a b490002.a b610001.a b660001.a b660002.a b7200010.a b7200011.a b7200012.a b7200013.a b7200014.a b7200015.a b7200016.a b730005.a b810001.a b830001.a b952004.a b954003.a b954004.a ba11011.a ba11012.a ba15001.a ba21001.a ba21002.a ba210030.a ba210031.a ba210032.a ba210033.a ba210034.a ba21a01.a ba21a02.a bb20001.a bc40002.a bc50003.a bc50004.a bc53002.a bdb0a01.a bde0001.a bde0002.a bde0003.a bde0004.a bde0005.a bde0006.a bde0007.a bde0008.a bxc3002.a bxc6002.a bxc6003.a bxc6a01.a bxc6a02.a bxc6a03.a bxc6a04.a bxd1001.a bxd1002.a bxe2007.a bxe2008.a bxe2009.a bxe2010.a bxe2011.a bxe2012.a bxe4001.a bxh4001.a bxh4002.a bxh4003.a bxh4004.a bxh4005.a bxh4006.a bxh4007.a bxh4008.a bxh4009.a bxh4010.a bxh4011.a bxh4012.a bxh4013.a c250001.aw c250002.aw c330001.a c330002.a c332001.a c352001.a c354002.a c354003.a c360002.a c371001.a c371002.a c371003.a c390007.a c390010.a c390011.a c392002.a c392010.a c392011.a c392012.a c393010.a c3a1001.a c3a1002.a c3a2a01.a c3a2a02.a c410001.a c450001.a c460004.a c460005.a c460006.a c460007.a c460008.a c460009.a c460010.a c460a01.a c460a02.a c490001.a c490002.a c490003.a c540001.a c631001.a c641001.a c650001.a c730004.a c760009.a c760010.a c760011.a c760012.a c761006.a c761007.a c761008.a c761009.a c910002.a c930001.a c940004.a c940014.a c940015.a c940016.a c953001.a c953002.a c953003.a c954025.a c954026.a c980001.a c980002.a c980003.a ca1020d4.ada ca1020d5.ada ca1020d6.ada ca1020d7.ada ca1020d8.ada ca1020d9.ada cb40005.a cc30002.a cc40001.a cd10001.a cd20001.a cd30001.a cd30002.a cd30003.a cd30004.a cd300050.am cd300051.c cd33001.a cd33002.a cd40001.a cd53001.a cd70001.a cd72a01.a cd72a02.a cd90001.a cd92001.a cdb0a01.a cdb0a02.a cde0001.a cxa4024.a cxa4025.a cxa4026.a cxa4027.a cxa4028.a cxa4029.a cxa4030.a cxa4031.a cxa4032.a cxa4033.a cxa5011.a cxa5012.a cxa5013.a cxa5015.a cxa5a01.a cxa5a02.a cxa5a03.a cxa5a04.a cxa5a05.a cxa5a06.a cxa5a07.a cxa5a08.a cxa5a09.a cxa5a10.a cxaa016.a cxaa017.a cxaa018.a cxac004.a cxaf001.a cxb2001.a cxb2002.a cxb2003.a cxb3004.a cxb3005.a cxb3006.a cxb3007.a cxb3008.a cxb3009.a cxb3010.a cxb3011.a cxb3012.a cxb30130.c cxb30131.c cxb30132.am cxb3014.a cxb3015.a cxb3016.a cxb4002.a cxb4003.a cxb4004.a cxb4005.a cxb4006.a cxb4007.a cxb4008.a cxb40090.cbl cxb40091.cbl cxb40092.cbl cxb40093.am cxb5002.a cxb5003.a cxb50040.ftn cxb50041.ftn cxb50042.am cxb50050.ftn cxb50051.ftn cxb50052.am cxc3002.a cxc3003.a cxc3004.a cxc3005.a cxc3006.a cxc3007.a cxc3008.a cxc6003.a cxc7002.a cxc7003.a cxd1006.a cxd1007.a cxd1008.a cxd2002.a cxd2005.a cxd2006.a cxd2007.a cxd2008.a cxd3003.a cxd4007.a cxd4008.a cxd4009.a cxd4010.a cxd5002.a cxd6001.a cxd6002.a cxd6003.a cxd8002.a cxd8003.a cxd9001.a cxda003.a cxda004.a cxdb005.a cxdc001.a cxe1001.a cxe4001.a cxe4002.a cxe4003.a cxe4004.a cxe4005.a cxe4006.a cxe5002.a cxe5003.a cxf2001.a cxf2002.a cxf2003.a cxf2004.a cxf2005.a cxf2a01.a cxf2a02.a cxf3001.a cxf3002.a cxf3003.a cxf3004.a cxf3a04.a cxf3a05.a cxf3a06.a cxf3a07.a cxf3a08.a cxg2001.a cxg2002.a cxg2003.a cxg2004.a cxg2005.a cxg2006.a cxg2007.a cxg2008.a cxg2009.a cxg2010.a cxg2011.a cxg2012.a cxg2013.a cxg2014.a cxg2015.a cxg2016.a cxg2017.a cxg2018.a cxg2019.a cxg2020.a cxg2021.a cxg2022.a cxg2023.a cxg2024.a cxh1001.a cxh3001.a cxh3002.a cxh30030.a cxh30031.am cxh30030.a cxh30031.am cz00004.a la140010.a la140011.am la140012.a la140020.a la140021.am la140022.a la140030.a la140031.a la140032.am la140033.a la140040.a la140041.am la140042.a la140050.a la140051.a la140052.am la140053.a la140060.a la140061.a la140062.am la140063.a la140070.a la140071.a la140072.am la140073.a la140080.a la140081.a la140082.am la140083.a la140090.a la140091.a la140092.am la140093.a la140100.a la140101.a la140102.am la140103.a la140110.a la140111.a la140112.am la140113.a la140120.a la140121.a la140122.am la140123.a la140130.a la140131.a la140132.am la140133.a la140140.a la140141.a la140142.am la140143.a la140150.a la140151.a la140152.am la140153.a la140160.a la140161.a la140162.am la140163.a la140170.a la140171.a la140172.am la140173.a la140180.a la140181.a la140182.am la140183.a la140190.a la140191.a la140192.am la140193.a la140200.a la140201.a la140202.am la140203.a la140210.a la140211.am la140212.a la140220.a la140221.am la140222.a la140230.a la140231.a la140232.am la140233.a la140240.a la140241.a la140242.am la140243.a la140250.a la140251.am la140252.a la140260.a la140261.a la140262.am la140263.a la140270.a la140271.a la140272.am la140273.a lxd70090.a lxd70091.a lxd70092.am lxe30010.am lxe30011.am lxe30020.am lxe30021.am lxh40010.a lxh40011.a lxh40012.am lxh40020.a lxh40021.a lxh40022.am lxh40030.a lxh40031.a lxh40032.a lxh40033.am lxh40040.a lxh40041.a lxh40042.a lxh40043.am lxh40050.a lxh40051.a lxh40052.a lxh40053.am lxh40060.a lxh40061.a lxh40062.a lxh40063.am lxh40070.a lxh40071.a lxh40072.a lxh40073.am lxh40080.a lxh40081.a lxh40082.a lxh40083.a lxh40084.am lxh40090.a lxh40091.a lxh40092.a lxh40093.am lxh40100.a lxh40101.a lxh40102.a lxh40103.am lxh40110.a lxh40111.a lxh40112.a lxh40113.am lxh40120.a lxh40121.a lxh40122.a lxh40123.am lxh40130.a lxh40131.a lxh40132.a lxh40133.am f3a2a00.a f460a00.a fa21a00.a fd72a00.a fdb0a00.a fxa5a00.a fxc6a00.a fxf2a00.a Additional Support Files Since ACVC 2.0.1 The following support files have been added since ACVC 2.0.1: impdefc.a impdefd.a impdefe.a impdefg.a impdefh.a widechr.a Modified Support Files Since ACVC 2.0.1 The following support files have been modified since ACVC 2.0.1: repbody.ada impdef.a macro.dfs Modified Test Files Since ACVC 2.0.1 The following test files have been modified since ACVC 2.0.1: b392005.a c34014c.ada c391002.a c392c05.a c393b12.a c48009e.ada c730002.a c85018b.ada ca11012.a ca11013.a ca11014.a ca5004b0.ada ca5004b1m.ada cc30001.a cc70001.a ce2103a.tst ce2103b.tst ce3107a.tst cxa4019.a cxa8001.a cxa8002.a cxa8003.a cxa9001.a cxa9002.a cxaa001.a cxaa002.a cxaa003.a cxaa004.a cxaa005.a cxaa006.a cxaa007.a cxaa008.a cxaa009.a cxaa010.a cxaa011.a cxaa012.a cxaa013.a cxaa014.a cxaa015.a cxaa016.a cxab001.a cxac001.a cxac002.a cxac003.a cxacc01.a cxd2004.a cxf3a02.a fxf3a00.a lxh40063.am Deleted Test Files Since ACVC 2.0.1 The following test files have been deleted since ACVC 2.0.1: b460003.a c3920020.a c3920021.am c44003a.ada c45331d.ada c45534a.ada c45701a.ada c4a013b.ada c730003.a Appendix B. Parameterization Files macro.dfs -- MACRO.DFS -- THIS FILE CONTAINS THE MACRO DEFINITIONS USED IN THE ACVC TESTS. -- THESE DEFINITIONS ARE USED BY THE ACVC TEST PRE-PROCESSOR, -- MACROSUB. MACROSUB WILL CALCULATE VALUES FOR THOSE MACRO SYMBOLS -- WHOSE DEFINITIONS DEPEND ON THE VALUE OF MAX_IN_LEN (NAMELY, THE -- VALUES OF THE MACRO SYMBOLS BIG_ID1, BIG_ID2, BIG_ID3, BIG_ID4, -- BIG_STRING1, BIG_STRING2, MAX_STRING_LITERAL, BIG_INT_LIT, BIG_REAL_LIT, -- AND BLANKS). THEREFORE, ANY VALUES GIVEN IN THIS FILE FOR THOSE -- MACRO SYMBOLS WILL BE IGNORED BY MACROSUB. -- NOTE: AS REQUIRED BY THE MACROSUB PROGRAM, THE FIRST MACRO DEFINED -- IN THIS FILE IS $MAX_IN_LEN. THE NEXT 5 MACRO DEFINITIONS -- ARE FOR THOSE MACRO SYMBOLS THAT DEPEND ON THE VALUE OF -- MAX_IN_LEN. THESE ARE IN ALPHABETIC ORDER. FOLLOWING THESE -- ARE 36 MORE DEFINITIONS, ALSO IN ALPHABETIC ORDER. -- EACH DEFINITION IS ACCORDING TO THE FOLLOWING FORMAT: -- A. A NUMBER OF LINES PRECEDED BY THE ADA COMMENT DELIMITER, --. -- THE FIRST OF THESE LINES CONTAINS THE MACRO SYMBOL AS IT APPEARS -- IN THE TEST FILES (WITH THE DOLLAR SIGN). THE NEXT FEW "COMMENT" -- LINES CONTAIN A DESCRIPTION OF THE VALUE TO BE SUBSTITUTED. -- THE REMAINING "COMMENT" LINES, THE FIRST OF WHICH BEGINS WITH THE -- WORDS "USED IN: " (NO QUOTES), CONTAIN A LIST OF THE TEST FILES -- (WITHOUT THE .TST EXTENSION) IN WHICH THE MACRO SYMBOL APPEARS. -- EACH TEST FILE NAME IS PRECEDED BY ONE OR MORE BLANKS. -- B. A LINE, WITHOUT THE COMMENT DELIMITER, CONSISTING OF THE -- IDENTIFIER (WITHOUT THE DOLLAR SIGN) OF THE MACRO SYMBOL, -- FOLLOWED BY A SPACE OR TAB, FOLLOWED BY THE VALUE TO BE -- SUBSTITUTED. IN THE DISTRIBUTION FILE, A SAMPLE VALUE IS -- PROVIDED; THIS VALUE MUST BE REPLACED BY A VALUE APPROPRIATE TO -- THE IMPLEMENTATION. -- DEFINITIONS ARE SEPARATED BY ONE OR MORE EMPTY LINES. -- THE LIST OF DEFINITIONS BEGINS AFTER THE FOLLOWING EMPTY LINE. -- $MAX_IN_LEN -- AN INTEGER LITERAL GIVING THE MAXIMUM LENGTH PERMITTED BY THE -- COMPILER FOR A LINE OF ADA SOURCE CODE (NOT INCLUDING AN END-OF-LINE -- CHARACTER). -- USED IN: A26007A MAX_IN_LEN 60 -- $MAX_STRING_LITERAL -- A STRING LITERAL CONSISTING OF $MAX_IN_LEN CHARACTERS (INCLUDING THE -- QUOTE CHARACTERS). -- USED IN: A26007A MAX_STRING_LITERAL "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -- $BIG_ID1 -- AN IDENTIFIER IN WHICH THE NUMBER OF CHARACTERS IS $MAX_IN_LEN. -- THE MACROSUB PROGRAM WILL SUPPLY AN IDENTIFIER IN WHICH THE -- LAST CHARACTER IS '1' AND ALL OTHERS ARE 'A'. -- USED IN: C23003A C23003B C23003G C23003I -- C35502D C35502F BIG_ID1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1 -- $BIG_ID2 -- AN IDENTIFIER IN WHICH THE NUMBER OF CHARACTERS IS $MAX_IN_LEN, -- DIFFERING FROM $BIG_ID1 ONLY IN THE LAST CHARACTER. THE MACROSUB -- PROGRAM WILL USE '2' AS THE LAST CHARACTER. -- USED IN: C23003A C23003B B23003F C23003G C23003I BIG_ID2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2 -- $BIG_ID3 -- AN IDENTIFIER IN WHICH THE NUMBER OF CHARACTERS IS $MAX_IN_LEN. -- MACROSUB WILL USE '3' AS THE "MIDDLE" CHARACTER; ALL OTHERS ARE 'A'. -- USED IN: C23003A C23003B C23003G C23003I BIG_ID3 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -- $BIG_ID4 -- AN IDENTIFIER IN WHICH THE NUMBER OF CHARACTERS IS $MAX_IN_LEN, -- DIFFERING FROM $BIG_ID3 ONLY IN THE MIDDLE CHARACTER. MACROSUB -- WILL USE '4' AS THE MIDDLE CHARACTER. -- USED IN: C23003A C23003B C23003G C23003I BIG_ID4 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -- $BIG_STRING1 -- A STRING LITERAL (WITH QUOTES) WHOSE CATENATION WITH $BIG_STRING2 -- ($BIG_STRING1 & $BIG_STRING2) PRODUCES THE IMAGE OF $BIG_ID1. -- USED IN: C35502D C35502F BIG_STRING1 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -- $BIG_STRING2 -- A STRING LITERAL (WITH QUOTES) WHOSE CATENATION WITH $BIG_STRING1 -- ($BIG_STRING1 & $BIG_STRING2) PRODUCES THE IMAGE OF $BIG_ID1. -- USED IN: C35502D C35502F BIG_STRING2 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAA1" -- $BLANKS -- A SEQUENCE OF ($MAX_IN_LEN - 20) BLANKS. -- USED IN: B22001A B22001B B22001C B22001D B22001E B22001F -- B22001G B22001I B22001J B22001K B22001L B22001M -- B22001N -- < LIMITS OF SAMPLE SHOWN BY ANGLE BRACKETS > BLANKS -- $ACC_SIZE -- AN INTEGER LITERAL WHOSE VALUE IS THE MINIMUM NUMBER OF BITS -- SUFFICIENT TO HOLD ANY VALUE OF AN ACCESS TYPE. -- USED IN: CD2A83C BD2A02A ACC_SIZE 32 -- $ALIGNMENT -- A VALUE THAT IS LEGITIMATE FOR USE IN A RECORD ALIGNMENT CLAUSE. -- USED IN: CD4041A BD4006A ALIGNMENT 4 -- $COUNT_LAST -- AN INTEGER LITERAL WHOSE VALUE IS TEXT_IO.COUNT'LAST. -- USED IN: CE3002B COUNT_LAST 32_767 -- $ENTRY_ADDRESS -- AN EXPRESSION YIELDING A LEGAL ADDRESS FOR A TASK ENTRY -- (I.E., FOR AN INTERRUPT) FOR THIS IMPLEMENTATION. -- USED IN: SPPRT13SP ENTRY_ADDRESS 16#40# -- $ENTRY_ADDRESS1 -- AN EXPRESSION YIELDING A LEGAL ADDRESS FOR A TASK ENTRY -- (I.E., FOR AN INTERRUPT) FOR THIS IMPLEMENTATION. THE ADDRESS -- MUST BE DISTINCT FROM THAT USED IN $ENTRY_ADDRESS. -- USED IN: SPPRT13SP ENTRY_ADDRESS1 16#80# -- $ENTRY_ADDRESS2 -- AN EXPRESSION YIELDING A LEGAL ADDRESS FOR A TASK ENTRY -- (I.E., FOR AN INTERRUPT) FOR THIS IMPLEMENTATION. THE ADDRESS -- MUST BE DISTINCT FROM THOSE USED IN $ENTRY_ADDRESS -- AND $ENTRY_ADDRESS1. -- USED IN: SPPRT13SP ENTRY_ADDRESS2 16#100# -- $FIELD_LAST -- AN INTEGER LITERAL WHOSE VALUE IS TEXT_IO.FIELD'LAST. -- USED IN: CE3002C FIELD_LAST 32_767 -- $FORM_STRING -- A STRING LITERAL SPECIFYING THAT THE EXTERNAL FILE MEETS BOTH -- CONDITIONS: (1) THERE IS A VALUE OF TYPE TEXT_IO.COUNT THAT IS NOT -- AN APPROPRIATE LINE-LENGTH FOR THE FILE, (2) THERE IS A VALUE -- OF TYPE TEXT_IO.COUNT THAT IS NOT AN APPROPRIATE PAGE-LENGTH -- FOR THE FILE. -- IF IT IS NOT POSSIBLE TO SATISFY BOTH CONDITIONS, THEN SUBSTITUTE -- A STRING LITERAL SPECIFYING THAT THE EXTERNAL FILE SATISFIES ONE -- OF THE CONDITIONS. IF IT IS NOT POSSIBLE TO SATISFY EITHER CONDITION, -- THEN SUBSTITUTE THE NULL STRING (""). -- USED IN: CE3304A FORM_STRING "" -- $FORM_STRING2 -- A STRING LITERAL SPECIFYING THAT THE CAPACITY OF THE FILE IS -- RESTRICTED TO 4096 CHARACTERS OR LESS. IF THE IMPLEMENTATION -- CANNOT RESTRICT FILE CAPACITY, $FORM_STRING2 SHOULD EQUAL -- "CANNOT_RESTRICT_FILE_CAPACITY". -- USED IN: CE2203A CE2403A FORM_STRING2 "CANNOT_RESTRICT_FILE_CAPACITY" -- $GREATER_THAN_DURATION -- A REAL LITERAL WHOSE VALUE (NOT SUBJECT TO ROUND-OFF ERROR -- IF POSSIBLE) LIES BETWEEN DURATION'BASE'LAST AND DURATION'LAST. IF -- NO SUCH VALUES EXIST, USE A VALUE IN DURATION'RANGE. -- USED IN: C96005B GREATER_THAN_DURATION 75_000.0 -- $ILLEGAL_EXTERNAL_FILE_NAME1 -- AN ILLEGAL EXTERNAL FILE NAME (E.G., TOO LONG, CONTAINING INVALID -- CHARACTERS, CONTAINING WILD-CARD CHARACTERS, OR SPECIFYING A -- NONEXISTENT DIRECTORY). -- USED IN: CE2102C CE2102H CE2103A CE2103B CE3102B CE3107A ILLEGAL_EXTERNAL_FILE_NAME1 \NODIRECTORY\FILENAME -- $ILLEGAL_EXTERNAL_FILE_NAME2 -- AN ILLEGAL EXTERNAL FILE NAME, DIFFERENT FROM $ILLEGAL_EXTERNAL_FILE_NAME1. -- USED IN: CE2102C CE2102H CE2103A CE2103B CE3102B ILLEGAL_EXTERNAL_FILE_NAME2 THIS-FILE-NAME-IS-TOO-LONG-FOR-MY-SYSTEM -- $INAPPROPRIATE_LINE_LENGTH -- A LITERAL OF TYPE COUNT THAT IS INAPPROPRIATE AS THE LINE-LENGTH -- FOR THE EXTERNAL FILE. IF THERE IS NO SUCH VALUE, THEN USE -1. -- USED IN: CE3304A INAPPROPRIATE_LINE_LENGTH -1 -- $INAPPROPRIATE_PAGE_LENGTH -- A LITERAL OF TYPE COUNT THAT IS INAPPROPRIATE AS THE PAGE-LENGTH -- FOR THE EXTERNAL FILE. IF THERE IS NO SUCH VALUE, THEN USE -1. -- USED IN: CE3304A INAPPROPRIATE_PAGE_LENGTH -1 -- $INTEGER_FIRST -- AN INTEGER LITERAL, WITH SIGN, WHOSE VALUE IS INTEGER'FIRST. -- THE LITERAL MUST NOT INCLUDE UNDERSCORES OR LEADING OR TRAILING -- BLANKS. -- USED IN: C35503F B54B01B INTEGER_FIRST -32768 -- $INTEGER_LAST -- AN INTEGER LITERAL WHOSE VALUE IS INTEGER'LAST. THE LITERAL MUST -- NOT INCLUDE UNDERSCORES OR LEADING OR TRAILING BLANKS. -- USED IN: C35503F B54B01B INTEGER_LAST 32767 -- $LESS_THAN_DURATION -- A REAL LITERAL (WITH SIGN) WHOSE VALUE (NOT SUBJECT TO -- ROUND-OFF ERROR IF POSSIBLE) LIES BETWEEN DURATION'BASE'FIRST AND -- DURATION'FIRST. IF NO SUCH VALUES EXIST, USE A VALUE IN -- DURATION'RANGE. -- USED IN: C96005B LESS_THAN_DURATION -75_000.0 -- $MACHINE_CODE_STATEMENT -- A VALID MACHINE CODE STATEMENT AS SPECIFIED IN THE PACKAGE -- MACHINE_CODE. IF THE IMPLEMENTATION DOES NOT SUPPORT MACHINE -- CODE THEN USE THE ADA NULL STATEMENT (I.E. NULL; ). -- USED IN: AD8011A BD8001A BD8002A BD8004A BD8004B MACHINE_CODE_STATEMENT NULL; -- $MAX_INT -- AN INTEGER LITERAL WHOSE VALUE IS SYSTEM.MAX_INT. -- THE LITERAL MUST NOT INCLUDE UNDERSCORES OR LEADING OR TRAILING -- BLANKS. -- USED IN: C35503D C35503F C4A007A MAX_INT 2147483647 -- $MIN_INT -- AN INTEGER LITERAL, WITH SIGN, WHOSE VALUE IS SYSTEM.MIN_INT. -- THE LITERAL MUST NOT CONTAIN UNDERSCORES OR LEADING OR TRAILING -- BLANKS. -- USED IN: C35503D C35503F MIN_INT -2147483648 -- $NAME -- THE NAME OF A PREDEFINED INTEGER TYPE OTHER THAN INTEGER, -- SHORT_INTEGER, OR LONG_INTEGER. -- (IMPLEMENTATIONS WHICH HAVE NO SUCH TYPES SHOULD USE AN UNDEFINED -- IDENTIFIER SUCH AS NO_SUCH_TYPE_AVAILABLE.) -- USED IN: C45231D CD7101G NAME SHORT_SHORT_INTEGER -- $NAME_SPECIFICATION1 -- THE FULL SPECIFICATION FOR THE FILENAME RETURNED FROM THE FUNCTION -- LEGAL_FILE_NAME WHEN CALLED FROM TEST CE2120A. -- USED IN: CE2120A NAME_SPECIFICATION1 DISK$AWC_2:[CROCKETTL.ACVC20.DEVELOPMENT]X2120A.;1 -- $NAME_SPECIFICATION2 -- THE FULL SPECIFICATION FOR THE FILENAME RETURNED FROM THE FUNCTION -- LEGAL_FILE_NAME WHEN CALLED FROM TEST CE2120B. -- USED IN: CE2120B NAME_SPECIFICATION2 DISK$AWC_2:[CROCKETTL.ACVC20.DEVELOPMENT]X2120B.;1 -- $NAME_SPECIFICATION3 -- THE FULL SPECIFICATION FOR THE FILENAME RETURNED FROM THE FUNCTION -- LEGAL_FILE_NAME WHEN CALLED FOM TEST CE3119A. -- USED IN: CE3119A NAME_SPECIFICATION3 DISK$AWC_2:[CROCKETTL.ACVC20.DEVELOPMENT]X2120C.;1 -- $OPTIONAL_DISC -- A DISCRIMINANT USED AS THE DISCRIMINANT PART OF $RECORD_NAME. -- IF MACHINE CODE INSERTIONS ARE NOT SUPPORTED THEN SUBSTITUTE -- NO_SUCH_MACHINE_CODE_DISC. -- USED IN: BD8002A OPTIONAL_DISC NO_SUCH_MACHINE_CODE_DISC -- $RECORD_DEFINITION -- THE RECORD TYPE DEFINITION (WITH FINAL SEMICOLON) FOR THE TYPE THAT -- WAS USED IN THE MACRO $RECORD_NAME, AS DECLARED IN PACKAGE -- MACHINE_CODE. IF THE IMPLEMENTATION DOES NOT SUPPORT MACHINE CODE, -- THEN USE A NULL RECORD DEFINITION -- USED IN: BD8002A RECORD_DEFINITION RECORD NULL; END RECORD; -- $RECORD_NAME -- A VALID RECORD TYPE NAME THAT IS DEFINED IN PACKAGE MACHINE_CODE. -- IF THE IMPLEMENTATION DOES NOT SUPPORT MACHINE CODE THEN -- USE THE NAME "NO_SUCH_MACHINE_CODE_TYPE" -- USED IN: BD8002A RECORD_NAME NO_SUCH_MACHINE_CODE_TYPE -- $TASK_SIZE -- AN INTEGER LITERAL WHOSE VALUE IS THE NUMBER OF BITS REQUIRED TO -- HOLD A TASK OBJECT. -- USED IN: CD2A91C TASK_SIZE 128 -- $TASK_STORAGE_SIZE -- THE NUMBER OF STORAGE UNITS REQUIRED FOR A TASK ACTIVATION. -- USED IN: BD2C01D BD2C02A BD2C03A C87B62D CD1009K CD1009T -- CD1009U CD1C03E CD1C06A CD2C11A CC1225A CD2C11D TASK_STORAGE_SIZE 1024 -- $VARIABLE_ADDRESS -- AN EXPRESSION YIELDING A LEGAL ADDRESS FOR A VARIABLE FOR THIS -- IMPLEMENTATION. -- USED IN: SPPRT13SP VARIABLE_ADDRESS 16#0020# -- $VARIABLE_ADDRESS1 -- AN EXPRESSION YIELDING A LEGAL ADDRESS FOR A VARIABLE FOR THIS -- IMPLEMENTATION. THE ADDRESS MUST BE DISTINCT FROM THAT USED IN -- THE MACRO $VARIABLE_ADDRESS. -- USED IN: SPPRT13SP VARIABLE_ADDRESS1 16#0024# -- $VARIABLE_ADDRESS2 -- AN EXPRESSION YIELDING A LEGAL ADDRESS FOR A VARIABLE FOR THIS -- IMPLEMENTATION. THE ADDRESS MUST BE DISTINCT FROM THOSE USED IN -- THE MACROS $VARIABLE_ADDRESS AND $VARIABLE_ADDRESS1. -- USED IN: SPPRT13SP VARIABLE_ADDRESS2 16#0028# tsttests.dat a26007a.tst ad8011a.tst b22001a.tst b22001b.tst b22001c.tst b22001d.tst b22001e.tst b22001f.tst b22001g.tst b22001i.tst b22001j.tst b22001k.tst b22001l.tst b22001m.tst b22001n.tst b54b01b.tst bd2a02a.tst bd2c01d.tst bd2c02a.tst bd2c03a.tst bd4006a.tst bd8001a.tst bd8002a.tst bd8003a.tst bd8004a.tst bd8004b.tst bd8004c.tst c23003a.tst c23003b.tst c23003g.tst c23003i.tst c35502d.tst c35502f.tst c35503d.tst c35503f.tst c45231d.tst c4a007a.tst c87b62d.tst c96005b.tst cc1225a.tst cd1009k.tst cd1009t.tst cd1009u.tst cd1c03e.tst cd1c06a.tst cd2a83c.tst cd2a91c.tst cd2c11a.tst cd2c11d.tst cd4041a.tst cd7101g.tst ce2102c.tst ce2102h.tst ce2103a.tst ce2103b.tst ce2120a.tst ce2120b.tst ce2203a.tst ce2403a.tst ce3002b.tst ce3002c.tst ce3102b.tst ce3107a.tst ce3119a.tst ce3304a.tst spprt13s.tst Package ImpDef impdef.a -- IMPDEF.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the -- software and documentation contained herein. Unlimited rights are -- defined in DFAR 252.227-7013(a)(19). By making this public release, -- the Government intends to confer upon all recipients unlimited rights -- equal to those held by the Government. These rights include rights to -- use, duplicate, release or disclose the released technical data and -- computer software in whole or in part, in any manner and for any purpose -- whatsoever, and to have or permit others to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- DESCRIPTION: -- This package provides tailorable entities for a particular -- implementation. Each entity may be modified to suit the needs -- of the implementation. Default values are provided to act as -- a guide. -- -- The entities in this package are those which are used in at least -- one core test. Entities which are used exclusively in tests for -- annexes C-H are located in annex-specific child units of this package. -- -- CHANGE HISTORY: -- 12 DEC 93 SAIC Initial PreRelease version -- 02 DEC 94 SAIC Second PreRelease version -- 16 May 95 SAIC Added constants specific to tests of the random -- number generator. -- 16 May 95 SAIC Added Max_RPC_Call_Time constant. -- 17 Jul 95 SAIC Added Non_State_String constant. -- 21 Aug 95 SAIC Created from existing IMPSPEC.ADA and IMPBODY.ADA -- files. -- 30 Oct 95 SAIC Added external name string constants. -- 24 Jan 96 SAIC Added alignment constants. -- 29 Jan 96 SAIC Moved entities not used in core tests into annex- -- specific child packages. Adjusted commentary. -- Renamed Validating_System_Programming_Annex to -- Validating_Annex_C. Added similar Validating_Annex_? -- constants for the other non-core annexes (D-H). -- 01 Mar 96 SAIC Added external name string constants. -- 21 Mar 96 SAIC Added external name string constants. -- 02 May 96 SAIC Removed constants for draft test CXA5014, which was -- removed from the tentative ACVC 2.1 suite. -- Added constants for use with FXACA00. -- 06 Jun 96 SAIC Added constants for wide character test files. -- 11 Dec 96 SAIC Updated constants for wide character test files. -- 13 Dec 96 SAIC Added Address_Value_IO -- --! with Report; with Ada.Text_IO; with System.Storage_Elements; package ImpDef is --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following boolean constants indicate whether this validation will -- include any of annexes C-H. The values of these booleans affect the -- behavior of the test result reporting software. -- -- True means the associated annex IS included in the validation. -- False means the associated annex is NOT included. Validating_Annex_C : constant Boolean := False; -- ^^^^^ --- MODIFY HERE AS NEEDED Validating_Annex_D : constant Boolean := False; -- ^^^^^ --- MODIFY HERE AS NEEDED Validating_Annex_E : constant Boolean := False; -- ^^^^^ --- MODIFY HERE AS NEEDED Validating_Annex_F : constant Boolean := False; -- ^^^^^ --- MODIFY HERE AS NEEDED Validating_Annex_G : constant Boolean := False; -- ^^^^^ --- MODIFY HERE AS NEEDED Validating_Annex_H : constant Boolean := False; -- ^^^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This is the minimum time required to allow another task to get -- control. It is expected that the task is on the Ready queue. -- A duration of 0.0 would normally be sufficient but some number -- greater than that is expected. Minimum_Task_Switch : constant Duration := 0.1; -- ^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This is the time required to activate another task and allow it -- to run to its first accept statement. We are considering a simple task -- with very few Ada statements before the accept. An implementation is -- free to specify a delay of several seconds, or even minutes if need be. -- The main effect of specifying a longer delay than necessary will be an -- extension of the time needed to run the associated tests. Switch_To_New_Task : constant Duration := 1.0; -- ^^^ -- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This is the time which will clear the queues of other tasks -- waiting to run. It is expected that this will be about five -- times greater than Switch_To_New_Task. Clear_Ready_Queue : constant Duration := 5.0; -- ^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- Some implementations will boot with the time set to 1901/1/1/0.0 -- When a delay of Delay_For_Time_Past is given, the implementation -- guarantees that a subsequent call to Ada.Calendar.Time_Of(1901,1,1) -- will yield a time that has already passed (for example, when used in -- a delay_until statement). Delay_For_Time_Past : constant Duration := 0.1; -- ^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- Minimum time interval between calls to the time dependent Reset -- procedures in Float_Random and Discrete_Random packages that is -- guaranteed to initiate different sequences. See RM A.5.2(45). Time_Dependent_Reset : constant Duration := 0.3; -- ^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- Test CXA5013 will loop, trying to generate the required sequence -- of random numbers. If the RNG is faulty, the required sequence -- will never be generated. Delay_Per_Random_Test is a time-out value -- which allows the test to run for a period of time after which the -- test is failed if the required sequence has not been produced. -- This value should be the time allowed for the test to run before it -- times out. It should be long enough to allow multiple (independent) -- runs of the testing code, each generating up to 1000 random -- numbers. Delay_Per_Random_Test : constant Duration := 1.0; -- ^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The time required to execute this procedure must be greater than the -- time slice unit on implementations which use time slicing. For -- implementations which do not use time slicing the body can be null. procedure Exceed_Time_Slice; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This constant must not depict a random number generator state value. -- Using this string in a call to function Value from either the -- Discrete_Random or Float_Random packages will result in -- Constraint_Error (expected result in test CXA5012). Non_State_String : constant String := "By No Means A State"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^^^^^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This string constant must be a legal external tag value as used by -- CD10001 for the type Some_Tagged_Type in the representation -- specification for the value of 'External_Tag. External_Tag_Value : constant String := "implementation_defined"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^^^^^^^^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following address constant must be a valid address to locate -- the C program CD30005_1. It is shown here as a named number; -- the implementation may choose to type the constant as appropriate. CD30005_1_Foreign_Address : constant System.Address:= System.Storage_Elements.To_Address ( 16#0000_0000# ); -- MODIFY HERE AS REQUIRED --- ^^^^^^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following string constant must be the external name resulting -- from the C compilation of CD30005_1. The string will be used as an -- argument to pragma Import. CD30005_1_External_Name : constant String := "CD30005_1"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following constants should represent the largest default alignment -- value and the largest alignment value supported by the linker. -- See RM 13.3(35). Max_Default_Alignment : constant := 0; -- ^ --- MODIFY HERE AS NEEDED Max_Linker_Alignment : constant := 0; -- ^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following string constants must be the external names resulting -- from the C compilation of CXB30130.C and CXB30131.C. The strings -- will be used as arguments to pragma Import. CXB30130_External_Name : constant String := "CXB30130"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ CXB30131_External_Name : constant String := "CXB30131"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following string constants must be the external names resulting -- from the COBOL compilation of CXB40090.CBL, CXB40091.CBL, and -- CXB40092.CBL. The strings will be used as arguments to pragma Import. CXB40090_External_Name : constant String := "CXB40090"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ CXB40091_External_Name : constant String := "CXB40091"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ CXB40092_External_Name : constant String := "CXB40092"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following string constants must be the external names resulting -- from the Fortran compilation of CXB50040.FTN, CXB50041.FTN, -- CXB50050.FTN, and CXB50051.FTN. -- -- The strings will be used as arguments to pragma Import. -- -- Note that the use of these four string constants will be split between -- two tests, CXB5004 and CXB5005. CXB50040_External_Name : constant String := "CXB50040"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ CXB50041_External_Name : constant String := "CXB50041"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ CXB50050_External_Name : constant String := "CXB50050"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ CXB50051_External_Name : constant String := "CXB50051"; -- MODIFY HERE AS NEEDED --- ^^^^^^^^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following constants have been defined for use with the -- representation clause in FXACA00 of type Sales_Record_Type. -- -- Char_Bits should be an integer at least as large as the number -- of bits needed to hold a character in an array. -- A value of 6 * Char_Bits will be used in a representation clause -- to reserve space for a six character string. -- -- Next_Storage_Slot should indicate the next storage unit in the record -- representation clause that does not overlap the storage designated for -- the six character string. Char_Bits : constant := 8; -- MODIFY HERE AS NEEDED ---^ Next_Storage_Slot : constant := 6; -- MODIFY HERE AS NEEDED ---^ --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following string constant must be the path name for the .AW -- files that will be processed by the Wide Character processor to -- create the C250001 and C250002 tests. The Wide Character processor -- will expect to find the files to process at this location. Test_Path_Root : constant String := "/data/ftp/public/AdaIC/testing/acvc/95acvc/"; -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --- MODIFY HERE AS NEEDED -- The following two strings must not be modified unless the .AW file -- names have been changed. The Wide Character processor will use -- these strings to find the .AW files used in creating the C250001 -- and C250002 tests. Wide_Character_Test : constant String := Test_Path_Root & "c250001"; Upper_Latin_Test : constant String := Test_Path_Root & "c250002"; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The following instance of Integer_IO or Modular_IO must be supplied -- in order for test CD72A02 to compile correctly. -- Depending on the choice of base type used for the type -- System.Storage_Elements.Integer_Address; one of the two instances will -- be correct. Comment out the incorrect instance. package Address_Value_IO is new Ada.Text_IO.Integer_IO(System.Storage_Elements.Integer_Address); --M package Address_Value_IO is --M new Ada.Text_IO.Modular_IO(System.Storage_Elements.Integer_Address); --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef; --==================================================================-- package body ImpDef is -- NOTE: These are example bodies. It is expected that implementors -- will write their own versions of these routines. --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The time required to execute this procedure must be greater than the -- time slice unit on implementations which use time slicing. For -- implementations which do not use time slicing the body can be null. Procedure Exceed_Time_Slice is T : Integer := 0; Loop_Max : constant Integer := 4_000; begin for I in 1..Loop_Max loop T := Report.Ident_Int (1) * Report.Ident_Int (2); end loop; end Exceed_Time_Slice; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef; impdefc.a -- IMPDEFC.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the -- software and documentation contained herein. Unlimited rights are -- defined in DFAR 252.227-7013(a)(19). By making this public release, -- the Government intends to confer upon all recipients unlimited rights -- equal to those held by the Government. These rights include rights to -- use, duplicate, release or disclose the released technical data and -- computer software in whole or in part, in any manner and for any purpose -- whatsoever, and to have or permit others to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- DESCRIPTION: -- This package provides tailorable entities for a particular -- implementation. Each entity may be modified to suit the needs -- of the implementation. Default values are provided to act as -- a guide. -- -- The entities in this package are those which are used exclusively -- in tests for Annex C (Systems Programming). -- -- APPLICABILITY CRITERIA: -- This package is only required for implementations validating the -- Systems Programming Annex. -- -- CHANGE HISTORY: -- 29 Jan 96 SAIC Initial version for ACVC 2.1. -- --! with Ada.Interrupts.Names; package ImpDef.Annex_C is --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- Interrupt_To_Generate should identify a non-reserved interrupt -- that can be predictably generated within a reasonable time interval -- (as specified by the constant Wait_For_Interrupt) during testing. Interrupt_To_Generate: constant Ada.Interrupts.Interrupt_ID := Ada.Interrupts.Interrupt_ID'First; -- to allow trivial compilation -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- Wait_For_Interrupt should specify the reasonable time interval during -- which the interrupt identified by Interrupt_To_Generate can be -- expected to be generated. Wait_For_Interrupt : constant := 10.0; -- ^^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The procedure Enable_Interrupts should enable interrupts, if this -- is required by the implementation. [See additional notes on this -- procedure in the package body.] procedure Enable_Interrupts; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The procedure Generate_Interrupt should generate the interrupt -- identified by Interrupt_To_Generate within the time interval -- specified by Wait_For_Interrupt. [See additional notes on this -- procedure in the package body.] procedure Generate_Interrupt; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef.Annex_C; --==================================================================-- package body ImpDef.Annex_C is -- NOTE: These are example bodies. It is expected that implementors -- will write their own versions of these routines. --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The procedure Enable_Interrupts should enable interrupts, if this -- is required by the implementation. -- -- The default body is null, since it is expected that most implementations -- will not need to perform this step. -- -- Note that Enable_Interrupts will be called only once per test. procedure Enable_Interrupts is begin null; -- ^^^^^^^^^^^^^^^^^^^^ MODIFY THIS BODY AS NEEDED ^^^^^^^^^^^^^^^^^^^^ end Enable_Interrupts; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The procedure Generate_Interrupt should generate the interrupt -- identified by Interrupt_To_Generate within the time interval -- specified by Wait_For_Interrupt. -- -- The default body assumes that an interrupt will be generated by some -- physical act during testing. While this approach is acceptable, the -- interrupt should ideally be generated by appropriate code in the -- procedure body. -- -- Note that Generate_Interrupt may be called multiple times by a single -- test. The code used to implement this procedure should account for this -- possibility. procedure Generate_Interrupt is begin Report.Comment (". >>>>> GENERATE THE INTERRUPT NOW <<<<< "); -- ^^^^^^^^^^^^^^^^^^^^ MODIFY THIS BODY AS NEEDED ^^^^^^^^^^^^^^^^^^^^ end Generate_Interrupt; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef.Annex_C; impdefd.a -- IMPDEFD.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the -- software and documentation contained herein. Unlimited rights are -- defined in DFAR 252.227-7013(a)(19). By making this public release, -- the Government intends to confer upon all recipients unlimited rights -- equal to those held by the Government. These rights include rights to -- use, duplicate, release or disclose the released technical data and -- computer software in whole or in part, in any manner and for any purpose -- whatsoever, and to have or permit others to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- DESCRIPTION: -- This package provides tailorable entities for a particular -- implementation. Each entity may be modified to suit the needs -- of the implementation. Default values are provided to act as -- a guide. -- -- The entities in this package are those which are used exclusively -- in tests for Annex D (Real-Time Systems). -- -- APPLICABILITY CRITERIA: -- This package is only required for implementations validating the -- Real-Time Systems Annex. -- -- CHANGE HISTORY: -- 29 Jan 96 SAIC Initial version for ACVC 2.1. -- --! package ImpDef.Annex_D is --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This constant is the maximum storage size that can be specified -- for a task. A single task that has this size must be able to -- run. Ideally, this value is large enough that two tasks of this -- size cannot run at the same time. If the value is too small then -- test CXDC001 may take longer to run. See the test for further -- information. Maximum_Task_Storage_Size : constant := 16_000_000; -- ^^^^^^^^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- Indicates the type of processor on which the tests are running. -- Time_Slice indicates a uniprocessor with an operating system that -- simulates a multi-processor by using time slicing. type Processor_Type is (Uni_Processor, Time_Slice, Multi_Processor); Processor : constant Processor_Type := Uni_Processor; -- ^^^^^^^^^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef.Annex_D; impdefe.a -- IMPDEFE.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the -- software and documentation contained herein. Unlimited rights are -- defined in DFAR 252.227-7013(a)(19). By making this public release, -- the Government intends to confer upon all recipients unlimited rights -- equal to those held by the Government. These rights include rights to -- use, duplicate, release or disclose the released technical data and -- computer software in whole or in part, in any manner and for any purpose -- whatsoever, and to have or permit others to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- DESCRIPTION: -- This package provides tailorable entities for a particular -- implementation. Each entity may be modified to suit the needs -- of the implementation. Default values are provided to act as -- a guide. -- -- The entities in this package are those which are used exclusively -- in tests for Annex E (Distributed Systems). -- -- APPLICABILITY CRITERIA: -- This package is only required for implementations validating the -- Distributed Systems Annex. -- -- CHANGE HISTORY: -- 29 Jan 96 SAIC Initial version for ACVC 2.1. -- --! package ImpDef.Annex_E is --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- The Max_RPC_Call_Time value is the longest time a test needs to wait for -- an RPC to complete. Included in this time is the time for the called -- procedure to make a task entry call where the task is ready to accept -- the call. Max_RPC_Call_Time : constant Duration := 2.0; -- ^^^ --- MODIFY HERE AS NEEDED --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef.Annex_E; impdefg.a -- IMPDEFG.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the -- software and documentation contained herein. Unlimited rights are -- defined in DFAR 252.227-7013(a)(19). By making this public release, -- the Government intends to confer upon all recipients unlimited rights -- equal to those held by the Government. These rights include rights to -- use, duplicate, release or disclose the released technical data and -- computer software in whole or in part, in any manner and for any purpose -- whatsoever, and to have or permit others to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- DESCRIPTION: -- This package provides tailorable entities for a particular -- implementation. Each entity may be modified to suit the needs -- of the implementation. Default values are provided to act as -- a guide. -- -- The entities in this package are those which are used exclusively -- in tests for Annex G (Numerics). -- -- APPLICABILITY CRITERIA: -- This package is only required for implementations validating the -- Numerics Annex. -- -- CHANGE HISTORY: -- 29 Jan 96 SAIC Initial version for ACVC 2.1. -- --! package ImpDef.Annex_G is --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This function must return a "negative zero" value for implementations -- for which Float'Signed_Zeros is True. function Negative_Zero return Float; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef.Annex_G; --==================================================================-- package body ImpDef.Annex_G is -- NOTE: These are example bodies. It is expected that implementors -- will write their own versions of these routines. --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- -- This function must return a negative zero value for implementations -- for which Float'Signed_Zeros is True. -- -- The default body simply returns a negated literal 0.0. If the -- default body does not return the value corresponding to a negatively -- signed zero for the implementation under test, it must be replaced -- by one which does. See RM A.5.3(13). function Negative_Zero return Float is begin return -0.0; -- Note: If this value is not negative zero for the -- implementation, use of this "default" value -- could result in false failures in -- implementations where Float'Signed_Zeros -- is True. -- ^^^^^^^^^^^^^^^^^^^^ MODIFY THIS BODY AS NEEDED ^^^^^^^^^^^^^^^^^^^^ end Negative_Zero; --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-- end ImpDef.Annex_G; impdefh.a -- IMPDEFH.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, the U.S. Government obtained unlimited rights in the -- software and documentation contained herein. Unlimited rights are -- defined in DFAR 252.227-7013(a)(19). By making this public release, -- the Government intends to confer upon all recipients unlimited rights -- equal to those held by the Government. These rights include rights to -- use, duplicate, release or disclose the released technical data and -- computer software in whole or in part, in any manner and for any purpose -- whatsoever, and to have or permit others to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- DESCRIPTION: -- This package is used to define those values that are implementation -- defined for use with validating the Safety and Security special needs -- annex, Annex-H. -- -- APPLICABILITY CRITERIA: -- This package is only required for implementations validating the -- Safety and Security Annex. -- -- CHANGE HISTORY: -- 13 FEB 96 SAIC Initial version -- 25 NOV 96 SAIC Revised for release 2.1 -- --! package Impdef.Annex_H is type Scalar_To_Normalize is ( Id0, Id1, Id2, Id3, Id4, Id5, Id6, Id7, Id8, Id9, Id10, Id11, Id12, Id13, Id14, Id15, Id16, Id17, Id18, Id19, Id20, Id21, Id22, Id23, Id24, Id25, Id26, Id27, Id28, Id29, Id30, Id31, Id32, Id33, Id34, Id35, Id36, Id37, Id38, Id39, Id40, Id41, Id42, Id43, Id44, Id45, Id46, Id47, Id48, Id49, Id50, Id51, Id52, Id53, Id54, Id55, Id56, Id57, Id58, Id59, Id60, Id61, Id62, Id63, Id64, Id65, Id66, Id67, Id68, Id69, Id70, Id71, Id72, Id73, Id74, Id75, Id76, Id77, Id78, Id79, Id80, Id81, Id82, Id83, Id84, Id85, Id86, Id87, Id88, Id89, Id90, Id91, Id92, Id93, Id94, Id95, Id96, Id97, Id98, Id99, IdA0, IdA1, IdA2, IdA3, IdA4, IdA5, IdA6, IdA7, IdA8, IdA9, IdB0, IdB1, IdB2, IdB3, IdB4, IdB5, IdB6 ); -- NO MODIFICATION NEEDED TO TYPE SCALAR_TO_NORMALIZE. DO NOT MODIFY. type Small_Number is range 1..100; -- NO MODIFICATION NEEDED TO TYPE SMALL_NUMBER. DO NOT MODIFY. --===================================================================== -- When the value documented in H.1(5) as the predictable initial value -- for an uninitialized object of the type Scalar_To_Normalize -- (an enumeration type containing 127 identifiers) is to be in the range -- Id0..IdB6, set the following constant to True; otherwise leave it set -- to False. Default_For_Scalar_To_Normalize_Is_In_Range : constant Boolean := False; -- MODIFY HERE AS NEEDED --- ^^^^^ --===================================================================== -- If the above constant Default_For_Scalar_To_Normalize_Is_In_Range is -- set True, the following constant must be set to the value documented -- in H.1(5) as the predictable initial value for the type -- Scalar_To_Normalize. Default_For_Scalar_To_Normalize : constant Scalar_To_Normalize := Id0; -- MODIFY HERE AS NEEDED --- ^^^ --===================================================================== -- When the value documented in H.1(5) as the predictable initial value -- for an uninitialized object of the type Small_Number -- (an integer type containing 100 values) is to be in the range -- 1..100, set the following constant to True; otherwise leave it set -- to False. Default_For_Small_Number_Is_In_Range : constant Boolean := False; -- MODIFY HERE AS NEEDED --- ^^^^^ --===================================================================== -- If the above constant Default_For_Small_Number_Is_In_Range is -- set True, the following constant must be set to the value documented -- in H.1(5) as the predictable initial value for the type Small_Number. Default_For_Small_Number : constant Small_Number := 100; -- MODIFY HERE AS NEEDED --- ^^^ --===================================================================== end Impdef.Annex_H; Appendix C. Output of CZ Tests Sample of expected output from CZ004: ,.,. CZ00004 ACVC 2.0 96-12-16 20:36:32 ---- CZ00004 Check that Impdef values have been supplied for the special needs annexes. Check that the routines in TCTouch work correctly. - CZ00004 TCTouch ACVC 2.1. * CZ00004 Assertion failed: Assertion Failed is expected. * CZ00004 Assertion failed: Assertion Failed is expected. * CZ00004 z should not equal Z Expecting: z Got: Z. - CZ00004 Three failure messages should have occurred so far. * CZ00004 Trace Overflow: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx. - CZ00004 A Trace Overflow message should have just occurred. - CZ00004 <><><><><> ANNEX VALIDATION STATUS <><><><><>. + CZ00004 Annex C validation: Annex C not supported. + CZ00004 Annex D validation: Annex D not supported. + CZ00004 Annex E validation: Annex E not supported. + CZ00004 Annex F validation: Annex F not supported. + CZ00004 Annex G validation: Annex G not supported. + CZ00004 Annex H validation: Annex H not supported. - CZ00004 <><><><><> IMPDEF <><><><><>. - CZ00004 Validating_Annex_C : FALSE. - CZ00004 Validating_Annex_D : FALSE. - CZ00004 Validating_Annex_E : FALSE. - CZ00004 Validating_Annex_F : FALSE. - CZ00004 Validating_Annex_G : FALSE. - CZ00004 Validating_Annex_H : FALSE. - CZ00004 Minimum_Task_Switch: 0.100000000 - CZ00004 Switch_To_New_Task: 1.000000000 - CZ00004 Clear_Ready_Queue: 5.000000000 - CZ00004 Delay_For_Time_Past: 0.100000000 - CZ00004 Time_Dependent_Reset: 0.300000000 - CZ00004 Delay_Per_Random_Test: 1.000000000 - CZ00004 Exceed_Time_Slice. - CZ00004 Non_State_String: By No Means A State. - CZ00004 External_Tag_Value: implementation_defined. - CZ00004 CD30005_1_Foreign_Address: present. - CZ00004 CD30005_1_External_Name: CD30005_1. - CZ00004 Max_Default_Alignment: 0. - CZ00004 Max_Linker_Alignment: 0. - CZ00004 CXB30130_External_Name: CXB30130. - CZ00004 CXB30131_External_Name: CXB30131. **** CZ00004 FAILED ****************************. - NO_NAME Above line should report "FAILED". Sample of expected output from CZ1101A: - NO_NAME (CZ1101A) CHECK REPORT ROUTINES. - NO_NAME INITIAL VALUES SHOULD BE 'NO_NAME' AND 'FAILED'. **** NO_NAME FAILED ****************************. ,.,. PASS_TEST ACVC 2.1 96-12-16 14:42:53 ---- PASS_TEST CHECKING 'TEST' AND 'RESULT' FOR 'PASSED'. - PASS_TEST THIS LINE IS EXACTLY 'MAX_LEN' LONG. ...5...60....5...70. - PASS_TEST THIS COMMENT HAS A WORD THAT SPANS THE FOLD POINT. THIS COMMENT FITS EXACTLY ON TWO LINES. ..5...60....5...70. - PASS_TEST THIS_COMMENT_IS_ONE_VERY_LONG_WORD_AND_SO_IT_SHOULD_BE _SPLIT_AT_THE_FOLD_POINT. ==== PASS_TEST PASSED ============================. - NO_NAME CHECK THAT 'RESULT' RESETS VALUES TO 'NO_NAME' AND 'FAILED'. **** NO_NAME FAILED ****************************. ,.,. FAIL_TEST ACVC 2.1 96-12-16 14:42:53 ---- FAIL_TEST CHECKING 'FAILED' AND 'RESULT' FOR 'FAILED'. * FAIL_TEST 'RESULT' SHOULD NOW BE 'FAILED'. **** FAIL_TEST FAILED ****************************. ,.,. NA_TEST ACVC 2.1 96-12-16 14:42:53 ---- NA_TEST CHECKING 'NOT-APPLICABLE'. + NA_TEST 'RESULT' SHOULD NOW BE 'NOT-APPLICABLE'. ++++ NA_TEST NOT-APPLICABLE ++++++++++++++++++++. ,.,. FAIL_NA_TEST ACVC 2.1 96-12-16 14:42:53 ---- FAIL_NA_TEST CHECKING 'NOT_APPLICABLE', 'FAILED', 'NOT_APPLICABLE'. + FAIL_NA_TEST 'RESULT' BECOMES 'NOT-APPLICABLE'. * FAIL_NA_TEST 'RESULT' BECOMES 'FAILED'. + FAIL_NA_TEST CALLING 'NOT_APPLICABLE' DOESN'T CHANGE 'RESULT'. **** FAIL_NA_TEST FAILED ****************************. ,.,. SPEC_NA_TEST ACVC 2.1 96-12-16 14:42:53 ---- SPEC_NA_TEST CHECKING 'SPEC_ACT', 'NOT_APPLICABLE', 'SPEC_ACT'. ! SPEC_NA_TEST 'RESULT' BECOMES 'TENTATIVELY PASSED'. + SPEC_NA_TEST 'RESULT' BECOMES 'NOT APPLICABLE'. ! SPEC_NA_TEST CALLING 'SPECIAL_ACTION' DOESN'T CHANGE 'RESULT'. ++++ SPEC_NA_TEST NOT-APPLICABLE ++++++++++++++++++++. ,.,. SPEC_FAIL_TEST ACVC 2.1 96-12-16 14:42:53 ---- SPEC_FAIL_TEST CHECKING 'SPEC_ACT', 'FAILED', 'SPEC_ACT'. ! SPEC_FAIL_TEST 'RESULT' BECOMES 'TENTATIVELY PASSED'. * SPEC_FAIL_TEST 'RESULT' BECOMES 'FAILED'. ! SPEC_FAIL_TEST CALLING 'SPECIAL_ACTION' DOESN'T CHANGE 'RESULT'. **** SPEC_FAIL_TEST FAILED ****************************. ,.,. CZ1101A ACVC 2.1 96-12-16 14:42:53 ---- CZ1101A CHECKING 'SPECIAL_ACTION' ALONE. ! CZ1101A 'RESULT' BECOMES 'TENTATIVELY PASSED'. !!!! CZ1101A TENTATIVELY PASSED !!!!!!!!!!!!!!!!. !!!! SEE '!' COMMENTS FOR SPECIAL NOTES!! Sample of expected output from CZ1102A: ,.,. CZ1102A ACVC 2.1 96-12-16 14:44:58 ---- CZ1102A CHECK THAT THE DYNAMIC VALUE ROUTINES OF THE REPORT PACKAGE WORK CORRECTLY. ==== CZ1102A PASSED ============================. Sample of expected output from CZ1103A: ,.,. CZ1103A ACVC 2.1 96-12-16 14:46:17 ---- CZ1103A CHECK THAT PROCEDURE CHECK_FILE WORKS. - CZ1103A BEGIN TEST WITH AN EMPTY FILE. - CZ1103A BEGIN TEST WITH A FILE WITH BLANK LINES. - CZ1103A BEGIN TEST WITH A FILE WITH BLANK LINES AND PAGES. - CZ1103A BEGIN TEST WITH A FILE WITH TRAILING BLANKS. - CZ1103A FROM CHECK_FILE: THIS IMPLEMENTATION PADS LINES WITH BLANKS. - CZ1103A BEGIN TEST WITH A FILE WITHOUT TRAILING BLANKS. - CZ1103A BEGIN TEST WITH A FILE WITH AN END OF LINE ERROR. * CZ1103A FROM CHECK_FILE: END OF LINE EXPECTED - E ENCOUNTERED. - CZ1103A FROM CHECK_FILE: LAST CHARACTER IN FOLLOWING STRING REVEALED ERROR: THIS LINE WILL CONTAIN AN #. - CZ1103A BEGIN TEST WITH FILE WITH END OF PAGE ERROR. * CZ1103A FROM CHECK_FILE: END_OF_PAGE NOT WHERE EXPECTED. - CZ1103A FROM CHECK_FILE: LAST CHARACTER IN FOLLOWING STRING REVEALED ERROR: THIS LINE WILL CONTAIN AN @. - CZ1103A BEGIN TEST WITH FILE WITH END OF FILE ERROR. * CZ1103A FROM CHECK_FILE: END_OF_FILE NOT WHERE EXPECTED. - CZ1103A FROM CHECK_FILE: LAST CHARACTER IN FOLLOWING STRING REVEALED ERROR: THIS LINE WILL CONTAIN AN %. - CZ1103A BEGIN TEST WITH FILE WITH INCORRECT DATA. * CZ1103A FROM CHECK_FILE: FILE DOES NOT CONTAIN CORRECT OUTPUT - EXPECTED C - GOT I. - CZ1103A FROM CHECK_FILE: LAST CHARACTER IN FOLLOWING STRING REVEALED ERROR: LINE WITH C. **** CZ1103A FAILED ****************************. ,.,. CZ1103A ACVC 2.1 96-12-16 14:46:18 ---- CZ1103A THE LINE ABOVE SHOULD REPORT FAILURE. ! CZ1103A COMPARE THIS OUTPUT TO THE EXPECTED RESULT. !!!! CZ1103A TENTATIVELY PASSED !!!!!!!!!!!!!!!!. !!!! SEE '!' COMMENTS FOR SPECIAL NOTES!! Appendix D. Test Applicability Criteria Certain tests in the suite may be considered inapplicable to an implementation depending on the way the implementation treats the implementation-dependent features of the language. A brief summary of these implementation-dependent features and the tests they affect are listed in this appendix. Note that the applicability of each one of these tests is based on the criteria listed in the test file. During validation, all the implementation-dependent tests are submitted for compilation and (if compiled successfully) are executed, with the following exceptions: Tests which require a floating point DIGITS value that exceeds SYSTEM.MAX_DIGITS need not be submitted to the compiler. (The AVF may require pre-validation evidence that the tests are properly rejected.) If file I/O is not supported, then the tests listed in Section F.2.14 will not be part of the customized test suite for bare target validations and will not be run on-site. E.1 Compile-Time Inapplicability The first part of this appendix is concerned with tests for which the applicability is determined at compile time. Class B tests that are inapplicable should be successfully compiled, or, in a few cases, should report an error on the line marked “--N/A => ERROR”. Executable tests that are inapplicable must be rejected at compile time as a result of the unsupported feature. Lines containing the implementation-dependent features are marked “-- N/A => ERROR”. In every case, tests may be graded NOT-APPLICABLE only if all the following conditions are met: The implementation’s treatment of the test is consistent with the applicability criteria given in the test comments; All other tests having the same applicability criteria exhibit the same behavior; and The behavior is consistent with Appendix F of the implementation’s documentation. E.1.1 Type SHORT_INTEGER If there is no predefined type SHORT_INTEGER, then the tests contained in the following files are not applicable: b36105c.dep b52004e.dep b55b09d.dep c45231b.dep c45304b.dep c45411b.dep c45502b.dep c45503b.dep c45504b.dep c45504e.dep c45611b.dep c45613b.dep c45614b.dep c45631b.dep c45632b.dep c55b07b.dep cd7101e.dep E.1.2 Type LONG_INTEGER If there is no predefined type LONG_INTEGER, then the tests contained in the following files are not applicable: b52004d.dep b55b09c.dep c45231c.dep c45304c.dep c45411c.dep c45502c.dep c45503c.dep c45504c.dep c45504f.dep c45611c.dep c45613c.dep c45614c.dep c45631c.dep c45632c.dep c55b07a.dep cd7101f.dep E.1.3 Other Predefined Integer Types If there are no predefined integer types with names other than INTEGER, SHORT_INTEGER, and LONG_INTEGER, then the tests contained in the following files are not applicable. c45231d.tst cd7101g.tst E.1.4 Fixed Point Restrictions If SYSTEM.MAX_MANTISSA is less than 47 or SYSTEM.FINE_DELTA is greater than 2.0**-47, then the tests contained in the following files are not applicable: c45531m.dep c45531n.dep c45531o.dep c45531p.dep c45532m.dep c45532n.dep c45532o.dep c45532p.dep E.1.5 Non-binary, Non-decimal Values of ‘SMALL If ‘SMALL representation clauses which are not powers of two are not supported, then the test contained in the following file is not applicable: c45536a.dep E.1.6 Compiler Rejection of Supposedly Static Expression Consider the following declarations: TYPE F IS DIGITS SYSTEM.MAX_DIGITS; N : CONSTANT := 2.0 * F'MACHINE_RADIX ** F'MACHINE_EMAX; If the declaration of N is rejected on the grounds that evaluation of the expression will raise an exception, then the following test is not applicable: c4a013b.ada E.1.7 Separate Compilation with Generics If a generic library-subprogram body cannot be compiled in a separate file from its specification, then the tests contained in the following files are not applicable: ba1010d*.ada ca1012a*.dep If a generic non-library package body cannot be compiled as a subunit in a separate file from its specification, then the test contained in the following file is not applicable: ca2009c*.dep If a generic non-library subprogram body cannot be compiled as a subunit in a separate file from its specification, the the test contained in the following file is not applicable: ca2009f*.dep If a generic procedure cannot have subunits which are compiled in separate files from the generic unit, then the test contained in the following file is not applicable: ca3011a*.dep If a generic library-package body cannot be compiled in a separate file from its specification, then the tests contained in the following files are not applicable: b83004b*.ada b83004d*.ada b83024f*.ada E.1.8 Non-default Size Rep Clauses for Floating Point Types If representation clauses specifying non-default sizes for floating point types are not supported, then the following tests may be not applicable: cd1009c.dep E.1.9 Machine Code Insertions If machine code insertions are not supported, then the tests contained in the following files are not applicable: ad8011a.tst bd8001a.tst bd8002a.tst bd8004a.tst bd8004b.tst bd8004c.tst E.1.10 Illegal External File Names If there are no strings which are illegal as external file names, then the tests contained in the following files are not applicable: ce2102c.tst ce2102h.tst ce3102b.tst ce3107a.tst E.2 Reported Inapplicability This section is concerned with tests that can detect, at runtime, certain implementation characteristics that render the objective meaningless or prevent testing of the objective. These tests must compile and execute, reporting “NOT_APPLICABLE” as the result. This behavior must be consistent with other tests for related objective and with the implementation’s Appendix F. E.2.1 Value of MACHINE_OVERFLOWS is False If MACHINE_OVERFLOWS is FALSE for floating point types, then the tests contained in the following files should report NOT_APPLICABLE: c45523a.ada c45622a.ada E.2.2 Value of MACHINE_OVERFLOWS is True If MACHINE_OVERFLOWS is TRUE for floating point types, then the tests contained in the following files should report NOT_APPLICABLE: c45624a.ada c45624b.ada E.2.3 SYSTEM.MAX_DIGITS If the value of SYSTEM.MAX_DIGITS is greater than 35, then the test contained in the following file should report NOT_APPLICABLE c4a011a.ada E.2.4 Floating Point Overflow Consider the declaration TYPE F IS DIGITS SYSTEM.MAX_DIGITS; If F’MACHINE_OVERFLOWS is FALSE and 2.0*F’MACHINE_RADIX**F’MACHINE_EMAX <= F’BASE’LAST then the test contained in the following file should report NOT_APPLICABLE (if it compiles without error): c4a013b.ada E.2.5 Type DURATION If DURATION’FIRST = DURATION’BASE’FIRST or DURATION’LAST = DURATION’BASE’LAST then the tests contained in the following file should report NOT_APPLICABLE: c96005b.tst E.2.6 Text Files (Non-supported Features) If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a text file (this is the appropriate behavior for an implementation which does not support text files other than standard input and output), then the tests contained in the following files should report NOT_APPLICABLE: ce2109c.ada ce3102a.ada ce3102b.tst ce3102f.ada ce3102g.ada ce3102h.ada ce3102j.ada ce3102k.ada ce3103a.ada ce3104a.ada ce3104b.ada ce3104c.ada ce3106a.ada ce3106b.ada ce3107b.ada ce3108a.ada ce3108b.ada ce3110a.ada ce3112c.ada ce3112d.ada ce3114a.ada ce3115a.ada ce3119a.tst ce3207a.ada ce3301a.ada ce3302a.ada ce3304a.tst ce3305a.ada ce3401a.ada ce3402a.ada ce3402c.ada ce3402d.ada ce3403a.ada ce3403b.ada ce3403c.ada ce3403e.ada ce3403f.ada ce3404b.ada ce3404c.ada ce3404d.ada ce3405a.ada ce3405c.ada ce3405d.ada ce3406a.ada ce3406b.ada ce3406c.ada ce3406d.ada ce3407a.ada ce3407b.ada ce3407c.ada ce3408a.ada ce3408b.ada ce3408c.ada ce3409a.ada ce3409c.ada ce3409d.ada ce3409e.ada ce3410a.ada ce3410c.ada ce3410d.ada ce3410e.ada ce3411a.ada ce3411c.ada ce3412a.ada ce3413a.ada ce3413b.ada ce3413c.ada ce3414a.ada ce3602a.ada ce3602b.ada ce3602c.ada ce3602d.ada ce3603a.ada ce3604a.ada ce3604b.ada ce3605a.ada ce3605b.ada ce3605c.ada ce3605d.ada ce3605e.ada ce3606a.ada ce3606b.ada ce3704a.ada ce3704b.ada ce3704c.ada ce3704d.ada ce3704e.ada ce3704f.ada ce3704m.ada ce3704n.ada ce3704o.ada ce3705a.ada ce3705b.ada ce3705c.ada ce3705d.ada ce3705e.ada ce3706d.ada ce3706f.ada ce3706g.ada ce3804a.ada ce3804b.ada ce3804c.ada ce3804d.ada ce3804e.ada ce3804f.ada ce3804g.ada ce3804h.ada ce3804i.ada ce3804j.ada ce3804m.ada ce3804o.ada ce3804p.ada ce3805a.ada ce3805b.ada ce3806a.ada ce3806b.ada ce3806d.ada ce3806e.ada ce3806g.ada ce3806h.ada ce3902b.ada ce3904a.ada ce3904b.ada ce3905a.ada ce3905b.ada ce3905c.ada ce3905l.ada ce3906a.ada ce3906b.ada ce3906c.ada ce3906e.ada ce3906f.ada cxaa001.a cxaa002.a cxaa003.a cxaa004.a cxaa005.a cxaa006.a cxaa007.a cxaa008.a cxaa009.a cxaa010.a cxaa011.a cxaa012.a cxaa013.a cxaa014.a cxaa015.a cxaa016.a cxg1003.a ee3203a.ada ee3204a.ada ee3402b.ada ee3409f.ada ee3412c.ada If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a text file with mode IN_FILE (this is the appropriate behavior for an implementation which does not support text files other than standard input and output), then the tests contained in the following files should report NOT_APPLICABLE: ce3102f.ada ce3102h.ada ce3104b.ada ce3106a.ada ce3108a.ada ce3108b.ada ce3112d.ada ce3301a.ada ce3302a.ada ce3402a.ada ce3403b.ada ce3403c.ada ce3403e.ada ce3403f.ada ce3404b.ada ce3404c.ada ce3404d.ada ce3406a.ada ce3406c.ada ce3406d.ada ce3407a.ada ce3407c.ada ce3408a.ada ce3408c.ada ce3409c.ada ce3409d.ada ce3409e.ada ce3410c.ada ce3410d.ada ce3410e.ada ce3411a.ada ce3411c.ada ce3412a.ada ce3413a.ada ce3413b.ada ce3413c.ada ce3602a.ada ce3602b.ada ce3602d.ada ce3603a.ada ce3604a.ada ce3604b.ada ce3605c.ada ce3704a.ada ce3704c.ada ce3704d.ada ce3704e.ada ce3704f.ada ce3704m.ada ce3704n.ada ce3704o.ada ce3705b.ada ce3705c.ada ce3705d.ada ce3705e.ada ce3706d.ada ce3706g.ada ce3804a.ada ce3804b.ada ce3804d.ada ce3804e.ada ce3804f.ada ce3804g.ada ce3804h.ada ce3804i.ada ce3804j.ada ce3804m.ada ce3804p.ada ce3805a.ada ce3805b.ada ce3806a.ada ce3806b.ada ce3806d.ada ce3806g.ada ce3902b.ada ce3904b.ada ce3905a.ada ce3905c.ada ce3905l.ada ce3906b.ada ce3906c.ada ee3203a.ada ee3204a.ada ee3412c.ada If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a text file with mode OUT_FILE (this is the appropriate behavior for an implementation which does not support text files other than standard input and output), then the tests contained in the following files should report NOT_APPLICABLE: ce2109c.ada ce3102a.ada ce3102b.tst ce3102f.ada ce3102g.ada ce3102h.ada ce3102j.ada ce3102k.ada ce3103a.ada ce3104a.ada ce3104b.ada ce3104c.ada ce3106a.ada ce3106b.ada ce3107b.ada ce3108a.ada ce3108b.ada ce3110a.ada ce3112c.ada ce3112d.ada ce3114a.ada ce3115a.ada ce3119a.tst ce3207a.ada ce3301a.ada ce3302a.ada ce3304a.tst ce3305a.ada ce3401a.ada ce3402a.ada ce3402c.ada ce3402d.ada ce3403a.ada ce3403b.ada ce3403c.ada ce3403e.ada ce3403f.ada ce3404b.ada ce3404c.ada ce3404d.ada ce3405a.ada ce3405c.ada ce3405d.ada ce3406a.ada ce3406b.ada ce3406c.ada ce3406d.ada ce3407a.ada ce3407b.ada ce3407c.ada ce3408a.ada ce3408b.ada ce3408c.ada ce3409a.ada ce3409c.ada ce3409d.ada ce3409e.ada ce3410a.ada ce3410c.ada ce3410d.ada ce3410e.ada ce3411a.ada ce3411c.ada ce3412a.ada ce3413a.ada ce3413b.ada ce3413c.ada ce3414a.ada ce3602a.ada ce3602b.ada ce3602c.ada ce3602d.ada ce3603a.ada ce3604a.ada ce3604b.ada ce3605a.ada ce3605b.ada ce3605c.ada ce3605d.ada ce3605e.ada ce3606a.ada ce3606b.ada ce3704a.ada ce3704b.ada ce3704c.ada ce3704d.ada ce3704e.ada ce3704f.ada ce3704m.ada ce3704n.ada ce3704o.ada ce3705a.ada ce3705b.ada ce3705c.ada ce3705d.ada ce3705e.ada ce3706d.ada ce3706f.ada ce3706g.ada ce3804a.ada ce3804b.ada ce3804c.ada ce3804d.ada ce3804e.ada ce3804f.ada ce3804g.ada ce3804h.ada ce3804i.ada ce3804j.ada ce3804m.ada ce3804o.ada ce3804p.ada ce3805a.ada ce3805b.ada ce3806a.ada ce3806b.ada ce3806d.ada ce3806e.ada ce3806g.ada ce3806h.ada ce3902b.ada ce3904a.ada ce3904b.ada ce3905a.ada ce3905b.ada ce3905c.ada ce3905l.ada ce3906a.ada ce3906b.ada ce3906c.ada ce3906e.ada ce3906f.ada cxaa003.a cxaa004.a cxaa005.a cxaa009.a cxaa010.a cxaa011.a cxaa012.a cxaa014.a cxaa016.a cxg1003.a ee3203a.ada ee3204a.ada ee3402b.ada ee3409f.ada ee3412c.ada If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a text file with mode APPEND_FILE (this is the appropriate behavior for an implementation which does not support text files other than standard input and output), then the tests contained in the following files should report NOT_APPLICABLE: cxaa001.a cxaa002.a cxaa006.a cxaa007.a cxaa008.a cxaa013.a cxaa015.a If RESET is not supported for text files, then the following tests should report NOT_APPLICABLE: ce3104c.ada ce3115a.ada If DELETE is not supported for text files, then the following tests should report NOT_APPLICABLE: ce3110a.ada ce3114a.ada If association of multiple internal text files (opened for reading and writing) to a single external file is not supported, then the test contained in the following file should report NOT_APPLICABLE: ce3115a.ada If there are no inappropriate values for either line length or page length, then the test contained in the following file should report NOT_APPLICABLE: ce3304a.tst If the value of COUNT’LAST is greater than 150000 when checking that PAGE raises LAYOUT_ERROR, then the following test should report NOT_APPLICABLE: ce3413b.ada E.2.7 Text Files (Supported Features) If create with mode IN_FILE is supported for text files, then the test contained in the following file should report NOT_APPLICABLE: ce3102e.ada If open with mode IN_FILE is supported for text files, then the test contained in the following file should report NOT_APPLICABLE: ce3102j.ada If open with mode OUT_FILE is supported for text files, then the test contained in the following file should report NOT_APPLICABLE: ce3102i.ada If open with mode OUT_FILE is supported for text files, then the following test should report NOT_APPLICABLE: ce3102k.ada If reset is supported for text files, then the test contained in the following file should report NOT_APPLICABLE: ce3102f.ada If delete for text files is supported, then the test contained in the following file should report NOT_APPLICABLE: ce3102g.ada E.2.8 Sequential Files (Non-supported Features) If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a sequential file (this is appropriate behavior for an implementation which does not support sequential files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102a.ada ce2102c.tst ce2102g.ada ce2102n.ada ce2102o.ada ce2102p.ada ce2102q.ada ce2102x.ada ce2103c.ada ce2104a.ada ce2104b.ada ce2106a.ada ce2108e.ada ce2108f.ada ce2109a.ada ce2110a.ada ce2111a.ada ce2111c.ada ce2111f.ada ce2111i.ada ce2120b.tst ce2201a.ada ce2201b.ada ce2201c.ada ce2201f.ada ce2201g.ada ce2201h.ada ce2201i.ada ce2201j.ada ce2201k.ada ce2201l.ada ce2201m.ada ce2201n.ada ce2203a.tst ce2204a.ada ce2204b.ada ce2204c.ada ce2204d.ada ce2205a.ada ce2206a.ada ce2208b.ada cxa8001.a cxa8002.a If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a sequential file with mode IN_FILE (this is appropriate behavior for an implementation which does not support sequential files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102g.ada ce2102o.ada ce2104a.ada ce2104b.ada ce2108f.ada ce2111a.ada ce2111c.ada ce2111f.ada ce2201a.ada ce2201b.ada ce2201c.ada ce2201f.ada ce2201g.ada ce2201h.ada ce2201i.ada ce2201j.ada ce2201k.ada ce2201l.ada ce2201m.ada ce2201n.ada ce2204a.ada ce2205a.ada ce2206a.ada ce2208b.ada If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a sequential file with mode OUT_FILE (this is appropriate behavior for an implementation which does not support sequential files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102a.ada ce2102c.tst ce2102g.ada ce2102n.ada ce2102o.ada ce2102p.ada ce2102q.ada ce2102x.ada ce2103c.ada ce2104a.ada ce2104b.ada ce2106a.ada ce2108e.ada ce2108f.ada ce2109a.ada ce2110a.ada ce2111a.ada ce2111c.ada ce2111f.ada ce2111i.ada ce2120b.tst ce2201a.ada ce2201b.ada ce2201c.ada ce2201f.ada ce2201g.ada ce2201h.ada ce2201i.ada ce2201j.ada ce2201k.ada ce2201l.ada ce2201m.ada ce2201n.ada ce2203a.tst ce2204a.ada ce2204b.ada ce2204c.ada ce2204d.ada ce2205a.ada ce2206a.ada ce2208b.ada cxa8001.a If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a sequential file with mode APPEND_FILE (this is appropriate behavior for an implementation which does not support sequential files), then the tests contained in the following files should report NOT_APPLICABLE: cxa8001.a If reset to mode OUT_FILE is not supported for sequential files, then the tests contained in the following files should report NOT_APPLICABLE: ce2111c.ada ce2111f.ada ce2111i.ada If reset to mode IN_FILE is not supported for sequential files, then the tests contained in the following files should report NOT_APPLICABLE: ce2111f.ada ce2111i.ada ce2204c.ada If delete for sequential files is not supported, then the tests contained in the following files should report NOT_APPLICABLE: ce2106a.ada ce2110a.ada If the implementation cannot restrict the file capacity for a sequential file, then the test contained in the following file should report NOT_APPLICABLE: ce2203a.tst E.2.9 Sequential Files (Supported Features) If create with mode IN_FILE is supported for sequential files, then the test contained in the following file should report NOT_APPLICABLE: ce2102d.ada If open with mode IN_FILE is supported for sequential files, then the test contained in the following file should report NOT_APPLICABLE: ce2102n.ada If reset to mode IN_FILE is supported for sequential files, then the test contained in the following file should report NOT_APPLICABLE: ce2102o.ada If create with mode OUT_FILE is supported, then the test contained in the following file should report NOT_APPLICABLE: ce2102e.ada If open with mode OUT_FILE is supported, then the test contained in the following file should report NOT_APPLICABLE: ce2102p.ada If reset to mode OUT_FILE is supported for sequential files, then the test contained in the following file should report NOT_APPLICABLE: ce2102q.ada E.2.10 Direct Files (Non-supported Features) If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a direct access file (this is appropriate behavior for an implementation which does not support direct access files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102b.ada ce2102h.tst ce2102k.ada ce2102r.ada ce2102s.ada ce2102t.ada ce2102u.ada ce2102v.ada ce2102w.ada ce2102y.ada ce2103d.ada ce2104c.ada ce2104d.ada ce2106b.ada ce2108g.ada ce2108h.ada ce2109b.ada ce2110c.ada ce2111b.ada ce2111e.ada ce2111g.ada ce2120a.tst ce2401a.ada ce2401b.ada ce2401c.ada ce2401e.ada ce2401f.ada ce2401h.ada ce2401i.ada ce2401j.ada ce2401k.ada ce2401l.ada ce2403a.tst ce2404a.ada ce2404b.ada ce2405b.ada ce2406a.ada ce2407a.ada ce2407b.ada ce2408a.ada ce2408b.ada ce2409a.ada ce2409b.ada ce2410a.ada ce2410b.ada ce2411a.ada cxa8003.a cxa9001.a cxa9002.a If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a direct access file with mode IN_FILE (this is appropriate behavior for an implementation which does not support direct access files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102k.ada ce2102u.ada ce2104c.ada ce2104d.ada ce2108h.ada ce2111b.ada ce2111e.ada ce2401a.ada ce2401b.ada ce2401c.ada ce2401e.ada ce2401f.ada ce2401h.ada ce2401i.ada ce2405b.ada ce2406a.ada ce2407a.ada ce2411a.ada If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a direct access file with mode OUT_FILE (this is appropriate behavior for an implementation which does not support direct access files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102b.ada ce2102k.ada ce2102r.ada ce2102w.ada ce2102y.ada ce2103d.ada ce2104c.ada ce2104d.ada ce2106b.ada ce2108g.ada ce2108h.ada ce2110c.ada ce2111b.ada ce2111e.ada ce2120a.tst ce2403a.tst ce2404a.ada ce2404b.ada ce2405b.ada ce2407a.ada ce2407b.ada ce2408a.ada ce2409b.ada ce2410a.ada ce2410b.ada ce2411a.ada cxa8003.a cxa9001.a cxa9002.a If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a direct access file with mode INOUT_FILE (this is appropriate behavior for an implementation which does not support direct access files), then the tests contained in the following files should report NOT_APPLICABLE: ce2102h.tst ce2102k.ada ce2102s.ada ce2102t.ada ce2102u.ada ce2102v.ada ce2109b.ada ce2111b.ada ce2111e.ada ce2111g.ada ce2401a.ada ce2401b.ada ce2401c.ada ce2401e.ada ce2401f.ada ce2401h.ada ce2401i.ada ce2401j.ada ce2401k.ada ce2401l.ada ce2405b.ada ce2406a.ada ce2408b.ada ce2409a.ada ce2411a.ada If delete for direct access files is not supported, then the following tests should report NOT_APPLICABLE: ce2106b.ada ce2110c.ada If the implementation cannot restrict the file capacity for a direct file, then the test contained in the following file should report NOT_APPLICABLE: ce2403a.tst E.2.11 Direct Files (Supported Features) If create with mode IN_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102i.ada If open with mode IN_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102t.ada If reset with mode IN_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102u.ada If create with mode OUT_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102j.ada If open with mode OUT_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102v.ada If reset with mode OUT_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102w.ada If create with mode INOUT_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102f.ada If open with mode INOUT_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102r.ada If reset to mode INOUT_FILE is supported for direct access files, then the test contained in the following file should report NOT_APPLICABLE: ce2102s.ada E.2.12 Stream Files (Non-supported Features) If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a stream file (this is the appropriate behavior for an implementation which does not support stream files), then the tests contained in the following files should report NOT_APPLICABLE: cxac001.a cxac002.a cxac003.a cxaca01.a cxaca02.a cxacb01.a cxacb02.a cxacc01.a E.2.13 Wide Text Files (Non-supported Features) If USE_ERROR or NAME_ERROR is raised by every attempt to create or open a wide text file (this is the appropriate behavior for an implementation which does not support wide text files), then the test contained in the following file should report NOT_APPLICABLE: cxab001.a E.2.14 File I/O Tests If sequential, text, direct access, stream, and wide text files are not supported, then the tests contained in the following files should report NOT_APPLICABLE: ce2102a.ada ce2102b.ada ce2102c.tst ce2102g.ada ce2102h.tst ce2102k.ada ce2102n.ada ce2102o.ada ce2102p.ada ce2102q.ada ce2102r.ada ce2102s.ada ce2102t.ada ce2102u.ada ce2102v.ada ce2102w.ada ce2102x.ada ce2102y.ada ce2103c.ada ce2103d.ada ce2104a.ada ce2104b.ada ce2104c.ada ce2104d.ada ce2106a.ada ce2106b.ada ce2108e.ada ce2108f.ada ce2108g.ada ce2108h.ada ce2109a.ada ce2109b.ada ce2109c.ada ce2110a.ada ce2110c.ada ce2111a.ada ce2111b.ada ce2111c.ada ce2111e.ada ce2111f.ada ce2111g.ada ce2111i.ada ce2120a.tst ce2120b.tst ce2201a.ada ce2201b.ada ce2201c.ada ce2201f.ada ce2201g.ada ce2201h.ada ce2201i.ada ce2201j.ada ce2201k.ada ce2201l.ada ce2201m.ada ce2201n.ada ce2203a.tst ce2204a.ada ce2204b.ada ce2204c.ada ce2204d.ada ce2205a.ada ce2206a.ada ce2208b.ada ce2401a.ada ce2401b.ada ce2401c.ada ce2401e.ada ce2401f.ada ce2401h.ada ce2401i.ada ce2401j.ada ce2401k.ada ce2401l.ada ce2403a.tst ce2404a.ada ce2404b.ada ce2405b.ada ce2406a.ada ce2407a.ada ce2407b.ada ce2408a.ada ce2408b.ada ce2409a.ada ce2409b.ada ce2410a.ada ce2410b.ada ce2411a.ada ce3102a.ada ce3102b.tst ce3102f.ada ce3102g.ada ce3102h.ada ce3102j.ada ce3102k.ada ce3103a.ada ce3104a.ada ce3104b.ada ce3104c.ada ce3106a.ada ce3106b.ada ce3107b.ada ce3108a.ada ce3108b.ada ce3110a.ada ce3112c.ada ce3112d.ada ce3114a.ada ce3115a.ada ce3119a.tst ce3207a.ada ce3301a.ada ce3302a.ada ce3304a.tst ce3305a.ada ce3401a.ada ce3402a.ada ce3402c.ada ce3402d.ada ce3403a.ada ce3403b.ada ce3403c.ada ce3403e.ada ce3403f.ada ce3404b.ada ce3404c.ada ce3404d.ada ce3405a.ada ce3405c.ada ce3405d.ada ce3406a.ada ce3406b.ada ce3406c.ada ce3406d.ada ce3407a.ada ce3407b.ada ce3407c.ada ce3408a.ada ce3408b.ada ce3408c.ada ce3409a.ada ce3409c.ada ce3409d.ada ce3409e.ada ce3410a.ada ce3410c.ada ce3410d.ada ce3410e.ada ce3411a.ada ce3411c.ada ce3412a.ada ce3413a.ada ce3413b.ada ce3413c.ada ce3414a.ada ce3602a.ada ce3602b.ada ce3602c.ada ce3602d.ada ce3603a.ada ce3604a.ada ce3604b.ada ce3605a.ada ce3605b.ada ce3605c.ada ce3605d.ada ce3605e.ada ce3606a.ada ce3606b.ada ce3704a.ada ce3704b.ada ce3704c.ada ce3704d.ada ce3704e.ada ce3704f.ada ce3704m.ada ce3704n.ada ce3704o.ada ce3705a.ada ce3705b.ada ce3705c.ada ce3705d.ada ce3705e.ada ce3706d.ada ce3706f.ada ce3706g.ada ce3804a.ada ce3804b.ada ce3804c.ada ce3804d.ada ce3804e.ada ce3804f.ada ce3804g.ada ce3804h.ada ce3804i.ada ce3804j.ada ce3804m.ada ce3804o.ada ce3804p.ada ce3805a.ada ce3805b.ada ce3806a.ada ce3806b.ada ce3806d.ada ce3806e.ada ce3806g.ada ce3806h.ada ce3902b.ada ce3904a.ada ce3904b.ada ce3905a.ada ce3905b.ada ce3905c.ada ce3905l.ada ce3906a.ada ce3906b.ada ce3906c.ada ce3906e.ada ce3906f.ada cxa8001.a cxa8002.a cxa8003.a cxa9001.a cxa9002.a cxaa001.a cxaa002.a cxaa003.a cxaa004.a cxaa005.a cxaa006.a cxaa007.a cxaa008.a cxaa009.a cxaa010.a cxaa011.a cxaa012.a cxaa013.a cxaa014.a cxaa015.a cxaa016.a cxab001.a cxac001.a cxac002.a cxac003.a cxaca01.a cxaca02.a cxacb01.a cxacb02.a cxacc01.a cxg1003.a ee3203a.ada ee3204a.ada ee3402b.ada ee3409f.ada ee3412c.ada ACVC 2.1 User's Guide 21 March 1997 53