3 -- Grant of Unlimited Rights
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
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.
25 -- CHECK THAT ALL OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED)
26 -- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS.
27 -- THIS TEST CHECKS FORMAL SUBPROGRAM PARAMETERS.
29 -- (A) THROUGH (P): "=", "AND", "OR", "XOR", "<", "<=",
30 -- ">", ">=", "&", "*", "/", "MOD", "REM", "**", "+", "-",
31 -- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS.
32 -- (Q), (R), (S), AND (T): "+", "-", "NOT", "ABS", RESPECTIVELY,
33 -- WITH ONE PARAMETER.
37 WITH REPORT
; USE REPORT
;
40 FUNCTION TWO_PARAMS
(I1
, I2
: INTEGER) RETURN CHARACTER IS
48 FUNCTION ONE_PARAM
(I1
: INTEGER) RETURN CHARACTER IS
50 IF I1
< IDENT_INT
(0) THEN
57 TEST
("C67002C", "USE OF OPERATOR SYMBOLS IN " &
58 "(OVERLOADED) FUNCTION SPECIFICATIONS");
60 -------------------------------------------------
65 TYPE LP
IS LIMITED PRIVATE;
66 FUNCTION "=" (LPA
, LPB
: LP
) RETURN BOOLEAN;
68 TYPE LP
IS NEW INTEGER;
75 FUNCTION "=" (LPA
, LPB
: LP
) RETURN BOOLEAN IS
80 LP1
:= LP
(IDENT_INT
(7));
81 LP2
:= LP
(IDENT_INT
(8));
85 WITH FUNCTION "=" (LPA
, LPB
: LP
) RETURN BOOLEAN;
91 IF (LP1
= LP2
) OR NOT (LP2
= LP1
) OR
92 (LP1
= LP1
) OR (LP2
/= LP1
) THEN
93 FAILED
("OVERLOADING OF ""="" OPERATOR DEFECTIVE");
97 PACKAGE EQUAL
IS NEW PKG
("=" => EQU
."=");
103 -------------------------------------------------
108 WITH FUNCTION "AND" (I1
, I2
: INTEGER) RETURN CHARACTER;
114 IF (IDENT_INT
(10) AND 1) /= 'G' OR
115 (5 AND 10) /= 'L' THEN
116 FAILED
("OVERLOADING OF ""AND"" OPERATOR DEFECTIVE");
120 PACKAGE PACK
IS NEW PKG
("AND" => TWO_PARAMS
);
126 -------------------------------------------------
131 WITH FUNCTION "OR" (I1
, I2
: INTEGER) RETURN CHARACTER;
137 IF (IDENT_INT
(10) OR 1) /= 'G' OR
138 (5 OR 10) /= 'L' THEN
139 FAILED
("OVERLOADING OF ""OR"" OPERATOR DEFECTIVE");
143 PACKAGE PACK
IS NEW PKG
("OR" => TWO_PARAMS
);
149 -------------------------------------------------
154 WITH FUNCTION "XOR" (I1
, I2
: INTEGER) RETURN CHARACTER;
160 IF (IDENT_INT
(10) XOR 1) /= 'G' OR
161 (5 XOR 10) /= 'L' THEN
162 FAILED
("OVERLOADING OF ""XOR"" OPERATOR DEFECTIVE");
166 PACKAGE PACK
IS NEW PKG
("XOR" => TWO_PARAMS
);
172 -------------------------------------------------
177 WITH FUNCTION "<" (I1
, I2
: INTEGER) RETURN CHARACTER;
183 IF (IDENT_INT
(10) < 1) /= 'G' OR
185 FAILED
("OVERLOADING OF ""<"" OPERATOR DEFECTIVE");
189 PACKAGE PACK
IS NEW PKG
("<" => TWO_PARAMS
);
195 -------------------------------------------------
200 WITH FUNCTION "<=" (I1
, I2
: INTEGER) RETURN CHARACTER;
206 IF (IDENT_INT
(10) <= 1) /= 'G' OR
207 (5 <= 10) /= 'L' THEN
208 FAILED
("OVERLOADING OF ""<="" OPERATOR DEFECTIVE");
212 PACKAGE PACK
IS NEW PKG
("<=" => TWO_PARAMS
);
218 -------------------------------------------------
223 WITH FUNCTION ">" (I1
, I2
: INTEGER) RETURN CHARACTER;
229 IF (IDENT_INT
(10) > 1) /= 'G' OR
231 FAILED
("OVERLOADING OF "">"" OPERATOR DEFECTIVE");
235 PACKAGE PACK
IS NEW PKG
(">" => TWO_PARAMS
);
241 -------------------------------------------------
246 WITH FUNCTION ">=" (I1
, I2
: INTEGER) RETURN CHARACTER;
252 IF (IDENT_INT
(10) >= 1) /= 'G' OR
253 (5 >= 10) /= 'L' THEN
254 FAILED
("OVERLOADING OF "">="" OPERATOR DEFECTIVE");
258 PACKAGE PACK
IS NEW PKG
(">=" => TWO_PARAMS
);
264 -------------------------------------------------
269 WITH FUNCTION "&" (I1
, I2
: INTEGER) RETURN CHARACTER;
275 IF (IDENT_INT
(10) & 1) /= 'G' OR
277 FAILED
("OVERLOADING OF ""&"" OPERATOR DEFECTIVE");
281 PACKAGE PACK
IS NEW PKG
("&" => TWO_PARAMS
);
287 -------------------------------------------------
292 WITH FUNCTION "*" (I1
, I2
: INTEGER) RETURN CHARACTER;
298 IF (IDENT_INT
(10) * 1) /= 'G' OR
300 FAILED
("OVERLOADING OF ""*"" OPERATOR DEFECTIVE");
304 PACKAGE PACK
IS NEW PKG
("*" => TWO_PARAMS
);
310 -------------------------------------------------
315 WITH FUNCTION "/" (I1
, I2
: INTEGER) RETURN CHARACTER;
321 IF (IDENT_INT
(10) / 1) /= 'G' OR
323 FAILED
("OVERLOADING OF ""/"" OPERATOR DEFECTIVE");
327 PACKAGE PACK
IS NEW PKG
("/" => TWO_PARAMS
);
333 -------------------------------------------------
338 WITH FUNCTION "MOD" (I1
, I2
: INTEGER) RETURN CHARACTER;
344 IF (IDENT_INT
(10) MOD 1) /= 'G' OR
345 (5 MOD 10) /= 'L' THEN
346 FAILED
("OVERLOADING OF ""MOD"" OPERATOR DEFECTIVE");
350 PACKAGE PACK
IS NEW PKG
("MOD" => TWO_PARAMS
);
356 -------------------------------------------------
361 WITH FUNCTION "REM" (I1
, I2
: INTEGER) RETURN CHARACTER;
367 IF (IDENT_INT
(10) REM 1) /= 'G' OR
368 (5 REM 10) /= 'L' THEN
369 FAILED
("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE");
373 PACKAGE PACK
IS NEW PKG
("REM" => TWO_PARAMS
);
379 -------------------------------------------------
384 WITH FUNCTION "**" (I1
, I2
: INTEGER) RETURN CHARACTER;
390 IF (IDENT_INT
(10) ** 1) /= 'G' OR
391 (5 ** 10) /= 'L' THEN
392 FAILED
("OVERLOADING OF ""**"" OPERATOR DEFECTIVE");
396 PACKAGE PACK
IS NEW PKG
("**" => TWO_PARAMS
);
402 -------------------------------------------------
407 WITH FUNCTION "+" (I1
, I2
: INTEGER) RETURN CHARACTER;
413 IF (IDENT_INT
(10) + 1) /= 'G' OR
415 FAILED
("OVERLOADING OF ""+"" OPERATOR DEFECTIVE");
419 PACKAGE PACK
IS NEW PKG
("+" => TWO_PARAMS
);
425 -------------------------------------------------
430 WITH FUNCTION "-" (I1
, I2
: INTEGER) RETURN CHARACTER;
436 IF (IDENT_INT
(10) - 1) /= 'G' OR
438 FAILED
("OVERLOADING OF ""-"" OPERATOR DEFECTIVE");
442 PACKAGE PACK
IS NEW PKG
("-" => TWO_PARAMS
);
448 -------------------------------------------------
453 WITH FUNCTION "+" (I1
: INTEGER) RETURN CHARACTER;
459 IF (+ IDENT_INT
(25) /= 'P') OR
460 (+ (0-25) /= 'N') THEN
461 FAILED
("OVERLOADING OF ""+"" " &
462 "OPERATOR (ONE OPERAND) DEFECTIVE");
466 PACKAGE PACK
IS NEW PKG
("+" => ONE_PARAM
);
472 -------------------------------------------------
477 WITH FUNCTION "-" (I1
: INTEGER) RETURN CHARACTER;
483 IF (- IDENT_INT
(25) /= 'P') OR
484 (- (0-25) /= 'N') THEN
485 FAILED
("OVERLOADING OF ""-"" " &
486 "OPERATOR (ONE OPERAND) DEFECTIVE");
490 PACKAGE PACK
IS NEW PKG
("-" => ONE_PARAM
);
496 -------------------------------------------------
501 WITH FUNCTION "NOT" (I1
: INTEGER) RETURN CHARACTER;
507 IF (NOT IDENT_INT
(25) /= 'P') OR
508 (NOT (0-25) /= 'N') THEN
509 FAILED
("OVERLOADING OF ""NOT"" " &
510 "OPERATOR (ONE OPERAND) DEFECTIVE");
514 PACKAGE PACK
IS NEW PKG
("NOT" => ONE_PARAM
);
520 -------------------------------------------------
525 WITH FUNCTION "ABS" (I1
: INTEGER) RETURN CHARACTER;
531 IF (ABS IDENT_INT
(25) /= 'P') OR
532 (ABS (0-25) /= 'N') THEN
533 FAILED
("OVERLOADING OF ""ABS"" " &
534 "OPERATOR (ONE OPERAND) DEFECTIVE");
538 PACKAGE PACK
IS NEW PKG
("ABS" => ONE_PARAM
);
544 -------------------------------------------------