c52008b.ada
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· ADA 代码 · 共 111 行
ADA
111 行
-- C52008B.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:-- CHECK THAT A RECORD VARIABLE DECLARED WITH A SPECIFIED-- DISCRIMINANT CONSTRAINT CANNOT HAVE A DISCRIMINANT VALUE ALTERED-- BY ASSIGNMENT. ASSIGNING AN ENTIRE RECORD VALUE WITH A-- DIFFERENT DISCRIMINANT VALUE SHOULD RAISE CONSTRAINT_ERROR AND-- LEAVE THE TARGET VARIABLE UNALTERED. THIS TEST USES NON-STATIC-- DISCRIMINANT VALUES.-- HISTORY:-- ASL 6/25/81 CREATED ORIGINAL TEST-- JRK 11/18/82-- RJW 8/17/89 ADDED SUBTYPE 'SUBINT'.WITH REPORT;PROCEDURE C52008B IS USE REPORT; TYPE REC1(D1,D2 : INTEGER) IS RECORD COMP1 : STRING(D1..D2); END RECORD; TYPE AR_REC1 IS ARRAY (NATURAL RANGE <>) OF REC1(IDENT_INT(3), IDENT_INT(5)); SUBTYPE SUBINT IS INTEGER RANGE -128 .. 127; TYPE REC2(D1,D2,D3,D4 : SUBINT := 0) IS RECORD COMP1 : STRING(1..D1); COMP2 : STRING(D2..D3); COMP5 : AR_REC1(1..D4); COMP6 : REC1(D3,D4); END RECORD; STR : STRING(IDENT_INT(3)..IDENT_INT(5)) := "ZZZ"; R1A : REC1(IDENT_INT(3),IDENT_INT(5)) := (3,5,STR); R1C : REC1(5,6) := (5,6,COMP1 => (5..6 => 'K')); Q,R : REC2(IDENT_INT(2),IDENT_INT(3),IDENT_INT(5),IDENT_INT(6)); TEMP : REC2(2,3,5,6); W : REC2(1,4,6,8); OK : BOOLEAN := FALSE;BEGIN TEST ("C52008B", "CANNOT ASSIGN RECORD VARIABLE WITH SPECIFIED " & "DISCRIMINANT VALUE A VALUE WITH A DIFFERENT " & "(DYNAMIC) DISCRIMINANT VALUE"); BEGIN R1A := (IDENT_INT(3),5,"XYZ"); R := (IDENT_INT(2),IDENT_INT(3),IDENT_INT(5),IDENT_INT(6), "AB", STR, (1..6 => R1A), R1C); TEMP := R; Q := TEMP; R.COMP1 := "YY"; OK := TRUE; W := R; FAILED ("ASSIGNMENT MADE USING INCORRECT DISCRIMINANT " & "VALUES"); EXCEPTION WHEN CONSTRAINT_ERROR => IF NOT OK OR Q /= TEMP OR R = TEMP OR R = Q OR W.D4 /= 8 THEN FAILED ("LEGITIMATE ASSIGNMENT FAILED"); END IF; WHEN OTHERS => FAILED ("WRONG EXCEPTION"); END; RESULT;END C52008B;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?