1-- C45503B.DEP 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 'REM' AND 'MOD' YIELD CORRECT RESULTS WHEN THE 27-- OPERANDS ARE OF PREDEFINED TYPE SHORT_INTEGER. 28 29-- APPLICABILITY CRITERIA: 30-- THIS TEST IS APPLICABLE TO THOSE IMPLEMENTATIONS WHICH SUPPORT 31-- SHORT_INTEGER. 32 33-- IF "SHORT_INTEGER" IS NOT SUPPORTED, THEN THE DECLARATION OF 34-- "CHECK_SHORT" MUST BE REJECTED. 35 36-- HISTORY: 37-- RJW 09/01/86 CREATED ORIGINAL TEST. 38-- DHH 01/13/88 ADDED APPLICABILITY CRITERIA AND STANDARD HEADER. 39 40WITH REPORT; USE REPORT; 41PROCEDURE C45503B IS 42 43 CHECK_SHORT : SHORT_INTEGER; -- N/A => ERROR. 44 45 FUNCTION IDENT (S : SHORT_INTEGER) RETURN SHORT_INTEGER IS 46 BEGIN 47 RETURN SHORT_INTEGER (IDENT_INT (INTEGER (S))); 48 END IDENT; 49 50BEGIN 51 TEST ( "C45503B", "CHECK THAT 'REM' AND 'MOD' YIELD CORRECT " & 52 "RESULTS WHEN THE OPERANDS ARE OF PREDEFINED " & 53 "TYPE SHORT_INTEGER" ); 54 55 DECLARE 56 I0 : SHORT_INTEGER := 0; 57 I1 : SHORT_INTEGER := 1; 58 I2 : SHORT_INTEGER := 2; 59 I3 : SHORT_INTEGER := 3; 60 I4 : SHORT_INTEGER := 4; 61 I5 : SHORT_INTEGER := 5; 62 I10 : SHORT_INTEGER := 10; 63 I11 : SHORT_INTEGER := 11; 64 I12 : SHORT_INTEGER := 12; 65 I13 : SHORT_INTEGER := 13; 66 I14 : SHORT_INTEGER := 14; 67 N1 : SHORT_INTEGER := -1; 68 N2 : SHORT_INTEGER := -2; 69 N3 : SHORT_INTEGER := -3; 70 N4 : SHORT_INTEGER := -4; 71 N5 : SHORT_INTEGER := -5; 72 N10 : SHORT_INTEGER := -10; 73 N11 : SHORT_INTEGER := -11; 74 N12 : SHORT_INTEGER := -12; 75 N13 : SHORT_INTEGER := -13; 76 N14 : SHORT_INTEGER := -14; 77 78 BEGIN 79 IF I10 REM I5 /= I0 THEN 80 FAILED ( "INCORRECT RESULT FOR I10 REM I5" ); 81 END IF; 82 83 IF IDENT (I11) REM IDENT (I5) /= I1 THEN 84 FAILED ( "INCORRECT RESULT FOR IDENT (I11) REM " & 85 "IDENT (I5)" ); 86 END IF; 87 88 IF I12 REM I5 /= I2 THEN 89 FAILED ( "INCORRECT RESULT FOR I12 REM I5" ); 90 END IF; 91 92 IF "REM" (LEFT => I12, RIGHT => I5) /= I2 THEN 93 FAILED ( "INCORRECT RESULT FOR ""REM"" (LEFT => I12, " & 94 "RIGHT => I5)" ); 95 END IF; 96 97 IF IDENT (I13) REM IDENT (I5) /= I3 THEN 98 FAILED ( "INCORRECT RESULT FOR IDENT (I13) REM " & 99 "IDENT (I5)" ); 100 END IF; 101 102 IF I14 REM I5 /= I4 THEN 103 FAILED ( "INCORRECT RESULT FOR I14 REM I5" ); 104 END IF; 105 106 IF IDENT (I10) REM IDENT (N5) /= I0 THEN 107 FAILED ( "INCORRECT RESULT FOR IDENT (I10) REM " & 108 "IDENT (N5)" ); 109 END IF; 110 111 IF "REM" (LEFT => IDENT (I10), RIGHT => IDENT (N5)) 112 /= I0 THEN 113 FAILED ( "INCORRECT RESULT FOR ""REM"" (LEFT => " & 114 "IDENT (I10), RIGHT => IDENT (N5))" ); 115 END IF; 116 117 IF I11 REM N5 /= I1 THEN 118 FAILED ( "INCORRECT RESULT FOR I11 REM N5" ); 119 END IF; 120 121 IF IDENT (I12) REM IDENT (N5) /= I2 THEN 122 FAILED ( "INCORRECT RESULT FOR IDENT (I12) REM " & 123 "IDENT (N5)" ); 124 END IF; 125 126 IF I13 REM N5 /= I3 THEN 127 FAILED ( "INCORRECT RESULT FOR I13 REM N5" ); 128 END IF; 129 130 IF "REM" (LEFT => I13, RIGHT => N5) /= I3 THEN 131 FAILED ( "INCORRECT RESULT FOR ""REM"" (LEFT => I13, " & 132 "RIGHT => N5)" ); 133 END IF; 134 135 IF IDENT (I14) REM IDENT (N5) /= I4 THEN 136 FAILED ( "INCORRECT RESULT FOR IDENT (I14) REM " & 137 "IDENT (N5)" ); 138 END IF; 139 140 IF N10 REM I5 /= I0 THEN 141 FAILED ( "INCORRECT RESULT FOR N10 REM I5" ); 142 END IF; 143 144 IF IDENT (N11) REM IDENT (I5) /= N1 THEN 145 FAILED ( "INCORRECT RESULT FOR IDENT (N11) REM " & 146 "IDENT (I5)" ); 147 END IF; 148 149 IF "REM" (LEFT => IDENT (N11), RIGHT => IDENT (I5)) 150 /= N1 THEN 151 FAILED ( "INCORRECT RESULT FOR ""REM"" (LEFT => " & 152 "IDENT (N11), RIGHT => IDENT (I5))" ); 153 END IF; 154 155 IF N12 REM I5 /= N2 THEN 156 FAILED ( "INCORRECT RESULT FOR N12 REM I5" ); 157 END IF; 158 159 IF IDENT (N13) REM IDENT (I5) /= N3 THEN 160 FAILED ( "INCORRECT RESULT FOR IDENT (N13) REM " & 161 "IDENT (I5)" ); 162 END IF; 163 164 IF N14 REM I5 /= N4 THEN 165 FAILED ( "INCORRECT RESULT FOR N14 REM I5" ); 166 END IF; 167 168 IF "REM" (LEFT => N14, RIGHT => I5) /= N4 THEN 169 FAILED ( "INCORRECT RESULT FOR ""REM"" (LEFT => N14, " & 170 "RIGHT => I5)" ); 171 END IF; 172 173 IF IDENT (N10) REM IDENT (N5) /= I0 THEN 174 FAILED ( "INCORRECT RESULT FOR IDENT (N10) REM " & 175 "IDENT (N5)" ); 176 END IF; 177 178 IF N11 REM N5 /= N1 THEN 179 FAILED ( "INCORRECT RESULT FOR N11 REM N5" ); 180 END IF; 181 182 IF IDENT (N12) REM IDENT (N5) /= N2 THEN 183 FAILED ( "INCORRECT RESULT FOR IDENT (N12) REM " & 184 "IDENT (N5)" ); 185 END IF; 186 187 IF "REM" (LEFT => IDENT (N12), RIGHT => IDENT (N5)) 188 /= N2 THEN 189 FAILED ( "INCORRECT RESULT FOR ""REM"" (LEFT => " & 190 "IDENT (N12), RIGHT => IDENT (N5))" ); 191 END IF; 192 193 IF N13 REM N5 /= N3 THEN 194 FAILED ( "INCORRECT RESULT FOR N13 REM N5" ); 195 END IF; 196 197 IF IDENT (N14) REM IDENT (N5) /= N4 THEN 198 FAILED ( "INCORRECT RESULT FOR IDENT (N14) REM " & 199 "IDENT (N5)" ); 200 END IF; 201 202 IF I10 MOD I5 /= I0 THEN 203 FAILED ( "INCORRECT RESULT FOR I10 MOD I5" ); 204 END IF; 205 206 IF IDENT (I11) MOD IDENT (I5) /= I1 THEN 207 FAILED ( "INCORRECT RESULT FOR IDENT (I11) MOD " & 208 "IDENT (I5)" ); 209 END IF; 210 211 IF I12 MOD I5 /= I2 THEN 212 FAILED ( "INCORRECT RESULT FOR I12 MOD I5" ); 213 END IF; 214 215 IF "MOD" (LEFT => I12, RIGHT => I5) /= I2 THEN 216 FAILED ( "INCORRECT RESULT FOR ""MOD"" (LEFT => I12, " & 217 "RIGHT => I5)" ); 218 END IF; 219 220 IF IDENT (I13) MOD IDENT (I5) /= I3 THEN 221 FAILED ( "INCORRECT RESULT FOR IDENT (I13) MOD " & 222 "IDENT (I5)" ); 223 END IF; 224 225 IF I14 MOD I5 /= I4 THEN 226 FAILED ( "INCORRECT RESULT FOR I14 MOD I5" ); 227 END IF; 228 229 IF IDENT (I10) MOD IDENT (N5) /= I0 THEN 230 FAILED ( "INCORRECT RESULT FOR IDENT (I10) MOD " & 231 "IDENT (N5)" ); 232 END IF; 233 234 IF "MOD" (LEFT => IDENT (I10), RIGHT => IDENT (N5)) 235 /= I0 THEN 236 FAILED ( "INCORRECT RESULT FOR ""MOD"" (LEFT => " & 237 "IDENT (I10), RIGHT => IDENT (N5))" ); 238 END IF; 239 240 IF I11 MOD N5 /= N4 THEN 241 FAILED ( "INCORRECT RESULT FOR I11 MOD N5" ); 242 END IF; 243 244 IF IDENT (I12) MOD IDENT (N5) /= N3 THEN 245 FAILED ( "INCORRECT RESULT FOR IDENT (I12) MOD " & 246 "IDENT (N5)" ); 247 END IF; 248 249 IF I13 MOD N5 /= N2 THEN 250 FAILED ( "INCORRECT RESULT FOR I13 MOD N5" ); 251 END IF; 252 253 IF "MOD" (LEFT => I13, RIGHT => N5) /= N2 THEN 254 FAILED ( "INCORRECT RESULT FOR ""MOD"" (LEFT => I13, " & 255 "RIGHT => N5)" ); 256 END IF; 257 258 IF IDENT (I14) MOD IDENT (N5) /= N1 THEN 259 FAILED ( "INCORRECT RESULT FOR IDENT (I14) MOD " & 260 "IDENT (N5)" ); 261 END IF; 262 263 IF N10 MOD I5 /= I0 THEN 264 FAILED ( "INCORRECT RESULT FOR N10 MOD I5" ); 265 END IF; 266 267 IF IDENT (N11) MOD IDENT (I5) /= I4 THEN 268 FAILED ( "INCORRECT RESULT FOR IDENT (N11) MOD " & 269 "IDENT (I5)" ); 270 END IF; 271 272 IF "MOD" (LEFT => IDENT (N11), RIGHT => IDENT (I5)) 273 /= I4 THEN 274 FAILED ( "INCORRECT RESULT FOR ""MOD"" (LEFT => " & 275 "IDENT (N11), RIGHT => IDENT (I5))" ); 276 END IF; 277 278 IF N12 MOD I5 /= I3 THEN 279 FAILED ( "INCORRECT RESULT FOR N12 MOD I5" ); 280 END IF; 281 282 IF IDENT (N13) MOD IDENT (I5) /= I2 THEN 283 FAILED ( "INCORRECT RESULT FOR IDENT (N13) MOD " & 284 "IDENT (I5)" ); 285 END IF; 286 287 IF N14 MOD I5 /= I1 THEN 288 FAILED ( "INCORRECT RESULT FOR N14 MOD I5" ); 289 END IF; 290 291 IF "MOD" (LEFT => N14, RIGHT => I5) /= I1 THEN 292 FAILED ( "INCORRECT RESULT FOR ""MOD"" (LEFT => I14, " & 293 "RIGHT => I5)" ); 294 END IF; 295 296 IF IDENT (N10) MOD IDENT (N5) /= I0 THEN 297 FAILED ( "INCORRECT RESULT FOR IDENT (N10) MOD " & 298 "IDENT (N5)" ); 299 END IF; 300 301 IF N11 MOD N5 /= N1 THEN 302 FAILED ( "INCORRECT RESULT FOR N11 MOD N5" ); 303 END IF; 304 305 IF IDENT (N12) MOD IDENT (N5) /= N2 THEN 306 FAILED ( "INCORRECT RESULT FOR IDENT (N12) MOD " & 307 "IDENT (N5)" ); 308 END IF; 309 310 IF "MOD" (LEFT => IDENT (N12), RIGHT => IDENT (N5)) 311 /= N2 THEN 312 FAILED ( "INCORRECT RESULT FOR ""MOD"" (LEFT => " & 313 "IDENT (N12), RIGHT => IDENT (N5))" ); 314 END IF; 315 316 IF N13 MOD N5 /= N3 THEN 317 FAILED ( "INCORRECT RESULT FOR N13 MOD N5" ); 318 END IF; 319 320 IF IDENT (N14) MOD IDENT (N5) /= N4 THEN 321 FAILED ( "INCORRECT RESULT FOR IDENT (N14) MOD " & 322 "IDENT (N5)" ); 323 END IF; 324 END; 325 326 RESULT; 327END C45503B; 328