-- B35501A.ADA -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and -- F08630-91-C-0015, 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. --* -- CHECK THAT THE ARGUMENT TO 'SUCC, 'PRED, AND 'POS -- MUST BE A DISCRETE TYPE. MATCHING OF PARAMETER AND -- ATTRIBUTE TYPE IS TESTED ELSEWHERE. -- DAT 3/26/81 -- PWN 11/09/95 REMOVED 'PRED AND 'SUCC CHECKS WHERE RULES RELAXED. -- PWN 03/21/96 Restored checks in Ada 95 legal format. PROCEDURE B35501A IS SUBTYPE S IS STRING (1..1); TYPE F IS DELTA 1.0 RANGE 0.0 .. 2.0; PACKAGE PKG IS TYPE P IS PRIVATE; TYPE L IS LIMITED PRIVATE; OP : CONSTANT P; OL : CONSTANT L; PRIVATE TYPE P IS RANGE 0 .. 2; TYPE L IS (A, B, C); OP : CONSTANT P := 1; OL : CONSTANT L := B; END PKG; USE PKG; R : BOOLEAN; I : INTEGER; BEGIN R := S'SUCC("A") IN S; -- ERROR: NOT DISCRETE. R := CHARACTER'SUCC("A") IN CHARACTER; -- ERROR: NOT DISCRETE. R := F'SUCC(1.0) IN F; -- OK. R := INTEGER'SUCC(1.0) IN INTEGER; -- ERROR: NOT DISCRETE. R := P'SUCC(OP) = OP; -- ERROR: PRIVATE. R := OL IN L; -- OK. R := L'SUCC(OL) IN L; -- ERROR: LIM PRIV. R := S'PRED("B") IN S; -- ERROR: NOT DISCRETE. R := CHARACTER'PRED("B") IN CHARACTER; -- ERROR: NOT DISCRETE. R := F'PRED(1.0) IN F; -- OK. R := INTEGER'PRED(1.0) IN INTEGER; -- ERROR: NOT DISCRETE. R := P'PRED(OP) IN P; -- ERROR: NOT DISCRETE. R := L'PRED(OL) IN L; -- ERROR: NOT DISCRETE. I := S'POS("A"); -- ERROR: NOT DISCRETE. I := CHARACTER'POS("A"); -- ERROR: NOT DISCRETE. I := F'POS(1.0); -- ERROR: NOT DISCRETE. I := INTEGER'POS(1.0); -- ERROR: NOT DISCRETE. I := P'POS(OP); -- ERROR: NOT DISCRETE. I := L'POS(OL); -- ERROR: NOT DISCRETE. END B35501A;