1-- A2A031A.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 AN EXCLAMATION MARK CAN REPLACE A VERTICAL BAR WHEN THE
26-- VERTICAL BAR IS USED AS A SEPARATOR.
27
28-- CONTEXTS ARE:
29--   AS A CHOICE IN A VARIANT PART
30--   IN A DISCRIMINANT CONSTRAINT
31--   IN A CASE STATEMENT CHOICE
32--   IN AN AGGREGATE
33--   IN AN EXCEPTION HANDLER.
34
35-- JBG 5/25/85
36
37WITH REPORT; USE REPORT;
38PROCEDURE A2A031A IS
39
40     TYPE ENUM IS (E1, E2, E3);
41     TYPE REC (A, B : ENUM) IS
42          RECORD
43               C : INTEGER;
44               CASE A IS
45                    WHEN E1 ! E2 =>     -- CHOICE OF VARIANT.
46                         D : INTEGER;
47                    WHEN E3 =>
48                         E : FLOAT;
49               END CASE;
50          END RECORD;
51
52     EX1, EX2, EX3 : EXCEPTION;
53
54     VAR  : REC (A!B => E2);            -- DISCRIMINANT CONSTRAINT.
55
56     EVAR : ENUM := E2;
57
58BEGIN
59
60     TEST ("A2A031A", "CHECK USE OF ! AS SEPARATOR IN PLACE OF |");
61
62     CASE EVAR IS
63          WHEN E3 => NULL;
64          WHEN E2!E1 => NULL;           -- CASE STATEMENT CHOICE.
65     END CASE;
66
67     VAR := (A!B => E2, C ! D => 0);    -- AGGREGATE.
68
69     RESULT;
70EXCEPTION
71     WHEN EX1!EX2 ! EX3 => NULL;        -- EXCEPTION HANDLER.
72END A2A031A;
73