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