comparison gcc/testsuite/ada/acats/tests/c8/c85006b.ada @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 -- C85006B.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 COMPONENT OR SLICE OF A VARIABLE CREATED BY A
27 -- SUBPROGRAM 'IN OUT' FORMAL PARAMETER CAN BE RENAMED AND HAS THE
28 -- CORRECT VALUE, AND THAT THE NEW NAME CAN BE USED IN AN ASSIGNMENT
29 -- STATEMENT AND PASSED ON AS AN ACTUAL SUBPROGRAM OR ENTRY 'IN OUT'
30 -- OR 'OUT' PARAMETER, AND AS AN ACTUAL GENERIC 'IN OUT' PARAMETER,
31 -- AND THAT WHEN THE VALUE OF THE RENAMED VARIABLE IS CHANGED,
32 -- THE NEW VALUE IS REFLECTED BY THE VALUE OF THE NEW NAME.
33
34 -- HISTORY:
35 -- JET 03/22/88 CREATED ORIGINAL TEST.
36
37 WITH REPORT; USE REPORT;
38 PROCEDURE C85006B IS
39
40 TYPE ARRAY1 IS ARRAY (POSITIVE RANGE <>) OF INTEGER;
41 TYPE RECORD1 (D : INTEGER) IS
42 RECORD
43 FIELD1 : INTEGER := 1;
44 END RECORD;
45 TYPE POINTER1 IS ACCESS INTEGER;
46
47 PACKAGE PACK1 IS
48 TYPE PRIVY IS PRIVATE;
49 ZERO : CONSTANT PRIVY;
50 ONE : CONSTANT PRIVY;
51 TWO : CONSTANT PRIVY;
52 THREE : CONSTANT PRIVY;
53 FOUR : CONSTANT PRIVY;
54 FIVE : CONSTANT PRIVY;
55 FUNCTION IDENT (I : PRIVY) RETURN PRIVY;
56 FUNCTION NEXT (I : PRIVY) RETURN PRIVY;
57 PRIVATE
58 TYPE PRIVY IS RANGE 0..127;
59 ZERO : CONSTANT PRIVY := 0;
60 ONE : CONSTANT PRIVY := 1;
61 TWO : CONSTANT PRIVY := 2;
62 THREE : CONSTANT PRIVY := 3;
63 FOUR : CONSTANT PRIVY := 4;
64 FIVE : CONSTANT PRIVY := 5;
65 END PACK1;
66
67 TASK TYPE TASK1 IS
68 ENTRY ASSIGN (J : IN INTEGER);
69 ENTRY VALU (J : OUT INTEGER);
70 ENTRY NEXT;
71 ENTRY STOP;
72 END TASK1;
73
74 TYPE ARR_INT IS ARRAY(POSITIVE RANGE <>) OF INTEGER;
75 TYPE ARR_ARR IS ARRAY(POSITIVE RANGE <>) OF ARRAY1(1..3);
76 TYPE ARR_REC IS ARRAY(POSITIVE RANGE <>) OF RECORD1(1);
77 TYPE ARR_PTR IS ARRAY(POSITIVE RANGE <>) OF POINTER1;
78 TYPE ARR_PVT IS ARRAY(POSITIVE RANGE <>) OF PACK1.PRIVY;
79 TYPE ARR_TSK IS ARRAY(POSITIVE RANGE <>) OF TASK1;
80
81 TYPE REC_TYPE IS RECORD
82 RI1 : INTEGER := 0;
83 RA1 : ARRAY1(1..3) := (OTHERS => 0);
84 RR1 : RECORD1(1) := (D => 1, FIELD1 => 0);
85 RP1 : POINTER1 := NEW INTEGER'(0);
86 RV1 : PACK1.PRIVY := PACK1.ZERO;
87 RT1 : TASK1;
88 END RECORD;
89
90 DREC : REC_TYPE;
91
92 DAI1 : ARR_INT(1..8) := (OTHERS => 0);
93 DAA1 : ARR_ARR(1..8) := (OTHERS => (OTHERS => 0));
94 DAR1 : ARR_REC(1..8) := (OTHERS => (D => 1, FIELD1 => 0));
95 DAP1 : ARR_PTR(1..8) := (OTHERS => NEW INTEGER'(0));
96 DAV1 : ARR_PVT(1..8) := (OTHERS => PACK1.ZERO);
97 DAT1 : ARR_TSK(1..8);
98
99 GENERIC
100 GRI1 : IN OUT INTEGER;
101 GRA1 : IN OUT ARRAY1;
102 GRR1 : IN OUT RECORD1;
103 GRP1 : IN OUT POINTER1;
104 GRV1 : IN OUT PACK1.PRIVY;
105 GRT1 : IN OUT TASK1;
106 GAI1 : IN OUT ARR_INT;
107 GAA1 : IN OUT ARR_ARR;
108 GAR1 : IN OUT ARR_REC;
109 GAP1 : IN OUT ARR_PTR;
110 GAV1 : IN OUT ARR_PVT;
111 GAT1 : IN OUT ARR_TSK;
112 PACKAGE GENERIC1 IS
113 END GENERIC1;
114
115 FUNCTION IDENT (P : POINTER1) RETURN POINTER1 IS
116 BEGIN
117 IF EQUAL (3,3) THEN
118 RETURN P;
119 ELSE
120 RETURN NULL;
121 END IF;
122 END IDENT;
123
124 PACKAGE BODY PACK1 IS
125 FUNCTION IDENT (I : PRIVY) RETURN PRIVY IS
126 BEGIN
127 IF EQUAL(3,3) THEN
128 RETURN I;
129 ELSE
130 RETURN PRIVY'(0);
131 END IF;
132 END IDENT;
133
134 FUNCTION NEXT (I : PRIVY) RETURN PRIVY IS
135 BEGIN
136 RETURN I+1;
137 END NEXT;
138 END PACK1;
139
140 PACKAGE BODY GENERIC1 IS
141 BEGIN
142 GRI1 := GRI1 + 1;
143 GRA1 := (GRA1(1)+1, GRA1(2)+1, GRA1(3)+1);
144 GRR1 := (D => 1, FIELD1 => GRR1.FIELD1+1);
145 GRP1 := NEW INTEGER'(GRP1.ALL + 1);
146 GRV1 := PACK1.NEXT(GRV1);
147 GRT1.NEXT;
148 GAI1 := (OTHERS => GAI1(GAI1'FIRST) + 1);
149 GAA1 := (OTHERS => (OTHERS => GAA1(GAA1'FIRST)(1) + 1));
150 GAR1 := (OTHERS => (D => 1,
151 FIELD1 => (GAR1(GAR1'FIRST).FIELD1 + 1)));
152 GAP1 := (OTHERS => NEW INTEGER'(GAP1(GAP1'FIRST).ALL + 1));
153 FOR J IN GAV1'RANGE LOOP
154 GAV1(J) := PACK1.NEXT(GAV1(J));
155 END LOOP;
156 FOR J IN GAT1'RANGE LOOP
157 GAT1(J).NEXT;
158 END LOOP;
159 END GENERIC1;
160
161 TASK BODY TASK1 IS
162 TASK_VALUE : INTEGER := 0;
163 ACCEPTING_ENTRIES : BOOLEAN := TRUE;
164 BEGIN
165 WHILE ACCEPTING_ENTRIES LOOP
166 SELECT
167 ACCEPT ASSIGN (J : IN INTEGER) DO
168 TASK_VALUE := J;
169 END ASSIGN;
170 OR
171 ACCEPT VALU (J : OUT INTEGER) DO
172 J := TASK_VALUE;
173 END VALU;
174 OR
175 ACCEPT NEXT DO
176 TASK_VALUE := TASK_VALUE + 1;
177 END NEXT;
178 OR
179 ACCEPT STOP DO
180 ACCEPTING_ENTRIES := FALSE;
181 END STOP;
182 END SELECT;
183 END LOOP;
184 END TASK1;
185
186 PROCEDURE PROC (REC : IN OUT REC_TYPE;
187 AI1 : IN OUT ARR_INT; AA1 : IN OUT ARR_ARR;
188 AR1 : IN OUT ARR_REC; AP1 : IN OUT ARR_PTR;
189 AV1 : IN OUT ARR_PVT; AT1 : IN OUT ARR_TSK) IS
190
191 XRI1 : INTEGER RENAMES REC.RI1;
192 XRA1 : ARRAY1 RENAMES REC.RA1;
193 XRR1 : RECORD1 RENAMES REC.RR1;
194 XRP1 : POINTER1 RENAMES REC.RP1;
195 XRV1 : PACK1.PRIVY RENAMES REC.RV1;
196 XRT1 : TASK1 RENAMES REC.RT1;
197 XAI1 : ARR_INT RENAMES AI1(1..3);
198 XAA1 : ARR_ARR RENAMES AA1(2..4);
199 XAR1 : ARR_REC RENAMES AR1(3..5);
200 XAP1 : ARR_PTR RENAMES AP1(4..6);
201 XAV1 : ARR_PVT RENAMES AV1(5..7);
202 XAT1 : ARR_TSK RENAMES AT1(6..8);
203
204 TASK TYPE TASK2 IS
205 ENTRY ENTRY1 (TRI1 : OUT INTEGER; TRA1 : OUT ARRAY1;
206 TRR1 : OUT RECORD1; TRP1 : IN OUT POINTER1;
207 TRV1 : IN OUT PACK1.PRIVY;
208 TRT1 : IN OUT TASK1;
209 TAI1 : OUT ARR_INT; TAA1 : OUT ARR_ARR;
210 TAR1 : OUT ARR_REC; TAP1 : IN OUT ARR_PTR;
211 TAV1 : IN OUT ARR_PVT;
212 TAT1 : IN OUT ARR_TSK);
213 END TASK2;
214
215 I : INTEGER;
216 CHK_TASK : TASK2;
217
218 TASK BODY TASK2 IS
219 BEGIN
220 ACCEPT ENTRY1 (TRI1 : OUT INTEGER; TRA1 : OUT ARRAY1;
221 TRR1 : OUT RECORD1;
222 TRP1 : IN OUT POINTER1;
223 TRV1 : IN OUT PACK1.PRIVY;
224 TRT1: IN OUT TASK1;
225 TAI1 : OUT ARR_INT; TAA1 : OUT ARR_ARR;
226 TAR1 : OUT ARR_REC; TAP1 : IN OUT ARR_PTR;
227 TAV1 : IN OUT ARR_PVT;
228 TAT1 : IN OUT ARR_TSK)
229 DO
230 TRI1 := REC.RI1 + 1;
231 TRA1 := (REC.RA1(1)+1, REC.RA1(2)+1, REC.RA1(3)+1);
232 TRR1 := (D => 1, FIELD1 => REC.RR1.FIELD1 + 1);
233 TRP1 := NEW INTEGER'(TRP1.ALL + 1);
234 TRV1 := PACK1.NEXT(TRV1);
235 TRT1.NEXT;
236 TAI1 := (OTHERS => AI1(TAI1'FIRST) + 1);
237 TAA1 := (OTHERS => (OTHERS =>
238 AA1(TAA1'FIRST)(1) + 1));
239 TAR1 := (OTHERS => (D => 1,
240 FIELD1 => (AR1(TAR1'FIRST).FIELD1 + 1)));
241 TAP1 := (OTHERS =>
242 NEW INTEGER'(TAP1(TAP1'FIRST).ALL+1));
243 FOR J IN TAV1'RANGE LOOP
244 TAV1(J) := PACK1.NEXT(TAV1(J));
245 END LOOP;
246 FOR J IN TAT1'RANGE LOOP
247 TAT1(J).NEXT;
248 END LOOP;
249 END ENTRY1;
250 END TASK2;
251
252 PROCEDURE PROC1 (PRI1 : IN OUT INTEGER; PRA1 : IN OUT ARRAY1;
253 PRR1 : IN OUT RECORD1; PRP1 : OUT POINTER1;
254 PRV1 : OUT PACK1.PRIVY; PRT1 : IN OUT TASK1;
255 PAI1 : IN OUT ARR_INT; PAA1 : IN OUT ARR_ARR;
256 PAR1 : IN OUT ARR_REC; PAP1 : OUT ARR_PTR;
257 PAV1 : OUT ARR_PVT; PAT1 : IN OUT ARR_TSK) IS
258 BEGIN
259 PRI1 := PRI1 + 1;
260 PRA1 := (PRA1(1)+1, PRA1(2)+1, PRA1(3)+1);
261 PRR1 := (D => 1, FIELD1 => PRR1.FIELD1 + 1);
262 PRP1 := NEW INTEGER'(REC.RP1.ALL + 1);
263 PRV1 := PACK1.NEXT(REC.RV1);
264 PRT1.NEXT;
265 PAI1 := (OTHERS => PAI1(PAI1'FIRST) + 1);
266 PAA1 := (OTHERS => (OTHERS => PAA1(PAA1'FIRST)(1) + 1));
267 PAR1 := (OTHERS => (D => 1, FIELD1 =>
268 (PAR1(PAR1'FIRST).FIELD1 + 1)));
269 PAP1 := (OTHERS => NEW INTEGER'(AP1(PAP1'FIRST).ALL+1));
270 FOR J IN PAV1'RANGE LOOP
271 PAV1(J) := PACK1.NEXT(AV1(J));
272 END LOOP;
273 FOR J IN PAT1'RANGE LOOP
274 PAT1(J).NEXT;
275 END LOOP;
276 END PROC1;
277
278 PACKAGE GENPACK1 IS NEW
279 GENERIC1 (XRI1, XRA1, XRR1, XRP1, XRV1, XRT1,
280 XAI1, XAA1, XAR1, XAP1, XAV1, XAT1);
281
282 BEGIN
283 IF XRI1 /= IDENT_INT(1) THEN
284 FAILED ("INCORRECT VALUE OF XRI1 (1)");
285 END IF;
286
287 IF XRA1 /= (IDENT_INT(1),IDENT_INT(1),IDENT_INT(1)) THEN
288 FAILED ("INCORRECT VALUE OF XRA1 (1)");
289 END IF;
290
291 IF XRR1 /= (D => 1, FIELD1 => IDENT_INT(1)) THEN
292 FAILED ("INCORRECT VALUE OF XRR1 (1)");
293 END IF;
294
295 IF XRP1 /= IDENT(REC.RP1) OR XRP1.ALL /= IDENT_INT(1) THEN
296 FAILED ("INCORRECT VALUE OF XRP1 (1)");
297 END IF;
298
299 IF PACK1."/=" (XRV1, PACK1.IDENT(PACK1.ONE)) THEN
300 FAILED ("INCORRECT VALUE OF XRV1 (1)");
301 END IF;
302
303 XRT1.VALU(I);
304 IF I /= IDENT_INT(1) THEN
305 FAILED ("INCORRECT RETURN VALUE OF XRT1.VALU (1)");
306 END IF;
307
308 FOR J IN XAI1'RANGE LOOP
309 IF XAI1(J) /= IDENT_INT(1) THEN
310 FAILED ("INCORRECT VALUE OF XAI1(" &
311 INTEGER'IMAGE(J) & ") (1)");
312 END IF;
313 END LOOP;
314
315 FOR J IN XAA1'RANGE LOOP
316 IF XAA1(J) /= (IDENT_INT(1),IDENT_INT(1),IDENT_INT(1))
317 THEN
318 FAILED ("INCORRECT VALUE OF XAA1(" &
319 INTEGER'IMAGE(J) & ") (1)");
320 END IF;
321 END LOOP;
322
323 FOR J IN XAR1'RANGE LOOP
324 IF XAR1(J) /= (D => 1, FIELD1 => IDENT_INT(1)) THEN
325 FAILED ("INCORRECT VALUE OF XAR1(" &
326 INTEGER'IMAGE(J) & ") (1)");
327 END IF;
328 END LOOP;
329
330 FOR J IN XAP1'RANGE LOOP
331 IF XAP1(J) /= IDENT(AP1(J)) OR
332 XAP1(J).ALL /= IDENT_INT(1)
333 THEN
334 FAILED ("INCORRECT VALUE OF XAP1(" &
335 INTEGER'IMAGE(J) & ") (1)");
336 END IF;
337 END LOOP;
338
339 FOR J IN XAV1'RANGE LOOP
340 IF PACK1."/=" (XAV1(J), PACK1.IDENT(PACK1.ONE)) THEN
341 FAILED ("INCORRECT VALUE OF XAV1(" &
342 INTEGER'IMAGE(J) & ") (1)");
343 END IF;
344 END LOOP;
345
346 FOR J IN XAT1'RANGE LOOP
347 XAT1(J).VALU(I);
348 IF I /= IDENT_INT(1) THEN
349 FAILED ("INCORRECT RETURN VALUE FROM XAT1(" &
350 INTEGER'IMAGE(J) & ").VALU (1)");
351 END IF;
352 END LOOP;
353
354 PROC1 (XRI1, XRA1, XRR1, XRP1, XRV1, XRT1,
355 XAI1, XAA1, XAR1, XAP1, XAV1, XAT1);
356
357 IF XRI1 /= IDENT_INT(2) THEN
358 FAILED ("INCORRECT VALUE OF XRI1 (2)");
359 END IF;
360
361 IF XRA1 /= (IDENT_INT(2),IDENT_INT(2),IDENT_INT(2)) THEN
362 FAILED ("INCORRECT VALUE OF XRA1 (2)");
363 END IF;
364
365 IF XRR1 /= (D => 1, FIELD1 => IDENT_INT(2)) THEN
366 FAILED ("INCORRECT VALUE OF XRR1 (2)");
367 END IF;
368
369 IF XRP1 /= IDENT(REC.RP1) OR XRP1.ALL /= IDENT_INT(2) THEN
370 FAILED ("INCORRECT VALUE OF XRP1 (2)");
371 END IF;
372
373 IF PACK1."/=" (XRV1, PACK1.IDENT(PACK1.TWO)) THEN
374 FAILED ("INCORRECT VALUE OF XRV1 (2)");
375 END IF;
376
377 XRT1.VALU(I);
378 IF I /= IDENT_INT(2) THEN
379 FAILED ("INCORRECT RETURN VALUE FROM XRT1.VALU (2)");
380 END IF;
381
382 FOR J IN XAI1'RANGE LOOP
383 IF XAI1(J) /= IDENT_INT(2) THEN
384 FAILED ("INCORRECT VALUE OF XAI1(" &
385 INTEGER'IMAGE(J) & ") (2)");
386 END IF;
387 END LOOP;
388
389 FOR J IN XAA1'RANGE LOOP
390 IF XAA1(J) /= (IDENT_INT(2),IDENT_INT(2),IDENT_INT(2))
391 THEN
392 FAILED ("INCORRECT VALUE OF XAA1(" &
393 INTEGER'IMAGE(J) & ") (2)");
394 END IF;
395 END LOOP;
396
397 FOR J IN XAR1'RANGE LOOP
398 IF XAR1(J) /= (D => 1, FIELD1 => IDENT_INT(2)) THEN
399 FAILED ("INCORRECT VALUE OF XAR1(" &
400 INTEGER'IMAGE(J) & ") (2)");
401 END IF;
402 END LOOP;
403
404 FOR J IN XAP1'RANGE LOOP
405 IF XAP1(J) /= IDENT(AP1(J)) OR
406 XAP1(J).ALL /= IDENT_INT(2) THEN
407 FAILED ("INCORRECT VALUE OF XAP1(" &
408 INTEGER'IMAGE(J) & ") (2)");
409 END IF;
410 END LOOP;
411
412 FOR J IN XAV1'RANGE LOOP
413 IF PACK1."/=" (XAV1(J), PACK1.IDENT(PACK1.TWO)) THEN
414 FAILED ("INCORRECT VALUE OF XAV1(" &
415 INTEGER'IMAGE(J) & ") (2)");
416 END IF;
417 END LOOP;
418
419 FOR J IN XAT1'RANGE LOOP
420 XAT1(J).VALU(I);
421 IF I /= IDENT_INT(2) THEN
422 FAILED ("INCORRECT RETURN VALUE FROM XAT1(" &
423 INTEGER'IMAGE(J) & ").VALU (2)");
424 END IF;
425 END LOOP;
426
427 CHK_TASK.ENTRY1(XRI1, XRA1, XRR1, XRP1, XRV1, XRT1,
428 XAI1, XAA1, XAR1, XAP1, XAV1, XAT1);
429
430 IF XRI1 /= IDENT_INT(3) THEN
431 FAILED ("INCORRECT VALUE OF XRI1 (3)");
432 END IF;
433
434 IF XRA1 /= (IDENT_INT(3),IDENT_INT(3),IDENT_INT(3)) THEN
435 FAILED ("INCORRECT VALUE OF XRA1 (3)");
436 END IF;
437
438 IF XRR1 /= (D => 1, FIELD1 => IDENT_INT(3)) THEN
439 FAILED ("INCORRECT VALUE OF XRR1 (3)");
440 END IF;
441
442 IF XRP1 /= IDENT(REC.RP1) OR XRP1.ALL /= IDENT_INT(3) THEN
443 FAILED ("INCORRECT VALUE OF XRP1 (3)");
444 END IF;
445
446 IF PACK1."/=" (XRV1, PACK1.IDENT(PACK1.THREE)) THEN
447 FAILED ("INCORRECT VALUE OF XRV1 (3)");
448 END IF;
449
450 XRT1.VALU(I);
451 IF I /= IDENT_INT(3) THEN
452 FAILED ("INCORRECT RETURN VALUE OF XRT1.VALU (3)");
453 END IF;
454
455 FOR J IN XAI1'RANGE LOOP
456 IF XAI1(J) /= IDENT_INT(3) THEN
457 FAILED ("INCORRECT VALUE OF XAI1(" &
458 INTEGER'IMAGE(J) & ") (3)");
459 END IF;
460 END LOOP;
461
462 FOR J IN XAA1'RANGE LOOP
463 IF XAA1(J) /= (IDENT_INT(3),IDENT_INT(3),IDENT_INT(3))
464 THEN
465 FAILED ("INCORRECT VALUE OF XAA1(" &
466 INTEGER'IMAGE(J) & ") (3)");
467 END IF;
468 END LOOP;
469
470 FOR J IN XAR1'RANGE LOOP
471 IF XAR1(J) /= (D => 1, FIELD1 => IDENT_INT(3)) THEN
472 FAILED ("INCORRECT VALUE OF XAR1(" &
473 INTEGER'IMAGE(J) & ") (3)");
474 END IF;
475 END LOOP;
476
477 FOR J IN XAP1'RANGE LOOP
478 IF XAP1(J) /= IDENT(AP1(J)) OR
479 XAP1(J).ALL /= IDENT_INT(3) THEN
480 FAILED ("INCORRECT VALUE OF XAP1(" &
481 INTEGER'IMAGE(J) & ") (3)");
482 END IF;
483 END LOOP;
484
485 FOR J IN XAV1'RANGE LOOP
486 IF PACK1."/=" (XAV1(J), PACK1.IDENT(PACK1.THREE)) THEN
487 FAILED ("INCORRECT VALUE OF XAV1(" &
488 INTEGER'IMAGE(J) & ") (3)");
489 END IF;
490 END LOOP;
491
492 FOR J IN XAT1'RANGE LOOP
493 XAT1(J).VALU(I);
494 IF I /= IDENT_INT(3) THEN
495 FAILED ("INCORRECT RETURN VALUE FROM XAT1(" &
496 INTEGER'IMAGE(J) & ").VALU (3)");
497 END IF;
498 END LOOP;
499
500 XRI1 := XRI1 + 1;
501 XRA1 := (XRA1(1)+1, XRA1(2)+1, XRA1(3)+1);
502 XRR1 := (D => 1, FIELD1 => XRR1.FIELD1 + 1);
503 XRP1 := NEW INTEGER'(XRP1.ALL + 1);
504 XRV1 := PACK1.NEXT(XRV1);
505 XRT1.NEXT;
506 XAI1 := (OTHERS => XAI1(XAI1'FIRST) + 1);
507 XAA1 := (OTHERS => (OTHERS => XAA1(XAA1'FIRST)(1) + 1));
508 XAR1 := (OTHERS => (D => 1,
509 FIELD1 => (XAR1(XAR1'FIRST).FIELD1 + 1)));
510 XAP1 := (OTHERS => NEW INTEGER'(XAP1(XAP1'FIRST).ALL + 1));
511 FOR J IN XAV1'RANGE LOOP
512 XAV1(J) := PACK1.NEXT(XAV1(J));
513 END LOOP;
514 FOR J IN XAT1'RANGE LOOP
515 XAT1(J).NEXT;
516 END LOOP;
517
518 IF XRI1 /= IDENT_INT(4) THEN
519 FAILED ("INCORRECT VALUE OF XRI1 (4)");
520 END IF;
521
522 IF XRA1 /= (IDENT_INT(4),IDENT_INT(4),IDENT_INT(4)) THEN
523 FAILED ("INCORRECT VALUE OF XRA1 (4)");
524 END IF;
525
526 IF XRR1 /= (D => 1, FIELD1 => IDENT_INT(4)) THEN
527 FAILED ("INCORRECT VALUE OF XRR1 (4)");
528 END IF;
529
530 IF XRP1 /= IDENT(REC.RP1) OR XRP1.ALL /= IDENT_INT(4) THEN
531 FAILED ("INCORRECT VALUE OF XRP1 (4)");
532 END IF;
533
534 IF PACK1."/=" (XRV1, PACK1.IDENT(PACK1.FOUR)) THEN
535 FAILED ("INCORRECT VALUE OF XRV1 (4)");
536 END IF;
537
538 XRT1.VALU(I);
539 IF I /= IDENT_INT(4) THEN
540 FAILED ("INCORRECT RETURN VALUE OF XRT1.VALU (4)");
541 END IF;
542
543 FOR J IN XAI1'RANGE LOOP
544 IF XAI1(J) /= IDENT_INT(4) THEN
545 FAILED ("INCORRECT VALUE OF XAI1(" &
546 INTEGER'IMAGE(J) & ") (4)");
547 END IF;
548 END LOOP;
549
550 FOR J IN XAA1'RANGE LOOP
551 IF XAA1(J) /= (IDENT_INT(4),IDENT_INT(4),IDENT_INT(4))
552 THEN
553 FAILED ("INCORRECT VALUE OF XAA1(" &
554 INTEGER'IMAGE(J) & ") (4)");
555 END IF;
556 END LOOP;
557
558 FOR J IN XAR1'RANGE LOOP
559 IF XAR1(J) /= (D => 1, FIELD1 => IDENT_INT(4)) THEN
560 FAILED ("INCORRECT VALUE OF XAR1(" &
561 INTEGER'IMAGE(J) & ") (4)");
562 END IF;
563 END LOOP;
564
565 FOR J IN XAP1'RANGE LOOP
566 IF XAP1(J) /= IDENT(AP1(J)) OR
567 XAP1(J).ALL /= IDENT_INT(4) THEN
568 FAILED ("INCORRECT VALUE OF XAP1(" &
569 INTEGER'IMAGE(J) & ") (4)");
570 END IF;
571 END LOOP;
572
573 FOR J IN XAV1'RANGE LOOP
574 IF PACK1."/=" (XAV1(J), PACK1.IDENT(PACK1.FOUR)) THEN
575 FAILED ("INCORRECT VALUE OF XAV1(" &
576 INTEGER'IMAGE(J) & ") (4)");
577 END IF;
578 END LOOP;
579
580 FOR J IN XAT1'RANGE LOOP
581 XAT1(J).VALU(I);
582 IF I /= IDENT_INT(4) THEN
583 FAILED ("INCORRECT RETURN VALUE FROM XAT1(" &
584 INTEGER'IMAGE(J) & ").VALU (4)");
585 END IF;
586 END LOOP;
587
588 REC.RI1 := REC.RI1 + 1;
589 REC.RA1 := (REC.RA1(1)+1, REC.RA1(2)+1, REC.RA1(3)+1);
590 REC.RR1 := (D => 1, FIELD1 => REC.RR1.FIELD1 + 1);
591 REC.RP1 := NEW INTEGER'(REC.RP1.ALL + 1);
592 REC.RV1 := PACK1.NEXT(REC.RV1);
593 REC.RT1.NEXT;
594 AI1 := (OTHERS => AI1(XAI1'FIRST) + 1);
595 AA1 := (OTHERS => (OTHERS => AA1(XAA1'FIRST)(1) + 1));
596 AR1 := (OTHERS => (D => 1,
597 FIELD1 => (AR1(XAR1'FIRST).FIELD1 + 1)));
598 AP1 := (OTHERS => NEW INTEGER'(AP1(XAP1'FIRST).ALL + 1));
599 FOR J IN XAV1'RANGE LOOP
600 AV1(J) := PACK1.NEXT(AV1(J));
601 END LOOP;
602 FOR J IN XAT1'RANGE LOOP
603 AT1(J).NEXT;
604 END LOOP;
605
606 IF XRI1 /= IDENT_INT(5) THEN
607 FAILED ("INCORRECT VALUE OF XRI1 (5)");
608 END IF;
609
610 IF XRA1 /= (IDENT_INT(5),IDENT_INT(5),IDENT_INT(5)) THEN
611 FAILED ("INCORRECT VALUE OF XRA1 (5)");
612 END IF;
613
614 IF XRR1 /= (D => 1, FIELD1 => IDENT_INT(5)) THEN
615 FAILED ("INCORRECT VALUE OF XRR1 (5)");
616 END IF;
617
618 IF XRP1 /= IDENT(REC.RP1) OR XRP1.ALL /= IDENT_INT(5) THEN
619 FAILED ("INCORRECT VALUE OF XRP1 (5)");
620 END IF;
621
622 IF PACK1."/=" (XRV1, PACK1.IDENT(PACK1.FIVE)) THEN
623 FAILED ("INCORRECT VALUE OF XRV1 (5)");
624 END IF;
625
626 XRT1.VALU(I);
627 IF I /= IDENT_INT(5) THEN
628 FAILED ("INCORRECT RETURN VALUE OF XRT1.VALU (5)");
629 END IF;
630
631 FOR J IN XAI1'RANGE LOOP
632 IF XAI1(J) /= IDENT_INT(5) THEN
633 FAILED ("INCORRECT VALUE OF XAI1(" &
634 INTEGER'IMAGE(J) & ") (5)");
635 END IF;
636 END LOOP;
637
638 FOR J IN XAA1'RANGE LOOP
639 IF XAA1(J) /= (IDENT_INT(5),IDENT_INT(5),IDENT_INT(5))
640 THEN
641 FAILED ("INCORRECT VALUE OF XAA1(" &
642 INTEGER'IMAGE(J) & ") (5)");
643 END IF;
644 END LOOP;
645
646 FOR J IN XAR1'RANGE LOOP
647 IF XAR1(J) /= (D => 1, FIELD1 => IDENT_INT(5)) THEN
648 FAILED ("INCORRECT VALUE OF XAR1(" &
649 INTEGER'IMAGE(J) & ") (5)");
650 END IF;
651 END LOOP;
652
653 FOR J IN XAP1'RANGE LOOP
654 IF XAP1(J) /= IDENT(AP1(J)) OR
655 XAP1(J).ALL /= IDENT_INT(5) THEN
656 FAILED ("INCORRECT VALUE OF XAP1(" &
657 INTEGER'IMAGE(J) & ") (5)");
658 END IF;
659 END LOOP;
660
661 FOR J IN XAV1'RANGE LOOP
662 IF PACK1."/=" (XAV1(J), PACK1.IDENT(PACK1.FIVE)) THEN
663 FAILED ("INCORRECT VALUE OF XAV1(" &
664 INTEGER'IMAGE(J) & ") (5)");
665 END IF;
666 END LOOP;
667
668 FOR J IN XAT1'RANGE LOOP
669 XAT1(J).VALU(I);
670 IF I /= IDENT_INT(5) THEN
671 FAILED ("INCORRECT RETURN VALUE FROM XAT1(" &
672 INTEGER'IMAGE(J) & ").VALU (5)");
673 END IF;
674 END LOOP;
675
676 END PROC;
677
678 BEGIN
679 TEST ("C85006B", "CHECK THAT A COMPONENT OR SLICE OF A VARIABLE " &
680 "CREATED BY A SUBPROGRAM 'IN OUT' FORMAL " &
681 "PARAMETER CAN BE RENAMED AND HAS THE CORRECT " &
682 "VALUE, AND THAT THE NEW NAME CAN BE USED IN " &
683 "AN ASSIGNMENT STATEMENT AND PASSED ON AS AN " &
684 "ACTUAL SUBPROGRAM OR ENTRY 'IN OUT' OR 'OUT' " &
685 "PARAMETER, AND AS AN ACTUAL GENERIC 'IN OUT' " &
686 "PARAMETER, AND THAT WHEN THE VALUE OF THE " &
687 "RENAMED VARIABLE IS CHANGED, THE NEW VALUE IS " &
688 "REFLECTED BY THE VALUE OF THE NEW NAME");
689
690 PROC (DREC, DAI1, DAA1, DAR1, DAP1, DAV1, DAT1);
691
692 DREC.RT1.STOP;
693
694 FOR I IN DAT1'RANGE LOOP
695 DAT1(I).STOP;
696 END LOOP;
697
698 RESULT;
699 END C85006B;