aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/ada/acats/tests/cc/cc1224a.ada
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/ada/acats/tests/cc/cc1224a.ada')
-rw-r--r--gcc-4.9/gcc/testsuite/ada/acats/tests/cc/cc1224a.ada558
1 files changed, 558 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/ada/acats/tests/cc/cc1224a.ada b/gcc-4.9/gcc/testsuite/ada/acats/tests/cc/cc1224a.ada
new file mode 100644
index 000000000..c419fb7e4
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/ada/acats/tests/cc/cc1224a.ada
@@ -0,0 +1,558 @@
+-- CC1224A.ADA
+
+-- Grant of Unlimited Rights
+--
+-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
+-- F08630-91-C-0015, and DCA100-97-D-0025, 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.
+--*
+-- OBJECTIVE:
+-- FOR ARRAY TYPES WITH A NONLIMITED COMPONENT TYPE (OF A FORMAL
+-- AND NONFORMAL GENERIC TYPE), CHECK THAT THE FOLLOWING OPERATIONS
+-- ARE IMPLICITY DECLARED AND ARE, THEREFORE, AVAILABLE WITHIN THE
+-- GENERIC UNIT: ASSIGNMENT, THE OPERATION ASSOCIATED WITH
+-- AGGREGATE NOTATION, MEMBERSHIP TESTS, THE OPERATION ASSOCIATED
+-- WITH INDEXED COMPONENTS, QUALIFICATION, EXPLICIT CONVERSION,
+-- 'SIZE, 'ADDRESS, 'FIRST, 'FIRST (N), 'LAST, 'LAST (N),
+-- 'RANGE, 'RANGE (N), 'LENGTH, 'LENGTH (N).
+
+-- HISTORY:
+-- R.WILLIAMS 10/6/86
+-- EDWARD V. BERARD 8/10/90 ADDED CHECKS FOR MULTI-DIMENSIONAL
+-- ARRAYS
+-- LDC 10/10/90 CHANGED DECLARATIONS OF AD1 - AD6 TO PROCEDURE
+-- CALLS OF FA1 - FA6 TO ADDRESS_CHECK AS SUGGESTED
+-- BY THE CRG.
+-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
+
+WITH SYSTEM ;
+WITH REPORT ;
+
+PROCEDURE CC1224A IS
+
+ SHORT_START : CONSTANT := -10 ;
+ SHORT_END : CONSTANT := 10 ;
+
+ TYPE SHORT_RANGE IS RANGE SHORT_START .. SHORT_END ;
+ SHORT_LENGTH : CONSTANT NATURAL := (SHORT_END - SHORT_START + 1) ;
+
+ MEDIUM_START : CONSTANT := 1 ;
+ MEDIUM_END : CONSTANT := 15 ;
+
+ TYPE MEDIUM_RANGE IS RANGE MEDIUM_START .. MEDIUM_END ;
+ MEDIUM_LENGTH : CONSTANT NATURAL :=
+ (MEDIUM_END - MEDIUM_START + 1) ;
+
+ TYPE MONTH_TYPE IS (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,
+ SEP, OCT, NOV, DEC) ;
+ TYPE DAY_TYPE IS RANGE 1 .. 31 ;
+ TYPE YEAR_TYPE IS RANGE 1904 .. 2050 ;
+ TYPE DATE IS RECORD
+ MONTH : MONTH_TYPE ;
+ DAY : DAY_TYPE ;
+ YEAR : YEAR_TYPE ;
+ END RECORD ;
+
+ TODAY : DATE := (AUG, 10, 1990) ;
+
+ TYPE FIRST_TEMPLATE IS ARRAY (SHORT_RANGE RANGE <>,
+ MEDIUM_RANGE RANGE <>) OF DATE ;
+
+ TYPE SECOND_TEMPLATE IS ARRAY (SHORT_RANGE, MEDIUM_RANGE)
+ OF DATE ;
+
+ FIRST_ARRAY : FIRST_TEMPLATE (-10 .. 10, 6 .. 10) ;
+ SECOND_ARRAY : FIRST_TEMPLATE (0 .. 7, 1 .. 15) ;
+ THIRD_ARRAY : SECOND_TEMPLATE ;
+ FOURTH_ARRAY : SECOND_TEMPLATE ;
+
+ SUBTYPE SUBINT IS INTEGER RANGE REPORT.IDENT_INT (1) ..
+ REPORT.IDENT_INT (6);
+
+ TYPE ARRA IS ARRAY (SUBINT) OF SUBINT;
+ A1 : ARRA := (REPORT.IDENT_INT (1) .. REPORT.IDENT_INT (6) => 1);
+ A2 : ARRA := (A1'RANGE => 2);
+
+ TYPE ARRB IS ARRAY (SUBINT RANGE <>) OF DATE ;
+ A3 : ARRB (1 .. 6) :=
+ (REPORT.IDENT_INT (1) .. REPORT.IDENT_INT (6) => TODAY);
+
+ TYPE ARRC IS ARRAY (SUBINT RANGE <>, SUBINT RANGE <>) OF SUBINT;
+ A4 : CONSTANT ARRC := (1 .. 6 => (1 .. 6 => 4));
+
+ TYPE ARRD IS ARRAY (SUBINT, SUBINT) OF SUBINT;
+ A5 : ARRD := (A4'RANGE (1) => (A4'RANGE (2) => 5));
+
+ TYPE ARRE IS ARRAY (SUBINT) OF DATE ;
+ A6 : ARRE := (A1'RANGE => TODAY);
+
+ FUNCTION "=" (LEFT : IN SYSTEM.ADDRESS ;
+ RIGHT : IN SYSTEM.ADDRESS ) RETURN BOOLEAN
+ RENAMES SYSTEM."=" ;
+
+ GENERIC
+
+ TYPE T1 IS (<>);
+ TYPE T2 IS PRIVATE;
+ X2 : T2;
+
+ TYPE FARR1 IS ARRAY (SUBINT) OF T1;
+ FA1 : FARR1;
+
+ TYPE FARR2 IS ARRAY (SUBINT) OF SUBINT;
+ FA2 : FARR2;
+
+ TYPE FARR3 IS ARRAY (SUBINT RANGE <>) OF T2;
+ FA3 : FARR3;
+
+ TYPE FARR4 IS ARRAY (SUBINT RANGE <>, SUBINT RANGE <>) OF T1;
+ FA4 : FARR4;
+
+ TYPE FARR5 IS ARRAY (SUBINT, SUBINT) OF SUBINT;
+ FA5 : FARR5;
+
+ TYPE FARR6 IS ARRAY (T1) OF T2;
+ FA6 : FARR6;
+
+ TYPE FARR7 IS ARRAY (T1) OF T2;
+ FA7 : FARR7;
+
+ PROCEDURE P ;
+
+ GENERIC
+
+ TYPE FIRST_INDEX IS (<>) ;
+ TYPE SECOND_INDEX IS (<>) ;
+ TYPE UNCONSTRAINED_ARRAY IS ARRAY
+ (FIRST_INDEX RANGE <>, SECOND_INDEX RANGE <>) OF DATE ;
+
+ PROCEDURE TEST_PROCEDURE (FIRST : IN UNCONSTRAINED_ARRAY ;
+ FFIFS : IN FIRST_INDEX ;
+ FFILS : IN FIRST_INDEX ;
+ FSIFS : IN SECOND_INDEX ;
+ FSILS : IN SECOND_INDEX ;
+ FFLEN : IN NATURAL ;
+ FSLEN : IN NATURAL ;
+ FFIRT : IN FIRST_INDEX ;
+ FSIRT : IN SECOND_INDEX ;
+ SECOND : IN UNCONSTRAINED_ARRAY ;
+ SFIFS : IN FIRST_INDEX ;
+ SFILS : IN FIRST_INDEX ;
+ SSIFS : IN SECOND_INDEX ;
+ SSILS : IN SECOND_INDEX ;
+ SFLEN : IN NATURAL ;
+ SSLEN : IN NATURAL ;
+ SFIRT : IN FIRST_INDEX ;
+ SSIRT : IN SECOND_INDEX ;
+ REMARKS : IN STRING) ;
+ GENERIC
+
+ TYPE FIRST_INDEX IS (<>) ;
+ TYPE SECOND_INDEX IS (<>) ;
+ TYPE COMPONENT_TYPE IS PRIVATE ;
+ TYPE CONSTRAINED_ARRAY IS ARRAY
+ (FIRST_INDEX,SECOND_INDEX) OF COMPONENT_TYPE ;
+
+ PROCEDURE CTEST_PROCEDURE (FIRST : IN CONSTRAINED_ARRAY ;
+ FFIRT : IN FIRST_INDEX ;
+ FSIRT : IN SECOND_INDEX ;
+ SECOND : IN CONSTRAINED_ARRAY ;
+ SFIRT : IN FIRST_INDEX ;
+ SSIRT : IN SECOND_INDEX ;
+ REMARKS : IN STRING) ;
+
+
+ PROCEDURE P IS
+
+ IN1 : INTEGER := FA1'SIZE;
+ IN2 : INTEGER := FA2'SIZE;
+ IN3 : INTEGER := FA3'SIZE;
+ IN4 : INTEGER := FA4'SIZE;
+ IN5 : INTEGER := FA5'SIZE;
+ IN6 : INTEGER := FA6'SIZE;
+
+ B1 : FARR1;
+
+ B2 : FARR2;
+
+ SUBTYPE SARR3 IS FARR3 (FA3'RANGE);
+ B3 : SARR3;
+
+ SUBTYPE SARR4 IS FARR4 (FA4'RANGE (1), FA4'RANGE (2));
+ B4 : SARR4;
+
+ B5 : FARR5;
+
+ B6 : FARR6 ;
+
+ PROCEDURE ADDRESS_CHECK(ADDRESS : SYSTEM.ADDRESS) IS
+
+ BEGIN
+ IF REPORT.EQUAL(1, REPORT.IDENT_INT(2)) THEN
+ REPORT.COMMENT("DON'T OPTIMIZE OUT ADDRESS_CHECK");
+ END IF;
+ END ADDRESS_CHECK;
+
+ BEGIN -- P
+
+ ADDRESS_CHECK(FA1'ADDRESS);
+ ADDRESS_CHECK(FA2'ADDRESS);
+ ADDRESS_CHECK(FA3'ADDRESS);
+ ADDRESS_CHECK(FA4'ADDRESS);
+ ADDRESS_CHECK(FA5'ADDRESS);
+ ADDRESS_CHECK(FA6'ADDRESS);
+
+ B1 := FA1;
+
+ IF B1 /= FARR1 (FA1) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 1" );
+ END IF;
+
+ B2 := FA2;
+
+ IF B2 /= FARR2 (A2) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 2" );
+ END IF;
+
+ B3 := FA3;
+
+ IF B3 /= FARR3 (FA3) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 3" );
+ END IF;
+
+ B4 := FA4;
+
+ IF B4 /= FARR4 (FA4) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 4" );
+ END IF;
+
+ B5 := FA5;
+
+ IF B5 /= FARR5 (A5) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 5" );
+ END IF;
+
+ B6 := FA6;
+
+ IF B6 /= FARR6 (FA6) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 6" );
+ END IF;
+
+ IF FA7 /= FARR7 (FA6) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 7" );
+ END IF;
+
+ B1 := FARR1'(FA1'RANGE => T1'VAL (1));
+
+ IF B1 (1) /= FA1 (1) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 8" );
+ END IF;
+
+ B1 := FARR1'(1 => T1'VAL (1), 2 => T1'VAL (1),
+ 3 .. 6 => T1'VAL (2));
+
+ IF B1 (1) /= FA1 (1) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 9" );
+ END IF;
+
+ B2 := FARR2'(FA2'RANGE => 2);
+
+ IF B2 (2) /= FA2 (2) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 10" );
+ END IF;
+
+ B3 := FARR3'(1|2|3 => X2, 4|5|6 => X2);
+
+ IF B3 (3) /= FA3 (3) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 11" );
+ END IF;
+
+ B4 := FARR4'(FA5'RANGE (1) => (FA5'RANGE (2) => T1'VAL (4)));
+
+ IF B4 (4, 4) /= FA4 (4, 4) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 12" );
+ END IF;
+
+ B5 := FARR5'(REPORT.IDENT_INT (1) ..
+ REPORT.IDENT_INT (6) => (1 .. 6 => 5));
+
+ IF B5 (5, 5) /= FA5 (5, 5) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 13" );
+ END IF;
+
+ B6 := FARR6'(FA6'RANGE => X2);
+
+ IF B6 (T1'FIRST) /= FA6 (T1'FIRST) THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 14" );
+ END IF;
+
+ IF B1 NOT IN FARR1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 15" );
+ END IF;
+
+ IF FA2 NOT IN FARR2 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 16" );
+ END IF;
+
+ IF FA3 NOT IN FARR3 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 17" );
+ END IF;
+
+ IF B4 NOT IN FARR4 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 18" );
+ END IF;
+
+ IF B5 NOT IN FARR5 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 19" );
+ END IF;
+
+ IF FA6 NOT IN FARR6 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 20" );
+ END IF;
+
+ IF FA1'LENGTH /= FA1'LAST - FA1'FIRST + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 27" );
+ END IF;
+
+ IF FA2'LENGTH /= FA2'LAST - FA2'FIRST + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 28" );
+ END IF;
+
+ IF FA3'LENGTH /= FA3'LAST - FA3'FIRST + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 29" );
+ END IF;
+
+ IF FA4'LENGTH /= FA4'LAST - FA4'FIRST + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 30" );
+ END IF;
+
+ IF FA4'LENGTH (2) /= FA4'LAST (2) - FA4'FIRST (2) + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 31" );
+ END IF;
+
+ IF FA5'LENGTH /= FA5'LAST - FA5'FIRST + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 32" );
+ END IF;
+
+ IF FA5'LENGTH (2) /= FA5'LAST (2) - FA5'FIRST (2) + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 33" );
+ END IF;
+
+ IF FA6'LENGTH /= T1'POS (FA6'LAST) -
+ T1'POS (FA6'FIRST) + 1 THEN
+ REPORT.FAILED ("INCORRECT RESULTS - 34" );
+ END IF;
+
+ END P ;
+
+ PROCEDURE TEST_PROCEDURE (FIRST : IN UNCONSTRAINED_ARRAY ;
+ FFIFS : IN FIRST_INDEX ;
+ FFILS : IN FIRST_INDEX ;
+ FSIFS : IN SECOND_INDEX ;
+ FSILS : IN SECOND_INDEX ;
+ FFLEN : IN NATURAL ;
+ FSLEN : IN NATURAL ;
+ FFIRT : IN FIRST_INDEX ;
+ FSIRT : IN SECOND_INDEX ;
+ SECOND : IN UNCONSTRAINED_ARRAY ;
+ SFIFS : IN FIRST_INDEX ;
+ SFILS : IN FIRST_INDEX ;
+ SSIFS : IN SECOND_INDEX ;
+ SSILS : IN SECOND_INDEX ;
+ SFLEN : IN NATURAL ;
+ SSLEN : IN NATURAL ;
+ SFIRT : IN FIRST_INDEX ;
+ SSIRT : IN SECOND_INDEX ;
+ REMARKS : IN STRING) IS
+
+ BEGIN -- TEST_PROCEDURE
+
+ IF (FIRST'FIRST /= FFIFS) OR
+ (FIRST'FIRST (1) /= FFIFS) OR
+ (FIRST'FIRST (2) /= FSIFS) OR
+ (SECOND'FIRST /= SFIFS) OR
+ (SECOND'FIRST (1) /= SFIFS) OR
+ (SECOND'FIRST (2) /= SSIFS) THEN
+ REPORT.FAILED ("PROBLEMS WITH 'FIRST. " & REMARKS) ;
+ END IF ;
+
+ IF (FIRST'LAST /= FFILS) OR
+ (FIRST'LAST (1) /= FFILS) OR
+ (FIRST'LAST (2) /= FSILS) OR
+ (SECOND'LAST /= SFILS) OR
+ (SECOND'LAST (1) /= SFILS) OR
+ (SECOND'LAST (2) /= SSILS) THEN
+ REPORT.FAILED ("PROBLEMS WITH 'LAST. " & REMARKS) ;
+ END IF ;
+
+ IF (FIRST'LENGTH /= FFLEN) OR
+ (FIRST'LENGTH (1) /= FFLEN) OR
+ (FIRST'LENGTH (2) /= FSLEN) OR
+ (SECOND'LENGTH /= SFLEN) OR
+ (SECOND'LENGTH (1) /= SFLEN) OR
+ (SECOND'LENGTH (2) /= SSLEN) THEN
+ REPORT.FAILED ("PROBLEMS WITH 'LENGTH. " & REMARKS) ;
+ END IF ;
+
+ IF (FFIRT NOT IN FIRST'RANGE (1)) OR
+ (FFIRT NOT IN FIRST'RANGE) OR
+ (SFIRT NOT IN SECOND'RANGE (1)) OR
+ (SFIRT NOT IN SECOND'RANGE) OR
+ (FSIRT NOT IN FIRST'RANGE (2)) OR
+ (SSIRT NOT IN SECOND'RANGE (2)) THEN
+ REPORT.FAILED ("INCORRECT HANDLING OF 'RANGE ATTRIBUE. " &
+ REMARKS) ;
+ END IF ;
+
+ END TEST_PROCEDURE ;
+
+ PROCEDURE CTEST_PROCEDURE (FIRST : IN CONSTRAINED_ARRAY ;
+ FFIRT : IN FIRST_INDEX ;
+ FSIRT : IN SECOND_INDEX ;
+ SECOND : IN CONSTRAINED_ARRAY ;
+ SFIRT : IN FIRST_INDEX ;
+ SSIRT : IN SECOND_INDEX ;
+ REMARKS : IN STRING) IS
+
+ BEGIN -- CTEST_PROCEDURE
+
+ IF (FIRST'FIRST /= FIRST_INDEX'FIRST) OR
+ (FIRST'FIRST (1) /= FIRST_INDEX'FIRST) OR
+ (FIRST'FIRST (2) /= SECOND_INDEX'FIRST) OR
+ (SECOND'FIRST /= FIRST_INDEX'FIRST) OR
+ (SECOND'FIRST (1) /= FIRST_INDEX'FIRST) OR
+ (SECOND'FIRST (2) /= SECOND_INDEX'FIRST) THEN
+ REPORT.FAILED ("PROBLEMS WITH 'FIRST. " & REMARKS) ;
+ END IF ;
+
+ IF (FIRST'LAST /= FIRST_INDEX'LAST) OR
+ (FIRST'LAST (1) /= FIRST_INDEX'LAST) OR
+ (FIRST'LAST (2) /= SECOND_INDEX'LAST) OR
+ (SECOND'LAST /= FIRST_INDEX'LAST) OR
+ (SECOND'LAST (1) /= FIRST_INDEX'LAST) OR
+ (SECOND'LAST (2) /= SECOND_INDEX'LAST) THEN
+ REPORT.FAILED ("PROBLEMS WITH 'LAST. " & REMARKS) ;
+ END IF ;
+
+ IF (FIRST'LENGTH /=
+ FIRST_INDEX'POS (FIRST_INDEX'LAST)
+ - FIRST_INDEX'POS (FIRST_INDEX'FIRST) + 1) OR
+ (FIRST'LENGTH (1) /=
+ FIRST_INDEX'POS (FIRST_INDEX'LAST)
+ - FIRST_INDEX'POS (FIRST_INDEX'FIRST) + 1) OR
+ (FIRST'LENGTH (2) /=
+ SECOND_INDEX'POS (SECOND_INDEX'LAST)
+ - SECOND_INDEX'POS (SECOND_INDEX'FIRST) + 1) OR
+ (SECOND'LENGTH /=
+ FIRST_INDEX'POS (FIRST_INDEX'LAST)
+ - FIRST_INDEX'POS (FIRST_INDEX'FIRST) + 1) OR
+ (SECOND'LENGTH (1) /=
+ FIRST_INDEX'POS (FIRST_INDEX'LAST)
+ - FIRST_INDEX'POS (FIRST_INDEX'FIRST) + 1) OR
+ (SECOND'LENGTH (2) /=
+ SECOND_INDEX'POS (SECOND_INDEX'LAST)
+ - SECOND_INDEX'POS (SECOND_INDEX'FIRST) + 1) THEN
+ REPORT.FAILED ("PROBLEMS WITH 'LENGTH. " & REMARKS) ;
+ END IF ;
+
+ IF (FFIRT NOT IN FIRST'RANGE (1)) OR
+ (FFIRT NOT IN FIRST'RANGE) OR
+ (SFIRT NOT IN SECOND'RANGE (1)) OR
+ (SFIRT NOT IN SECOND'RANGE) OR
+ (FSIRT NOT IN FIRST'RANGE (2)) OR
+ (SSIRT NOT IN SECOND'RANGE (2)) THEN
+ REPORT.FAILED ("INCORRECT HANDLING OF 'RANGE ATTRIBUE. " &
+ REMARKS) ;
+ END IF ;
+
+ IF CONSTRAINED_ARRAY'SIZE <= 0 THEN
+ REPORT.FAILED ("PROBLEMS WITH THE 'SIZE ATTRIBUTE. " &
+ REMARKS) ;
+ END IF ;
+
+ IF FIRST'ADDRESS = SECOND'ADDRESS THEN
+ REPORT.FAILED ("PROBLEMS WITH THE 'ADDRESS ATTRIBUTE. " &
+ REMARKS) ;
+ END IF ;
+
+ END CTEST_PROCEDURE ;
+
+ PROCEDURE FIRST_TEST_PROCEDURE IS NEW TEST_PROCEDURE
+ (FIRST_INDEX => SHORT_RANGE,
+ SECOND_INDEX => MEDIUM_RANGE,
+ UNCONSTRAINED_ARRAY => FIRST_TEMPLATE) ;
+
+ PROCEDURE NEW_CTEST_PROCEDURE IS NEW CTEST_PROCEDURE
+ (FIRST_INDEX => SHORT_RANGE,
+ SECOND_INDEX => MEDIUM_RANGE,
+ COMPONENT_TYPE => DATE,
+ CONSTRAINED_ARRAY => SECOND_TEMPLATE) ;
+
+ PROCEDURE NP IS NEW P (SUBINT, DATE, TODAY, ARRA, A1,
+ ARRA, A2, ARRB, A3, ARRC, A4, ARRD,
+ A5, ARRE, A6, ARRE, A6);
+
+BEGIN -- CC1224A
+
+ REPORT.TEST ("CC1224A", "FOR ARRAY TYPES WITH A NONLIMITED " &
+ "COMPONENT TYPE (OF A FORMAL AND NONFORMAL GENERIC " &
+ "TYPE), CHECK THAT THE FOLLOWING OPERATIONS " &
+ "ARE IMPLICITY DECLARED AND ARE, THEREFORE, " &
+ "AVAILABLE WITHIN THE GENERIC -- UNIT: " &
+ "ASSIGNMENT, THE OPERATION ASSOCIATED WITH " &
+ "AGGREGATE NOTATION, MEMBERSHIP TESTS, THE " &
+ "OPERATION ASSOCIATED WITH INDEXED " &
+ "COMPONENTS, QUALIFICATION, EXPLICIT " &
+ "CONVERSION, 'SIZE, 'ADDRESS, 'FIRST, " &
+ "'FIRST (N), 'LAST, 'LAST (N), 'RANGE, " &
+ "'RANGE (N), 'LENGTH, 'LENGTH (N)" ) ;
+
+ NP ;
+
+ FIRST_TEST_PROCEDURE (FIRST => FIRST_ARRAY,
+ FFIFS => -10,
+ FFILS => 10,
+ FSIFS => 6,
+ FSILS => 10,
+ FFLEN => 21,
+ FSLEN => 5,
+ FFIRT => 0,
+ FSIRT => 8,
+ SECOND => SECOND_ARRAY,
+ SFIFS => 0,
+ SFILS => 7,
+ SSIFS => 1,
+ SSILS => 15,
+ SFLEN => 8,
+ SSLEN => 15,
+ SFIRT => 5,
+ SSIRT => 13,
+ REMARKS => "FIRST_TEST_PROCEDURE") ;
+
+ NEW_CTEST_PROCEDURE (FIRST => THIRD_ARRAY,
+ FFIRT => -5,
+ FSIRT => 11,
+ SECOND => FOURTH_ARRAY,
+ SFIRT => 0,
+ SSIRT => 14,
+ REMARKS => "NEW_CTEST_PROCEDURE") ;
+
+ REPORT.RESULT ;
+
+END CC1224A;