blob: 61391b67c62f5db8cd10ba4208f4b4b973d61cf0 [file] [log] [blame]
PROGRAM FM012
C 00010012
C COMMENT SECTION. 00020012
C 00030012
C FM012 00040012
C 00050012
C THIS ROUTINE TESTS THE FORTRAN DO - STATEMENT FROM ITS 00060012
C SIMPLIST FORMAT TO THE MORE ABBREVIATED FORMS. VARIOUS INCREMENTS00070012
C ARE USED AND BRANCHING BY VARIOUS METHODS IS TESTED FOR PASSING 00080012
C CONTROL OUT OF THE DO RANGE AND RETURNING (EXTENDED RANGE). 00090012
C NESTED DO STATEMENTS USING VARIOUS TERMINATING STATEMENTS ARE ALSO00100012
C TESTED BY THIS ROUTINE. 00110012
C 00120012
C REFERENCES 00130012
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00140012
C X3.9-1978 00150012
C 00160012
C SECTION 11.10, DO STATEMENT 00170012
C SECTION 11.10.3, EXECUTES A DO LOOP 00180012
C SECTION 11.11, CONTINUE STATEMENT 00190012
C 00200012
C 00210012
C ********************************************************** 00220012
C 00230012
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00240012
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00250012
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00260012
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00270012
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00280012
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00290012
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00300012
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00310012
C OF EXECUTING THESE TESTS. 00320012
C 00330012
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00340012
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00350012
C 00360012
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00370012
C 00380012
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00390012
C SOFTWARE STANDARDS VALIDATION GROUP 00400012
C BUILDING 225 RM A266 00410012
C GAITHERSBURG, MD 20899 00420012
C ********************************************************** 00430012
C 00440012
C 00450012
C 00460012
C INITIALIZATION SECTION 00470012
C 00480012
C INITIALIZE CONSTANTS 00490012
C ************** 00500012
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00510012
I01 = 5 00520012
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00530012
I02 = 6 00540012
C SYSTEM ENVIRONMENT SECTION 00550012
C 00560012
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00570012
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00580012
C (UNIT NUMBER FOR CARD READER). 00590012
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00600012
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00610012
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00620012
C 00630012
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00640012
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00650012
C (UNIT NUMBER FOR PRINTER). 00660012
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00670012
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00680012
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00690012
C 00700012
IVPASS=0 00710012
IVFAIL=0 00720012
IVDELE=0 00730012
ICZERO=0 00740012
C 00750012
C WRITE PAGE HEADERS 00760012
WRITE (I02,90000) 00770012
WRITE (I02,90001) 00780012
WRITE (I02,90002) 00790012
WRITE (I02, 90002) 00800012
WRITE (I02,90003) 00810012
WRITE (I02,90002) 00820012
WRITE (I02,90004) 00830012
WRITE (I02,90002) 00840012
WRITE (I02,90011) 00850012
WRITE (I02,90002) 00860012
WRITE (I02,90002) 00870012
WRITE (I02,90005) 00880012
WRITE (I02,90006) 00890012
WRITE (I02,90002) 00900012
IVTNUM = 110 00910012
C 00920012
C TEST 110 - DO STATEMENT WITH THE COMPLETE FORMAT, INCREMENT OF 100930012
C THE LOOP SHOULD BE EXECUTED TEN (10) TIMES THUS THE LOOP 00940012
C COUNTER SHOULD HAVE A VALUE OF TEN AT THE COMPLETION OF THE 00950012
C DO-LOOP. 00960012
C 00970012
C 00980012
IF (ICZERO) 31100, 1100, 31100 00990012
1100 CONTINUE 01000012
IVON01=0 01010012
DO 1102 I=1,10,1 01020012
IVON01=IVON01+1 01030012
1102 CONTINUE 01040012
GO TO 41100 01050012
31100 IVDELE = IVDELE + 1 01060012
WRITE (I02,80003) IVTNUM 01070012
IF (ICZERO) 41100, 1111, 41100 01080012
41100 IF(IVON01-10) 21100,11100,21100 01090012
11100 IVPASS = IVPASS + 1 01100012
WRITE (I02,80001) IVTNUM 01110012
GO TO 1111 01120012
21100 IVFAIL = IVFAIL + 1 01130012
IVCOMP=IVON01 01140012
IVCORR=10 01150012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01160012
1111 CONTINUE 01170012
IVTNUM = 111 01180012
C 01190012
C TEST 111 - SAME DO TEST AS IN TEST 110 EXCEPT THAT NO INCREMENT 01200012
C IS GIVEN. THE INCREMENT SHOULD BE 1 AND THE LOOP PERFORMED 01210012
C TEN (10) TIMES AS BEFORE. 01220012
C 01230012
C 01240012
IF (ICZERO) 31110, 1110, 31110 01250012
1110 CONTINUE 01260012
IVON01=0 01270012
DO 1112 J=1,10 01280012
IVON01=IVON01+1 01290012
1112 CONTINUE 01300012
GO TO 41110 01310012
31110 IVDELE = IVDELE + 1 01320012
WRITE (I02,80003) IVTNUM 01330012
IF (ICZERO) 41110, 1121, 41110 01340012
41110 IF(IVON01-10) 21110, 11110, 21110 01350012
11110 IVPASS = IVPASS + 1 01360012
WRITE (I02,80001) IVTNUM 01370012
GO TO 1121 01380012
21110 IVFAIL = IVFAIL + 1 01390012
IVCOMP=IVON01 01400012
IVCORR=10 01410012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01420012
1121 CONTINUE 01430012
IVTNUM = 112 01440012
C 01450012
C TEST 112 - DO STATEMENT WITH AN INCREMENT OTHER THAN ONE (1). 01460012
C THE DO - LOOP SHOULD BE EXECUTED FIVE (5) TIMES THUS 01470012
C THE VALUE OF THE LOOP COUNTER SHOULD BE FIVE (5) AT THE 01480012
C END OF THE DO - LOOP. 01490012
C 01500012
C 01510012
IF (ICZERO) 31120, 1120, 31120 01520012
1120 CONTINUE 01530012
IVON01=0 01540012
DO 1122 K = 1, 10, 2 01550012
IVON01=IVON01+1 01560012
1122 CONTINUE 01570012
GO TO 41120 01580012
31120 IVDELE = IVDELE + 1 01590012
WRITE (I02,80003) IVTNUM 01600012
IF (ICZERO) 41120, 1131, 41120 01610012
41120 IF (IVON01 - 5 ) 21120, 11120, 21120 01620012
11120 IVPASS = IVPASS + 1 01630012
WRITE (I02,80001) IVTNUM 01640012
GO TO 1131 01650012
21120 IVFAIL = IVFAIL + 1 01660012
IVCOMP=IVON01 01670012
IVCORR=5 01680012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01690012
1131 CONTINUE 01700012
IVTNUM = 113 01710012
C 01720012
C TEST 113 - DO STATEMENT WITH THE INITIAL VALUE EQUAL TO THE 01730012
C TERMINAL VALUE. THE DO - LOOP SHOULD BE EXECUTED ONE (1) 01740012
C TIME THUS THE VALUE OF THE LOOP COUNTER SHOULD BE ONE (1). 01750012
C 01760012
C 01770012
IF (ICZERO) 31130, 1130, 31130 01780012
1130 CONTINUE 01790012
IVON01=0 01800012
DO 1132 L = 2, 2 01810012
IVON01=IVON01+1 01820012
1132 CONTINUE 01830012
GO TO 41130 01840012
31130 IVDELE = IVDELE + 1 01850012
WRITE (I02,80003) IVTNUM 01860012
IF (ICZERO) 41130, 1141, 41130 01870012
41130 IF ( IVON01 - 1 ) 21130, 11130, 21130 01880012
11130 IVPASS = IVPASS + 1 01890012
WRITE (I02,80001) IVTNUM 01900012
GO TO 1141 01910012
21130 IVFAIL = IVFAIL + 1 01920012
IVCOMP=IVON01 01930012
IVCORR=1 01940012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01950012
1141 CONTINUE 01960012
IVTNUM = 114 01970012
C 01980012
C TEST 114 - THIS TESTS THE UNCONDITIONAL BRANCH OUT OF THE 01990012
C RANGE OF THE DO USING THE GO TO STATEMENT. THE DO INDEX 02000012
C SHOULD RETAIN THE VALUE IT HAD WHEN THE UNCONDITIONAL BRANCH02010012
C WAS MADE. SINCE THE DO LOOP ONLY CONTAINS AN UNCONDITIONAL 02020012
C BRANCH, THE VALUE OF THE DO INDEX SHOULD BE ITS INITIAL 02030012
C VALUE. IN THIS CASE THE VALUE SHOULD BE ONE (1). 02040012
C SEE SECTION 11.10. 02050012
C 02060012
C 02070012
IF (ICZERO) 31140, 1140, 31140 02080012
1140 CONTINUE 02090012
DO 1142 M=1,10 02100012
GO TO 1143 02110012
1142 CONTINUE 02120012
1143 CONTINUE 02130012
GO TO 41140 02140012
31140 IVDELE = IVDELE + 1 02150012
WRITE (I02,80003) IVTNUM 02160012
IF (ICZERO) 41140, 1151, 41140 02170012
41140 IF ( M - 1 ) 21140, 11140, 21140 02180012
11140 IVPASS = IVPASS + 1 02190012
WRITE (I02,80001) IVTNUM 02200012
GO TO 1151 02210012
21140 IVFAIL = IVFAIL + 1 02220012
IVCOMP=M 02230012
IVCORR=1 02240012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02250012
1151 CONTINUE 02260012
IVTNUM = 115 02270012
C 02280012
C TEST 115 - THIS TEST IS SIMILAR TO TEST 114 IN THAT THE DO 02290012
C RANGE HAS ONLY AN UNCONDITIONAL BRANCH OUTSIDE OF THE RANGE.02300012
C THE DO INDEX SHOULD AGAIN RETAIN ITS VALUE, IN THIS CASE 02310012
C ITS INITIAL VALUE OF ONE (1). 02320012
C SEE SECTION 11.10. 02330012
C 02340012
C 02350012
IF (ICZERO) 31150, 1150, 31150 02360012
1150 CONTINUE 02370012
DO 1152 N = 1, 10 02380012
IF ( N - 1 ) 1152, 1153, 1152 02390012
1152 CONTINUE 02400012
1153 CONTINUE 02410012
GO TO 41150 02420012
31150 IVDELE = IVDELE + 1 02430012
WRITE (I02,80003) IVTNUM 02440012
IF (ICZERO) 41150, 1161, 41150 02450012
41150 IF (N - 1 ) 21150, 11150, 21150 02460012
11150 IVPASS = IVPASS + 1 02470012
WRITE (I02,80001) IVTNUM 02480012
GO TO 1161 02490012
21150 IVFAIL = IVFAIL + 1 02500012
IVCOMP=N 02510012
IVCORR=1 02520012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02530012
1161 CONTINUE 02540012
IVTNUM = 116 02550012
C 02560012
C TEST 116 - THIS IS A TEST OF A NEST OF TWO DO RANGES. TWO 02570012
C SEPARATE CONTINUE STATEMENTS ARE USED AS TERMINAL STATEMENTS02580012
C FOR THE TWO RESPECTIVE DO RANGES. THE OUTER LOOP SHOULD BE 02590012
C PERFORMED TEN (10) TIMES AND THE INNER LOOP SHOULD BE 02600012
C PERFORMED TWICE FOR EACH EXECUTION OF THE OUTER LOOP. THE 02610012
C LOOP COUNTER SHOULD HAVE A VALUE OF TWENTY (20) SINCE IT 02620012
C IS INCREMENTED IN THE INNER DO - LOOP. 02630012
C SEE SECTION 11.10.3. 02640012
C 02650012
C 02660012
IF (ICZERO) 31160, 1160, 31160 02670012
1160 CONTINUE 02680012
IVON01=0 02690012
DO 1163 I=1,10,1 02700012
DO 1162 J=1,2,1 02710012
IVON01=IVON01+1 02720012
1162 CONTINUE 02730012
1163 CONTINUE 02740012
GO TO 41160 02750012
31160 IVDELE = IVDELE + 1 02760012
WRITE (I02,80003) IVTNUM 02770012
IF (ICZERO) 41160, 1171, 41160 02780012
41160 IF ( IVON01 - 20 ) 21160, 11160, 21160 02790012
11160 IVPASS = IVPASS + 1 02800012
WRITE (I02,80001) IVTNUM 02810012
GO TO 1171 02820012
21160 IVFAIL = IVFAIL + 1 02830012
IVCOMP=IVON01 02840012
IVCORR=20 02850012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02860012
1171 CONTINUE 02870012
IVTNUM = 117 02880012
C 02890012
C TEST 117 - THIS IS BASICALLY THE SAME AS TEST 116 EXCEPT THAT 02900012
C ONLY ONE CONTINUE STATEMENT IS USED AS THE TERMINATING 02910012
C STATEMENT FOR BOTH OF THE DO RANGES. THE VALUE OF THE 02920012
C LOOP COUNTER SHOULD AGAIN BE TWENTY (20). 02930012
C 02940012
C 02950012
IF (ICZERO) 31170, 1170, 31170 02960012
1170 CONTINUE 02970012
IVON01=0 02980012
DO 1172 K=1,10,1 02990012
DO 1172 L=1,2,1 03000012
IVON01=IVON01+1 03010012
1172 CONTINUE 03020012
GO TO 41170 03030012
31170 IVDELE = IVDELE + 1 03040012
WRITE (I02,80003) IVTNUM 03050012
IF (ICZERO) 41170, 1181, 41170 03060012
41170 IF (IVON01 - 20 ) 21170, 11170, 21170 03070012
11170 IVPASS = IVPASS + 1 03080012
WRITE (I02,80001) IVTNUM 03090012
GO TO 1181 03100012
21170 IVFAIL = IVFAIL + 1 03110012
IVCOMP=IVON01 03120012
IVCORR=20 03130012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03140012
1181 CONTINUE 03150012
IVTNUM = 118 03160012
C 03170012
C TEST 118 - THIS IS BASICALLY THE SAME TEST AS 116 EXCEPT 03180012
C THAT THE LOOP COUNTER INCREMENT IS THE TERMINATING STATEMENT03190012
C OF BOTH OF THE DO RANGES. THE VALUE OF THE LOOP COUNTER 03200012
C SHOULD BE TWENTY (20), BUT THE NUMBER OF EXECUTIONS OF 03210012
C THE OUTER LOOP IS NOW TWO (2) AND THE INNER LOOP EXECUTES 03220012
C TEN (10) TIMES FOR EVERY EXECUTION OF THE OUTER LOOP. 03230012
C 03240012
C 03250012
IF (ICZERO) 31180, 1180, 31180 03260012
1180 CONTINUE 03270012
IVON01=0 03280012
DO 1182 M=1,2,1 03290012
DO 1182 N=1,10,1 03300012
1182 IVON01 = IVON01 + 1 03310012
GO TO 41180 03320012
31180 IVDELE = IVDELE + 1 03330012
WRITE (I02,80003) IVTNUM 03340012
IF (ICZERO) 41180, 1191, 41180 03350012
41180 IF (IVON01 - 20 ) 21180, 11180, 21180 03360012
11180 IVPASS = IVPASS + 1 03370012
WRITE (I02,80001) IVTNUM 03380012
GO TO 1191 03390012
21180 IVFAIL = IVFAIL + 1 03400012
IVCOMP=IVON01 03410012
IVCORR=20 03420012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03430012
1191 CONTINUE 03440012
IVTNUM = 119 03450012
C 03460012
C TEST 119 - THIS IS A TEST OF AN UNCONDITIONAL BRANCH OUT OF A 03470012
C NESTED DO RANGE QUITE LIKE TEST 114. THE LOOP COUNTER 03480012
C SHOULD ONLY BE INCREMENTED ON THE OUTER LOOP RANGE SO 03490012
C THE FINAL VALUE OF THE LOOP COUNTER SHOULD BE TEN (10). 03500012
C 03510012
C 03520012
IF (ICZERO) 31190, 1190, 31190 03530012
1190 CONTINUE 03540012
IVON01=0 03550012
DO 1194 I=1,10,1 03560012
DO 1193 J=1,2,1 03570012
C 03580012
C THE FOLLOWING STATEMENT IS TO ELIMINATE THE DEAD CODE PRODUCED 03590012
C BY THE STATEMENT GO TO 1194. 03600012
C 03610012
IF ( ICZERO ) 1193, 1192, 1193 03620012
C 03630012
1192 GO TO 1194 03640012
1193 IVON01 = IVON01 + 1 03650012
1194 IVON01 = IVON01 + 1 03660012
GO TO 41190 03670012
31190 IVDELE = IVDELE + 1 03680012
WRITE (I02,80003) IVTNUM 03690012
IF (ICZERO) 41190, 1201, 41190 03700012
41190 IF ( IVON01 - 10 ) 21190, 11190, 21190 03710012
11190 IVPASS = IVPASS + 1 03720012
WRITE (I02,80001) IVTNUM 03730012
GO TO 1201 03740012
21190 IVFAIL = IVFAIL + 1 03750012
IVCOMP=IVON01 03760012
IVCORR=10 03770012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03780012
1201 CONTINUE 03790012
IVTNUM = 120 03800012
C 03810012
C TEST 120 - THIS IS BASICALLY THE SAME TEST AS TEST 119 EXCEPT 03820012
C THAT AN IF STATEMENT IS USED TO BRANCH OUT OF THE INNER LOOP03830012
C WITHOUT INCREMENTING THE LOOP COUNTER. THE VALUE OF THE 03840012
C LOOP COUNTER SHOULD AGAIN BE TEN (10). 03850012
C 03860012
C 03870012
IF (ICZERO) 31200, 1200, 31200 03880012
1200 CONTINUE 03890012
IVON01=0 03900012
DO 1203 I=1,10,1 03910012
DO 1202 J=1,2,1 03920012
IF ( J - 1 ) 1203, 1203, 1202 03930012
1202 IVON01 = IVON01 + 1 03940012
1203 IVON01 = IVON01 + 1 03950012
GO TO 41200 03960012
31200 IVDELE = IVDELE + 1 03970012
WRITE (I02,80003) IVTNUM 03980012
IF (ICZERO) 41200, 1211, 41200 03990012
41200 IF ( IVON01 - 10 ) 21200, 11200, 21200 04000012
11200 IVPASS = IVPASS + 1 04010012
WRITE (I02,80001) IVTNUM 04020012
GO TO 1211 04030012
21200 IVFAIL = IVFAIL + 1 04040012
IVCOMP=IVON01 04050012
IVCORR=10 04060012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04070012
1211 CONTINUE 04080012
IVTNUM = 121 04090012
C 04100012
C TEST 121 - THIS IS A TEST OF DO NESTS WITHIN DO NESTS. THE 04110012
C LOOP COUNTER SHOULD HAVE A FINAL VALUE OF EIGHTY-FOUR (84). 04120012
C 04130012
C 04140012
IF (ICZERO) 31210, 1210, 31210 04150012
1210 CONTINUE 04160012
IVON01=0 04170012
DO 1216 I1=1,2,1 04180012
DO 1213 I2=1,3,1 04190012
DO 1212 I3=1,4,1 04200012
IVON01=IVON01+1 04210012
1212 CONTINUE 04220012
1213 CONTINUE 04230012
DO 1215 I4=1,5,1 04240012
DO 1214 I5=1,6,1 04250012
IVON01=IVON01+1 04260012
1214 CONTINUE 04270012
1215 CONTINUE 04280012
1216 CONTINUE 04290012
GO TO 41210 04300012
31210 IVDELE = IVDELE + 1 04310012
WRITE (I02,80003) IVTNUM 04320012
IF (ICZERO) 41210, 1221, 41210 04330012
41210 IF ( IVON01 - 84 ) 21210, 11210, 21210 04340012
11210 IVPASS = IVPASS + 1 04350012
WRITE (I02,80001) IVTNUM 04360012
GO TO 1221 04370012
21210 IVFAIL = IVFAIL + 1 04380012
IVCOMP=IVON01 04390012
IVCORR=84 04400012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04410012
1221 CONTINUE 04420012
IVTNUM = 122 04430012
C 04440012
C TEST 122 - THIS IS AGAIN A TEST OF DO NESTS BUT COMBINED WITH 04450012
C ARITHMETIC IF STATEMENT BRANCHES WITHIN THE DO RANGE. THE 04460012
C FINAL LOOP COUNTER VALUE SHOULD BE EIGHTEEN (18). 04470012
C 04480012
C 04490012
IF (ICZERO) 31220, 1220, 31220 04500012
1220 CONTINUE 04510012
IVON01=0 04520012
DO 1228 I1=1,3,1 04530012
DO 1223 I2=1,4,1 04540012
IF ( I2 - 3 ) 1222, 1224, 1224 04550012
1222 IVON01 = IVON01 + 1 04560012
1223 CONTINUE 04570012
1224 DO 1226 I3=1,5,1 04580012
IF ( I3 - 3 ) 1225, 1225, 1227 04590012
1225 IVON01 = IVON01 + 1 04600012
1226 CONTINUE 04610012
1227 CONTINUE 04620012
1228 CONTINUE 04630012
GO TO 41220 04640012
31220 IVDELE = IVDELE + 1 04650012
WRITE (I02,80003) IVTNUM 04660012
IF (ICZERO) 41220, 1231, 41220 04670012
41220 IF ( IVON01 - 15 ) 21220, 11220, 21220 04680012
11220 IVPASS = IVPASS + 1 04690012
WRITE (I02,80001) IVTNUM 04700012
GO TO 1231 04710012
21220 IVFAIL = IVFAIL + 1 04720012
IVCOMP=IVON01 04730012
IVCORR=15 04740012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04750012
1231 CONTINUE 04760012
IVTNUM = 124 04950012
C 04960012
C TEST 124 - THIS IS A TEST OF A TRIPLE NESTED DO RANGE WITH 04970012
C AN UNCONDITIONAL GO TO STATEMENT BRANCH IN THE INNERMOST 04980012
C NESTED DO TO THE COMMON TERMINAL STATEMENT. THE FINAL 04990012
C LOOP COUNTER VALUE SHOULD BE ONE HUNDRED AND FORTY-TWO (142)05000012
C THE INITIAL VALUE OF THE INNERMOST DO RANGE IS TWO (2). 05010012
C 05020012
C 05030012
IF (ICZERO) 31240, 1240, 31240 05040012
1240 CONTINUE 05050012
IVON01=0 05060012
DO 1242 I2=1,5,1 05070012
DO 1242 I3=2,8,1 05080012
DO 1242 I1=1,4,1 05090012
IVON01=IVON01+1 05100012
GO TO 1242 05110012
1242 CONTINUE 05120012
GO TO 41240 05130012
31240 IVDELE = IVDELE + 1 05140012
WRITE (I02,80003) IVTNUM 05150012
IF (ICZERO) 41240, 1251, 41240 05160012
41240 IF ( IVON01 - 140 ) 21240, 11240, 21240 05170012
11240 IVPASS = IVPASS + 1 05180012
WRITE (I02,80001) IVTNUM 05190012
GO TO 1251 05200012
21240 IVFAIL = IVFAIL + 1 05210012
IVCOMP=IVON01 05220012
IVCORR=140 05230012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05240012
1251 CONTINUE 05250012
IVTNUM = 125 05260012
C 05270012
C TEST 125 - THIS IS BASICALLY THE SAME AS TEST 124 EXCEPT THAT 05280012
C AN ARITHMETIC IF BRANCH IS USED INSTEAD OF THE GO TO 05290012
C STATEMENT FOR THE BRANCH TO THE TERMINAL STATEMENT COMMON 05300012
C TO ALL THREE OF THE DO RANGES. 05310012
C THE FINAL VALUE OF THE LOOP COUNTER SHOULD BE ONE 05320012
C HUNDRED AND FORTY (140). 05330012
C 05340012
C 05350012
IF (ICZERO) 31250, 1250, 31250 05360012
1250 CONTINUE 05370012
IVON01=0 05380012
DO 1252 I1=1,4,1 05390012
DO 1252 I2=1,5,1 05400012
DO 1252 I3=2,8,1 05410012
IVON01=IVON01+1 05420012
IF ( I3 - 9 ) 1252, 1252, 1253 05430012
1252 CONTINUE 05440012
1253 CONTINUE 05450012
GO TO 41250 05460012
31250 IVDELE = IVDELE + 1 05470012
WRITE (I02,80003) IVTNUM 05480012
IF (ICZERO) 41250, 1261, 41250 05490012
41250 IF ( IVON01 - 140 ) 21250, 11250, 21250 05500012
11250 IVPASS = IVPASS + 1 05510012
WRITE (I02,80001) IVTNUM 05520012
GO TO 1261 05530012
21250 IVFAIL = IVFAIL + 1 05540012
IVCOMP=IVON01 05550012
IVCORR=140 05560012
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05570012
1261 CONTINUE 05580012
C 05590012
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 05600012
99999 CONTINUE 05610012
WRITE (I02,90002) 05620012
WRITE (I02,90006) 05630012
WRITE (I02,90002) 05640012
WRITE (I02,90002) 05650012
WRITE (I02,90007) 05660012
WRITE (I02,90002) 05670012
WRITE (I02,90008) IVFAIL 05680012
WRITE (I02,90009) IVPASS 05690012
WRITE (I02,90010) IVDELE 05700012
C 05710012
C 05720012
C TERMINATE ROUTINE EXECUTION 05730012
STOP 05740012
C 05750012
C FORMAT STATEMENTS FOR PAGE HEADERS 05760012
90000 FORMAT ("1") 05770012
90002 FORMAT (" ") 05780012
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 05790012
90003 FORMAT (" ",21X,"VERSION 2.1" ) 05800012
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 05810012
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 05820012
90006 FORMAT (" ",5X,"----------------------------------------------" ) 05830012
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 05840012
C 05850012
C FORMAT STATEMENTS FOR RUN SUMMARIES 05860012
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 05870012
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 05880012
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 05890012
C 05900012
C FORMAT STATEMENTS FOR TEST RESULTS 05910012
80001 FORMAT (" ",4X,I5,7X,"PASS") 05920012
80002 FORMAT (" ",4X,I5,7X,"FAIL") 05930012
80003 FORMAT (" ",4X,I5,7X,"DELETED") 05940012
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 05950012
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 05960012
C 05970012
90007 FORMAT (" ",20X,"END OF PROGRAM FM012" ) 05980012
END 05990012