PROGRAM FM003 C COMMENT SECTION 00010003 C 00020003 C FM003 00030003 C 00040003 C THIS ROUTINE CONTAINS THE BASIC CONTINUE TESTS. THESE TESTS 00050003 C ENSURE THAT EXECUTION OF A CONTINUE STATEMENT CAUSES CONTINUATION 00060003 C OF THE NORMAL PROGRAM EXECUTION SEQUENCE. ONLY THE STATEMENTS IN 00070003 C THE BASIC ASSUMPTIONS ARE INCLUDED IN THESE TESTS. OTHER CONTINUE00080003 C TESTS ARE CONTAINED IN OTHER ROUTINES AS PART OF THE TESTS FOR 00090003 C OTHER LANGUAGE FEATURES SUCH AS THE DO STATEMENTS TESTS. 00100003 C 00110003 C REFERENCES 00120003 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00130003 C X3.9-1978 00140003 C 00150003 C SECTION 3.6, NORMAL EXECUTION SEQUENCE AND TRANSFER OF CONTROL 00160003 C SECTION 11.11, CONTINUE STATEMENT 00170003 C 00180003 C 00190003 C ********************************************************** 00200003 C 00210003 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00220003 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00230003 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00240003 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00250003 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00260003 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00270003 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00280003 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00290003 C OF EXECUTING THESE TESTS. 00300003 C 00310003 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00320003 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00330003 C 00340003 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00350003 C 00360003 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00370003 C SOFTWARE STANDARDS VALIDATION GROUP 00380003 C BUILDING 225 RM A266 00390003 C GAITHERSBURG, MD 20899 00400003 C ********************************************************** 00410003 C 00420003 C 00430003 C 00440003 C INITIALIZATION SECTION 00450003 C 00460003 C INITIALIZE CONSTANTS 00470003 C ************** 00480003 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00490003 I01 = 5 00500003 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00510003 I02 = 6 00520003 C SYSTEM ENVIRONMENT SECTION 00530003 C 00540003 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00550003 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00560003 C (UNIT NUMBER FOR CARD READER). 00570003 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00580003 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00590003 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00600003 C 00610003 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00620003 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00630003 C (UNIT NUMBER FOR PRINTER). 00640003 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00650003 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00660003 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00670003 C 00680003 IVPASS=0 00690003 IVFAIL=0 00700003 IVDELE=0 00710003 ICZERO=0 00720003 C 00730003 C WRITE PAGE HEADERS 00740003 WRITE (I02,90000) 00750003 WRITE (I02,90001) 00760003 WRITE (I02,90002) 00770003 WRITE (I02, 90002) 00780003 WRITE (I02,90003) 00790003 WRITE (I02,90002) 00800003 WRITE (I02,90004) 00810003 WRITE (I02,90002) 00820003 WRITE (I02,90011) 00830003 WRITE (I02,90002) 00840003 WRITE (I02,90002) 00850003 WRITE (I02,90005) 00860003 WRITE (I02,90006) 00870003 WRITE (I02,90002) 00880003 131 CONTINUE 00890003 IVTNUM = 13 00900003 C 00910003 C **** TEST 013 **** 00920003 C TEST 13 - CONTINUE TEST 00930003 C CONTINUE STATEMENT FOLLOWING INTEGER ASSIGNMENT 00940003 C STATEMENTS. 00950003 C 00960003 IF (ICZERO) 30130, 130, 30130 00970003 130 CONTINUE 00980003 IVON01=5 00990003 IVON02=6 01000003 CONTINUE 01010003 GO TO 40130 01020003 30130 IVDELE = IVDELE + 1 01030003 WRITE (I02,80003) IVTNUM 01040003 IF (ICZERO) 40130, 141, 40130 01050003 40130 IF (IVON01-5) 20131,40131,20131 01060003 40131 IF (IVON02-6) 20132,10130,20132 01070003 10130 IVPASS = IVPASS + 1 01080003 WRITE (I02,80001) IVTNUM 01090003 GO TO 141 01100003 20131 IVCOMP=IVON01 01110003 IVCORR=5 01120003 GO TO 20130 01130003 20132 IVCOMP=IVON02 01140003 IVCORR=6 01150003 20130 IVFAIL = IVFAIL + 1 01160003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01170003 141 CONTINUE 01180003 IVTNUM = 14 01190003 C 01200003 C **** TEST 014 **** 01210003 C TEST 14 - CONTINUE TEST 01220003 C CONTINUE STATEMENT BETWEEN INTEGER ASSIGNMENT 01230003 C STATEMENTS 01240003 C 01250003 IF (ICZERO) 30140, 140, 30140 01260003 140 CONTINUE 01270003 IVON01=14 01280003 CONTINUE 01290003 IVON02=15 01300003 GO TO 40140 01310003 30140 IVDELE = IVDELE + 1 01320003 WRITE (I02,80003) IVTNUM 01330003 IF (ICZERO) 40140, 151, 40140 01340003 40140 IF (IVON01 - 14) 20141,40141,20141 01350003 40141 IF (IVON02 - 15) 20142, 10140, 20142 01360003 10140 IVPASS = IVPASS + 1 01370003 WRITE (I02,80001) IVTNUM 01380003 GO TO 151 01390003 20141 IVCOMP=IVON01 01400003 IVCORR=14 01410003 GO TO 20140 01420003 20142 IVCOMP=IVON02 01430003 IVCORR=15 01440003 20140 IVFAIL = IVFAIL + 1 01450003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01460003 151 CONTINUE 01470003 IVTNUM = 15 01480003 C 01490003 C **** TEST 015 **** 01500003 C TEST 15 - CONTINUE TEST 01510003 C TWO CONSECUTIVE CONTINUE STATEMENTS 01520003 C 01530003 IF (ICZERO) 30150, 150, 30150 01540003 150 CONTINUE 01550003 CONTINUE 01560003 IVON01=19 01570003 IVON02=20 01580003 GO TO 40150 01590003 30150 IVDELE = IVDELE + 1 01600003 WRITE (I02,80003) IVTNUM 01610003 IF (ICZERO) 40150, 161, 40150 01620003 40150 IF (IVON01 - 19) 20151,40151,20151 01630003 40151 IF (IVON02 -20) 20152,10150,20152 01640003 10150 IVPASS = IVPASS + 1 01650003 WRITE (I02,80001) IVTNUM 01660003 GO TO 161 01670003 20151 IVCOMP=IVON01 01680003 IVCORR=19 01690003 GO TO 20150 01700003 20152 IVCOMP=IVON02 01710003 IVCORR=20 01720003 20150 IVFAIL = IVFAIL + 1 01730003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01740003 161 CONTINUE 01750003 IVTNUM = 16 01760003 C 01770003 C **** TEST 016 **** 01780003 C TEST 16 - CONTINUE TEST 01790003 C BRANCH TO CONTINUE STATEMENT FROM IF STATEMENT 01800003 C 01810003 IF (ICZERO) 30160, 160, 30160 01820003 160 CONTINUE 01830003 IVON01=16 01840003 IF (IVON01 - 16) 162,163,162 01850003 162 IVCORR=16 01860003 GO TO 20160 01870003 163 CONTINUE 01880003 IVON01=160 01890003 GO TO 40160 01900003 30160 IVDELE = IVDELE + 1 01910003 WRITE (I02,80003) IVTNUM 01920003 IF (ICZERO) 40160, 171, 40160 01930003 40160 IF (IVON01-160) 20161,10160,20161 01940003 10160 IVPASS = IVPASS + 1 01950003 WRITE (I02,80001) IVTNUM 01960003 GO TO 171 01970003 20161 IVCORR=160 01980003 20160 IVFAIL = IVFAIL + 1 01990003 IVCOMP=IVON01 02000003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02010003 171 CONTINUE 02020003 IVTNUM = 17 02030003 C 02040003 C **** TEST 017 **** 02050003 C TEST 17 - CONTINUE TEST 02060003 C TWO OF THE BRANCHES OF AN IF STATEMENT ARE TO THE SAME 02070003 C CONTINUE STATEMENT. THE THIRD BRANCH ALSO IS MADE TO 02080003 C A CONTINUE STATEMENT. 02090003 C 02100003 IF (ICZERO) 30170, 170, 30170 02110003 170 CONTINUE 02120003 IVON01=17 02130003 IF (IVON01-19) 173,172,172 02140003 172 CONTINUE 02150003 IVCORR=17 02160003 GO TO 20170 02170003 173 CONTINUE 02180003 IVON01=170 02190003 GO TO 40170 02200003 30170 IVDELE = IVDELE + 1 02210003 WRITE (I02,80003) IVTNUM 02220003 IF (ICZERO) 40170, 181, 40170 02230003 40170 IF (IVON01 - 170) 20171,10170,20171 02240003 10170 IVPASS = IVPASS + 1 02250003 WRITE (I02,80001) IVTNUM 02260003 GO TO 181 02270003 20171 IVCORR=170 02280003 20170 IVFAIL = IVFAIL + 1 02290003 IVCOMP=IVON01 02300003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02310003 181 CONTINUE 02320003 IVTNUM = 18 02330003 C 02340003 C **** TEST 018 **** 02350003 C TEST 18 - CONTINUE TEST 02360003 C BRANCH TO CONTINUE STATEMENT FROM GO TO STATEMENT 02370003 C 02380003 IF (ICZERO) 30180, 180, 30180 02390003 180 CONTINUE 02400003 IF (ICZERO) 184,182,184 02410003 182 IVON01=18 02420003 GO TO 183 02430003 184 IVON01=20 02440003 183 CONTINUE 02450003 IVON02=180 02460003 GO TO 40180 02470003 30180 IVDELE = IVDELE + 1 02480003 WRITE (I02,80003) IVTNUM 02490003 IF (ICZERO) 40180, 191, 40180 02500003 40180 IF (IVON01 - 18) 20181,40181,20181 02510003 40181 IF (IVON02 -180) 20182,10180,20182 02520003 10180 IVPASS = IVPASS + 1 02530003 WRITE (I02,80001) IVTNUM 02540003 GO TO 191 02550003 20181 IVCORR=18 02560003 IVCOMP=IVON01 02570003 GO TO 20180 02580003 20182 IVCOMP=IVON02 02590003 IVCORR=180 02600003 20180 IVFAIL = IVFAIL + 1 02610003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02620003 191 CONTINUE 02630003 IVTNUM = 19 02640003 C 02650003 C **** TEST 019 **** 02660003 C TEST 19 - CONTINUE TEST 02670003 C BRANCH TO THREE CONTINUE STATEMENTS FROM IF STATEMENT. 02680003 C CONTINUE STATEMENTS FOLLOW EACH OTHER. 02690003 C 02700003 IF (ICZERO) 30190, 190, 30190 02710003 190 CONTINUE 02720003 ICONE = 1 02730003 IF (ICONE) 194,192,193 02740003 193 CONTINUE 02750003 192 CONTINUE 02760003 194 CONTINUE 02770003 IVON01=19 02780003 GO TO 40190 02790003 30190 IVDELE = IVDELE + 1 02800003 WRITE (I02,80003) IVTNUM 02810003 IF (ICZERO) 40190, 201, 40190 02820003 40190 IF (IVON01 - 19) 20190,10190,20190 02830003 10190 IVPASS = IVPASS + 1 02840003 WRITE (I02,80001) IVTNUM 02850003 GO TO 201 02860003 20190 IVFAIL = IVFAIL + 1 02870003 IVCOMP=IVON01 02880003 IVCORR=19 02890003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02900003 201 CONTINUE 02910003 IVTNUM = 20 02920003 C 02930003 C **** TEST 020 **** 02940003 C TEST 20 - CONTINUE TEST 02950003 C THREE SEPARATE BRANCHES OF AN IF STATEMENT ARE TO 02960003 C CONTINUE STATEMENTS. 02970003 C 02980003 IF (ICZERO) 30200, 200, 30200 02990003 200 CONTINUE 03000003 ICON02=-2 03010003 IF (ICON02) 204,202,203 03020003 203 CONTINUE 03030003 IVON01=203 03040003 GO TO 40200 03050003 204 CONTINUE 03060003 IVON01 = 204 03070003 GO TO 40200 03080003 202 CONTINUE 03090003 IVON01=202 03100003 GO TO 40200 03110003 30200 IVDELE = IVDELE + 1 03120003 WRITE (I02,80003) IVTNUM 03130003 IF (ICZERO) 40200, 211, 40200 03140003 40200 IF (IVON01 - 204) 20200,10200,20200 03150003 10200 IVPASS = IVPASS + 1 03160003 WRITE (I02,80001) IVTNUM 03170003 GO TO 211 03180003 20200 IVFAIL = IVFAIL + 1 03190003 IVCOMP=IVON01 03200003 IVCORR=204 03210003 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03220003 211 CONTINUE 03230003 C 03240003 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 03250003 99999 CONTINUE 03260003 WRITE (I02,90002) 03270003 WRITE (I02,90006) 03280003 WRITE (I02,90002) 03290003 WRITE (I02,90002) 03300003 WRITE (I02,90007) 03310003 WRITE (I02,90002) 03320003 WRITE (I02,90008) IVFAIL 03330003 WRITE (I02,90009) IVPASS 03340003 WRITE (I02,90010) IVDELE 03350003 C 03360003 C 03370003 C TERMINATE ROUTINE EXECUTION 03380003 STOP 03390003 C 03400003 C FORMAT STATEMENTS FOR PAGE HEADERS 03410003 90000 FORMAT ("1") 03420003 90002 FORMAT (" ") 03430003 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03440003 90003 FORMAT (" ",21X,"VERSION 2.1" ) 03450003 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 03460003 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 03470003 90006 FORMAT (" ",5X,"----------------------------------------------" ) 03480003 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 03490003 C 03500003 C FORMAT STATEMENTS FOR RUN SUMMARIES 03510003 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 03520003 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 03530003 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 03540003 C 03550003 C FORMAT STATEMENTS FOR TEST RESULTS 03560003 80001 FORMAT (" ",4X,I5,7X,"PASS") 03570003 80002 FORMAT (" ",4X,I5,7X,"FAIL") 03580003 80003 FORMAT (" ",4X,I5,7X,"DELETED") 03590003 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 03600003 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 03610003 C 03620003 90007 FORMAT (" ",20X,"END OF PROGRAM FM003" ) 03630003 END 03640003