|
|
1.1 root 1: PROGRAM FM254 00010254
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 00020254
6: C 00030254
7: C 00040254
8: C THIS ROUTINE IS A TEST OF THE ELSE IF-BLOCK. TESTS WITHIN THIS00050254
9: C ROUTINE ARE FOR THE SYNTAX OF THE BASIC ELSE IF STATEMENT AND 00060254
10: C ELSE IF-BLOCK STRUCTURE. 00070254
11: C 00080254
12: C REFERENCES 00090254
13: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00100254
14: C X3.9-1977 00110254
15: C SECTION 11.7, ELSE IF STATEMENT 00120254
16: C SECTION 11.7.1, ELSE IF-BLOCK 00130254
17: C SECTION 11.7.2, EXECUTION OF THE ELSE IF STATEMENT 00140254
18: C 00150254
19: C 00160254
20: C 00170254
21: C 00180254
22: C ******************************************************************00190254
23: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00200254
24: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00210254
25: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00220254
26: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00230254
27: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00240254
28: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00250254
29: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00260254
30: C THE RESULT OF EXECUTING THESE TESTS. 00270254
31: C 00280254
32: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00290254
33: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00300254
34: C 00310254
35: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00320254
36: C DEPARTMENT OF THE NAVY 00330254
37: C FEDERAL COBOL COMPILER TESTING SERVICE 00340254
38: C WASHINGTON, D.C. 20376 00350254
39: C 00360254
40: C ******************************************************************00370254
41: C 00380254
42: C 00390254
43: IMPLICIT LOGICAL (L) 00400254
44: IMPLICIT CHARACTER*14 (C) 00410254
45: C 00420254
46: DIMENSION LADN11(2) 00430254
47: LOGICAL LVTN01, LVTN02, LATN11(2), LADN11 00440254
48: DATA LADN11/.TRUE., .FALSE./ 00450254
49: C 00460254
50: C 00470254
51: C **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 4 **** 00480254
52: C 00490254
53: LFIS01 ( L ) = L .AND. L 00500254
54: C 00510254
55: C 00520254
56: C 00530254
57: C 00540254
58: C 00550254
59: C INITIALIZATION SECTION. 00560254
60: C 00570254
61: C INITIALIZE CONSTANTS 00580254
62: C ******************** 00590254
63: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00600254
64: I01 = 5 00610254
65: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00620254
66: I02 = 6 00630254
67: C SYSTEM ENVIRONMENT SECTION 00640254
68: C 00650254
69: I01 = 5 00660254
70: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00670254
71: C (UNIT NUMBER FOR CARD READER). 00680254
72: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00690254
73: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00700254
74: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00710254
75: C 00720254
76: I02 = 6 00730254
77: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00740254
78: C (UNIT NUMBER FOR PRINTER). 00750254
79: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00760254
80: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770254
81: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00780254
82: C 00790254
83: IVPASS = 0 00800254
84: IVFAIL = 0 00810254
85: IVDELE = 0 00820254
86: ICZERO = 0 00830254
87: C 00840254
88: C WRITE OUT PAGE HEADERS 00850254
89: C 00860254
90: WRITE (I02,90002) 00870254
91: WRITE (I02,90006) 00880254
92: WRITE (I02,90008) 00890254
93: WRITE (I02,90004) 00900254
94: WRITE (I02,90010) 00910254
95: WRITE (I02,90004) 00920254
96: WRITE (I02,90016) 00930254
97: WRITE (I02,90001) 00940254
98: WRITE (I02,90004) 00950254
99: WRITE (I02,90012) 00960254
100: WRITE (I02,90014) 00970254
101: WRITE (I02,90004) 00980254
102: C 00990254
103: C 01000254
104: C 01010254
105: C THE SYNTAX OF THE ELSE IF STATEMENTS IN THE TESTS TO FOLLOW IS 01020254
106: C 01030254
107: C IF ( E1 ) THEN 01040254
108: C IF-BLOCK 01050254
109: C ELSE IF ( E2 ) THEN 01060254
110: C ELSE IF-BLOCK 01070254
111: C END IF 01080254
112: C 01090254
113: C THE NEXT FOUR TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE 01100254
114: C AND FALSE FOR E1 AND E2 AS SHOWN BELOW - 01110254
115: C TEST NUMBER 1 2 3 4 01120254
116: C E1 F F T T 01130254
117: C E2 T F T F 01140254
118: C 01150254
119: C 01160254
120: C 01170254
121: C 01180254
122: C **** FCVS PROGRAM 254 - TEST 001 **** 01190254
123: C 01200254
124: C TEST 001 USES A VERY SIMPLE ELSE IF STATEMENT. THE EXPRESSION 01210254
125: C WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT .TRUE. AND THE 01220254
126: C EXECUTABLE STATEMENT WITHIN THE ELSE IF-BLOCK OF LEVEL ONE IS AN 01230254
127: C INTEGER ARITHMETIC ASSIGNMENT STATEMENT. IN THIS TEST THE LOGICAL01240254
128: C EXPRESSION E1 IS .FALSE. SO THE IF-BLOCK SHOULD NOT BE EXECUTED. 01250254
129: C THE LOGICAL EXPRESSION E2 IS .TRUE. SO THE ELSE IF-BLOCK SHOULD 01260254
130: C BE EXECUTED. 01270254
131: C 01280254
132: C 01290254
133: IVTNUM = 1 01300254
134: IF (ICZERO) 30010, 0010, 30010 01310254
135: 0010 CONTINUE 01320254
136: IVCOMP = 1 01330254
137: IF ( .FALSE. ) THEN 01340254
138: IVCOMP = IVCOMP * 2 01350254
139: ELSE IF ( .TRUE. ) THEN 01360254
140: IVCOMP = IVCOMP * 3 01370254
141: END IF 01380254
142: C 01390254
143: C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 01400254
144: C 01410254
145: IVCORR = 3 01420254
146: 40010 IF ( IVCOMP - 3 ) 20010, 10010, 20010 01430254
147: 30010 IVDELE = IVDELE + 1 01440254
148: WRITE (I02,80000) IVTNUM 01450254
149: IF (ICZERO) 10010, 0021, 20010 01460254
150: 10010 IVPASS = IVPASS + 1 01470254
151: WRITE (I02,80002) IVTNUM 01480254
152: GO TO 0021 01490254
153: 20010 IVFAIL = IVFAIL + 1 01500254
154: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01510254
155: 0021 CONTINUE 01520254
156: C 01530254
157: C **** FCVS PROGRAM 254 - TEST 002 **** 01540254
158: C 01550254
159: C TEST 002 HAS E1 .FALSE. AND E2 .FALSE.. NEITHER THE IF-BLOCK 01560254
160: C NOR THE ELSE IF-BLOCK SHOULD BE EXECUTED. 01570254
161: C 01580254
162: C 01590254
163: IVTNUM = 2 01600254
164: IF (ICZERO) 30020, 0020, 30020 01610254
165: 0020 CONTINUE 01620254
166: IVCOMP = 1 01630254
167: LVON01 = .FALSE. 01640254
168: LVON02 = .FALSE. 01650254
169: IF ( LVON01 ) THEN 01660254
170: IVCOMP = IVCOMP * 2 01670254
171: ELSE IF ( LVON02 ) THEN 01680254
172: IVCOMP = IVCOMP * 3 01690254
173: END IF 01700254
174: IVCORR = 1 01710254
175: 40020 IF ( IVCOMP - 1 ) 20020, 10020, 20020 01720254
176: 30020 IVDELE = IVDELE + 1 01730254
177: WRITE (I02,80000) IVTNUM 01740254
178: IF (ICZERO) 10020, 0031, 20020 01750254
179: 10020 IVPASS = IVPASS + 1 01760254
180: WRITE (I02,80002) IVTNUM 01770254
181: GO TO 0031 01780254
182: 20020 IVFAIL = IVFAIL + 1 01790254
183: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01800254
184: 0031 CONTINUE 01810254
185: C 01820254
186: C **** FCVS PROGRAM 254 - TEST 003 **** 01830254
187: C 01840254
188: C TEST 003 HAS E1 AS .TRUE. AND E2 AS .TRUE.. ONLY THE IF-BLOCK 01850254
189: C SHOULD BE EXECUTED. THE ELSE IF-BLOCK SHOULD NOT BE EXECUTED. 01860254
190: C 01870254
191: C 01880254
192: IVTNUM = 3 01890254
193: IF (ICZERO) 30030, 0030, 30030 01900254
194: 0030 CONTINUE 01910254
195: IVCOMP = 1 01920254
196: LVON01 = .TRUE. 01930254
197: LVON02 = .TRUE. 01940254
198: LVTN01 = LVON01 01950254
199: LVTN02 = LVON02 01960254
200: IF ( LVTN01 ) THEN 01970254
201: IVCOMP = IVCOMP * 2 01980254
202: ELSE IF ( LVTN02 ) THEN 01990254
203: IVCOMP = IVCOMP * 3 02000254
204: END IF 02010254
205: C 02020254
206: C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 ****02030254
207: C 02040254
208: IVCORR = 2 02050254
209: 40030 IF ( IVCOMP - 2 ) 20030, 10030, 20030 02060254
210: 30030 IVDELE = IVDELE + 1 02070254
211: WRITE (I02,80000) IVTNUM 02080254
212: IF (ICZERO) 10030, 0041, 20030 02090254
213: 10030 IVPASS = IVPASS + 1 02100254
214: WRITE (I02,80002) IVTNUM 02110254
215: GO TO 0041 02120254
216: 20030 IVFAIL = IVFAIL + 1 02130254
217: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02140254
218: 0041 CONTINUE 02150254
219: C 02160254
220: C **** FCVS PROGRAM 254 - TEST 004 **** 02170254
221: C 02180254
222: C TEST 004 HAS E1 AS .TRUE. AND E2 AS .FALSE.. ONLY THE IF-BLOCK02190254
223: C SHOULD BE EXECUTED. THE ELSE IF-BLOCK SHOULD NOT BE EXECUTED. 02200254
224: C 02210254
225: C 02220254
226: IVTNUM = 4 02230254
227: IF (ICZERO) 30040, 0040, 30040 02240254
228: 0040 CONTINUE 02250254
229: IVCOMP = 1 02260254
230: LVON01 = .TRUE. 02270254
231: LVTN01 = LFIS01 ( LVON01 ) 02280254
232: LVON02 = .FALSE. 02290254
233: IF ( LVTN01 ) THEN 02300254
234: IVCOMP = IVCOMP * 2 02310254
235: ELSE IF ( LFIS01 ( LVON02 ) ) THEN 02320254
236: IVCOMP = IVCOMP * 3 02330254
237: END IF 02340254
238: C 02350254
239: C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 ****02360254
240: C 02370254
241: IVCORR = 2 02380254
242: 40040 IF ( IVCOMP - 2 ) 20040, 10040, 20040 02390254
243: 30040 IVDELE = IVDELE + 1 02400254
244: WRITE (I02,80000) IVTNUM 02410254
245: IF (ICZERO) 10040, 0051, 20040 02420254
246: 10040 IVPASS = IVPASS + 1 02430254
247: WRITE (I02,80002) IVTNUM 02440254
248: GO TO 0051 02450254
249: 20040 IVFAIL = IVFAIL + 1 02460254
250: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02470254
251: 0051 CONTINUE 02480254
252: C 02490254
253: C 02500254
254: C THE SYNTAX OF THE ELSE IF STATEMENTS IN THE TESTS TO FOLLOW IS 02510254
255: C 02520254
256: C IF ( E1 ) THEN 02530254
257: C IF-BLOCK 1 02540254
258: C ELSE IF ( E2 ) THEN 02550254
259: C ELSE IF-BLOCK 1 02560254
260: C ELSE IF ( E3 ) THEN 02570254
261: C ELSE IF-BLOCK 2 02580254
262: C END IF 02590254
263: C 02600254
264: C 02610254
265: C 02620254
266: C **** FCVS PROGRAM 254 - TEST 005 **** 02630254
267: C 02640254
268: C TEST 005 HAS E1 AS TRUE. E2 AND E3 ARE FALSE. ONLY IF-BLOCK 102650254
269: C SHOULD BE EXECUTED. ELSE IF-BLOCKS 1 AND 2 SHOULD NOT EXECUTE. 02660254
270: C 02670254
271: C 02680254
272: IVTNUM = 5 02690254
273: IF (ICZERO) 30050, 0050, 30050 02700254
274: 0050 CONTINUE 02710254
275: IVCOMP = 1 02720254
276: C LADN11(1) IS SET TO .TRUE. IN A DATA STATEMENT. 02730254
277: LVON02 = .FALSE. 02740254
278: LVON03 = .FALSE. 02750254
279: IF ( LADN11(1) ) THEN 02760254
280: IVCOMP = IVCOMP * 2 02770254
281: ELSE IF ( LVON02 ) THEN 02780254
282: IVCOMP = IVCOMP * 3 02790254
283: ELSE IF ( LVON03 ) THEN 02800254
284: IVCOMP = IVCOMP * 5 02810254
285: END IF 02820254
286: C 02830254
287: C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 ****02840254
288: C 02850254
289: IVCORR = 2 02860254
290: 40050 IF ( IVCOMP - 2 ) 20050, 10050, 20050 02870254
291: 30050 IVDELE = IVDELE + 1 02880254
292: WRITE (I02,80000) IVTNUM 02890254
293: IF (ICZERO) 10050, 0061, 20050 02900254
294: 10050 IVPASS = IVPASS + 1 02910254
295: WRITE (I02,80002) IVTNUM 02920254
296: GO TO 0061 02930254
297: 20050 IVFAIL = IVFAIL + 1 02940254
298: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02950254
299: 0061 CONTINUE 02960254
300: C 02970254
301: C **** FCVS PROGRAM 254 - TEST 006 **** 02980254
302: C 02990254
303: C TEST 006 HAS E1 AS FALSE, E2 AS TRUE, AND E3 AS FALSE. ONLY 03000254
304: C ELSE IF-BLOCK 1 SHOULD EXECUTE. IF-BLOCK 1 AND ELSE IF-BLOCK 2 03010254
305: C SHOULD NOT EXECUTE. 03020254
306: C 03030254
307: C 03040254
308: IVTNUM = 6 03050254
309: IF (ICZERO) 30060, 0060, 30060 03060254
310: 0060 CONTINUE 03070254
311: IVCOMP = 1 03080254
312: LVON01 = .FALSE. 03090254
313: LATN11(2) = .TRUE. 03100254
314: LVON03 = .FALSE. 03110254
315: IF ( LVON01 ) THEN 03120254
316: IVCOMP = IVCOMP * 2 03130254
317: ELSE IF ( LATN11(2) ) THEN 03140254
318: IVCOMP = IVCOMP * 3 03150254
319: ELSE IF ( LVON03 ) THEN 03160254
320: IVCOMP = IVCOMP * 5 03170254
321: END IF 03180254
322: C 03190254
323: C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 ****03200254
324: C 03210254
325: IVCORR = 3 03220254
326: 40060 IF ( IVCOMP - 3 ) 20060, 10060, 20060 03230254
327: 30060 IVDELE = IVDELE + 1 03240254
328: WRITE (I02,80000) IVTNUM 03250254
329: IF (ICZERO) 10060, 0071, 20060 03260254
330: 10060 IVPASS = IVPASS + 1 03270254
331: WRITE (I02,80002) IVTNUM 03280254
332: GO TO 0071 03290254
333: 20060 IVFAIL = IVFAIL + 1 03300254
334: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03310254
335: 0071 CONTINUE 03320254
336: C 03330254
337: C **** FCVS PROGRAM 254 - TEST 007 **** 03340254
338: C 03350254
339: C TEST 007 HAS E1 AS FALSE, E2 AS FALSE, AND E3 AS TRUE. ONLY 03360254
340: C ELSE IF-BLOCK 2 SHOULD BE EXECUTED. IF-BLOCK 1 AND ELSE IF-BLOCK 03370254
341: C 1 SHOULD NOT EXECUTE. 03380254
342: C 03390254
343: C 03400254
344: IVTNUM = 7 03410254
345: IF (ICZERO) 30070, 0070, 30070 03420254
346: 0070 CONTINUE 03430254
347: IVCOMP = 1 03440254
348: LVON01 = .FALSE. 03450254
349: LVON02 = .FALSE. 03460254
350: LVON03 = .TRUE. 03470254
351: IF ( LVON01 ) THEN 03480254
352: IVCOMP = IVCOMP * 2 03490254
353: ELSE IF ( LVON02 ) THEN 03500254
354: IVCOMP = IVCOMP * 3 03510254
355: ELSE IF ( LVON03 ) THEN 03520254
356: IVCOMP = IVCOMP * 5 03530254
357: END IF 03540254
358: C 03550254
359: C **** IVCOMP IS DETERMINED BY IVCOMP = 5 = 1 * 5 ****03560254
360: C 03570254
361: IVCORR = 5 03580254
362: 40070 IF ( IVCOMP - 5 ) 20070, 10070, 20070 03590254
363: 30070 IVDELE = IVDELE + 1 03600254
364: WRITE (I02,80000) IVTNUM 03610254
365: IF (ICZERO) 10070, 0081, 20070 03620254
366: 10070 IVPASS = IVPASS + 1 03630254
367: WRITE (I02,80002) IVTNUM 03640254
368: GO TO 0081 03650254
369: 20070 IVFAIL = IVFAIL + 1 03660254
370: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03670254
371: 0081 CONTINUE 03680254
372: C 03690254
373: C **** FCVS PROGRAM 254 - TEST 008 **** 03700254
374: C 03710254
375: C TEST 008 HAS E1 AS FALSE. BOTH E2 AND E3 ARE TRUE. ONLY ELSE 03720254
376: C IF-BLOCK 1 SHOULD EXECUTE. IF-BLOCK 1 AND ELSE IF-BLOCK 2 SHOULD 03730254
377: C NOT EXECUTE. THIS IS A TEST OF THE LOGIC FLOW WHEN ONE OF THE 03740254
378: C EXPRESSIONS IN A STRING OF ELSE IF BLOCK STRUCTURES IS TRUE. ONLY03750254
379: C THAT PARTICULAR ELSE IF-BLOCK SHOULD BE EXECUTED. THE REST OF THE03760254
380: C STRING SHOULD BE SKIPPED. 03770254
381: C 03780254
382: C 03790254
383: IVTNUM = 8 03800254
384: IF (ICZERO) 30080, 0080, 30080 03810254
385: 0080 CONTINUE 03820254
386: IVCOMP = 1 03830254
387: LVON01 = .FALSE. 03840254
388: LVON02 = .TRUE. 03850254
389: LVON03 = .TRUE. 03860254
390: IF ( LVON01 ) THEN 03870254
391: IVCOMP = IVCOMP * 2 03880254
392: ELSE IF ( LVON02 ) THEN 03890254
393: IVCOMP = IVCOMP * 3 03900254
394: ELSE IF ( LVON03 ) THEN 03910254
395: IVCOMP = IVCOMP * 5 03920254
396: END IF 03930254
397: C 03940254
398: C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 ****03950254
399: C 03960254
400: IVCORR = 3 03970254
401: 40080 IF ( IVCOMP - 3 ) 20080, 10080, 20080 03980254
402: 30080 IVDELE = IVDELE + 1 03990254
403: WRITE (I02,80000) IVTNUM 04000254
404: IF (ICZERO) 10080, 0091, 20080 04010254
405: 10080 IVPASS = IVPASS + 1 04020254
406: WRITE (I02,80002) IVTNUM 04030254
407: GO TO 0091 04040254
408: 20080 IVFAIL = IVFAIL + 1 04050254
409: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04060254
410: 0091 CONTINUE 04070254
411: C 04080254
412: C 04090254
413: C THE FOLLOWING TWO TESTS ARE TO CHECK THE EXECUTION OF AN ELSE 04100254
414: C IF STATEMENT WITH AN EMPTY ELSE IF-BLOCK. THE SYNTAX FOR THE TWO 04110254
415: C TESTS IS AS FOLLOWS - 04120254
416: C 04130254
417: C IF ( E1 ) THEN 04140254
418: C IF-BLOCK 1 04150254
419: C ELSE IF ( E2 ) THEN 04160254
420: C ELSE IF ( E3 ) THEN 04170254
421: C ELSE IF-BLOCK 1 04180254
422: C END IF 04190254
423: C 04200254
424: C 04210254
425: C 04220254
426: C **** FCVS PROGRAM 254 - TEST 009 **** 04230254
427: C 04240254
428: C TEST 009 HAS E1 FALSE, E2 TRUE, AND E3 AS TRUE. THE STRUCTURE 04250254
429: C ELSE IF ( E2 ) THEN 04260254
430: C IS FOLLOWED BY AN EMPTY ELSE IF-BLOCK ALLOWED IN SECTION 11.7.1. 04270254
431: C IN SECTION 11.7.2, IF THE VALUE OF THE EXPRESSION IS TRUE AND THE04280254
432: C ELSE IF-BLOCK IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF 04290254
433: C STATEMENT THAT HAS THE SAME IF-LEVEL AS THE ELSE IF STATEMENT. 04300254
434: C NEITHER IF-BLOCK 1 NOR ELSE IF-BLOCK 1 SHOULD BE EXECUTED. 04310254
435: C 04320254
436: C 04330254
437: IVTNUM = 9 04340254
438: IF (ICZERO) 30090, 0090, 30090 04350254
439: 0090 CONTINUE 04360254
440: IVCOMP = 1 04370254
441: LVON01 = .FALSE. 04380254
442: LVON02 = .TRUE. 04390254
443: LVON03 = .TRUE. 04400254
444: IF ( LVON01 ) THEN 04410254
445: IVCOMP = IVCOMP * 2 04420254
446: ELSE IF ( LVON02 ) THEN 04430254
447: ELSE IF ( LVON03 ) THEN 04440254
448: IVCOMP = IVCOMP * 3 04450254
449: END IF 04460254
450: IVCORR = 1 04470254
451: 40090 IF ( IVCOMP - 1 ) 20090, 10090, 20090 04480254
452: 30090 IVDELE = IVDELE + 1 04490254
453: WRITE (I02,80000) IVTNUM 04500254
454: IF (ICZERO) 10090, 0101, 20090 04510254
455: 10090 IVPASS = IVPASS + 1 04520254
456: WRITE (I02,80002) IVTNUM 04530254
457: GO TO 0101 04540254
458: 20090 IVFAIL = IVFAIL + 1 04550254
459: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04560254
460: 0101 CONTINUE 04570254
461: C 04580254
462: C **** FCVS PROGRAM 254 - TEST 010 **** 04590254
463: C 04600254
464: C TEST 010 ALSO HAS AN EMPTY ELSE IF-BLOCK. E1 AND E2 ARE FALSE.04610254
465: C E3 IS TRUE. ONLY ELSE IF-BLOCK 1 SHOULD BE EXECUTED. IF-BLOCK 1 04620254
466: C SHOULD NOT BE EXECUTED. IN SECTION 11.7.2, IF THE VALUE OF THE 04630254
467: C EXPRESSION IS FALSE, CONTROL IS TRANSFERRED TO THE NEXT ELSE IF, 04640254
468: C ELSE, OR END IF STATEMENT THAT HAS THE SAME IF-LEVEL AS THE ELSE 04650254
469: C IF STATEMENT. 04660254
470: C 04670254
471: C 04680254
472: IVTNUM = 10 04690254
473: IF (ICZERO) 30100, 0100, 30100 04700254
474: 0100 CONTINUE 04710254
475: IVCOMP = 1 04720254
476: LVON01 = .FALSE. 04730254
477: LVON02 = .FALSE. 04740254
478: LVON03 = .TRUE. 04750254
479: IF ( LVON01 ) THEN 04760254
480: IVCOMP = IVCOMP * 2 04770254
481: ELSE IF ( LVON02 ) THEN 04780254
482: ELSE IF ( LVON03 ) THEN 04790254
483: IVCOMP = IVCOMP * 3 04800254
484: END IF 04810254
485: C 04820254
486: C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 ****04830254
487: C 04840254
488: IVCORR = 3 04850254
489: 40100 IF ( IVCOMP - 3 ) 20100, 10100, 20100 04860254
490: 30100 IVDELE = IVDELE + 1 04870254
491: WRITE (I02,80000) IVTNUM 04880254
492: IF (ICZERO) 10100, 0111, 20100 04890254
493: 10100 IVPASS = IVPASS + 1 04900254
494: WRITE (I02,80002) IVTNUM 04910254
495: GO TO 0111 04920254
496: 20100 IVFAIL = IVFAIL + 1 04930254
497: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04940254
498: 0111 CONTINUE 04950254
499: C 04960254
500: C 04970254
501: C THE NEXT TWO TESTS USE THE ELSE IF STRUCTURE INSIDE A BLOCKED 04980254
502: C IF STRUCTURE OF LEVEL 2 AS FOLLOWS - 04990254
503: C 05000254
504: C IF ( E1 ) THEN 05010254
505: C IF-BLOCK 1 05020254
506: C IF ( E2 ) THEN 05030254
507: C IF-BLOCK 2 05040254
508: C ELSE IF ( E3 ) THEN 05050254
509: C ELSE IF-BLOCK 1 05060254
510: C ELSE IF ( E4 ) THEN 05070254
511: C ELSE IF-BLOCK 2 05080254
512: C END IF 05090254
513: C ELSE IF ( E5 ) THEN 05100254
514: C ELSE IF-BLOCK 3 05110254
515: C ELSE IF ( E6 ) THEN 05120254
516: C ELSE IF-BLOCK 4 05130254
517: C END IF 05140254
518: C 05150254
519: C 05160254
520: C 05170254
521: C **** FCVS PROGRAM 254 - TEST 011 **** 05180254
522: C 05190254
523: C TEST 011 HAS E1 TRUE, E2 AND E3 AS FALSE, E4, E5, AND ALSO 05200254
524: C E6 AS TRUE. IF-BLOCK 1, AND ELSE IF-BLOCK 2 SHOULD BE EXECUTED. 05210254
525: C IF-BLOCK 2, ELSE IF-BLOCK 1, 3, AND 4 SHOULD NOT BE EXECUTED. 05220254
526: C 05230254
527: C 05240254
528: IVTNUM = 11 05250254
529: IF (ICZERO) 30110, 0110, 30110 05260254
530: 0110 CONTINUE 05270254
531: IVCOMP = 1 05280254
532: LVON01 = .TRUE. 05290254
533: LVON02 = .FALSE. 05300254
534: LVON03 = .FALSE. 05310254
535: LVON04 = .TRUE. 05320254
536: LVON05 = .TRUE. 05330254
537: LVON06 = .TRUE. 05340254
538: IF ( LVON01 ) THEN 05350254
539: IVCOMP = IVCOMP * 2 05360254
540: IF ( LVON02 ) THEN 05370254
541: IVCOMP = IVCOMP * 3 05380254
542: ELSE IF ( LVON03 ) THEN 05390254
543: IVCOMP = IVCOMP * 5 05400254
544: ELSE IF ( LVON04 ) THEN 05410254
545: IVCOMP = IVCOMP * 7 05420254
546: END IF 05430254
547: ELSE IF ( LVON05 ) THEN 05440254
548: IVCOMP = IVCOMP * 11 05450254
549: ELSE IF ( LVON06 ) THEN 05460254
550: IVCOMP = IVCOMP * 13 05470254
551: END IF 05480254
552: C 05490254
553: C **** IVCOMP IS DETERMINED BY IVCOMP = 14 = 1 * 2 * 7 ****05500254
554: C 05510254
555: IVCORR = 14 05520254
556: 40110 IF ( IVCOMP - 14 ) 20110, 10110, 20110 05530254
557: 30110 IVDELE = IVDELE + 1 05540254
558: WRITE (I02,80000) IVTNUM 05550254
559: IF (ICZERO) 10110, 0121, 20110 05560254
560: 10110 IVPASS = IVPASS + 1 05570254
561: WRITE (I02,80002) IVTNUM 05580254
562: GO TO 0121 05590254
563: 20110 IVFAIL = IVFAIL + 1 05600254
564: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05610254
565: 0121 CONTINUE 05620254
566: C 05630254
567: C **** FCVS PROGRAM 254 - TEST 012 **** 05640254
568: C 05650254
569: C TEST 012 HAS E1 AS FALSE, E2, E3, AND E4 ARE TRUE, E5 AS FALSE,05660254
570: C AND E6 IS TRUE. ONLY ELSE IF-BLOCK 4 SHOULD BE EXECUTED. NO 05670254
571: C OTHER IF-BLOCK OR ELSE IF-BLOCK SHOULD BE EXECUTED. 05680254
572: C 05690254
573: C 05700254
574: IVTNUM = 12 05710254
575: IF (ICZERO) 30120, 0120, 30120 05720254
576: 0120 CONTINUE 05730254
577: IVCOMP = 1 05740254
578: LVON01 = .FALSE. 05750254
579: LVON02 = .TRUE. 05760254
580: LVON03 = .TRUE. 05770254
581: LVON04 = .TRUE. 05780254
582: LVON05 = .FALSE. 05790254
583: LVON06 = .TRUE. 05800254
584: IF ( LVON01 ) THEN 05810254
585: IVCOMP = IVCOMP * 2 05820254
586: IF ( LVON02 ) THEN 05830254
587: IVCOMP = IVCOMP * 3 05840254
588: ELSE IF ( LVON03 ) THEN 05850254
589: IVCOMP = IVCOMP * 5 05860254
590: ELSE IF ( LVON04 ) THEN 05870254
591: IVCOMP = IVCOMP * 7 05880254
592: END IF 05890254
593: ELSE IF ( LVON05 ) THEN 05900254
594: IVCOMP = IVCOMP * 11 05910254
595: ELSE IF ( LVON06 ) THEN 05920254
596: IVCOMP = IVCOMP * 13 05930254
597: END IF 05940254
598: C 05950254
599: C **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13 ****05960254
600: C 05970254
601: IVCORR = 13 05980254
602: 40120 IF ( IVCOMP - 13 ) 20120, 10120, 20120 05990254
603: 30120 IVDELE = IVDELE + 1 06000254
604: WRITE (I02,80000) IVTNUM 06010254
605: IF (ICZERO) 10120, 0131, 20120 06020254
606: 10120 IVPASS = IVPASS + 1 06030254
607: WRITE (I02,80002) IVTNUM 06040254
608: GO TO 0131 06050254
609: 20120 IVFAIL = IVFAIL + 1 06060254
610: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06070254
611: 0131 CONTINUE 06080254
612: C 06090254
613: C 06100254
614: C WRITE OUT TEST SUMMARY 06110254
615: C 06120254
616: WRITE (I02,90004) 06130254
617: WRITE (I02,90014) 06140254
618: WRITE (I02,90004) 06150254
619: WRITE (I02,90000) 06160254
620: WRITE (I02,90004) 06170254
621: WRITE (I02,90020) IVFAIL 06180254
622: WRITE (I02,90022) IVPASS 06190254
623: WRITE (I02,90024) IVDELE 06200254
624: STOP 06210254
625: 90001 FORMAT (1H ,24X,5HFM254) 06220254
626: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM254) 06230254
627: C 06240254
628: C FORMATS FOR TEST DETAIL LINES 06250254
629: C 06260254
630: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 06270254
631: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 06280254
632: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 06290254
633: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 06300254
634: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 06310254
635: C 06320254
636: C FORMAT STATEMENTS FOR PAGE HEADERS 06330254
637: C 06340254
638: 90002 FORMAT (1H1) 06350254
639: 90004 FORMAT (1H ) 06360254
640: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 06370254
641: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 06380254
642: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 06390254
643: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 06400254
644: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 06410254
645: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 06420254
646: C 06430254
647: C FORMAT STATEMENTS FOR RUN SUMMARY 06440254
648: C 06450254
649: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 06460254
650: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 06470254
651: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 06480254
652: END 06490254
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.