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