|
|
1.1 root 1: PROGRAM FM256 00010256
2: C DATE***82/08/02*18.33.46
3: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/
4: C AUDIT FCVS78 V2.0
5: C 00020256
6: C 00030256
7: C 00040256
8: C THIS ROUTINE IS A TEST OF THE DO STATEMENT. THE DO IS TESTED 00050256
9: C BOTH OUTSIDE AND INSIDE THE BLOCK-IF STRUCTURE. TESTS ARE MADE OF00060256
10: C THE DO-VARIABLE WHEN THE DO BECOMES INACTIVE. OTHER TESTS CHECK 00070256
11: C LOOP AND INCREMENTATION PROCESSING. THE DO-LOOP EXECUTION 00080256
12: C IS TESTED FOR THOSE CONDITIONS WHICH MAKE THE DO-LOOP INACTIVE. 00090256
13: C 00100256
14: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110256
15: C X3.9-1978 00120256
16: C SECTION 11.10, DO STATEMENT 00130256
17: C SECTION 11.10.1, RANGE OF A DO-LOOP 00140256
18: C SECTION 11.10.2, ACTIVE AND INACTIVE DO-LOOPS 00150256
19: C SECTION 11.10.3, EXECUTING A DO STATEMENT 00160256
20: C SECTION 11.10.4, LOOP CONTROL PROCESSING 00170256
21: C SECTION 11.10.5, EXECUTION OF THE RANGE 00180256
22: C SECTION 11.10.6, TERMINAL STATEMENT EXECUTION 00190256
23: C SECTION 11.10.7, INCREMENTATION PROCESSING 00200256
24: C 00210256
25: C FM012 - TESTS THE DO STATEMENT WITH THE FORTRAN 66 CONCEPTS OF 00220256
26: C EXTENDED RANGE OF A DO STATEMENT. 00230256
27: C 00240256
28: C 00250256
29: C 00260256
30: C ******************************************************************00270256
31: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00280256
32: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00290256
33: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00300256
34: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00310256
35: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00320256
36: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00330256
37: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00340256
38: C THE RESULT OF EXECUTING THESE TESTS. 00350256
39: C 00360256
40: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00370256
41: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00380256
42: C 00390256
43: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00400256
44: C DEPARTMENT OF THE NAVY 00410256
45: C FEDERAL COBOL COMPILER TESTING SERVICE 00420256
46: C WASHINGTON, D.C. 20376 00430256
47: C 00440256
48: C ******************************************************************00450256
49: C 00460256
50: C 00470256
51: IMPLICIT LOGICAL (L) 00480256
52: IMPLICIT CHARACTER*14 (C) 00490256
53: C 00500256
54: C 00510256
55: C 00520256
56: C INITIALIZATION SECTION. 00530256
57: C 00540256
58: C INITIALIZE CONSTANTS 00550256
59: C ******************** 00560256
60: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00570256
61: I01 = 5 00580256
62: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00590256
63: I02 = 6 00600256
64: C SYSTEM ENVIRONMENT SECTION 00610256
65: C 00620256
66: I01 = 5 00630256
67: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00640256
68: C (UNIT NUMBER FOR CARD READER). 00650256
69: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00660256
70: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00670256
71: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00680256
72: C 00690256
73: I02 = 6 00700256
74: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00710256
75: C (UNIT NUMBER FOR PRINTER). 00720256
76: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00730256
77: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00740256
78: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00750256
79: C 00760256
80: IVPASS = 0 00770256
81: IVFAIL = 0 00780256
82: IVDELE = 0 00790256
83: ICZERO = 0 00800256
84: C 00810256
85: C WRITE OUT PAGE HEADERS 00820256
86: C 00830256
87: WRITE (I02,90002) 00840256
88: WRITE (I02,90006) 00850256
89: WRITE (I02,90008) 00860256
90: WRITE (I02,90004) 00870256
91: WRITE (I02,90010) 00880256
92: WRITE (I02,90004) 00890256
93: WRITE (I02,90016) 00900256
94: WRITE (I02,90001) 00910256
95: WRITE (I02,90004) 00920256
96: WRITE (I02,90012) 00930256
97: WRITE (I02,90014) 00940256
98: WRITE (I02,90004) 00950256
99: C 00960256
100: C 00970256
101: C **** FCVS PROGRAM 256 - TEST 001 **** 00980256
102: C 00990256
103: C TEST 001 CHECKS THE SIMPLE DO STATEMENT WITH THE OPTIONAL 01000256
104: C COMMAS AND ALL DO PARAMETERS SPECIFIED. THE LOOP IS ACTIVE FOR 01010256
105: C TEN COUNTS. THE FINAL VALUE OF THE INTEGER COUNTER SHOULD BE 01020256
106: C EQUAL TO TEN (10). THE FORM OF THE DO STATEMENT USED IN THIS TEST01030256
107: C IS SHOWN BELOW - 01040256
108: C 01050256
109: C DO S, I = E1, E2, E3 01060256
110: C 01070256
111: C 01080256
112: IVTNUM = 1 01090256
113: IF (ICZERO) 30010, 0010, 30010 01100256
114: 0010 CONTINUE 01110256
115: IVCOMP = 0 01120256
116: DO 0012, IVON01 = 1, 10, 1 01130256
117: IVCOMP = IVCOMP + 1 01140256
118: 0012 CONTINUE 01150256
119: IVCORR = 10 01160256
120: 40010 IF ( IVCOMP - 10 ) 20010, 10010, 20010 01170256
121: 30010 IVDELE = IVDELE + 1 01180256
122: WRITE (I02,80000) IVTNUM 01190256
123: IF (ICZERO) 10010, 0021, 20010 01200256
124: 10010 IVPASS = IVPASS + 1 01210256
125: WRITE (I02,80002) IVTNUM 01220256
126: GO TO 0021 01230256
127: 20010 IVFAIL = IVFAIL + 1 01240256
128: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01250256
129: 0021 CONTINUE 01260256
130: C 01270256
131: C **** FCVS PROGRAM 256 - TEST 002 **** 01280256
132: C 01290256
133: C TEST 002 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THAT THE COMMAS01300256
134: C THAT ARE OPTIONAL HAVE BEEN DELETED AS A SYNTAX CHECK. 01310256
135: C 01320256
136: C THE INCREMENTATION PARAMETER IS OPTIONAL AND NOT PRESENT IN 01330256
137: C THIS TEST. ACCORDING TO SECTION 11.10.3, IF E3 DOES NOT APPEAR01340256
138: C THEN M3 HAS A VALUE OF ONE. THE DO STATEMENT FOR THIS TEST IS OF 01350256
139: C THE FORM SHOWN BELOW - 01360256
140: C 01370256
141: C DO S I = E1, E2 01380256
142: C 01390256
143: C 01400256
144: IVTNUM = 2 01410256
145: IF (ICZERO) 30020, 0020, 30020 01420256
146: 0020 CONTINUE 01430256
147: IVCOMP = 0 01440256
148: DO 0022 IVON01 = 1, 10 01450256
149: IVCOMP = IVCOMP + 1 01460256
150: 0022 CONTINUE 01470256
151: IVCORR = 10 01480256
152: 40020 IF ( IVCOMP - 10 ) 20020, 10020, 20020 01490256
153: 30020 IVDELE = IVDELE + 1 01500256
154: WRITE (I02,80000) IVTNUM 01510256
155: IF (ICZERO) 10020, 0031, 20020 01520256
156: 10020 IVPASS = IVPASS + 1 01530256
157: WRITE (I02,80002) IVTNUM 01540256
158: GO TO 0031 01550256
159: 20020 IVFAIL = IVFAIL + 1 01560256
160: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01570256
161: 0031 CONTINUE 01580256
162: C 01590256
163: C **** FCVS PROGRAM 256 - TEST 003 **** 01600256
164: C 01610256
165: C TEST 003 HAS A DO STATEMENT INSIDE A BLOCKED IF STRUCTURE. 01620256
166: C THE LOGICAL EXPRESSION IS TRUE SO THE DO-LOOP SHOULD BE EXECUTED 01630256
167: C A TOTAL OF TEN TIMES. 01640256
168: C 01650256
169: C 01660256
170: IVTNUM = 3 01670256
171: IF (ICZERO) 30030, 0030, 30030 01680256
172: 0030 CONTINUE 01690256
173: IVCOMP = 0 01700256
174: LVON01 = .TRUE. 01710256
175: IF ( LVON01 ) THEN 01720256
176: DO 0032, IVON01 = 1, 10, 1 01730256
177: IVCOMP = IVCOMP + 1 01740256
178: 0032 CONTINUE 01750256
179: END IF 01760256
180: IVCORR = 10 01770256
181: 40030 IF ( IVCOMP - 10 ) 20030, 10030, 20030 01780256
182: 30030 IVDELE = IVDELE + 1 01790256
183: WRITE (I02,80000) IVTNUM 01800256
184: IF (ICZERO) 10030, 0041, 20030 01810256
185: 10030 IVPASS = IVPASS + 1 01820256
186: WRITE (I02,80002) IVTNUM 01830256
187: GO TO 0041 01840256
188: 20030 IVFAIL = IVFAIL + 1 01850256
189: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01860256
190: 0041 CONTINUE 01870256
191: C 01880256
192: C **** FCVS PROGRAM 256 - TEST 004 **** 01890256
193: C 01900256
194: C TEST 004 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THAT THE DO 01910256
195: C STATEMENT IS LOCATED IN AN ELSE IF-BLOCK. THE DO-LOOP SHOULD BE 01920256
196: C EXECUTED FIVE (5) TIMES. 01930256
197: C 01940256
198: C 01950256
199: IVTNUM = 4 01960256
200: IF (ICZERO) 30040, 0040, 30040 01970256
201: 0040 CONTINUE 01980256
202: IVCOMP = 0 01990256
203: LVON01 = .FALSE. 02000256
204: LVON02 = .TRUE. 02010256
205: IF ( LVON01 ) THEN 02020256
206: IVCOMP = 32000 02030256
207: ELSE IF ( LVON02 ) THEN 02040256
208: DO 0042 IVON01 = 1, 5 02050256
209: IVCOMP = IVCOMP + 1 02060256
210: 0042 CONTINUE 02070256
211: END IF 02080256
212: IVCORR = 5 02090256
213: 40040 IF ( IVCOMP - 5 ) 20040, 10040, 20040 02100256
214: 30040 IVDELE = IVDELE + 1 02110256
215: WRITE (I02,80000) IVTNUM 02120256
216: IF (ICZERO) 10040, 0051, 20040 02130256
217: 10040 IVPASS = IVPASS + 1 02140256
218: WRITE (I02,80002) IVTNUM 02150256
219: GO TO 0051 02160256
220: 20040 IVFAIL = IVFAIL + 1 02170256
221: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02180256
222: 0051 CONTINUE 02190256
223: C 02200256
224: C **** FCVS PROGRAM 256 - TEST 005 **** 02210256
225: C 02220256
226: C TEST 005 IS SIMILAR TO THE PREVIOUS TWO TESTS EXCEPT THAT THE 02230256
227: C DO STATEMENT IS CONTAINED IN AN ELSE-BLOCK. THE DO-LOOP SHOULD BE02240256
228: C EXECUTED A TOTAL OF 3 TIMES. 02250256
229: C 02260256
230: C 02270256
231: IVTNUM = 5 02280256
232: IF (ICZERO) 30050, 0050, 30050 02290256
233: 0050 CONTINUE 02300256
234: IVCOMP = 0 02310256
235: LVON01 = .FALSE. 02320256
236: LVON02 = .FALSE. 02330256
237: IF ( LVON01 ) THEN 02340256
238: IVCOMP = 100 02350256
239: ELSE IF ( LVON02 ) THEN 02360256
240: IVCOMP = 1000 02370256
241: ELSE 02380256
242: DO 0052, IVON01 = 1, 3 02390256
243: IVCOMP = IVCOMP + 1 02400256
244: 0052 CONTINUE 02410256
245: END IF 02420256
246: IVCORR = 3 02430256
247: 40050 IF ( IVCOMP - 3 ) 20050, 10050, 20050 02440256
248: 30050 IVDELE = IVDELE + 1 02450256
249: WRITE (I02,80000) IVTNUM 02460256
250: IF (ICZERO) 10050, 0061, 20050 02470256
251: 10050 IVPASS = IVPASS + 1 02480256
252: WRITE (I02,80002) IVTNUM 02490256
253: GO TO 0061 02500256
254: 20050 IVFAIL = IVFAIL + 1 02510256
255: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02520256
256: 0061 CONTINUE 02530256
257: C 02540256
258: C **** FCVS PROGRAM 256 - TEST 006 **** 02550256
259: C 02560256
260: C TEST 006 HAS A BLOCKED IF STRUCTURE INSIDE A DO-LOOP. 02570256
261: C THE LOOP IS EXECUTED THREE (3) TIMES. ALL THREE PARTS OF THE 02580256
262: C BLOCK-IF STRUCTURE SHOULD BE EXECUTED. 02590256
263: C 02600256
264: C 02610256
265: IVTNUM = 6 02620256
266: IF (ICZERO) 30060, 0060, 30060 02630256
267: 0060 CONTINUE 02640256
268: IVCOMP = 1 02650256
269: DO 0062, IVON01 = 3, 5, 1 02660256
270: IF ( IVON01 .LE. 3 ) THEN 02670256
271: IVCOMP = IVCOMP * 2 02680256
272: ELSE IF ( IVON01 .GT. 3 .AND. IVON01 .LT. 5 ) THEN 02690256
273: IVCOMP = IVCOMP * 3 02700256
274: ELSE 02710256
275: IVCOMP = IVCOMP * 5 02720256
276: END IF 02730256
277: 0062 CONTINUE 02740256
278: C 02750256
279: C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 ****02760256
280: C 02770256
281: IVCORR = 30 02780256
282: 40060 IF ( IVCOMP - 30 ) 20060, 10060, 20060 02790256
283: 30060 IVDELE = IVDELE + 1 02800256
284: WRITE (I02,80000) IVTNUM 02810256
285: IF (ICZERO) 10060, 0071, 20060 02820256
286: 10060 IVPASS = IVPASS + 1 02830256
287: WRITE (I02,80002) IVTNUM 02840256
288: GO TO 0071 02850256
289: 20060 IVFAIL = IVFAIL + 1 02860256
290: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02870256
291: 0071 CONTINUE 02880256
292: C 02890256
293: C 02900256
294: C THE FOLLOWING SERIES OF TESTS CHECK THE DO-VARIABLE WHEN THE 02910256
295: C DO-LOOP BECOMES INACTIVE. ACCORDING TO SECTION 11.10.2, WHEN A 02920256
296: C DO-LOOP BECOMES INACTIVE, THE DO-VARIABLE OF THE DO-LOOP RETAINS 02930256
297: C ITS LAST DEFINED VALUE. 02940256
298: C 02950256
299: C 02960256
300: C 02970256
301: C **** FCVS PROGRAM 256 - TEST 007 **** 02980256
302: C 02990256
303: C TEST 007 CHECKS THAT THE DO-VARIABLE CONTAINS ITS LAST DEFINED 03000256
304: C VALUE WHEN THE ITERATION COUNT IS ZERO. 03010256
305: C 03020256
306: C 03030256
307: IVTNUM = 7 03040256
308: IF (ICZERO) 30070, 0070, 30070 03050256
309: 0070 CONTINUE 03060256
310: IVCOMP = 0 03070256
311: IVON02 = 0 03080256
312: DO 0072 IVON01 = 100, 105, 2 03090256
313: IVON02 = IVON02 + 1 03100256
314: 0072 CONTINUE 03110256
315: IVCOMP = IVON01 03120256
316: IVCORR = 106 03130256
317: 40070 IF ( IVCOMP - 106 ) 20070, 10070, 20070 03140256
318: 30070 IVDELE = IVDELE + 1 03150256
319: WRITE (I02,80000) IVTNUM 03160256
320: IF (ICZERO) 10070, 0081, 20070 03170256
321: 10070 IVPASS = IVPASS + 1 03180256
322: WRITE (I02,80002) IVTNUM 03190256
323: GO TO 0081 03200256
324: 20070 IVFAIL = IVFAIL + 1 03210256
325: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03220256
326: 0081 CONTINUE 03230256
327: C 03240256
328: C **** FCVS PROGRAM 256 - TEST 008 **** 03250256
329: C 03260256
330: C TEST 008 CHECKS THAT THE LOOP COUNTER IN THE PREVIOUS TEST HAD 03270256
331: C A VALUE OF THREE TO SHOW THAT THE DO-LOOP WAS EXECUTED THREE TIMES03280256
332: C BEFORE TERMINATING ( BECOMMING INACTIVE ). 03290256
333: C 03300256
334: C 03310256
335: IVTNUM = 8 03320256
336: IF (ICZERO) 30080, 0080, 30080 03330256
337: 0080 CONTINUE 03340256
338: IVCOMP = 0 03350256
339: IVCOMP = IVON02 03360256
340: IVCORR = 3 03370256
341: 40080 IF ( IVCOMP - 3 ) 20080, 10080, 20080 03380256
342: 30080 IVDELE = IVDELE + 1 03390256
343: WRITE (I02,80000) IVTNUM 03400256
344: IF (ICZERO) 10080, 0091, 20080 03410256
345: 10080 IVPASS = IVPASS + 1 03420256
346: WRITE (I02,80002) IVTNUM 03430256
347: GO TO 0091 03440256
348: 20080 IVFAIL = IVFAIL + 1 03450256
349: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03460256
350: 0091 CONTINUE 03470256
351: C 03480256
352: C **** FCVS PROGRAM 256 - TEST 009 **** 03490256
353: C 03500256
354: C TEST 009 CHECKS THAT A DO-LOOP BECOMES INACTIVE IF THERE IS A 03510256
355: C TRANSFER OF CONTROL OUTSIDE THE RANGE OF THE DO-LOOP. THE TRANS- 03520256
356: C FER MUST BE INSIDE OF THE SAME PROGRAM UNIT - NOT A CALL OR 03530256
357: C FUNCTION REFERENCE TO A SUBPROGRAM. 03540256
358: C 03550256
359: C THIS IS A SIGNIFICANT DIFFERENCE BETWEEN FORTRAN 66 AND FORTRAN03560256
360: C 77. FORTRAN 66 HAD AN EXTENDED RANGE OF THE DO FEATURE WHICH 03570256
361: C ALLOWED FOR A TRANSFER OUTSIDE THE RANGE OF A DO-LOOP WITHOUT 03580256
362: C MAKING THE DO-LOOP INACTIVE. 03590256
363: C 03600256
364: C 03610256
365: IVTNUM = 9 03620256
366: IF (ICZERO) 30090, 0090, 30090 03630256
367: 0090 CONTINUE 03640256
368: IVCOMP = 0 03650256
369: DO 0092 IVON01 = 1, 7 03660256
370: IF ( IVON01 .GE. 3 ) GO TO 0093 03670256
371: 0092 CONTINUE 03680256
372: 0093 IVCOMP = IVON01 03690256
373: IVCORR = 3 03700256
374: 40090 IF ( IVCOMP - 3 ) 20090, 10090, 20090 03710256
375: 30090 IVDELE = IVDELE + 1 03720256
376: WRITE (I02,80000) IVTNUM 03730256
377: IF (ICZERO) 10090, 0101, 20090 03740256
378: 10090 IVPASS = IVPASS + 1 03750256
379: WRITE (I02,80002) IVTNUM 03760256
380: GO TO 0101 03770256
381: 20090 IVFAIL = IVFAIL + 1 03780256
382: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03790256
383: 0101 CONTINUE 03800256
384: C 03810256
385: C **** FCVS PROGRAM 256 - TEST 010 **** 03820256
386: C 03830256
387: C TEST 010 CHECKS FOR AN INITIAL COUNT EQUAL TO ZERO BECAUSE 03840256
388: C M1 IS GREATER THAN M2 AND M3 IS GREATER THAN ZERO - SEE SECTION 03850256
389: C 11.10.3 FOR CONDITIONS WHICH MAKE THE ITERATION COUNT ZERO. 03860256
390: C THE LOOP SHOULD NOT BE EXECUTED AT ALL. 03870256
391: C 03880256
392: C 03890256
393: IVTNUM = 10 03900256
394: IF (ICZERO) 30100, 0100, 30100 03910256
395: 0100 CONTINUE 03920256
396: IVCOMP = 0 03930256
397: DO 0102, IVON01 = 100, 10, 3 03940256
398: IVCOMP = IVCOMP + 1 03950256
399: 0102 CONTINUE 03960256
400: IVCORR = 0 03970256
401: 40100 IF ( IVCOMP ) 20100, 10100, 20100 03980256
402: 30100 IVDELE = IVDELE + 1 03990256
403: WRITE (I02,80000) IVTNUM 04000256
404: IF (ICZERO) 10100, 0111, 20100 04010256
405: 10100 IVPASS = IVPASS + 1 04020256
406: WRITE (I02,80002) IVTNUM 04030256
407: GO TO 0111 04040256
408: 20100 IVFAIL = IVFAIL + 1 04050256
409: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04060256
410: 0111 CONTINUE 04070256
411: C 04080256
412: C **** FCVS PROGRAM 256 - TEST 011 **** 04090256
413: C 04100256
414: C TEST 011 CHECKS FOR THE PROPER EXECUTION OF THE STEPS AS SHOWN 04110256
415: C IN SECTION 11.10.3 - EXECUTING A DO STATEMENT. THE VARIABLE IVON004120256
416: C SHOULD HAVE BEEN SET TO 100. THE ITERATION COUNT IS ZERO BY THE 04130256
417: C FORMULA IN 11.10.3(3). AS DESCRIBED IN SECTION 11.10.4 - THE 04140256
418: C ITERATION COUNT IS TESTED. IF IT IS NOT ZERO, EXECUTION OF THE 04150256
419: C FIRST STATEMENT IN THE RANGE OF THE DO-LOOP BEGINS. IF THE 04160256
420: C ITERATION COUNT IS ZERO, THE DO-LOOP BECOMES INACTIVE. 04170256
421: C 04180256
422: C 04190256
423: IVTNUM = 11 04200256
424: IF (ICZERO) 30110, 0110, 30110 04210256
425: 0110 CONTINUE 04220256
426: IVCOMP = 0 04230256
427: IVCOMP = IVON01 04240256
428: IVCORR = 100 04250256
429: 40110 IF ( IVCOMP - 100 ) 20110, 10110, 20110 04260256
430: 30110 IVDELE = IVDELE + 1 04270256
431: WRITE (I02,80000) IVTNUM 04280256
432: IF (ICZERO) 10110, 0121, 20110 04290256
433: 10110 IVPASS = IVPASS + 1 04300256
434: WRITE (I02,80002) IVTNUM 04310256
435: GO TO 0121 04320256
436: 20110 IVFAIL = IVFAIL + 1 04330256
437: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04340256
438: 0121 CONTINUE 04350256
439: C 04360256
440: C 04370256
441: C THE FOLLOWING TWO TESTS ARE SIMILAR TO THE PREVIOUS TWO TESTS 04380256
442: C IN THAT THE PARAMETERS OF THE DO STATEMENT MAKE THE ITERATION 04390256
443: C COUNT ZERO WHEN THE DO STATEMENT IS EXECUTED. 04400256
444: C 04410256
445: C 04420256
446: C 04430256
447: C **** FCVS PROGRAM 256 - TEST 012 **** 04440256
448: C 04450256
449: C TEST 012 HAS M1 LESS THAN M2, BUT M3 IS NEGATIVE. THE LOOP 04460256
450: C SHOULD NOT BE EXECUTED AT ALL. 04470256
451: C 04480256
452: C 04490256
453: IVTNUM = 12 04500256
454: IF (ICZERO) 30120, 0120, 30120 04510256
455: 0120 CONTINUE 04520256
456: IVCOMP = 0 04530256
457: DO 0122 IVON01 = 10, 100, -3 04540256
458: IVCOMP = IVCOMP + 1 04550256
459: 0122 CONTINUE 04560256
460: IVCORR = 0 04570256
461: 40120 IF ( IVCOMP ) 20120, 10120, 20120 04580256
462: 30120 IVDELE = IVDELE + 1 04590256
463: WRITE (I02,80000) IVTNUM 04600256
464: IF (ICZERO) 10120, 0131, 20120 04610256
465: 10120 IVPASS = IVPASS + 1 04620256
466: WRITE (I02,80002) IVTNUM 04630256
467: GO TO 0131 04640256
468: 20120 IVFAIL = IVFAIL + 1 04650256
469: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04660256
470: 0131 CONTINUE 04670256
471: C 04680256
472: C **** FCVS PROGRAM 256 - TEST 013 **** 04690256
473: C 04700256
474: C TEST 013 CHECKS THAT THE VALUE RETAINED FOR THE DO-VARIABLE 04710256
475: C IN THE PREVIOUS TEST IS EQUAL TO THE INITIAL PARAMETER VALUE - M3.04720256
476: C 04730256
477: C 04740256
478: IVTNUM = 13 04750256
479: IF (ICZERO) 30130, 0130, 30130 04760256
480: 0130 CONTINUE 04770256
481: IVCOMP = 0 04780256
482: IVCOMP = IVON01 04790256
483: IVCORR = 10 04800256
484: 40130 IF ( IVCOMP - 10 ) 20130, 10130, 20130 04810256
485: 30130 IVDELE = IVDELE + 1 04820256
486: WRITE (I02,80000) IVTNUM 04830256
487: IF (ICZERO) 10130, 0141, 20130 04840256
488: 10130 IVPASS = IVPASS + 1 04850256
489: WRITE (I02,80002) IVTNUM 04860256
490: GO TO 0141 04870256
491: 20130 IVFAIL = IVFAIL + 1 04880256
492: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04890256
493: 0141 CONTINUE 04900256
494: C 04910256
495: C **** FCVS PROGRAM 256 - TEST 014 **** 04920256
496: C 04930256
497: C TEST 014 CHECKS FOR ONE EXECUTION OF THE RANGE OF A DO-LOOP 04940256
498: C ACCORDING TO THE FORMULA SHOWN IN 11.10.3(3) WITH M1 = M2. 04950256
499: C 04960256
500: C THE DO-LOOPS IN THIS TEST ARE A NEST OF THREE EACH WITH ITS 04970256
501: C OWN TERMINAL STATEMENT. 04980256
502: C 04990256
503: C 05000256
504: IVTNUM = 14 05010256
505: IF (ICZERO) 30140, 0140, 30140 05020256
506: 0140 CONTINUE 05030256
507: IVCOMP = 1 05040256
508: DO 0144 IVON01 = 1, 1, 1 05050256
509: IVCOMP = IVCOMP * 2 05060256
510: DO 0143 IVON02 = 10,10,10 05070256
511: IVCOMP = IVCOMP * 3 05080256
512: DO 0142, IVON03 = 100, 100, -2 05090256
513: IVCOMP = IVCOMP * 5 05100256
514: 0142 CONTINUE 05110256
515: 0143 CONTINUE 05120256
516: 0144 CONTINUE 05130256
517: C 05140256
518: C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 ***05150256
519: C 05160256
520: IVCORR = 30 05170256
521: 40140 IF ( IVCOMP - 30 ) 20140, 10140, 20140 05180256
522: 30140 IVDELE = IVDELE + 1 05190256
523: WRITE (I02,80000) IVTNUM 05200256
524: IF (ICZERO) 10140, 0151, 20140 05210256
525: 10140 IVPASS = IVPASS + 1 05220256
526: WRITE (I02,80002) IVTNUM 05230256
527: GO TO 0151 05240256
528: 20140 IVFAIL = IVFAIL + 1 05250256
529: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05260256
530: 0151 CONTINUE 05270256
531: C 05280256
532: C **** FCVS PROGRAM 256 - TEST 015 **** 05290256
533: C 05300256
534: C TEST 015 IS A CHECK ON THE FIRST EXAMPLE SHOWN IN SECTION 05310256
535: C 11.10.7. THIS IS A TEST OF INCREMENTATION PROCESSING OF TWO NEST 05320256
536: C DO-LOOPS HAVING THE SAME TERMINAL STATEMENT. 05330256
537: C 05340256
538: C THIS IS A TEST OF A DO-LOOP THAT BECOMES ACTIVE INSIDE AN 05350256
539: C ALREADY ACTIVE DO-LOOP. 05360256
540: C 05370256
541: C 05380256
542: IVTNUM = 15 05390256
543: IF (ICZERO) 30150, 0150, 30150 05400256
544: 0150 CONTINUE 05410256
545: IVCOMP = 0 05420256
546: IVON01 = 0 05430256
547: DO 0152 IVON02 = 1, 10 05440256
548: IVON03 = IVON02 05450256
549: DO 0152 IVON04 = 1, 5 05460256
550: IVON05 = IVON04 05470256
551: 0152 IVON01 = IVON01 + 1 05480256
552: 0153 CONTINUE 05490256
553: IVCOMP = IVON02 05500256
554: C THIS IS THE VALUE FOR I IN THE EXAMPLE. 05510256
555: IVCORR = 11 05520256
556: 40150 IF ( IVCOMP - 11 ) 20150, 10150, 20150 05530256
557: 30150 IVDELE = IVDELE + 1 05540256
558: WRITE (I02,80000) IVTNUM 05550256
559: IF (ICZERO) 10150, 0161, 20150 05560256
560: 10150 IVPASS = IVPASS + 1 05570256
561: WRITE (I02,80002) IVTNUM 05580256
562: GO TO 0161 05590256
563: 20150 IVFAIL = IVFAIL + 1 05600256
564: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05610256
565: 0161 CONTINUE 05620256
566: C 05630256
567: C **** FCVS PROGRAM 256 - TEST 016 **** 05640256
568: C 05650256
569: C TEST 016 CHECKS THE VALUE OF J (IVON03) IN THE FIRST EXAMPLE. 05660256
570: C 05670256
571: C 05680256
572: IVTNUM = 16 05690256
573: IF (ICZERO) 30160, 0160, 30160 05700256
574: 0160 CONTINUE 05710256
575: IVCOMP = 0 05720256
576: IVCOMP = IVON03 05730256
577: IVCORR = 10 05740256
578: 40160 IF ( IVCOMP - 10 ) 20160, 10160, 20160 05750256
579: 30160 IVDELE = IVDELE + 1 05760256
580: WRITE (I02,80000) IVTNUM 05770256
581: IF (ICZERO) 10160, 0171, 20160 05780256
582: 10160 IVPASS = IVPASS + 1 05790256
583: WRITE (I02,80002) IVTNUM 05800256
584: GO TO 0171 05810256
585: 20160 IVFAIL = IVFAIL + 1 05820256
586: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05830256
587: 0171 CONTINUE 05840256
588: C 05850256
589: C **** FCVS PROGRAM 256 - TEST 017 **** 05860256
590: C 05870256
591: C TEST 017 CHECKS THE VALUE OF K (IVON04) IN THE FIRST EXAMPLE. 05880256
592: C 05890256
593: C 05900256
594: IVTNUM = 17 05910256
595: IF (ICZERO) 30170, 0170, 30170 05920256
596: 0170 CONTINUE 05930256
597: IVCOMP = 0 05940256
598: IVCOMP = IVON04 05950256
599: IVCORR = 6 05960256
600: 40170 IF ( IVCOMP - 6 ) 20170, 10170, 20170 05970256
601: 30170 IVDELE = IVDELE + 1 05980256
602: WRITE (I02,80000) IVTNUM 05990256
603: IF (ICZERO) 10170, 0181, 20170 06000256
604: 10170 IVPASS = IVPASS + 1 06010256
605: WRITE (I02,80002) IVTNUM 06020256
606: GO TO 0181 06030256
607: 20170 IVFAIL = IVFAIL + 1 06040256
608: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06050256
609: 0181 CONTINUE 06060256
610: C 06070256
611: C **** FCVS PROGRAM 256 - TEST 018 **** 06080256
612: C 06090256
613: C TEST 018 CHECKS THE VALUE OF L (IVON05) IN THE FIRST EXAMPLE. 06100256
614: C 06110256
615: C 06120256
616: IVTNUM = 18 06130256
617: IF (ICZERO) 30180, 0180, 30180 06140256
618: 0180 CONTINUE 06150256
619: IVCOMP = 0 06160256
620: IVCOMP = IVON05 06170256
621: IVCORR = 5 06180256
622: 40180 IF ( IVCOMP - 5 ) 20180, 10180, 20180 06190256
623: 30180 IVDELE = IVDELE + 1 06200256
624: WRITE (I02,80000) IVTNUM 06210256
625: IF (ICZERO) 10180, 0191, 20180 06220256
626: 10180 IVPASS = IVPASS + 1 06230256
627: WRITE (I02,80002) IVTNUM 06240256
628: GO TO 0191 06250256
629: 20180 IVFAIL = IVFAIL + 1 06260256
630: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06270256
631: 0191 CONTINUE 06280256
632: C 06290256
633: C **** FCVS PROGRAM 256 - TEST 019 **** 06300256
634: C 06310256
635: C TEST 019 CHECKS THE VALUE OF N (IVON01) IN THE FIRST EXAMPLE. 06320256
636: C 06330256
637: C 06340256
638: IVTNUM = 19 06350256
639: IF (ICZERO) 30190, 0190, 30190 06360256
640: 0190 CONTINUE 06370256
641: IVCOMP = 0 06380256
642: IVCOMP = IVON01 06390256
643: IVCORR = 50 06400256
644: 40190 IF ( IVCOMP - 50 ) 20190, 10190, 20190 06410256
645: 30190 IVDELE = IVDELE + 1 06420256
646: WRITE (I02,80000) IVTNUM 06430256
647: IF (ICZERO) 10190, 0201, 20190 06440256
648: 10190 IVPASS = IVPASS + 1 06450256
649: WRITE (I02,80002) IVTNUM 06460256
650: GO TO 0201 06470256
651: 20190 IVFAIL = IVFAIL + 1 06480256
652: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06490256
653: 0201 CONTINUE 06500256
654: C 06510256
655: C **** FCVS PROGRAM 256 - TEST 020 **** 06520256
656: C 06530256
657: C TEST 020 IS A CHECK ON THE SECOND EXAMPLE IN SECTION 11.10.7. 06540256
658: C IN THIS EXAMPLE, THE INNER DO-LOOP BECOMES ACTIVE AND THEN 06550256
659: C IMMEDIATELY INACTIVE INSIDE AN ALREADY ACTIVE OUTER DO-LOOP. 06560256
660: C 06570256
661: C ALTHOUGH IN SOME WAYS SIMILAR TO THE FIRST EXAMPLE, THE SECOND 06580256
662: C EXAMPLE SHOULD HAVE DIFFERENT FINAL VALUES ON THE INTEGER COUNTERS06590256
663: C AND THE VALUE OF L (IVON10) WILL NOT BE TESTED BECAUSE IT IS NOT 06600256
664: C DEFINED DURING THE RANGE OF THE DO-LOOP INVOLVED. 06610256
665: C 06620256
666: C 06630256
667: IVTNUM = 20 06640256
668: IF (ICZERO) 30200, 0200, 30200 06650256
669: 0200 CONTINUE 06660256
670: IVCOMP = 0 06670256
671: IVON06 = 0 06680256
672: DO 0202 IVON07 = 1, 10 06690256
673: IVON08 = IVON07 06700256
674: DO 0202 IVON09 = 5, 1 06710256
675: IVON10 = IVON09 06720256
676: 0202 IVON06 = IVON06 + 1 06730256
677: 0203 CONTINUE 06740256
678: IVCOMP = IVON07 06750256
679: C THIS IS THE VALUE FOR I IN THE SECOND EXAMPLE. 06760256
680: IVCORR = 11 06770256
681: 40200 IF ( IVCOMP - 11 ) 20200, 10200, 20200 06780256
682: 30200 IVDELE = IVDELE + 1 06790256
683: WRITE (I02,80000) IVTNUM 06800256
684: IF (ICZERO) 10200, 0211, 20200 06810256
685: 10200 IVPASS = IVPASS + 1 06820256
686: WRITE (I02,80002) IVTNUM 06830256
687: GO TO 0211 06840256
688: 20200 IVFAIL = IVFAIL + 1 06850256
689: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06860256
690: 0211 CONTINUE 06870256
691: C 06880256
692: C **** FCVS PROGRAM 256 - TEST 021 **** 06890256
693: C 06900256
694: C TEST 021 CHECKS THE VALUE OF J (IVON08) IN THE SECOND EXAMPLE. 06910256
695: C 06920256
696: C 06930256
697: IVTNUM = 21 06940256
698: IF (ICZERO) 30210, 0210, 30210 06950256
699: 0210 CONTINUE 06960256
700: IVCOMP = 0 06970256
701: IVCOMP = IVON08 06980256
702: IVCORR = 10 06990256
703: 40210 IF ( IVCOMP - 10 ) 20210, 10210, 20210 07000256
704: 30210 IVDELE = IVDELE + 1 07010256
705: WRITE (I02,80000) IVTNUM 07020256
706: IF (ICZERO) 10210, 0221, 20210 07030256
707: 10210 IVPASS = IVPASS + 1 07040256
708: WRITE (I02,80002) IVTNUM 07050256
709: GO TO 0221 07060256
710: 20210 IVFAIL = IVFAIL + 1 07070256
711: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07080256
712: 0221 CONTINUE 07090256
713: C 07100256
714: C **** FCVS PROGRAM 256 - TEST 022 **** 07110256
715: C 07120256
716: C TEST 022 CHECKS THE VALUE OF K (IVON09) IN THE SECOND EXAMPLE. 07130256
717: C 07140256
718: C 07150256
719: IVTNUM = 22 07160256
720: IF (ICZERO) 30220, 0220, 30220 07170256
721: 0220 CONTINUE 07180256
722: IVCOMP = 0 07190256
723: IVCOMP = IVON09 07200256
724: IVCORR = 5 07210256
725: 40220 IF ( IVCOMP - 5 ) 20220, 10220, 20220 07220256
726: 30220 IVDELE = IVDELE + 1 07230256
727: WRITE (I02,80000) IVTNUM 07240256
728: IF (ICZERO) 10220, 0231, 20220 07250256
729: 10220 IVPASS = IVPASS + 1 07260256
730: WRITE (I02,80002) IVTNUM 07270256
731: GO TO 0231 07280256
732: 20220 IVFAIL = IVFAIL + 1 07290256
733: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07300256
734: 0231 CONTINUE 07310256
735: C 07320256
736: C **** FCVS PROGRAM 256 - TEST 023 **** 07330256
737: C 07340256
738: C TEST 023 CHECKS THE VALUE OF N (IVON06) IN THE SECOND EXAMPLE. 07350256
739: C 07360256
740: C 07370256
741: IVTNUM = 23 07380256
742: IF (ICZERO) 30230, 0230, 30230 07390256
743: 0230 CONTINUE 07400256
744: IVCOMP = 0 07410256
745: IVCOMP = IVON06 07420256
746: IVCORR = 0 07430256
747: 40230 IF ( IVCOMP - 0 ) 20230, 10230, 20230 07440256
748: 30230 IVDELE = IVDELE + 1 07450256
749: WRITE (I02,80000) IVTNUM 07460256
750: IF (ICZERO) 10230, 0241, 20230 07470256
751: 10230 IVPASS = IVPASS + 1 07480256
752: WRITE (I02,80002) IVTNUM 07490256
753: GO TO 0241 07500256
754: 20230 IVFAIL = IVFAIL + 1 07510256
755: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07520256
756: 0241 CONTINUE 07530256
757: C 07540256
758: C **** FCVS PROGRAM 256 - TEST 024 **** 07550256
759: C 07560256
760: C TEST 024 IS A CHECK ON USING A LOGICAL IF STATEMENT AS THE 07570256
761: C TERMINAL STATEMENT IN THE RANGE OF A DO-LOOP. THE LOGICAL IF 07580256
762: C STATEMENT HAS AN UNCONDITIONAL GO TO STATEMENT AS ITS EXECUTABLE 07590256
763: C STATEMENT AS ALLOWED IN SECTION 11.10. 07600256
764: C 07610256
765: C 07620256
766: IVTNUM = 24 07630256
767: IF (ICZERO) 30240, 0240, 30240 07640256
768: 0240 CONTINUE 07650256
769: IVCOMP = 0 07660256
770: DO 0242 IVON01 = 1, 10 07670256
771: IVCOMP = IVCOMP + 1 07680256
772: 0242 IF ( IVON01 .GE. 5 ) GO TO 0243 07690256
773: C 07700256
774: C 07710256
775: C IF THE LOGIC DOES NOT BRANCH OUT OF THE RANGE OF THE DO-LOOP WHEN 07720256
776: C THE DO-VARIABLE (IVON01) IS EQUAL TO FIVE (5), THEN IVCOMP WILL BE07730256
777: C SET BACK TO THE VALUE OF ZERO. 07740256
778: C 07750256
779: IVCOMP = 0 07760256
780: C 07770256
781: C 07780256
782: 0243 IVCORR = 5 07790256
783: 40240 IF ( IVCOMP - 5 ) 20240, 10240, 20240 07800256
784: 30240 IVDELE = IVDELE + 1 07810256
785: WRITE (I02,80000) IVTNUM 07820256
786: IF (ICZERO) 10240, 0251, 20240 07830256
787: 10240 IVPASS = IVPASS + 1 07840256
788: WRITE (I02,80002) IVTNUM 07850256
789: GO TO 0251 07860256
790: 20240 IVFAIL = IVFAIL + 1 07870256
791: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07880256
792: 0251 CONTINUE 07890256
793: C 07900256
794: C 07910256
795: C WRITE OUT TEST SUMMARY 07920256
796: C 07930256
797: WRITE (I02,90004) 07940256
798: WRITE (I02,90014) 07950256
799: WRITE (I02,90004) 07960256
800: WRITE (I02,90000) 07970256
801: WRITE (I02,90004) 07980256
802: WRITE (I02,90020) IVFAIL 07990256
803: WRITE (I02,90022) IVPASS 08000256
804: WRITE (I02,90024) IVDELE 08010256
805: STOP 08020256
806: 90001 FORMAT (1H ,24X,5HFM256) 08030256
807: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM256) 08040256
808: C 08050256
809: C FORMATS FOR TEST DETAIL LINES 08060256
810: C 08070256
811: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 08080256
812: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 08090256
813: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 08100256
814: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 08110256
815: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 08120256
816: C 08130256
817: C FORMAT STATEMENTS FOR PAGE HEADERS 08140256
818: C 08150256
819: 90002 FORMAT (1H1) 08160256
820: 90004 FORMAT (1H ) 08170256
821: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 08180256
822: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 08190256
823: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 08200256
824: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 08210256
825: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 08220256
826: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 08230256
827: C 08240256
828: C FORMAT STATEMENTS FOR RUN SUMMARY 08250256
829: C 08260256
830: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 08270256
831: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 08280256
832: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 08290256
833: END 08300256
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.