1-- C83022G1.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-- OBJECTIVE: 26-- CHECK THAT A DECLARATION IN A SUBPROGRAM FORMAL PART OR BODY 27-- HIDES AN OUTER DECLARATION OF A HOMOGRAPH. ALSO CHECK THAT THE 28-- OUTER DECLARATION IS DIRECTLY VISIBLE IN BOTH DECLARATIVE 29-- REGIONS BEFORE THE DECLARATION OF THE INNER HOMOGRAPH AND THE 30-- OUTER DECLARATION IS VISIBLE BY SELECTION AFTER THE INNER 31-- HOMOGRAPH DECLARATION, IF THE SUBPROGRAM BODY IS COMPILED 32-- SEPARATELY AS A SUBUNIT. 33 34-- HISTORY: 35-- BCB 08/26/88 CREATED ORIGINAL TEST. 36 37SEPARATE (C83022G0M) 38PROCEDURE INNER (X : IN OUT INTEGER) IS 39 C : INTEGER := A; 40 A : INTEGER := IDENT_INT(3); 41BEGIN 42 IF A /= IDENT_INT(3) THEN 43 FAILED ("INCORRECT VALUE FOR INNER HOMOGRAPH - 1"); 44 END IF; 45 46 IF C83022G0M.A /= IDENT_INT(2) THEN 47 FAILED ("INCORRECT VALUE FOR OUTER HOMOGRAPH - 2"); 48 END IF; 49 50 IF C83022G0M.B /= IDENT_INT(2) THEN 51 FAILED ("INCORRECT VALUE FOR OUTER VARIABLE - 3"); 52 END IF; 53 54 IF C /= IDENT_INT(2) THEN 55 FAILED ("INCORRECT VALUE FOR INNER VARIABLE - 4"); 56 END IF; 57 58 IF X /= IDENT_INT(2) THEN 59 FAILED ("INCORRECT VALUE PASSED IN - 5"); 60 END IF; 61 62 IF EQUAL(1,1) THEN 63 X := A; 64 ELSE 65 X := C83022G0M.A; 66 END IF; 67END INNER; 68 69SEPARATE (C83022G0M) 70PROCEDURE INNER2 (X : IN INTEGER := C83022G0M.A; 71 A : IN OUT INTEGER) IS 72 C : INTEGER := A; 73BEGIN 74 IF A /= IDENT_INT(3) THEN 75 FAILED ("INCORRECT VALUE FOR INNER HOMOGRAPH -10"); 76 END IF; 77 78 IF C83022G0M.A /= IDENT_INT(2) THEN 79 FAILED ("INCORRECT VALUE FOR OUTER HOMOGRAPH - 11"); 80 END IF; 81 82 IF C83022G0M.B /= IDENT_INT(2) THEN 83 FAILED ("INCORRECT VALUE FOR OUTER VARIABLE - 12"); 84 END IF; 85 86 IF C /= IDENT_INT(3) THEN 87 FAILED ("INCORRECT VALUE FOR INNER VARIABLE - 13"); 88 END IF; 89 90 IF X /= IDENT_INT(2) THEN 91 FAILED ("INCORRECT VALUE PASSED IN - 14"); 92 END IF; 93 94 IF EQUAL(1,1) THEN 95 A := IDENT_INT(4); 96 ELSE 97 A := 1; 98 END IF; 99END INNER2; 100 101SEPARATE (C83022G0M) 102FUNCTION INNER3 (X : INTEGER) RETURN INTEGER IS 103 C : INTEGER := A; 104 A : INTEGER := IDENT_INT(3); 105BEGIN 106 IF A /= IDENT_INT(3) THEN 107 FAILED ("INCORRECT VALUE FOR INNER HOMOGRAPH - 20"); 108 END IF; 109 110 IF C83022G0M.A /= IDENT_INT(2) THEN 111 FAILED ("INCORRECT VALUE FOR OUTER HOMOGRAPH - 21"); 112 END IF; 113 114 IF C83022G0M.B /= IDENT_INT(2) THEN 115 FAILED ("INCORRECT VALUE FOR OUTER VARIABLE - 22"); 116 END IF; 117 118 IF C /= IDENT_INT(2) THEN 119 FAILED ("INCORRECT VALUE FOR INNER VARIABLE - 23"); 120 END IF; 121 122 IF X /= IDENT_INT(2) THEN 123 FAILED ("INCORRECT VALUE PASSED IN - 24"); 124 END IF; 125 126 IF EQUAL(1,1) THEN 127 RETURN A; 128 ELSE 129 RETURN X; 130 END IF; 131END INNER3; 132 133SEPARATE (C83022G0M) 134PROCEDURE TEMPLATE (X : IN INTEGER := A; 135 Y : IN OUT INTEGER) IS 136BEGIN -- TEMPLATE 137 IF X /= IDENT_INT(2) THEN 138 FAILED ("INCORRECT RESULTS FOR VARIABLE - 30"); 139 END IF; 140 141 IF Y /= IDENT_INT(5) THEN 142 FAILED ("INCORRECT RESULTS FOR VARIABLE - 31"); 143 END IF; 144 145 Y := IDENT_INT(2 * X); 146 147 IF C83022G0M.A /= IDENT_INT(2) THEN 148 FAILED ("INCORRECT RESULTS FOR OUTER HOMOGRAPH - " & 149 "32"); 150 END IF; 151END TEMPLATE; 152 153SEPARATE (C83022G0M) 154PROCEDURE INNER5 (X : IN OUT INTEGER) IS 155 C : INTEGER := A; 156 A : INTEGER := IDENT_INT(3); 157BEGIN 158 IF A /= IDENT_INT(3) THEN 159 FAILED ("INCORRECT VALUE FOR INNER HOMOGRAPH - 41"); 160 END IF; 161 162 IF C83022G0M.A /= IDENT_INT(2) THEN 163 FAILED ("INCORRECT VALUE FOR OUTER HOMOGRAPH - 42"); 164 END IF; 165 166 IF C83022G0M.B /= IDENT_INT(2) THEN 167 FAILED ("INCORRECT VALUE FOR OUTER VARIABLE - 43"); 168 END IF; 169 170 IF C /= IDENT_INT(2) THEN 171 FAILED ("INCORRECT VALUE FOR INNER VARIABLE - 44"); 172 END IF; 173 174 IF X /= IDENT_INT(2) THEN 175 FAILED ("INCORRECT VALUE PASSED IN - 45"); 176 END IF; 177 178 IF EQUAL(1,1) THEN 179 X := A; 180 ELSE 181 X := C83022G0M.A; 182 END IF; 183END INNER5; 184 185SEPARATE (C83022G0M) 186PROCEDURE INNER6 (X : IN OUT INTEGER; F : IN FLOAT) IS 187BEGIN 188 X := INTEGER(F); 189END INNER6; 190