C COMMENT SECTION C C FM003 C C THIS ROUTINE CONTAINS THE BASIC CONTINUE TESTS. THESE TESTS C ENSURE THAT EXECUTION OF A CONTINUE STATEMENT CAUSES CONTINUATION C OF THE NORMAL PROGRAM EXECUTION SEQUENCE. ONLY THE STATEMENTS IN C THE BASIC ASSUMPTIONS ARE INCLUDED IN THESE TESTS. OTHER CONTINUE C TESTS ARE CONTAINED IN OTHER ROUTINES AS PART OF THE TESTS FOR C OTHER LANGUAGE FEATURES SUCH AS THE DO STATEMENTS TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 3.6, NORMAL EXECUTION SEQUENCE AND TRANSFER OF CONTROL C SECTION 11.11, CONTINUE STATEMENT C C C ********************************************************** C C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT C OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - C C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ********************************************************** C C C C INITIALIZATION SECTION C C INITIALIZE CONSTANTS C ************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS=0 IVFAIL=0 IVDELE=0 ICZERO=0 C C WRITE PAGE HEADERS WRITE (I02,90000) WRITE (I02,90001) WRITE (I02,90002) WRITE (I02, 90002) WRITE (I02,90003) WRITE (I02,90002) WRITE (I02,90004) WRITE (I02,90002) WRITE (I02,90011) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90005) WRITE (I02,90006) WRITE (I02,90002) 131 CONTINUE IVTNUM = 13 C C **** TEST 013 **** C TEST 13 - CONTINUE TEST C CONTINUE STATEMENT FOLLOWING INTEGER ASSIGNMENT C STATEMENTS. C IF (ICZERO) 30130, 130, 30130 130 CONTINUE IVON01=5 IVON02=6 CONTINUE GO TO 40130 30130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40130, 141, 40130 40130 IF (IVON01-5) 20131,40131,20131 40131 IF (IVON02-6) 20132,10130,20132 10130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 141 20131 IVCOMP=IVON01 IVCORR=5 GO TO 20130 20132 IVCOMP=IVON02 IVCORR=6 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 141 CONTINUE IVTNUM = 14 C C **** TEST 014 **** C TEST 14 - CONTINUE TEST C CONTINUE STATEMENT BETWEEN INTEGER ASSIGNMENT C STATEMENTS C IF (ICZERO) 30140, 140, 30140 140 CONTINUE IVON01=14 CONTINUE IVON02=15 GO TO 40140 30140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40140, 151, 40140 40140 IF (IVON01 - 14) 20141,40141,20141 40141 IF (IVON02 - 15) 20142, 10140, 20142 10140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 151 20141 IVCOMP=IVON01 IVCORR=14 GO TO 20140 20142 IVCOMP=IVON02 IVCORR=15 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 151 CONTINUE IVTNUM = 15 C C **** TEST 015 **** C TEST 15 - CONTINUE TEST C TWO CONSECUTIVE CONTINUE STATEMENTS C IF (ICZERO) 30150, 150, 30150 150 CONTINUE CONTINUE IVON01=19 IVON02=20 GO TO 40150 30150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40150, 161, 40150 40150 IF (IVON01 - 19) 20151,40151,20151 40151 IF (IVON02 -20) 20152,10150,20152 10150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 161 20151 IVCOMP=IVON01 IVCORR=19 GO TO 20150 20152 IVCOMP=IVON02 IVCORR=20 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 161 CONTINUE IVTNUM = 16 C C **** TEST 016 **** C TEST 16 - CONTINUE TEST C BRANCH TO CONTINUE STATEMENT FROM IF STATEMENT C IF (ICZERO) 30160, 160, 30160 160 CONTINUE IVON01=16 IF (IVON01 - 16) 162,163,162 162 IVCORR=16 GO TO 20160 163 CONTINUE IVON01=160 GO TO 40160 30160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40160, 171, 40160 40160 IF (IVON01-160) 20161,10160,20161 10160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 171 20161 IVCORR=160 20160 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 171 CONTINUE IVTNUM = 17 C C **** TEST 017 **** C TEST 17 - CONTINUE TEST C TWO OF THE BRANCHES OF AN IF STATEMENT ARE TO THE SAME C CONTINUE STATEMENT. THE THIRD BRANCH ALSO IS MADE TO C A CONTINUE STATEMENT. C IF (ICZERO) 30170, 170, 30170 170 CONTINUE IVON01=17 IF (IVON01-19) 173,172,172 172 CONTINUE IVCORR=17 GO TO 20170 173 CONTINUE IVON01=170 GO TO 40170 30170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40170, 181, 40170 40170 IF (IVON01 - 170) 20171,10170,20171 10170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 181 20171 IVCORR=170 20170 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 181 CONTINUE IVTNUM = 18 C C **** TEST 018 **** C TEST 18 - CONTINUE TEST C BRANCH TO CONTINUE STATEMENT FROM GO TO STATEMENT C IF (ICZERO) 30180, 180, 30180 180 CONTINUE IF (ICZERO) 184,182,184 182 IVON01=18 GO TO 183 184 IVON01=20 183 CONTINUE IVON02=180 GO TO 40180 30180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40180, 191, 40180 40180 IF (IVON01 - 18) 20181,40181,20181 40181 IF (IVON02 -180) 20182,10180,20182 10180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 191 20181 IVCORR=18 IVCOMP=IVON01 GO TO 20180 20182 IVCOMP=IVON02 IVCORR=180 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 191 CONTINUE IVTNUM = 19 C C **** TEST 019 **** C TEST 19 - CONTINUE TEST C BRANCH TO THREE CONTINUE STATEMENTS FROM IF STATEMENT. C CONTINUE STATEMENTS FOLLOW EACH OTHER. C IF (ICZERO) 30190, 190, 30190 190 CONTINUE ICONE = 1 IF (ICONE) 194,192,193 193 CONTINUE 192 CONTINUE 194 CONTINUE IVON01=19 GO TO 40190 30190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40190, 201, 40190 40190 IF (IVON01 - 19) 20190,10190,20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 201 20190 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=19 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 201 CONTINUE IVTNUM = 20 C C **** TEST 020 **** C TEST 20 - CONTINUE TEST C THREE SEPARATE BRANCHES OF AN IF STATEMENT ARE TO C CONTINUE STATEMENTS. C IF (ICZERO) 30200, 200, 30200 200 CONTINUE ICON02=-2 IF (ICON02) 204,202,203 203 CONTINUE IVON01=203 GO TO 40200 204 CONTINUE IVON01 = 204 GO TO 40200 202 CONTINUE IVON01=202 GO TO 40200 30200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40200, 211, 40200 40200 IF (IVON01 - 204) 20200,10200,20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 211 20200 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=204 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 211 CONTINUE C C WRITE PAGE FOOTINGS AND RUN SUMMARIES 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90007) WRITE (I02,90002) WRITE (I02,90008) IVFAIL WRITE (I02,90009) IVPASS WRITE (I02,90010) IVDELE C C C TERMINATE ROUTINE EXECUTION STOP C C FORMAT STATEMENTS FOR PAGE HEADERS 90000 FORMAT (1H1) 90002 FORMAT (1H ) 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90003 FORMAT (1H ,21X,11HVERSION 1.0) 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 90006 FORMAT (1H ,5X,46H----------------------------------------------) 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARIES 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) C C FORMAT STATEMENTS FOR TEST RESULTS 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) C 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM003) END