blob: d927d1d905616fdcdb9b84d04fe3d3b2990fd068 [file] [log] [blame]
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