1-- C37304A.ADA
2
3--                             Grant of Unlimited Rights
4--
5--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7--     unlimited rights in the software and documentation contained herein.
8--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
9--     this public release, the Government intends to confer upon all
10--     recipients unlimited rights  equal to those held by the Government.
11--     These rights include rights to use, duplicate, release or disclose the
12--     released technical data and computer software in whole or in part, in
13--     any manner and for any purpose whatsoever, and to have or permit others
14--     to do so.
15--
16--                                    DISCLAIMER
17--
18--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23--     PARTICULAR PURPOSE OF SAID MATERIAL.
24--*
25-- CHECK THAT ALL FORMS OF CHOICE ARE PERMITTED IN A VARIANT_PART,
26-- AND, IN PARTICULAR, THAT FORMS LIKE ST RANGE L..R, AND ST ARE
27-- PERMITTED.
28
29-- ASL 7/31/81
30--  RM 8/26/82
31-- SPS 1/21/83
32
33WITH REPORT;
34PROCEDURE C37304A IS
35
36     USE REPORT;
37
38BEGIN
39
40     TEST("C37304A","ALL FORMS OF CHOICE ALLOWED IN A VARIANT_PART");
41
42     DECLARE
43
44          TYPE T IS RANGE 1 .. 10;
45          C5 : CONSTANT T := 5;
46          SUBTYPE S1 IS T RANGE 1 .. 5;
47          SUBTYPE S2 IS T RANGE C5 + 1 .. 7;
48          SUBTYPE SN IS T RANGE C5 + 4 .. C5 - 4 + 7;  -- NULL RANGE.
49          SUBTYPE S10 IS T RANGE C5 + 5 .. T'LAST;
50
51          TYPE VREC( DISC : T := 8 ) IS
52               RECORD
53                    CASE DISC IS
54                         WHEN SN                       -- 9..8
55                         | S1 RANGE 1 .. 0             -- 1..0
56                         | S2 RANGE C5 + 2 .. C5 + 1   -- 7..6
57                         | 3 .. 2                      -- 3..2
58                              => NULL;
59
60                         WHEN  S1 RANGE 4 .. C5        -- 4..5
61                         | S1 RANGE C5 - 4 .. C5 / 2   -- 1..2
62                         | 3 .. 1 + C5 MOD 3           -- 3..3
63                         | SN                          -- 9..8
64                         | S1 RANGE 5 .. C5 - 1        -- 5..4
65                         | 6 .. 7                      -- 6..7
66                         | S10                         -- 10..10
67                         | 9                           -- 9
68                         | S10 RANGE 10 .. 9           -- 10..9
69                              => NULL;
70
71                         WHEN C5 + C5 - 2 .. 8         -- 8
72                              => NULL;
73
74                    END CASE;
75               END RECORD;
76
77          V : VREC;
78
79     BEGIN
80
81          IF EQUAL(3,3) THEN
82               V := (DISC => 5);
83          END IF;
84          IF V.DISC /= 5 THEN
85               FAILED ("ASSIGNMENT FAILED");
86          END IF;
87
88     END;
89
90     RESULT;
91
92END C37304A;
93