-- A54B02A.ADA
|
-- A54B02A.ADA
|
|
|
-- Grant of Unlimited Rights
|
-- Grant of Unlimited Rights
|
--
|
--
|
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
|
-- 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
|
-- 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 in the software and documentation contained herein.
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- this public release, the Government intends to confer upon all
|
-- this public release, the Government intends to confer upon all
|
-- recipients unlimited rights equal to those held by the Government.
|
-- recipients unlimited rights equal to those held by the Government.
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- released technical data and computer software in whole or in part, in
|
-- 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
|
-- any manner and for any purpose whatsoever, and to have or permit others
|
-- to do so.
|
-- to do so.
|
--
|
--
|
-- DISCLAIMER
|
-- DISCLAIMER
|
--
|
--
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
--*
|
--*
|
-- CHECK THAT IF A CASE EXPRESSION IS A VARIABLE, CONSTANT, TYPE
|
-- CHECK THAT IF A CASE EXPRESSION IS A VARIABLE, CONSTANT, TYPE
|
-- CONVERSION, ATTRIBUTE (IN PARTICULAR 'FIRST AND 'LAST),
|
-- CONVERSION, ATTRIBUTE (IN PARTICULAR 'FIRST AND 'LAST),
|
-- FUNCTION INVOCATION, QUALIFIED EXPRESSION, OR A PARENTHESIZED
|
-- FUNCTION INVOCATION, QUALIFIED EXPRESSION, OR A PARENTHESIZED
|
-- EXPRESSION HAVING ONE OF THESE FORMS, AND THE SUBTYPE OF THE
|
-- EXPRESSION HAVING ONE OF THESE FORMS, AND THE SUBTYPE OF THE
|
-- EXPRESSION IS NON-STATIC, AN 'OTHERS' CAN BE OMITTED IF ALL
|
-- EXPRESSION IS NON-STATIC, AN 'OTHERS' CAN BE OMITTED IF ALL
|
-- VALUES IN THE BASE TYPE'S RANGE ARE COVERED.
|
-- VALUES IN THE BASE TYPE'S RANGE ARE COVERED.
|
|
|
-- RM 01/27/80
|
-- RM 01/27/80
|
-- SPS 10/26/82
|
-- SPS 10/26/82
|
-- SPS 2/2/83
|
-- SPS 2/2/83
|
-- PWN 11/30/94 SUBTYPE QUALIFIED LITERALS FOR ADA 9X.
|
-- PWN 11/30/94 SUBTYPE QUALIFIED LITERALS FOR ADA 9X.
|
|
|
WITH REPORT ;
|
WITH REPORT ;
|
PROCEDURE A54B02A IS
|
PROCEDURE A54B02A IS
|
|
|
USE REPORT ;
|
USE REPORT ;
|
|
|
BEGIN
|
BEGIN
|
|
|
TEST("A54B02A" , "CHECK THAT IF THE" &
|
TEST("A54B02A" , "CHECK THAT IF THE" &
|
" SUBTYPE OF A CASE EXPRESSION IS NON-STATIC," &
|
" SUBTYPE OF A CASE EXPRESSION IS NON-STATIC," &
|
" AN 'OTHERS' CAN BE OMITTED IF ALL" &
|
" AN 'OTHERS' CAN BE OMITTED IF ALL" &
|
" VALUES IN THE BASE TYPE'S RANGE ARE COVERED" );
|
" VALUES IN THE BASE TYPE'S RANGE ARE COVERED" );
|
|
|
-- THE TEST CASES APPEAR IN THE FOLLOWING ORDER:
|
-- THE TEST CASES APPEAR IN THE FOLLOWING ORDER:
|
--
|
--
|
-- (A) VARIABLES (INTEGER , BOOLEAN)
|
-- (A) VARIABLES (INTEGER , BOOLEAN)
|
-- (B) CONSTANTS (INTEGER, BOOLEAN)
|
-- (B) CONSTANTS (INTEGER, BOOLEAN)
|
-- (C) ATTRIBUTES ('FIRST, 'LAST)
|
-- (C) ATTRIBUTES ('FIRST, 'LAST)
|
-- (D) FUNCTION CALLS
|
-- (D) FUNCTION CALLS
|
-- (E) QUALIFIED EXPRESSIONS
|
-- (E) QUALIFIED EXPRESSIONS
|
-- (F) TYPE CONVERSIONS
|
-- (F) TYPE CONVERSIONS
|
-- (G) PARENTHESIZED EXPRESSIONS OF THE ABOVE KINDS
|
-- (G) PARENTHESIZED EXPRESSIONS OF THE ABOVE KINDS
|
|
|
|
|
DECLARE -- NON-STATIC RANGES
|
DECLARE -- NON-STATIC RANGES
|
|
|
SUBTYPE STAT IS INTEGER RANGE 1..50 ;
|
SUBTYPE STAT IS INTEGER RANGE 1..50 ;
|
SUBTYPE DYN IS STAT RANGE 1..IDENT_INT( 5 ) ;
|
SUBTYPE DYN IS STAT RANGE 1..IDENT_INT( 5 ) ;
|
I : STAT RANGE 1..IDENT_INT( 5 );
|
I : STAT RANGE 1..IDENT_INT( 5 );
|
J : DYN ;
|
J : DYN ;
|
SUBTYPE DYNCHAR IS
|
SUBTYPE DYNCHAR IS
|
CHARACTER RANGE ASCII.NUL .. IDENT_CHAR('Q');
|
CHARACTER RANGE ASCII.NUL .. IDENT_CHAR('Q');
|
SUBTYPE STATCHAR IS
|
SUBTYPE STATCHAR IS
|
DYNCHAR RANGE 'A' .. 'C' ;
|
DYNCHAR RANGE 'A' .. 'C' ;
|
CHAR: DYNCHAR := 'F' ;
|
CHAR: DYNCHAR := 'F' ;
|
TYPE ENUMERATION IS ( A,B,C,D,E,F,G,H,K,L,M,N );
|
TYPE ENUMERATION IS ( A,B,C,D,E,F,G,H,K,L,M,N );
|
SUBTYPE STATENUM IS
|
SUBTYPE STATENUM IS
|
ENUMERATION RANGE A .. L ;
|
ENUMERATION RANGE A .. L ;
|
SUBTYPE DYNENUM IS
|
SUBTYPE DYNENUM IS
|
STATENUM RANGE A .. ENUMERATION'VAL(IDENT_INT(5));
|
STATENUM RANGE A .. ENUMERATION'VAL(IDENT_INT(5));
|
ENUM: DYNENUM := B ;
|
ENUM: DYNENUM := B ;
|
CONS : CONSTANT DYN := 3;
|
CONS : CONSTANT DYN := 3;
|
|
|
FUNCTION FF RETURN DYN IS
|
FUNCTION FF RETURN DYN IS
|
BEGIN
|
BEGIN
|
RETURN 2 ;
|
RETURN 2 ;
|
END FF ;
|
END FF ;
|
|
|
BEGIN
|
BEGIN
|
|
|
I := IDENT_INT( 2 );
|
I := IDENT_INT( 2 );
|
J := IDENT_INT( 2 );
|
J := IDENT_INT( 2 );
|
|
|
CASE I IS
|
CASE I IS
|
WHEN 1 | 3 | 5 => NULL ;
|
WHEN 1 | 3 | 5 => NULL ;
|
WHEN 2 | 4 => NULL ;
|
WHEN 2 | 4 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE J IS
|
CASE J IS
|
WHEN 1 | 3 | 5 => NULL ;
|
WHEN 1 | 3 | 5 => NULL ;
|
WHEN 2 | 4 => NULL ;
|
WHEN 2 | 4 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE CONS IS
|
CASE CONS IS
|
WHEN INTEGER'FIRST..INTEGER'LAST => NULL;
|
WHEN INTEGER'FIRST..INTEGER'LAST => NULL;
|
END CASE;
|
END CASE;
|
|
|
CASE DYN'FIRST IS
|
CASE DYN'FIRST IS
|
WHEN INTEGER'FIRST..0 => NULL;
|
WHEN INTEGER'FIRST..0 => NULL;
|
WHEN 1..INTEGER'LAST => NULL;
|
WHEN 1..INTEGER'LAST => NULL;
|
END CASE;
|
END CASE;
|
|
|
CASE STATCHAR'LAST IS
|
CASE STATCHAR'LAST IS
|
WHEN CHARACTER'FIRST..'A' => NULL;
|
WHEN CHARACTER'FIRST..'A' => NULL;
|
WHEN 'B'..CHARACTER'LAST => NULL;
|
WHEN 'B'..CHARACTER'LAST => NULL;
|
END CASE;
|
END CASE;
|
|
|
CASE FF IS
|
CASE FF IS
|
WHEN 4..5 => NULL ;
|
WHEN 4..5 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN 1..3 => NULL ;
|
WHEN 1..3 => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE DYN'( 2 ) IS
|
CASE DYN'( 2 ) IS
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN 5 | 2..4 => NULL ;
|
WHEN 5 | 2..4 => NULL ;
|
WHEN 1 => NULL ;
|
WHEN 1 => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE DYN( J ) IS
|
CASE DYN( J ) IS
|
WHEN 5 | 2..4 => NULL ;
|
WHEN 5 | 2..4 => NULL ;
|
WHEN 1 => NULL ;
|
WHEN 1 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
|
|
CASE ( CHAR ) IS
|
CASE ( CHAR ) IS
|
WHEN ASCII.NUL .. 'P' => NULL ;
|
WHEN ASCII.NUL .. 'P' => NULL ;
|
WHEN 'Q' => NULL ;
|
WHEN 'Q' => NULL ;
|
WHEN 'R' .. 'Y' => NULL ;
|
WHEN 'R' .. 'Y' => NULL ;
|
WHEN 'Z' .. CHARACTER'LAST => NULL ;
|
WHEN 'Z' .. CHARACTER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE ( ENUM ) IS
|
CASE ( ENUM ) IS
|
WHEN A | C | E => NULL ;
|
WHEN A | C | E => NULL ;
|
WHEN B | D => NULL ;
|
WHEN B | D => NULL ;
|
WHEN F .. L => NULL ;
|
WHEN F .. L => NULL ;
|
WHEN M .. N => NULL ;
|
WHEN M .. N => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE ( FF ) IS
|
CASE ( FF ) IS
|
WHEN 1 | 3 | 5 => NULL ;
|
WHEN 1 | 3 | 5 => NULL ;
|
WHEN 2 | 4 => NULL ;
|
WHEN 2 | 4 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE ( DYN'( I ) ) IS
|
CASE ( DYN'( I ) ) IS
|
WHEN 4..5 => NULL ;
|
WHEN 4..5 => NULL ;
|
WHEN 1..3 => NULL ;
|
WHEN 1..3 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE ( DYN( 2 ) ) IS
|
CASE ( DYN( 2 ) ) IS
|
WHEN 5 | 2..4 => NULL ;
|
WHEN 5 | 2..4 => NULL ;
|
WHEN 1 => NULL ;
|
WHEN 1 => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
WHEN INTEGER'FIRST..0 | 6..INTEGER'LAST => NULL ;
|
END CASE;
|
END CASE;
|
|
|
CASE (CONS) IS
|
CASE (CONS) IS
|
WHEN 1..100 => NULL;
|
WHEN 1..100 => NULL;
|
WHEN INTEGER'FIRST..0 => NULL;
|
WHEN INTEGER'FIRST..0 => NULL;
|
WHEN 101..INTEGER'LAST => NULL;
|
WHEN 101..INTEGER'LAST => NULL;
|
END CASE;
|
END CASE;
|
|
|
CASE (DYNCHAR'LAST) IS
|
CASE (DYNCHAR'LAST) IS
|
WHEN 'B'..'Y' => NULL;
|
WHEN 'B'..'Y' => NULL;
|
WHEN CHARACTER'FIRST..'A' => NULL;
|
WHEN CHARACTER'FIRST..'A' => NULL;
|
WHEN 'Z'..CHARACTER'LAST => NULL;
|
WHEN 'Z'..CHARACTER'LAST => NULL;
|
END CASE;
|
END CASE;
|
|
|
END;
|
END;
|
|
|
|
|
RESULT ;
|
RESULT ;
|
|
|
|
|
END A54B02A ;
|
END A54B02A ;
|
|
|