blob: 65d3b402adf5cb21ed986395832ccd47d47ad392 [file] [log] [blame]
PROGRAM FM002
C COMMENT SECTION 00010002
C 00020002
C FM002 00030002
C 00040002
C THIS ROUTINE CHECKS THAT COMMENT LINES WHICH HAVE VALID 00050002
C FORTRAN STATEMENTS DO NOT AFFECT THE EXECUTION OF THE PROGRAM 00060002
C IN ANY WAY. 00070002
C 00080002
C REFERENCES 00090002
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00100002
C X3.9-1978 00110002
C 00120002
C SECTION 3.2.1, COMMENT LINE 00130002
C 00140002
C ********************************************************** 00150002
C 00160002
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00170002
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00180002
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00190002
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00200002
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00210002
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00220002
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00230002
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00240002
C OF EXECUTING THESE TESTS. 00250002
C 00260002
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00270002
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00280002
C 00290002
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00300002
C 00310002
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00320002
C SOFTWARE STANDARDS VALIDATION GROUP 00330002
C BUILDING 225 RM A266 00340002
C GAITHERSBURG, MD 20899 00350002
C ********************************************************** 00360002
C 00370002
C 00380002
C 00390002
C INITIALIZATION SECTION 00400002
C 00410002
C INITIALIZE CONSTANTS 00420002
C ************** 00430002
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00440002
I01 = 5 00450002
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00460002
I02 = 6 00470002
C SYSTEM ENVIRONMENT SECTION 00480002
C 00490002
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00500002
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00510002
C (UNIT NUMBER FOR CARD READER). 00520002
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00530002
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00540002
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00550002
C 00560002
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00570002
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00580002
C (UNIT NUMBER FOR PRINTER). 00590002
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00600002
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00610002
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00620002
C 00630002
IVPASS=0 00640002
IVFAIL=0 00650002
IVDELE=0 00660002
ICZERO=0 00670002
C 00680002
C WRITE PAGE HEADERS 00690002
WRITE (I02,90000) 00700002
WRITE (I02,90001) 00710002
WRITE (I02,90002) 00720002
WRITE (I02, 90002) 00730002
WRITE (I02,90003) 00740002
WRITE (I02,90002) 00750002
WRITE (I02,90004) 00760002
WRITE (I02,90002) 00770002
WRITE (I02,90011) 00780002
WRITE (I02,90002) 00790002
WRITE (I02,90002) 00800002
WRITE (I02,90005) 00810002
WRITE (I02,90006) 00820002
WRITE (I02,90002) 00830002
C TEST SECTION 00840002
C 00850002
41 CONTINUE 00860002
IVTNUM=4 00870002
C 00880002
C **** TEST 004 **** 00890002
C TEST 004 - BLANK COMMENT LINE 00900002
C 00910002
IF (ICZERO) 30040,40,30040 00920002
40 CONTINUE 00930002
IVON01=4 00940002
C 00950002
GO TO 40040 00960002
30040 IVDELE=IVDELE+1 00970002
WRITE (I02,80003) IVTNUM 00980002
IF (ICZERO) 40040, 51, 40040 00990002
40040 IF (IVON01 - 4) 20040, 10040, 20040 01000002
10040 IVPASS=IVPASS+1 01010002
WRITE (I02,80001) IVTNUM 01020002
GO TO 51 01030002
20040 IVFAIL=IVFAIL+1 01040002
IVCOMP=IVON01 01050002
IVCORR=4 01060002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 01070002
51 CONTINUE 01080002
IVTNUM=5 01090002
C 01100002
C **** TEST 005 **** 01110002
C TEST 005 - GO TO IN COMMENT LINE 01120002
C 01130002
IF (ICZERO) 30050, 50, 30050 01140002
50 CONTINUE 01150002
IVON01 = 3 01160002
C GO TO 20050 01170002
IVON01=5 01180002
GO TO 40050 01190002
30050 IVDELE=IVDELE+1 01200002
WRITE (I02,80003) IVTNUM 01210002
IF (ICZERO) 40050, 61, 40050 01220002
40050 IF (IVON01 - 5) 20050,10050,20050 01230002
10050 IVPASS=IVPASS+1 01240002
WRITE (I02,80001) IVTNUM 01250002
GO TO 61 01260002
20050 IVFAIL=IVFAIL+1 01270002
IVCOMP=IVON01 01280002
IVCORR=5 01290002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 01300002
61 CONTINUE 01310002
IVTNUM=6 01320002
C 01330002
C **** TEST 006 **** 01340002
C TEST 006 - INTEGER ASSIGNMENT STATEMENT IN COMMENT LINE 01350002
C 01360002
IF (ICZERO) 30060,60,30060 01370002
60 CONTINUE 01380002
IVON01=6 01390002
C IVON01=1 01400002
GO TO 40060 01410002
30060 IVDELE=IVDELE+1 01420002
WRITE (I02,80003) IVTNUM 01430002
IF (ICZERO) 40060,71,40060 01440002
40060 IF (IVON01-6) 20060,10060,20060 01450002
10060 IVPASS=IVPASS+1 01460002
WRITE (I02,80001) IVTNUM 01470002
GO TO 71 01480002
20060 IVFAIL=IVFAIL+1 01490002
IVCOMP=IVON01 01500002
IVCORR=6 01510002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 01520002
71 CONTINUE 01530002
IVTNUM=7 01540002
C 01550002
C **** TEST 007 **** 01560002
C TEST 007 - INTEGER ASSIGNMENT STATEMENT IN COMMENT LINE 01570002
C INTEGER EXPRESSION TO RIGHT OF = 01580002
C 01590002
IF (ICZERO) 30070,70,30070 01600002
70 CONTINUE 01610002
IVON02=6 01620002
IVON01=7 01630002
C IVON01= 3*IVON02 01640002
GO TO 40070 01650002
30070 IVDELE=IVDELE+1 01660002
WRITE (I02,80003) IVTNUM 01670002
IF (ICZERO) 40070,81,40070 01680002
40070 IF (IVON01-7) 20070,10070,20070 01690002
10070 IVPASS=IVPASS+1 01700002
WRITE (I02,80001) IVTNUM 01710002
GO TO 81 01720002
20070 IVFAIL=IVFAIL+1 01730002
IVCOMP=IVON01 01740002
IVCORR=7 01750002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 01760002
81 CONTINUE 01770002
IVTNUM=8 01780002
C 01790002
C **** TEST 008 **** 01800002
C TEST 008 - IF STATEMENT IN COMMENT LINE 01810002
C 01820002
IF (ICZERO) 30080,80,30080 01830002
80 CONTINUE 01840002
IVON01=300 01850002
C IF (IVON01) 20080,20080,20080 01860002
IVON01=8 01870002
GO TO 40080 01880002
30080 IVDELE=IVDELE+1 01890002
WRITE (I02,80003) IVTNUM 01900002
IF (ICZERO) 40080,91,40080 01910002
40080 IF (IVON01-8) 20080,10080,20080 01920002
10080 IVPASS=IVPASS+1 01930002
WRITE (I02,80001) IVTNUM 01940002
GO TO 91 01950002
20080 IVFAIL=IVFAIL+1 01960002
IVCOMP=IVON01 01970002
IVCORR=8 01980002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 01990002
91 CONTINUE 02000002
IVTNUM=9 02010002
C 02020002
C **** TEST 009 **** 02030002
C TEST 009 - WRITE STATEMENT IN A COMMENT LINE 02040002
C 02050002
IF (ICZERO) 30090,90,30090 02060002
90 CONTINUE 02070002
IVON01=200 02080002
C 92 WRITE (I02,80002) IVTNUM 02090002
IVON01=9 02100002
GO TO 40090 02110002
30090 IVDELE=IVDELE+1 02120002
WRITE (I02,80003) IVTNUM 02130002
IF (ICZERO) 40090,101,40090 02140002
40090 IF (IVON01-9) 20090,10090,20090 02150002
10090 IVPASS=IVPASS+1 02160002
WRITE (I02,80001) IVTNUM 02170002
GO TO 101 02180002
20090 IVFAIL=IVFAIL+1 02190002
IVCOMP=IVON01 02200002
IVCORR=9 02210002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 02220002
101 IVTNUM=10 02230002
C 02240002
C **** TEST 010 **** 02250002
C TEST 010 - STATEMENT LABEL IN COMMENT LINE 02260002
C 02270002
IF (ICZERO) 30100,100,30100 02280002
100 CONTINUE 02290002
GO TO 102 02300002
C 102 WRITE (I02,80002) 02310002
C GO TO 111 02320002
102 IVON01=10 02330002
GO TO 40100 02340002
30100 IVDELE=IVDELE+1 02350002
WRITE (I02,80003) IVTNUM 02360002
IF (ICZERO) 40100,111,40100 02370002
40100 IF (IVON01-10) 20100,10100,20100 02380002
10100 IVPASS=IVPASS+1 02390002
WRITE (I02,80001) IVTNUM 02400002
GO TO 111 02410002
20100 IVFAIL=IVFAIL+1 02420002
IVCOMP=IVON01 02430002
IVCORR=10 02440002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 02450002
111 CONTINUE 02460002
IVTNUM=11 02470002
C 02480002
C **** TEST 011 **** 02490002
C TEST 011 - CONTINUE IN COMMENT LINE 02500002
C FOLLOWED BY INTEGER ASSIGNMENT STATEMENT IN COMMENT 02510002
C 02520002
IF (ICZERO) 30110,110,30110 02530002
110 IVON01=11 02540002
C CONTINUE 02550002
C IVON01=7000 02560002
GO TO 40110 02570002
30110 IVDELE=IVDELE+1 02580002
WRITE (I02,80003) IVTNUM 02590002
IF (ICZERO) 40110,121,40110 02600002
40110 IF (IVON01 -11) 20110,10110,20110 02610002
10110 IVPASS=IVPASS+1 02620002
WRITE (I02,80001) IVTNUM 02630002
GO TO 121 02640002
20110 IVFAIL=IVFAIL+1 02650002
IVCOMP=IVON01 02660002
IVCORR=11 02670002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 02680002
121 CONTINUE 02690002
IVTNUM=12 02700002
C 02710002
C **** TEST 012 **** 02720002
C TEST 012 - INTEGER ASSIGNMENT STATEMENT IN COMMENT LINE 02730002
C 02740002
IF (ICZERO) 30120,120,30120 02750002
120 CONTINUE 02760002
IVON01=12 02770002
C IVON01=IVON01+1 02780002
GO TO 40120 02790002
30120 IVDELE=IVDELE+1 02800002
WRITE (I02,80003) IVTNUM 02810002
IF (ICZERO) 40120,99999,40120 02820002
40120 IF (IVON01 - 12) 20120,10120,20120 02830002
10120 IVPASS=IVPASS+1 02840002
WRITE (I02,80001) IVTNUM 02850002
GO TO 99999 02860002
20120 IVFAIL=IVFAIL+1 02870002
IVCOMP=IVON01 02880002
IVCORR=12 02890002
WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 02900002
C 02910002
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 02920002
99999 CONTINUE 02930002
WRITE (I02,90002) 02940002
WRITE (I02,90006) 02950002
WRITE (I02,90002) 02960002
WRITE (I02,90002) 02970002
WRITE (I02,90007) 02980002
WRITE (I02,90002) 02990002
WRITE (I02,90008) IVFAIL 03000002
WRITE (I02,90009) IVPASS 03010002
WRITE (I02,90010) IVDELE 03020002
C 03030002
C 03040002
C TERMINATE ROUTINE EXECUTION 03050002
STOP 03060002
C 03070002
C FORMAT STATEMENTS FOR PAGE HEADERS 03080002
90000 FORMAT ("1") 03090002
90002 FORMAT (" ") 03100002
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03110002
90003 FORMAT (" ",21X,"VERSION 2.1" ) 03120002
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 03130002
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 03140002
90006 FORMAT (" ",5X,"----------------------------------------------" ) 03150002
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 03160002
C 03170002
C FORMAT STATEMENTS FOR RUN SUMMARIES 03180002
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 03190002
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 03200002
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 03210002
C 03220002
C FORMAT STATEMENTS FOR TEST RESULTS 03230002
80001 FORMAT (" ",4X,I5,7X,"PASS") 03240002
80002 FORMAT (" ",4X,I5,7X,"FAIL") 03250002
80003 FORMAT (" ",4X,I5,7X,"DELETED") 03260002
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 03270002
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 03280002
C 03290002
90007 FORMAT (" ",20X,"END OF PROGRAM FM002" ) 03300002
C COMMENT LINE BEFORE END STATEMENT 03310002
END 03320002