|
|
1.1 root 1: c
2: c comment section.
3: c
4: c fm021
5: c
6: c this routine tests the fortran data initialization
7: c statement. integer, real, and logical data types are tested
8: c using unsigned constants, signed constants, and logical
9: c constants.. integer, real, logical, and mixed type arrays
10: c are also tested.
11: c
12: c references
13: c american national standard programming language fortran,
14: c x3.9-1978
15: c
16: c section 4.1.3, data type preparation
17: c section 4.4.3, real constant
18: c section 9, data statement
19: c
20: integer ratn11(3)
21: logical lctn01, lctn02, latn11(3), ladn11
22: real iatn11(3)
23: dimension iadn11(3), radn11(4), ladn11(6), radn13(4), iadn12(4)
24: dimension iadn13(4)
25: c
26: data icon01/0/
27: data icon02/3/
28: data icon03/76/
29: data icon04/587/
30: data icon05/9999/
31: data icon06/32767/
32: data icon07/-0/
33: data icon08/-32766/
34: data icon09/00003/
35: data icon10/ 3 2 7 6 7 /
36: data lctn01/.true./
37: data lctn02/.false./
38: data rcon01/0./
39: data rcon02 /.0/
40: data rcon03/0.0/
41: data rcon04/32767./
42: data rcon05/-32766./
43: data rcon06/-000587./
44: data rcon07/99.99/
45: data rcon08/ -03. 2 7 6 6/
46: data iadn11(1)/3/, iadn11(3)/-587/, iadn11(2)/32767/
47: data iadn12/4*9999/
48: data iadn13/0,2*-32766,-587/
49: data ladn11/.true., .false., 2*.true., 2*.false./
50: data radn11/32767., -32.766, 2*587./
51: data latn11/.true., 2*.false./, iatn11/2*32767., -32766./
52: data ratn11/3*-32766/
53: data radn13/32.767e03, -3.2766e-01, .587e+03, 9e1/
54: c
55: c
56: c **********************************************************
57: c
58: c a compiler validation system for the fortran language
59: c based on specifications as defined in american national standard
60: c programming language fortran x3.9-1978, has been developed by the
61: c federal cobol compiler testing service. the fortran compiler
62: c validation system (fcvs) consists of audit routines, their related
63: c data, and an executive system. each audit routine is a fortran
64: c program, subprogram or function which includes tests of specific
65: c language elements and supporting procedures indicating the result
66: c of executing these tests.
67: c
68: c this particular program/subprogram/function contains features
69: c found only in the subset as defined in x3.9-1978.
70: c
71: c suggestions and comments should be forwarded to -
72: c
73: c department of the navy
74: c federal cobol compiler testing service
75: c washington, d.c. 20376
76: c
77: c **********************************************************
78: c
79: c
80: c
81: c initialization section
82: c
83: c initialize constants
84: c **************
85: c i01 contains the logical unit number for the card reader.
86: i01 = 5
87: c i02 contains the logical unit number for the printer.
88: i02 = 6
89: c system environment section
90: c
91: cx010 this card is replaced by contents of fexec x-010 control card.
92: c the cx010 card is for overriding the program default i01 = 5
93: c (unit number for card reader).
94: cx011 this card is replaced by contents of fexec x-011 control card.
95: c the cx011 card is for systems which require additional
96: c fortran statements for files associated with cx010 above.
97: c
98: cx020 this card is replaced by contents of fexec x-020 control card.
99: c the cx020 card is for overriding the program default i02 = 6
100: c (unit number for printer).
101: cx021 this card is replaced by contents of fexec x-021 control card.
102: c the cx021 card is for systems which require additional
103: c fortran statements for files associated with cx020 above.
104: c
105: ivpass=0
106: ivfail=0
107: ivdele=0
108: iczero=0
109: c
110: c write page headers
111: write (i02,90000)
112: write (i02,90001)
113: write (i02,90002)
114: write (i02, 90002)
115: write (i02,90003)
116: write (i02,90002)
117: write (i02,90004)
118: write (i02,90002)
119: write (i02,90011)
120: write (i02,90002)
121: write (i02,90002)
122: write (i02,90005)
123: write (i02,90006)
124: write (i02,90002)
125: ivtnum = 565
126: c
127: c **** test 565 ****
128: c test 565 - test of an integer variable set to the integer
129: c constant zero.
130: c
131: c
132: if (iczero) 35650, 5650, 35650
133: 5650 continue
134: go to 45650
135: 35650 ivdele = ivdele + 1
136: write (i02,80003) ivtnum
137: if (iczero) 45650, 5661, 45650
138: 45650 if ( icon01 - 0 ) 25650, 15650, 25650
139: 15650 ivpass = ivpass + 1
140: write (i02,80001) ivtnum
141: go to 5661
142: 25650 ivfail = ivfail + 1
143: ivcomp = icon01
144: ivcorr = 0
145: write (i02,80004) ivtnum, ivcomp ,ivcorr
146: 5661 continue
147: ivtnum = 566
148: c
149: c **** test 566 ****
150: c test 566 - test of an integer variable set to the integer
151: c constant 3.
152: c
153: c
154: if (iczero) 35660, 5660, 35660
155: 5660 continue
156: go to 45660
157: 35660 ivdele = ivdele + 1
158: write (i02,80003) ivtnum
159: if (iczero) 45660, 5671, 45660
160: 45660 if ( icon02 - 3 ) 25660, 15660, 25660
161: 15660 ivpass = ivpass + 1
162: write (i02,80001) ivtnum
163: go to 5671
164: 25660 ivfail = ivfail + 1
165: ivcomp = icon02
166: ivcorr = 3
167: write (i02,80004) ivtnum, ivcomp ,ivcorr
168: 5671 continue
169: ivtnum = 567
170: c
171: c **** test 567 ****
172: c test 567 - test of an integer variable set to the integer
173: c constant 76.
174: c
175: c
176: if (iczero) 35670, 5670, 35670
177: 5670 continue
178: go to 45670
179: 35670 ivdele = ivdele + 1
180: write (i02,80003) ivtnum
181: if (iczero) 45670, 5681, 45670
182: 45670 if ( icon03 - 76 ) 25670, 15670, 25670
183: 15670 ivpass = ivpass + 1
184: write (i02,80001) ivtnum
185: go to 5681
186: 25670 ivfail = ivfail + 1
187: ivcomp = icon03
188: ivcorr = 76
189: write (i02,80004) ivtnum, ivcomp ,ivcorr
190: 5681 continue
191: ivtnum = 568
192: c
193: c **** test 568 ****
194: c test 568 - test of an integer variable set to the integer
195: c constant 587.
196: c
197: c
198: if (iczero) 35680, 5680, 35680
199: 5680 continue
200: go to 45680
201: 35680 ivdele = ivdele + 1
202: write (i02,80003) ivtnum
203: if (iczero) 45680, 5691, 45680
204: 45680 if ( icon04 - 587 ) 25680, 15680, 25680
205: 15680 ivpass = ivpass + 1
206: write (i02,80001) ivtnum
207: go to 5691
208: 25680 ivfail = ivfail + 1
209: ivcomp = icon04
210: ivcorr = 587
211: write (i02,80004) ivtnum, ivcomp ,ivcorr
212: 5691 continue
213: ivtnum = 569
214: c
215: c **** test 569 ****
216: c test 569 - test of an integer variable set to the integer
217: c constant 9999.
218: c
219: c
220: if (iczero) 35690, 5690, 35690
221: 5690 continue
222: go to 45690
223: 35690 ivdele = ivdele + 1
224: write (i02,80003) ivtnum
225: if (iczero) 45690, 5701, 45690
226: 45690 if ( icon05 - 9999 ) 25690, 15690, 25690
227: 15690 ivpass = ivpass + 1
228: write (i02,80001) ivtnum
229: go to 5701
230: 25690 ivfail = ivfail + 1
231: ivcomp = icon05
232: ivcorr = 9999
233: write (i02,80004) ivtnum, ivcomp ,ivcorr
234: 5701 continue
235: ivtnum = 570
236: c
237: c **** test 570 ****
238: c test 570 - test of an integer variable set to the integer
239: c constant 32767.
240: c
241: c
242: if (iczero) 35700, 5700, 35700
243: 5700 continue
244: go to 45700
245: 35700 ivdele = ivdele + 1
246: write (i02,80003) ivtnum
247: if (iczero) 45700, 5711, 45700
248: 45700 if ( icon06 - 32767 ) 25700, 15700, 25700
249: 15700 ivpass = ivpass + 1
250: write (i02,80001) ivtnum
251: go to 5711
252: 25700 ivfail = ivfail + 1
253: ivcomp = icon06
254: ivcorr = 32767
255: write (i02,80004) ivtnum, ivcomp ,ivcorr
256: 5711 continue
257: ivtnum = 571
258: c
259: c **** test 571 ****
260: c test 571 - test of an integer variable set to the integer
261: c constant -0. note that signed zero and unsigned zero
262: c should be equal for any integer operation.
263: c
264: c
265: if (iczero) 35710, 5710, 35710
266: 5710 continue
267: go to 45710
268: 35710 ivdele = ivdele + 1
269: write (i02,80003) ivtnum
270: if (iczero) 45710, 5721, 45710
271: 45710 if ( icon07 - 0 ) 25710, 15710, 25710
272: 15710 ivpass = ivpass + 1
273: write (i02,80001) ivtnum
274: go to 5721
275: 25710 ivfail = ivfail + 1
276: ivcomp = icon07
277: ivcorr = -0
278: write (i02,80004) ivtnum, ivcomp ,ivcorr
279: 5721 continue
280: ivtnum = 572
281: c
282: c **** test 572 ****
283: c test 572 - test of an integer variable set to the integer
284: c constant (signed) -32766.
285: c
286: c
287: if (iczero) 35720, 5720, 35720
288: 5720 continue
289: go to 45720
290: 35720 ivdele = ivdele + 1
291: write (i02,80003) ivtnum
292: if (iczero) 45720, 5731, 45720
293: 45720 if ( icon08 + 32766 ) 25720, 15720, 25720
294: 15720 ivpass = ivpass + 1
295: write (i02,80001) ivtnum
296: go to 5731
297: 25720 ivfail = ivfail + 1
298: ivcomp = icon08
299: ivcorr = -32766
300: write (i02,80004) ivtnum, ivcomp ,ivcorr
301: 5731 continue
302: ivtnum = 573
303: c
304: c **** test 573 ****
305: c test 573 - test the effect of leading zero on an integer
306: c constant 00003.
307: c
308: c
309: if (iczero) 35730, 5730, 35730
310: 5730 continue
311: go to 45730
312: 35730 ivdele = ivdele + 1
313: write (i02,80003) ivtnum
314: if (iczero) 45730, 5741, 45730
315: 45730 if ( icon09 - 3 ) 25730, 15730, 25730
316: 15730 ivpass = ivpass + 1
317: write (i02,80001) ivtnum
318: go to 5741
319: 25730 ivfail = ivfail + 1
320: ivcomp = icon09
321: ivcorr = 3
322: write (i02,80004) ivtnum, ivcomp ,ivcorr
323: 5741 continue
324: ivtnum = 574
325: c
326: c **** test 574 ****
327: c test 574 - test of blanks imbedded in an integer constant
328: c which was / 3 2 7 6 7/ in the data initialization statement.
329: c
330: c
331: if (iczero) 35740, 5740, 35740
332: 5740 continue
333: go to 45740
334: 35740 ivdele = ivdele + 1
335: write (i02,80003) ivtnum
336: if (iczero) 45740, 5751, 45740
337: 45740 if ( icon10 - 32767 ) 25740, 15740, 25740
338: 15740 ivpass = ivpass + 1
339: write (i02,80001) ivtnum
340: go to 5751
341: 25740 ivfail = ivfail + 1
342: ivcomp = icon10
343: ivcorr = 32767
344: write (i02,80004) ivtnum, ivcomp ,ivcorr
345: 5751 continue
346: ivtnum = 575
347: c
348: c **** test 575 ****
349: c test 575 - test of a logical variable set to the logical
350: c constant .true.
351: c true path of a logical if statement is used in the test.
352: c
353: c
354: if (iczero) 35750, 5750, 35750
355: 5750 continue
356: ivon01 = 0
357: if ( lctn01 ) ivon01 = 1
358: go to 45750
359: 35750 ivdele = ivdele + 1
360: write (i02,80003) ivtnum
361: if (iczero) 45750, 5761, 45750
362: 45750 if ( ivon01 - 1 ) 25750, 15750, 25750
363: 15750 ivpass = ivpass + 1
364: write (i02,80001) ivtnum
365: go to 5761
366: 25750 ivfail = ivfail + 1
367: ivcomp = ivon01
368: ivcorr = 1
369: write (i02,80004) ivtnum, ivcomp ,ivcorr
370: 5761 continue
371: ivtnum = 576
372: c
373: c **** test 576 ****
374: c test 576 - test of a logical variable set to the logical
375: c constant .false. the false path of a logical if statement
376: c is also used in the test.
377: c
378: c
379: if (iczero) 35760, 5760, 35760
380: 5760 continue
381: ivon01 = 1
382: if ( lctn02 ) ivon01 = 0
383: go to 45760
384: 35760 ivdele = ivdele + 1
385: write (i02,80003) ivtnum
386: if (iczero) 45760, 5771, 45760
387: 45760 if ( ivon01 - 1 ) 25760, 15760, 25760
388: 15760 ivpass = ivpass + 1
389: write (i02,80001) ivtnum
390: go to 5771
391: 25760 ivfail = ivfail + 1
392: ivcomp = ivon01
393: ivcorr = 1
394: write (i02,80004) ivtnum, ivcomp ,ivcorr
395: 5771 continue
396: ivtnum = 577
397: c
398: c **** test 577 ****
399: c test 577 - real variable set to 0.
400: c
401: c
402: if (iczero) 35770, 5770, 35770
403: 5770 continue
404: go to 45770
405: 35770 ivdele = ivdele + 1
406: write (i02,80003) ivtnum
407: if (iczero) 45770, 5781, 45770
408: 45770 if ( rcon01 - 0. ) 25770, 15770, 25770
409: 15770 ivpass = ivpass + 1
410: write (i02,80001) ivtnum
411: go to 5781
412: 25770 ivfail = ivfail + 1
413: ivcomp = rcon01
414: ivcorr = 0
415: write (i02,80004) ivtnum, ivcomp ,ivcorr
416: 5781 continue
417: ivtnum = 578
418: c
419: c **** test 578 ****
420: c test 578 - real variable set to .0
421: c
422: c
423: if (iczero) 35780, 5780, 35780
424: 5780 continue
425: go to 45780
426: 35780 ivdele = ivdele + 1
427: write (i02,80003) ivtnum
428: if (iczero) 45780, 5791, 45780
429: 45780 if ( rcon02 - .0 ) 25780, 15780, 25780
430: 15780 ivpass = ivpass + 1
431: write (i02,80001) ivtnum
432: go to 5791
433: 25780 ivfail = ivfail + 1
434: ivcomp = rcon02
435: ivcorr = 0
436: write (i02,80004) ivtnum, ivcomp ,ivcorr
437: 5791 continue
438: ivtnum = 579
439: c
440: c **** test 579 ****
441: c test 579 - real variable set to 0.0
442: c
443: c
444: if (iczero) 35790, 5790, 35790
445: 5790 continue
446: go to 45790
447: 35790 ivdele = ivdele + 1
448: write (i02,80003) ivtnum
449: if (iczero) 45790, 5801, 45790
450: 45790 if ( rcon03 - 0.0 ) 25790, 15790, 25790
451: 15790 ivpass = ivpass + 1
452: write (i02,80001) ivtnum
453: go to 5801
454: 25790 ivfail = ivfail + 1
455: ivcomp = rcon03
456: ivcorr = 0
457: write (i02,80004) ivtnum, ivcomp ,ivcorr
458: 5801 continue
459: ivtnum = 580
460: c
461: c **** test 580 ****
462: c test 580 - real variable set to 32767.
463: c
464: c
465: if (iczero) 35800, 5800, 35800
466: 5800 continue
467: go to 45800
468: 35800 ivdele = ivdele + 1
469: write (i02,80003) ivtnum
470: if (iczero) 45800, 5811, 45800
471: 45800 if ( rcon04 - 32767. ) 25800, 15800, 25800
472: 15800 ivpass = ivpass + 1
473: write (i02,80001) ivtnum
474: go to 5811
475: 25800 ivfail = ivfail + 1
476: ivcomp = rcon04
477: ivcorr = 32767
478: write (i02,80004) ivtnum, ivcomp ,ivcorr
479: 5811 continue
480: ivtnum = 581
481: c
482: c **** test 581 ****
483: c test 581 - real variable set to -32766.
484: c
485: c
486: if (iczero) 35810, 5810, 35810
487: 5810 continue
488: go to 45810
489: 35810 ivdele = ivdele + 1
490: write (i02,80003) ivtnum
491: if (iczero) 45810, 5821, 45810
492: 45810 if ( rcon05 + 32766 ) 25810, 15810, 25810
493: 15810 ivpass = ivpass + 1
494: write (i02,80001) ivtnum
495: go to 5821
496: 25810 ivfail = ivfail + 1
497: ivcomp = rcon05
498: ivcorr = -32766
499: write (i02,80004) ivtnum, ivcomp ,ivcorr
500: 5821 continue
501: ivtnum = 582
502: c
503: c **** test 582 ****
504: c test 582 - real variable set to -000587. test of leading sign
505: c and leading zeros on a real constant.
506: c
507: c
508: if (iczero) 35820, 5820, 35820
509: 5820 continue
510: go to 45820
511: 35820 ivdele = ivdele + 1
512: write (i02,80003) ivtnum
513: if (iczero) 45820, 5831, 45820
514: 45820 if ( rcon06 + 587. ) 25820, 15820, 25820
515: 15820 ivpass = ivpass + 1
516: write (i02,80001) ivtnum
517: go to 5831
518: 25820 ivfail = ivfail + 1
519: ivcomp = rcon06
520: ivcorr = -587
521: write (i02,80004) ivtnum, ivcomp ,ivcorr
522: 5831 continue
523: ivtnum = 583
524: c
525: c **** test 583 ****
526: c test 583 - real variable set to 99.99
527: c
528: c
529: if (iczero) 35830, 5830, 35830
530: 5830 continue
531: go to 45830
532: 35830 ivdele = ivdele + 1
533: write (i02,80003) ivtnum
534: if (iczero) 45830, 5841, 45830
535: 45830 if ( rcon07 - 99.99 ) 25830, 15830, 25830
536: 15830 ivpass = ivpass + 1
537: write (i02,80001) ivtnum
538: go to 5841
539: 25830 ivfail = ivfail + 1
540: ivcomp = rcon07
541: ivcorr = 99
542: write (i02,80004) ivtnum, ivcomp ,ivcorr
543: 5841 continue
544: ivtnum = 584
545: c
546: c **** test 584 ****
547: c test 584 - real variable set to /-03. 2 7 6 6/ to test
548: c the effect of blanks imbedded in a real constant.
549: c
550: c
551: if (iczero) 35840, 5840, 35840
552: 5840 continue
553: go to 45840
554: 35840 ivdele = ivdele + 1
555: write (i02,80003) ivtnum
556: if (iczero) 45840, 5851, 45840
557: 45840 if ( rcon08 + 3.2766 ) 25840, 15840, 25840
558: 15840 ivpass = ivpass + 1
559: write (i02,80001) ivtnum
560: go to 5851
561: 25840 ivfail = ivfail + 1
562: ivcomp = rcon08
563: ivcorr = -3
564: write (i02,80004) ivtnum, ivcomp ,ivcorr
565: 5851 continue
566: ivtnum = 585
567: c
568: c **** test 585 ****
569: c test 585 - integer array element set to 3
570: c
571: c
572: if (iczero) 35850, 5850, 35850
573: 5850 continue
574: go to 45850
575: 35850 ivdele = ivdele + 1
576: write (i02,80003) ivtnum
577: if (iczero) 45850, 5861, 45850
578: 45850 if ( iadn11(1) - 3 ) 25850, 15850, 25850
579: 15850 ivpass = ivpass + 1
580: write (i02,80001) ivtnum
581: go to 5861
582: 25850 ivfail = ivfail + 1
583: ivcomp = iadn11(1)
584: ivcorr = 3
585: write (i02,80004) ivtnum, ivcomp ,ivcorr
586: 5861 continue
587: ivtnum = 586
588: c
589: c **** test 586 ****
590: c test 586 - integer array element set to 32767
591: c
592: c
593: if (iczero) 35860, 5860, 35860
594: 5860 continue
595: go to 45860
596: 35860 ivdele = ivdele + 1
597: write (i02,80003) ivtnum
598: if (iczero) 45860, 5871, 45860
599: 45860 if ( iadn11(2) - 32767 ) 25860, 15860, 25860
600: 15860 ivpass = ivpass + 1
601: write (i02,80001) ivtnum
602: go to 5871
603: 25860 ivfail = ivfail + 1
604: ivcomp = iadn11(2)
605: ivcorr = 32767
606: write (i02,80004) ivtnum, ivcomp ,ivcorr
607: 5871 continue
608: ivtnum = 587
609: c
610: c **** test 587 ****
611: c test 587 - integer array element set to -587
612: c
613: c
614: if (iczero) 35870, 5870, 35870
615: 5870 continue
616: go to 45870
617: 35870 ivdele = ivdele + 1
618: write (i02,80003) ivtnum
619: if (iczero) 45870, 5881, 45870
620: 45870 if ( iadn11(3) + 587 ) 25870, 15870, 25870
621: 15870 ivpass = ivpass + 1
622: write (i02,80001) ivtnum
623: go to 5881
624: 25870 ivfail = ivfail + 1
625: ivcomp = iadn11(3)
626: ivcorr = -587
627: write (i02,80004) ivtnum, ivcomp ,ivcorr
628: 5881 continue
629: ivtnum = 588
630: c
631: c **** test 588 ****
632: c test 588 - test of the repeat field /4*999/ in a data state.
633: c
634: c
635: if (iczero) 35880, 5880, 35880
636: 5880 continue
637: go to 45880
638: 35880 ivdele = ivdele + 1
639: write (i02,80003) ivtnum
640: if (iczero) 45880, 5891, 45880
641: 45880 if ( iadn12(3) - 9999 ) 25880, 15880, 25880
642: 15880 ivpass = ivpass + 1
643: write (i02,80001) ivtnum
644: go to 5891
645: 25880 ivfail = ivfail + 1
646: ivcomp = iadn12(3)
647: ivcorr = 9999
648: write (i02,80004) ivtnum, ivcomp ,ivcorr
649: 5891 continue
650: ivtnum = 589
651: c
652: c **** test 589 ****
653: c test 589 - test of setting the whole integer array elements
654: c in one data initialization statement. the first element
655: c is set to 0
656: c
657: c
658: if (iczero) 35890, 5890, 35890
659: 5890 continue
660: go to 45890
661: 35890 ivdele = ivdele + 1
662: write (i02,80003) ivtnum
663: if (iczero) 45890, 5901, 45890
664: 45890 if ( iadn13(1) - 0 ) 25890, 15890, 25890
665: 15890 ivpass = ivpass + 1
666: write (i02,80001) ivtnum
667: go to 5901
668: 25890 ivfail = ivfail + 1
669: ivcomp = iadn13(1)
670: ivcorr = 0
671: write (i02,80004) ivtnum, ivcomp ,ivcorr
672: 5901 continue
673: ivtnum = 590
674: c
675: c **** test 590 ****
676: c test 590 - see test 589. the second element was set to -32766
677: c
678: c
679: if (iczero) 35900, 5900, 35900
680: 5900 continue
681: go to 45900
682: 35900 ivdele = ivdele + 1
683: write (i02,80003) ivtnum
684: if (iczero) 45900, 5911, 45900
685: 45900 if ( iadn13(2) + 32766 ) 25900, 15900, 25900
686: 15900 ivpass = ivpass + 1
687: write (i02,80001) ivtnum
688: go to 5911
689: 25900 ivfail = ivfail + 1
690: ivcomp = iadn13(2)
691: ivcorr = -32766
692: write (i02,80004) ivtnum, ivcomp ,ivcorr
693: 5911 continue
694: ivtnum = 591
695: c
696: c **** test 591 ****
697: c test 591 - see test 589. the third element was set to -32766
698: c
699: c
700: if (iczero) 35910, 5910, 35910
701: 5910 continue
702: go to 45910
703: 35910 ivdele = ivdele + 1
704: write (i02,80003) ivtnum
705: if (iczero) 45910, 5921, 45910
706: 45910 if ( iadn13(3) + 32766 ) 25910, 15910, 25910
707: 15910 ivpass = ivpass + 1
708: write (i02,80001) ivtnum
709: go to 5921
710: 25910 ivfail = ivfail + 1
711: ivcomp = iadn13(3)
712: ivcorr = -32766
713: write (i02,80004) ivtnum, ivcomp ,ivcorr
714: 5921 continue
715: ivtnum = 592
716: c
717: c **** test 592 ****
718: c test 592 - see test 589. the fourth element was set to -587
719: c
720: c
721: if (iczero) 35920, 5920, 35920
722: 5920 continue
723: go to 45920
724: 35920 ivdele = ivdele + 1
725: write (i02,80003) ivtnum
726: if (iczero) 45920, 5931, 45920
727: 45920 if ( iadn13(4) + 587 ) 25920, 15920, 25920
728: 15920 ivpass = ivpass + 1
729: write (i02,80001) ivtnum
730: go to 5931
731: 25920 ivfail = ivfail + 1
732: ivcomp = iadn13(4)
733: ivcorr = -587
734: write (i02,80004) ivtnum, ivcomp ,ivcorr
735: 5931 continue
736: ivtnum = 593
737: c
738: c **** test 593 ****
739: c test 593 - test of setting the whole logical array in one
740: c data initialization statement. the first element is .true.
741: c the second and third elements are .false.
742: c the false path of a logical if statement is used testing 2.
743: c
744: c
745: if (iczero) 35930, 5930, 35930
746: 5930 continue
747: ivon01 = 1
748: if ( ladn11(2) ) ivon01 = 0
749: go to 45930
750: 35930 ivdele = ivdele + 1
751: write (i02,80003) ivtnum
752: if (iczero) 45930, 5941, 45930
753: 45930 if ( ivon01 - 1 ) 25930, 15930, 25930
754: 15930 ivpass = ivpass + 1
755: write (i02,80001) ivtnum
756: go to 5941
757: 25930 ivfail = ivfail + 1
758: ivcomp = ivon01
759: ivcorr = 1
760: write (i02,80004) ivtnum, ivcomp ,ivcorr
761: 5941 continue
762: ivtnum = 594
763: c
764: c **** test 594 ****
765: c test 594 - see test 593. the fourth element is tested
766: c with the true path of the logical if statement.
767: c
768: c
769: if (iczero) 35940, 5940, 35940
770: 5940 continue
771: ivon01 = 0
772: if ( ladn11(4) ) ivon01 = 1
773: go to 45940
774: 35940 ivdele = ivdele + 1
775: write (i02,80003) ivtnum
776: if (iczero) 45940, 5951, 45940
777: 45940 if ( ivon01 - 1 ) 25940, 15940, 25940
778: 15940 ivpass = ivpass + 1
779: write (i02,80001) ivtnum
780: go to 5951
781: 25940 ivfail = ivfail + 1
782: ivcomp = ivon01
783: ivcorr = 1
784: write (i02,80004) ivtnum, ivcomp ,ivcorr
785: 5951 continue
786: ivtnum = 595
787: c
788: c **** test 595 ****
789: c test 595 - a whole real array is set in one data initialization
790: c statement. the second element is -32.766
791: c
792: c
793: if (iczero) 35950, 5950, 35950
794: 5950 continue
795: go to 45950
796: 35950 ivdele = ivdele + 1
797: write (i02,80003) ivtnum
798: if (iczero) 45950, 5961, 45950
799: 45950 if ( radn11(2) + 32.766 ) 25950, 15950, 25950
800: 15950 ivpass = ivpass + 1
801: write (i02,80001) ivtnum
802: go to 5961
803: 25950 ivfail = ivfail + 1
804: ivcomp = radn11(2)
805: ivcorr = -32
806: write (i02,80004) ivtnum, ivcomp ,ivcorr
807: 5961 continue
808: ivtnum = 596
809: c
810: c **** test 596 ****
811: c test 596 - see test 595. the fourth element is set to 587
812: c by a repeat field.
813: c
814: c
815: if (iczero) 35960, 5960, 35960
816: 5960 continue
817: go to 45960
818: 35960 ivdele = ivdele + 1
819: write (i02,80003) ivtnum
820: if (iczero) 45960, 5971, 45960
821: 45960 if ( radn11(4) - 587 ) 25960, 15960, 25960
822: 15960 ivpass = ivpass + 1
823: write (i02,80001) ivtnum
824: go to 5971
825: 25960 ivfail = ivfail + 1
826: ivcomp = radn11(4)
827: ivcorr = 587
828: write (i02,80004) ivtnum, ivcomp ,ivcorr
829: 5971 continue
830: ivtnum = 597
831: c
832: c **** test 597 ****
833: c test 597 - test of mixed array element types in a single data
834: c initialization statement. the type logical statement contains
835: c the array declarations. the false path of a logical
836: c if statement tests the logical results.
837: c
838: c
839: if (iczero) 35970, 5970, 35970
840: 5970 continue
841: ivon01 = 1
842: if ( latn11(2) ) ivon01 = 0
843: go to 45970
844: 35970 ivdele = ivdele + 1
845: write (i02,80003) ivtnum
846: if (iczero) 45970, 5981, 45970
847: 45970 if ( ivon01 - 1 ) 25970, 15970, 25970
848: 15970 ivpass = ivpass + 1
849: write (i02,80001) ivtnum
850: go to 5981
851: 25970 ivfail = ivfail + 1
852: ivcomp = ivon01
853: ivcorr = 1
854: write (i02,80004) ivtnum, ivcomp ,ivcorr
855: 5981 continue
856: ivtnum = 598
857: c
858: c **** test 598 ****
859: c test 598 - type of the data was set explicitly real in the
860: c declarative for the array. data should be set to 32767.
861: c
862: c
863: if (iczero) 35980, 5980, 35980
864: 5980 continue
865: go to 45980
866: 35980 ivdele = ivdele + 1
867: write (i02,80003) ivtnum
868: if (iczero) 45980, 5991, 45980
869: 45980 if ( iatn11(2) - 32767. ) 25980, 15980, 25980
870: 15980 ivpass = ivpass + 1
871: write (i02,80001) ivtnum
872: go to 5991
873: 25980 ivfail = ivfail + 1
874: ivcomp = iatn11(2)
875: ivcorr = 32767
876: write (i02,80004) ivtnum, ivcomp ,ivcorr
877: 5991 continue
878: ivtnum = 599
879: c
880: c **** test 599 ****
881: c test 599 - type of the data was set explicitly integer in the
882: c declarative for the array. data should be set to -32766
883: c
884: c
885: if (iczero) 35990, 5990, 35990
886: 5990 continue
887: go to 45990
888: 35990 ivdele = ivdele + 1
889: write (i02,80003) ivtnum
890: if (iczero) 45990, 6001, 45990
891: 45990 if ( ratn11(2) + 32766 ) 25990, 15990, 25990
892: 15990 ivpass = ivpass + 1
893: write (i02,80001) ivtnum
894: go to 6001
895: 25990 ivfail = ivfail + 1
896: ivcomp = ratn11(2)
897: ivcorr = -32766
898: write (i02,80004) ivtnum, ivcomp ,ivcorr
899: 6001 continue
900: ivtnum = 600
901: c
902: c **** test 600 ****
903: c test 600 - test of real decimal constants using e-notation.
904: c see section 4.4.2. the value of the element should
905: c be set to 32767.
906: c
907: c
908: if (iczero) 36000, 6000, 36000
909: 6000 continue
910: go to 46000
911: 36000 ivdele = ivdele + 1
912: write (i02,80003) ivtnum
913: if (iczero) 46000, 6011, 46000
914: 46000 if ( radn13(1) - 32767. ) 26000, 16000, 26000
915: 16000 ivpass = ivpass + 1
916: write (i02,80001) ivtnum
917: go to 6011
918: 26000 ivfail = ivfail + 1
919: ivcomp = radn13(1)
920: ivcorr = 32767
921: write (i02,80004) ivtnum, ivcomp ,ivcorr
922: 6011 continue
923: ivtnum = 601
924: c
925: c **** test 601 ****
926: c test 601 - like test 600. real decimal constant value -.32766
927: c
928: c
929: if (iczero) 36010, 6010, 36010
930: 6010 continue
931: go to 46010
932: 36010 ivdele = ivdele + 1
933: write (i02,80003) ivtnum
934: if (iczero) 46010, 6021, 46010
935: 46010 if ( radn13(2) + .32766 ) 26010, 16010, 26010
936: 16010 ivpass = ivpass + 1
937: write (i02,80001) ivtnum
938: go to 6021
939: 26010 ivfail = ivfail + 1
940: ivcomp = radn13(2)
941: ivcorr = 0
942: write (i02,80004) ivtnum, ivcomp ,ivcorr
943: 6021 continue
944: ivtnum = 602
945: c
946: c **** test 602 ****
947: c test 602 - like test 600. real decimal constant value 587.
948: c
949: c
950: if (iczero) 36020, 6020, 36020
951: 6020 continue
952: go to 46020
953: 36020 ivdele = ivdele + 1
954: write (i02,80003) ivtnum
955: if (iczero) 46020, 6031, 46020
956: 46020 if ( radn13(3) - 587 ) 26020, 16020, 26020
957: 16020 ivpass = ivpass + 1
958: write (i02,80001) ivtnum
959: go to 6031
960: 26020 ivfail = ivfail + 1
961: ivcomp = radn13(3)
962: ivcorr = 587
963: write (i02,80004) ivtnum, ivcomp ,ivcorr
964: 6031 continue
965: ivtnum = 603
966: c
967: c **** test 603 ****
968: c test 603 - like test 600. real decimal constant value 90.
969: c
970: c
971: if (iczero) 36030, 6030, 36030
972: 6030 continue
973: go to 46030
974: 36030 ivdele = ivdele + 1
975: write (i02,80003) ivtnum
976: if (iczero) 46030, 6041, 46030
977: 46030 if ( radn13(4) - 90. ) 26030, 16030, 26030
978: 16030 ivpass = ivpass + 1
979: write (i02,80001) ivtnum
980: go to 6041
981: 26030 ivfail = ivfail + 1
982: ivcomp = radn13(4)
983: ivcorr = 90
984: write (i02,80004) ivtnum, ivcomp ,ivcorr
985: 6041 continue
986: c
987: c write page footings and run summaries
988: 99999 continue
989: write (i02,90002)
990: write (i02,90006)
991: write (i02,90002)
992: write (i02,90002)
993: write (i02,90007)
994: write (i02,90002)
995: write (i02,90008) ivfail
996: write (i02,90009) ivpass
997: write (i02,90010) ivdele
998: c
999: c
1000: c terminate routine execution
1001: stop
1002: c
1003: c format statements for page headers
1004: 90000 format (1h1)
1005: 90002 format (1h )
1006: 90001 format (1h ,10x,34hfortran compiler validation system)
1007: 90003 format (1h ,21x,11hversion 1.0)
1008: 90004 format (1h ,10x,38hfor official use only - copyright 1978)
1009: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect)
1010: 90006 format (1h ,5x,46h----------------------------------------------)
1011: 90011 format (1h ,18x,17hsubset level test)
1012: c
1013: c format statements for run summaries
1014: 90008 format (1h ,15x,i5,19h errors encountered)
1015: 90009 format (1h ,15x,i5,13h tests passed)
1016: 90010 format (1h ,15x,i5,14h tests deleted)
1017: c
1018: c format statements for test results
1019: 80001 format (1h ,4x,i5,7x,4hpass)
1020: 80002 format (1h ,4x,i5,7x,4hfail)
1021: 80003 format (1h ,4x,i5,7x,7hdeleted)
1022: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6)
1023: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5)
1024: c
1025: 90007 format (1h ,20x,20hend of program fm021)
1026: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.