!<arch> FM001.f 480975939 170 2 100666 6665 ` *HEADER,FORTR,FM001 *FILES1,FORTR,FM001,X C COMMENT SECTION C C FM001 C C THIS ROUTINE CONTAINS THE BOILERPLATE SOURCE CODING WHICH C IS USED TO PRINT THE REPORT HEADINGS AND RUN SUMMARIES FOR EACH C OF THE ELEMENTARY ROUTINES. C C THREE TESTS ARE INCLUDED WHICH CONTAIN THE PROCEDURES FOR C TESTING THE LANGUAGE FEATURES AND DELETING TESTS. C C TEST 1 CHECKS THE PASS PROCEDURE C TEST 2 CHECKS THE FAIL PROCEDURE C TEST 3 CHECKS THE DELETE PROCEDURE C C IF THIS ROUTINE DOES NOT EXECUTE CORRECTLY, THEN NO OTHER C ROUTINES WILL BE RUN. THERE IS NO USE IN TRYING TO VALIDATE A C FORTRAN COMPILER WHICH CANNOT HANDLE SUCH BASIC STATEMENTS. 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) C TEST SECTION C 11 CONTINUE C C **** TEST 001 **** C TEST 001 - BASIC PROCEDURE FOR CODING TESTS C ALSO CHECKS CONTINUE STATEMENT WHICH SHOULD NOT HAVE C ANY AFFECT ON EXECUTION SEQUENCE C IF (ICZERO) 30010, 10, 30010 10 CONTINUE IVTNUM=1 GO TO 40010 30010 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40010, 21, 40010 40010 IF (IVTNUM - 1) 20010, 10010, 20010 10010 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 21 20010 IVFAIL=IVFAIL+1 IVCOMP=IVTNUM IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 21 CONTINUE C C **** TEST 002 **** C TEST - 002 FORCE FAIL CODE TO BE EXECUTED C IF (ICZERO) 30020,20,30020 20 CONTINUE IVTNUM=2 GO TO 40020 30020 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40020,31,40020 40020 IF (IVTNUM-1) 20020, 10020, 20020 10020 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 31 20020 IVFAIL=IVFAIL+1 IVCOMP=IVTNUM IVCORR=2 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 31 CONTINUE C C **** TEST 003 **** C TEST 003 - DELETE PROCEDURE TESTED C IF (ICZERO) 30030,30,30030 30 CONTINUE C IVTNUM=5000 C GO TO 40030 30030 IVDELE=IVDELE+1 IVTNUM=3 WRITE (I02,80003) IVTNUM IF (ICZERO) 40030,99999,40030 40030 IF (IVTNUM - 5000) 20030,10030,20030 10030 IVPASS=IVPASS +1 WRITE (I02,80001) IVTNUM GO TO 99999 20030 IVFAIL=IVFAIL+1 IVCOMP=IVTNUM IVCORR=5000 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 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 SPECIAL OUTPUT STATEMENTS FOR THIS ROUTINE WRITE (I02,90000) WRITE (I02,90002) WRITE (I02,80031) WRITE (I02,90002) WRITE (I02,80010) WRITE (I02,80020) WRITE (I02,80030) WRITE (I02,80032) 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 C FORMATS FOR CURRENT ROUTINE 80031 FORMAT (1H ,10X,39HTHE PROGRAM FM001 EXECUTED CORRECTLY IF) 80010 FORMAT (1H ,15X,13HTEST 1 PASSED) 80020 FORMAT (1H ,15X,42HTEST 2 FAILED WITH COMPUTED AND CORRECT =2) 80030 FORMAT (1H ,15X,18HTEST 3 WAS DELETED) 80032 FORMAT (1H ,15X,34HTHE RUN SUMMARY TOTALS ALL EQUAL 1) 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM001) END *END-OF,FM001 FM002.f 480975941 170 2 100666 9071 ` *HEADER,FORTR,FM002 *FILES1,FORTR,FM002,X C COMMENT SECTION C C FM002 C C THIS ROUTINE CHECKS THAT COMMENT LINES WHICH HAVE VALID C FORTRAN STATEMENTS DO NOT AFFECT THE EXECUTION OF THE PROGRAM C IN ANY WAY. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 3.2.1, COMMENT LINE 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) C TEST SECTION C 41 CONTINUE IVTNUM=4 C C **** TEST 004 **** C TEST 004 - BLANK COMMENT LINE C IF (ICZERO) 30040,40,30040 40 CONTINUE IVON01=4 C GO TO 40040 30040 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40040, 51, 40040 40040 IF (IVON01 - 4) 20040, 10040, 20040 10040 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 51 20040 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=4 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 51 CONTINUE IVTNUM=5 C C **** TEST 005 **** C TEST 005 - GO TO IN COMMENT LINE C IF (ICZERO) 30050, 50, 30050 50 CONTINUE IVON01 = 3 C GO TO 20050 IVON01=5 GO TO 40050 30050 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40050, 61, 40050 40050 IF (IVON01 - 5) 20050,10050,20050 10050 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 61 20050 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=5 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 61 CONTINUE IVTNUM=6 C C **** TEST 006 **** C TEST 006 - INTEGER ASSIGNMENT STATEMENT IN COMMENT LINE C IF (ICZERO) 30060,60,30060 60 CONTINUE IVON01=6 C IVON01=1 GO TO 40060 30060 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40060,71,40060 40060 IF (IVON01-6) 20060,10060,20060 10060 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 71 20060 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=6 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 71 CONTINUE IVTNUM=7 C C **** TEST 007 **** C TEST 007 - INTEGER ASSIGNMENT STATEMENT IN COMMENT LINE C INTEGER EXPRESSION TO RIGHT OF = C IF (ICZERO) 30070,70,30070 70 CONTINUE IVON02=6 IVON01=7 C IVON01= 3*IVON02 GO TO 40070 30070 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40070,81,40070 40070 IF (IVON01-7) 20070,10070,20070 10070 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 81 20070 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=7 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 81 CONTINUE IVTNUM=8 C C **** TEST 008 **** C TEST 008 - IF STATEMENT IN COMMENT LINE C IF (ICZERO) 30080,80,30080 80 CONTINUE IVON01=300 C IF (IVON01) 20080,20080,20080 IVON01=8 GO TO 40080 30080 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40080,91,40080 40080 IF (IVON01-8) 20080,10080,20080 10080 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 91 20080 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=8 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 91 CONTINUE IVTNUM=9 C C **** TEST 009 **** C TEST 009 - WRITE STATEMENT IN A COMMENT LINE C IF (ICZERO) 30090,90,30090 90 CONTINUE IVON01=200 C 92 WRITE (I02,80002) IVTNUM IVON01=9 GO TO 40090 30090 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40090,101,40090 40090 IF (IVON01-9) 20090,10090,20090 10090 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 101 20090 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=9 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 101 IVTNUM=10 C C **** TEST 010 **** C TEST 010 - STATEMENT LABEL IN COMMENT LINE C IF (ICZERO) 30100,100,30100 100 CONTINUE GO TO 102 C 102 WRITE (I02,80002) C GO TO 111 102 IVON01=10 GO TO 40100 30100 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40100,111,40100 40100 IF (IVON01-10) 20100,10100,20100 10100 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 111 20100 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=10 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 111 CONTINUE IVTNUM=11 C C **** TEST 011 **** C TEST 011 - CONTINUE IN COMMENT LINE C FOLLOWED BY INTEGER ASSIGNMENT STATEMENT IN COMMENT C IF (ICZERO) 30110,110,30110 110 IVON01=11 C CONTINUE C IVON01=7000 GO TO 40110 30110 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40110,121,40110 40110 IF (IVON01 -11) 20110,10110,20110 10110 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 121 20110 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=11 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 121 CONTINUE IVTNUM=12 C C **** TEST 012 **** C TEST 012 - INTEGER ASSIGNMENT STATEMENT IN COMMENT LINE C IF (ICZERO) 30120,120,30120 120 CONTINUE IVON01=12 C IVON01=IVON01+1 GO TO 40120 30120 IVDELE=IVDELE+1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40120,99999,40120 40120 IF (IVON01 - 12) 20120,10120,20120 10120 IVPASS=IVPASS+1 WRITE (I02,80001) IVTNUM GO TO 99999 20120 IVFAIL=IVFAIL+1 IVCOMP=IVON01 IVCORR=12 WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 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 FM002) C COMMENT LINE BEFORE END STATEMENT END *END-OF,FM002 FM003.f 480975943 170 2 100666 10377 ` *HEADER,FORTR,FM003 *FILES1,FORTR,FM003,X 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 *END-OF,FM003 FM004.f 480975945 170 2 100666 13608 ` *HEADER,FORTR,FM004 *FILES1,FORTR,FM004,X C COMMENT SECTION C C FM004 C C THIS ROUTINE CONTAINS BASIC ARITHMETIC IF STATEMENT TESTS. C THE STATEMENT FORMAT IS C IF (E) K1, K2, K3 C WHERE E IS A SIMPLE INTEGER EXPRESSION OF FORM C VARIABLE - CONSTANT C VARIABLE + CONSTANT C AND K1, K2 AND K3 ARE STATEMENT LABELS. ONLY THE STATEMENTS IN C THE BASIC ASSUMPTIONS ARE INCLUDED IN THESE TESTS. C EXECUTION OF AN IF STATEMENT CAUSES EVALUATION OF THE C EXPRESSION E FOLLOWING WHICH THE STATEMENT LABEL K1, K2 OR K3 C IS EXECUTED NEXT AS THE VALUE OF E IS LESS THAN ZERO, ZERO, OR C GREATER THAN ZERO, RESPECTIVELY. C C THE BASIC UNCONDITIONAL GO TO STATEMENT IS TESTED IN THIS C ROUTINE. THE STATEMENT IS OF THE FORM C GO TO K C WHERE K IS A STATEMENT LABEL. C EXECUTION OF AN UNCONDITIONAL GO TO STATEMENT CAUSES THE C STATEMENT IDENTIFIED BY STATEMENT LABEL K TO BE EXECUTED NEXT. 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.1, GO TO STATEMENT C SECTION 11.4, ARITHMETIC IF STATEMENT 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) C TEST SECTION C C TESTS 21, 22, AND 23 CONTAIN THE SAME IF STATEMENT BUT THE C EXPECTED BRANCH IS TO THE FIRST, SECOND OR THIRD STATEMENT LABEL C AS THE INTEGER EXPRESSION IS LESS THAN ZERO, EQUAL TO ZERO, OR C GREATER THAN ZERO RESPECTIVELY. C 211 CONTINUE IVTNUM = 21 C C **** TEST 021 **** C TEST 21 - ARITHMETIC IF STATEMENT TEST C LESS THAN ZERO BRANCH EXPECTED. C IF (ICZERO) 30210, 210, 30210 210 CONTINUE IVON01=2 IF (IVON01 - 3) 212,213,214 212 IVON02 = -1 GO TO 40210 213 IVON02 = 0 GO TO 40210 214 IVON02 = 1 GO TO 40210 30210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40210, 221, 40210 40210 IF (IVON02) 10210, 20210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 221 20210 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR=-1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 221 CONTINUE IVTNUM = 22 C C **** TEST 022 **** C TEST 22 - ARITHMETIC IF STATEMENT TEST C EQUAL TO ZERO BRANCH EXPECTED C IF (ICZERO) 30220, 220, 30220 220 CONTINUE IVON01 = 3 IF (IVON01 - 3) 222,223,224 222 IVON02 = -1 GO TO 40220 223 IVON02 = 0 GO TO 40220 224 IVON02 = 1 GO TO 40220 30220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40220, 231, 40220 40220 IF (IVON02) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 231 20220 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR= 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 231 CONTINUE IVTNUM = 23 C C **** TEST 023 **** C TEST 23 - ARITHMETIC IF STATEMENT TEST C GREATER THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30230, 230, 30230 230 CONTINUE IVON01 = 4 IF (IVON01 - 3) 232,233,234 232 IVON02 = -1 GO TO 40230 233 IVON02 = 0 GO TO 40230 234 IVON02 = 1 GO TO 40230 30230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40230, 241, 40230 40230 IF (IVON02) 20230, 20230, 10230 10230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 241 20230 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 24 THROUGH 29 CONTAIN AN IF STATEMENT WITH TWO OF THE C THREE BRANCH STATEMENT LABELS EQUAL. C 241 CONTINUE IVTNUM = 24 C C **** TEST 024 **** C TEST 24 - ARITHMETIC IF STATEMENT TEST C LESS THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30240, 240, 30240 240 CONTINUE IVON01=2 IF (IVON01 - 3) 242,243,242 242 IVON02=-1 GO TO 40240 243 IVON02=0 GO TO 40240 30240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40240, 251, 40240 40240 IF (IVON02) 10240, 20240, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 251 20240 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR=-1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 251 CONTINUE IVTNUM = 25 C C **** TEST 025 **** C TEST 25 - ARITHMETIC IF STATEMENT TEST C EQUAL TO ZERO BRANCH EXPECTED C IF (ICZERO) 30250, 250, 30250 250 CONTINUE IVON01=3 IF (IVON01 - 3) 252,253,252 252 IVON02= -1 GO TO 40250 253 IVON02 = 0 GO TO 40250 30250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40250, 261, 40250 40250 IF (IVON02) 20250,10250,20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 261 20250 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR=0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 261 CONTINUE IVTNUM = 26 C C **** TEST 026 **** C TEST 26 - ARITHMETIC IF STATEMENT TEST C GREATER THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30260, 260, 30260 260 CONTINUE IVON01=4 IF (IVON01-3) 262, 263, 262 262 IVON02= 1 GO TO 40260 263 IVON02 = 0 GO TO 40260 30260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40260, 271, 40260 40260 IF (IVON02) 20260, 20260, 10260 10260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 271 20260 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 271 CONTINUE IVTNUM = 27 C C **** TEST 027 **** C TEST 27 - ARITHMETIC IF STATEMENT TEST C LESS THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30270, 270, 30270 270 CONTINUE IVON01 = -4 IF (IVON01 + 3) 272, 272, 273 272 IVON02= -1 GO TO 40270 273 IVON02 = 1 GO TO 40270 30270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40270, 281, 40270 40270 IF (IVON02) 10270, 20270, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 281 20270 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR= -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 281 CONTINUE IVTNUM = 28 C C **** TEST 028 **** C TEST 28 - ARITHMETIC IF STATEMENT TEST C EQUAL TO ZERO BRANCH EXPECTED C IF (ICZERO) 30280, 280, 30280 280 CONTINUE IVON01 = -3 IF (IVON01 + 3) 282, 282, 283 282 IVON02 = 0 GO TO 40280 283 IVON02 = 1 GO TO 40280 30280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40280, 291, 40280 40280 IF (IVON02) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 291 20280 IVFAIL = IVFAIL + 1 IVCOMP=IVON02 IVCORR= 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 291 CONTINUE IVTNUM = 29 C C **** TEST 029 **** C TEST 29 - ARITHMETIC IF STATEMENT TEST C GREATER THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30290, 290, 30290 290 CONTINUE IVON01 = -2 IF (IVON01 + 3) 292,292,293 292 IVON02 = -1 GO TO 40290 293 IVON02 = 1 GO TO 40290 30290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40290, 301, 40290 40290 IF (IVON02) 20290, 20290, 10290 10290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 301 20290 IVFAIL = IVFAIL + 1 IVCOMP= IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 30 AND 31 CONTAIN THE BASIC GO TO STATEMENT TESTS. C 301 CONTINUE IVTNUM = 30 C C **** TEST 030 **** C TEST 30 - UNCONDITIONAL GO TO STATEMENT TEST C IF (ICZERO) 30300, 300, 30300 300 CONTINUE IVON01 = 1 GO TO 302 303 IVON01 = 2 GO TO 304 302 IVON01 = 3 GO TO 303 304 GO TO 40300 30300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40300, 311, 40300 40300 IF (IVON01 - 2) 20300,10300,20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 311 20300 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 311 CONTINUE IVTNUM = 31 C C **** TEST 031 **** C TEST 31 - UNCONDITIONAL GO TO STATEMENT TEST C IF (ICZERO) 30310, 310, 30310 310 CONTINUE IVON01 = 1 GO TO 316 313 GO TO 317 314 IVON01 = 3 GO TO 40310 315 GO TO 313 316 GO TO 315 317 GO TO 314 30310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40310, 321, 40310 40310 IF (IVON01 - 3) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 321 20310 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 321 CONTINUE IVTNUM = 32 C C **** TEST 032 **** C TEST 32 - ARITHMETIC IF STATEMENT AND UNCONDITIONAL GO TO C STATEMENT C THIS TEST COMBINES THE BASIC ARITHMETIC IF STATEMENTS AND C UNCONDITIONAL GO TO STATEMENTS IN ONE TEST. C IF (ICZERO) 30320, 320, 30320 320 CONTINUE IVON01 = 1 GO TO 322 324 IVON01 = 2 IF (IVON01 -1) 323, 323, 325 327 IVON01 = 5 GO TO 328 326 IVON01 = -4 IF (IVON01 + 4) 323, 327, 323 322 IF (IVON01 - 1) 323, 324, 323 323 GO TO 20320 325 IVON01 = 3 IF (IVON01 -4) 326,323,323 328 GO TO 40320 30320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40320, 331, 40320 40320 IF (IVON01 - 5) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 331 20320 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 331 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 FM004) END *END-OF,FM004 FM005.f 481212194 170 2 100666 12166 ` *HEADER,FORTR,FM005 *FILES1,FORTR,FM005,X C COMMENT SECTION C C FM005 C C THIS ROUTINE TESTS THE BASIC ASSUMPTIONS REGARDING THE SIMPLE C FORMATTED WRITE STATEMENT OF FORM C WRITE (U,F) OR C WRITE (U,F) L C WHERE U IS A LOGICAL UNIT NUMBER C F IS A FORMAT STATEMENT LABEL, AND C L IS A LIST OF INTEGER VARIABLES. C THE FORMAT STATEMENT F CONTAINS NH HOLLERITH FIELD DESCRIPTORS, C NX BLANK FIELD DESCRIPTORS AND IW NUMERIC FIELD DESCRIPTORS. C C THIS ROUTINE TESTS WHETHER THE FIRST CHARACTER OF A FORMAT C RECORD FOR PRINTER OUTPUT DETERMINES VERTICAL SPACING AS FOLLOWS C BLANK - ONE LINE C 1 - ADVANCE TO FIRST LINE OF NEXT PAGE C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 12.8.2, INPUT/OUTPUT LISTS C SECTION 12.9.5.2, READ, WRITE, AND PRINT STATEMENT C SECTION 12.9.5.2.3, PRINTING OF FORMATTED RECORDS C SECTION 13.5.2, H EDITING C SECTION 13.5.3.2, X EDITING C SECTION 13.5.9.1, NUMERIC EDITING C C ALL OF THE RESULTS OF THIS ROUTINE MUST BE VISUALLY CHECKED C ON THE OUTPUT REPORT. THE USUAL TEST CODE FOR PASS, FAIL, OR C DELETE DOES NOT APPLY TO THIS ROUTINE. IF ANY TEST IS TO BE C DELETED, CHANGE THE OFFENDING WRITE OR FORMAT STATEMENT TO A C COMMENT. THE PERSON RESPONSIBLE FOR CHECKING THE OUTPUT MUST ALSO C CHECK THE COMPILER LISTING TO SEE IF ANY STATEMENTS HAVE BEEN C CHANGED TO COMMENTS. 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,90006) WRITE (I02,90002) 331 CONTINUE IVTNUM = 33 C C **** TEST 033 **** C TEST 33 - VERTICAL SPACING TEST C 1 IN FIRST CHARACTER OF FORMATTED PRINT RECORD MEANS C RECORD IS FIRST LINE AT TOP OF NEXT PAGE. C WRITE (I02,80001) IVTNUM WRITE (I02,80331) 80331 FORMAT (5X,22HLAST LINE ON THIS PAGE) WRITE (I02,80330) 80330 FORMAT (1H1,31H THIS IS FIRST LINE ON PAGE) 341 CONTINUE IVTNUM = 34 C C **** TEST 034 **** C TEST 34 - VERTICAL SPACING TEST C PRINT BLANK LINES C WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80340) 80340 FORMAT (1H , 10X) WRITE (I02,80341) 80341 FORMAT (41H THERE IS ONE BLANK LINE BEFORE THIS LINE) WRITE (I02,80342) WRITE (I02,80342) 80342 FORMAT (11H ) WRITE (I02,80343) 80343 FORMAT (43H THERE ARE TWO BLANK LINES BEFORE THIS LINE) WRITE (I02,80344) WRITE (I02,80344) WRITE (I02,80344) 80344 FORMAT (11X) WRITE (I02,80345) 80345 FORMAT (45H THERE ARE THREE BLANK LINES BEFORE THIS LINE) 351 CONTINUE IVTNUM = 35 C C **** TEST 035 **** C TEST 35 - PRINT 54 CHARACTERS C WRITE (I02,90002) WRITE (I02,80001)IVTNUM WRITE (I02,80351) 80351 FORMAT (33H NEXT LINE CONTAINS 54 CHARACTERS) WRITE (I02,80350) 80350 FORMAT(55H 123456789012345678901234567890123456789012345678901234) 361 CONTINUE IVTNUM = 36 C C **** TEST 036 **** C TEST 36 - NUMERIC FIELD DESCRIPTOR I1 C WRITE (I02,90000) WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80361) 80361 FORMAT (1H ,10X,38HTHIS TEST PRINTS 3 UNDER I1 DESCRIPTOR) IVON01 = 3 WRITE (I02,80360) IVON01 80360 FORMAT (1H ,10X,I1) 371 CONTINUE IVTNUM = 37 C C **** TEST 037 **** C TEST 37 - NUMERIC FIELD DESCRIPTOR I2 C WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80371) 80371 FORMAT (11X,39HTHIS TEST PRINTS 15 UNDER I2 DESCRIPTOR) IVON01 = 15 WRITE (I02,80370) IVON01 80370 FORMAT (1H ,10X,I2) 381 CONTINUE IVTNUM = 38 C C **** TEST 038 **** C TEST 38 - NUMERIC FIELD DESCRIPTOR I3 C WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80381) 80381 FORMAT (11X,40HTHIS TEST PRINTS 291 UNDER I3 DESCRIPTOR) IVON01 = 291 WRITE (I02,80380) IVON01 80380 FORMAT (11X,I3) 391 CONTINUE IVTNUM = 39 C C **** TEST 039 **** C TEST 39 - NUMERIC FIELD DESCRIPTOR I4 C WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80391) 80391 FORMAT (11X,41HTHIS TEST PRINTS 4321 UNDER I4 DESCRIPTOR) IVON01 = 4321 WRITE (I02,80390) IVON01 80390 FORMAT (11X,I4) 401 CONTINUE IVTNUM = 40 C C **** TEST 040 **** C TEST 40 - NUMERIC FIELD DESCRIPTOR I5 C WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80401) 80401 FORMAT (1H ,10X,42HTHIS TEST PRINTS 12345 UNDER I5 DESCRIPTOR) IVON01 = 12345 WRITE (I02,80400) IVON01 80400 FORMAT (1H ,10X,I5) 411 CONTINUE IVTNUM = 41 C C **** TEST 041 **** C TEST 41 - NUMERIC FIELD DESCRIPTORS, INTEGER CONVERSION C IVON01 = 1 IVON02 = 22 IVON03 = 333 IVON04 = 4444 IVON05 = 25555 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80411) 80411 FORMAT (3X,50HTHIS TEST PRINTS 1, 22, 333, 4444, AND 25555 UNDER) WRITE (I02,80412) 80412 FORMAT (10X,32H(10X,I1,3X,I2,3X,I3,3X,I4,3X,I5)) WRITE (I02,80410) IVON01, IVON02, IVON03, IVON04, IVON05 80410 FORMAT (10X,I1,3X,I2,3X,I3,3X,I4,3X,I5) 421 CONTINUE IVTNUM = 42 C C **** TEST 042 **** C TEST 42 - HOLLERITH, NUMERIC AND X FIELD DESCRIPTORS C COMBINE HOLLERITH, NUMERIC AND X FIELD DESCRIPTORS IN C ONE FORMAT STATEMENT C IVON01=113 IVON02=8 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80421) 80421 FORMAT (10X,28HNEXT TWO LINES ARE IDENTICAL) WRITE (I02,80422) 80422 FORMAT (35H IVON01 = 113 IVON02 = 8) WRITE (I02,80420) IVON01, IVON02 80420 FORMAT (6X,8HIVON01 =,I5,3X,8HIVON02 =,I5) 431 CONTINUE IVTNUM=43 C C **** TEST 043 **** C TEST 43 - NUMERIC FIELD DESCRIPTOR I2 C PRINT NEGATIVE INTEGER C IVON01 = -1 WRITE (I02,90000) WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80431) 80431 FORMAT (11X,39HTHIS TEST PRINTS -1 UNDER I2 DESCRIPTOR) WRITE (I02,80430) IVON01 80430 FORMAT (11X,I2) 441 CONTINUE IVTNUM = 44 C C **** TEST 044 **** C TEST 44 - NUMERIC FIELD DESCRIPTOR I3 C PRINT NEGATIVE INTEGER C IVON01 = -22 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80441) 80441 FORMAT (11X,40HTHIS TEST PRINTS -22 UNDER I3 DESCRIPTOR) WRITE (I02,80440) IVON01 80440 FORMAT (11X,I3) 451 CONTINUE IVTNUM = 45 C C **** TEST 045 **** C TEST 45 - NUMERIC FIELD DESCRIPTOR I4 C PRINT NEGATIVE INTEGER C IVON01 = -333 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80451) 80451 FORMAT (11X,41HTHIS TEST PRINTS -333 UNDER I4 DESCRIPTOR) WRITE (I02,80450) IVON01 80450 FORMAT (11X,I4) 461 CONTINUE IVTNUM = 46 C C **** TEST 046 **** C TEST 46 - NUMERIC FIELD DESCRIPTOR I5 C PRINT NEGATIVE INTEGER C IVON01 = -4444 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80461) 80461 FORMAT (11X,42HTHIS TEST PRINTS -4444 UNDER I5 DESCRIPTOR) WRITE (I02,80460) IVON01 80460 FORMAT (11X,I5) 471 CONTINUE IVTNUM = 47 C C **** TEST 047 **** C TEST 47 - NUMERIC FIELD DESCRIPTOR I6 C PRINT NEGATIVE INTEGER C IVON01 = -15555 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80471) 80471 FORMAT (11X,43HTHIS TEST PRINTS -15555 UNDER DESCRIPTOR I6) WRITE (I02,80470) IVON01 80470 FORMAT (11X,I6) 481 CONTINUE IVTNUM = 48 C C **** TEST 048 **** C TEST 48 - NUMERIC FIELD DESCRIPTORS, INTEGER CONVERSION C PRINT NEGATIVE INTEGERS C IVON01 = -9 IVON02 = -88 IVON03 = -777 IVON04 = -6666 IVON05 = -25555 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80481) 80481 FORMAT (8X,49HTHIS TEST PRINTS -9, -88, -777, -6666, AND -25555) WRITE (I02,80482) 80482 FORMAT (11X,43HUNDER FORMAT 10X,I2,3X,I3,3X,I4,3X,I5,3X,I6) WRITE (I02,80480) IVON01,IVON02,IVON03,IVON04,IVON05 80480 FORMAT (10X,I2,3X,I3,3X,I4,3X,I5,3X,I6) 491 CONTINUE IVTNUM = 49 C C **** TEST 049 **** C TEST 49 - NUMERIC FIELD DESCRIPTOR I5 C MIX POSITIVE AND NEGATIVE INTEGER OUTPUT IN ONE FORMAT C STATEMENT ALL UNDER I5 DESCRIPTOR C IVON01 =5 IVON02 = -54 IVON03 = 543 IVON04 = -5432 IVON05=32000 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80491) 80491 FORMAT (18X,46HTHIS TEST PRINTS 5, -54, 543, -5432, AND 32000) WRITE (I02,80492) 80492 FORMAT (11X,33HUNDER I5 NUMERIC FIELD DESCRIPTOR) WRITE (I02,80490) IVON01,IVON02,IVON03,IVON04,IVON05 80490 FORMAT (11X,I5,3X,I5,3X,I5,3X,I5,3X,I5) C C WRITE PAGE FOOTINGS 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90007) 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 FORMAT STATEMENTS FOR THIS ROUTINE 80001 FORMAT (10X,5HTEST ,I2) 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM005) END *END-OF,FM005 FM006.f 480975950 170 2 100666 20064 ` *HEADER,FORTR,FM006 *FILES1,FORTR,FM006,X C COMMENT SECTION C C FM006 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF C THE FORM C INTEGER VARIABLE = INTEGER CONSTANT C INTEGER VARIABLE = INTEGER VARIABLE C THE INTEGER CONSTANT MAY BE UNSIGNED, POSITIVE OR NEGATIVE. C C AN INTEGER DATUM IS ALWAYS AN EXACT REPRESENTATION OF AN C INTEGER VALUE. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. C IT MAY ONLY ASSUME INTEGRAL VALUES. C C AN INTEGER CONSTANT IS WRITTEN AS A NONEMPTY STRING OF DIGITS. C THE CONSTANT IS THE DIGIT STRING INTERPRETED AS A DECIMAL NUMBER. C C THIS ROUTINE ALSO CONTAINS TESTS WHICH CHECK ON THE USE OF C AT LEAST 16 BITS FOR REPRESENTING INTEGER DATA VALUES. THE C CONSTANT VALUES 32767 AND -32766 ARE USED IN THESE TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENTS 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) C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 50 THROUGH TEST 61 CONTAIN STATEMENT OF FORM C INTEGER VARIABLE = INTEGER CONSTANT C C TESTS 50 THROUGH 53 CONTAIN UNSIGNED INTEGER CONSTANT. C 501 CONTINUE IVTNUM = 50 C C **** TEST 50 **** C IF (ICZERO) 30500, 500, 30500 500 CONTINUE IVCOMP=3 GO TO 40500 30500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40500, 511, 40500 40500 IF (IVCOMP - 3) 20500, 10500, 20500 10500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 511 20500 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 511 CONTINUE IVTNUM = 51 C C **** TEST 51 **** C IF (ICZERO) 30510, 510, 30510 510 CONTINUE IVCOMP = 76 GO TO 40510 30510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40510, 521, 40510 40510 IF (IVCOMP - 76) 20510, 10510, 20510 10510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 521 20510 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 521 CONTINUE IVTNUM = 52 C C **** TEST 52 **** C IF (ICZERO) 30520, 520, 30520 520 CONTINUE IVCOMP = 587 GO TO 40520 30520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40520, 531, 40520 40520 IF (IVCOMP - 587) 20520, 10520, 20520 10520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 531 20520 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 531 CONTINUE IVTNUM = 53 C C **** TEST 53 **** C IF (ICZERO) 30530, 530, 30530 530 CONTINUE IVCOMP = 9999 GO TO 40530 30530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40530, 541, 40530 40530 IF (IVCOMP - 9999) 20530, 10530, 20530 10530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 541 20530 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 54 THROUGH 57 CONTAIN POSITIVE SIGNED INTEGERS C 541 CONTINUE IVTNUM = 54 C C **** TEST 54 **** C IF (ICZERO) 30540, 540, 30540 540 CONTINUE IVCOMP = +3 GO TO 40540 30540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40540, 551, 40540 40540 IF (IVCOMP - 3) 20540, 10540, 20540 10540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 551 20540 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 551 CONTINUE IVTNUM = 55 C C **** TEST 55 **** C IF (ICZERO) 30550, 550, 30550 550 CONTINUE IVCOMP = +76 GO TO 40550 30550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40550, 561, 40550 40550 IF (IVCOMP - 76) 20550, 10550, 20550 10550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 561 20550 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 561 CONTINUE IVTNUM = 56 C C **** TEST 56 **** C IF (ICZERO) 30560, 560, 30560 560 CONTINUE IVCOMP = +587 GO TO 40560 30560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40560, 571, 40560 40560 IF (IVCOMP - 587) 20560, 10560, 20560 10560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 571 20560 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 571 CONTINUE IVTNUM = 57 C C **** TEST 57 **** C IF (ICZERO) 30570, 570, 30570 570 CONTINUE IVCOMP = +9999 GO TO 40570 30570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40570, 581, 40570 40570 IF (IVCOMP - 9999) 20570, 10570, 20570 10570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 581 20570 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 58 THROUGH 61 CONTAIN SIGNED NEGATIVE INTEGERS C 581 CONTINUE IVTNUM = 58 C C **** TEST 58 **** C IF (ICZERO) 30580, 580, 30580 580 CONTINUE IVCOMP = -3 GO TO 40580 30580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40580, 591, 40580 40580 IF (IVCOMP + 3) 20580, 10580, 20580 10580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 591 20580 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 591 CONTINUE IVTNUM = 59 C C **** TEST 59 **** C IF (ICZERO) 30590, 590, 30590 590 CONTINUE IVCOMP = -76 GO TO 40590 30590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40590, 601, 40590 40590 IF (IVCOMP + 76) 20590, 10590, 20590 10590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 601 20590 IVFAIL = IVFAIL + 1 IVCORR = -76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 601 CONTINUE IVTNUM = 60 C C **** TEST 60 **** C IF (ICZERO) 30600, 600, 30600 600 CONTINUE IVCOMP = -587 GO TO 40600 30600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40600, 611, 40600 40600 IF (IVCOMP + 587) 20600,10600,20600 10600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 611 20600 IVFAIL = IVFAIL + 1 IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 611 CONTINUE IVTNUM = 61 C C **** TEST 61 **** C IF (ICZERO) 30610, 610, 30610 610 CONTINUE IVCOMP = -9999 GO TO 40610 30610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40610, 621, 40610 40610 IF (IVCOMP + 9999) 20610, 10610, 20610 10610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 621 20610 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 62 THROUGH TEST 73 CONTAIN STATEMENT OF FORM C INTEGER VARIABLE = INTEGER VARIABLE C C TESTS 62 THROUGH 65 CONTAIN UNSIGNED VALUES. C 621 CONTINUE IVTNUM = 62 C C **** TEST 62 **** C IF (ICZERO) 30620, 620, 30620 620 CONTINUE IVON01 = 3 IVCOMP = IVON01 GO TO 40620 30620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40620, 631, 40620 40620 IF (IVCOMP - 3) 20620, 10620, 20620 10620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 631 20620 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 631 CONTINUE IVTNUM = 63 C C **** TEST 63 **** C IF (ICZERO) 30630, 630, 30630 630 CONTINUE IVON01 = 76 IVCOMP = IVON01 GO TO 40630 30630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40630, 641, 40630 40630 IF (IVCOMP - 76) 20630, 10630, 20630 10630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 641 20630 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 641 CONTINUE IVTNUM = 64 C C **** TEST 64 **** C IF (ICZERO) 30640, 640, 30640 640 CONTINUE IVON01 = 587 IVCOMP = IVON01 GO TO 40640 30640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40640, 651, 40640 40640 IF (IVCOMP - 587) 20640, 10640, 20640 10640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 651 20640 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 651 CONTINUE IVTNUM = 65 C C **** TEST 65 **** C IF (ICZERO) 30650, 650, 30650 650 CONTINUE IVON01 = 9999 IVCOMP = IVON01 GO TO 40650 30650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40650, 661, 40650 40650 IF (IVCOMP - 9999) 20650, 10650, 20650 10650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 661 20650 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 66 THROUGH 69 CONTAIN POSITIVE VALUES. C 661 CONTINUE IVTNUM = 66 C C **** TEST 66 **** C IF (ICZERO) 30660, 660, 30660 660 CONTINUE IVON01 = +3 IVCOMP = IVON01 GO TO 40660 30660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40660, 671, 40660 40660 IF (IVCOMP - 3) 20660,10660,20660 10660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 671 20660 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 671 CONTINUE IVTNUM = 67 C C **** TEST 67 **** C IF (ICZERO) 30670, 670, 30670 670 CONTINUE IVON01 = +76 IVCOMP = IVON01 GO TO 40670 30670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40670, 681, 40670 40670 IF (IVCOMP - 76) 20670, 10670, 20670 10670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 681 20670 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 681 CONTINUE IVTNUM = 68 C C **** TEST 68 **** C IF (ICZERO) 30680, 680, 30680 680 CONTINUE IVON01 = +587 IVCOMP = IVON01 GO TO 40680 30680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40680, 691, 40680 40680 IF (IVCOMP - 587) 20680, 10680, 20680 10680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 691 20680 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 691 CONTINUE IVTNUM = 69 C C **** TEST 69 **** C IF (ICZERO) 30690, 690, 30690 690 CONTINUE IVON01 = +9999 IVCOMP = IVON01 GO TO 40690 30690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40690, 701, 40690 40690 IF (IVCOMP - 9999) 20690, 10690, 20690 10690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 701 20690 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 70 THROUGH 73 CONTAIN NEGATIVE VALUES. C 701 CONTINUE IVTNUM = 70 C C **** TEST 70 **** C IF (ICZERO) 30700, 700, 30700 700 CONTINUE IVON01 = -3 IVCOMP = IVON01 GO TO 40700 30700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40700, 711, 40700 40700 IF (IVCOMP + 3) 20700, 10700, 20700 10700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 711 20700 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 711 CONTINUE IVTNUM = 71 C C **** TEST 71 **** C IF (ICZERO) 30710, 710, 30710 710 CONTINUE IVON01 = -76 IVCOMP = IVON01 GO TO 40710 30710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40710, 721, 40710 40710 IF (IVCOMP + 76) 20710, 10710, 20710 10710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 721 20710 IVFAIL = IVFAIL + 1 IVCORR = -76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 721 CONTINUE IVTNUM = 72 C C **** TEST 72 **** C IF (ICZERO) 30720, 720, 30720 720 CONTINUE IVON01 = -587 IVCOMP = IVON01 GO TO 40720 30720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40720, 731, 40720 40720 IF (IVCOMP + 587) 20720, 10720, 20720 10720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 731 20720 IVFAIL = IVFAIL + 1 IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 731 CONTINUE IVTNUM = 73 C C **** TEST 73 **** C IF (ICZERO) 30730, 730, 30730 730 CONTINUE IVON01 = -9999 IVCOMP = IVON01 GO TO 40730 30730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40730, 741, 40730 40730 IF (IVCOMP + 9999) 20730, 10730, 20730 10730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 741 20730 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 74 THROUGH 79 CHECK THAT AT LEAST 16 BITS ARE USED IN THE C INTERNAL REPRESENTATION OF AN INTEGER DATUM. THIS INCLUDES ONE C BIT FOR THE SIGN. THE LARGEST INTEGER USED IS 32767 =2**15 - 1, C AND THE SMALLEST INTEGER USED IS -32766. C 741 CONTINUE IVTNUM = 74 C C **** TEST 74 **** C UNSIGNED CONSTANT 32767 C IF (ICZERO) 30740, 740, 30740 740 CONTINUE IVCOMP = 32767 GO TO 40740 30740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40740, 751, 40740 40740 IF (IVCOMP - 32767) 20740, 10740, 20740 10740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 751 20740 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 751 CONTINUE IVTNUM = 75 C C **** TEST 75 **** C SIGNED POSITIVE CONSTANT +32767 C IF (ICZERO) 30750, 750, 30750 750 CONTINUE IVCOMP = +32767 GO TO 40750 30750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40750, 761, 40750 40750 IF (IVCOMP - 32767) 20750, 10750, 20750 10750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 761 20750 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 761 CONTINUE IVTNUM = 76 C C **** TEST 76 **** C SIGNED NEGATIVE CONSTANT -32766 C IF (ICZERO) 30760, 760, 30760 760 CONTINUE IVCOMP = - 32766 GO TO 40760 30760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40760, 771, 40760 40760 IF (IVCOMP + 32766) 20760, 10760, 20760 10760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 771 20760 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 771 CONTINUE IVTNUM = 77 C C **** TEST 77 **** C IF (ICZERO) 30770, 770, 30770 770 CONTINUE IVON01 = 32767 IVCOMP = IVON01 GO TO 40770 30770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40770, 781, 40770 40770 IF (IVCOMP - 32767) 20770, 10770, 20770 10770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 781 20770 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 781 CONTINUE IVTNUM = 78 C C **** TEST 78 **** C IF (ICZERO) 30780, 780, 30780 780 CONTINUE IVON01 = +32767 IVCOMP = IVON01 GO TO 40780 30780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40780, 791, 40780 40780 IF (IVCOMP - 32767) 20780, 10780, 20780 10780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 791 20780 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 791 CONTINUE IVTNUM = 79 C C **** TEST 79 **** C IF (ICZERO) 30790, 790, 30790 790 CONTINUE IVON01 = -32766 IVCOMP=IVON01 GO TO 40790 30790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40790, 801, 40790 40790 IF (IVCOMP + 32766) 20790, 10790, 20790 10790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 801 20790 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 801 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 FM006) END *END-OF,FM006 FM007.f 480975953 170 2 100666 14699 ` *HEADER,FORTR,FM007 *FILES1,FORTR,FM007,X C COMMENT SECTION C C FM007 C C THIS ROUTINE TESTS THE USE OF DATA INITIALIZATION STATEMENTS. C DATA INITIALIZATION STATEMENTS ARE USED TO DEFINE INITIAL VALUES C OF INTEGER VARIABLES. THE DATA STATEMENTS CONTAIN UNSIGNED, C POSITIVE SIGNED AND NEGATIVE SIGNED INTEGER CONSTANTS. THE LAST C DATA STATEMENT CONTAINS THE FORM C J*INTEGER CONSTANT C WHICH INDICATES THE CONSTANT IS TO BE SPECIFIED J TIMES. C C THE TESTS IN THIS ROUTINE CHECK THE INTEGER VARIABLES IN THE C DATA STATEMENT FOR THE ASSIGNED INITIAL VALUES. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 9, DATA STATEMENT C C C DATA INITIALIZATION STATEMENTS C DATA IVON01,IVON02,IVON03,IVON04,IVON05/3,76,587,9999,21111/ DATA IVON06,IVON07,IVON08,IVON09,IVON10/+3,+76,+587,+9999,+21111/ DATA IVON11,IVON12,IVON13,IVON14,IVON15/-3,-76,-587,-9999,-21111/ DATA IVON16,IVON17,IVON18,IVON19,IVON20/ 2*119, 2*7, -427/ 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) C TEST SECTION C C TESTS 80 THROUGH 84 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON01,..., IVON05. C 801 CONTINUE IVTNUM = 80 C C **** TEST 80 **** C IF (ICZERO) 30800, 800, 30800 800 CONTINUE IVCOMP = IVON01 GO TO 40800 30800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40800, 811, 40800 40800 IF (IVCOMP - 3) 20800, 10800,20800 10800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 811 20800 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 811 CONTINUE IVTNUM = 81 C C **** TEST 81 **** C IF (ICZERO) 30810, 810, 30810 810 CONTINUE IVCOMP = IVON02 GO TO 40810 30810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40810, 821, 40810 40810 IF (IVCOMP - 76) 20810, 10810, 20810 10810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 821 20810 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 821 CONTINUE IVTNUM = 82 C C **** TEST 82 **** C IF (ICZERO) 30820, 820, 30820 820 CONTINUE IVCOMP = IVON03 GO TO 40820 30820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40820, 831, 40820 40820 IF (IVCOMP - 587) 20820, 10820, 20820 10820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 831 20820 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 831 CONTINUE IVTNUM = 83 C C **** TEST 83 **** C IF (ICZERO) 30830, 830, 30830 830 CONTINUE IVCOMP =IVON04 GO TO 40830 30830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40830, 841, 40830 40830 IF (IVCOMP - 9999) 20830, 10830, 20830 10830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 841 20830 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 841 CONTINUE IVTNUM = 84 C C **** TEST 84 **** C IF (ICZERO) 30840, 840, 30840 840 CONTINUE IVCOMP = IVON05 GO TO 40840 30840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40840, 851, 40840 40840 IF (IVCOMP - 21111) 20840, 10840, 20840 10840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 851 20840 IVFAIL = IVFAIL + 1 IVCORR = 21111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 85 THROUGH 89 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON06,...,IVON10. C 851 CONTINUE IVTNUM = 85 C C **** TEST 85 **** C IF (ICZERO) 30850, 850, 30850 850 CONTINUE IVCOMP=IVON06 GO TO 40850 30850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40850, 861, 40850 40850 IF (IVCOMP - 3) 20850, 10850, 20850 10850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 861 20850 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 861 CONTINUE IVTNUM = 86 C C **** TEST 86 **** C IF (ICZERO) 30860, 860, 30860 860 CONTINUE IVCOMP = IVON07 GO TO 40860 30860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40860, 871, 40860 40860 IF (IVCOMP - 76) 20860, 10860, 20860 10860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 871 20860 IVFAIL = IVFAIL + 1 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 871 CONTINUE IVTNUM = 87 C C **** TEST 87 **** C IF (ICZERO) 30870, 870, 30870 870 CONTINUE IVCOMP = IVON08 GO TO 40870 30870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40870, 881, 40870 40870 IF (IVCOMP - 587) 20870, 10870, 20870 10870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 881 20870 IVFAIL = IVFAIL + 1 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 881 CONTINUE IVTNUM = 88 C C **** TEST 88 **** C IF (ICZERO) 30880, 880, 30880 880 CONTINUE IVCOMP = IVON09 GO TO 40880 30880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40880, 891, 40880 40880 IF (IVCOMP - 9999) 20880, 10880, 20880 10880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 891 20880 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 891 CONTINUE IVTNUM = 89 C C **** TEST 89 **** C IF (ICZERO) 30890, 890, 30890 890 CONTINUE IVCOMP = IVON10 GO TO 40890 30890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40890, 901, 40890 40890 IF (IVCOMP - 21111) 20890, 10890, 20890 10890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 901 20890 IVFAIL = IVFAIL + 1 IVCORR= 21111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 90 THROUGH 94 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON11,...,IVON15. C 901 CONTINUE IVTNUM = 90 C C **** TEST 90 **** C IF (ICZERO) 30900, 900, 30900 900 CONTINUE IVCOMP = IVON11 GO TO 40900 30900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40900, 911, 40900 40900 IF (IVCOMP + 3) 20900, 10900, 20900 10900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 911 20900 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 911 CONTINUE IVTNUM = 91 C C **** TEST 91 **** C IF (ICZERO) 30910, 910, 30910 910 CONTINUE IVCOMP = IVON12 GO TO 40910 30910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40910, 921, 40910 40910 IF (IVCOMP + 76) 20910, 10910, 20910 10910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 921 20910 IVFAIL = IVFAIL + 1 IVCORR = -76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 921 CONTINUE IVTNUM = 92 C C **** TEST 92 **** C IF (ICZERO) 30920, 920, 30920 920 CONTINUE IVCOMP= IVON13 GO TO 40920 30920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40920, 931, 40920 40920 IF (IVCOMP + 587) 20920, 10920, 20920 10920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 931 20920 IVFAIL = IVFAIL + 1 IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 931 CONTINUE IVTNUM = 93 C C **** TEST 93 **** C IF (ICZERO) 30930, 930, 30930 930 CONTINUE IVCOMP = IVON14 GO TO 40930 30930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40930, 941, 40930 40930 IF (IVCOMP + 9999) 20930, 10930, 20930 10930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 941 20930 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 941 CONTINUE IVTNUM = 94 C C **** TEST 94 **** C IF (ICZERO) 30940, 940, 30940 940 CONTINUE IVCOMP = IVON15 GO TO 40940 30940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40940, 951, 40940 40940 IF (IVCOMP + 21111) 20940, 10940, 20940 10940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 951 20940 IVFAIL = IVFAIL + 1 IVCORR = -21111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 95 THROUGH 99 CHECK THE VALUES INITIALIZED BY THE DATA C STATEMENT CONTAINING IVON16,...,IVON20. C 951 CONTINUE IVTNUM = 95 C C **** TEST 95 **** C IF (ICZERO) 30950, 950, 30950 950 CONTINUE IVCOMP =IVON16 GO TO 40950 30950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40950, 961, 40950 40950 IF (IVCOMP - 119) 20950, 10950, 20950 10950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 961 20950 IVFAIL = IVFAIL + 1 IVCORR = 119 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 961 CONTINUE IVTNUM = 96 C C **** TEST 96 **** C IF (ICZERO) 30960, 960, 30960 960 CONTINUE IVCOMP=IVON17 GO TO 40960 30960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40960, 971, 40960 40960 IF (IVCOMP - 119) 20960, 10960, 20960 10960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 971 20960 IVFAIL = IVFAIL + 1 IVCORR = 119 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 971 CONTINUE IVTNUM = 97 C C **** TEST 97 **** C IF (ICZERO) 30970, 970, 30970 970 CONTINUE IVCOMP = IVON18 GO TO 40970 30970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40970, 981, 40970 40970 IF (IVCOMP - 7) 20970, 10970, 20970 10970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 981 20970 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 981 CONTINUE IVTNUM = 98 C C **** TEST 98 **** C IF (ICZERO) 30980, 980, 30980 980 CONTINUE IVCOMP = IVON19 GO TO 40980 30980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40980, 991, 40980 40980 IF (IVCOMP - 7) 20980, 10980, 20980 10980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 991 20980 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 991 CONTINUE IVTNUM = 99 C C **** TEST 99 **** C IF (ICZERO) 30990, 990, 30990 990 CONTINUE IVCOMP = IVON20 GO TO 40990 30990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40990, 1001, 40990 40990 IF (IVCOMP + 427) 20990,10990,20990 10990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1001 20990 IVFAIL = IVFAIL + 1 IVCORR = -427 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1001 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 FM007) END *END-OF,FM007 FM008.f 480975955 170 2 100666 22726 ` *HEADER,FORTR,FM008 *FILES1,FORTR,FM008,X C COMMENT SECTION. C C FM008 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR + INTEGER CONSTANTS AND POSITIVE INTEGER VARIABLES. C SOME OF THE TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE C ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) TWO INTEGER CONSTANTS, C (2) THREE INTEGER CONSTANTS, C (3) THREE INTEGER CONSTANTS WITH PARENTHESES TO GROUP C ELEMENTS, C (4) ONE INTEGER VARIABLE AND ONE INTEGER CONSTANT, C (5) ONE INTEGER VARIABLE AND TWO INTEGER CONSTANTS, C (6) ONE INTEGER VARIABLE AND TWO INTEGER CONSTANTS WITH C PARENTHESES TO GROUP ELEMENTS. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENTS 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) C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 200 THROUGH TEST 214 CONTAIN INTEGER CONSTANTS AND OPERATOR + C IN ARITHMETIC EXPRESSION. C C TEST 200 THROUGH TEST 206 - TWO INTEGER CONSTANTS C 2001 CONTINUE IVTNUM = 200 C C **** TEST 200 **** C IF (ICZERO) 32000, 2000, 32000 2000 CONTINUE IVCOMP = 2+3 GO TO 42000 32000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42000, 2011, 42000 42000 IF (IVCOMP - 5) 22000,12000,22000 12000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2011 22000 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2011 CONTINUE IVTNUM = 201 C C **** TEST 201 **** C IF (ICZERO) 32010, 2010, 32010 2010 CONTINUE IVCOMP = 51 + 52 GO TO 42010 32010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42010, 2021, 42010 42010 IF (IVCOMP - 103) 22010,12010,22010 12010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2021 22010 IVFAIL = IVFAIL + 1 IVCORR = 103 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2021 CONTINUE IVTNUM = 202 C C **** TEST 202 **** C IF (ICZERO) 32020, 2020, 32020 2020 CONTINUE IVCOMP = 189 + 676 GO TO 42020 32020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42020, 2031, 42020 42020 IF (IVCOMP - 865) 22020,12020,22020 12020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2031 22020 IVFAIL = IVFAIL + 1 IVCORR = 865 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2031 CONTINUE IVTNUM = 203 C C **** TEST 203 **** C IF (ICZERO) 32030, 2030, 32030 2030 CONTINUE IVCOMP = 1358 + 8001 GO TO 42030 32030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42030, 2041, 42030 42030 IF (IVCOMP - 9359) 22030, 12030, 22030 12030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2041 22030 IVFAIL = IVFAIL + 1 IVCORR = 9359 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2041 CONTINUE IVTNUM = 204 C C **** TEST 204 **** C IF (ICZERO) 32040, 2040, 32040 2040 CONTINUE IVCOMP = 11112 + 10001 GO TO 42040 32040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42040, 2051, 42040 42040 IF (IVCOMP - 21113) 22040, 12040, 22040 12040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2051 22040 IVFAIL = IVFAIL + 1 IVCORR=21113 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2051 CONTINUE IVTNUM = 205 C C **** TEST 205 **** C IF (ICZERO) 32050, 2050, 32050 2050 CONTINUE IVCOMP = 189 + 9876 GO TO 42050 32050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42050, 2061, 42050 42050 IF (IVCOMP - 10065) 22050,12050,22050 12050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2061 22050 IVFAIL = IVFAIL + 1 IVCORR = 10065 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2061 CONTINUE IVTNUM = 206 C C **** TEST 206 **** C REQUIRES 32767 C IF (ICZERO) 32060, 2060, 32060 2060 CONTINUE IVCOMP = 32752 + 15 GO TO 42060 32060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42060, 2071, 42060 42060 IF (IVCOMP - 32767) 22060,12060,22060 12060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2071 22060 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 207 THROUGH TEST 210 - THREE INTEGER CONSTANTS C 2071 CONTINUE IVTNUM = 207 C C **** TEST 207 **** C IF (ICZERO) 32070, 2070, 32070 2070 CONTINUE IVCOMP = 2+3+4 GO TO 42070 32070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42070, 2081, 42070 42070 IF (IVCOMP - 9) 22070,12070,22070 12070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2081 22070 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2081 CONTINUE IVTNUM = 208 C C **** TEST 208 **** C IF (ICZERO) 32080, 2080, 32080 2080 CONTINUE IVCOMP = 51 + 52 + 53 GO TO 42080 32080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42080, 2091, 42080 42080 IF (IVCOMP - 156) 22080,12080,22080 12080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2091 22080 IVFAIL = IVFAIL + 1 IVCORR = 156 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2091 CONTINUE IVTNUM = 209 C C **** TEST 209 **** C IF (ICZERO) 32090, 2090, 32090 2090 CONTINUE IVCOMP = 189 +676+101 GO TO 42090 32090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42090, 2101, 42090 42090 IF (IVCOMP - 966) 22090,12090,22090 12090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2101 22090 IVFAIL = IVFAIL + 1 IVCORR = 966 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2101 CONTINUE IVTNUM = 210 C C **** TEST 210 **** C IF (ICZERO) 32100, 2100, 32100 2100 CONTINUE IVCOMP = 1358 + 8001 + 2189 GO TO 42100 32100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42100, 2111, 42100 42100 IF (IVCOMP - 11548) 22100,12100,22100 12100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2111 22100 IVFAIL = IVFAIL + 1 IVCORR = 11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TESTS 211 THROUGH 214 ARE THE SAME AS 207 THROUGH 210 EXCEPT C PARENTHESES ARE USED TO GROUP THE CONSTANTS. C 2111 CONTINUE IVTNUM = 211 C C **** TEST 211 **** C IF (ICZERO) 32110, 2110, 32110 2110 CONTINUE IVCOMP = (2+3)+4 GO TO 42110 32110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42110, 2121, 42110 42110 IF (IVCOMP -9) 22110,12110,22110 12110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2121 22110 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2121 CONTINUE IVTNUM = 212 C C **** TEST 212 **** C IF (ICZERO) 32120, 2120, 32120 2120 CONTINUE IVCOMP = 51+(52+53) GO TO 42120 32120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42120, 2131, 42120 42120 IF (IVCOMP - 156) 22120,12120,22120 12120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2131 22120 IVFAIL = IVFAIL + 1 IVCORR = 156 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2131 CONTINUE IVTNUM = 213 C C **** TEST 213 **** C IF (ICZERO) 32130, 2130, 32130 2130 CONTINUE IVCOMP = 189 +(676+101) GO TO 42130 32130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42130, 2141, 42130 42130 IF (IVCOMP - 966) 22130,12130,22130 12130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2141 22130 IVFAIL = IVFAIL + 1 IVCORR = 966 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2141 CONTINUE IVTNUM = 214 C C **** TEST 214 **** C IF (ICZERO) 32140, 2140, 32140 2140 CONTINUE IVCOMP = (1358+2189) + 8001 GO TO 42140 32140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42140, 2151, 42140 42140 IF (IVCOMP - 11548) 22140,12140,22140 12140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2151 22140 IVFAIL = IVFAIL + 1 IVCORR = 11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 215 THROUGH TEST 234 CONTAIN INTEGER VARIABLES, INTEGER C CONSTANTS AND THE OPERATOR + IN ARITHMETIC EXPRESSION. C C TEST 215 THROUGH TEST 219 - ONE INTEGER VARIABLE AND ONE INTEGER C CONSTANT IN ARITHMETIC EXPRESSION. C 2151 CONTINUE IVTNUM = 215 C C **** TEST 215 **** C IF (ICZERO) 32150, 2150, 32150 2150 CONTINUE IVON01 = 2 IVCOMP = IVON01 + 3 GO TO 42150 32150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42150, 2161, 42150 42150 IF (IVCOMP - 5) 22150,12150,22150 12150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2161 22150 IVFAIL = IVFAIL + 1 IVCORR=5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2161 CONTINUE IVTNUM = 216 C C **** TEST 216 **** C IF (ICZERO) 32160, 2160, 32160 2160 CONTINUE IVON01 = 3 IVCOMP = 2 + IVON01 GO TO 42160 32160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42160, 2171, 42160 42160 IF (IVCOMP - 5) 22160,12160,22160 12160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2171 22160 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2171 CONTINUE IVTNUM = 217 C C **** TEST 217 **** C IF (ICZERO) 32170, 2170, 32170 2170 CONTINUE IVON01 = 51 IVCOMP = IVON01 +52 GO TO 42170 32170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42170, 2181, 42170 42170 IF (IVCOMP - 103) 22170,12170,22170 12170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2181 22170 IVFAIL = IVFAIL + 1 IVCORR = 103 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2181 CONTINUE IVTNUM = 218 C C **** TEST 218 **** C IF (ICZERO) 32180, 2180, 32180 2180 CONTINUE IVON01 = 676 IVCOMP = 189 + IVON01 GO TO 42180 32180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42180, 2191, 42180 42180 IF (IVCOMP - 865) 22180,12180,22180 12180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2191 22180 IVFAIL = IVFAIL + 1 IVCORR = 865 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2191 CONTINUE IVTNUM = 219 C C **** TEST 219 **** C IF (ICZERO) 32190, 2190, 32190 2190 CONTINUE IVON01 = 1358 IVCOMP = IVON01 + 8001 GO TO 42190 32190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42190, 2201, 42190 42190 IF (IVCOMP - 9359) 22190,12190,22190 12190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2201 22190 IVFAIL = IVFAIL + 1 IVCORR = 9359 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 220 THROUGH TEST 224 - ONE INTEGER VARIABLE, TWO INTEGER C CONSTANTS IN ARITHMETIC EXPRESSION. C 2201 CONTINUE IVTNUM = 220 C C **** TEST 220 **** C IF (ICZERO) 32200, 2200, 32200 2200 CONTINUE IVON01 = 2 IVCOMP = IVON01 +3 +4 GO TO 42200 32200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42200, 2211, 42200 42200 IF (IVCOMP - 9) 22200,12200,22200 12200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2211 22200 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2211 CONTINUE IVTNUM = 221 C C **** TEST 221 **** C IF (ICZERO) 32210, 2210, 32210 2210 CONTINUE IVON01 = 3 IVCOMP = 2+IVON01+4 GO TO 42210 32210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42210, 2221, 42210 42210 IF (IVCOMP - 9) 22210,12210,22210 12210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2221 22210 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2221 CONTINUE IVTNUM = 222 C C **** TEST 222 **** C IF (ICZERO) 32220, 2220, 32220 2220 CONTINUE IVON01 = 4 IVCOMP= 2+3+IVON01 GO TO 42220 32220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42220, 2231, 42220 42220 IF (IVCOMP - 9) 22220,12220,22220 12220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2231 22220 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2231 CONTINUE IVTNUM = 223 C C **** TEST 223 **** C IF (ICZERO) 32230, 2230, 32230 2230 CONTINUE IVON01 = 2189 IVCOMP = 1358+IVON01+8001 GO TO 42230 32230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42230, 2241, 42230 42230 IF (IVCOMP - 11548) 22230,12230,22230 12230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2241 22230 IVFAIL = IVFAIL + 1 IVCORR=11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2241 CONTINUE IVTNUM = 224 C C **** TEST 224 **** C IF (ICZERO) 32240, 2240, 32240 2240 CONTINUE IVON01 = 11111 IVCOMP = 11111 + IVON01 + 10111 GO TO 42240 32240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42240, 2251, 42240 42240 IF (IVCOMP - 32333) 22240,12240,22240 12240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2251 22240 IVFAIL = IVFAIL + 1 IVCORR = 32333 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 225 THROUGH TEST 234 USE PARENTHESES TO GROUP ELEMENTS IN C AN ARITHMETIC EXPRESSION. THE RESULTS ARE THE SAME AS TESTS C 220 THROUGH 224. C 2251 CONTINUE IVTNUM = 225 C C **** TEST 225 **** C IF (ICZERO) 32250, 2250, 32250 2250 CONTINUE IVON01 = 2 IVCOMP = (IVON01 +3) + 4 GO TO 42250 32250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42250, 2261, 42250 42250 IF (IVCOMP -9) 22250,12250,22250 12250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2261 22250 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2261 CONTINUE IVTNUM = 226 C C **** TEST 226 **** C IF (ICZERO) 32260, 2260, 32260 2260 CONTINUE IVON01 = 2 IVCOMP = IVON01 + (3+4) GO TO 42260 32260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42260, 2271, 42260 42260 IF (IVCOMP - 9) 22260,12260,22260 12260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2271 22260 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2271 CONTINUE IVTNUM = 227 C C **** TEST 227 **** C IF (ICZERO) 32270, 2270, 32270 2270 CONTINUE IVON01 = 3 IVCOMP = (2+IVON01) + 4 GO TO 42270 32270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42270, 2281, 42270 42270 IF (IVCOMP - 9) 22270,12270,22270 12270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2281 22270 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2281 CONTINUE IVTNUM = 228 C C **** TEST 228 **** C IF (ICZERO) 32280, 2280, 32280 2280 CONTINUE IVON01 = 3 IVCOMP = 2 +(IVON01+4) GO TO 42280 32280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42280, 2291, 42280 42280 IF (IVCOMP - 9) 22280, 12280, 22280 12280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2291 22280 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2291 CONTINUE IVTNUM = 229 C C **** TEST 229 **** C IF (ICZERO) 32290, 2290, 32290 2290 CONTINUE IVON01 = 4 IVCOMP = (2+3)+IVON01 GO TO 42290 32290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42290, 2301, 42290 42290 IF (IVCOMP - 9) 22290,12290,22290 12290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2301 22290 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2301 CONTINUE IVTNUM = 230 C C **** TEST 230 **** C IF (ICZERO) 32300, 2300, 32300 2300 CONTINUE IVON01 = 2189 IVCOMP = 1358 + (IVON01+8001) GO TO 42300 32300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42300, 2311, 42300 42300 IF (IVCOMP - 11548) 22300,12300,22300 12300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2311 22300 IVFAIL = IVFAIL + 1 IVCORR = 11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2311 CONTINUE IVTNUM = 231 C C **** TEST 231 **** C IF (ICZERO) 32310, 2310, 32310 2310 CONTINUE IVON01 = 2189 IVCOMP = (1358+IVON01) + 8001 GO TO 42310 32310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42310, 2321, 42310 42310 IF (IVCOMP - 11548) 22310,12310,22310 12310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2321 22310 IVFAIL = IVFAIL + 1 IVCORR = 11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2321 CONTINUE IVTNUM = 232 C C **** TEST 232 **** C IF (ICZERO) 32320, 2320, 32320 2320 CONTINUE IVON01 = 11111 IVCOMP = (11111 + IVON01) + 10111 GO TO 42320 32320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42320, 2331, 42320 42320 IF (IVCOMP - 32333) 22320,12320,22320 12320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2331 22320 IVFAIL = IVFAIL + 1 IVCORR = 32333 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2331 CONTINUE IVTNUM = 233 C C **** TEST 233 **** C IF (ICZERO) 32330, 2330, 32330 2330 CONTINUE IVON01 = 11111 IVCOMP = (IVON01 + 10111) + 11111 GO TO 42330 32330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42330, 2341, 42330 42330 IF (IVCOMP - 32333) 22330,12330,22330 12330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2341 22330 IVFAIL = IVFAIL + 1 IVCORR = 32333 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2341 CONTINUE IVTNUM = 234 C C **** TEST 234 **** C IF (ICZERO) 32340, 2340, 32340 2340 CONTINUE IVON01 = 10111 IVCOMP = 11111 + (11111+IVON01) GO TO 42340 32340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42340, 2351, 42340 42340 IF (IVCOMP - 32333) 22340,12340,22340 12340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2351 22340 IVFAIL = IVFAIL + 1 IVCORR = 32333 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2351 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 FM008) END *END-OF,FM008 FM009.f 480975960 170 2 100666 20791 ` *HEADER,FORTR,FM009 *FILES1,FORTR,FM009,X C COMMENT SECTION. C C FM009 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR +, INTEGER CONSTANTS AND POSITIVE INTEGER VARIABLES. C SOME OF THE TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE C ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) TWO INTEGER VARIABLES, C (2) TWO INTEGER VARIABLES AND ONE INTEGER CONSTANT, C (3) TWO INTEGER VARIABLES AND ONE INTEGER CONSTANT WITH C PARENTHESES TO GROUP ELEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENTS 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 235 THROUGH TEST 243 CONTAIN TWO POSITIVE INTEGER VARIABLES C AND OPERATOR + IN ARITHMETIC EXPRESSION. C 2351 CONTINUE IVTNUM = 235 C C **** TEST 235 **** C IF (ICZERO) 32350, 2350, 32350 2350 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 + IVON02 GO TO 42350 32350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42350, 2361, 42350 42350 IF (IVCOMP - 5) 22350,12350,22350 12350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2361 22350 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2361 CONTINUE IVTNUM = 236 C C **** TEST 236 **** C IF (ICZERO) 32360, 2360, 32360 2360 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON02 + IVON01 GO TO 42360 32360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42360, 2371, 42360 42360 IF (IVCOMP - 5) 22360, 12360, 22360 12360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2371 22360 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2371 CONTINUE IVTNUM = 237 C C **** TEST 237 **** C IF (ICZERO) 32370, 2370, 32370 2370 CONTINUE IVON01 = 51 IVON02 = 52 IVCOMP = IVON01 + IVON02 GO TO 42370 32370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42370, 2381, 42370 42370 IF (IVCOMP - 103) 22370, 12370, 22370 12370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2381 22370 IVFAIL = IVFAIL + 1 IVCORR = 103 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2381 CONTINUE IVTNUM = 238 C C **** TEST 238 **** C IF (ICZERO) 32380, 2380, 32380 2380 CONTINUE IVON01 = 189 IVON02 = 676 IVCOMP = IVON01 + IVON02 GO TO 42380 32380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42380, 2391, 42380 42380 IF (IVCOMP - 865) 22380, 12380, 22380 12380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2391 22380 IVFAIL = IVFAIL + 1 IVCORR = 865 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2391 CONTINUE IVTNUM = 239 C C **** TEST 239 **** C IF (ICZERO) 32390, 2390, 32390 2390 CONTINUE IVON01 = 1358 IVON02 = 8001 IVCOMP = IVON01 + IVON02 GO TO 42390 32390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42390, 2401, 42390 42390 IF (IVCOMP - 9359) 22390, 12390, 22390 12390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2401 22390 IVFAIL = IVFAIL + 1 IVCORR = 9359 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2401 CONTINUE IVTNUM = 240 C C **** TEST 240 **** C IF (ICZERO) 32400, 2400, 32400 2400 CONTINUE IVON01 = 1358 IVON02 = 8001 IVCOMP = IVON02 + IVON01 GO TO 42400 32400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42400, 2411, 42400 42400 IF (IVCOMP - 9359) 22400, 12400, 22400 12400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2411 22400 IVFAIL = IVFAIL + 1 IVCORR = 9359 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2411 CONTINUE IVTNUM = 241 C C **** TEST 241 **** C IF (ICZERO) 32410, 2410, 32410 2410 CONTINUE IVON01 = 11112 IVON02 = 10001 IVCOMP = IVON01 + IVON02 GO TO 42410 32410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42410, 2421, 42410 42410 IF (IVCOMP - 21113) 22410, 12410, 22410 12410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2421 22410 IVFAIL = IVFAIL + 1 IVCORR = 21113 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2421 CONTINUE IVTNUM = 242 C C **** TEST 242 **** C IF (ICZERO) 32420, 2420, 32420 2420 CONTINUE IVON01 = 189 IVON02 = 9876 IVCOMP = IVON01 + IVON02 GO TO 42420 32420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42420, 2431, 42420 42420 IF (IVCOMP - 10065) 22420, 12420, 22420 12420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2431 22420 IVFAIL = IVFAIL + 1 IVCORR = 10065 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2431 CONTINUE IVTNUM = 243 C C **** TEST 243 **** C REQUIRES 32767 C IF (ICZERO) 32430, 2430, 32430 2430 CONTINUE IVON01 = 16383 IVON02 = 16384 IVCOMP = IVON01 + IVON02 GO TO 42430 32430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42430, 2441, 42430 42430 IF (IVCOMP - 32767) 22430, 12430, 22430 12430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2441 22430 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 244 THROUGH TEST 250 CONTAIN TWO POSITIVE INTEGER VARIABLES, C ONE INTEGER CONSTANT, AND OPERATOR + IN ARITHMETIC EXPRESSION. C 2441 CONTINUE IVTNUM = 244 C C **** TEST 244 **** C IF (ICZERO) 32440, 2440, 32440 2440 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 + IVON02 + 4 GO TO 42440 32440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42440, 2451, 42440 42440 IF (IVCOMP - 9) 22440, 12440, 22440 12440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2451 22440 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2451 CONTINUE IVTNUM = 245 C C **** TEST 245 **** C IF (ICZERO) 32450, 2450, 32450 2450 CONTINUE IVON01 = 2 IVON03 = 4 IVCOMP = IVON01 +3 + IVON03 GO TO 42450 32450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42450, 2461, 42450 42450 IF (IVCOMP - 9) 22450, 12450, 22450 12450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2461 22450 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2461 CONTINUE IVTNUM = 246 C C **** TEST 246 **** C IF (ICZERO) 32460, 2460, 32460 2460 CONTINUE IVON02 = 3 IVON03 = 4 IVCOMP = 2 + IVON02 + IVON03 GO TO 42460 32460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42460, 2471, 42460 42460 IF (IVCOMP - 9) 22460, 12460, 22460 12460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2471 22460 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2471 CONTINUE IVTNUM = 247 C C **** TEST 247 **** C IF (ICZERO) 32470, 2470, 32470 2470 CONTINUE IVON01 = 51 IVON03 = 53 IVCOMP = IVON01 +52 + IVON03 GO TO 42470 32470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42470, 2481, 42470 42470 IF (IVCOMP - 156) 22470, 12470, 22470 12470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2481 22470 IVFAIL = IVFAIL + 1 IVCORR = 156 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2481 CONTINUE IVTNUM = 248 C C **** TEST 248 **** C IF (ICZERO) 32480, 2480, 32480 2480 CONTINUE IVON02 = 676 IVON03 = 101 IVCOMP = 189 + IVON02 + IVON03 GO TO 42480 32480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42480, 2491, 42480 42480 IF (IVCOMP - 966) 22480, 12480, 22480 12480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2491 22480 IVFAIL = IVFAIL + 1 IVCORR = 966 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2491 CONTINUE IVTNUM = 249 C C **** TEST 249 **** C IF (ICZERO) 32490, 2490, 32490 2490 CONTINUE IVON01 = 1358 IVON02 = 8001 IVCOMP = IVON01 + IVON02 + 2189 GO TO 42490 32490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42490, 2501, 42490 42490 IF (IVCOMP - 11548) 22490, 12490, 22490 12490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2501 22490 IVFAIL = IVFAIL + 1 IVCORR = 11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2501 CONTINUE IVTNUM = 250 C C **** TEST 250 **** C REQUIRES 32767 C IF (ICZERO) 32500, 2500, 32500 2500 CONTINUE IVON01 = 16383 IVON03 = 4 IVCOMP = IVON01 + 16380 + IVON03 GO TO 42500 32500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42500, 2511, 42500 42500 IF (IVCOMP - 32767) 22500,12500,22500 12500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2511 22500 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 251 THROUGH TEST 264 CONTAIN TWO POSITIVE INTEGER VARIABLES, C ONE INTEGER CONSTANT, AND OPERATOR + IN ARITHMETIC EXPRESSION. C PARENTHESES ARE USED TO GROUP ELEMENTS. THE RESULTS ARE THE SAME C AS TESTS 244 THROUGH 250. C 2511 CONTINUE IVTNUM = 251 C C **** TEST 251 **** C IF (ICZERO) 32510, 2510, 32510 2510 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = (IVON01 + IVON02) + 4 GO TO 42510 32510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42510, 2521, 42510 42510 IF (IVCOMP - 9) 22510,12510,22510 12510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2521 22510 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2521 CONTINUE IVTNUM = 252 C C **** TEST 252 **** C IF (ICZERO) 32520, 2520, 32520 2520 CONTINUE IVON02 = 3 IVON03 = 4 IVCOMP = 2 + (IVON02 + IVON03) GO TO 42520 32520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42520, 2531, 42520 42520 IF (IVCOMP - 9) 22520,12520,22520 12520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2531 22520 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2531 CONTINUE IVTNUM = 253 C C **** TEST 253 **** C IF (ICZERO) 32530, 2530, 32530 2530 CONTINUE IVON02 =3 IVON03 =4 IVCOMP = (2+IVON02)+IVON03 GO TO 42530 32530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42530, 2541, 42530 42530 IF (IVCOMP -9) 22530,12530,22530 12530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2541 22530 IVFAIL = IVFAIL + 1 IVCORR =9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2541 CONTINUE IVTNUM = 254 C C **** TEST 254 **** C IF (ICZERO) 32540, 2540, 32540 2540 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 + (IVON02 + 4) GO TO 42540 32540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42540, 2551, 42540 42540 IF (IVCOMP-9)22540,12540,22540 12540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2551 22540 IVFAIL = IVFAIL + 1 IVCORR=9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2551 CONTINUE IVTNUM = 255 C C **** TEST 255 **** C IF (ICZERO) 32550, 2550, 32550 2550 CONTINUE IVON01 = 2 IVON03 = 4 IVCOMP = IVON01 +(3+IVON03) GO TO 42550 32550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42550, 2561, 42550 42550 IF (IVCOMP-9)22550,12550,22550 12550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2561 22550 IVFAIL = IVFAIL + 1 IVCORR =9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2561 CONTINUE IVTNUM = 256 C C **** TEST 256 **** C IF (ICZERO) 32560, 2560, 32560 2560 CONTINUE IVON01 = 2 IVON03 = 4 IVCOMP =(IVON01+3)+IVON03 GO TO 42560 32560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42560, 2571, 42560 42560 IF (IVCOMP-9) 22560,12560,22560 12560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2571 22560 IVFAIL = IVFAIL + 1 IVCORR =9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2571 CONTINUE IVTNUM = 257 C C **** TEST 257 **** C IF (ICZERO) 32570, 2570, 32570 2570 CONTINUE IVON01 = 51 IVON03 = 53 IVCOMP=IVON01+(52+IVON03) GO TO 42570 32570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42570, 2581, 42570 42570 IF (IVCOMP -156) 22570,12570,22570 12570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2581 22570 IVFAIL = IVFAIL + 1 IVCORR = 156 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2581 CONTINUE IVTNUM = 258 C C **** TEST 258 **** C IF (ICZERO) 32580, 2580, 32580 2580 CONTINUE IVON01 = 51 IVON03 = 53 IVCOMP =(IVON01+52)+IVON03 GO TO 42580 32580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42580, 2591, 42580 42580 IF (IVCOMP-156) 22580,12580,22580 12580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2591 22580 IVFAIL = IVFAIL + 1 IVCORR = 156 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2591 CONTINUE IVTNUM = 259 C C **** TEST 259 **** C IF (ICZERO) 32590, 2590, 32590 2590 CONTINUE IVON02 = 676 IVON03 = 101 IVCOMP = 189+(IVON02+IVON03) GO TO 42590 32590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42590, 2601, 42590 42590 IF (IVCOMP -966) 22590,12590,22590 12590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2601 22590 IVFAIL = IVFAIL + 1 IVCORR =966 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2601 CONTINUE IVTNUM = 260 C C **** TEST 260 **** C IF (ICZERO) 32600, 2600, 32600 2600 CONTINUE IVON02 = 676 IVON03 = 101 IVCOMP = (189 + IVON02) + IVON03 GO TO 42600 32600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42600, 2611, 42600 42600 IF (IVCOMP-966) 22600,12600,22600 12600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2611 22600 IVFAIL = IVFAIL + 1 IVCORR=966 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2611 CONTINUE IVTNUM = 261 C C **** TEST 261 **** C IF (ICZERO) 32610, 2610, 32610 2610 CONTINUE IVON01 = 1358 IVON02 = 8001 IVCOMP = IVON01 + (IVON02 + 2189) GO TO 42610 32610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42610, 2621, 42610 42610 IF (IVCOMP-11548) 22610,12610,22610 12610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2621 22610 IVFAIL = IVFAIL + 1 IVCORR=11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2621 CONTINUE IVTNUM = 262 C C **** TEST 262 **** C IF (ICZERO) 32620, 2620, 32620 2620 CONTINUE IVON01 = 1358 IVON02 = 8001 IVCOMP =(IVON01+IVON02)+2189 GO TO 42620 32620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42620, 2631, 42620 42620 IF (IVCOMP-11548) 22620,12620,22620 12620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2631 22620 IVFAIL = IVFAIL + 1 IVCORR=11548 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2631 CONTINUE IVTNUM = 263 C C **** TEST 263 **** C REQUIRES 32767 C IF (ICZERO) 32630, 2630, 32630 2630 CONTINUE IVON01 = 16383 IVON03 = 16380 IVCOMP = IVON01 + (4+IVON03) GO TO 42630 32630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42630, 2641, 42630 42630 IF (IVCOMP-32767) 22630,12630,22630 12630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2641 22630 IVFAIL = IVFAIL + 1 IVCORR =32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2641 CONTINUE IVTNUM = 264 C C **** TEST 264 **** C REQUIRES 32767 C IF (ICZERO) 32640, 2640, 32640 2640 CONTINUE IVON01 = 16383 IVON02 = 16380 IVCOMP = (IVON01+IVON02) +4 GO TO 42640 32640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42640, 2651, 42640 42640 IF (IVCOMP - 32767) 22640,12640,22640 12640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2651 22640 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2651 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 FM009) END *END-OF,FM009 FM010.f 480975961 170 2 100666 9554 ` *HEADER,FORTR,FM010 *FILES1,FORTR,FM010,X C COMMENT SECTION. C C FM010 C C THIS ROUTINE TESTS REFERENCE FORMAT OF FORTRAN STATEMENTS C AND STATEMENT NUMBERS. THE USE OF THE BLANK CHARACTER IS TESTED C BOTH WITHIN THE STATEMENT NUMBER FIELD AND WITHIN THE FORTRAN C STATEMENTS THEMSELVES. LEADING ZERO IS TESTED FOR STATEMENTS AND C INTEGER CONSTANTS. VARIABLE NAMES WHICH LOOK VERY MUCH LIKE C FORTRAN RESERVED WORDS ARE TESTED IN ARITHMETIC ASSIGNMENT C STATEMENTS. NAMING CONVENTIONS USED THROUGHOUT THE FCVS ARE C TESTED ALSO IN ARITHMETIC ASSIGNMENT STATEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 2.5, VARIABLES C SECTION 3.1.6, BLANK CHARACTER C SECTION 3.2.2, INITIAL LINES C SECTION 3.4, STATEMENT LABELS 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) 1001 CONTINUE IVTNUM = 100 C C **** TEST 100 **** C C TEST 100 - TO CHECK THE VARIOUS COMBINATIONS OF FORMING VARIABLE C NAMES. THESE ARE ACTUALLY SYMBOLIC NAMES (ANSI X3.9-1978 C SECTION 2.2). THIS IS BASICALLY A SYNTAX CHECK USING A C COMBINATION OF FROM ONE TO SIX ALPHANUMERIC CHARACTERS WITH C THE FIRST CHARACTER ALWAYS ALPHABETIC. REFERENCE FORMAT IS C ALSO CHECKED BY HAVING EACH ASSIGNMENT STATEMENT AN INITIAL C LINE (SECTION 3.2.2). THIS MEANS ZERO MAY APPEAR IN COLUMN C SIX WITHOUT EFFECT, THAT LINES MAY BEGIN ANYWHERE FROM C COLUMN SEVEN TO COLUMN 72, AND BLANKS MAY BE USED FREELY C WITHOUT MEANING (3.1.6 BLANK CHARACTERS). C IF (ICZERO) 31000, 1000, 31000 1000 CONTINUE A=1. B =2. C =3. D =4. E =5. F =6. 0G = 7. H=8. I=9 J = 10 K = 11 L = 12 0M=13 N=14 O=15. P=16. Q=17. R=18. S=19. T=20. U=21. V=22. W=23. X=24. Y=25. Z=26. AAAAAA=27. BBBBB=28. CCCC=29. DDD=30 EE=31. F0=32. G12=33. H345 = 34. I6789 = 35 J01234 = 36 K 5 6 78 9=37 L 2 L 2 L 2 =38 M 3 M 3 M3 = 39 N 40 = 4 0 0 OMY = 4 1. I PM H = 4 2 GO TO 1 = 4 3. IF 3 = 44 DO 3 = 53. CALL FL =62. TYPE I = 63. TRUE =71. FALSE = 72. GO TO 41000 31000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41000, 1011, 41000 41000 IF (IPMH - 42) 21000,11000,21000 11000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1011 21000 IVFAIL = IVFAIL + 1 IVCOMP = IPMH IVCORR = 42 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1011 CONTINUE IVTNUM = 101 C C **** TEST 101 **** C TEST 101 - CHECKS THE FCVS NAMING CONVENTIONS FOR INTEGER AND C REAL VARIABLES IN ASSIGNMENT STATEMENTS: VARIABLE = CONSTANT C BASICALLY A SYNTAX CHECK ON SIX CHARACTER VARIABLE NAMES. C IF (ICZERO) 31010, 1010, 31010 1010 CONTINUE IACE11 = 1 IACE21 = 2 IACE31 = 3 IACN11 = 4 IADN11 = 5 IATE31 = 6 RACE11 = 7. RACE21 = 8. RACN31 = 9. RADE31 = 10. IVTE69 = 11 IVON78 = 12 RVTNAZ = 13. RVOEZ9 = 14. ICTE96 = 15 ICON84 = 16 RCON48 = 17. RCTE54 = 18. IDONY4 = 19 IDOEB6 = 20 RDON46 = 21. IFONS3 = 22 RFON77 = 23. GO TO 41010 31010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41010, 1021, 41010 41010 IF (IVTE69 - 11) 21010,11010,21010 11010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1021 21010 IVFAIL = IVFAIL + 1 IVCOMP = IVTE69 IVCORR = 11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1021 CONTINUE IVTNUM = 102 C C **** TEST 102 **** C TEST 102 - REFERENCE FORMAT CHECK ON STATEMENT LABELS (SECTION C 3.4). THESE ARE NON-ZERO INTEGERS, FROM 1 TO 5 DIGITS, C MAY BEGIN ANYWHERE FROM COLS. 1 TO 5, AND LEADING ZEROS ARE C NOT SIGNIFICANT. BLANKS WILL BE IMBEDDED IN SOME OF THE C STATEMENT LABELS AND THESE SHOULD HAVE NO EFFECT. THE C CONTINUE STATEMENT (SECTION 11.11) IS USED FOR THIS TEST. C A BASIC FCVS ASSUMPTION IS THAT THE LOGIC WILL FALL THRU A C SERIES OF CONTINUE STATEMENTS (NORMAL EXECUTION SEQUENCE). C IF (ICZERO) 31020, 1020, 31020 1020 CONTINUE 1 CONTINUE 2 CONTINUE 3 CONTINUE 4 CONTINUE 5 CONTINUE 06 CONTINUE 007 CONTINUE 0008 CONTINUE 00009 CONTINUE 010 CONTINUE 1 1 CONTINUE 0 12 CONTINUE 0 1 3 CONTINUE 00 14 CONTINUE 0 15 CONTINUE 0 016 CONTINUE 100 CONTINUE 1 0 1 CONTINUE 10 2 IVON01 = 1 1 03 CONTINUE 1 04 CONTINUE 01 05 CONTINUE 010 6 CONTINUE 0107 CONTINUE 00108 CONTINUE 1 1 1 CONTINUE 1 111 CONTINUE 99 CONTINUE 9 9 9 CONTINUE 99 99 CONTINUE GO TO 41020 31020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41020, 1031, 41020 41020 IF (IVON01 - 1) 21020,11020,21020 11020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1031 21020 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1031 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 FM010) END *END-OF,FM010 FM011.f 480975963 170 2 100666 9200 ` *HEADER,FORTR,FM011 *FILES1,FORTR,FM011,X C COMMENT SECTION. C C FM011 C C THIS ROUTINE IS A TEST OF BLANK CHARACTERS (SECTION 3.1.6) C WHICH SHOULD HAVE NO MEANING WHEN EMBEDDED IN FORTRAN RESERVED C WORDS. C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 3.1.6, BLANK CHARACTER DIM EN SION IADN11(3),IADN12(3) IN TEGER RVTNI1 REA L IVTNR1 LOG ICAL LVTNL1,LVTNL2 COM MON IACE11(3) EQU IVAL ENCE (IACE11(1),IADN11(1)) D A T A IADN12/3*3/ 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) IVTNUM = 103 C C **** TEST 103 **** C TEST 103 - THIS TEST HAS BLANKS EMBEDDED IN A DIMENSION C STATEMENT. ALSO THE DO STATEMENT WITH AN EMBEDDED BLANK C WILL BE TESTED TO INITIALIZE VALUES IN AN ARRAY. THE C CONTINUE AND IF STATEMENTS HAVE EMBEDDED BLANKS AS WELL. C IF (ICZERO) 31030, 1030, 31030 1030 CONTINUE D O 1 IVON01 =1 , 3 , 1 IADN11(IVON01) = IVON01 1 C ON T IN UE GO TO 41030 31030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41030, 1041, 41030 41030 I F (IADN11(2) - 2) 21030,11030,21030 11030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1041 21030 IVFAIL = IVFAIL + 1 IVCOMP = IADN11(2) IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1041 CONTINUE IVTNUM = 104 C C **** TEST 104 **** C TEST 104 - THIS TESTS EMBEDDED BLANKS IN AN INTEGER TYPE C STATEMENT. FRACTION 1/2 SHOULD BECOME 0 AS AN INTEGER. C INTEGER TO REAL * 2. BACK TO INTEGER CONVERSION SHOULD BE 0. C IF (ICZERO) 31040, 1040, 31040 1040 CONTINUE RVTNI1 = 2 RVON01 = 1/RVTNI1 IVON02 = RVON01 * 2. GO TO 41040 31040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41040, 1051, 41040 41040 IF( IVON02 - 0 ) 21040,11040,21040 11040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1051 21040 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1051 CONTINUE IVTNUM = 105 C C **** TEST 105 **** C TEST 105 - TEST OF EMBEDDED BLANKS IN A REAL TYPE STATEMENT. C REAL TO REAL*2. TO INTEGER CONVERSION IS PERFORMED. RESULT C IS 1 IF THE TYPE OF THE TEST VARIABLE(IVTNR1) WAS REAL. C IF (ICZERO) 31050, 1050, 31050 1050 CONTINUE IVTNR1 = .5 RVON03 = IVTNR1*2. IVON03 = RVON03 +.3 GO TO 41050 31050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41050, 1061, 41050 41050 IF(IVON03 - 1) 21050, 11050, 21050 11050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1061 21050 IVFAIL = IVFAIL + 1 IVCOMP = IVON03 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1061 CONTINUE IVTNUM = 106 C C **** TEST 106 **** C TEST 106 - TEST THE LOGICAL TYPE WITH EMBEDDED BLANKS BY A C LOGIC ASSIGNMENT (V = .TRUE.) SECTION 4.7.1 AND 10.2 C IF (ICZERO) 31060, 1060, 31060 1060 CONTINUE LVTNL1 = .TRUE. GO TO 41060 31060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41060, 1071, 41060 41060 IF(ICZERO) 21060,11060,21060 11060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1071 21060 IVFAIL = IVFAIL + 1 WRITE (I02,80002) IVTNUM, IVCOMP ,IVCORR 1071 CONTINUE IVTNUM = 107 C C **** TEST 107 **** C TEST 107 - A SECOND TEST OF THE LOGICAL TYPE STATEMENT WITH C EMBEDDED BLANKS. THE TEST IS AGAIN MADE BY A LOGICAL C ASSIGNMENT (SECTION 4.7.1 AND 10.2). C IF (ICZERO) 31070, 1070, 31070 1070 CONTINUE LVTNL2 = .FALSE. GO TO 41070 31070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41070, 1081, 41070 41070 IF(ICZERO) 21070,11070,21070 11070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1081 21070 IVFAIL = IVFAIL + 1 WRITE (I02,80002) IVTNUM, IVCOMP ,IVCORR 1081 CONTINUE IVTNUM = 108 C C **** TEST 108 **** C TEST 108 - THIS IS A TEST OF BLANKS EMBEDDED IN THE COMMON, C DIMENSION AND EQUIVALENCE STATEMENTS (SECTION 8.1, C 8.3. AND 8.2.). C IF (ICZERO) 31080, 1080, 31080 1080 CONTINUE IADN11(3) = 4 GO TO 41080 31080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41080, 1091, 41080 41080 IF(IACE11(3) - 4) 21080,11080,21080 11080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1091 21080 IVFAIL = IVFAIL + 1 IVCOMP = IACE11(3) IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1091 CONTINUE IVTNUM = 109 C C **** TEST 109 **** C TEST 109 - THIS TESTS THE EFFECT OF BLANKS EMBEDDED IN THE C DATA STATEMENT BY CHECKING THE INITIALIZATION OF ARRAY C ELEMENT VALUES (SECTION 9). C IF (ICZERO) 31090, 1090, 31090 1090 CONTINUE IVON04 = IADN12(1) + IADN12(2) + IADN12(3) GO TO 41090 31090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41090, 1101, 41090 41090 IF(IVON04 - 9) 21090,11090,21090 11090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1101 21090 IVFAIL = IVFAIL + 1 IVCOMP = IVON04 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1101 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 FM011) END *END-OF,FM011 FM012.f 480975966 170 2 100666 17764 ` *HEADER,FORTR,FM012 *FILES1,FORTR,FM012,X C C COMMENT SECTION. C C FM012 C C THIS ROUTINE TESTS THE FORTRAN DO - STATEMENT FROM ITS C SIMPLIST FORMAT TO THE MORE ABBREVIATED FORMS. VARIOUS INCREMENTS C ARE USED AND BRANCHING BY VARIOUS METHODS IS TESTED FOR PASSING C CONTROL OUT OF THE DO RANGE AND RETURNING (EXTENDED RANGE). C NESTED DO STATEMENTS USING VARIOUS TERMINATING STATEMENTS ARE ALSO C TESTED BY THIS ROUTINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 11.10, DO STATEMENT C SECTION 11.10.3, EXECUTES A DO LOOP 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) IVTNUM = 110 C C TEST 110 - DO STATEMENT WITH THE COMPLETE FORMAT, INCREMENT OF 1 C THE LOOP SHOULD BE EXECUTED TEN (10) TIMES THUS THE LOOP C COUNTER SHOULD HAVE A VALUE OF TEN AT THE COMPLETION OF THE C DO-LOOP. C C IF (ICZERO) 31100, 1100, 31100 1100 CONTINUE IVON01=0 DO 1102 I=1,10,1 IVON01=IVON01+1 1102 CONTINUE GO TO 41100 31100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41100, 1111, 41100 41100 IF(IVON01-10) 21100,11100,21100 11100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1111 21100 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1111 CONTINUE IVTNUM = 111 C C TEST 111 - SAME DO TEST AS IN TEST 110 EXCEPT THAT NO INCREMENT C IS GIVEN. THE INCREMENT SHOULD BE 1 AND THE LOOP PERFORMED C TEN (10) TIMES AS BEFORE. C C IF (ICZERO) 31110, 1110, 31110 1110 CONTINUE IVON01=0 DO 1112 J=1,10 IVON01=IVON01+1 1112 CONTINUE GO TO 41110 31110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41110, 1121, 41110 41110 IF(IVON01-10) 21110, 11110, 21110 11110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1121 21110 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1121 CONTINUE IVTNUM = 112 C C TEST 112 - DO STATEMENT WITH AN INCREMENT OTHER THAN ONE (1). C THE DO - LOOP SHOULD BE EXECUTED FIVE (5) TIMES THUS C THE VALUE OF THE LOOP COUNTER SHOULD BE FIVE (5) AT THE C END OF THE DO - LOOP. C C IF (ICZERO) 31120, 1120, 31120 1120 CONTINUE IVON01=0 DO 1122 K = 1, 10, 2 IVON01=IVON01+1 1122 CONTINUE GO TO 41120 31120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41120, 1131, 41120 41120 IF (IVON01 - 5 ) 21120, 11120, 21120 11120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1131 21120 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1131 CONTINUE IVTNUM = 113 C C TEST 113 - DO STATEMENT WITH THE INITIAL VALUE EQUAL TO THE C TERMINAL VALUE. THE DO - LOOP SHOULD BE EXECUTED ONE (1) C TIME THUS THE VALUE OF THE LOOP COUNTER SHOULD BE ONE (1). C C IF (ICZERO) 31130, 1130, 31130 1130 CONTINUE IVON01=0 DO 1132 L = 2, 2 IVON01=IVON01+1 1132 CONTINUE GO TO 41130 31130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41130, 1141, 41130 41130 IF ( IVON01 - 1 ) 21130, 11130, 21130 11130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1141 21130 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1141 CONTINUE IVTNUM = 114 C C TEST 114 - THIS TESTS THE UNCONDITIONAL BRANCH OUT OF THE C RANGE OF THE DO USING THE GO TO STATEMENT. THE DO INDEX C SHOULD RETAIN THE VALUE IT HAD WHEN THE UNCONDITIONAL BRANCH C WAS MADE. SINCE THE DO LOOP ONLY CONTAINS AN UNCONDITIONAL C BRANCH, THE VALUE OF THE DO INDEX SHOULD BE ITS INITIAL C VALUE. IN THIS CASE THE VALUE SHOULD BE ONE (1). C SEE SECTION 11.10. C C IF (ICZERO) 31140, 1140, 31140 1140 CONTINUE DO 1142 M=1,10 GO TO 1143 1142 CONTINUE 1143 CONTINUE GO TO 41140 31140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41140, 1151, 41140 41140 IF ( M - 1 ) 21140, 11140, 21140 11140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1151 21140 IVFAIL = IVFAIL + 1 IVCOMP=M IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1151 CONTINUE IVTNUM = 115 C C TEST 115 - THIS TEST IS SIMILAR TO TEST 114 IN THAT THE DO C RANGE HAS ONLY AN UNCONDITIONAL BRANCH OUTSIDE OF THE RANGE. C THE DO INDEX SHOULD AGAIN RETAIN ITS VALUE, IN THIS CASE C ITS INITIAL VALUE OF ONE (1). C SEE SECTION 11.10. C C IF (ICZERO) 31150, 1150, 31150 1150 CONTINUE DO 1152 N = 1, 10 IF ( N - 1 ) 1152, 1153, 1152 1152 CONTINUE 1153 CONTINUE GO TO 41150 31150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41150, 1161, 41150 41150 IF (N - 1 ) 21150, 11150, 21150 11150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1161 21150 IVFAIL = IVFAIL + 1 IVCOMP=N IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1161 CONTINUE IVTNUM = 116 C C TEST 116 - THIS IS A TEST OF A NEST OF TWO DO RANGES. TWO C SEPARATE CONTINUE STATEMENTS ARE USED AS TERMINAL STATEMENTS C FOR THE TWO RESPECTIVE DO RANGES. THE OUTER LOOP SHOULD BE C PERFORMED TEN (10) TIMES AND THE INNER LOOP SHOULD BE C PERFORMED TWICE FOR EACH EXECUTION OF THE OUTER LOOP. THE C LOOP COUNTER SHOULD HAVE A VALUE OF TWENTY (20) SINCE IT C IS INCREMENTED IN THE INNER DO - LOOP. C SEE SECTION 11.10.3. C C IF (ICZERO) 31160, 1160, 31160 1160 CONTINUE IVON01=0 DO 1163 I=1,10,1 DO 1162 J=1,2,1 IVON01=IVON01+1 1162 CONTINUE 1163 CONTINUE GO TO 41160 31160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41160, 1171, 41160 41160 IF ( IVON01 - 20 ) 21160, 11160, 21160 11160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1171 21160 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=20 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1171 CONTINUE IVTNUM = 117 C C TEST 117 - THIS IS BASICALLY THE SAME AS TEST 116 EXCEPT THAT C ONLY ONE CONTINUE STATEMENT IS USED AS THE TERMINATING C STATEMENT FOR BOTH OF THE DO RANGES. THE VALUE OF THE C LOOP COUNTER SHOULD AGAIN BE TWENTY (20). C C IF (ICZERO) 31170, 1170, 31170 1170 CONTINUE IVON01=0 DO 1172 K=1,10,1 DO 1172 L=1,2,1 IVON01=IVON01+1 1172 CONTINUE GO TO 41170 31170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41170, 1181, 41170 41170 IF (IVON01 - 20 ) 21170, 11170, 21170 11170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1181 21170 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=20 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1181 CONTINUE IVTNUM = 118 C C TEST 118 - THIS IS BASICALLY THE SAME TEST AS 116 EXCEPT C THAT THE LOOP COUNTER INCREMENT IS THE TERMINATING STATEMENT C OF BOTH OF THE DO RANGES. THE VALUE OF THE LOOP COUNTER C SHOULD BE TWENTY (20), BUT THE NUMBER OF EXECUTIONS OF C THE OUTER LOOP IS NOW TWO (2) AND THE INNER LOOP EXECUTES C TEN (10) TIMES FOR EVERY EXECUTION OF THE OUTER LOOP. C C IF (ICZERO) 31180, 1180, 31180 1180 CONTINUE IVON01=0 DO 1182 M=1,2,1 DO 1182 N=1,10,1 1182 IVON01 = IVON01 + 1 GO TO 41180 31180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41180, 1191, 41180 41180 IF (IVON01 - 20 ) 21180, 11180, 21180 11180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1191 21180 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=20 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1191 CONTINUE IVTNUM = 119 C C TEST 119 - THIS IS A TEST OF AN UNCONDITIONAL BRANCH OUT OF A C NESTED DO RANGE QUITE LIKE TEST 114. THE LOOP COUNTER C SHOULD ONLY BE INCREMENTED ON THE OUTER LOOP RANGE SO C THE FINAL VALUE OF THE LOOP COUNTER SHOULD BE TEN (10). C C IF (ICZERO) 31190, 1190, 31190 1190 CONTINUE IVON01=0 DO 1194 I=1,10,1 DO 1193 J=1,2,1 C C THE FOLLOWING STATEMENT IS TO ELIMINATE THE DEAD CODE PRODUCED C BY THE STATEMENT GO TO 1194. C IF ( ICZERO ) 1193, 1192, 1193 C 1192 GO TO 1194 1193 IVON01 = IVON01 + 1 1194 IVON01 = IVON01 + 1 GO TO 41190 31190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41190, 1201, 41190 41190 IF ( IVON01 - 10 ) 21190, 11190, 21190 11190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1201 21190 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1201 CONTINUE IVTNUM = 120 C C TEST 120 - THIS IS BASICALLY THE SAME TEST AS TEST 119 EXCEPT C THAT AN IF STATEMENT IS USED TO BRANCH OUT OF THE INNER LOOP C WITHOUT INCREMENTING THE LOOP COUNTER. THE VALUE OF THE C LOOP COUNTER SHOULD AGAIN BE TEN (10). C C IF (ICZERO) 31200, 1200, 31200 1200 CONTINUE IVON01=0 DO 1203 I=1,10,1 DO 1202 J=1,2,1 IF ( J - 1 ) 1203, 1203, 1202 1202 IVON01 = IVON01 + 1 1203 IVON01 = IVON01 + 1 GO TO 41200 31200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41200, 1211, 41200 41200 IF ( IVON01 - 10 ) 21200, 11200, 21200 11200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1211 21200 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1211 CONTINUE IVTNUM = 121 C C TEST 121 - THIS IS A TEST OF DO NESTS WITHIN DO NESTS. THE C LOOP COUNTER SHOULD HAVE A FINAL VALUE OF EIGHTY-FOUR (84). C C IF (ICZERO) 31210, 1210, 31210 1210 CONTINUE IVON01=0 DO 1216 I1=1,2,1 DO 1213 I2=1,3,1 DO 1212 I3=1,4,1 IVON01=IVON01+1 1212 CONTINUE 1213 CONTINUE DO 1215 I4=1,5,1 DO 1214 I5=1,6,1 IVON01=IVON01+1 1214 CONTINUE 1215 CONTINUE 1216 CONTINUE GO TO 41210 31210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41210, 1221, 41210 41210 IF ( IVON01 - 84 ) 21210, 11210, 21210 11210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1221 21210 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=84 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1221 CONTINUE IVTNUM = 122 C C TEST 122 - THIS IS AGAIN A TEST OF DO NESTS BUT COMBINED WITH C ARITHMETIC IF STATEMENT BRANCHES WITHIN THE DO RANGE. THE C FINAL LOOP COUNTER VALUE SHOULD BE EIGHTEEN (18). C C IF (ICZERO) 31220, 1220, 31220 1220 CONTINUE IVON01=0 DO 1228 I1=1,3,1 DO 1223 I2=1,4,1 IF ( I2 - 3 ) 1222, 1224, 1224 1222 IVON01 = IVON01 + 1 1223 CONTINUE 1224 DO 1226 I3=1,5,1 IF ( I3 - 3 ) 1225, 1225, 1227 1225 IVON01 = IVON01 + 1 1226 CONTINUE 1227 CONTINUE 1228 CONTINUE GO TO 41220 31220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41220, 1231, 41220 41220 IF ( IVON01 - 15 ) 21220, 11220, 21220 11220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1231 21220 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=15 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1231 CONTINUE IVTNUM = 123 C C NOTE **** TEST 123 WAS DELETED BY FCCTS. C IF (ICZERO) 31230, 1230, 31230 1230 CONTINUE 31230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41230, 1241, 41230 41230 IF ( IVON01 - 20 ) 21230, 11230, 21230 11230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1241 21230 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=20 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1241 CONTINUE IVTNUM = 124 C C TEST 124 - THIS IS A TEST OF A TRIPLE NESTED DO RANGE WITH C AN UNCONDITIONAL GO TO STATEMENT BRANCH IN THE INNERMOST C NESTED DO TO THE COMMON TERMINAL STATEMENT. THE FINAL C LOOP COUNTER VALUE SHOULD BE ONE HUNDRED AND FORTY-TWO (142) C THE INITIAL VALUE OF THE INNERMOST DO RANGE IS TWO (2). C C IF (ICZERO) 31240, 1240, 31240 1240 CONTINUE IVON01=0 DO 1242 I2=1,5,1 DO 1242 I3=2,8,1 DO 1242 I1=1,4,1 IVON01=IVON01+1 GO TO 1242 1242 CONTINUE GO TO 41240 31240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41240, 1251, 41240 41240 IF ( IVON01 - 140 ) 21240, 11240, 21240 11240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1251 21240 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=140 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1251 CONTINUE IVTNUM = 125 C C TEST 125 - THIS IS BASICALLY THE SAME AS TEST 124 EXCEPT THAT C AN ARITHMETIC IF BRANCH IS USED INSTEAD OF THE GO TO C STATEMENT FOR THE BRANCH TO THE TERMINAL STATEMENT COMMON C TO ALL THREE OF THE DO RANGES. C THE FINAL VALUE OF THE LOOP COUNTER SHOULD BE ONE C HUNDRED AND FORTY (140). C C IF (ICZERO) 31250, 1250, 31250 1250 CONTINUE IVON01=0 DO 1252 I1=1,4,1 DO 1252 I2=1,5,1 DO 1252 I3=2,8,1 IVON01=IVON01+1 IF ( I3 - 9 ) 1252, 1252, 1253 1252 CONTINUE 1253 CONTINUE GO TO 41250 31250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41250, 1261, 41250 41250 IF ( IVON01 - 140 ) 21250, 11250, 21250 11250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1261 21250 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=140 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1261 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 FM012) END *END-OF,FM012 FM013.f 480975968 170 2 100666 8794 ` *HEADER,FORTR,FM013 *FILES1,FORTR,FM013,X C C COMMENT SECTION. C C FM013 C C THIS ROUTINE TESTS THE FORTRAN ASSIGNED GO TO STATEMENT C AS DESCRIBED IN SECTION 11.3 (ASSIGNED GO TO STATEMENT). FIRST A C STATEMENT LABEL IS ASSIGNED TO AN INTEGER VARIABLE IN THE ASSIGN C STATEMENT. SECONDLY A BRANCH IS MADE IN AN ASSIGNED GO TO C STATEMENT USING THE INTEGER VARIABLE AS THE BRANCH CONTROLLER C IN A LIST OF POSSIBLE STATEMENT NUMBERS TO BE BRANCHED TO. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 10.3, STATEMENT LABEL ASSIGNMENT (ASSIGN) STATEMENT C SECTION 11.3, ASSIGNED GO TO 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) IVTNUM = 126 C C TEST 126 - THIS TESTS THE SIMPLE ASSIGN STATEMENT IN PREPARATION C FOR THE ASSIGNED GO TO TEST TO FOLLOW. C THE ASSIGNED GO TO IS THE SIMPLIST FORM OF THE STATEMENT. C C IF (ICZERO) 31260, 1260, 31260 1260 CONTINUE ASSIGN 1263 TO I GO TO I, (1262,1263,1264) 1262 ICON01 = 1262 GO TO 1265 1263 ICON01 = 1263 GO TO 1265 1264 ICON01 = 1264 1265 CONTINUE GO TO 41260 31260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41260, 1271, 41260 41260 IF ( ICON01 - 1263 ) 21260, 11260, 21260 11260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1271 21260 IVFAIL = IVFAIL + 1 IVCOMP=ICON01 IVCORR = 1263 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1271 CONTINUE IVTNUM = 127 C C TEST 127 - THIS IS A TEST OF MORE COMPLEX BRANCHING USING C THE ASSIGN AND ASSIGNED GO TO STATEMENTS. THIS TEST IS NOT C INTENDED TO BE AN EXAMPLE OF STRUCTURED PROGRAMMING. C C IF (ICZERO) 31270, 1270, 31270 1270 CONTINUE IVON01=0 1272 ASSIGN 1273 TO J IVON01=IVON01+1 GO TO 1276 1273 ASSIGN 1274 TO J IVON01=IVON01 * 10 + 2 GO TO 1276 1274 ASSIGN 1275 TO J IVON01=IVON01 * 100 + 3 GO TO 1276 1275 GO TO 1277 1276 GO TO J, ( 1272, 1273, 1274, 1275 ) 1277 CONTINUE GO TO 41270 31270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41270, 1281, 41270 41270 IF ( IVON01 - 1203 ) 21270, 11270, 21270 11270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1281 21270 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1203 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1281 CONTINUE IVTNUM = 128 C C TEST 128 - TEST OF THE ASSIGNED GO TO WITH ALL OF THE C STATEMENT NUMBERS IN THE ASSIGNED GO TO LIST THE SAME C VALUE EXCEPT FOR ONE. C C IF (ICZERO) 31280, 1280, 31280 1280 CONTINUE ICON01=0 ASSIGN 1283 TO K GO TO K, ( 1282, 1282, 1282, 1282, 1282, 1282, 1283 ) 1282 ICON01 = 0 GO TO 1284 1283 ICON01 = 1 1284 CONTINUE GO TO 41280 31280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41280, 1291, 41280 41280 IF ( ICON01 - 1 ) 21280, 11280, 21280 11280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1291 21280 IVFAIL = IVFAIL + 1 IVCOMP=ICON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1291 CONTINUE IVTNUM = 129 C C TEST 129 - THIS TESTS THE ASSIGN STATEMENT IN CONJUNCTION C WITH THE NORMAL ARITHMETIC ASSIGN STATEMENT. THE VALUE C OF THE INDEX FOR THE ASSIGNED GO TO STATEMENT IS CHANGED BY C THE COMBINATION OF STATEMENTS. C C IF (ICZERO) 31290, 1290, 31290 1290 CONTINUE ICON01=0 ASSIGN 1292 TO L L = 1293 ASSIGN 1294 TO L GO TO L, ( 1294, 1293, 1292 ) 1292 ICON01 = 0 GO TO 1295 1293 ICON01 = 0 GO TO 1295 1294 ICON01 = 1 1295 CONTINUE GO TO 41290 31290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41290, 1301, 41290 41290 IF ( ICON01 - 1 ) 21290, 11290, 21290 11290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1301 21290 IVFAIL = IVFAIL + 1 IVCOMP=ICON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1301 CONTINUE IVTNUM = 130 C C TEST 130 - THIS IS A TEST OF A LOOP USING A COMBINATION OF THE C ASSIGNED GO TO STATEMENT AND THE ARITHMETIC IF STATEMENT. C THE LOOP SHOULD BE EXECUTED ELEVEN (11) TIMES THEN CONTROL C SHOULD PASS TO THE CHECK OF THE VALUE FOR IVON01. C C IF (ICZERO) 31300, 1300, 31300 1300 CONTINUE IVON01=0 1302 ASSIGN 1302 TO M IVON01=IVON01+1 IF ( IVON01 - 10 ) 1303, 1303, 1304 1303 GO TO 1305 1304 ASSIGN 1306 TO M 1305 GO TO M, ( 1302, 1306 ) 1306 CONTINUE GO TO 41300 31300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41300, 1311, 41300 41300 IF ( IVON01 - 11 ) 21300, 11300, 21300 11300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1311 21300 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1311 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 FM013) END *END-OF,FM013 FM014.f 480975971 170 2 100666 7388 ` *HEADER,FORTR,FM014 *FILES1,FORTR,FM014,X C C COMMENT SECTION. C C FM014 C C THIS ROUTINE TESTS THE FORTRAN COMPUTED GO TO STATEMENT. C BECAUSE THE FORM OF THE COMPUTED GO TO IS SO STRAIGHTFORWARD, THE C TESTS MAINLY RELATE TO THE RANGE OF POSSIBLE STATEMENT NUMBERS C WHICH ARE USED. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 11.2, COMPUTED GO TO 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) IVTNUM = 131 C C TEST 131 - TEST OF THE SIMPLIST FORM OF THE COMPUTED GO TO C STATEMENT WITH THREE POSSIBLE BRANCHES. C C IF (ICZERO) 31310, 1310, 31310 1310 CONTINUE ICON01=0 I=3 GO TO ( 1312, 1313, 1314 ), I 1312 ICON01 = 1312 GO TO 1315 1313 ICON01 = 1313 GO TO 1315 1314 ICON01 = 1314 1315 CONTINUE GO TO 41310 31310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41310, 1321, 41310 41310 IF ( ICON01 - 1314 ) 21310, 11310, 21310 11310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1321 21310 IVFAIL = IVFAIL + 1 IVCOMP=ICON01 IVCORR = 1314 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1321 CONTINUE IVTNUM = 132 C C TEST 132 - THIS TESTS THE COMPUTED GO TO IN CONJUNCTION WITH THE C THE UNCONDITIONAL GO TO STATEMENT. THIS TEST IS NOT C INTENDED TO BE AN EXAMPLE OF GOOD STRUCTURED PROGRAMMING. C C IF (ICZERO) 31320, 1320, 31320 1320 CONTINUE IVON01=0 J=1 GO TO 1326 1322 J = 2 IVON01=IVON01+2 GO TO 1326 1323 J = 3 IVON01=IVON01 * 10 + 3 GO TO 1326 1324 J = 4 IVON01=IVON01 * 100 + 4 GO TO 1326 1325 IVON01 = IVON01 + 1 GO TO 1327 1326 GO TO ( 1322, 1323, 1324, 1325, 1326 ), J 1327 CONTINUE GO TO 41320 31320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41320, 1331, 41320 41320 IF ( IVON01 - 2305 ) 21320, 11320, 21320 11320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1331 21320 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=2305 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1331 CONTINUE IVTNUM = 133 C C TEST 133 - THIS IS A TEST OF THE COMPUTED GO TO STATEMENT WITH C A SINGLE STATEMENT LABEL AS THE LIST OF POSSIBLE BRANCHES. C C IF (ICZERO) 31330, 1330, 31330 1330 CONTINUE IVON01=0 K=1 GO TO ( 1332 ), K 1332 IVON01 = 1 GO TO 41330 31330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41330, 1341, 41330 41330 IF ( IVON01 - 1 ) 21330, 11330, 21330 11330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1341 21330 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1341 CONTINUE IVTNUM = 134 C C TEST 134 - THIS IS A TEST OF FIVE (5) DIGIT STATEMENT NUMBERS C WHICH EXCEED THE INTEGER 32767 USED IN THE COMPUTED GO TO C STATEMENT WITH THREE POSSIBLE BRANCHES. C C IF (ICZERO) 31340, 1340, 31340 1340 CONTINUE IVON01=0 L=2 GO TO ( 99991, 99992, 99993 ), L 99991 IVON01=1 GO TO 1342 99992 IVON01=2 GO TO 1342 99993 IVON01=3 1342 CONTINUE GO TO 41340 31340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41340, 1351, 41340 41340 IF ( IVON01 - 2 ) 21340, 11340, 21340 11340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1351 21340 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1351 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 FM014) END *END-OF,FM014 FM016.f 480975974 170 2 100666 23578 ` *HEADER,FORTR,FM016 *FILES1,FORTR,FM016,X C C COMMENT SECTION. C C FM016 C C THIS ROUTINE BEGINS A SERIES OF TESTS OF THE FORTRAN C LOGICAL IF STATEMENT IN ALL OF THE VARIOUS FORMS. THE C FOLLOWING LOGICAL OPERANDS ARE USED FOR THIS ROUTINE - LOGICAL C CONSTANTS, LOGICAL VARIABLES, LOGICAL ARRAY ELEMENTS, AND C ARITHMETIC EXPRESSIONS WITH VARIOUS RELATIONAL OPERATORS. BOTH C THE TRUE AND FALSE BRANCHES ARE TESTED IN THE SERIES OF TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7.1, LOGICAL CONSTANT C SECTION 6, EXPRESSIONS C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.3, RELATIONAL EXPRESSIONS C SECTION 6.4, LOGICAL EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10, ASSIGNMENT STATEMENTS C SECTION 10.2, LOGICAL ASSIGNMENT STATEMENT C SECTION 11.5, LOGICAL IF STATEMENT C LOGICAL LCTNT1, LCTNF1, LVTNTF, LVTNFT, LATN1A(2) LOGICAL LADN1D, LADN1B DIMENSION LADN1D(2), LADN1B(2) DATA LADN1D/.TRUE., .FALSE./ 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) IVTNUM = 139 C TEST 139 - THIS TESTS THE LOGICAL CONSTANT .TRUE. C IF (ICZERO) 31390, 1390, 31390 1390 CONTINUE IVON01=0 IF ( .TRUE. ) IVON01 = 1 GO TO 41390 31390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41390, 1401, 41390 41390 IF ( IVON01 - 1 ) 21390, 11390, 21390 11390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1401 21390 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1401 CONTINUE IVTNUM = 140 C TEST 140 - THIS TESTS THE LOGICAL CONSTANT .FALSE. C IF (ICZERO) 31400, 1400, 31400 1400 CONTINUE IVON01=1 IF ( .FALSE. ) IVON01=0 GO TO 41400 31400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41400, 1411, 41400 41400 IF ( IVON01 - 1 ) 21400, 11400, 21400 11400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1411 21400 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1411 CONTINUE IVTNUM = 141 C TEST 141 - THIS TESTS THE LOGICAL VARIABLE = .TRUE. C IF (ICZERO) 31410, 1410, 31410 1410 CONTINUE LCTNT1=.TRUE. IVON01 = 0 IF ( LCTNT1 ) IVON01 = 1 GO TO 41410 31410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41410, 1421, 41410 41410 IF ( IVON01 - 1 ) 21410, 11410, 21410 11410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1421 21410 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1421 CONTINUE IVTNUM = 142 C TEST 142 - THIS TESTS THE LOGICAL VARIABLE = .FALSE. C IF (ICZERO) 31420, 1420, 31420 1420 CONTINUE IVON01=1 LCTNF1=.FALSE. IF ( LCTNF1 ) IVON01=0 GO TO 41420 31420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41420, 1431, 41420 41420 IF ( IVON01 - 1 ) 21420, 11420, 21420 11420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1431 21420 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1431 CONTINUE IVTNUM = 143 C TEST 143 - THIS TESTS CHANGING THE VALUE OF A LOGICAL VARIABLE C FROM .TRUE. TO .FALSE. C IF (ICZERO) 31430, 1430, 31430 1430 CONTINUE LVTNTF=.TRUE. LVTNTF=.FALSE. IVON01 = 1 IF ( LVTNTF ) IVON01 = 0 GO TO 41430 31430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41430, 1441, 41430 41430 IF ( IVON01 - 1 ) 21430, 11430, 21430 11430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1441 21430 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1441 CONTINUE IVTNUM = 144 C TEST 144 - THIS TESTS CHANGING THE VALUE OF A LOGICAL VARIABLE C FROM .FALSE. TO .TRUE. C IF (ICZERO) 31440, 1440, 31440 1440 CONTINUE LVTNFT=.FALSE. LVTNFT=.TRUE. IVON01=0 IF ( LVTNFT ) IVON01=1 GO TO 41440 31440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41440, 1451, 41440 41440 IF ( IVON01 - 1 ) 21440, 11440, 21440 11440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1451 21440 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1451 CONTINUE IVTNUM = 145 C TEST 145 - TEST OF A LOGICAL ARRAY ELEMENT SET TO .TRUE. C IF (ICZERO) 31450, 1450, 31450 1450 CONTINUE LATN1A(1)=.TRUE. IVON01=0 IF ( LATN1A(1) ) IVON01=1 GO TO 41450 31450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41450, 1461, 41450 41450 IF ( IVON01 - 1 ) 21450, 11450, 21450 11450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1461 21450 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1461 CONTINUE IVTNUM = 146 C TEST 146 - TEST OF A LOGICAL ARRAY ELEMENT SET TO .FALSE. C IF (ICZERO) 31460, 1460, 31460 1460 CONTINUE LATN1A(2) = .FALSE. IVON01=1 IF ( LATN1A(2) ) IVON01=0 GO TO 41460 31460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41460, 1471, 41460 41460 IF ( IVON01 - 1 ) 21460, 11460, 21460 11460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1471 21460 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1471 CONTINUE IVTNUM = 147 C TEST 147 - TEST OF A LOGICAL ARRAY ELEMENT SET .TRUE. C IN A DATA INITIALIZATION STATEMENT. C IF (ICZERO) 31470, 1470, 31470 1470 CONTINUE IVON01=0 IF ( LADN1D(1) ) IVON01=1 GO TO 41470 31470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41470, 1481, 41470 41470 IF ( IVON01 - 1 ) 21470, 11470, 21470 11470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1481 21470 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1481 CONTINUE IVTNUM = 148 C TEST 148 - TEST OF A LOGICAL ARRAY ELEMENT SET .FALSE. C IN A DATA INITIALIZATION STATEMENT. C IF (ICZERO) 31480, 1480, 31480 1480 CONTINUE IVON01=1 IF ( LADN1D(2) ) IVON01=0 GO TO 41480 31480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41480, 1491, 41480 41480 IF ( IVON01 - 1 ) 21480, 11480, 21480 11480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1491 21480 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1491 CONTINUE IVTNUM = 149 C TEST 149 - LIKE TEST 145 EXCEPT THAT THE ARRAY DECLARATION WAS C IN A DIMENSION STATEMENT RATHER THAN IN THE TYPE STATEMENT. C IF (ICZERO) 31490, 1490, 31490 1490 CONTINUE LADN1B(1)=.TRUE. IVON01=0 IF ( LADN1B(1) ) IVON01=1 GO TO 41490 31490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41490, 1501, 41490 41490 IF ( IVON01 - 1 ) 21490, 11490, 21490 11490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1501 21490 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C FOR TESTS 150 THRU 156 THE TRUE PATH IS USED.. C 1501 CONTINUE IVTNUM = 150 C TEST 150 - RELATIONAL EXPRESSION WITH INTEGER CONSTANTS .LT. C IF (ICZERO) 31500, 1500, 31500 1500 CONTINUE IVON01=0 IF ( 3 .LT. 76 ) IVON01=1 GO TO 41500 31500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41500, 1511, 41500 41500 IF ( IVON01 - 1 ) 21500, 11500, 21500 11500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1511 21500 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1511 CONTINUE IVTNUM = 151 C TEST 151 - TEST WITH RELATIONAL EXPRESSION .LE. C IF (ICZERO) 31510, 1510, 31510 1510 CONTINUE IVON01=0 IF ( 587 .LE. 587 ) IVON01=1 GO TO 41510 31510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41510, 1521, 41510 41510 IF ( IVON01 - 1 ) 21510, 11510, 21510 11510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1521 21510 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1521 CONTINUE IVTNUM = 152 C TEST 152 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .EQ. C IF (ICZERO) 31520, 1520, 31520 1520 CONTINUE IVON01=0 IF ( 9999 .EQ. 9999 ) IVON01=1 GO TO 41520 31520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41520, 1531, 41520 41520 IF ( IVON01 - 1 ) 21520, 11520, 21520 11520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1531 21520 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1531 CONTINUE IVTNUM = 153 C TEST 153 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .NE. C IF (ICZERO) 31530, 1530, 31530 1530 CONTINUE IVON01=0 IF ( 0 .NE. 32767 ) IVON01=1 GO TO 41530 31530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41530, 1541, 41530 41530 IF ( IVON01 - 1 ) 21530, 11530, 21530 11530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1541 21530 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1541 CONTINUE IVTNUM = 154 C TEST 154 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .GT. C IF (ICZERO) 31540, 1540, 31540 1540 CONTINUE IVON01=0 IF ( 32767 .GT. 76 ) IVON01=1 GO TO 41540 31540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41540, 1551, 41540 41540 IF ( IVON01 - 1 ) 21540, 11540, 21540 11540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1551 21540 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1551 CONTINUE IVTNUM = 155 C TEST 155 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .GE. C IF (ICZERO) 31550, 1550, 31550 1550 CONTINUE IVON01=0 IF ( 32767 .GE. 76 ) IVON01=1 GO TO 41550 31550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41550, 1561, 41550 41550 IF ( IVON01 - 1 ) 21550, 11550, 21550 11550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1561 21550 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1561 CONTINUE IVTNUM = 156 C TEST 156 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .GE. C IF (ICZERO) 31560, 1560, 31560 1560 CONTINUE IVON01=0 IF ( 32767 .GE. 32767 ) IVON01=1 GO TO 41560 31560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41560, 1571, 41560 41560 IF ( IVON01 - 1 ) 21560, 11560, 21560 11560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1571 21560 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C FOR TESTS 157 THRU 162 THE FALSE PATH IS USED.. C 1571 CONTINUE IVTNUM = 157 C TEST 157 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .LT. C IF (ICZERO) 31570, 1570, 31570 1570 CONTINUE IVON01=1 IF ( 76 .LT. 3 ) IVON01=0 GO TO 41570 31570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41570, 1581, 41570 41570 IF ( IVON01 - 1 ) 21570, 11570, 21570 11570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1581 21570 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1581 CONTINUE IVTNUM = 158 C TEST 158 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .LE. C IF (ICZERO) 31580, 1580, 31580 1580 CONTINUE IVON01=1 IF ( 76 .LE. 3 ) IVON01=0 GO TO 41580 31580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41580, 1591, 41580 41580 IF ( IVON01 - 1 ) 21580, 11580, 21580 11580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1591 21580 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1591 CONTINUE IVTNUM = 159 C TEST 159 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .EQ. C IF (ICZERO) 31590, 1590, 31590 1590 CONTINUE IVON01=1 IF ( 9999 .EQ. 587 ) IVON01=0 GO TO 41590 31590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41590, 1601, 41590 41590 IF ( IVON01 - 1 ) 21590, 11590, 21590 11590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1601 21590 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1601 CONTINUE IVTNUM = 160 C TEST 160 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .NE. C IF (ICZERO) 31600, 1600, 31600 1600 CONTINUE IVON01=1 IF ( 3 .NE. 3 ) IVON01=0 GO TO 41600 31600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41600, 1611, 41600 41600 IF ( IVON01 - 1 ) 21600, 11600, 21600 11600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1611 21600 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1611 CONTINUE IVTNUM=161 C C TEST 161 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .GT. C IF ( ICZERO ) 31610, 1610, 31610 1610 CONTINUE IVON01=1 IF ( 76 .GT. 32767 ) IVON01=0 GO TO 41610 31610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF ( ICZERO ) 41610, 1621, 41610 41610 IF ( IVON01 - 1 ) 21610, 11610, 21610 11610 IVPASS = IVPASS+ 1 WRITE (I02,80001) IVTNUM GO TO 1621 21610 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 1621 CONTINUE IVTNUM = 162 C C C **** TEST 162 **** C C TEST 162 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .GE. C IF (ICZERO) 31620, 1620, 31620 1620 CONTINUE IVON01=1 IF ( 76 .GE. 32767 ) IVON01 = 0 GO TO 41620 31620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41620, 1631, 41620 41620 IF ( IVON01 - 1 ) 21620, 11620, 21620 11620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1631 21620 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1631 CONTINUE IVTNUM = 163 C C **** TEST 163 **** C TEST 163 - RELATIONAL EXPRESSION WITH INTEGER VARIABLE C REFERENCES (IC) (RO) (IVR). TRUE PATH. USE .LT. C C IF (ICZERO) 31630, 1630, 31630 1630 CONTINUE IVON01 = 76 IVON02 = 0 IF ( 3 .LT. IVON01 ) IVON02 = 1 GO TO 41630 31630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41630, 1641, 41630 41630 IF ( IVON02 - 1 ) 21630, 11630, 21630 11630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1641 21630 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1641 CONTINUE IVTNUM = 164 C C **** TEST 164 **** C TEST 164 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCES. C TRUE PATH. .LE. C C IF (ICZERO) 31640, 1640, 31640 1640 CONTINUE IVON01 = 587 IVON02 = 0 IF ( 587 .LE. IVON01 ) IVON02 = 1 GO TO 41640 31640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41640, 1651, 41640 41640 IF ( IVON02 - 1 ) 21640, 11640, 21640 11640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1651 21640 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1651 CONTINUE IVTNUM = 165 C C **** TEST 165 **** C TEST 165 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .EQ. C C IF (ICZERO) 31650, 1650, 31650 1650 CONTINUE IVON01 = 9999 IVON02 = 0 IF ( 9999 .EQ. IVON01 ) IVON02 = 1 GO TO 41650 31650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41650, 1661, 41650 41650 IF ( IVON02 - 1 ) 21650, 11650, 21650 11650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1661 21650 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1661 CONTINUE IVTNUM = 166 C C **** TEST 166 **** C TEST 166 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .NE. C C IF (ICZERO) 31660, 1660, 31660 1660 CONTINUE IVON01 = 32767 IVON02 = 0 IF ( 0 .NE. IVON01 ) IVON02 = 1 GO TO 41660 31660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41660, 1671, 41660 41660 IF ( IVON02 - 1 ) 21660, 11660, 21660 11660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1671 21660 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1671 CONTINUE IVTNUM = 167 C C **** TEST 167 **** C TEST 167 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .GT. C C IF (ICZERO) 31670, 1670, 31670 1670 CONTINUE IVON01 = 76 IVON02 = 0 IF ( 32767 .GT. IVON01 ) IVON02 = 1 GO TO 41670 31670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41670, 1681, 41670 41670 IF ( IVON02 - 1 ) 21670, 11670, 21670 11670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1681 21670 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1681 CONTINUE IVTNUM = 168 C C **** TEST 168 **** C TEST 168 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .GE. C C IF (ICZERO) 31680, 1680, 31680 1680 CONTINUE IVON01 = 76 IVON02 = 0 IF ( 32767 .GE. IVON01 ) IVON02 = 1 GO TO 41680 31680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41680, 1691, 41680 41680 IF ( IVON02 - 1 ) 21680, 11680, 21680 11680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1691 21680 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1691 CONTINUE IVTNUM = 169 C C **** TEST 169 **** C TEST 169 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .EQ. C C IF (ICZERO) 31690, 1690, 31690 1690 CONTINUE IVON01 = 32767 IVON02 = 0 IF ( 32767 .EQ. IVON01 ) IVON02 = 1 GO TO 41690 31690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41690, 1701, 41690 41690 IF ( IVON02 - 1 ) 21690, 11690, 21690 11690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1701 21690 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1701 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 FM016) END *END-OF,FM016 FM017.f 480975976 170 2 100666 24106 ` *HEADER,FORTR,FM017 *FILES1,FORTR,FM017,X C C COMMENT SECTION. C C FM017 C C THIS ROUTINE CONTINUES TESTS OF THE FORTRAN C LOGICAL IF STATEMENT IN ALL OF THE VARIOUS FORMS. THE C FOLLOWING LOGICAL OPERANDS ARE USED FOR THIS ROUTINE - LOGICAL C CONSTANTS, LOGICAL VARIABLES, LOGICAL ARRAY ELEMENTS, AND C ARITHMETIC EXPRESSIONS WITH VARIOUS RELATIONAL OPERATORS. BOTH C THE TRUE AND FALSE BRANCHES ARE TESTED IN THE SERIES OF TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7.1, LOGICAL CONSTANT C SECTION 6, EXPRESSIONS C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.3, RELATIONAL EXPRESSIONS C SECTION 6.4, LOGICAL EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10, ASSIGNMENT STATEMENTS C SECTION 10.2, LOGICAL ASSIGNMENT STATEMENT C SECTION 11.5, LOGICAL IF STATEMENT C DIMENSION IADN11(3) LOGICAL LATN1A(2), LCTNT1, LCTNT2 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) IVTNUM = 170 C C **** TEST 170 **** C TEST 170 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .LT. C C IF (ICZERO) 31700, 1700, 31700 1700 CONTINUE IVON01 = 3 IVON02 = 1 IF ( 76 .LT. IVON01 ) IVON02 = 0 GO TO 41700 31700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41700, 1711, 41700 41700 IF ( IVON02 - 1 ) 21700, 11700, 21700 11700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1711 21700 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1711 CONTINUE IVTNUM = 171 C C **** TEST 171 **** C TEST 171 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .LE. C C IF (ICZERO) 31710, 1710, 31710 1710 CONTINUE IVON01 = 3 IVON02 = 1 IF ( 76 .LE. IVON01 ) IVON02 = 0 GO TO 41710 31710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41710, 1721, 41710 41710 IF ( IVON02 - 1 ) 21710, 11710, 21710 11710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1721 21710 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1721 CONTINUE IVTNUM = 172 C C **** TEST 172 **** C TEST 172 - RELATIONAL EXPRESSIONAL. INTEGER VARIABLE REFERENCE. C FALSE PATH. .EQ. C C IF (ICZERO) 31720, 1720, 31720 1720 CONTINUE IVON01 = 587 IVON02 = 1 IF ( 9999 .EQ. IVON01 ) IVON02 = 0 GO TO 41720 31720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41720, 1731, 41720 41720 IF ( IVON02 - 1 ) 21720, 11720, 21720 11720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1731 21720 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1731 CONTINUE IVTNUM = 173 C C **** TEST 173 **** C TEST 173 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .NE. C C IF (ICZERO) 31730, 1730, 31730 1730 CONTINUE IVON01 = 3 IVON02 = 1 IF ( 3 .NE. IVON01 ) IVON02 = 0 GO TO 41730 31730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41730, 1741, 41730 41730 IF ( IVON02 - 1 ) 21730, 11730, 21730 11730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1741 21730 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1741 CONTINUE IVTNUM = 174 C C **** TEST 174 **** C TEST 174 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .GT. C C IF (ICZERO) 31740, 1740, 31740 1740 CONTINUE IVON01 = 32767 IVON02 = 1 IF ( 76 .GT. IVON01 ) IVON02 = 0 GO TO 41740 31740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41740, 1751, 41740 41740 IF ( IVON02 - 1 ) 21740, 11740, 21740 11740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1751 21740 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1751 CONTINUE IVTNUM = 175 C C **** TEST 175 **** C TEST 175 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .GE. C C IF (ICZERO) 31750, 1750, 31750 1750 CONTINUE IVON01 = 32767 IVON02 = 1 IF ( 76 .GE. IVON01 ) IVON02 = 0 GO TO 41750 31750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41750, 1761, 41750 41750 IF ( IVON02 - 1 ) 21750, 11750, 21750 11750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1761 21750 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1761 CONTINUE IVTNUM = 176 C C **** TEST 176 **** C TEST 176 - RELATIONAL EXPRESSION. (IVR) (RO) (IC) C INTEGER VARIABLE REFERENCE WITH INTEGER CONSTANT C TRUE PATH. .LT. C C IF (ICZERO) 31760, 1760, 31760 1760 CONTINUE IVON01 = 3 IVON02 = 0 IF ( IVON01 .LT. 76 ) IVON02 = 1 GO TO 41760 31760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41760, 1771, 41760 41760 IF ( IVON02 - 1 ) 21760, 11760, 21760 11760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1771 21760 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1771 CONTINUE IVTNUM = 177 C C **** TEST 177 **** C TEST 177 - LIKE TEST 176. FALSE PATH. .EQ. C C IF (ICZERO) 31770, 1770, 31770 1770 CONTINUE IVON01 = 587 IVON02 = 1 IF ( IVON01 .EQ. 9999 ) IVON02=0 GO TO 41770 31770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41770, 1781, 41770 41770 IF ( IVON02 - 1 ) 21770, 11770, 21770 11770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1781 21770 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1781 CONTINUE IVTNUM = 178 C C **** TEST 178 **** C TEST 178 - LIKE TEST 176. TRUE PATH. .GE. C C IF (ICZERO) 31780, 1780, 31780 1780 CONTINUE IVON01 = 32767 IVON02 = 0 IF ( IVON01 .GE. 32767 ) IVON02 = 1 GO TO 41780 31780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41780, 1791, 41780 41780 IF ( IVON02 - 1 ) 21780, 11780, 21780 11780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1791 21780 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1791 CONTINUE IVTNUM = 179 C C **** TEST 179 **** C TEST 179 - RELATIONAL EXPRESSION. INTEGER ARRAY ELEMENT C REFERENCE. (IC) (RO) (IAER) FALSE PATH. .LT. C C IF (ICZERO) 31790, 1790, 31790 1790 CONTINUE IVON01 = 1 IADN11(1) = 3 IF ( 76 .LT. IADN11(1) ) IVON01 = 0 GO TO 41790 31790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41790, 1801, 41790 41790 IF ( IVON01 - 1 ) 21790, 11790, 21790 11790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1801 21790 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1801 CONTINUE IVTNUM = 180 C C **** TEST 180 **** C TEST 180 - LIKE TEST 179. TRUE PATH. .LE. C C IF (ICZERO) 31800, 1800, 31800 1800 CONTINUE IVON01 = 0 IADN11(2) = 587 IF ( 587 .LE. IADN11(2) ) IVON01 = 1 GO TO 41800 31800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41800, 1811, 41800 41800 IF ( IVON01 - 1 ) 21800, 11800, 21800 11800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1811 21800 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1811 CONTINUE IVTNUM = 181 C C **** TEST 181 **** C TEST 181 - LIKE TEST 179. FALSE PATH. .GE. C C IF (ICZERO) 31810, 1810, 31810 1810 CONTINUE IVON01 = 1 IADN11(3) = 32767 IF ( 76 .GE. IADN11(3) ) IVON01 = 0 GO TO 41810 31810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41810, 1821, 41810 41810 IF ( IVON01 - 1 ) 21810, 11810, 21810 11810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1821 21810 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1821 CONTINUE IVTNUM = 182 C C **** TEST 182 **** C TEST 182 - RELATIONAL EXPRESSION (IAER) (RO) (IC). TRUE C PATH. .EQ. C C IF (ICZERO) 31820, 1820, 31820 1820 CONTINUE IVON01 = 0 IADN11(2) = 32767 IF ( IADN11(2) .EQ. 32767 ) IVON01 = 1 GO TO 41820 31820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41820, 1831, 41820 41820 IF ( IVON01 - 1 ) 21820, 11820, 21820 11820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1831 21820 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1831 CONTINUE IVTNUM = 183 C C **** TEST 183 **** C TEST 183 - RELATIONAL EXPRESSION (IVR) (RO) (IAER) C FALSE PATH. .NE. C C IF (ICZERO) 31830, 1830, 31830 1830 CONTINUE IVON01 = 1 IVON02 = 587 IADN11(1) = 587 IF ( IVON02 .NE. IADN11(1) ) IVON01 = 0 GO TO 41830 31830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41830, 1841, 41830 41830 IF ( IVON01 - 1 ) 21830, 11830, 21830 11830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1841 21830 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1841 CONTINUE IVTNUM = 184 C C **** TEST 184 **** C TEST 184 - RELATIONAL EXPRESSION (IAER) (RO) (IVR) C TRUE PATH .NE. C C IF (ICZERO) 31840, 1840, 31840 1840 CONTINUE IVON01 = 0 IADN11(3) = 3 IVON02 = 32767 IF ( IADN11(3) .NE. IVON02 ) IVON01 = 1 GO TO 41840 31840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41840, 1851, 41840 41840 IF ( IVON01 - 1 ) 21840, 11840, 21840 11840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1851 21840 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1851 CONTINUE IVTNUM = 185 C C **** TEST 185 **** C TEST 185 - TEST OF PARENTHESES ( (LE) ) C TRUE PATH LOGICAL CONSTANT .TRUE. C C IF (ICZERO) 31850, 1850, 31850 1850 CONTINUE IVON01 = 0 IF ( ( .TRUE. ) ) IVON01 = 1 GO TO 41850 31850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41850, 1861, 41850 41850 IF ( IVON01 - 1 ) 21850, 11850, 21850 11850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1861 21850 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1861 CONTINUE IVTNUM = 186 C C **** TEST 186 **** C TEST 186 - LIKE TEST 185 C FALSE PATH LOGICAL CONSTANT .FALSE. C C IF (ICZERO) 31860, 1860, 31860 1860 CONTINUE IVON01 = 1 IF ((( .FALSE. ))) IVON01 = 0 GO TO 41860 31860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41860, 1871, 41860 41860 IF ( IVON01 - 1 ) 21860, 11860, 21860 11860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1871 21860 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1871 CONTINUE IVTNUM = 187 C C **** TEST 187 **** C TEST 187 - PARENS AROUND LOGICAL VARIABLE REFERENCE ( (LVR) ) C TRUE PATH C C IF (ICZERO) 31870, 1870, 31870 1870 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. IF ( ( LCTNT1 ) ) IVON01 = 1 GO TO 41870 31870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41870, 1881, 41870 41870 IF ( IVON01 - 1 ) 21870, 11870, 21870 11870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1881 21870 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1881 CONTINUE IVTNUM = 188 C C **** TEST 188 **** C TEST 188 - PARENS AROUND LOGICAL ARRAY REFERENCE ( ( LAER ) ) C FALSE PATH C IF (ICZERO) 31880, 1880, 31880 1880 CONTINUE IVON01 = 1 LATN1A(1) = .FALSE. IF ( ( LATN1A(1) ) ) IVON01 = 0 GO TO 41880 31880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41880, 1891, 41880 41880 IF ( IVON01 - 1 ) 21880, 11880, 21880 11880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1891 21880 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1891 CONTINUE IVTNUM = 189 C C **** TEST 189 **** C TEST 189 - USE OF .NOT. WITH A LOGICAL PRIMARY .NOT. (LP) C FALSE PATH .NOT. .TRUE. C C IF (ICZERO) 31890, 1890, 31890 1890 CONTINUE IVON01 = 1 IF ( .NOT. .TRUE. ) IVON01 = 0 GO TO 41890 31890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41890, 1901, 41890 41890 IF ( IVON01 - 1 ) 21890, 11890, 21890 11890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1901 21890 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1901 CONTINUE IVTNUM = 190 C C **** TEST 190 **** C TEST 190 - LIKE TEST 189 TRUE PATH .NOT. .FALSE. C C IF (ICZERO) 31900, 1900, 31900 1900 CONTINUE IVON01 = 0 IF ( .NOT. .FALSE. ) IVON01 = 1 GO TO 41900 31900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41900, 1911, 41900 41900 IF ( IVON01 - 1 ) 21900, 11900, 21900 11900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1911 21900 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1911 CONTINUE IVTNUM = 191 C C **** TEST 191 **** C TEST 191 - TESTS .NOT. WITH A LOGICAL VARIABLE SET TO .FALSE. C IN A LOGICAL ASSIGNMENT STATEMENT TRUE PATH C C IF (ICZERO) 31910, 1910, 31910 1910 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. IF ( .NOT. LCTNT1 ) IVON01 = 1 GO TO 41910 31910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41910, 1921, 41910 41910 IF ( IVON01 - 1 ) 21910, 11910, 21910 11910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1921 21910 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1921 CONTINUE IVTNUM = 192 C C **** TEST 192 **** C TEST 192 - LIKE TEST 191 ONLY USES A LOGICAL ARRAY ELEMENT C SET TO .FALSE. IN A LOGICAL ASSIGNMENT STATEMENT TRUE C C IF (ICZERO) 31920, 1920, 31920 1920 CONTINUE IVON01 = 0 LATN1A(2) = .FALSE. IF ( .NOT. LATN1A(2) ) IVON01 = 1 GO TO 41920 31920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41920, 1931, 41920 41920 IF ( IVON01 - 1 ) 21920, 11920, 21920 11920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1931 21920 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1931 CONTINUE IVTNUM = 193 C C **** TEST 193 **** C TEST 193 - USE OF LOGICAL .AND. (LT) .AND. (LF) C USES TWO LOGICAL VARIABLES EACH SET TO .FALSE. C FALSE .AND. FALSE FALSE PATH C C IF (ICZERO) 31930, 1930, 31930 1930 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 0 GO TO 41930 31930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41930, 1941, 41930 41930 IF ( IVON01 - 1 ) 21930, 11930, 21930 11930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1941 21930 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1941 CONTINUE IVTNUM = 194 C C **** TEST 194 **** C TEST 194 - LIKE TEST 193 FALSE .AND. TRUE FALSE PATH C C IF (ICZERO) 31940, 1940, 31940 1940 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 0 GO TO 41940 31940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41940, 1951, 41940 41940 IF ( IVON01 - 1 ) 21940, 11940, 21940 11940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1951 21940 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1951 CONTINUE IVTNUM = 195 C C **** TEST 195 **** C TEST 195 - LIKE TEST 193 TRUE .AND. FALSE FALSE PATH C C IF (ICZERO) 31950, 1950, 31950 1950 CONTINUE IVON01 = 1 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 0 GO TO 41950 31950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41950, 1961, 41950 41950 IF ( IVON01 - 1 ) 21950, 11950, 21950 11950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1961 21950 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1961 CONTINUE IVTNUM = 196 C C **** TEST 196 **** C TEST 196 - LIKE TEST 193 TRUE .AND. TRUE TRUE PATH C C IF (ICZERO) 31960, 1960, 31960 1960 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .TRUE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 1 GO TO 41960 31960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41960, 1971, 41960 41960 IF ( IVON01 - 1 ) 21960, 11960, 21960 11960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1971 21960 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1971 CONTINUE IVTNUM = 197 C C **** TEST 197 **** C TEST 197 - TEST OF THE INCLUSIVE .OR. . (LE) .OR. (LT) C USES LOGICAL VARIABLES SET IN LOGICAL ASSIGNMENT STATEMENTS C FALSE .OR. FALSE FALSE PATH C C IF (ICZERO) 31970, 1970, 31970 1970 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 0 GO TO 41970 31970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41970, 1981, 41970 41970 IF ( IVON01 - 1 ) 21970, 11970, 21970 11970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1981 21970 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1981 CONTINUE IVTNUM = 198 C C **** TEST 198 **** C TEST 198 - LIKE TEST 197 FALSE .OR. TRUE TRUE PATH C C IF (ICZERO) 31980, 1980, 31980 1980 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 1 GO TO 41980 31980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41980, 1991, 41980 41980 IF ( IVON01 - 1 ) 21980, 11980, 21980 11980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1991 21980 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1991 CONTINUE IVTNUM = 199 C C **** TEST 199 **** C TEST 199 - LIKE TEST 197. TRUE .OR. FALSE TRUE PATH. C C IF (ICZERO) 31990, 1990, 31990 1990 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 1 GO TO 41990 31990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41990, 5001, 41990 41990 IF ( IVON01 - 1 ) 21990, 11990, 21990 11990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5001 21990 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5001 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 FM017) END *END-OF,FM017 FM018.f 480975980 170 2 100666 24716 ` *HEADER,FORTR,FM018 *FILES1,FORTR,FM018,X C C COMMENT SECTION. C C FM018 C C THIS ROUTINE CONTINUES TESTS OF THE FORTRAN C LOGICAL IF STATEMENT IN ALL OF THE VARIOUS FORMS. THE C FOLLOWING LOGICAL OPERANDS ARE USED FOR THIS ROUTINE - LOGICAL C CONSTANTS, LOGICAL VARIABLES, LOGICAL ARRAY ELEMENTS, AND C ARITHMETIC EXPRESSIONS WITH VARIOUS RELATIONAL OPERATORS. BOTH C THE TRUE AND FALSE BRANCHES ARE TESTED IN THE SERIES OF TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7.1, LOGICAL CONSTANT C SECTION 6, EXPRESSIONS C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.3, RELATIONAL EXPRESSIONS C SECTION 6.4, LOGICAL EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10, ASSIGNMENT STATEMENTS C SECTION 10.2, LOGICAL ASSIGNMENT STATEMENT C SECTION 11.5, LOGICAL IF STATEMENT C LOGICAL LCTNT1, LCTNT2, LATN1A(2) DIMENSION IADN11(2) 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) IVTNUM = 500 C C **** TEST 500 **** C TEST 500 - LIKE TEST 197. TRUE .OR. TRUE TRUE PATH C TEST OF THE FORTRAN INCLUSIVE OR (LE) .OR. (LT) C C IF (ICZERO) 35000, 5000, 35000 5000 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .TRUE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 1 GO TO 45000 35000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45000, 5011, 45000 45000 IF ( IVON01 - 1 ) 25000, 15000, 25000 15000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5011 25000 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5011 CONTINUE IVTNUM = 501 C C **** TEST 501 **** C TEST 501 - TEST OF PARENTHESES AROUND A LOGICAL EXPRESSION C ( (LE) ) .OR. (LT) C USES LOGICAL VARIABLES SET IN LOGICAL ASSIGNMENT STATEMENTS C ( FALSE ) .OR. FALSE FALSE PATH C C IF (ICZERO) 35010, 5010, 35010 5010 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( (LCTNT1) .OR. LCTNT2 ) IVON01 = 0 GO TO 45010 35010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45010, 5021, 45010 45010 IF ( IVON01 - 1 ) 25010, 15010, 25010 15010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5021 25010 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5021 CONTINUE IVTNUM = 502 C C **** TEST 502 **** C TEST 502 - LIKE TEST 501 EXCEPT THAT IT IT IS OF THE FORM C (LE) .OR. ( (LT) ) TRUE .OR. (TRUE) C TRUE PATH C C IF (ICZERO) 35020, 5020, 35020 5020 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .TRUE. IF ( LCTNT1 .OR. ( LCTNT2 ) ) IVON01 = 1 GO TO 45020 35020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45020, 5031, 45020 45020 IF ( IVON01 - 1 ) 25020, 15020, 25020 15020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5031 25020 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5031 CONTINUE IVTNUM = 503 C C **** TEST 503 **** C TEST 503 - TEST OF PARENTHESES IN LOGICAL EXPRESSIONS C ( (LE) ) .OR. ( (LT) ) C (FALSE) .OR. (TRUE) TRUE PATH C C IF (ICZERO) 35030, 5030, 35030 5030 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( (LCTNT1) .OR. (LCTNT2) ) IVON01 = 1 GO TO 45030 35030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45030, 5041, 45030 45030 IF ( IVON01 - 1 ) 25030, 15030, 25030 15030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5041 25030 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5041 CONTINUE IVTNUM = 504 C C **** TEST 504 **** C TEST 504 - LIKE TEST 503 ONLY MORE PARENTHESES TRUE PATH C C IF (ICZERO) 35040, 5040, 35040 5040 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( ( (LCTNT1) .OR. (LCTNT2) ) ) IVON01 = 1 GO TO 45040 35040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45040, 5051, 45040 45040 IF ( IVON01 - 1 ) 25040, 15040, 25040 15040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5051 25040 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5051 CONTINUE IVTNUM = 505 C C **** TEST 505 **** C TEST 505 - TEST OF PARENTHESES WITH .AND. FALSE PATH C C IF (ICZERO) 35050, 5050, 35050 5050 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( (LCTNT1) .AND. LCTNT2 ) IVON01 = 0 GO TO 45050 35050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45050, 5061, 45050 45050 IF ( IVON01 - 1 ) 25050, 15050, 25050 15050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5061 25050 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5061 CONTINUE IVTNUM = 506 C C **** TEST 506 **** C TEST 506 - LIKE TEST 505 FALSE PATH C C IF (ICZERO) 35060, 5060, 35060 5060 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( LCTNT1 .AND. (LCTNT2) ) IVON01 = 0 GO TO 45060 35060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45060, 5071, 45060 45060 IF ( IVON01 - 1 ) 25060, 15060, 25060 15060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5071 25060 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5071 CONTINUE IVTNUM = 507 C C **** TEST 507 **** C TEST 507 - MORE PARENTHESES WITH LOGICAL .AND. FALSE PATH C C IF (ICZERO) 35070, 5070, 35070 5070 CONTINUE IVON01 = 1 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( (LCTNT1) .AND. (LCTNT2) ) IVON01 = 0 GO TO 45070 35070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45070, 5081, 45070 45070 IF ( IVON01 - 1 ) 25070, 15070, 25070 15070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5081 25070 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5081 CONTINUE IVTNUM = 508 C C **** TEST 508 **** C TEST 508 - TEST OF LOGICAL .NOT. WITH PARENTHESES AROUND A LOGIC C PRIMARY. FOR THIS TEST A LOGICAL ARRAY ELEMENT IS USED AS C THE LOGICAL PRIMARY. .NOT. (FALSE) TRUE PATH. C C IF (ICZERO) 35080, 5080, 35080 5080 CONTINUE IVON01 = 0 LATN1A(1) = .FALSE. IF ( .NOT. (LATN1A(1)) ) IVON01 = 1 GO TO 45080 35080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45080, 5091, 45080 45080 IF ( IVON01 - 1 ) 25080, 15080, 25080 15080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5091 25080 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5091 CONTINUE IVTNUM = 509 C C **** TEST 509 **** C TEST 509 - LIKE TEST 508 EXCEPT THAT THE WHOLE EXPRESSION C IS IN PARENTHESES. FALSE PATH C C IF (ICZERO) 35090, 5090, 35090 5090 CONTINUE IVON01 = 1 LATN1A(2) = .TRUE. IF ( ( .NOT. (LATN1A(2)) ) ) IVON01 = 0 GO TO 45090 35090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45090, 5101, 45090 45090 IF ( IVON01 - 1 ) 25090, 15090, 25090 15090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5101 25090 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5101 CONTINUE IVTNUM = 510 C C **** TEST 510 **** C TEST 510 - INTEGER CONSTANT EXPONIENTATION C RELATIONAL EXPRESSION USING .EQ. TRUE PATH C C IF (ICZERO) 35100, 5100, 35100 5100 CONTINUE IVON01 = 0 IF ( 3 ** 3 .EQ. 27 ) IVON01 = 1 GO TO 45100 35100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45100, 5111, 45100 45100 IF ( IVON01 - 1 ) 25100, 15100, 25100 15100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5111 25100 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5111 CONTINUE IVTNUM = 511 C C **** TEST 511 **** C TEST 511 - EXPONIENTIATION USING AN INTEGER VARIABLE C RELATIONAL EXPRESSION USING .NE. FALSE PATH C C IF (ICZERO) 35110, 5110, 35110 5110 CONTINUE IVON01 = 1 IVON02 = 3 IF ( IVON02 ** 3 .NE. 27 ) IVON01 = 0 GO TO 45110 35110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45110, 5121, 45110 45110 IF ( IVON01 - 1 ) 25110, 15110, 25110 15110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5121 25110 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5121 CONTINUE IVTNUM = 512 C C **** TEST 512 **** C TEST 512 - LIKE TEST 511 USES .LE. TRUE PATH C C IF (ICZERO) 35120, 5120, 35120 5120 CONTINUE IVON01 = 0 IVON02 = 3 IF ( 3 ** IVON02 .LE. 27 ) IVON01 = 1 GO TO 45120 35120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45120, 5131, 45120 45120 IF ( IVON01 - 1 ) 25120, 15120, 25120 15120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5131 25120 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5131 CONTINUE IVTNUM = 513 C C **** TEST 513 **** C TEST 513 - LIKE TEST 511 BUT USES ALL INTEGER VARIABLES C RELATIONAL EXPRESSION USES .LT. FALSE PATH C C IF (ICZERO) 35130, 5130, 35130 5130 CONTINUE IVON01 = 1 IVON02 = 3 IVON03 = 27 IF ( IVON02 ** IVON02 .LT. IVON03 ) IVON01 = 0 GO TO 45130 35130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45130, 5141, 45130 45130 IF ( IVON01 - 1 ) 25130, 15130, 25130 15130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5141 25130 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5141 CONTINUE IVTNUM = 514 C C **** TEST 514 **** C TEST 514 - LIKE TEST 511 BUT USES INTEGER ARRAY ELEMENTS C RELATIONAL EXPRESSION USES .GE. TRUE PATH C C IF (ICZERO) 35140, 5140, 35140 5140 CONTINUE IVON01 = 0 IVON02 = 3 IADN11(1) = 3 IADN11(2) = 27 IF ( IADN11(1) ** IVON02 .GE. IADN11(2) ) IVON01 = 1 GO TO 45140 35140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45140, 5151, 45140 45140 IF ( IVON01 - 1 ) 25140, 15140, 25140 15140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5151 25140 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5151 CONTINUE IVTNUM = 515 C C **** TEST 515 **** C TEST 515 - LIKE TEST 514 BUT USES ALL INTEGER ARRAY ELEMENTS C RELATIONAL EXPRESSION USES .GT. FALSE PATH C C IF (ICZERO) 35150, 5150, 35150 5150 CONTINUE IVON01 = 1 IADN11(1) = 3 IADN11(2) = 27 IF ( IADN11(1) ** IADN11(1) .GT. IADN11(2) ) IVON01 = 0 GO TO 45150 35150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45150, 5161, 45150 45150 IF ( IVON01 - 1 ) 25150, 15150, 25150 15150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5161 25150 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5161 CONTINUE IVTNUM = 516 C C **** TEST 516 **** C TEST 516 - TEST OF INTEGER MULTIPLICATION USING INTEGER C CONSTANTS. RELATIONAL EXPRESSION USES .LT. TRUE PATH C C IF (ICZERO) 35160, 5160, 35160 5160 CONTINUE IVON01 = 0 IVON02 = 587 IF ( 3 * 3 .LT. IVON02 ) IVON01 = 1 GO TO 45160 35160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45160, 5171, 45160 45160 IF ( IVON01 - 1 ) 25160, 15160, 25160 15160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5171 25160 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5171 CONTINUE IVTNUM = 517 C C **** TEST 517 **** C TEST 517 - INTEGER MULTIPLICATION WITH INTEGER CONSTANTS, C VARIABLES, AND ARRAY ELEMENTS. RELATIONAL EXPRESSION USES C .GT. FALSE PATH C C IF (ICZERO) 35170, 5170, 35170 5170 CONTINUE IVON01 = 1 IVON02 = 32767 IADN11(1) = 3 IF ( IADN11(1) * 587 .GT. IVON02 ) IVON01 = 0 GO TO 45170 35170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45170, 5181, 45170 45170 IF ( IVON01 - 1 ) 25170, 15170, 25170 15170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5181 25170 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5181 CONTINUE IVTNUM = 518 C C **** TEST 518 **** C TEST 518 - INTEGER MULTIPLICATION AND EXPONIENTATION C RELATIONAL EXPRESSION USES .EQ. TRUE PATH C C IF (ICZERO) 35180, 5180, 35180 5180 CONTINUE IVON01 = 0 IVON02 = 3 IVON03 = 27 IADN11(2) = 3 IF ( IADN11(2) ** 2 * IVON02 .EQ. IVON03 ) IVON01 = 1 GO TO 45180 35180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45180, 5191, 45180 45180 IF ( IVON01 - 1 ) 25180, 15180, 25180 15180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5191 25180 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5191 CONTINUE IVTNUM = 519 C C **** TEST 519 **** C TEST 519 - INTEGER DIVISION. RELATIONAL EXPRESSION .NE. C FALSE PATH C C IF (ICZERO) 35190, 5190, 35190 5190 CONTINUE IVON01 = 1 IVON02 = 27 IADN11(1) = 3 IF ( IVON02 / 9 .NE. IADN11(1) ) IVON01 = 0 GO TO 45190 35190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45190, 5201, 45190 45190 IF ( IVON01 - 1 ) 25190, 15190, 25190 15190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5201 25190 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5201 CONTINUE IVTNUM = 520 C C **** TEST 520 **** C TEST 520 - INTEGER VARIABLE DIVISION. RELATIONAL EXPRESSION C USES .GE. TRUE PATH C C IF (ICZERO) 35200, 5200, 35200 5200 CONTINUE IVON01 = 0 IVON02 = 32767 IVON03 = 3 IVON04 = 9999 IVON05 = 587 IF ( IVON02 / IVON03 .GE. IVON04 / IVON05 ) IVON01 = 1 GO TO 45200 35200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45200, 5211, 45200 45200 IF ( IVON01 - 1 ) 25200, 15200, 25200 15200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5211 25200 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5211 CONTINUE IVTNUM = 521 C C **** TEST 521 **** C TEST 521 - INTEGER DIVISION AND EXPONIENTATION C RELATIONAL EXPRESSION USES .LT. FALSE PATH C C IF (ICZERO) 35210, 5210, 35210 5210 CONTINUE IVON01 = 1 IVON02 = 587 IVON03 = 3 IADN11(2) = 3 IF ( IVON02 / IADN11(2) ** 3 .LT. 3 ** IVON03 / IVON02 ) IVON01 =0 IF ( IVON02 / IADN11(2) ** 3 .LT. 3 ** IVON03 / IVON02 ) IVON01=0 GO TO 45210 35210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45210, 5221, 45210 45210 IF ( IVON01 - 1 ) 25210, 15210, 25210 15210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5221 25210 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5221 CONTINUE IVTNUM = 522 C C **** TEST 522 **** C TEST 522 - TESTS 522 THRU 535 ARE TESTS OF SIGNED TERMS C +(T) ALSO -(T) C RELATIONAL EXPRESSION USES .GT. TRUE PATH C C IF (ICZERO) 35220, 5220, 35220 5220 CONTINUE IVON01 = 0 IF ( 3 .GT. -3 ) IVON01 = 1 GO TO 45220 35220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45220, 5231, 45220 45220 IF ( IVON01 - 1 ) 25220, 15220, 25220 15220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5231 25220 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5231 CONTINUE IVTNUM = 523 C C **** TEST 523 **** C TEST 523 - TEST OF SIGNED ZERO .LT. FALSE PATH C C IF (ICZERO) 35230, 5230, 35230 5230 CONTINUE IVON01 = 1 IF ( 0 .LT. -0 ) IVON01 = 0 GO TO 45230 35230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45230, 5241, 45230 45230 IF ( IVON01 - 1 ) 25230, 15230, 25230 15230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5241 25230 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5241 CONTINUE IVTNUM = 524 C C **** TEST 524 **** C TEST 524 - TEST OF SIGNED ZERO .LE. TRUE PATH C C IF (ICZERO) 35240, 5240, 35240 5240 CONTINUE IVON01 = 0 IF ( 0 .LE. -0 ) IVON01 = 1 GO TO 45240 35240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45240, 5251, 45240 45240 IF ( IVON01 - 1 ) 25240, 15240, 25240 15240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5251 25240 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5251 CONTINUE IVTNUM = 525 C C **** TEST 525 **** C TEST 525 - TEST OF SIGNED ZERO .EQ. TRUE PATH C C IF (ICZERO) 35250, 5250, 35250 5250 CONTINUE IVON01 = 0 IF ( 0 .EQ. -0 ) IVON01 = 1 GO TO 45250 35250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45250, 5261, 45250 45250 IF ( IVON01 - 1 ) 25250, 15250, 25250 15250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5261 25250 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5261 CONTINUE IVTNUM = 526 C C **** TEST 526 **** C TEST 526 - TEST OF SIGNED ZERO .NE. FALSE PATH C C IF (ICZERO) 35260, 5260, 35260 5260 CONTINUE IVON01 = 1 IF ( 0 .NE. -0 ) IVON01 = 0 GO TO 45260 35260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45260, 5271, 45260 45260 IF ( IVON01 - 1 ) 25260, 15260, 25260 15260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5271 25260 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5271 CONTINUE IVTNUM = 527 C C **** TEST 527 **** C TEST 527 - TEST OF SIGNED ZERO .GE. TRUE PATH C C IF (ICZERO) 35270, 5270, 35270 5270 CONTINUE IVON01 = 0 IF ( 0 .GE. -0 ) IVON01 = 1 GO TO 45270 35270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45270, 5281, 45270 45270 IF ( IVON01 - 1 ) 25270, 15270, 25270 15270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5281 25270 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5281 CONTINUE IVTNUM = 528 C C **** TEST 528 **** C TEST 528 - TEST OF SIGNED ZERO .GT. FALSE PATH C C IF (ICZERO) 35280, 5280, 35280 5280 CONTINUE IVON01 = 1 IF ( 0 .GT. -0 ) IVON01 = 0 GO TO 45280 35280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45280, 5291, 45280 45280 IF ( IVON01 - 1 ) 25280, 15280, 25280 15280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5291 25280 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5291 CONTINUE IVTNUM = 529 C C **** TEST 529 **** C TEST 529 - TEST OF 32767 AND -32766 .GT. TRUE PATH C C IF (ICZERO) 35290, 5290, 35290 5290 CONTINUE IVON01 = 0 IF ( 32767 .GT. -32766 ) IVON01 = 1 GO TO 45290 35290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45290, 5301, 45290 45290 IF ( IVON01 - 1 ) 25290, 15290, 25290 15290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5301 25290 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5301 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 FM018) END *END-OF,FM018 FM019.f 480975983 170 2 100666 19368 ` *HEADER,FORTR,FM019 *FILES1,FORTR,FM019,X C C COMMENT SECTION. C C FM019 C C THIS ROUTINE CONTINUES TESTS OF THE FORTRAN LOGICAL IF STATE C BY TESTING VARIOUS FORMS OF RELATIONAL EXPRESSIONS WITH ARITHMETIC C EXPRESSIONS . POSITIVE AND NEGATIVE SIGNS ARE USED IN CONJUNCTION C WITH PARENTHESES. COMBINATIONS OF LOGICAL .AND. .OR. C .NOT. ARE USED TO TEST THE MORE COMPLEX EXPRESSIONS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7.1, LOGICAL CONSTANT C SECTION 6, EXPRESSIONS C SECTION 11.5, LOGICAL IF STATEMENT C LOGICAL LCTNT1, LCTNT2 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) IVTNUM = 530 C C **** TEST 530 **** C TEST 530 - TEST OF POSITIVELY SIGNED TERM +(IC) (RO) -(IC) C .LT. FALSE PATH C IF (ICZERO) 35300, 5300, 35300 5300 CONTINUE IVON01 = 1 IF ( +3 .LT. -3) IVON01 = 0 GO TO 45300 35300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45300, 5311, 45300 45300 IF ( IVON01 - 1 ) 25300, 15300, 25300 15300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5311 25300 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5311 CONTINUE IVTNUM = 531 C C **** TEST 531 **** C TEST 531 - TEST OF SIGNED ZERO .LT. FALSE PATH C C IF (ICZERO) 35310, 5310, 35310 5310 CONTINUE IVON01 = 1 IF ( +0 .LT. -0 ) IVON01 = 0 GO TO 45310 35310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45310, 5321, 45310 45310 IF ( IVON01 - 1 ) 25310, 15310, 25310 15310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5321 25310 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5321 CONTINUE IVTNUM = 532 C C **** TEST 532 **** C TEST 532 - TEST OF SIGNED ZERO .LE. TRUE PATH C C IF (ICZERO) 35320, 5320, 35320 5320 CONTINUE IVON01 = 0 IF ( +0 .LE. -0 ) IVON01 = 1 GO TO 45320 35320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45320, 5331, 45320 45320 IF ( IVON01 - 1 ) 25320, 15320, 25320 15320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5331 25320 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5331 CONTINUE IVTNUM = 533 C C **** TEST 533 **** C TEST 533 - TEST OF SIGNED ZERO .EQ. TRUE PATH C C IF (ICZERO) 35330, 5330, 35330 5330 CONTINUE IVON01 = 0 IF ( +0 .EQ. -0 ) IVON01 = 1 GO TO 45330 35330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45330, 5341, 45330 45330 IF ( IVON01 - 1 ) 25330, 15330, 25330 15330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5341 25330 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5341 CONTINUE IVTNUM = 534 C C **** TEST 534 **** C TEST 534 - TEST OF SIGNED ZERO .NE. FALSE PATH C C IF (ICZERO) 35340, 5340, 35340 5340 CONTINUE IVON01 = 1 IF ( +0 .NE. -0 ) IVON01 = 0 GO TO 45340 35340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45340, 5351, 45340 45340 IF ( IVON01 - 1 ) 25340, 15340, 25340 15340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5351 25340 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5351 CONTINUE IVTNUM = 535 C C **** TEST 535 **** C TEST 535 - TEST OF SIGNED ZERO .GE. TRUE PATH C C IF (ICZERO) 35350, 5350, 35350 5350 CONTINUE IVON01 = 0 IF ( +0 .GE. -0 ) IVON01 = 1 GO TO 45350 35350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45350, 5361, 45350 45350 IF ( IVON01 - 1 ) 25350, 15350, 25350 15350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5361 25350 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5361 CONTINUE IVTNUM = 536 C C **** TEST 536 **** C TEST 536 - TEST OF SIGNED ZERO .GT. FALSE PATH C C IF (ICZERO) 35360, 5360, 35360 5360 CONTINUE IVON01 = 1 IF ( +0 .GT. -0 ) IVON01 = 0 GO TO 45360 35360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45360, 5371, 45360 45360 IF ( IVON01 - 1 ) 25360, 15360, 25360 15360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5371 25360 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5371 CONTINUE IVTNUM = 537 C C **** TEST 537 **** C TEST 537 - TEST OF +32767 .EQ. -32766 FALSE PATH C C IF (ICZERO) 35370, 5370, 35370 5370 CONTINUE IVON01 = 1 IF ( +32767 .EQ. -32766 ) IVON01 = 0 GO TO 45370 35370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45370, 5381, 45370 45370 IF ( IVON01 - 1 ) 25370, 15370, 25370 15370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5381 25370 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5381 CONTINUE IVTNUM = 538 C C **** TEST 538 **** C TEST 538 - TESTS MINUS SIGN WITH INTEGER VARIABLES C RELATIONAL EXPRESSION USES .LE. TRUE PATH C C IF (ICZERO) 35380, 5380, 35380 5380 CONTINUE IVON01 = 0 IVON02 = 3 IF ( -IVON02 .LE. -IVON02 ) IVON01 = 1 GO TO 45380 35380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45380, 5391, 45380 45380 IF ( IVON01 - 1 ) 25380, 15380, 25380 15380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5391 25380 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5391 CONTINUE IVTNUM = 539 C C **** TEST 539 **** C TEST 539 - TEST IS LIKE TEST 538 USES .GE. TRUE PATH C C IF (ICZERO) 35390, 5390, 35390 5390 CONTINUE IVON01 = 0 IVON02 = 32766 IF ( -IVON02 .GE. -IVON02 ) IVON01 = 1 GO TO 45390 35390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45390, 5401, 45390 45390 IF ( IVON01 - 1 ) 25390, 15390, 25390 15390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5401 25390 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5401 CONTINUE IVTNUM = 540 C C **** TEST 540 **** C TEST 540 - INTEGER EXPONIENTIATION AND MINUS SIGN USES .NE. C FALSE PATH C C IF (ICZERO) 35400, 5400, 35400 5400 CONTINUE IVON01 = 1 IVON02 = 3 IF ( -IVON02 ** 3 .NE. -27 ) IVON01 = 0 GO TO 45400 35400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45400, 5411, 45400 45400 IF ( IVON01 - 1 ) 25400, 15400, 25400 15400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5411 25400 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5411 CONTINUE IVTNUM = 541 C C **** TEST 541 **** C TEST 541 - LIKE TEST 540 USES .LE. TRUE PATH C C IF (ICZERO) 35410, 5410, 35410 5410 CONTINUE IVON01 = 0 IVON02 = 3 IF ( -3 ** IVON02 .LE. -27 ) IVON01 = 1 GO TO 45410 35410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45410, 5421, 45410 45410 IF ( IVON01 - 1 ) 25410, 15410, 25410 15410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5421 25410 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5421 CONTINUE IVTNUM = 542 C C **** TEST 542 **** C TEST 542 - INTEGER EXPONIENTIATION AND MULTIPLICATION C USES .EQ. TRUE PATH C C IF (ICZERO) 35420, 5420, 35420 5420 CONTINUE IVON01 = 0 IVON02 = 3 IVON03 = 27 IF ( -IVON02 ** 2 * IVON02 .EQ. -IVON03 ) IVON01 = 1 GO TO 45420 35420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45420, 5431, 45420 45420 IF ( IVON01 - 1 ) 25420, 15420, 25420 15420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5431 25420 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5431 CONTINUE IVTNUM = 543 C C **** TEST 543 **** C TEST 543 - INTEGER EXPONIENTIATION AND DIVISION C USES .LT. TRUE PATH C C IF (ICZERO) 35430, 5430, 35430 5430 CONTINUE IVON01 = 0 IVON02 = 587 IVON03 = 3 IVON04 = 3 IF ( -IVON02/IVON04 ** 3 .LT. -3 ** IVON03/IVON02 ) IVON01 = 1 GO TO 45430 35430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45430, 5441, 45430 45430 IF ( IVON01 - 1 ) 25430, 15430, 25430 15430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5441 25430 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5441 CONTINUE IVTNUM = 544 C C **** TEST 544 **** C TEST 544 - INTEGER ADDITION AND SUBTRACTION C USES .EQ. TRUE PATH C C IF (ICZERO) 35440, 5440, 35440 5440 CONTINUE IVON01 = 0 IVON02 = 3 IVON03 = 587 IF ( IVON02 - IVON03 .EQ. -IVON03 + IVON02 ) IVON01 = 1 GO TO 45440 35440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45440, 5451, 45440 45440 IF ( IVON01 - 1 ) 25440, 15440, 25440 15440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5451 25440 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5451 CONTINUE IVTNUM = 545 C C **** TEST 545 **** C TEST 545 - INTEGER ADDITION AND SUBTRACTION WITH PARENTHESES C USES .EQ. TRUE PATH LIKE TEST 544 C C IF (ICZERO) 35450, 5450, 35450 5450 CONTINUE IVON01 = 0 IVON02 = 3 IVON03 = 587 IF ( (IVON02 - IVON03) .EQ. (-IVON03 + IVON02) ) IVON01 = 1 GO TO 45450 35450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45450, 5461, 45450 45450 IF ( IVON01 - 1 ) 25450, 15450, 25450 15450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5461 25450 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5461 CONTINUE IVTNUM = 546 C C **** TEST 546 **** C TEST 546 - INTEGER EXPONIENTIATION AND DIVISION WITH PARENS C USES .LT. TRUE PATH C C IF (ICZERO) 35460, 5460, 35460 5460 CONTINUE IVON01 = 0 IVON02 = 587 IVON03 = 3 IVON04 = 3 IF ((-IVON02/(IVON04**3)).LT.((-3**IVON03)/IVON02))IVON01=1 GO TO 45460 35460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45460, 5471, 45460 45460 IF ( IVON01 - 1 ) 25460, 15460, 25460 15460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5471 25460 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5471 CONTINUE IVTNUM = 547 C C **** TEST 547 **** C TEST 547 - INTEGER MULTIPLICATION WITH PARENTHESES .LT. FALSE C C IF (ICZERO) 35470, 5470, 35470 5470 CONTINUE IVON01 = 1 IVON02 = 587 IF ((-3)*(-3).LT.(-IVON02))IVON01=0 GO TO 45470 35470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45470, 5481, 45470 45470 IF ( IVON01 - 1 ) 25470, 15470, 25470 15470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5481 25470 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5481 CONTINUE IVTNUM = 548 C C **** TEST 548 **** C TEST 548 - INTEGER EXPONIENTIATION, MINUS SIGNS, AND PARENTHESES C USES .LE. TRUE PATH C C IF (ICZERO) 35480, 5480, 35480 5480 CONTINUE IVON01 = 0 IVON02 = 3 IVON03 = 27 IF ( ((-IVON02) ** IVON02 .LE. (-IVON03))) IVON01 = 1 GO TO 45480 35480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45480, 5491, 45480 45480 IF ( IVON01 - 1 ) 25480, 15480, 25480 15480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5491 25480 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5491 CONTINUE IVTNUM = 549 C C **** TEST 549 **** C TEST 549 - TEST THE ORDER OF INTEGER ARITHMETIC OPERATIONS C USES INTEGER EXPONIENTIATION, ADDITION, MULTIPLICATION, C AND PARENTHESES. ALSO USES .EQ. TRUE PATH C SEE SECTION 6.1, ARITHMETIC EXPRESSIONS. C C IF (ICZERO) 35490, 5490, 35490 5490 CONTINUE IVON01 = 0 IVON02 = 3 IF(IVON02 * IVON02/(IVON02+IVON02)**IVON02+IVON02 .EQ. 3) IVON01=1 GO TO 45490 35490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45490, 5501, 45490 45490 IF ( IVON01 - 1 ) 25490, 15490, 25490 15490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5501 25490 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5501 CONTINUE IVTNUM = 550 C C **** TEST 550 **** C TEST 550 - COMBINATION OF LOGICAL .NOT. AND .AND. C .NOT. (LP) .AND. .NOT. (LP) C TRUE PATH C C IF (ICZERO) 35500, 5500, 35500 5500 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. IF ( .NOT. .FALSE. .AND. .NOT. LCTNT1 ) IVON01 = 1 GO TO 45500 35500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45500, 5511, 45500 45500 IF ( IVON01 - 1 ) 25500, 15500, 25500 15500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5511 25500 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5511 CONTINUE IVTNUM = 551 C C **** TEST 551 **** C TEST 551 - COMBINATION OF LOGICAL .OR. AND .NOT. C .NOT. (LP) .OR. .NOT. (LP) C TRUE PATH C C IF (ICZERO) 35510, 5510, 35510 5510 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( .NOT. LCTNT1 .OR. .NOT. LCTNT2 ) IVON01 = 1 GO TO 45510 35510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45510, 5521, 45510 45510 IF ( IVON01 - 1 ) 25510, 15510, 25510 15510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5521 25510 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5521 CONTINUE IVTNUM = 552 C C **** TEST 552 **** C TEST 552 - COMBINATION OF LOGICAL .AND. .OR. AND .NOT. C .NOT. ( (LE) .OR. (LT) ) .AND. .NOT. ( (LT) .AND. (LF) ) C .NOT. IS APPLIED TO A LOGICAL EXPRESSION INCLOSED IN PARENS C FALSE PATH C IF (ICZERO) 35520, 5520, 35520 5520 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF(.NOT.(LCTNT1.OR.LCTNT2).AND..NOT.(LCTNT1.AND.LCTNT2))IVON01 = 0 GO TO 45520 35520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45520, 5531, 45520 45520 IF ( IVON01 - 1 ) 25520, 15520, 25520 15520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5531 25520 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5531 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 FM019) END *END-OF,FM019 FM020.f 480975986 170 2 100666 14162 ` *HEADER,FORTR,FM020 *FILES1,FORTR,FM020,X C C COMMENT SECTION. C C FM020 C C THIS ROUTINE TESTS THE FORTRAN IN-LINE STATEMENT FUNCTION C OF TYPE LOGICAL AND INTEGER. INTEGER CONSTANTS, LOGICAL CONSTANTS C INTEGER VARIABLES, LOGICAL VARIABLES, INTEGER ARITHMETIC EXPRESS- C IONS ARE ALL USED TO TEST THE STATEMENT FUNCTION DEFINITION AND C THE VALUE RETURNED FOR THE STATEMENT FUNCTION WHEN IT IS USED C IN THE MAIN BODY OF THE PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8.4.1, INTEGER, REAL, DOUBLE PRECISION, COMPLEX, AND C LOGICAL TYPE-STATEMENTS C SECTION 15.3.2, INTRINSIC FUNCTION REFERENCES C SECTION 15.4, STATEMENT FUNCTIONS C SECTION 15.4.1, FORMS OF A FUNCTION STATEMENT C SECTION 15.4.2, REFERENCING A STATEMENT FUNCTION C SECTION 15.5.2, EXTERNAL FUNCTION REFERENCES C LOGICAL LFTN01, LDTN01 LOGICAL LFTN02, LDTN02 LOGICAL LFTN03, LDTN03, LCTN03 LOGICAL LFTN04, LDTN04, LCTN04 DIMENSION IADN11(2) C C..... TEST 553 IFON01(IDON01) = 32767 C C..... TEST 554 LFTN01(LDTN01) = .TRUE. C C..... TEST 555 IFON02 ( IDON02 ) = IDON02 C C..... TEST 556 LFTN02( LDTN02 ) = LDTN02 C C..... TEST 557 IFON03 (IDON03 )= IDON03 C C..... TEST 558 LFTN03(LDTN03) = LDTN03 C C..... TEST 559 LFTN04(LDTN04) = .NOT. LDTN04 C C..... TEST 560 IFON04(IDON04) = IDON04 ** 2 C C..... TEST 561 IFON05(IDON05, IDON06) = IDON05 + IDON06 C C..... TEST 562 IFON06(IDON07, IDON08) = SQRT(FLOAT(IDON07**2)+FLOAT(IDON08**2)) C C..... TEST 563 IFON07(IDON09) = IDON09 ** 2 IFON08(I,J)=SQRT(FLOAT(IFON07(I))+FLOAT(IFON07(J))) C C..... TEST 564 IFON09(K,L) = K / L + K ** L - K * L C 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) IVTNUM = 553 C C **** TEST 553 **** C TEST 553 - THE VALUE OF THE INTEGER FUNCTION IS SET TO A C CONSTANT OF 32767 REGARDLESS OF THE VALUE OF THE ARGUEMENT C SUPPLIED TO THE DUMMY ARGUEMENT. TEST OF POSITIVE INTEGER C CONSTANTS FOR A STATEMENT FUNCTION. C C IF (ICZERO) 35530, 5530, 35530 5530 CONTINUE IVCOMP = IFON01(3) GO TO 45530 35530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45530, 5541, 45530 45530 IF ( IVCOMP - 32767 ) 25530, 15530, 25530 15530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5541 25530 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5541 CONTINUE IVTNUM = 554 C C **** TEST 554 **** C TEST 554 - TEST OF THE STATEMENT FUNCTION OF TYPE LOGICAL C SET TO THE LOGICAL CONSTANT .TRUE. REGARDLESS OF THE C ARGUEMENT SUPPLIED TO THE DUMMY ARGUEMENT. C A LOGICAL IF STATEMENT IS USED IN CONJUNCTION WITH THE LOGICAL C STATEMENT FUNCTION. THE TRUE PATH IS TESTED. C C IF (ICZERO) 35540, 5540, 35540 5540 CONTINUE IVON01 = 0 IF ( LFTN01(.FALSE.) ) IVON01 = 1 GO TO 45540 35540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45540, 5551, 45540 45540 IF ( IVON01 - 1 ) 25540, 15540, 25540 15540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5551 25540 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5551 CONTINUE IVTNUM = 555 C C **** TEST 555 **** C TEST 555 - THE INTEGER STATEMENT FUNCTION IS SET TO THE VALUE C OF THE ARGEUMENT SUPPLIED. C C IF (ICZERO) 35550, 5550, 35550 5550 CONTINUE IVCOMP = IFON02 ( 32767 ) GO TO 45550 35550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45550, 5561, 45550 45550 IF ( IVCOMP - 32767 ) 25550, 15550, 25550 15550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5561 25550 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5561 CONTINUE IVTNUM = 556 C C **** TEST 556 **** C TEST 556 - TEST OF A LOGICAL STATEMENT FUNCTION SET TO THE C VALUE OF THE ARGUEMENT SUPPLIED. THE FALSE PATH OF A LOGICAL C IF STATEMENT IS USED IN CONJUNCTION WITH THE LOGICAL C STATEMENT FUNCTION. C C IF (ICZERO) 35560, 5560, 35560 5560 CONTINUE IVON01 = 1 IF ( LFTN02(.FALSE.) ) IVON01 = 0 GO TO 45560 35560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45560, 5571, 45560 45560 IF ( IVON01 - 1 ) 25560, 15560, 25560 15560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5571 25560 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5571 CONTINUE IVTNUM = 557 C C **** TEST 557 **** C TEST 557 - THE VALUE OF AN INTEGER FUNCTION IS SET EQUAL TO C VALUE OF THE ARGUEMENT SUPPLIED. THIS VALUE IS AN INTEGER C VARIABLE SET TO 32767. C C IF (ICZERO) 35570, 5570, 35570 5570 CONTINUE ICON01 = 32767 IVCOMP = IFON03 ( ICON01 ) GO TO 45570 35570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45570, 5581, 45570 45570 IF ( IVCOMP - 32767 ) 25570, 15570, 25570 15570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5581 25570 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5581 CONTINUE IVTNUM = 558 C C **** TEST 558 **** C TEST 558 - A LOGICAL STATEMENT FUNCTION IS SET EQUAL TO THE C VALUE OF THE ARGUEMENT SUPPLIED. THIS VALUE IS A LOGICAL C VARIABLE SET TO .TRUE. THE TRUE PATH OF A LOGICAL IF C STATEMENT IS USED IN CONJUNCTION WITH THE LOGICAL STATEMENT C FUNCTION. C C IF (ICZERO) 35580, 5580, 35580 5580 CONTINUE IVON01 = 0 LCTN03 = .TRUE. IF ( LFTN03(LCTN03) ) IVON01 = 1 GO TO 45580 35580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45580, 5591, 45580 45580 IF ( IVON01 - 1 ) 25580, 15580, 25580 15580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5591 25580 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5591 CONTINUE IVTNUM = 559 C C **** TEST 559 **** C TEST 559 - LIKE TEST 558 ONLY THE LOGICAL .NOT. IS USED C IN THE LOGICAL STATEMENT FUNCTION DEFINITION THE FALSE PATH C OF A LOGICAL IF STATEMENT IS USED IN CONJUNCTION WITH THE C LOGICAL STATEMENT FUNCTION. C C IF (ICZERO) 35590, 5590, 35590 5590 CONTINUE IVON01 = 1 LCTN04 = .TRUE. IF ( LFTN04(LCTN04) ) IVON01 = 0 GO TO 45590 35590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45590, 5601, 45590 45590 IF ( IVON01 - 1 ) 25590, 15590, 25590 15590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5601 25590 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5601 CONTINUE IVTNUM = 560 C C **** TEST 560 **** C TEST 560 - INTEGER EXPONIENTIATION USED IN AN INTEGER C STATEMENT FUNCTION. C C IF (ICZERO) 35600, 5600, 35600 5600 CONTINUE ICON04 = 3 IVCOMP = IFON04(ICON04) GO TO 45600 35600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45600, 5611, 45600 45600 IF ( IVCOMP - 9 ) 25600, 15600, 25600 15600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5611 25600 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5611 CONTINUE IVTNUM = 561 C C **** TEST 561 **** C TEST 561 - TEST OF INTEGER ADDITION USING TWO (2) DUMMY C ARGUEMENTS. C C IF (ICZERO) 35610, 5610, 35610 5610 CONTINUE ICON05 = 9 ICON06 = 16 IVCOMP = IFON05(ICON05, ICON06) GO TO 45610 35610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45610, 5621, 45610 45610 IF ( IVCOMP - 25 ) 25610, 15610, 25610 15610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5621 25610 IVFAIL = IVFAIL + 1 IVCORR = 25 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5621 CONTINUE IVTNUM = 562 C C **** TEST 562 **** C TEST 562 - THIS TEST IS THE SOLUTION OF A RIGHT TRIANGLE C USING INTEGER STATEMENT FUNCTIONS WHICH REFERENCE THE C INTRINSIC FUNCTIONS SQRT AND FLOAT. THIS IS A 3-4-5 C RIGHT TRIANGLE. C C IF (ICZERO) 35620, 5620, 35620 5620 CONTINUE ICON07 = 3 ICON08 = 4 IVCOMP = IFON06(ICON07, ICON08) GO TO 45620 35620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45620, 5631, 45620 45620 IF ( IVCOMP - 5 ) 5622, 15620, 5622 5622 IF ( IVCOMP - 4 ) 25620, 15620, 25620 15620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5631 25620 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5631 CONTINUE IVTNUM = 563 C C **** TEST 563 **** C TEST 563 - SOLUTION OF A 3-4-5 RIGHT TRIANGLE LIKE TEST 562 C EXCEPT THAT BOTH INTRINSIC AND PREVIOUSLY DEFINED STATEMENT C FUNCTIONS ARE USED. C C IF (ICZERO) 35630, 5630, 35630 5630 CONTINUE ICON09 = 3 ICON10 = 4 IVCOMP = IFON08(ICON09, ICON10) GO TO 45630 35630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45630, 5641, 45630 45630 IF ( IVCOMP - 5 ) 5632, 15630, 5632 5632 IF ( IVCOMP - 4 ) 25630, 15630, 25630 15630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5641 25630 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5641 CONTINUE IVTNUM = 564 C C **** TEST 564 **** C TEST 564 - USE OF ARRAY ELEMENTS IN AN INTEGER STATEMENT C FUNCTION WHICH USES THE OPERATIONS OF + - * / . C C IF (ICZERO) 35640, 5640, 35640 5640 CONTINUE IADN11(1) = 2 IADN11(2) = 2 IVCOMP = IFON09( IADN11(1), IADN11(2) ) GO TO 45640 35640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45640, 5651, 45640 45640 IF ( IVCOMP - 1 ) 25640, 15640, 25640 15640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5651 25640 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5651 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 FM020) END *END-OF,FM020 FM021.f 480975990 170 2 100666 28031 ` *HEADER,FORTR,FM021 *FILES1,FORTR,FM021,X C C COMMENT SECTION. C C FM021 C C THIS ROUTINE TESTS THE FORTRAN DATA INITIALIZATION C STATEMENT. INTEGER, REAL, AND LOGICAL DATA TYPES ARE TESTED C USING UNSIGNED CONSTANTS, SIGNED CONSTANTS, AND LOGICAL C CONSTANTS.. INTEGER, REAL, LOGICAL, AND MIXED TYPE ARRAYS C ARE ALSO TESTED. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.3, DATA TYPE PREPARATION C SECTION 4.4.3, REAL CONSTANT C SECTION 9, DATA STATEMENT C INTEGER RATN11(3) LOGICAL LCTN01, LCTN02, LATN11(3), LADN11 REAL IATN11(3) DIMENSION IADN11(3), RADN11(4), LADN11(6), RADN13(4), IADN12(4) DIMENSION IADN13(4) C DATA ICON01/0/ DATA ICON02/3/ DATA ICON03/76/ DATA ICON04/587/ DATA ICON05/9999/ DATA ICON06/32767/ DATA ICON07/-0/ DATA ICON08/-32766/ DATA ICON09/00003/ DATA ICON10/ 3 2 7 6 7 / DATA LCTN01/.TRUE./ DATA LCTN02/.FALSE./ DATA RCON01/0./ DATA RCON02 /.0/ DATA RCON03/0.0/ DATA RCON04/32767./ DATA RCON05/-32766./ DATA RCON06/-000587./ DATA RCON07/99.99/ DATA RCON08/ -03. 2 7 6 6/ DATA IADN11(1)/3/, IADN11(3)/-587/, IADN11(2)/32767/ DATA IADN12/4*9999/ DATA IADN13/0,2*-32766,-587/ DATA LADN11/.TRUE., .FALSE., 2*.TRUE., 2*.FALSE./ DATA RADN11/32767., -32.766, 2*587./ DATA LATN11/.TRUE., 2*.FALSE./, IATN11/2*32767., -32766./ DATA RATN11/3*-32766/ DATA RADN13/32.767E03, -3.2766E-01, .587E+03, 9E1/ 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) IVTNUM = 565 C C **** TEST 565 **** C TEST 565 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT ZERO. C C IF (ICZERO) 35650, 5650, 35650 5650 CONTINUE GO TO 45650 35650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45650, 5661, 45650 45650 IF ( ICON01 - 0 ) 25650, 15650, 25650 15650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5661 25650 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5661 CONTINUE IVTNUM = 566 C C **** TEST 566 **** C TEST 566 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT 3. C C IF (ICZERO) 35660, 5660, 35660 5660 CONTINUE GO TO 45660 35660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45660, 5671, 45660 45660 IF ( ICON02 - 3 ) 25660, 15660, 25660 15660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5671 25660 IVFAIL = IVFAIL + 1 IVCOMP = ICON02 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5671 CONTINUE IVTNUM = 567 C C **** TEST 567 **** C TEST 567 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT 76. C C IF (ICZERO) 35670, 5670, 35670 5670 CONTINUE GO TO 45670 35670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45670, 5681, 45670 45670 IF ( ICON03 - 76 ) 25670, 15670, 25670 15670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5681 25670 IVFAIL = IVFAIL + 1 IVCOMP = ICON03 IVCORR = 76 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5681 CONTINUE IVTNUM = 568 C C **** TEST 568 **** C TEST 568 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT 587. C C IF (ICZERO) 35680, 5680, 35680 5680 CONTINUE GO TO 45680 35680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45680, 5691, 45680 45680 IF ( ICON04 - 587 ) 25680, 15680, 25680 15680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5691 25680 IVFAIL = IVFAIL + 1 IVCOMP = ICON04 IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5691 CONTINUE IVTNUM = 569 C C **** TEST 569 **** C TEST 569 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT 9999. C C IF (ICZERO) 35690, 5690, 35690 5690 CONTINUE GO TO 45690 35690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45690, 5701, 45690 45690 IF ( ICON05 - 9999 ) 25690, 15690, 25690 15690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5701 25690 IVFAIL = IVFAIL + 1 IVCOMP = ICON05 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5701 CONTINUE IVTNUM = 570 C C **** TEST 570 **** C TEST 570 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT 32767. C C IF (ICZERO) 35700, 5700, 35700 5700 CONTINUE GO TO 45700 35700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45700, 5711, 45700 45700 IF ( ICON06 - 32767 ) 25700, 15700, 25700 15700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5711 25700 IVFAIL = IVFAIL + 1 IVCOMP = ICON06 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5711 CONTINUE IVTNUM = 571 C C **** TEST 571 **** C TEST 571 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT -0. NOTE THAT SIGNED ZERO AND UNSIGNED ZERO C SHOULD BE EQUAL FOR ANY INTEGER OPERATION. C C IF (ICZERO) 35710, 5710, 35710 5710 CONTINUE GO TO 45710 35710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45710, 5721, 45710 45710 IF ( ICON07 - 0 ) 25710, 15710, 25710 15710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5721 25710 IVFAIL = IVFAIL + 1 IVCOMP = ICON07 IVCORR = -0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5721 CONTINUE IVTNUM = 572 C C **** TEST 572 **** C TEST 572 - TEST OF AN INTEGER VARIABLE SET TO THE INTEGER C CONSTANT (SIGNED) -32766. C C IF (ICZERO) 35720, 5720, 35720 5720 CONTINUE GO TO 45720 35720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45720, 5731, 45720 45720 IF ( ICON08 + 32766 ) 25720, 15720, 25720 15720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5731 25720 IVFAIL = IVFAIL + 1 IVCOMP = ICON08 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5731 CONTINUE IVTNUM = 573 C C **** TEST 573 **** C TEST 573 - TEST THE EFFECT OF LEADING ZERO ON AN INTEGER C CONSTANT 00003. C C IF (ICZERO) 35730, 5730, 35730 5730 CONTINUE GO TO 45730 35730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45730, 5741, 45730 45730 IF ( ICON09 - 3 ) 25730, 15730, 25730 15730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5741 25730 IVFAIL = IVFAIL + 1 IVCOMP = ICON09 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5741 CONTINUE IVTNUM = 574 C C **** TEST 574 **** C TEST 574 - TEST OF BLANKS IMBEDDED IN AN INTEGER CONSTANT C WHICH WAS / 3 2 7 6 7/ IN THE DATA INITIALIZATION STATEMENT. C C IF (ICZERO) 35740, 5740, 35740 5740 CONTINUE GO TO 45740 35740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45740, 5751, 45740 45740 IF ( ICON10 - 32767 ) 25740, 15740, 25740 15740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5751 25740 IVFAIL = IVFAIL + 1 IVCOMP = ICON10 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5751 CONTINUE IVTNUM = 575 C C **** TEST 575 **** C TEST 575 - TEST OF A LOGICAL VARIABLE SET TO THE LOGICAL C CONSTANT .TRUE. C TRUE PATH OF A LOGICAL IF STATEMENT IS USED IN THE TEST. C C IF (ICZERO) 35750, 5750, 35750 5750 CONTINUE IVON01 = 0 IF ( LCTN01 ) IVON01 = 1 GO TO 45750 35750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45750, 5761, 45750 45750 IF ( IVON01 - 1 ) 25750, 15750, 25750 15750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5761 25750 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5761 CONTINUE IVTNUM = 576 C C **** TEST 576 **** C TEST 576 - TEST OF A LOGICAL VARIABLE SET TO THE LOGICAL C CONSTANT .FALSE. THE FALSE PATH OF A LOGICAL IF STATEMENT C IS ALSO USED IN THE TEST. C C IF (ICZERO) 35760, 5760, 35760 5760 CONTINUE IVON01 = 1 IF ( LCTN02 ) IVON01 = 0 GO TO 45760 35760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45760, 5771, 45760 45760 IF ( IVON01 - 1 ) 25760, 15760, 25760 15760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5771 25760 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5771 CONTINUE IVTNUM = 577 C C **** TEST 577 **** C TEST 577 - REAL VARIABLE SET TO 0. C C IF (ICZERO) 35770, 5770, 35770 5770 CONTINUE GO TO 45770 35770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45770, 5781, 45770 45770 IF ( RCON01 - 0. ) 25770, 15770, 25770 15770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5781 25770 IVFAIL = IVFAIL + 1 IVCOMP = RCON01 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5781 CONTINUE IVTNUM = 578 C C **** TEST 578 **** C TEST 578 - REAL VARIABLE SET TO .0 C C IF (ICZERO) 35780, 5780, 35780 5780 CONTINUE GO TO 45780 35780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45780, 5791, 45780 45780 IF ( RCON02 - .0 ) 25780, 15780, 25780 15780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5791 25780 IVFAIL = IVFAIL + 1 IVCOMP = RCON02 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5791 CONTINUE IVTNUM = 579 C C **** TEST 579 **** C TEST 579 - REAL VARIABLE SET TO 0.0 C C IF (ICZERO) 35790, 5790, 35790 5790 CONTINUE GO TO 45790 35790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45790, 5801, 45790 45790 IF ( RCON03 - 0.0 ) 25790, 15790, 25790 15790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5801 25790 IVFAIL = IVFAIL + 1 IVCOMP = RCON03 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5801 CONTINUE IVTNUM = 580 C C **** TEST 580 **** C TEST 580 - REAL VARIABLE SET TO 32767. C C IF (ICZERO) 35800, 5800, 35800 5800 CONTINUE GO TO 45800 35800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45800, 5811, 45800 45800 IF ( RCON04 - 32767. ) 25800, 15800, 25800 15800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5811 25800 IVFAIL = IVFAIL + 1 IVCOMP = RCON04 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5811 CONTINUE IVTNUM = 581 C C **** TEST 581 **** C TEST 581 - REAL VARIABLE SET TO -32766. C C IF (ICZERO) 35810, 5810, 35810 5810 CONTINUE GO TO 45810 35810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45810, 5821, 45810 45810 IF ( RCON05 + 32766 ) 25810, 15810, 25810 15810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5821 25810 IVFAIL = IVFAIL + 1 IVCOMP = RCON05 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5821 CONTINUE IVTNUM = 582 C C **** TEST 582 **** C TEST 582 - REAL VARIABLE SET TO -000587. TEST OF LEADING SIGN C AND LEADING ZEROS ON A REAL CONSTANT. C C IF (ICZERO) 35820, 5820, 35820 5820 CONTINUE GO TO 45820 35820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45820, 5831, 45820 45820 IF ( RCON06 + 587. ) 25820, 15820, 25820 15820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5831 25820 IVFAIL = IVFAIL + 1 IVCOMP = RCON06 IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5831 CONTINUE IVTNUM = 583 C C **** TEST 583 **** C TEST 583 - REAL VARIABLE SET TO 99.99 C C IF (ICZERO) 35830, 5830, 35830 5830 CONTINUE GO TO 45830 35830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45830, 5841, 45830 45830 IF ( RCON07 - 99.99 ) 25830, 15830, 25830 15830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5841 25830 IVFAIL = IVFAIL + 1 IVCOMP = RCON07 IVCORR = 99 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5841 CONTINUE IVTNUM = 584 C C **** TEST 584 **** C TEST 584 - REAL VARIABLE SET TO /-03. 2 7 6 6/ TO TEST C THE EFFECT OF BLANKS IMBEDDED IN A REAL CONSTANT. C C IF (ICZERO) 35840, 5840, 35840 5840 CONTINUE GO TO 45840 35840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45840, 5851, 45840 45840 IF ( RCON08 + 3.2766 ) 25840, 15840, 25840 15840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5851 25840 IVFAIL = IVFAIL + 1 IVCOMP = RCON08 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5851 CONTINUE IVTNUM = 585 C C **** TEST 585 **** C TEST 585 - INTEGER ARRAY ELEMENT SET TO 3 C C IF (ICZERO) 35850, 5850, 35850 5850 CONTINUE GO TO 45850 35850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45850, 5861, 45850 45850 IF ( IADN11(1) - 3 ) 25850, 15850, 25850 15850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5861 25850 IVFAIL = IVFAIL + 1 IVCOMP = IADN11(1) IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5861 CONTINUE IVTNUM = 586 C C **** TEST 586 **** C TEST 586 - INTEGER ARRAY ELEMENT SET TO 32767 C C IF (ICZERO) 35860, 5860, 35860 5860 CONTINUE GO TO 45860 35860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45860, 5871, 45860 45860 IF ( IADN11(2) - 32767 ) 25860, 15860, 25860 15860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5871 25860 IVFAIL = IVFAIL + 1 IVCOMP = IADN11(2) IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5871 CONTINUE IVTNUM = 587 C C **** TEST 587 **** C TEST 587 - INTEGER ARRAY ELEMENT SET TO -587 C C IF (ICZERO) 35870, 5870, 35870 5870 CONTINUE GO TO 45870 35870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45870, 5881, 45870 45870 IF ( IADN11(3) + 587 ) 25870, 15870, 25870 15870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5881 25870 IVFAIL = IVFAIL + 1 IVCOMP = IADN11(3) IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5881 CONTINUE IVTNUM = 588 C C **** TEST 588 **** C TEST 588 - TEST OF THE REPEAT FIELD /4*999/ IN A DATA STATE. C C IF (ICZERO) 35880, 5880, 35880 5880 CONTINUE GO TO 45880 35880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45880, 5891, 45880 45880 IF ( IADN12(3) - 9999 ) 25880, 15880, 25880 15880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5891 25880 IVFAIL = IVFAIL + 1 IVCOMP = IADN12(3) IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5891 CONTINUE IVTNUM = 589 C C **** TEST 589 **** C TEST 589 - TEST OF SETTING THE WHOLE INTEGER ARRAY ELEMENTS C IN ONE DATA INITIALIZATION STATEMENT. THE FIRST ELEMENT C IS SET TO 0 C C IF (ICZERO) 35890, 5890, 35890 5890 CONTINUE GO TO 45890 35890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45890, 5901, 45890 45890 IF ( IADN13(1) - 0 ) 25890, 15890, 25890 15890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5901 25890 IVFAIL = IVFAIL + 1 IVCOMP = IADN13(1) IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5901 CONTINUE IVTNUM = 590 C C **** TEST 590 **** C TEST 590 - SEE TEST 589. THE SECOND ELEMENT WAS SET TO -32766 C C IF (ICZERO) 35900, 5900, 35900 5900 CONTINUE GO TO 45900 35900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45900, 5911, 45900 45900 IF ( IADN13(2) + 32766 ) 25900, 15900, 25900 15900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5911 25900 IVFAIL = IVFAIL + 1 IVCOMP = IADN13(2) IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5911 CONTINUE IVTNUM = 591 C C **** TEST 591 **** C TEST 591 - SEE TEST 589. THE THIRD ELEMENT WAS SET TO -32766 C C IF (ICZERO) 35910, 5910, 35910 5910 CONTINUE GO TO 45910 35910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45910, 5921, 45910 45910 IF ( IADN13(3) + 32766 ) 25910, 15910, 25910 15910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5921 25910 IVFAIL = IVFAIL + 1 IVCOMP = IADN13(3) IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5921 CONTINUE IVTNUM = 592 C C **** TEST 592 **** C TEST 592 - SEE TEST 589. THE FOURTH ELEMENT WAS SET TO -587 C C IF (ICZERO) 35920, 5920, 35920 5920 CONTINUE GO TO 45920 35920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45920, 5931, 45920 45920 IF ( IADN13(4) + 587 ) 25920, 15920, 25920 15920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5931 25920 IVFAIL = IVFAIL + 1 IVCOMP = IADN13(4) IVCORR = -587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5931 CONTINUE IVTNUM = 593 C C **** TEST 593 **** C TEST 593 - TEST OF SETTING THE WHOLE LOGICAL ARRAY IN ONE C DATA INITIALIZATION STATEMENT. THE FIRST ELEMENT IS .TRUE. C THE SECOND AND THIRD ELEMENTS ARE .FALSE. C THE FALSE PATH OF A LOGICAL IF STATEMENT IS USED TESTING 2. C C IF (ICZERO) 35930, 5930, 35930 5930 CONTINUE IVON01 = 1 IF ( LADN11(2) ) IVON01 = 0 GO TO 45930 35930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45930, 5941, 45930 45930 IF ( IVON01 - 1 ) 25930, 15930, 25930 15930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5941 25930 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5941 CONTINUE IVTNUM = 594 C C **** TEST 594 **** C TEST 594 - SEE TEST 593. THE FOURTH ELEMENT IS TESTED C WITH THE TRUE PATH OF THE LOGICAL IF STATEMENT. C C IF (ICZERO) 35940, 5940, 35940 5940 CONTINUE IVON01 = 0 IF ( LADN11(4) ) IVON01 = 1 GO TO 45940 35940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45940, 5951, 45940 45940 IF ( IVON01 - 1 ) 25940, 15940, 25940 15940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5951 25940 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5951 CONTINUE IVTNUM = 595 C C **** TEST 595 **** C TEST 595 - A WHOLE REAL ARRAY IS SET IN ONE DATA INITIALIZATION C STATEMENT. THE SECOND ELEMENT IS -32.766 C C IF (ICZERO) 35950, 5950, 35950 5950 CONTINUE GO TO 45950 35950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45950, 5961, 45950 45950 IF ( RADN11(2) + 32.766 ) 25950, 15950, 25950 15950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5961 25950 IVFAIL = IVFAIL + 1 IVCOMP = RADN11(2) IVCORR = -32 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5961 CONTINUE IVTNUM = 596 C C **** TEST 596 **** C TEST 596 - SEE TEST 595. THE FOURTH ELEMENT IS SET TO 587 C BY A REPEAT FIELD. C C IF (ICZERO) 35960, 5960, 35960 5960 CONTINUE GO TO 45960 35960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45960, 5971, 45960 45960 IF ( RADN11(4) - 587 ) 25960, 15960, 25960 15960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5971 25960 IVFAIL = IVFAIL + 1 IVCOMP = RADN11(4) IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5971 CONTINUE IVTNUM = 597 C C **** TEST 597 **** C TEST 597 - TEST OF MIXED ARRAY ELEMENT TYPES IN A SINGLE DATA C INITIALIZATION STATEMENT. THE TYPE LOGICAL STATEMENT CONTAINS C THE ARRAY DECLARATIONS. THE FALSE PATH OF A LOGICAL C IF STATEMENT TESTS THE LOGICAL RESULTS. C C IF (ICZERO) 35970, 5970, 35970 5970 CONTINUE IVON01 = 1 IF ( LATN11(2) ) IVON01 = 0 GO TO 45970 35970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45970, 5981, 45970 45970 IF ( IVON01 - 1 ) 25970, 15970, 25970 15970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5981 25970 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5981 CONTINUE IVTNUM = 598 C C **** TEST 598 **** C TEST 598 - TYPE OF THE DATA WAS SET EXPLICITLY REAL IN THE C DECLARATIVE FOR THE ARRAY. DATA SHOULD BE SET TO 32767. C C IF (ICZERO) 35980, 5980, 35980 5980 CONTINUE GO TO 45980 35980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45980, 5991, 45980 45980 IF ( IATN11(2) - 32767. ) 25980, 15980, 25980 15980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5991 25980 IVFAIL = IVFAIL + 1 IVCOMP = IATN11(2) IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5991 CONTINUE IVTNUM = 599 C C **** TEST 599 **** C TEST 599 - TYPE OF THE DATA WAS SET EXPLICITLY INTEGER IN THE C DECLARATIVE FOR THE ARRAY. DATA SHOULD BE SET TO -32766 C C IF (ICZERO) 35990, 5990, 35990 5990 CONTINUE GO TO 45990 35990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45990, 6001, 45990 45990 IF ( RATN11(2) + 32766 ) 25990, 15990, 25990 15990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6001 25990 IVFAIL = IVFAIL + 1 IVCOMP = RATN11(2) IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6001 CONTINUE IVTNUM = 600 C C **** TEST 600 **** C TEST 600 - TEST OF REAL DECIMAL CONSTANTS USING E-NOTATION. C SEE SECTION 4.4.2. THE VALUE OF THE ELEMENT SHOULD C BE SET TO 32767. C C IF (ICZERO) 36000, 6000, 36000 6000 CONTINUE GO TO 46000 36000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46000, 6011, 46000 46000 IF ( RADN13(1) - 32767. ) 26000, 16000, 26000 16000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6011 26000 IVFAIL = IVFAIL + 1 IVCOMP = RADN13(1) IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6011 CONTINUE IVTNUM = 601 C C **** TEST 601 **** C TEST 601 - LIKE TEST 600. REAL DECIMAL CONSTANT VALUE -.32766 C C IF (ICZERO) 36010, 6010, 36010 6010 CONTINUE GO TO 46010 36010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46010, 6021, 46010 46010 IF ( RADN13(2) + .32766 ) 26010, 16010, 26010 16010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6021 26010 IVFAIL = IVFAIL + 1 IVCOMP = RADN13(2) IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6021 CONTINUE IVTNUM = 602 C C **** TEST 602 **** C TEST 602 - LIKE TEST 600. REAL DECIMAL CONSTANT VALUE 587. C C IF (ICZERO) 36020, 6020, 36020 6020 CONTINUE GO TO 46020 36020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46020, 6031, 46020 46020 IF ( RADN13(3) - 587 ) 26020, 16020, 26020 16020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6031 26020 IVFAIL = IVFAIL + 1 IVCOMP = RADN13(3) IVCORR = 587 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6031 CONTINUE IVTNUM = 603 C C **** TEST 603 **** C TEST 603 - LIKE TEST 600. REAL DECIMAL CONSTANT VALUE 90. C C IF (ICZERO) 36030, 6030, 36030 6030 CONTINUE GO TO 46030 36030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46030, 6041, 46030 46030 IF ( RADN13(4) - 90. ) 26030, 16030, 26030 16030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6041 26030 IVFAIL = IVFAIL + 1 IVCOMP = RADN13(4) IVCORR = 90 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6041 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 FM021) END *END-OF,FM021 FM022.f 480975993 170 2 100666 24137 ` *HEADER,FORTR,FM022 *FILES1,FORTR,FM022,X C COMMENT SECTION. C C FM022 C C THIS ROUTINE TESTS ARRAYS WITH FIXED DIMENSION AND SIZE LIMITS C SET EITHER IN A BLANK COMMON OR DIMENSION STATEMENT. THE VALUES C OF THE ARRAY ELEMENTS ARE SET IN VARIOUS WAYS SUCH AS SIMPLE C ASSIGNMENT STATEMENTS, SET TO THE VALUES OF OTHER ARRAY ELEMENTS C (EITHER POSITIVE OR NEGATIVE), SET BY INTEGER TO REAL OR REAL TO C INTEGER CONVERSION, SET BY ARITHMETIC EXPRESSIONS, OR SET BY C USE OF THE EQUIVALENCE STATEMENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.2, EQUIVALENCE STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENTS C SECTION 9, DATA STATEMENT C C C COMMON IADN14(5), RADN14(5), LADN13(2) C DIMENSION IADN11(5), RADN11(5), LADN11(2) DIMENSION IADN12(5), RADN12(5), LADN12(2) DIMENSION IADN15(2), RADN15(2) DIMENSION IADN16(4), IADN17(4) C INTEGER RADN13(5) REAL IADN13(5) LOGICAL LADN11, LADN12, LADN13, LCTN01 C EQUIVALENCE (IADN14(1), IADN15(1)), (RADN14(2),RADN15(2)) EQUIVALENCE (LADN13(1),LCTN01), (IADN14(5), ICON02) EQUIVALENCE (RADN14(5), RCON01) EQUIVALENCE ( IADN16(3), IADN17(2) ) C DATA IADN12(1)/3/, RADN12(1)/-512./, IADN13(1)/0.5/, RADN13(1)/-3/ C 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) IVTNUM = 604 C C **** TEST 604 **** C TEST 604 - THIS TESTS A SIMPLE ASSIGNMENT STATEMENT IN SETTING C AN INTEGER ARRAY ELEMENT TO A POSITIVE VALUE OF 32767. C IF (ICZERO) 36040, 6040, 36040 6040 CONTINUE IADN11(5) = 32767 IVCOMP = IADN11(5) GO TO 46040 36040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46040, 6051, 46040 46040 IF ( IVCOMP - 32767 ) 26040, 16040, 26040 16040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6051 26040 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6051 CONTINUE IVTNUM = 605 C C **** TEST 605 **** C TEST 605 - TEST OF A SIMPLE ASSIGN WITH A NEGATIVE VALUE -32766 C IF (ICZERO) 36050, 6050, 36050 6050 CONTINUE IADN11(1) = -32766 IVCOMP = IADN11(1) GO TO 46050 36050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46050, 6061, 46050 46050 IF ( IVCOMP + 32766 ) 26050, 16050, 26050 16050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6061 26050 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6061 CONTINUE IVTNUM = 606 C C **** TEST 606 **** C TEST 606 - TEST OF UNSIGNED ZERO SET TO AN ARRAY ELEMENT C BY A SIMPLE ASSIGNMENT STATEMENT. C IF (ICZERO) 36060, 6060, 36060 6060 CONTINUE IADN11(3) = 0 IVCOMP = IADN11(3) GO TO 46060 36060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46060, 6071, 46060 46060 IF ( IVCOMP - 0 ) 26060, 16060, 26060 16060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6071 26060 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6071 CONTINUE IVTNUM = 607 C C **** TEST 607 **** C TEST 607 - TEST OF A NEGATIVELY SIGNED ZERO COMPARED TO A C ZERO UNSIGNED BOTH VALUES SET AS INTEGER ARRAY ELEMENTS. C IF (ICZERO) 36070, 6070, 36070 6070 CONTINUE IADN11(2) = -0 IADN11(3) = 0 ICON01 = 0 IF ( IADN11(2) .EQ. IADN11(3) ) ICON01 = 1 GO TO 46070 36070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46070, 6081, 46070 46070 IF ( ICON01 - 1 ) 26070, 16070, 26070 16070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6081 26070 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6081 CONTINUE IVTNUM = 608 C C **** TEST 608 **** C TEST 608 - TEST OF SETTING ONE INTEGER ARRAY ELEMENT EQUAL TO C THE VALUE OF ANOTHER INTEGER ARRAY ELEMENT. THE VALUE IS 32767. C IF (ICZERO) 36080, 6080, 36080 6080 CONTINUE IADN11(1) = 32767 IADN12(5) = IADN11(1) IVCOMP = IADN12(5) GO TO 46080 36080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46080, 6091, 46080 46080 IF ( IVCOMP - 32767 ) 26080, 16080, 26080 16080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6091 26080 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6091 CONTINUE IVTNUM = 609 C C **** TEST 609 **** C TEST 609 - TEST OF AN ARRAY ELEMENT SET TO ANOTHER ARRAY ELEMENT C WHICH HAD BEEN SET AT COMPILE TIME BY A DATA INITIALIZATION C STATEMENT. AN INTEGER ARRAY IS USED WITH THE VALUE 3. C IF (ICZERO) 36090, 6090, 36090 6090 CONTINUE IADN11(4) = IADN12(1) IVCOMP = IADN11(4) GO TO 46090 36090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46090, 6101, 46090 46090 IF ( IVCOMP - 3 ) 26090, 16090, 26090 16090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6101 26090 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6101 CONTINUE IVTNUM = 610 C C **** TEST 610 **** C TEST 610 - TEST OF SETTING A REAL ARRAY ELEMENT TO A POSITIVE C VALUE IN A SIMPLE ASSIGNMENT STATEMENT. VALUE IS 32767. C IF (ICZERO) 36100, 6100, 36100 6100 CONTINUE RADN11(5) = 32767. IVCOMP = RADN11(5) GO TO 46100 36100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46100, 6111, 46100 46100 IF ( IVCOMP - 32767 ) 26100, 16100, 26100 16100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6111 26100 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6111 CONTINUE IVTNUM = 611 C C **** TEST 611 **** C TEST 611 - TEST OF SETTING A REAL ARRAY ELEMENT TO A NEGATIVE C VALUE IN A SIMPLE ASSIGNMENT STATEMENT. VALUE IS -32766. C IF (ICZERO) 36110, 6110, 36110 6110 CONTINUE RADN11(1) = -32766. IVCOMP = RADN11(1) GO TO 46110 36110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46110, 6121, 46110 46110 IF ( IVCOMP + 32766 ) 26110, 16110, 26110 16110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6121 26110 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6121 CONTINUE IVTNUM = 612 C C **** TEST 612 **** C TEST 612 - TEST OF SETTING A REAL ARRAY ELEMENT TO UNSIGNED ZERO C IN A SIMPLE ASSIGNMENT STATEMENT. C IF (ICZERO) 36120, 6120, 36120 6120 CONTINUE RADN11(3) = 0. IVCOMP = RADN11(3) GO TO 46120 36120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46120, 6131, 46120 46120 IF ( IVCOMP - 0 ) 26120, 16120, 26120 16120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6131 26120 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6131 CONTINUE IVTNUM = 613 C C **** TEST 613 **** C TEST 613 - TEST OF A NEGATIVELY SIGNED ZERO IN A REAL ARRAY C ELEMENT COMPARED TO A REAL ELEMENT SET TO AN UNSIGNED ZERO. C IF (ICZERO) 36130, 6130, 36130 6130 CONTINUE RADN11(2) = -0.0 RADN11(3) = 0.0 ICON01 = 0 IF ( RADN11(2) .EQ. RADN11(3) ) ICON01 = 1 GO TO 46130 36130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46130, 6141, 46130 46130 IF ( ICON01 - 1 ) 26130, 16130, 26130 16130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6141 26130 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6141 CONTINUE IVTNUM = 614 C C **** TEST 614 **** C TEST 614 - TEST OF SETTING ONE REAL ARRAY ELEMENT EQUAL TO THE C VALUE OF ANOTHER REAL ARRAY ELEMENT. THE VALUE IS 32767. C IF (ICZERO) 36140, 6140, 36140 6140 CONTINUE RADN11(1) = 32767. RADN12(5) = RADN11(1) IVCOMP = RADN12(5) GO TO 46140 36140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46140, 6151, 46140 46140 IF ( IVCOMP - 32767 ) 26140, 16140, 26140 16140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6151 26140 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6151 CONTINUE IVTNUM = 615 C C **** TEST 615 **** C TEST 615 - TEST OF A REAL ARRAY ELEMENT SET TO ANOTHER REAL C ARRAY ELEMENT WHICH HAD BEEN SET AT COMPILE TIME BY A DATA C INITIALIZATION STATEMENT. THE VALUE IS -512. C IF (ICZERO) 36150, 6150, 36150 6150 CONTINUE RADN11(4) = RADN12(1) IVCOMP = RADN11(4) GO TO 46150 36150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46150, 6161, 46150 46150 IF ( IVCOMP + 512 ) 26150, 16150, 26150 16150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6161 26150 IVFAIL = IVFAIL + 1 IVCORR = - 512 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6161 CONTINUE IVTNUM = 616 C C **** TEST 616 **** C TEST 616 - TEST OF SETTING THE VALUE OF AN INTEGER ARRAY ELEMENT C BY AN ARITHMETIC EXPRESSION. C IF (ICZERO) 36160, 6160, 36160 6160 CONTINUE ICON01 = 1 IADN11(3) = ICON01 + 1 IVCOMP = IADN11(3) GO TO 46160 36160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46160, 6171, 46160 46160 IF ( IVCOMP - 2 ) 26160, 16160, 26160 16160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6171 26160 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6171 CONTINUE IVTNUM = 617 C C **** TEST 617 **** C TEST 617 - TEST OF SETTING THE VALUE OF A REAL ARRAY ELEMENT C BY AN ARITHMETIC EXPRESSION. C IF (ICZERO) 36170, 6170, 36170 6170 CONTINUE RCON01 = 1. RADN11(3) = RCON01 + 1. IVCOMP = RADN11(3) GO TO 46170 36170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46170, 6181, 46170 46170 IF ( IVCOMP - 2 ) 26170, 16170, 26170 16170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6181 26170 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6181 CONTINUE IVTNUM = 618 C C **** TEST 618 **** C TEST 618 - TEST OF SETTING THE VALUE OF AN INTEGER ARRAY ELEMENT C TO ANOTHER INTEGER ARRAY ELEMENT AND CHANGING THE SIGN. C IF (ICZERO) 36180, 6180, 36180 6180 CONTINUE IADN11(2) = 32766 IADN11(4) = - IADN11(2) IVCOMP = IADN11(4) GO TO 46180 36180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46180, 6191, 46180 46180 IF ( IVCOMP + 32766 ) 26180, 16180, 26180 16180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6191 26180 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6191 CONTINUE IVTNUM = 619 C C **** TEST 619 **** C TEST 619 - TEST OF SETTING THE VALUE OF A REAL ARRAY ELEMENT C TO THE VALUE OF ANOTHER REAL ARRAY ELEMENT AND CHANGING THE SIGN. C IF (ICZERO) 36190, 6190, 36190 6190 CONTINUE RADN11(2) = 32766. RADN11(4) = - RADN11(2) IVCOMP = RADN11(4) GO TO 46190 36190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46190, 6201, 46190 46190 IF ( IVCOMP + 32766 ) 26190, 16190, 26190 16190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6201 26190 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6201 CONTINUE IVTNUM = 620 C C **** TEST 620 **** C TEST 620 - TEST OF SETTING THE VALUE OF A LOGICAL ARRAY ELEMENT C TO THE VALUE OF ANOTHER LOGICAL ARRAY ELEMENT. C IF (ICZERO) 36200, 6200, 36200 6200 CONTINUE LADN11(1) = .TRUE. LADN12(1) = LADN11(1) ICON01 = 0 IF ( LADN12(1) ) ICON01 = 1 GO TO 46200 36200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46200, 6211, 46200 46200 IF ( ICON01 - 1 ) 26200, 16200, 26200 16200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6211 26200 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6211 CONTINUE IVTNUM = 621 C C **** TEST 621 **** C TEST 621 - TEST OF SETTING THE VALUE OF A LOGICAL ARRAY ELEMENT C TO THE VALUE OF ANOTHER LOGICAL ARRAY ELEMENT AND CHANGING C THE VALUE FROM .TRUE. TO .FALSE. BY USING THE .NOT. STATEMENT. C IF (ICZERO) 36210, 6210, 36210 6210 CONTINUE LADN11(2) = .TRUE. LADN12(2) = .NOT. LADN11(2) ICON01 = 1 IF ( LADN12(2) ) ICON01 = 0 GO TO 46210 36210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46210, 6221, 46210 46210 IF ( ICON01 - 1 ) 26210, 16210, 26210 16210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6221 26210 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6221 CONTINUE IVTNUM = 622 C C **** TEST 622 **** C TEST 622 - TEST OF THE TYPE STATEMENT AND THE DATA C INITIALIZATION STATEMENT. THE EXPLICITLY REAL ARRAY ELEMENT C SHOULD HAVE THE VALUE OF .5 C IF (ICZERO) 36220, 6220, 36220 6220 CONTINUE IVCOMP = 2. * IADN13(1) GO TO 46220 36220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46220, 6231, 46220 46220 IF ( IVCOMP - 1 ) 26220, 16220, 26220 16220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6231 26220 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6231 CONTINUE IVTNUM = 623 C C **** TEST 623 **** C TEST 623 - TEST OF REAL TO INTEGER CONVERSION USING ARRAYS. C THE INITIALIZED VALUE OF 0.5 SHOULD BE TRUNCATED TO ZERO. C IF (ICZERO) 36230, 6230, 36230 6230 CONTINUE IADN11(1) = IADN13(1) IVCOMP = IADN11(1) GO TO 46230 36230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46230, 6241, 46230 46230 IF ( IVCOMP - 0 ) 26230, 16230, 26230 16230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6241 26230 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6241 CONTINUE IVTNUM = 624 C C **** TEST 624 **** C TEST 624 - TEST OF THE COMMON STATEMENT BY SETTING THE VALUE OF C AN INTEGER ARRAY ELEMENT IN A DIMENSIONED ARRAY TO THE VALUE C OF A REAL ARRAY ELEMENT IN COMMON. THE ELEMENT IN COMMON HAD ITS C VALUE SET IN A SIMPLE ASSIGNMENT STATEMENT TO 9999. C IF (ICZERO) 36240, 6240, 36240 6240 CONTINUE RADN14(1) = 9999. IADN11(1) = RADN14(1) IVCOMP = IADN11(1) GO TO 46240 36240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46240, 6251, 46240 46240 IF ( IVCOMP - 9999 ) 26240, 16240, 26240 16240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6251 26240 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6251 CONTINUE IVTNUM = 625 C C **** TEST 625 **** C TEST 625 - TEST OF SETTING THE VALUE OF AN INTEGER ARRAY ELEMENT C IN COMMON TO THE VALUE OF A REAL ARRAY ELEMENT ALSO IN BLANK C COMMON AND CHANGING THE SIGN. THE VALUE USED IS 9999. C IF (ICZERO) 36250, 6250, 36250 6250 CONTINUE RADN14(1) = 9999. IADN14(1) = - RADN14(1) IVCOMP = IADN14(1) GO TO 46250 36250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46250, 6261, 46250 46250 IF ( IVCOMP + 9999 ) 26250, 16250, 26250 16250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6261 26250 IVFAIL = IVFAIL + 1 IVCORR = - 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6261 CONTINUE IVTNUM = 626 C C **** TEST 626 **** C TEST 626 - TEST OF SETTING THE VALUE OF A LOGICAL ARRAY ELEMENT C IN BLANK COMMON TO .NOT. .TRUE. C THE VALUE OF ANOTHER LOGICAL ARRAY ELEMENT ALSO IN COMMON IS THEN C SET TO .NOT. OF THE VALUE OF THE FIRST. C VALUE OF THE FIRST ELEMENT SHOULD BE .FALSE. C VALUE OF THE SECOND ELEMENT SHOULD BE .TRUE. C IF (ICZERO) 36260, 6260, 36260 6260 CONTINUE LADN13(1) = .NOT. .TRUE. LADN13(2) = .NOT. LADN13(1) ICON01 = 0 IF ( LADN13(2) ) ICON01 = 1 GO TO 46260 36260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46260, 6271, 46260 46260 IF ( ICON01 - 1 ) 26260, 16260, 26260 16260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6271 26260 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6271 CONTINUE IVTNUM = 627 C C **** TEST 627 **** C TEST 627 - TEST OF EQUIVALENCE ON THE FIRST ELEMENTS OF INTEGER C ARRAYS ONE OF WHICH IS IN COMMON AND THE OTHER ONE IS DIMENSIONED. C IF (ICZERO) 36270, 6270, 36270 6270 CONTINUE IADN14(2) = 32767 IVCOMP = IADN15(2) GO TO 46270 36270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46270, 6281, 46270 46270 IF ( IVCOMP - 32767 ) 26270, 16270, 26270 16270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6281 26270 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6281 CONTINUE IVTNUM = 628 C C **** TEST 628 **** C TEST 628 - TEST OF EQUIVALENCE ON REAL ARRAYS ONE OF WHICH IS C IN COMMON AND THE OTHER ONE IS DIMENSIONED. THE ARRAYS WERE C ALIGNED ON THEIR SECOND ELEMENTS. C IF (ICZERO) 36280, 6280, 36280 6280 CONTINUE RADN15(1) = -32766. IVCOMP = RADN14(1) GO TO 46280 36280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46280, 6291, 46280 46280 IF ( IVCOMP + 32766 ) 26280, 16280, 26280 16280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6291 26280 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6291 CONTINUE IVTNUM = 629 C C **** TEST 629 **** C TEST 629 - TEST OF EQUIVALENCE WITH LOGICAL ELEMENTS. AN ARRAY C ELEMENT IN COMMON IS EQUIVALENCED TO A LOGICAL VARIABLE. C IF (ICZERO) 36290, 6290, 36290 6290 CONTINUE LADN13(2) = .TRUE. LCTN01 = .NOT. LADN13(2) ICON01 = 1 IF ( LADN13(1) ) ICON01 = 0 GO TO 46290 36290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46290, 6301, 46290 46290 IF ( ICON01 - 1 ) 26290, 16290, 26290 16290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6301 26290 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6301 CONTINUE IVTNUM = 630 C C **** TEST 630 **** C TEST 630 - TEST OF EQUIVALENCE WITH REAL AND INTEGER ELEMENTS C WHICH ARE EQUIVALENCED TO ARRAY ELEMENTS IN COMMON. C IF (ICZERO) 36300, 6300, 36300 6300 CONTINUE RCON01 = 1. ICON02 = - RADN14(5) IVCOMP = IADN14(5) GO TO 46300 36300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46300, 6311, 46300 46300 IF ( IVCOMP + 1 ) 26300, 16300, 26300 16300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6311 26300 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6311 CONTINUE IVTNUM = 631 C C **** TEST 631 **** C TEST 631 - TEST OF EQUIVALENCE ON INTEGER ARRAY ELEMENTS. C BOTH ARRAYS ARE DIMENSIONED. THE FOURTH ELEMENT C OF THE FIRST OF THE ARRAYS SHOULD BE EQUAL TO THE THIRD ELEMENT OF C THE SECOND ARRAY. C IF (ICZERO) 36310, 6310, 36310 6310 CONTINUE IADN16(4) = 9999 IVCOMP = IADN17(3) GO TO 46310 36310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46310, 6321, 46310 46310 IF ( IVCOMP - 9999 ) 26310, 16310, 26310 16310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6321 26310 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6321 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 FM022) END *END-OF,FM022 FM023.f 480975995 170 2 100666 14235 ` *HEADER,FORTR,FM023 *FILES1,FORTR,FM023,X C COMMENT SECTION. C C FM023 C C TWO DIMENSIONED ARRAYS ARE USED IN THIS ROUTINE. C THIS ROUTINE TESTS ARRAYS WITH FIXED DIMENSION AND SIZE LIMITS C SET EITHER IN A BLANK COMMON OR DIMENSION STATEMENT. THE VALUES C OF THE ARRAY ELEMENTS ARE SET IN VARIOUS WAYS SUCH AS SIMPLE C ASSIGNMENT STATEMENTS, SET TO THE VALUES OF OTHER ARRAY ELEMENTS C (EITHER POSITIVE OR NEGATIVE), SET BY INTEGER TO REAL OR REAL TO C INTEGER CONVERSION, SET BY ARITHMETIC EXPRESSIONS, OR SET BY C USE OF THE EQUIVALENCE STATEMENT. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.2, EQUIVALENCE STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENTS C SECTION 9, DATA STATEMENT C COMMON IADN22(2,2), RADN22(2,2), ICOE01, RCOE01 DIMENSION IADN21(2,2), RADN21(2,2) DIMENSION IADE23(2,2), IADE24(2,2), RADE23(2,2), RADE24(2,2) EQUIVALENCE (IADE23(2,2),IADN22(2,2),IADE24(2,2)) EQUIVALENCE (RADE23(2,2),RADN22(2,2),RADE24(2,2)) EQUIVALENCE (ICOE01,ICOE02,ICOE03,ICOE04), (RCOE01,RCOE02,RCOE03) INTEGER RADN11(2), RADN25(2,2) LOGICAL LADN21(2,2) DATA RADN21(2,2)/-512./ DATA LADN21/4*.TRUE./ 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) IVTNUM = 632 C C **** TEST 632 **** C TEST 632 - TESTS SETTING AN INTEGER ARRAY ELEMENT BY A C SIMPLE ASSIGNMENT STATEMENT TO THE VALUE 9999. C IF (ICZERO) 36320, 6320, 36320 6320 CONTINUE IADN21(1,1) = 9999 IVCOMP = IADN21(1,1) GO TO 46320 36320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46320, 6331, 46320 46320 IF ( IVCOMP - 9999 ) 26320, 16320, 26320 16320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6331 26320 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6331 CONTINUE IVTNUM = 633 C C **** TEST 633 **** C TEST 633 - TESTS SETTING A REAL ARRAY ELEMENT BY A SIMPLE C ASSIGNMENT STATEMENT TO THE VALUE -32766. C IF (ICZERO) 36330, 6330, 36330 6330 CONTINUE RADN21(1,2) = -32766. IVCOMP = RADN21(1,2) GO TO 46330 36330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46330, 6341, 46330 46330 IF ( IVCOMP + 32766 ) 26330, 16330, 26330 16330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6341 26330 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6341 CONTINUE IVTNUM = 634 C C **** TEST 634 **** C TEST 634 - TEST OF THE DATA INITIALIZATION STATEMENT AND SETTING C AN INTEGER ARRAY ELEMENT EQUAL TO THE VALUE OF A REAL ARRAY C ELEMENT. THE VALUE USED IS -512. C IF (ICZERO) 36340, 6340, 36340 6340 CONTINUE IADN21(2,2) = RADN21(2,2) IVCOMP = IADN21(2,2) GO TO 46340 36340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46340, 6351, 46340 46340 IF ( IVCOMP + 512 ) 26340, 16340, 26340 16340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6351 26340 IVFAIL = IVFAIL + 1 IVCORR = -512 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6351 CONTINUE IVTNUM = 635 C C **** TEST 635 **** C TEST 635 - TEST OF SETTING A TWO DIMENSIONED ARRAY ELEMENT C EQUAL TO THE VALUE OF A ONE DIMENSIONED ARRAY ELEMENT. C BOTH ARRAYS ARE SET INTEGER BY THE TYPE STATEMENT AND THE TWO C DIMENSIONED ARRAY ELEMENT IS MINUS THE VALUE OF THE ONE DIMENSION C ELEMENT. THE VALUE USED IS 3. C IF (ICZERO) 36350, 6350, 36350 6350 CONTINUE RADN11(1) = 3 RADN25(2,2) = - RADN11(1) IVCOMP = RADN25(2,2) GO TO 46350 36350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46350, 6361, 46350 46350 IF ( IVCOMP + 3 ) 26350, 16350, 26350 16350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6361 26350 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6361 CONTINUE IVTNUM = 636 C C **** TEST 636 **** C TEST 636 - TEST OF LOGICAL ARRAY ELEMENTS SET BY DATA STATEMENTS C IF (ICZERO) 36360, 6360, 36360 6360 CONTINUE ICON01 = 0 IF ( LADN21(2,1) ) ICON01 = 1 GO TO 46360 36360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46360, 6371, 46360 46360 IF ( ICON01 - 1 ) 26360, 16360, 26360 16360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6371 26360 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6371 CONTINUE IVTNUM = 637 C C **** TEST 637 **** C TEST 637 - TEST OF REAL TO INTEGER CONVERSION AND SETTING C INTEGER ARRAY ELEMENTS TO THE VALUE OBTAINED IN AN ARITHMETIC C EXPRESSION USING REAL ARRAY ELEMENTS. .5 + .5 = 1 C IF (ICZERO) 36370, 6370, 36370 6370 CONTINUE RADN21(1,2) = 00000.5 RADN21(2,1) = .500000 IADN21(2,1) = RADN21(1,2) + RADN21(2,1) IVCOMP = IADN21(2,1) GO TO 46370 36370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46370, 6381, 46370 46370 IF ( IVCOMP - 1 ) 26370, 16370, 26370 16370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6381 26370 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6381 CONTINUE IVTNUM = 638 C C **** TEST 638 **** C TEST 638 - TEST OF EQUIVALENCE OF THREE INTEGER ARRAYS ONE OF C WHICH IS IN COMMON. C IF (ICZERO) 36380, 6380, 36380 6380 CONTINUE IADN22(2,1) = -9999 IVCOMP = IADE23(2,1) GO TO 46380 36380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46380, 6391, 46380 46380 IF ( IVCOMP + 9999 ) 26380, 16380, 26380 16380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6391 26380 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6391 CONTINUE IVTNUM = 639 C C **** TEST 639 **** C TEST 639 - LIKE TEST 638 ONLY THE OTHER EQUIVALENCED ARRAY IS C TESTED FOR THE VALUE -9999. C IF (ICZERO) 36390, 6390, 36390 6390 CONTINUE IADE23(2,1) = -9999 IVCOMP = IADE24(2,1) GO TO 46390 36390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46390, 6401, 46390 46390 IF ( IVCOMP + 9999 ) 26390, 16390, 26390 16390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6401 26390 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6401 CONTINUE IVTNUM = 640 C C **** TEST 640 **** C TEST 640 - TEST OF THREE REAL ARRAYS THAT ARE EQUIVALENCED. C ONE OF THE ARRAYS IS IN COMMON. THE VALUE 512 IS SET INTO ONE OF C THE DIMENSIONED ARRAY ELEMENTS BY AN INTEGER TO REAL CONVERSION C ASSIGNMENT STATEMENT. C IF (ICZERO) 36400, 6400, 36400 6400 CONTINUE RADE24(2,2) = 512 IVCOMP = RADN22(2,2) GO TO 46400 36400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46400, 6411, 46400 46400 IF ( IVCOMP - 512 ) 26400, 16400, 26400 16400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6411 26400 IVFAIL = IVFAIL + 1 IVCORR = 512 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6411 CONTINUE IVTNUM = 641 C C **** TEST 641 **** C TEST 641 - LIKE TEST 640 ONLY THE OTHER EQUIVALENCED ARRAY IS C TESTED FOR THE VALUE 512. C IF (ICZERO) 36410, 6410, 36410 6410 CONTINUE RADN22(2,2) = 512 IVCOMP = RADE23(2,2) GO TO 46410 36410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46410, 6421, 46410 46410 IF ( IVCOMP - 512 ) 26410, 16410, 26410 16410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6421 26410 IVFAIL = IVFAIL + 1 IVCORR = 512 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6421 CONTINUE IVTNUM = 642 C C **** TEST 642 **** C TEST 642 - TEST OF FOUR INTEGER VARIABLES THAT ARE EQUIVALENCED. C ONE OF THE INTEGER VARIABLES IS IN BLANK COMMON. THE VALUE USED C IS 3 SET BY AN ASSIGNMENT STATEMENT. C IF (ICZERO) 36420, 6420, 36420 6420 CONTINUE ICOE03 = 3 IVCOMP = ICOE01 GO TO 46420 36420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46420, 6431, 46420 46420 IF ( IVCOMP - 3 ) 26420, 16420, 26420 16420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6431 26420 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6431 CONTINUE IVTNUM = 643 C C **** TEST 643 **** C TEST 643 - LIKE TEST 642 BUT ANOTHER OF THE ELEMENTS IS TESTED C BY AN ARITHMETIC EXPRESSION USING THE EQUIVALENCED ELEMENTS. C THE VALUE OF ALL OF THE ELEMENTS SHOULD INITITIALLY BE 3 SINCE C THEY ALL SHOULD SHARE THE SAME STORAGE LOCATION. ICOE04 = 3+3+3+3 C ICOE04 = 12 THEN THE ELEMENT ICOE02 IS TESTED FOR THE VALUE 12. C IF (ICZERO) 36430, 6430, 36430 6430 CONTINUE ICOE01 = 3 ICOE04 = ICOE01 + ICOE02 + ICOE03 + ICOE04 IVCOMP = ICOE02 GO TO 46430 36430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46430, 6441, 46430 46430 IF ( IVCOMP - 12 ) 26430, 16430, 26430 16430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6441 26430 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6441 CONTINUE IVTNUM = 644 C C **** TEST 644 **** C TEST 644 - TEST OF EQUIVALENCE WITH THREE REAL VARIABLES ONE C OF WHICH IS IN BLANK COMMON. THE ELEMENTS ARE SET INITIALLY TO .5 C THEN ALL OF THE ELEMENTS ARE USED IN AN ARITHMETIC EXPRESSION C RCOE01 =(.5 + .5 + .5) * 2. SO RCOE01 = 3. ELEMENT RCOE02 C IS TESTED FOR THE VALUE 3. C IF (ICZERO) 36440, 6440, 36440 6440 CONTINUE RCOE02 = 0.5 RCOE01 = ( RCOE01 + RCOE02 + RCOE03 ) * 2. IVCOMP = RCOE02 GO TO 46440 36440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46440, 6451, 46440 46440 IF ( IVCOMP - 3 ) 26440, 16440, 26440 16440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6451 26440 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6451 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 FM023) END *END-OF,FM023 FM024.f 480975997 170 2 100666 12083 ` *HEADER,FORTR,FM024 *FILES1,FORTR,FM024,X C COMMENT SECTION. C C FM024 C C THREE DIMENSIONED ARRAYS ARE USED IN THIS ROUTINE. C THIS ROUTINE TESTS ARRAYS WITH FIXED DIMENSION AND SIZE LIMITS C SET EITHER IN A BLANK COMMON OR DIMENSION STATEMENT. THE VALUES C OF THE ARRAY ELEMENTS ARE SET IN VARIOUS WAYS SUCH AS SIMPLE C ASSIGNMENT STATEMENTS, SET TO THE VALUES OF OTHER ARRAY ELEMENTS C (EITHER POSITIVE OR NEGATIVE), SET BY INTEGER TO REAL OR REAL TO C INTEGER CONVERSION, SET BY ARITHMETIC EXPRESSIONS, OR SET BY C USE OF THE EQUIVALENCE STATEMENT. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.2, EQUIVALENCE STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENTS C SECTION 9, DATA STATEMENT C COMMON ICOE01, RCOE01, LCOE01 COMMON IADE31(3,3,3), RADE31(3,3,3), LADE31(3,3,3) COMMON IADN31(2,2,2), RADN31(2,2,2), LADN31(2,2,2) C DIMENSION IADE32(3,3,3), RADE32(3,3,3), LADE32(3,3,3) DIMENSION IADN32(2,2,2), IADN21(2,2), IADN11(2) DIMENSION IADE21(2,2), IADE11(4) C EQUIVALENCE (IADE31(1,1,1), IADE32(1,1,1) ) EQUIVALENCE ( RADE31(1,1,1), RADE32(1,1,1) ) EQUIVALENCE ( LADE31(1,1,1), LADE32(1,1,1) ) EQUIVALENCE ( IADE31(1,1,1), IADE21(1,1), IADE11(1) ) EQUIVALENCE ( ICOE01, ICOE02, ICOE03 ) C LOGICAL LADE31, LADN31, LADE32, LCOE01 INTEGER RADN33(2,2,2), RADN21(2,4), RADN11(8) REAL IADN33(2,2,2), IADN22(2,4), IADN12(8) 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) IVTNUM = 645 C C **** TEST 645 **** C TEST 645 - TESTS SETTING A THREE DIMENSION INTEGER ARRAY ELEMENT C BY A SIMPLE INTEGER ASSIGNMENT STATEMENT. C IF (ICZERO) 36450, 6450, 36450 6450 CONTINUE IADN31(2,2,2) = -9999 IVCOMP = IADN31(2,2,2) GO TO 46450 36450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46450, 6461, 46450 46450 IF ( IVCOMP + 9999 ) 26450, 16450, 26450 16450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6461 26450 IVFAIL = IVFAIL + 1 IVCORR = -9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6461 CONTINUE IVTNUM = 646 C C **** TEST 646 **** C TEST 646 - TESTS SETTING A THREE DIMENSION REAL ARRAY ELEMENT C BY A SIMPLE REAL ASSIGNMENT STATEMENT. C IF (ICZERO) 36460, 6460, 36460 6460 CONTINUE RADN31(1,2,1) = 512. IVCOMP = RADN31(1,2,1) GO TO 46460 36460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46460, 6471, 46460 46460 IF ( IVCOMP - 512 ) 26460, 16460, 26460 16460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6471 26460 IVFAIL = IVFAIL + 1 IVCORR = 512 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6471 CONTINUE IVTNUM = 647 C C **** TEST 647 **** C TEST 647 - TESTS SETTING A THREE DIMENSION LOGICAL ARRAY ELEMENT C BY A SIMPLE LOGICAL ASSIGNMENT STATEMENT. C IF (ICZERO) 36470, 6470, 36470 6470 CONTINUE LADN31(1,2,2) = .TRUE. ICON01 = 0 IF ( LADN31(1,2,2) ) ICON01 = 1 GO TO 46470 36470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46470, 6481, 46470 46470 IF ( ICON01 - 1 ) 26470, 16470, 26470 16470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6481 26470 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6481 CONTINUE IVTNUM = 648 C C **** TEST 648 **** C TEST 648 - TESTS SETTING A ONE, TWO, AND THREE DIMENSION ARRAY C ELEMENT TO A VALUE IN ARITHMETIC ASSIGNMENT STATEMENTS. ALL THREE C ELEMENTS ARE INTEGERS. THE INTEGER ARRAY ELEMENTS ARE THEN USED C IN AN ARITHMETIC STATEMENT AND THE RESULT IS STORED BY INTEGER C TO REAL CONVERSION INTO A THREE DIMENSION REAL ARRAY ELEMENT. C IF (ICZERO) 36480, 6480, 36480 6480 CONTINUE IADN11(2) = 1 IADN21(2,2) = 2 IADN32(2,2,2) = 3 RADN31(2,2,1) = IADN11(2) + IADN21(2,2) + IADN32(2,2,2) IVCOMP = RADN31(2,2,1) GO TO 46480 36480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46480, 6491, 46480 46480 IF ( IVCOMP - 6) 26480, 16480, 26480 16480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6491 26480 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6491 CONTINUE IVTNUM = 649 C C **** TEST 649 **** C TEST 649 - TESTS OF ONE, TWO, AND THREE DIMENSION ARRAY ELEMENTS C SET EXPLICITLY INTEGER BY THE INTEGER TYPE STATEMENT. ALL ELEMENT C VALUES SHOULD BE ZERO FROM REAL TO INTEGER TRUNCATION FROM A VALUE C OF 0.5. ALL THREE ELEMENTS ARE USED IN AN ARITHMETIC EXPRESSION. C THE VALUE OF THE SUM OF THE ELEMENTS SHOULD BE ZERO. C IF (ICZERO) 36490, 6490, 36490 6490 CONTINUE RADN11(8) = 0000.50000 RADN21(2,4) = .50000 RADN33(2,2,2) = 00000.5 RADN11(1) = RADN11(8) + RADN21(2,4) + RADN33(2,2,2) IVCOMP = RADN11(1) GO TO 46490 36490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46490, 6501, 46490 46490 IF ( IVCOMP - 0 ) 26490, 16490, 26490 16490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6501 26490 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6501 CONTINUE IVTNUM = 650 C C **** TEST 650 **** C TEST 650 - TEST OF THE EQUIVALENCE STATEMENT. A REAL ARRAY C ELEMENT IS SET BY AN ASSIGNMENT STATEMENT. ITS EQUIVALENT ELEMENT C IN COMMON IS USED TO SET THE VALUE OF AN INTEGER ARRAY ELEMENT C ALSO IN COMMON. FINALLY THE DIMENSIONED EQUIVALENT INTEGER C ARRAY ELEMENT IS TESTED FOR THE VALUE USED THROUGHOUT 32767. C IF (ICZERO) 36500, 6500, 36500 6500 CONTINUE RADE32(2,2,2) = 32767. IADE31(2,2,2) = RADE31(2,2,2) IVCOMP = IADE32(2,2,2) GO TO 46500 36500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46500, 6511, 46500 46500 IF ( IVCOMP - 32767 ) 26500, 16500, 26500 16500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6511 26500 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6511 CONTINUE IVTNUM = 651 C C **** TEST 651 **** C TEST 651 - THIS IS A TEST OF COMMON AND DIMENSION AS WELL AS A C TEST OF THE EQUIVALENCE STATEMENT USING LOGICAL ARRAY ELEMENTS C BOTH IN COMMON AND DIMENSIONED. A LOGICAL VARIABLE IN COMMON IS C SET TO A VALUE OF .NOT. THE VALUE USED IN THE EQUIVALENCED ARRAY C ELEMENTS WHICH WERE SET IN A LOGICAL ASSIGNMENT STATEMENT. C IF (ICZERO) 36510, 6510, 36510 6510 CONTINUE LADE31(1,2,3) = .FALSE. LCOE01 = .NOT. LADE32(1,2,3) ICON01 = 0 IF ( LCOE01 ) ICON01 = 1 GO TO 46510 36510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46510, 6521, 46510 46510 IF ( ICON01 - 1 ) 26510, 16510, 26510 16510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6521 26510 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6521 CONTINUE IVTNUM = 652 C C **** TEST 652 **** C TEST 652 - TESTS OF ONE, TWO, AND THREE DIMENSION ARRAY ELEMENTS C SET EXPLICITLY REAL BY THE REAL TYPE STATEMENT. ALL ELEMENT C VALUES SHOULD BE 0.5 FROM THE REAL ASSIGNMENT STATEMENT. THE C ARRAY ELEMENTS ARE SUMMED AND THEN THE SUM MULTIPLIED BY 2. C FINALLY 0.2 IS ADDED TO THE RESULT AND THE FINAL RESULT CONVERTED C TO AN INTEGER ( ( .5 + .5 + .5 ) * 2. ) + 0.2 C IF (ICZERO) 36520, 6520, 36520 6520 CONTINUE IADN12(5) = 0.5 IADN22(1,3) = 0.5 IADN33(1,2,2) = 0.5 IVCOMP = ( ( IADN12(5) + IADN22(1,3) + IADN33(1,2,2) ) * 2. ) + .2 GO TO 46520 36520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46520, 6531, 46520 46520 IF ( IVCOMP - 3 ) 26520, 16520, 26520 16520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6531 26520 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6531 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 FM024) END *END-OF,FM024 FM025.f 480976000 170 2 100666 14708 ` *HEADER,FORTR,FM025 *FILES1,FORTR,FM025,X C COMMENT SECTION. C C FM025 C C THIS ROUTINE TESTS ARRAYS WITH IF STATEMENTS, DO LOOPS, C ASSIGNED AND COMPUTED GO TO STATEMENTS IN CONJUNCTION WITH ARRAY C ELEMENTS IN COMMON OR DIMENSIONED. ONE, TWO, AND THREE C DIMENSIONED ARRAYS ARE USED. THE SUBSCRIPTS ARE INTEGER CONSTANTS C OR SOMETIMES INTEGER VARIABLES WHEN THE ELEMENTS ARE IN LOOPS C AND ALL ARRAYS HAVE FIXED SIZE LIMITS. INTEGER, REAL, AND LOGICAL C ARRAYS ARE USED WITH THE TYPE SOMETIMES SPECIFIED WITH THE C EXPLICIT TYPE STATEMENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.2, COMPUTED GO TO STATEMENT C SECTION 11.3, ASSIGNED GO TO STATEMENT C SECTION 11.10, DO STATEMENT C COMMON IADN31(2,2,2), RADN31(2,2,2), LADN31(2,2,2) C DIMENSION IADN32(2,2,2), IADN21(2,2), IADN11(2) C LOGICAL LADN31 INTEGER RADN33(2,2,2), RADN21(2,4), RADN11(8) REAL IADN33(2,2,2), IADN22(2,4), IADN12(8) 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) IVTNUM = 653 C C **** TEST 653 **** C TEST 653 - TEST OF SETTING ALL VALUES OF AN INTEGER ARRAY C BY THE INTEGER INDEX OF A DO LOOP. THE ARRAY HAS ONE DIMENSION. C IF (ICZERO) 36530, 6530, 36530 6530 CONTINUE DO 6532 I = 1,2,1 IADN11(I) = I 6532 CONTINUE IVCOMP = IADN11(1) GO TO 46530 36530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46530, 6541, 46530 46530 IF ( IVCOMP - 1 ) 26530, 16530, 26530 16530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6541 26530 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6541 CONTINUE IVTNUM = 654 C C **** TEST 654 **** C TEST 654 - SEE TEST 653. THIS TEST CHECKS THE SECOND ELEMENT OF C THE INTEGER ARRAY IADN11(2). C IF (ICZERO) 36540, 6540, 36540 6540 CONTINUE IVCOMP = IADN11(2) GO TO 46540 36540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46540, 6551, 46540 46540 IF ( IVCOMP - 2 ) 26540, 16540, 26540 16540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6551 26540 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6551 CONTINUE IVTNUM = 655 C C **** TEST 655 **** C TEST 655 - TEST OF SETTING THE VALUES OF THE COLUMN OF A TWO C DIMENSION INTEGER ARRAY BY A DO LOOP. THE VALUES FOR THE ELEMENTS C IN A COLUMN IS THE NUMBER OF THE COLUMN AS SET BY THE DO LOOP C INDEX. ROW NUMBERS ARE INTEGER CONSTANTS. C THE VALUES FOR THE ELEMENTS ARE AS FOLLOWS C 1 2 C 1 2 C IF (ICZERO) 36550, 6550, 36550 6550 CONTINUE DO 6552 J = 1, 2 IADN21(1,J) = J IADN21(2,J) = J 6552 CONTINUE IVCOMP = IADN21(1,1) GO TO 46550 36550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46550, 6561, 46550 46550 IF ( IVCOMP - 1 ) 26550, 16550, 26550 16550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6561 26550 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6561 CONTINUE IVTNUM = 656 C C **** TEST 656 **** C TEST 656 - SEE TEST 655. THIS TEST CHECKS THE VALUE OF THE C INTEGER ARRAY IADN21(2,2) C IF (ICZERO) 36560, 6560, 36560 6560 CONTINUE IVCOMP = IADN21(2,2) GO TO 46560 36560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46560, 6571, 46560 46560 IF ( IVCOMP - 2 ) 26560, 16560, 26560 16560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6571 26560 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6571 CONTINUE IVTNUM = 657 C C **** TEST 657 **** C TEST 657 - THIS TESTS SETTING BOTH THE ROW AND COLUMN SUBSCRIPTS C IN A TWO DIMENSION INTEGER ARRAY WITH A DOUBLE NESTED DO LOOP. C THE ELEMENT VALUES ARE SET BY AN INTEGER COUNTER. ELEMENT VALUES C ARE AS FOLLOWS 1 2 C 3 4 C IF (ICZERO) 36570, 6570, 36570 6570 CONTINUE ICON01 = 0 DO 6573 I = 1, 2 DO 6572 J = 1, 2 ICON01 = ICON01 + 1 IADN21(I,J) = ICON01 6572 CONTINUE 6573 CONTINUE IVCOMP = IADN21(1,2) GO TO 46570 36570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46570, 6581, 46570 46570 IF ( IVCOMP - 2 ) 26570, 16570, 26570 16570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6581 26570 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6581 CONTINUE IVTNUM = 658 C C **** TEST 658 **** C TEST 658 - SEE TEST 657. THIS TEST CHECKS THE VALUE OF ARRAY C ELEMENT IADN21(2,1) = 3 C IF (ICZERO) 36580, 6580, 36580 6580 CONTINUE IVCOMP = IADN21(2,1) GO TO 46580 36580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46580, 6591, 46580 46580 IF ( IVCOMP - 3 ) 26580, 16580, 26580 16580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6591 26580 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6591 CONTINUE IVTNUM = 659 C C **** TEST 659 **** C TEST 659 - THIS TEST USES A TRIPLE NESTED DO LOOP TO SET THE C ELEMENTS IN ALL THREE DIMENSIONS OF AN INTEGER ARRAY THAT IS C DIMENSIONED. THE VALUES FOR THE ELEMENTS ARE AS FOLLOWS C FOR ELEMENT (I,J,K) = I + J + K C SO FOR ELEMENT (1,1,2) = 1 + 1 + 2 = 4 C IF (ICZERO) 36590, 6590, 36590 6590 CONTINUE DO 6594 I = 1, 2 DO 6593 J = 1, 2 DO 6592 K = 1, 2 IADN32( I, J, K ) = I + J + K 6592 CONTINUE 6593 CONTINUE 6594 CONTINUE IVCOMP = IADN32(1,1,2) GO TO 46590 36590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46590, 6601, 46590 46590 IF ( IVCOMP - 4 ) 26590, 16590, 26590 16590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6601 26590 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6601 CONTINUE IVTNUM = 660 C C **** TEST 660 **** C TEST 660 - SEE TEST 659. THIS CHECKS FOR IADN32(2,2,2) = 6 C IF (ICZERO) 36600, 6600, 36600 6600 CONTINUE IVCOMP = IADN32(2,2,2) GO TO 46600 36600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46600, 6611, 46600 46600 IF ( IVCOMP - 6 ) 26600, 16600, 26600 16600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6611 26600 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6611 CONTINUE IVTNUM = 661 C C **** TEST 661 **** C TEST 661 - THIS TEST SETS THE ELEMENTS OF AN INTEGER ARRAY IN C COMMON TO MINUS THE VALUE OF THE INTEGER ARRAY SET IN TEST 659. C ELEMENT IADN32(1,1,2) = 4 SO ELEMENT IADN31(1,1,2) = -4 C THE SAME INTEGER ASSIGNMENT STATEMENT IS USED AS THE TERMINATING C STATEMENT FOR ALL THREE DO LOOPS USED TO SET THE ARRAY VALUES C OF INTEGER ARRAY IADN31. C IF TEST 659 FAILS, THEN THIS TEST SHOULD ALSO FAIL. HOWEVER, THE C COMPUTED VALUES SHOULD RELATE IN THAT THE COMPUTED VALUE FOR C TEST 661 SHOULD BE MINUS THE COMPUTED VALUE FOR TEST 659. C IF (ICZERO) 36610, 6610, 36610 6610 CONTINUE DO 6612 I = 1, 2 DO 6612 J = 1, 2 DO 6612 K = 1, 2 6612 IADN31(I,J,K) = - IADN32 ( I, J, K ) IVCOMP = IADN31(1,1,2) GO TO 46610 36610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46610, 6621, 46610 46610 IF ( IVCOMP + 4 ) 26610, 16610, 26610 16610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6621 26610 IVFAIL = IVFAIL + 1 IVCORR = -4 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6621 CONTINUE IVTNUM = 662 C C **** TEST 662 **** C TEST 662 - THIS IS A TEST OF A TRIPLE NESTED DO LOOP USED TO C SET THE VALUES OF A LOGICAL ARRAY LADN31. UNLIKE THE OTHER TESTS C THE THIRD DIMENSION IS SET LAST, THE FIRST DIMENSION IS SET SECOND C AND THE SECOND DIMENSION IS SET FIRST. ALL ARRAY ELEMENTS ARE SET C TO THE LOGICAL CONSTANT .FALSE. C IF (ICZERO) 36620, 6620, 36620 6620 CONTINUE DO 6622 K = 1, 2 DO 6622 I = 1, 2 DO 6622 J = 1, 2 LADN31( I, J, K ) = .FALSE. 6622 CONTINUE ICON01 = 1 IF ( LADN31(2,1,2) ) ICON01 = 0 GO TO 46620 36620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46620, 6631, 46620 46620 IF ( ICON01 - 1 ) 26620, 16620, 26620 16620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6631 26620 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6631 CONTINUE IVTNUM = 663 C C NOTE **** TEST 663 WAS DELETED BY FCCTS. C IF (ICZERO) 36630, 6630, 36630 6630 CONTINUE 36630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46630, 6641, 46630 46630 IF ( ICON01 - 6633 ) 26630, 16630, 26630 16630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6641 26630 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 6633 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6641 CONTINUE IVTNUM = 664 C C NOTE **** TEST 664 WAS DELETED BY FCCTS. C IF (ICZERO) 36640, 6640, 36640 6640 CONTINUE 36640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46640, 6651, 46640 46640 IF ( ICON01 - 6643 ) 26640, 16640, 26640 16640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6651 26640 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 6443 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6651 CONTINUE IVTNUM = 665 C C **** TEST 665 **** C TEST 665 - ARRAY ELEMENTS SET TO TYPE REAL BY THE EXPLICIT C REAL STATEMENT ARE SET TO THE VALUE 0.5 AND USED TO SET THE VALUE C OF AN ARRAY ELEMENT SET TO TYPE INTEGER BY THE INTEGER STATEMENT. C THIS LAST INTEGER ELEMENT IS USED IN A LOGICAL IF STATEMENT C THAT SHOULD COMPARE TRUE. ( .5 + .5 + .5 ) * 2. .EQ. 3 C IF (ICZERO) 36650, 6650, 36650 6650 CONTINUE IADN33(2,2,2) = 0.5 IADN22(2,4) = 0.5 IADN12(8) = 0.5 RADN11(8) = ( IADN33(2,2,2) + IADN22(2,4) + IADN12(8) ) * 2. ICON01 = 0 IF ( RADN11(8) .EQ. 3 ) ICON01 = 1 GO TO 46650 36650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46650, 6661, 46650 46650 IF ( ICON01 - 1 ) 26650, 16650, 26650 16650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6661 26650 IVFAIL = IVFAIL + 1 IVCOMP = ICON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6661 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 FM025) END *END-OF,FM025 FM026.f 480976002 170 2 100666 7703 ` *HEADER,FORTR,FM026 *FILES1,FORTR,FM026 C COMMENT SECTION C C FM026 C C THIS ROUTINE CONTAINS THE BASIC SUBROUTINE REFERENCE TESTS. C THE SUBROUTINE FS027 IS CALLED BY THIS PROGRAM. THE SUBROUTINE C FS027 INCREMENTS THE CALLING ARGUMENT BY 1 AND RETURNS TO THE C CALLING PROGRAM. C C EXECUTION OF A SUBROUTINE REFERENCE RESULTS IN AN ASSOCIATION C OF ACTUAL ARGUMENTS WITH ALL APPEARANCES OF DUMMY ARGUMENTS IN C THE DEFINING SUBPROGRAM. FOLLOWING THESE ASSOCIATIONS, EXECUTION C OF THE FIRST EXECUTABLE STATEMENT OF THE DEFINING SUBPROGRAM C IS UNDERTAKEN. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6.2, SUBROUTINE REFERENCE 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) C C TEST SECTION C C SUBROUTINE REFERENCE - CALL C IVTNUM = 666 C C **** TEST 666 **** C SUBROUTINE CALL - ARGUMENT NAME SAME AS SUBROUTINE ARGUMENT NAME. C IF (ICZERO) 36660, 6660, 36660 6660 CONTINUE IVON01 = 0 CALL FS027(IVON01) IVCOMP = IVON01 GO TO 46660 36660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46660, 6671, 46660 46660 IF (IVCOMP - 1) 26660,16660,26660 16660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6671 26660 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6671 CONTINUE IVTNUM = 667 C C **** TEST 667 **** C SUBROUTINE CALL - ARGUMENT NAME SAME AS INTERNAL VARIABLE IN C SUBROUTINE. C IF (ICZERO) 36670, 6670, 36670 6670 CONTINUE IVON02 = 2 CALL FS027(IVON02) IVCOMP = IVON02 GO TO 46670 36670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46670, 6681, 46670 46670 IF (IVCOMP - 3) 26670,16670,26670 16670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6681 26670 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6681 CONTINUE IVTNUM = 668 C C **** TEST 668 **** C SUBROUTINE CALL - ARGUMENT NAME DIFFERENT FROM SUBROUTINE ARGUMENT C AND INTERNAL VARIABLE. C IF (ICZERO) 36680, 6680, 36680 6680 CONTINUE IVON01 = 7 IVON03 = -12 CALL FS027(IVON03) IVCOMP = IVON03 GO TO 46680 36680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46680, 6691, 46680 46680 IF (IVCOMP + 11 ) 26680,16680,26680 16680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6691 26680 IVFAIL = IVFAIL + 1 IVCORR = -11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6691 CONTINUE IVTNUM = 669 C C **** TEST 669 **** C REPEATED SUBROUTINE CALLS IN A DO LOOP. C IF (ICZERO) 36690, 6690, 36690 6690 CONTINUE IVCOMP = 0 DO 6692 IVON04 = 1,5 CALL FS027 (IVCOMP) 6692 CONTINUE GO TO 46690 36690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46690, 6701, 46690 46690 IF (IVCOMP - 5) 26690,16690,26690 16690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6701 26690 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 6701 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 FM026) END *HEADER,FORTR,FM026,SUBRTN,FM027 SUBROUTINE FS027(IVON01) C COMMENT SECTION C C FS027 C C THIS SUBROUTINE IS CALLED BY THE MAIN PROGRAM FM026. THE C SUBROUTINE ARGUMENT IS INCREMENTED BY 1 AND CONTROL RETURNED C TO THE CALLING PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM C C INCREMENT ARGUMENT BY 1 AND RETURN TO CALLING PROGRAM. C IVON02 = IVON01 IVON02 = IVON02 + 1 IVON01 = IVON02 IVON02 = 300 RETURN END *END-OF,FM026 FM028.f 480976004 170 2 100666 7851 ` *HEADER,FORTR,FM028 *FILES1,FORTR,FM028 C COMMENT SECTION C C FM028 C C THIS ROUTINE CONTAINS THE EXTERNAL FUNCTION REFERENCE TESTS. C THE FUNCTION SUBPROGRAM FF029 IS CALLED BY THIS PROGRAM. THE C FUNCTION SUBPROGRAM FF029 INCREMENTS THE CALLING ARGUMENT BY 1 C AND RETURNS TO THE CALLING PROGRAM. C C EXECUTION OF AN EXTERNAL FUNCTION REFERENCE RESULTS IN AN C ASSOCIATION OF ACTUAL ARGUMENTS WITH ALL APPEARANCES OF DUMMY C ARGUMENTS IN THE DEFINING SUBPROGRAM. FOLLOWING THESE C ASSOCIATIONS, EXECUTION OF THE FIRST EXECUTABLE STATEMENT OF THE C DEFINING SUBPROGRAM IS UNDERTAKEN. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.2, REFERENCING AN EXTERNAL FUNCTION C INTEGER FF029 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) C C TEST SECTION C C EXTERNAL FUNCTION REFERENCE C C EXTERNAL FUNCTION REFERENCE - ARGUMENT NAME SAME AS SUBPROGRAM C ARGUMENT NAME. 6701 CONTINUE IVTNUM = 670 C C **** TEST 670 **** C IF (ICZERO) 36700,6700,36700 6700 CONTINUE IVON01 = 0 IVCOMP = FF029(IVON01) GO TO 46700 36700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46700,6711,46700 46700 IF (IVCOMP - 1) 26700,16700,26700 16700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6711 26700 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6711 CONTINUE IVTNUM = 671 C C **** TEST 671 **** C C EXTERNAL FUNCTION REFERENCE - ARGUMENT NAME SAME AS INTERNAL C VARIABLE IN FUNCTION SUBPROGRAM. C IF (ICZERO) 36710,6710,36710 6710 CONTINUE IVON02 = 2 IVON01 = 5 IVCOMP = FF029(IVON02) GO TO 46710 36710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46710,6721,46710 46710 IF (IVCOMP - 3) 26710,16710,26710 16710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6721 26710 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6721 CONTINUE IVTNUM = 672 C C **** TEST 672 **** C C EXTERNAL FUNCTION REFERENCE - ARGUMENT NAME DIFFERENT FROM C FUNCTION SUBPROGRAM ARGUMENT AND INTERNAL VARIABLE. C IF (ICZERO) 36720,6720,36720 6720 CONTINUE IVON01 = 7 IVON03 = -12 IVCOMP = FF029(IVON03) GO TO 46720 36720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46720,6731,46720 46720 IF (IVCOMP + 11) 26720,16720,26720 16720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6731 26720 IVFAIL = IVFAIL + 1 IVCORR = -11 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6731 CONTINUE IVTNUM = 673 C C **** TEST 673 **** C C REPEATED EXTERNAL FUNCTION REFERENCE IN A DO LOOP. C IF (ICZERO) 36730,6730,36730 6730 CONTINUE IVON01 = -7 IVCOMP = 0 DO 6732 IVON04 = 1,5 IVCOMP = FF029(IVCOMP) 6732 CONTINUE GO TO 46730 36730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46730,6741,46730 46730 IF (IVCOMP - 5) 26730,16730,26730 16730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6741 26730 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6741 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 FM028) END *HEADER,FORTR,FM028,SUBRTN,FM029 INTEGER FUNCTION FF029(IVON01) C C COMMENT SECTION C FF029 C C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM028. C THE FUNCTION ARGUMENT IS INCREMENTED BY 1 AND CONTROL RETURNED C TO THE CALLING PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.1, DEFINING FUNCTION SUBPROGRAMS AND FUNCTION C STATEMENTS C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C FUNCTION SUBPROGRAM C C INCREMENT ARGUMENT BY 1 AND RETURN TO CALLING PROGRAM. C IVON02 = IVON01 FF029 = IVON02 + 1 IVON02 = 500 RETURN END *END-OF,FM028 FM030.f 480976007 170 2 100666 22365 ` *HEADER,FORTR,FM030 *FILES1,FORTR,FM030,X C COMMENT SECTION. C C FM030 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR -, INTEGER CONSTANTS AND INTEGER VARIABLES. C SOME OF THE TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE C ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER CONSTANT - INTEGER CONSTANT C (2) INTEGER CONSTANT - INTEGER CONSTANT - INTEGER CONSTANT C (3) SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS C (4) INTEGER VARIABLE - INTEGER CONSTANT C INTEGER CONSTANT - INTEGER VARIABLE C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT 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) C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 265 THROUGH TEST 270 CONTAIN TWO INTEGER CONSTANTS AND C OPERATOR - IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS C INTEGER VARIABLE = INTEGER CONSTANT - INTEGER CONSTANT C 2651 CONTINUE IVTNUM = 265 C C **** TEST 265 **** C IF (ICZERO) 32650, 2650, 32650 2650 CONTINUE IVCOMP = 3-2 GO TO 42650 32650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42650, 2661, 42650 42650 IF (IVCOMP - 1) 22650,12650,22650 12650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2661 22650 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2661 CONTINUE IVTNUM = 266 C C **** TEST 266 **** C IF (ICZERO) 32660, 2660, 32660 2660 CONTINUE IVCOMP = 51 - 52 GO TO 42660 32660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42660, 2671, 42660 42660 IF (IVCOMP +1) 22660,12660,22660 12660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2671 22660 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2671 CONTINUE IVTNUM = 267 C C **** TEST 267 *** C IF (ICZERO) 32670, 2670, 32670 2670 CONTINUE IVCOMP = 865 - 189 GO TO 42670 32670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42670, 2681, 42670 42670 IF (IVCOMP -676) 22670,12670,22670 12670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2681 22670 IVFAIL = IVFAIL + 1 IVCORR = 676 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2681 CONTINUE IVTNUM = 268 C C **** TEST 268 **** C IF (ICZERO) 32680, 2680, 32680 2680 CONTINUE IVCOMP =1358-9359 GO TO 42680 32680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42680, 2691, 42680 42680 IF (IVCOMP+8001) 22680,12680,22680 12680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2691 22680 IVFAIL = IVFAIL + 1 IVCORR = -8001 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2691 CONTINUE IVTNUM = 269 C C **** TEST 269 **** C IF (ICZERO) 32690, 2690, 32690 2690 CONTINUE IVCOMP =21113-10001 GO TO 42690 32690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42690, 2701, 42690 42690 IF (IVCOMP-11112) 22690,12690,22690 12690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2701 22690 IVFAIL = IVFAIL + 1 IVCORR=11112 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2701 CONTINUE IVTNUM = 270 C C **** TEST 270 **** C IF (ICZERO) 32700, 2700, 32700 2700 CONTINUE IVCOMP = 32767-1 GO TO 42700 32700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42700, 2711, 42700 42700 IF (IVCOMP -32766) 22700,12700,22700 12700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2711 22700 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 271 THROUGH TEST 274 CONTAIN THREE INTEGER CONSTANTS C AND OPERATOR - IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS C IV = IC - IC - IC C 2711 CONTINUE IVTNUM = 271 C C **** TEST 271 **** C IF (ICZERO) 32710, 2710, 32710 2710 CONTINUE IVCOMP=9-4-3 GO TO 42710 32710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42710, 2721, 42710 42710 IF (IVCOMP -2) 22710,12710,22710 12710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2721 22710 IVFAIL = IVFAIL + 1 IVCORR =2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2721 CONTINUE IVTNUM = 272 C C **** TEST 272 **** C IF (ICZERO) 32720, 2720, 32720 2720 CONTINUE IVCOMP = 51-52-53 GO TO 42720 32720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42720, 2731, 42720 42720 IF (IVCOMP +54) 22720,12720,22720 12720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2731 22720 IVFAIL = IVFAIL + 1 IVCORR = -54 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2731 CONTINUE IVTNUM = 273 C C **** TEST 273 **** C IF (ICZERO) 32730, 2730, 32730 2730 CONTINUE IVCOMP = 966 -676 -189 GO TO 42730 32730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42730, 2741, 42730 42730 IF (IVCOMP -101) 22730,12730,22730 12730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2741 22730 IVFAIL = IVFAIL + 1 IVCORR = 101 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2741 CONTINUE IVTNUM = 274 C C **** TEST 274 **** C IF (ICZERO) 32740, 2740, 32740 2740 CONTINUE IVCOMP = 1358-8001-2188 GO TO 42740 32740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42740, 2751, 42740 42740 IF (IVCOMP + 8831) 22740,12740,22740 12740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2751 22740 IVFAIL = IVFAIL + 1 IVCORR = -8831 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 275 THROUGH TEST 282 ARE THE SAME AS TESTS 271-274 EXCEPT C PARENTHESES ARE USED TO GROUP THE CONSTANTS. C 2751 CONTINUE IVTNUM = 275 C C **** TEST 275 **** C IF (ICZERO) 32750, 2750, 32750 2750 CONTINUE IVCOMP =(9-4)-3 GO TO 42750 32750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42750, 2761, 42750 42750 IF (IVCOMP -2) 22750,12750,22750 12750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2761 22750 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2761 CONTINUE IVTNUM = 276 C C **** TEST 276 **** C IF (ICZERO) 32760, 2760, 32760 2760 CONTINUE IVCOMP =9-(4-3) GO TO 42760 32760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42760, 2771, 42760 42760 IF (IVCOMP -8) 22760,12760,22760 12760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2771 22760 IVFAIL = IVFAIL + 1 IVCORR =8 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2771 CONTINUE IVTNUM = 277 C C **** TEST 277 **** C IF (ICZERO) 32770, 2770, 32770 2770 CONTINUE IVCOMP =(51-52)-53 GO TO 42770 32770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42770, 2781, 42770 42770 IF (IVCOMP +54) 22770,12770,22770 12770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2781 22770 IVFAIL = IVFAIL + 1 IVCORR = -54 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2781 CONTINUE IVTNUM = 278 C C **** TEST 278 **** C IF (ICZERO) 32780, 2780, 32780 2780 CONTINUE IVCOMP=51-(52-53) GO TO 42780 32780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42780, 2791, 42780 42780 IF (IVCOMP-52) 22780,12780,22780 12780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2791 22780 IVFAIL = IVFAIL + 1 IVCORR = 52 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2791 CONTINUE IVTNUM = 279 C C **** TEST 279 **** C IF (ICZERO) 32790, 2790, 32790 2790 CONTINUE IVCOMP =(966-676)-189 GO TO 42790 32790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42790, 2801, 42790 42790 IF (IVCOMP - 101) 22790,12790,22790 12790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2801 22790 IVFAIL = IVFAIL + 1 IVCORR = 101 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2801 CONTINUE IVTNUM = 280 C C **** TEST 280 **** C IF (ICZERO) 32800, 2800, 32800 2800 CONTINUE IVCOMP =966-(676-189) GO TO 42800 32800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42800, 2811, 42800 42800 IF (IVCOMP - 479) 22800,12800,22800 12800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2811 22800 IVFAIL = IVFAIL + 1 IVCORR = 479 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2811 CONTINUE IVTNUM = 281 C C **** TEST 281 **** C IF (ICZERO) 32810, 2810, 32810 2810 CONTINUE IVCOMP = (1358-8001)-2188 GO TO 42810 32810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42810, 2821, 42810 42810 IF (IVCOMP + 8831) 22810,12810,22810 12810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2821 22810 IVFAIL = IVFAIL + 1 IVCORR = -8831 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2821 CONTINUE IVTNUM = 282 C C **** TEST 282 **** C IF (ICZERO) 32820, 2820, 32820 2820 CONTINUE IVCOMP = 1358-(8001-2188) GO TO 42820 32820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42820, 2831, 42820 42820 IF (IVCOMP + 4455) 22820,12820,22820 12820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2831 22820 IVFAIL = IVFAIL + 1 IVCORR = -4455 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 283 THROUGH TEST 299 CONTAIN INTEGER VARIABLE, INTEGER C CONSTANT AND OPERATOR - IN ARITHMETIC EXPRESSION. THE INTEGER C VARIABLE CONTAINS BOTH POSITIVE AND NEGATIVE VALUES. C THE FORMS TESTED ARE C INTEGER VARIABLE = INTEGER VARIABLE - INTEGER CONSTANT C INTEGER VARIABLE = INTEGER CONSTANT - INTEGER VARIABLE C 2831 CONTINUE IVTNUM = 283 C C **** TEST 283 **** C IF (ICZERO) 32830, 2830, 32830 2830 CONTINUE IVON01 = 3 IVCOMP = IVON01 - 2 GO TO 42830 32830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42830, 2841, 42830 42830 IF (IVCOMP - 1) 22830,12830,22830 12830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2841 22830 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2841 CONTINUE IVTNUM = 284 C C **** TEST 284 **** C IF (ICZERO) 32840, 2840, 32840 2840 CONTINUE IVON01 = 2 IVCOMP = IVON01 -3 GO TO 42840 32840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42840, 2851, 42840 42840 IF (IVCOMP +1) 22840,12840,22840 12840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2851 22840 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2851 CONTINUE IVTNUM = 285 C C **** TEST 285 **** C IF (ICZERO) 32850, 2850, 32850 2850 CONTINUE IVON01 =-3 IVCOMP = IVON01 -2 GO TO 42850 32850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42850, 2861, 42850 42850 IF (IVCOMP +5) 22850,12850,22850 12850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2861 22850 IVFAIL = IVFAIL + 1 IVCORR =-5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2861 CONTINUE IVTNUM = 286 C C **** TEST 286 **** C IF (ICZERO) 32860, 2860, 32860 2860 CONTINUE IVON02 =2 IVCOMP = 3 - IVON02 GO TO 42860 32860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42860, 2871, 42860 42860 IF (IVCOMP -1) 22860,12860,22860 12860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2871 22860 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2871 CONTINUE IVTNUM = 287 C C **** TEST 287 **** C IF (ICZERO) 32870, 2870, 32870 2870 CONTINUE IVON02 =3 IVCOMP = 2 -IVON02 GO TO 42870 32870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42870, 2881, 42870 42870 IF (IVCOMP +1) 22870,12870,22870 12870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2881 22870 IVFAIL = IVFAIL + 1 IVCORR =-1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2881 CONTINUE IVTNUM = 288 C C **** TEST 288 **** C IF (ICZERO) 32880, 2880, 32880 2880 CONTINUE IVON02 = -2 IVCOMP = 3 - IVON02 GO TO 42880 32880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42880, 2891, 42880 42880 IF (IVCOMP -5) 22880,12880,22880 12880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2891 22880 IVFAIL = IVFAIL + 1 IVCORR =5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2891 CONTINUE IVTNUM = 289 C C **** TEST 289 **** C IF (ICZERO) 32890, 2890, 32890 2890 CONTINUE IVON01 =51 IVCOMP = IVON01 - 52 GO TO 42890 32890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42890, 2901, 42890 42890 IF (IVCOMP + 1) 22890,12890,22890 12890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2901 22890 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2901 CONTINUE IVTNUM = 290 C C **** TEST 290 **** C IF (ICZERO) 32900, 2900, 32900 2900 CONTINUE IVON01 =51 IVCOMP = IVON01 -51 GO TO 42900 32900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42900, 2911, 42900 42900 IF (IVCOMP) 22900,12900,22900 12900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2911 22900 IVFAIL = IVFAIL + 1 IVCORR =0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2911 CONTINUE IVTNUM = 291 C C **** TEST 291 **** C IF (ICZERO) 32910, 2910, 32910 2910 CONTINUE IVON01 =53 IVCOMP =IVON01 -52 GO TO 42910 32910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42910, 2921, 42910 42910 IF (IVCOMP -1) 22910,12910,22910 12910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2921 22910 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2921 CONTINUE IVTNUM = 292 C C **** TEST 292 **** C IF (ICZERO) 32920, 2920, 32920 2920 CONTINUE IVON02 = 676 IVCOMP = 189 - IVON02 GO TO 42920 32920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42920, 2931, 42920 42920 IF (IVCOMP + 487) 22920,12920,22920 12920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2931 22920 IVFAIL = IVFAIL + 1 IVCORR = -487 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2931 CONTINUE IVTNUM = 293 C C **** TEST 293 **** C IF (ICZERO) 32930, 2930, 32930 2930 CONTINUE IVON02 = -676 IVCOMP = 189 - IVON02 GO TO 42930 32930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42930, 2941, 42930 42930 IF (IVCOMP - 865) 22930,12930,22930 12930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2941 22930 IVFAIL = IVFAIL + 1 IVCORR = 865 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2941 CONTINUE IVTNUM = 294 C C **** TEST 294 **** C IF (ICZERO) 32940, 2940, 32940 2940 CONTINUE IVON01 = 1358 IVCOMP = IVON01 - 8001 GO TO 42940 32940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42940, 2951, 42940 42940 IF (IVCOMP + 6643) 22940,12940,22940 12940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2951 22940 IVFAIL = IVFAIL + 1 IVCORR = -6643 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2951 CONTINUE IVTNUM = 295 C C **** TEST 295 **** C IF (ICZERO) 32950, 2950, 32950 2950 CONTINUE IVON01 = -1358 IVCOMP = IVON01 - 8001 GO TO 42950 32950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42950, 2961, 42950 42950 IF (IVCOMP + 9359) 22950,12950,22950 12950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2961 22950 IVFAIL = IVFAIL + 1 IVCORR = -9359 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2961 CONTINUE IVTNUM = 296 C C **** TEST 296 **** C IF (ICZERO) 32960, 2960, 32960 2960 CONTINUE IVON01 = 15 IVCOMP = IVON01 - 32752 GO TO 42960 32960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42960, 2971, 42960 42960 IF (IVCOMP + 32737) 22960,12960,22960 12960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2971 22960 IVFAIL = IVFAIL + 1 IVCORR = -32737 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2971 CONTINUE IVTNUM = 297 C C **** TEST 297 **** C IF (ICZERO) 32970, 2970, 32970 2970 CONTINUE IVON01 =-32751 IVCOMP = IVON01 - 15 GO TO 42970 32970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42970, 2981, 42970 42970 IF (IVCOMP + 32766) 22970,12970,22970 12970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2981 22970 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2981 CONTINUE IVTNUM = 298 C C **** TEST 298 **** C IF (ICZERO) 32980, 2980, 32980 2980 CONTINUE IVON02 = -32752 IVCOMP = 15 - IVON02 GO TO 42980 32980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42980, 2991, 42980 42980 IF (IVCOMP - 32767) 22980,12980,22980 12980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 2991 22980 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 2991 CONTINUE IVTNUM = 299 C C **** TEST 299 **** C IF (ICZERO) 32990, 2990, 32990 2990 CONTINUE IVON02 = 15 IVCOMP = 32752 - IVON02 GO TO 42990 32990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 42990, 3001, 42990 42990 IF (IVCOMP - 32737) 22990,12990,22990 12990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3001 22990 IVFAIL = IVFAIL + 1 IVCORR = 32737 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3001 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 FM030) END *END-OF,FM030 FM031.f 480976010 170 2 100666 20222 ` *HEADER,FORTR,FM031 *FILES1,FORTR,FM031,X C COMMENT SECTION C C FM031 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR -, INTEGER CONSTANTS AND INTEGER VARIABLES. SOME OF THE C TESTS USE PARENTHESES TO GROUP ELEMENTS IN AN ARITHMETIC C EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER CONSTANT-INTEGER CONSTANT-INTEGER VARIABLE C INTEGER CONSTANT-INTEGER VARIABLE-INTEGER CONSTANT C INTEGER VARIABLE-INTEGER CONSTANT-INTEGER CONSTANT C (2) SAME AS (1) BUT WITH PARENTHESES TO GROUP ELEMENTS C IN ARITHMETIC EXPRESSION. C (3) INTEGER VARIABLE - INTEGER VARIABLE C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C TEST 300 THROUGH TEST 309 CONTAIN 2 INTEGER CONSTANTS, AN INTEGER C VARIABLE AND OPERATOR - IN AN ARITHMETIC EXPRESSION. C 3001 CONTINUE IVTNUM = 300 C C **** TEST 300 **** C IF (ICZERO) 33000, 3000, 33000 3000 CONTINUE IVON01 = 9 IVCOMP =IVON01 -3 -4 GO TO 43000 33000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43000, 3011, 43000 43000 IF (IVCOMP-2) 23000,13000,23000 13000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3011 23000 IVFAIL = IVFAIL + 1 IVCORR =2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3011 CONTINUE IVTNUM = 301 C C **** TEST 301 **** C IF (ICZERO) 33010, 3010, 33010 3010 CONTINUE IVON02 =3 IVCOMP =9-IVON02-4 GO TO 43010 33010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43010, 3021, 43010 43010 IF (IVCOMP-2) 23010,13010,23010 13010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3021 23010 IVFAIL = IVFAIL + 1 IVCORR =2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3021 CONTINUE IVTNUM = 302 C C **** TEST 302 **** C IF (ICZERO) 33020, 3020, 33020 3020 CONTINUE IVON03 = 4 IVCOMP = 9-3-IVON03 GO TO 43020 33020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43020, 3031, 43020 43020 IF (IVCOMP-2) 23020,13020,23020 13020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3031 23020 IVFAIL = IVFAIL + 1 IVCORR =2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3031 CONTINUE IVTNUM = 303 C C **** TEST 303 **** C IF (ICZERO) 33030, 3030, 33030 3030 CONTINUE IVON01 = 57 IVCOMP = IVON01 -25-22 GO TO 43030 33030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43030, 3041, 43030 43030 IF (IVCOMP-10) 23030,13030,23030 13030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3041 23030 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3041 CONTINUE IVTNUM = 304 C C **** TEST 304 **** C IF (ICZERO) 33040, 3040, 33040 3040 CONTINUE IVON02 =683 IVCOMP = 101-IVON02-156 GO TO 43040 33040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43040, 3051, 43040 43040 IF (IVCOMP+738) 23040,13040,23040 13040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3051 23040 IVFAIL = IVFAIL + 1 IVCORR = -738 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3051 CONTINUE IVTNUM = 305 C C **** TEST 305 **** C IF (ICZERO) 33050, 3050, 33050 3050 CONTINUE IVON03 = 1289 IVCOMP = 8542-1122-IVON03 GO TO 43050 33050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43050, 3061, 43050 43050 IF (IVCOMP-6131) 23050,13050,23050 13050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3061 23050 IVFAIL = IVFAIL + 1 IVCORR = 6131 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3061 CONTINUE IVTNUM = 306 C C **** TEST 306 **** C IF (ICZERO) 33060, 3060, 33060 3060 CONTINUE IVON03 = 11111 IVCOMP = 32333-11111-IVON03 GO TO 43060 33060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43060, 3071, 43060 43060 IF (IVCOMP-10111) 23060,13060,23060 13060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3071 23060 IVFAIL = IVFAIL + 1 IVCORR =10111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3071 CONTINUE IVTNUM = 307 C C **** TEST 307 **** C IF (ICZERO) 33070, 3070, 33070 3070 CONTINUE IVON01 = -3 IVCOMP = IVON01-2-4 GO TO 43070 33070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43070, 3081, 43070 43070 IF (IVCOMP +9) 23070,13070,23070 13070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3081 23070 IVFAIL = IVFAIL + 1 IVCORR =-9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3081 CONTINUE IVTNUM = 308 C C **** TEST 308 **** C IF (ICZERO) 33080, 3080, 33080 3080 CONTINUE IVON02 =-9 IVCOMP =1-IVON02-4 GO TO 43080 33080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43080, 3091, 43080 43080 IF (IVCOMP-6) 23080,13080,23080 13080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3091 23080 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3091 CONTINUE IVTNUM = 309 C C **** TEST 309 **** C IF (ICZERO) 33090, 3090, 33090 3090 CONTINUE IVON03 = -8542 IVCOMP = 100-3-IVON03 GO TO 43090 33090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43090, 3101, 43090 43090 IF (IVCOMP-8639) 23090,13090,23090 13090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3101 23090 IVFAIL = IVFAIL + 1 IVCORR = 8639 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 310 THROUGH TEST 319 CONTAIN 2 INTEGER CONSTANTS, AN INTEGER C VARIABLE AND OPERATOR - IN AN ARITHMETIC EXPRESSION. PARENTHESES C ARE USED TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. C 3101 CONTINUE IVTNUM = 310 C C **** TEST 310 **** C IF (ICZERO) 33100, 3100, 33100 3100 CONTINUE IVON01 =9 IVCOMP = IVON01-(3-4) GO TO 43100 33100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43100, 3111, 43100 43100 IF (IVCOMP-10) 23100,13100,23100 13100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3111 23100 IVFAIL = IVFAIL + 1 IVCORR=10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3111 CONTINUE IVTNUM = 311 C C **** TEST 311 **** C IF (ICZERO) 33110, 3110, 33110 3110 CONTINUE IVON01=9 IVCOMP=(IVON01-3)-4 GO TO 43110 33110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43110, 3121, 43110 43110 IF (IVCOMP-2) 23110,13110,23110 13110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3121 23110 IVFAIL = IVFAIL + 1 IVCORR =2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3121 CONTINUE IVTNUM = 312 C C **** TEST 312 **** C IF (ICZERO) 33120, 3120, 33120 3120 CONTINUE IVON02 = 3 IVCOMP = 9-(IVON02-4) GO TO 43120 33120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43120, 3131, 43120 43120 IF (IVCOMP-10) 23120,13120,23120 13120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3131 23120 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3131 CONTINUE IVTNUM = 313 C C **** TEST 313 **** C IF (ICZERO) 33130, 3130, 33130 3130 CONTINUE IVON02 = 3 IVCOMP = (9-IVON02) -4 GO TO 43130 33130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43130, 3141, 43130 43130 IF (IVCOMP-2) 23130,13130,23130 13130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3141 23130 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3141 CONTINUE IVTNUM = 314 C C **** TEST 314 **** C IF (ICZERO) 33140, 3140, 33140 3140 CONTINUE IVON03 = 4 IVCOMP = 9 -(3-IVON03) GO TO 43140 33140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43140, 3151, 43140 43140 IF (IVCOMP-10) 23140,13140,23140 13140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3151 23140 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3151 CONTINUE IVTNUM = 315 C C **** TEST 315 **** C IF (ICZERO) 33150, 3150, 33150 3150 CONTINUE IVON03 = 4 IVCOMP = (9-3)-IVON03 GO TO 43150 33150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43150, 3161, 43150 43150 IF (IVCOMP-2) 23150,13150,23150 13150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3161 23150 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3161 CONTINUE IVTNUM = 316 C C **** TEST 316 **** C IF (ICZERO) 33160, 3160, 33160 3160 CONTINUE IVON01 = -9 IVCOMP = (IVON01-3)-4 GO TO 43160 33160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43160, 3171, 43160 43160 IF (IVCOMP +16) 23160,13160,23160 13160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3171 23160 IVFAIL = IVFAIL + 1 IVCORR = -16 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3171 CONTINUE IVTNUM = 317 C C **** TEST 317 **** C IF (ICZERO) 33170, 3170, 33170 3170 CONTINUE IVON02 = -3 IVCOMP = 9-(IVON02-4) GO TO 43170 33170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43170, 3181, 43170 43170 IF (IVCOMP-16) 23170,13170,23170 13170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3181 23170 IVFAIL = IVFAIL + 1 IVCORR = 16 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3181 CONTINUE IVTNUM = 318 C C **** TEST 318 **** C IF (ICZERO) 33180, 3180, 33180 3180 CONTINUE IVON03 = +4 IVCOMP = 9 - (3 - IVON03) GO TO 43180 33180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43180, 3191, 43180 43180 IF (IVCOMP - 10) 23180,13180,23180 13180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3191 23180 IVFAIL = IVFAIL + 1 IVCORR= 10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3191 CONTINUE IVTNUM = 319 C C **** TEST 319 **** C IF (ICZERO) 33190, 3190, 33190 3190 CONTINUE IVON02 = 11111 IVCOMP = (32333-IVON02) -11111 GO TO 43190 33190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43190, 3201, 43190 43190 IF (IVCOMP - 10111) 23190,13190,23190 13190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3201 23190 IVFAIL = IVFAIL + 1 IVCORR = 10111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 320 THROUGH TEST 329 CONTAIN 2 INTEGER VARIABLES AND C OPERATOR - IN AN ARITHMETIC EXPRESSION. THE INTEGER VARIABLES C CONTAIN POSITIVE AND NEGATIVE VALUES. C 3201 CONTINUE IVTNUM = 320 C C **** TEST 320 **** C IF (ICZERO) 33200, 3200, 33200 3200 CONTINUE IVON01 = 3 IVON02 = 2 IVCOMP = IVON01 - IVON02 GO TO 43200 33200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43200, 3211, 43200 43200 IF (IVCOMP - 1) 23200,13200,23200 13200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3211 23200 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3211 CONTINUE IVTNUM = 321 C C **** TEST 321 **** C IF (ICZERO) 33210, 3210, 33210 3210 CONTINUE IVON01 =2 IVON02 =3 IVCOMP = IVON01 - IVON02 GO TO 43210 33210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43210, 3221, 43210 43210 IF (IVCOMP +1) 23210,13210,23210 13210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3221 23210 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3221 CONTINUE IVTNUM = 322 C C **** TEST 322 **** C IF (ICZERO) 33220, 3220, 33220 3220 CONTINUE IVON01 = -2 IVON02 = 3 IVCOMP = IVON01 - IVON02 GO TO 43220 33220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43220, 3231, 43220 43220 IF (IVCOMP +5) 23220,13220,23220 13220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3231 23220 IVFAIL = IVFAIL + 1 IVCORR =-5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3231 CONTINUE IVTNUM = 323 C C **** TEST 323 **** C IF (ICZERO) 33230, 3230, 33230 3230 CONTINUE IVON01 = -2 IVON02 = -3 IVCOMP = IVON01 - IVON02 GO TO 43230 33230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43230, 3241, 43230 43230 IF (IVCOMP -1) 23230,13230,23230 13230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3241 23230 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3241 CONTINUE IVTNUM = 324 C C **** TEST 324 **** C IF (ICZERO) 33240, 3240, 33240 3240 CONTINUE IVON01 = 51 IVON02 = 52 IVCOMP = IVON01 - IVON02 GO TO 43240 33240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43240, 3251, 43240 43240 IF (IVCOMP + 1) 23240,13240,23240 13240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3251 23240 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3251 CONTINUE IVTNUM = 325 C C **** TEST 325 **** C IF (ICZERO) 33250, 3250, 33250 3250 CONTINUE IVON01 = 676 IVON02 =-189 IVCOMP = IVON01 - IVON02 GO TO 43250 33250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43250, 3261, 43250 43250 IF (IVCOMP - 865) 23250,13250,23250 13250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3261 23250 IVFAIL = IVFAIL + 1 IVCORR = 865 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3261 CONTINUE IVTNUM = 326 C C **** TEST 326 **** C IF (ICZERO) 33260, 3260, 33260 3260 CONTINUE IVON01 = 1358 IVON02 = -8001 IVCOMP = IVON01 - IVON02 GO TO 43260 33260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43260, 3271, 43260 43260 IF (IVCOMP - 9359) 23260,13260,23260 13260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3271 23260 IVFAIL = IVFAIL + 1 IVCORR = 9359 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3271 CONTINUE IVTNUM = 327 C C **** TEST 327 **** C IF (ICZERO) 33270, 3270, 33270 3270 CONTINUE IVON01 =-16383 IVON02 = 16383 IVCOMP = IVON01 - IVON02 GO TO 43270 33270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43270, 3281, 43270 43270 IF (IVCOMP + 32766) 23270,13270,23270 13270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3281 23270 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3281 CONTINUE IVTNUM = 328 C C **** TEST 328 **** C IF (ICZERO) 33280, 3280, 33280 3280 CONTINUE IVON01 = 9876 IVON02 = 189 IVCOMP = IVON01 - IVON02 GO TO 43280 33280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43280, 3291, 43280 43280 IF (IVCOMP - 9687) 23280,13280,23280 13280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3291 23280 IVFAIL = IVFAIL + 1 IVCORR = 9687 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3291 CONTINUE IVTNUM = 329 C C **** TEST 329 **** C IF (ICZERO) 33290, 3290, 33290 3290 CONTINUE IVON01 = 11112 IVON02 = 11112 IVCOMP = IVON01 - IVON02 GO TO 43290 33290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43290, 3301, 43290 43290 IF (IVCOMP) 23290,13290,23290 13290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3301 23290 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C **** END OF TESTS **** 3301 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 FM031) END *END-OF,FM031 FM032.f 480976016 170 2 100666 20839 ` *HEADER,FORTR,FM032 *FILES1,FORTR,FM032,X C COMMENT SECTION C C FM032 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR -, INTEGER CONSTANTS AND INTEGER VARIABLES. SOME OF THE C TESTS USE PARENTHESES TO GROUP ELEMENTS IN AN ARITHMETIC C EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER VAR.= INT. VAR. - INT.VAR.-INT.CON C = INT. VAR. - INT.CON.-INT.VAR C = INT. CON. - INT.VAR -INT.VAR. C (2) SAME FORMS AS (1) BUT WITH PARENTHESES TO GROUP ELEMENTS C IN ARITHMETIC EXPRESSION. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT 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) C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 330 THROUGH TEST 347 CONTAIN TWO INTEGER VARIABLES, AN C INTEGER CONSTANT AND OPERATOR - IN AN ARITHMETIC EXPRESSION. THE C INTEGER VARIABLES CONTAIN POSITIVE AND NEGATIVE VALUES. C C TEST 330 THROUGH TEST 337 IV = IV -IV -IC C 3301 CONTINUE IVTNUM = 330 C C **** TEST 330 **** C IF (ICZERO) 33300, 3300, 33300 3300 CONTINUE IVON01 =9 IVON02 =4 IVCOMP = IVON01-IVON02-2 GO TO 43300 33300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43300, 3311, 43300 43300 IF (IVCOMP-3) 23300,13300,23300 13300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3311 23300 IVFAIL = IVFAIL + 1 IVCORR= 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3311 CONTINUE IVTNUM = 331 C C **** TEST 331 **** C IF (ICZERO) 33310, 3310, 33310 3310 CONTINUE IVON01 =-9 IVON02 = 4 IVCOMP = IVON01-IVON02-2 GO TO 43310 33310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43310, 3321, 43310 43310 IF (IVCOMP +15) 23310,13310,23310 13310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3321 23310 IVFAIL = IVFAIL + 1 IVCORR = -15 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3321 CONTINUE IVTNUM = 332 C C **** TEST 332 **** C IF (ICZERO) 33320, 3320, 33320 3320 CONTINUE IVON01 =9 IVON02 =-4 IVCOMP =IVON01-IVON02-2 GO TO 43320 33320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43320, 3331, 43320 43320 IF (IVCOMP-11) 23320,13320,23320 13320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3331 23320 IVFAIL = IVFAIL + 1 IVCORR = 11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3331 CONTINUE IVTNUM = 333 C C **** TEST 333 **** C IF (ICZERO) 33330, 3330, 33330 3330 CONTINUE IVON01 =57 IVON02 =25 IVCOMP=IVON01-IVON02-22 GO TO 43330 33330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43330, 3341, 43330 43330 IF (IVCOMP -10) 23330,13330,23330 13330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3341 23330 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3341 CONTINUE IVTNUM = 334 C C **** TEST 334 **** C IF (ICZERO) 33340, 3340, 33340 3340 CONTINUE IVON01 = 101 IVON02 = 683 IVCOMP = IVON01 - IVON02 - 156 GO TO 43340 33340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43340, 3351, 43340 43340 IF (IVCOMP +738) 23340,13340,23340 13340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3351 23340 IVFAIL = IVFAIL + 1 IVCORR = -738 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3351 CONTINUE IVTNUM = 335 C C **** TEST 335 **** C IF (ICZERO) 33350, 3350, 33350 3350 CONTINUE IVON01=8542 IVON02=1122 IVCOMP=IVON01-IVON02-1289 GO TO 43350 33350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43350, 3361, 43350 43350 IF (IVCOMP -6131) 23350,13350,23350 13350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3361 23350 IVFAIL = IVFAIL + 1 IVCORR = 6131 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3361 CONTINUE IVTNUM = 336 C C **** TEST 336 **** C IF (ICZERO) 33360, 3360, 33360 3360 CONTINUE IVON01 = 31333 IVON02 = 11111 IVCOMP = IVON01-IVON02-10111 GO TO 43360 33360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43360, 3371, 43360 43360 IF (IVCOMP -10111) 23360,13360,23360 13360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3371 23360 IVFAIL = IVFAIL + 1 IVCORR = 10111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3371 CONTINUE IVTNUM = 337 C C **** TEST 337 **** C IF (ICZERO) 33370, 3370, 33370 3370 CONTINUE IVON01 = -31444 IVON02 = +1001 IVCOMP = IVON01-IVON02-300 GO TO 43370 33370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43370, 3381, 43370 43370 IF (IVCOMP +32745) 23370,13370,23370 13370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3381 23370 IVFAIL = IVFAIL + 1 IVCORR = -32745 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 338 THROUGH TEST 343 IV=IV-IC-IV C 3381 CONTINUE IVTNUM = 338 C C **** TEST 338 **** C IF (ICZERO) 33380, 3380, 33380 3380 CONTINUE IVON01 =9 IVON03 =2 IVCOMP = IVON01-4-IVON03 GO TO 43380 33380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43380, 3391, 43380 43380 IF (IVCOMP -3) 23380,13380,23380 13380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3391 23380 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3391 CONTINUE IVTNUM = 339 C C **** TEST 339 **** C IF (ICZERO) 33390, 3390, 33390 3390 CONTINUE IVON01 = -9 IVON03 = 2 IVCOMP = IVON01-4-IVON03 GO TO 43390 33390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43390, 3401, 43390 43390 IF (IVCOMP+15) 23390,13390,23390 13390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3401 23390 IVFAIL = IVFAIL + 1 IVCORR = -15 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3401 CONTINUE IVTNUM = 340 C C **** TEST 340 **** C IF (ICZERO) 33400, 3400, 33400 3400 CONTINUE IVON01 = 9 IVON03 =-2 IVCOMP =IVON01-4-IVON03 GO TO 43400 33400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43400, 3411, 43400 43400 IF (IVCOMP-7) 23400,13400,23400 13400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3411 23400 IVFAIL = IVFAIL + 1 IVCORR=7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3411 CONTINUE IVTNUM = 341 C C **** TEST 341 **** C IF (ICZERO) 33410, 3410, 33410 3410 CONTINUE IVON01=-57 IVON03=22 IVCOMP=IVON01-25-IVON03 GO TO 43410 33410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43410, 3421, 43410 43410 IF (IVCOMP+104) 23410,13410,23410 13410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3421 23410 IVFAIL = IVFAIL + 1 IVCORR = -104 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3421 CONTINUE IVTNUM = 342 C C **** TEST 342 **** C IF (ICZERO) 33420, 3420, 33420 3420 CONTINUE IVON01=8542 IVON03=3 IVCOMP=IVON01-125-IVON03 GO TO 43420 33420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43420, 3431, 43420 43420 IF (IVCOMP-8414) 23420,13420,23420 13420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3431 23420 IVFAIL = IVFAIL + 1 IVCORR = 8414 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3431 CONTINUE IVTNUM = 343 C C **** TEST 343 **** C IF (ICZERO) 33430, 3430, 33430 3430 CONTINUE IVON01 = -32111 IVON03 = -111 IVCOMP = IVON01-111-IVON03 GO TO 43430 33430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43430, 3441, 43430 43430 IF (IVCOMP + 32111) 23430,13430,23430 13430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3441 23430 IVFAIL = IVFAIL + 1 IVCORR = -32111 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 344 THROUGH TEST 347 IV=IC-IV-IV C 3441 CONTINUE IVTNUM = 344 C C **** TEST 344 **** C IF (ICZERO) 33440, 3440, 33440 3440 CONTINUE IVON02=4 IVON03=2 IVCOMP=9-IVON02-IVON03 GO TO 43440 33440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43440, 3451, 43440 43440 IF (IVCOMP -3) 23440,13440,23440 13440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3451 23440 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3451 CONTINUE IVTNUM = 345 C C **** TEST 345 **** C IF (ICZERO) 33450, 3450, 33450 3450 CONTINUE IVON02=-4 IVON03= 2 IVCOMP= 9-IVON02-IVON03 GO TO 43450 33450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43450, 3461, 43450 43450 IF (IVCOMP -11) 23450,13450,23450 13450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3461 23450 IVFAIL = IVFAIL + 1 IVCORR =11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3461 CONTINUE IVTNUM = 346 C C **** TEST 346 **** C IF (ICZERO) 33460, 3460, 33460 3460 CONTINUE IVON02 = 683 IVON03 = 156 IVCOMP = 101 -IVON02-IVON03 GO TO 43460 33460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43460, 3471, 43460 43460 IF (IVCOMP +738) 23460,13460,23460 13460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3471 23460 IVFAIL = IVFAIL + 1 IVCORR = -738 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3471 CONTINUE IVTNUM = 347 C C **** TEST 347 **** C IF (ICZERO) 33470, 3470, 33470 3470 CONTINUE IVON02 = 15687 IVON03 = 387 IVCOMP = 8542-IVON02-IVON03 GO TO 43470 33470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43470, 3481, 43470 43470 IF (IVCOMP + 7532) 23470,13470,23470 13470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3481 23470 IVFAIL = IVFAIL + 1 IVCORR = -7532 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 348 THROUGH TEST 359 CONTAIN TWO INTEGER VARIABLES, AN C INTEGER CONSTANT AND OPERATOR - IN AN ARITHMETIC EXPRESSION. C PARENTHESES ARE USED TO GROUP THE ELEMENTS IN THE ARITHMETIC C EXPRESSION. THE INTEGER VARIABLES CONTAIN POSITIVE AND NEGATIVE C VALUES. C 3481 CONTINUE IVTNUM = 348 C C **** TEST 348 **** C IF (ICZERO) 33480, 3480, 33480 3480 CONTINUE IVON01= 9 IVON02= 4 IVCOMP=(IVON01-IVON02)-2 GO TO 43480 33480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43480, 3491, 43480 43480 IF (IVCOMP - 3) 23480,13480,23480 13480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3491 23480 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3491 CONTINUE IVTNUM = 349 C C **** TEST 349 **** C IF (ICZERO) 33490, 3490, 33490 3490 CONTINUE IVON01=9 IVON02=4 IVCOMP=IVON01-(IVON02-2) GO TO 43490 33490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43490, 3501, 43490 43490 IF (IVCOMP -7) 23490,13490,23490 13490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3501 23490 IVFAIL = IVFAIL + 1 IVCORR=7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3501 CONTINUE IVTNUM = 350 C C **** TEST 350 **** C IF (ICZERO) 33500, 3500, 33500 3500 CONTINUE IVON01 = 9 IVON02 = -4 IVCOMP = (IVON01-IVON02) -2 GO TO 43500 33500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43500, 3511, 43500 43500 IF (IVCOMP -11) 23500,13500,23500 13500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3511 23500 IVFAIL = IVFAIL + 1 IVCORR = 11 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3511 CONTINUE IVTNUM = 351 C C **** TEST 351 **** C IF (ICZERO) 33510, 3510, 33510 3510 CONTINUE IVON01 = 9 IVON02 = -4 IVCOMP = IVON01-(IVON02-2) GO TO 43510 33510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43510, 3521, 43510 43510 IF (IVCOMP - 15) 23510,13510,23510 13510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3521 23510 IVFAIL = IVFAIL + 1 IVCORR = 15 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3521 CONTINUE IVTNUM = 352 C C **** TEST 352 **** C IF (ICZERO) 33520, 3520, 33520 3520 CONTINUE IVON01 = 683 IVON03 = 156 IVCOMP = (IVON01-101)-IVON03 GO TO 43520 33520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43520, 3531, 43520 43520 IF (IVCOMP - 426) 23520,13520,23520 13520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3531 23520 IVFAIL = IVFAIL + 1 IVCORR = 426 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3531 CONTINUE IVTNUM = 353 C C **** TEST 353 **** C IF (ICZERO) 33530, 3530, 33530 3530 CONTINUE IVON01 = 683 IVON03 = 156 IVCOMP = IVON01 -(101-IVON03) GO TO 43530 33530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43530, 3541, 43530 43530 IF (IVCOMP -738) 23530,13530,23530 13530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3541 23530 IVFAIL = IVFAIL + 1 IVCORR = 738 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3541 CONTINUE IVTNUM = 354 C C **** TEST 354 **** C IF (ICZERO) 33540, 3540, 33540 3540 CONTINUE IVON01 = 683 IVON03 =-156 IVCOMP = IVON01 -(101-IVON03) GO TO 43540 33540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43540, 3551, 43540 43540 IF (IVCOMP -426) 23540,13540,23540 13540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3551 23540 IVFAIL = IVFAIL + 1 IVCORR = 426 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3551 CONTINUE IVTNUM = 355 C C **** TEST 355 **** C IF (ICZERO) 33550, 3550, 33550 3550 CONTINUE IVON01 = -683 IVON03 = -156 IVCOMP = (IVON01-101)-IVON03 GO TO 43550 33550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43550, 3561, 43550 43550 IF (IVCOMP +628) 23550,13550,23550 13550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3561 23550 IVFAIL = IVFAIL + 1 IVCORR = -628 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3561 CONTINUE IVTNUM = 356 C C **** TEST 356 **** C IF (ICZERO) 33560, 3560, 33560 3560 CONTINUE IVON02 = 15687 IVON03 = 387 IVCOMP = (8542-IVON02)-IVON03 GO TO 43560 33560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43560, 3571, 43560 43560 IF (IVCOMP +7532) 23560,13560,23560 13560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3571 23560 IVFAIL = IVFAIL + 1 IVCORR = -7532 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3571 CONTINUE IVTNUM = 357 C C **** TEST 357 **** C IF (ICZERO) 33570, 3570, 33570 3570 CONTINUE IVON02= 15687 IVON03= 387 IVCOMP= 8542-(IVON02-IVON03) GO TO 43570 33570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43570, 3581, 43570 43570 IF (IVCOMP + 6758) 23570,13570,23570 13570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3581 23570 IVFAIL = IVFAIL + 1 IVCORR = -6758 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3581 CONTINUE IVTNUM = 358 C C **** TEST 358 **** C IF (ICZERO) 33580, 3580, 33580 3580 CONTINUE IVON02 = -15687 IVON03 = 387 IVCOMP =(8542-IVON02)-IVON03 GO TO 43580 33580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43580, 3591, 43580 43580 IF (IVCOMP - 23842) 23580,13580,23580 13580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3591 23580 IVFAIL = IVFAIL + 1 IVCORR =23842 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3591 CONTINUE IVTNUM = 359 C C **** TEST 359 **** C IF (ICZERO) 33590, 3590, 33590 3590 CONTINUE IVON02 = -15687 IVON03 = 387 IVCOMP = 8542-(IVON02-IVON03) GO TO 43590 33590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43590, 3601, 43590 43590 IF (IVCOMP - 24616) 23590,13590,23590 13590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3601 23590 IVFAIL = IVFAIL + 1 IVCORR = 24616 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 3601 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 FM032) END *END-OF,FM032 FM033.f 480976018 170 2 100666 21917 ` *HEADER,FORTR,FM033 *FILES1,FORTR,FM033,X C COMMENT SECTION C C FM033 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR * AND INTEGER CONSTANTS. SOME OF THE TESTS USE PARENS C TO GROUP ELEMENTS IN THE EXPRESSION AND TO ALLOW THE USE OF C NEGATIVE CONSTANTS FOLLOWING THE * OPERATOR. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER CONSTANT * INTEGER CONSTANT C (2) INTEGER CONSTANT * INTEGER CONSTANT * INTEGER CONSTANT C (3) SAME AS (2) BUT WITH PARENS TO GROUP ELEMENTS C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 360 THROUGH TEST 376 CONTAIN TWO INTEGER CONSTANTS AND C OPERATOR * IN AN ARITHMETIC EXPRESSION. C IV = IC * IC C C TEST 360 THROUGH TEST 365 - INTEGER CONSTANTS ARE POSITIVE C 3601 CONTINUE IVTNUM = 360 C C **** TEST 360 **** C IF (ICZERO) 33600, 3600, 33600 3600 CONTINUE IVCOMP = 2 * 3 GO TO 43600 33600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43600, 3611, 43600 43600 IF (IVCOMP - 6) 23600,13600,23600 13600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3611 23600 IVFAIL = IVFAIL + 1 IVCORR=6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3611 CONTINUE IVTNUM = 361 C C **** TEST 361 **** C IF (ICZERO) 33610, 3610, 33610 3610 CONTINUE IVCOMP = 3*2 GO TO 43610 33610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43610, 3621, 43610 43610 IF (IVCOMP-6) 23610,13610,23610 13610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3621 23610 IVFAIL = IVFAIL + 1 IVCORR=6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3621 CONTINUE IVTNUM = 362 C C **** TEST 362 **** C IF (ICZERO) 33620, 3620, 33620 3620 CONTINUE IVCOMP=13*11 GO TO 43620 33620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43620, 3631, 43620 43620 IF (IVCOMP-143) 23620,13620,23620 13620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3631 23620 IVFAIL = IVFAIL + 1 IVCORR=143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3631 CONTINUE IVTNUM = 363 C C **** TEST 363 **** C IF (ICZERO) 33630, 3630, 33630 3630 CONTINUE IVCOMP = 223*99 GO TO 43630 33630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43630, 3641, 43630 43630 IF (IVCOMP-22077) 23630,13630,23630 13630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3641 23630 IVFAIL = IVFAIL + 1 IVCORR=22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3641 CONTINUE IVTNUM = 364 C C **** TEST 364 **** C IF (ICZERO) 33640, 3640, 33640 3640 CONTINUE IVCOMP=11235*2 GO TO 43640 33640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43640, 3651, 43640 43640 IF (IVCOMP-22470) 23640,13640,23640 13640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3651 23640 IVFAIL = IVFAIL + 1 IVCORR=22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3651 CONTINUE IVTNUM = 365 C C **** TEST 365 **** C IF (ICZERO) 33650, 3650, 33650 3650 CONTINUE IVCOMP = 2*16383 GO TO 43650 33650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43650, 3661, 43650 43650 IF (IVCOMP-32766) 23650,13650,23650 13650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3661 23650 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 366 THROUGH TEST 371 C ONE POSITIVE AND ONE NEGATIVE CONSTANT C 3661 CONTINUE IVTNUM = 366 C C **** TEST 366 **** C IF (ICZERO) 33660, 3660, 33660 3660 CONTINUE IVCOMP =2*(-3) GO TO 43660 33660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43660, 3671, 43660 43660 IF (IVCOMP+6) 23660,13660,23660 13660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3671 23660 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3671 CONTINUE IVTNUM = 367 C C **** TEST 367 **** C IF (ICZERO) 33670, 3670, 33670 3670 CONTINUE IVCOMP=(-2)*3 GO TO 43670 33670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43670, 3681, 43670 43670 IF (IVCOMP+6)23670,13670,23670 13670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3681 23670 IVFAIL = IVFAIL + 1 IVCORR =-6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3681 CONTINUE IVTNUM = 368 C C **** TEST 368 **** C IF (ICZERO) 33680, 3680, 33680 3680 CONTINUE IVCOMP= -2*3 GO TO 43680 33680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43680, 3691, 43680 43680 IF (IVCOMP +6) 23680,13680,23680 13680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3691 23680 IVFAIL = IVFAIL + 1 IVCORR=-6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3691 CONTINUE IVTNUM = 369 C C **** TEST 369 **** C IF (ICZERO) 33690, 3690, 33690 3690 CONTINUE IVCOMP = (-13)*11 GO TO 43690 33690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43690, 3701, 43690 43690 IF (IVCOMP+143) 23690,13690,23690 13690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3701 23690 IVFAIL = IVFAIL + 1 IVCORR=-143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3701 CONTINUE IVTNUM = 370 C C **** TEST 370 **** C IF (ICZERO) 33700, 3700, 33700 3700 CONTINUE IVCOMP = 223 * (-99) GO TO 43700 33700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43700, 3711, 43700 43700 IF (IVCOMP + 22077) 23700,13700,23700 13700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3711 23700 IVFAIL = IVFAIL + 1 IVCORR =-22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3711 CONTINUE IVTNUM = 371 C C **** TEST 371 **** C IF (ICZERO) 33710, 3710, 33710 3710 CONTINUE IVCOMP= -2 * 16383 GO TO 43710 33710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43710, 3721, 43710 43710 IF (IVCOMP+32766) 23710,13710,23710 13710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3721 23710 IVFAIL = IVFAIL + 1 IVCORR= -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 372 THROUGH TEST 376 - TWO NEGATIVE CONSTANTS C 3721 CONTINUE IVTNUM = 372 C C **** TEST 372 **** C IF (ICZERO) 33720, 3720, 33720 3720 CONTINUE IVCOMP=(-2)*(-3) GO TO 43720 33720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43720, 3731, 43720 43720 IF (IVCOMP-6) 23720,13720,23720 13720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3731 23720 IVFAIL = IVFAIL + 1 IVCORR=6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3731 CONTINUE IVTNUM = 373 C C **** TEST 373 **** C IF (ICZERO) 33730, 3730, 33730 3730 CONTINUE IVCOMP = -2*(-3) GO TO 43730 33730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43730, 3741, 43730 43730 IF (IVCOMP-6) 23730,13730,23730 13730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3741 23730 IVFAIL = IVFAIL + 1 IVCORR=6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3741 CONTINUE IVTNUM = 374 C C **** TEST 374 **** C IF (ICZERO) 33740, 3740, 33740 3740 CONTINUE IVCOMP=(-13)*(-11) GO TO 43740 33740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43740, 3751, 43740 43740 IF (IVCOMP-143) 23740,13740,23740 13740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3751 23740 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3751 CONTINUE IVTNUM = 375 C C **** TEST 375 **** C IF (ICZERO) 33750, 3750, 33750 3750 CONTINUE IVCOMP= -223 *(-99) GO TO 43750 33750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43750, 3761, 43750 43750 IF (IVCOMP - 22077) 23750,13750,23750 13750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3761 23750 IVFAIL = IVFAIL + 1 IVCORR = 22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3761 CONTINUE IVTNUM = 376 C C **** TEST 376 **** C IF (ICZERO) 33760, 3760, 33760 3760 CONTINUE IVCOMP = (-16383)*(-2) GO TO 43760 33760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43760, 3771, 43760 43760 IF (IVCOMP - 32766) 23760,13760,23760 13760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3771 23760 IVFAIL = IVFAIL + 1 IVCORR =32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 377 THROUGH TEST 394 CONTAIN THREE INTEGER CONSTANTS AND C OPERATOR * IN AN ARITHMETIC EXPRESSION. C IV = IC * IC * IC C C TEST 377 THROUGH TEST 382 - CONSTANTS ARE POSITIVE C 3771 CONTINUE IVTNUM = 377 C C **** TEST 377 **** C IF (ICZERO) 33770, 3770, 33770 3770 CONTINUE IVCOMP =2*3*4 GO TO 43770 33770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43770, 3781, 43770 43770 IF (IVCOMP-24) 23770,13770,23770 13770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3781 23770 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3781 CONTINUE IVTNUM = 378 C C **** TEST 378 **** C IF (ICZERO) 33780, 3780, 33780 3780 CONTINUE IVCOMP = 2*3*55 GO TO 43780 33780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43780, 3791, 43780 43780 IF (IVCOMP-330) 23780,13780,23780 13780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3791 23780 IVFAIL = IVFAIL + 1 IVCORR = 330 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3791 CONTINUE IVTNUM = 379 C C **** TEST 379 **** C IF (ICZERO) 33790, 3790, 33790 3790 CONTINUE IVCOMP = 23*51*13 GO TO 43790 33790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43790, 3801, 43790 43790 IF (IVCOMP-15249) 23790,13790,23790 13790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3801 23790 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3801 CONTINUE IVTNUM = 380 C C **** TEST 380 **** C IF (ICZERO) 33800, 3800, 33800 3800 CONTINUE IVCOMP = 3* 5461* 2 GO TO 43800 33800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43800, 3811, 43800 43800 IF (IVCOMP - 32766) 23800,13800,23800 13800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3811 23800 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3811 CONTINUE IVTNUM = 381 C C **** TEST 381 **** C IF (ICZERO) 33810, 3810, 33810 3810 CONTINUE IVCOMP = 16383*2*1 GO TO 43810 33810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43810, 3821, 43810 43810 IF (IVCOMP-32766) 23810,13810,23810 13810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3821 23810 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3821 CONTINUE IVTNUM = 382 C C **** TEST 382 **** C IF (ICZERO) 33820, 3820, 33820 3820 CONTINUE IVCOMP = 3*53*157 GO TO 43820 33820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43820, 3831, 43820 43820 IF (IVCOMP-24963) 23820,13820,23820 13820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3831 23820 IVFAIL = IVFAIL + 1 IVCORR = 24963 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 383 THROUGH TEST 386 C THREE POSITIVE INTEGER CONSTANTS GROUPED WITH PARENS. C 3831 CONTINUE IVTNUM = 383 C C **** TEST 383 **** C IF (ICZERO) 33830, 3830, 33830 3830 CONTINUE IVCOMP = (2*3)*4 GO TO 43830 33830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43830, 3841, 43830 43830 IF (IVCOMP-24) 23830,13830,23830 13830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3841 23830 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3841 CONTINUE IVTNUM = 384 C C **** TEST 384 **** C IF (ICZERO) 33840, 3840, 33840 3840 CONTINUE IVCOMP = 2*(3*4) GO TO 43840 33840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43840, 3851, 43840 43840 IF (IVCOMP-24) 23840,13840,23840 13840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3851 23840 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3851 CONTINUE IVTNUM = 385 C C **** TEST 385 **** C IF (ICZERO) 33850, 3850, 33850 3850 CONTINUE IVCOMP = (3*(+53)) * (+157) GO TO 43850 33850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43850, 3861, 43850 43850 IF (IVCOMP-24963) 23850,13850,23850 13850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3861 23850 IVFAIL = IVFAIL + 1 IVCORR = 24963 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3861 CONTINUE IVTNUM = 386 C C **** TEST 386 **** C IF (ICZERO) 33860, 3860, 33860 3860 CONTINUE IVCOMP = 3 *((+53)*157) GO TO 43860 33860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43860, 3871, 43860 43860 IF (IVCOMP-24963) 23860,13860,23860 13860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3871 23860 IVFAIL = IVFAIL + 1 IVCORR=24963 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 387 THROUGH TEST 391 C BOTH POSITIVE AND NEGATIVE CONSTANTS IN ARITHMETIC EXPRESSION. C 3871 CONTINUE IVTNUM = 387 C C **** TEST 387 **** C IF (ICZERO) 33870, 3870, 33870 3870 CONTINUE IVCOMP = 2*3*(-4) GO TO 43870 33870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43870, 3881, 43870 43870 IF (IVCOMP + 24) 23870,13870,23870 13870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3881 23870 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3881 CONTINUE IVTNUM = 388 C C **** TEST 388 **** C IF (ICZERO) 33880, 3880, 33880 3880 CONTINUE IVCOMP = 2*(-3)*(+4) GO TO 43880 33880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43880, 3891, 43880 43880 IF (IVCOMP + 24) 23880,13880,23880 13880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3891 23880 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3891 CONTINUE IVTNUM = 389 C C **** TEST 389 **** C IF (ICZERO) 33890, 3890, 33890 3890 CONTINUE IVCOMP = (-2)*3*4 GO TO 43890 33890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43890, 3901, 43890 43890 IF (IVCOMP+24) 23890,13890,23890 13890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3901 23890 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3901 CONTINUE IVTNUM = 390 C C **** TEST 390 **** C IF (ICZERO) 33900, 3900, 33900 3900 CONTINUE IVCOMP = -2*3*4 GO TO 43900 33900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43900, 3911, 43900 43900 IF (IVCOMP+24) 23900,13900,23900 13900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3911 23900 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3911 CONTINUE IVTNUM = 391 C C **** TEST 391 **** C IF (ICZERO) 33910, 3910, 33910 3910 CONTINUE IVCOMP = +2 * (-3) * (-4) GO TO 43910 33910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43910, 3921, 43910 43910 IF (IVCOMP - 24) 23910,13910,23910 13910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3921 23910 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 392 THROUGH TEST 394 C ALL CONSTANTS ARE NEGATIVE. C 3921 CONTINUE IVTNUM = 392 C C **** TEST 392 **** C IF (ICZERO) 33920, 3920, 33920 3920 CONTINUE IVCOMP = (-2)*(-3)*(-4) GO TO 43920 33920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43920, 3931, 43920 43920 IF (IVCOMP+24) 23920,13920,23920 13920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3931 23920 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3931 CONTINUE IVTNUM = 393 C C **** TEST 393 **** C IF (ICZERO) 33930, 3930, 33930 3930 CONTINUE IVCOMP = (-23)*(-51)*(-13) GO TO 43930 33930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43930, 3941, 43930 43930 IF (IVCOMP + 15249) 23930,13930,23930 13930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3941 23930 IVFAIL = IVFAIL + 1 IVCORR = -15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3941 CONTINUE IVTNUM = 394 C C **** TEST 394 **** C IF (ICZERO) 33940, 3940, 33940 3940 CONTINUE IVCOMP = -3 * (-53)*( -157) GO TO 43940 33940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43940, 3951, 43940 43940 IF (IVCOMP +24963) 23940,13940,23940 13940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3951 23940 IVFAIL = IVFAIL + 1 IVCORR = -24963 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 3951 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 FM033) END *END-OF,FM033 FM034.f 480976021 170 2 100666 23452 ` *HEADER,FORTR,FM034 *FILES1,FORTR,FM034,X C COMMENT SECTION C C FM034 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR *, INTEGER VARIABLE AND INTEGER CONSTANT. SOME OF THE C TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE EXPRESSION AND TO C ALLOW THE USE OF NEGATIVE CONSTANTS FOLLOWING THE * OPERATOR. C THE INTEGER VARIABLES CONTAIN POSITIVE AND NEGATIVE VALUES. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER VARIABLE * INTEGER CONSTANT C INTEGER CONSTANT * INTEGER VARIABLE C (2) INTEGER CONSTANT * INTEGER VARIABLE * INTEGER CONSTANT C (3) SAME AS (2) BUT WITH PARENS TO GROUP ELEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 395 THROUGH TEST 414 CONTAIN AN INTEGER VARIABLE, AN INTEGER C CONSTANT, AND OPERATOR * IN AN ARITHMETIC EXPRESSION. C C TEST 395 THROUGH TEST 406 - IV= IV * IC C C TEST 395 THROUGH TEST 398 C POSITIVE INTEGER VARIABLE, POSITIVE INTEGER CONSTANT C 3951 CONTINUE IVTNUM = 395 C C **** TEST 395 **** C IF (ICZERO) 33950, 3950, 33950 3950 CONTINUE IVON01 = 2 IVCOMP = IVON01 * 3 GO TO 43950 33950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43950, 3961, 43950 43950 IF (IVCOMP -6) 23950,13950,23950 13950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3961 23950 IVFAIL = IVFAIL + 1 IVCORR =6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3961 CONTINUE IVTNUM = 396 C C **** TEST 396 **** C IF (ICZERO) 33960, 3960, 33960 3960 CONTINUE IVON01 = 13 IVCOMP = IVON01 * 11 GO TO 43960 33960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43960, 3971, 43960 43960 IF (IVCOMP - 143) 23960,13960,23960 13960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3971 23960 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3971 CONTINUE IVTNUM = 397 C C **** TEST 397 **** C IF (ICZERO) 33970, 3970, 33970 3970 CONTINUE IVON01 = 223 IVCOMP = IVON01 * 99 GO TO 43970 33970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43970, 3981, 43970 43970 IF (IVCOMP - 22077) 23970,13970,23970 13970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3981 23970 IVFAIL = IVFAIL + 1 IVCORR = 22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 3981 CONTINUE IVTNUM = 398 C C **** TEST 398 **** C IF (ICZERO) 33980, 3980, 33980 3980 CONTINUE IVON01 = 11235 IVCOMP = IVON01 * 2 GO TO 43980 33980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43980, 3991, 43980 43980 IF (IVCOMP - 22470) 23980,13980,23980 13980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 3991 23980 IVFAIL = IVFAIL + 1 IVCORR = 22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 399 THROUGH TEST 402 C NEGATIVE INTEGER VARIABLE, POSITIVE INTEGER CONSTANT C 3991 CONTINUE IVTNUM = 399 C C **** TEST 399 **** C IF (ICZERO) 33990, 3990, 33990 3990 CONTINUE IVON01 = -2 IVCOMP = IVON01 * 3 GO TO 43990 33990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 43990, 4001, 43990 43990 IF (IVCOMP +6) 23990,13990,23990 13990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4001 23990 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4001 CONTINUE IVTNUM = 400 C C **** TEST 400 **** C IF (ICZERO) 34000, 4000, 34000 4000 CONTINUE IVON01 = -13 IVCOMP =IVON01*11 GO TO 44000 34000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44000, 4011, 44000 44000 IF (IVCOMP +143) 24000,14000,24000 14000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4011 24000 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4011 CONTINUE IVTNUM = 401 C C **** TEST 401 **** C IF (ICZERO) 34010, 4010, 34010 4010 CONTINUE IVON01 = -223 IVCOMP = IVON01*99 GO TO 44010 34010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44010, 4021, 44010 44010 IF (IVCOMP + 22077) 24010,14010,24010 14010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4021 24010 IVFAIL = IVFAIL + 1 IVCORR = -22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4021 CONTINUE IVTNUM = 402 C C **** TEST 402 **** C IF (ICZERO) 34020, 4020, 34020 4020 CONTINUE IVON01 = -11235 IVCOMP = IVON01*2 GO TO 44020 34020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44020, 4031, 44020 44020 IF (IVCOMP+22470) 24020,14020,24020 14020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4031 24020 IVFAIL = IVFAIL + 1 IVCORR = -22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 403 AND TEST 404 C NEGATIVE INTEGER VARIABLE, NEGATIVE INTEGER CONSTANT C 4031 CONTINUE IVTNUM = 403 C C **** TEST 403 **** C IF (ICZERO) 34030, 4030, 34030 4030 CONTINUE IVON01=-2 IVCOMP = IVON01*(-3) GO TO 44030 34030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44030, 4041, 44030 44030 IF (IVCOMP -6) 24030,14030,24030 14030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4041 24030 IVFAIL = IVFAIL + 1 IVCORR =6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4041 CONTINUE IVTNUM = 404 C C **** TEST 404 **** C IF (ICZERO) 34040, 4040, 34040 4040 CONTINUE IVON01 = -13 IVCOMP = IVON01 * (-11) GO TO 44040 34040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44040, 4051, 44040 44040 IF (IVCOMP -143) 24040,14040,24040 14040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4051 24040 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 405 AND TEST 406 C POSITIVE INTEGER VARIABLE, NEGATIVE INTEGER CONSTANT C 4051 CONTINUE IVTNUM = 405 C C **** TEST 405 **** C IF (ICZERO) 34050, 4050, 34050 4050 CONTINUE IVON01 = 223 IVCOMP = IVON01 * (-99) GO TO 44050 34050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44050, 4061, 44050 44050 IF (IVCOMP + 22077) 24050,14050,24050 14050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4061 24050 IVFAIL = IVFAIL + 1 IVCORR = -22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4061 CONTINUE IVTNUM = 406 C C **** TEST 406 **** C IF (ICZERO) 34060, 4060, 34060 4060 CONTINUE IVON01 = 11235 IVCOMP = IVON01 * (-2) GO TO 44060 34060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44060, 4071, 44060 44060 IF (IVCOMP + 22470) 24060,14060,24060 14060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4071 24060 IVFAIL = IVFAIL + 1 IVCORR = -22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 407 THROUGH TEST 414 - IV = IC * IV C C TEST 407 AND TEST 408 C POSITIVE INTEGER CONSTANT, POSITIVE INTEGER VARIABLE C 4071 CONTINUE IVTNUM = 407 C C **** TEST 407 **** C IF (ICZERO) 34070, 4070, 34070 4070 CONTINUE IVON02 = 11 IVCOMP = 13*IVON02 GO TO 44070 34070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44070, 4081, 44070 44070 IF (IVCOMP - 143) 24070,14070,24070 14070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4081 24070 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4081 CONTINUE IVTNUM = 408 C C **** TEST 408 **** C IF (ICZERO) 34080, 4080, 34080 4080 CONTINUE IVON02 = +11 IVCOMP = +13 * IVON02 GO TO 44080 34080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44080, 4091, 44080 44080 IF (IVCOMP - 143) 24080,14080,24080 14080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4091 24080 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 409 AND TEST 410 C POSITIVE INTEGER CONSTANT, NEGATIVE INTEGER VARIABLE C 4091 CONTINUE IVTNUM = 409 C C **** TEST 409 **** C IF (ICZERO) 34090, 4090, 34090 4090 CONTINUE IVON02 = -99 IVCOMP = 223 * IVON02 GO TO 44090 34090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44090, 4101, 44090 44090 IF (IVCOMP + 22077) 24090,14090,24090 14090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4101 24090 IVFAIL = IVFAIL + 1 IVCORR =-22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4101 CONTINUE IVTNUM = 410 C C **** TEST 410 **** C IF (ICZERO) 34100, 4100, 34100 4100 CONTINUE IVON02 = -99 IVCOMP = +223*IVON02 GO TO 44100 34100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44100, 4111, 44100 44100 IF (IVCOMP + 22077) 24100,14100,24100 14100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4111 24100 IVFAIL = IVFAIL + 1 IVCORR = -22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 411 AND TEST 412 C NEGATIVE INTEGER CONSTANT, POSITIVE INTEGER VARIABLE C 4111 CONTINUE IVTNUM = 411 C C **** TEST 411 **** C IF (ICZERO) 34110, 4110, 34110 4110 CONTINUE IVON02 = 2 IVCOMP = (-11235) * IVON02 GO TO 44110 34110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44110, 4121, 44110 44110 IF (IVCOMP + 22470) 24110,14110,24110 14110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4121 24110 IVFAIL = IVFAIL + 1 IVCORR = -22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4121 CONTINUE IVTNUM = 412 C C **** TEST 412 **** C IF (ICZERO) 34120, 4120, 34120 4120 CONTINUE IVON02 = +2 IVCOMP = -11235 * IVON02 GO TO 44120 34120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44120, 4131, 44120 44120 IF (IVCOMP + 22470) 24120,14120,24120 14120 IVPASS=IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4131 24120 IVFAIL = IVFAIL + 1 IVCORR = -22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 413 AND TEST 414 C NEGATIVE INTEGER CONSTANT, NEGATIVE INTEGER VARIABLE C 4131 CONTINUE IVTNUM = 413 C C **** TEST 413 **** C IF (ICZERO) 34130, 4130, 34130 4130 CONTINUE IVON02 = -3 IVCOMP = (-2) * IVON02 GO TO 44130 34130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44130, 4141, 44130 44130 IF (IVCOMP - 6) 24130,14130,24130 14130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4141 24130 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4141 CONTINUE IVTNUM = 414 C C **** TEST 414 **** C IF (ICZERO) 34140, 4140, 34140 4140 CONTINUE IVON02 = -3 IVCOMP = -2 * IVON02 GO TO 44140 34140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44140, 4151, 44140 44140 IF (IVCOMP - 6) 24140,14140,24140 14140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4151 24140 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 415 THROUGH TEST 429 CONTAIN TWO INTEGER CONSTANTS, C ONE INTEGER VARIABLE AND OPERATOR * IN ARITHMETIC EXPRESSION. C 4151 CONTINUE IVTNUM = 415 C C **** TEST 415 **** C IF (ICZERO) 34150, 4150, 34150 4150 CONTINUE IVON01 = 2 IVCOMP = IVON01 * 3 * 4 GO TO 44150 34150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44150, 4161, 44150 44150 IF (IVCOMP - 24) 24150,14150,24150 14150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4161 24150 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4161 CONTINUE IVTNUM = 416 C C **** TEST 416 **** C IF (ICZERO) 34160, 4160, 34160 4160 CONTINUE IVON01 = -2 IVCOMP = IVON01 *3*4 GO TO 44160 34160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44160, 4171, 44160 44160 IF (IVCOMP +24) 24160,14160,24160 14160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4171 24160 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4171 CONTINUE IVTNUM = 417 C C **** TEST 417 **** C IF (ICZERO) 34170, 4170, 34170 4170 CONTINUE IVON01 = -2 IVCOMP = IVON01*3*(-4) GO TO 44170 34170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44170, 4181, 44170 44170 IF (IVCOMP -24) 24170,14170,24170 14170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4181 24170 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4181 CONTINUE IVTNUM = 418 C C **** TEST 418 **** C IF (ICZERO) 34180, 4180, 34180 4180 CONTINUE IVON01 = -2 IVCOMP = IVON01*(-3)*(-4) GO TO 44180 34180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44180, 4191, 44180 44180 IF (IVCOMP +24) 24180,14180,24180 14180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4191 24180 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4191 CONTINUE IVTNUM = 419 C C **** TEST 419 **** C IF (ICZERO) 34190, 4190, 34190 4190 CONTINUE IVON02 = 51 IVCOMP = 23*IVON02*13 GO TO 44190 34190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44190, 4201, 44190 44190 IF (IVCOMP-15249) 24190,14190,24190 14190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4201 24190 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4201 CONTINUE IVTNUM = 420 C C **** TEST 420 **** C IF (ICZERO) 34200, 4200, 34200 4200 CONTINUE IVON02 = -51 IVCOMP = 23*IVON02*(-13) GO TO 44200 34200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44200, 4211, 44200 44200 IF (IVCOMP - 15249) 24200,14200,24200 14200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4211 24200 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4211 CONTINUE IVTNUM = 421 C C **** TEST 421 **** C IF (ICZERO) 34210, 4210, 34210 4210 CONTINUE IVON02 = -51 IVCOMP = 23*IVON02*13 GO TO 44210 34210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44210, 4221, 44210 44210 IF (IVCOMP+15249) 24210,14210,24210 14210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4221 24210 IVFAIL = IVFAIL + 1 IVCORR = -15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4221 CONTINUE IVTNUM = 422 C C **** TEST 422 **** C IF (ICZERO) 34220, 4220, 34220 4220 CONTINUE IVON02 = -51 IVCOMP =(-23)*IVON02*(-13) GO TO 44220 34220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44220, 4231, 44220 44220 IF (IVCOMP+15249) 24220,14220,24220 14220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4231 24220 IVFAIL = IVFAIL + 1 IVCORR = -15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4231 CONTINUE IVTNUM = 423 C C **** TEST 423 **** C IF (ICZERO) 34230, 4230, 34230 4230 CONTINUE IVON03 = 5461 IVCOMP = 2*3*IVON03 GO TO 44230 34230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44230, 4241, 44230 44230 IF (IVCOMP - 32766) 24230,14230,24230 14230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4241 24230 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4241 CONTINUE IVTNUM = 424 C C **** TEST 424 **** C IF (ICZERO) 34240, 4240, 34240 4240 CONTINUE IVON03 = -5461 IVCOMP = 2*3*IVON03 GO TO 44240 34240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44240, 4251, 44240 44240 IF (IVCOMP +32766) 24240,14240,24240 14240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4251 24240 IVFAIL = IVFAIL + 1 IVCORR = -32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4251 CONTINUE IVTNUM = 425 C C **** TEST 425 **** C IF (ICZERO) 34250, 4250, 34250 4250 CONTINUE IVON03 = -5461 IVCOMP = -2*3*IVON03 GO TO 44250 34250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44250, 4261, 44250 44250 IF (IVCOMP - 32766) 24250,14250,24250 14250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4261 24250 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 426 THROUGH TEST 429 USE PARENTHESES TO GROUP ELEMENTS C IN ARITHMETIC EXPRESSION. C 4261 CONTINUE IVTNUM = 426 C C **** TEST 426 **** C IF (ICZERO) 34260, 4260, 34260 4260 CONTINUE IVON02 = 51 IVCOMP = (23*IVON02)*13 GO TO 44260 34260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44260, 4271, 44260 44260 IF (IVCOMP -15249) 24260,14260,24260 14260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4271 24260 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4271 CONTINUE IVTNUM = 427 C C **** TEST 427 **** C IF (ICZERO) 34270, 4270, 34270 4270 CONTINUE IVON02 = 51 IVCOMP = 23*(IVON02*13) GO TO 44270 34270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44270, 4281, 44270 44270 IF (IVCOMP-15249) 24270,14270,24270 14270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4281 24270 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4281 CONTINUE IVTNUM = 428 C C **** TEST 428 **** C IF (ICZERO) 34280, 4280, 34280 4280 CONTINUE IVON02 = -51 IVCOMP = -23 * (IVON02*(+13)) GO TO 44280 34280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44280, 4291, 44280 44280 IF (IVCOMP - 15249)24280,14280,24280 14280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4291 24280 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4291 CONTINUE IVTNUM = 429 C C **** TEST 429 **** C IF (ICZERO) 34290, 4290, 34290 4290 CONTINUE IVON02 = -51 IVCOMP = (-23)*(IVON02*(-13)) GO TO 44290 34290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44290, 4301, 44290 44290 IF (IVCOMP + 15249) 24290,14290,24290 14290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4301 24290 IVFAIL = IVFAIL + 1 IVCORR = -15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 4301 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 FM034) END *END-OF,FM034 FM035.f 480976025 170 2 100666 22435 ` *HEADER,FORTR,FM035 *FILES1,FORTR,FM035,X C COMMENT SECTION C C FM035 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR *, INTEGER VARIABLES AND INTEGER CONSTANT. SOME OF THE C TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE EXPRESSION AND TO C ALLOW THE USE OF NEGATIVE CONSTANTS FOLLOWING THE * OPERATOR. C THE INTEGER VARIABLES CONTAIN POSITIVE AND NEGATIVE VALUES. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER VARIABLE * INTEGER VARIABLE C (2) INTEGER VARIABLE * INTEGER VARIABLE * INTEGER CONSTANT C INTEGER VARIABLE * INTEGER CONSTANT * INTEGER VARIABLE C INTEGER CONSTANT * INTEGER VARIABLE * INTEGER VARIABLE C (3) SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 430 THROUGH TEST 441 CONTAIN TWO INTEGER VARIABLES AND C OPERATOR * IN AN ARITHMETIC EXPRESSION. C THE FORM IS IV = IV * IV C C TEST 430 THROUGH TEST 433 - TWO POSITIVE VARIABLES C 4301 CONTINUE IVTNUM = 430 C C **** TEST 430 **** C IF (ICZERO) 34300, 4300, 34300 4300 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 * IVON02 GO TO 44300 34300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44300, 4311, 44300 44300 IF (IVCOMP - 6) 24300,14300,24300 14300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4311 24300 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4311 CONTINUE IVTNUM = 431 C C **** TEST 431 **** C IF (ICZERO) 34310, 4310, 34310 4310 CONTINUE IVON01 = 13 IVON02 = 11 IVCOMP = IVON01 * IVON02 GO TO 44310 34310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44310, 4321, 44310 44310 IF (IVCOMP - 143) 24310,14310,24310 14310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4321 24310 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4321 CONTINUE IVTNUM = 432 C C **** TEST 432 **** C IF (ICZERO) 34320, 4320, 34320 4320 CONTINUE IVON01 = 223 IVON02 = 99 IVCOMP = IVON01 * IVON02 GO TO 44320 34320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44320, 4331, 44320 44320 IF (IVCOMP - 22077) 24320,14320,24320 14320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4331 24320 IVFAIL = IVFAIL + 1 IVCORR = 22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4331 CONTINUE IVTNUM = 433 C C **** TEST 433 **** C IF (ICZERO) 34330, 4330, 34330 4330 CONTINUE IVON01 = 11235 IVON02 = 2 IVCOMP = IVON01*IVON02 GO TO 44330 34330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44330, 4341, 44330 44330 IF (IVCOMP - 22470) 24330,14330,24330 14330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4341 24330 IVFAIL = IVFAIL + 1 IVCORR = 22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 434 THROUGH TEST 437 C ONE NEGATIVE VARIABLE, ONE POSITIVE VARIABLE C 4341 CONTINUE IVTNUM = 434 C C **** TEST 434 **** C IF (ICZERO) 34340, 4340, 34340 4340 CONTINUE IVON01 = -2 IVON02 = 3 IVCOMP = IVON01 * IVON02 GO TO 44340 34340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44340, 4351, 44340 44340 IF (IVCOMP +6) 24340,14340,24340 14340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4351 24340 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4351 CONTINUE IVTNUM = 435 C C **** TEST 435 **** C IF (ICZERO) 34350, 4350, 34350 4350 CONTINUE IVON01 = -13 IVON02 = +11 IVCOMP = IVON01*IVON02 GO TO 44350 34350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44350, 4361, 44350 44350 IF (IVCOMP + 143) 24350,14350,24350 14350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4361 24350 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4361 CONTINUE IVTNUM = 436 C C **** TEST 436 **** C IF (ICZERO) 34360, 4360, 34360 4360 CONTINUE IVON01 = -223 IVON02 = 99 IVCOMP = IVON01 * IVON02 GO TO 44360 34360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44360, 4371, 44360 44360 IF (IVCOMP + 22077) 24360,14360,24360 14360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4371 24360 IVFAIL = IVFAIL + 1 IVCORR = -22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4371 CONTINUE IVTNUM = 437 C C **** TEST 437 **** C IF (ICZERO) 34370, 4370, 34370 4370 CONTINUE IVON01 = -11235 IVON02 = 2 IVCOMP = IVON01 * IVON02 GO TO 44370 34370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44370, 4381, 44370 44370 IF (IVCOMP + 22470) 24370,14370,24370 14370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4381 24370 IVFAIL = IVFAIL + 1 IVCORR = -22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 438 THROUGH TEST 441 - TWO NEGATIVE VARIABLES 4381 CONTINUE IVTNUM = 438 C C **** TEST 438 **** C IF (ICZERO) 34380, 4380, 34380 4380 CONTINUE IVON01 = -2 IVON02 = -3 IVCOMP = IVON01 * IVON02 GO TO 44380 34380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44380, 4391, 44380 44380 IF (IVCOMP - 6) 24380,14380,24380 14380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4391 24380 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4391 CONTINUE IVTNUM = 439 C C **** TEST 439 **** C IF (ICZERO) 34390, 4390, 34390 4390 CONTINUE IVON01 = -13 IVON02 = -11 IVCOMP = IVON01 * IVON02 GO TO 44390 34390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44390, 4401, 44390 44390 IF (IVCOMP - 143) 24390,14390,24390 14390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4401 24390 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4401 CONTINUE IVTNUM = 440 C C **** TEST 440 **** C IF (ICZERO) 34400, 4400, 34400 4400 CONTINUE IVON01 = -223 IVON02 = -99 IVCOMP = IVON01*IVON02 GO TO 44400 34400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44400, 4411, 44400 44400 IF (IVCOMP - 22077) 24400,14400,24400 14400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4411 24400 IVFAIL = IVFAIL + 1 IVCORR = 22077 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4411 CONTINUE IVTNUM = 441 C C **** TEST 441 **** C IF (ICZERO) 34410, 4410, 34410 4410 CONTINUE IVON01 = -5461 IVON02 = -6 IVCOMP = IVON01 * IVON02 GO TO 44410 34410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44410, 4421, 44410 44410 IF (IVCOMP - 32766) 24410, 14410, 24410 14410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4421 24410 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 442 THROUGH TEST 445 CONTAIN SIGNED INTEGER VARIABLES AND C OPERATOR * IN AN ARITHMETIC EXPRESSION. 4421 CONTINUE IVTNUM = 442 C C **** TEST 442 **** C FORM IS IV = -IV*IV C IF (ICZERO) 34420, 4420, 34420 4420 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = -IVON01 * IVON02 GO TO 44420 34420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44420, 4431, 44420 44420 IF (IVCOMP + 6) 24420,14420,24420 14420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4431 24420 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4431 CONTINUE IVTNUM = 443 C C **** TEST 443 **** C FORM IS IV = IV*(-IV) C IF (ICZERO) 34430, 4430, 34430 4430 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 * (-IVON02) GO TO 44430 34430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44430, 4441, 44430 44430 IF (IVCOMP +6) 24430,14430,24430 14430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4441 24430 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4441 CONTINUE IVTNUM = 444 C C **** TEST 444 **** C FORM IS IV = (-IV)*(-IV) C IF (ICZERO) 34440, 4440, 34440 4440 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = (-IVON01) * (-IVON02) GO TO 44440 34440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44440, 4451, 44440 44440 IF (IVCOMP - 6) 24440,14440,24440 14440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4451 24440 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4451 CONTINUE IVTNUM = 445 C C **** TEST 445 **** C FORM IS IV = -IV * IV C IF (ICZERO) 34450, 4450, 34450 4450 CONTINUE IVON01 = -11235 IVON02 = -2 IVCOMP = -IVON01 * IVON02 GO TO 44450 34450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44450, 4461, 44450 44450 IF (IVCOMP + 22470) 24450,14450,24450 14450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4461 24450 IVFAIL = IVFAIL + 1 IVCORR = -22470 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 446 THROUGH TEST 452 CONTAIN TWO INTEGER VARIABLES, AN C INTEGER CONSTANT AND OPERATOR * IN AN ARITHMETIC EXPRESSION. C 4461 CONTINUE IVTNUM = 446 C C **** TEST 446 **** C IF (ICZERO) 34460, 4460, 34460 4460 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 * IVON02 * 4 GO TO 44460 34460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44460, 4471, 44460 44460 IF (IVCOMP -24) 24460,14460,24460 14460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4471 24460 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4471 CONTINUE IVTNUM = 447 C C **** TEST 447 **** C IF (ICZERO) 34470, 4470, 34470 4470 CONTINUE IVON01 = -2 IVON02 = 3 IVCOMP = IVON01 * IVON02 * 4 GO TO 44470 34470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44470, 4481, 44470 44470 IF (IVCOMP +24) 24470,14470,24470 14470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4481 24470 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4481 CONTINUE IVTNUM = 448 C C **** TEST 448 **** C IF (ICZERO) 34480, 4480, 34480 4480 CONTINUE IVON01 = -2 IVON02 = 3 IVCOMP = IVON01 * IVON02 * (-4) GO TO 44480 34480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44480, 4491, 44480 44480 IF (IVCOMP -24) 24480,14480,24480 14480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4491 24480 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4491 CONTINUE IVTNUM = 449 C C **** TEST 449 **** C IF (ICZERO) 34490, 4490, 34490 4490 CONTINUE IVON01 = 51 IVON03 = 13 IVCOMP = IVON01 * 23 * IVON03 GO TO 44490 34490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44490, 4501, 44490 44490 IF (IVCOMP - 15249) 24490,14490,24490 14490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4501 24490 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4501 CONTINUE IVTNUM = 450 C C **** TEST 450 **** C IF (ICZERO) 34500, 4500, 34500 4500 CONTINUE IVON02 = 2 IVON03 = 5461 IVCOMP = 3 * IVON02 * IVON03 GO TO 44500 34500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44500, 4511, 44500 44500 IF (IVCOMP -32766) 24500,14500,24500 14500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4511 24500 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4511 CONTINUE IVTNUM = 451 C C **** TEST 451 **** C IF (ICZERO) 34510, 4510, 34510 4510 CONTINUE IVON01 = -51 IVON03 = 13 IVCOMP = IVON01 * 23 * (-IVON03) GO TO 44510 34510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44510, 4521, 44510 44510 IF (IVCOMP - 15249) 24510,14510,24510 14510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4521 24510 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4521 CONTINUE IVTNUM = 452 C C **** TEST 452 **** C IF (ICZERO) 34520, 4520, 34520 4520 CONTINUE IVON01 = -5461 IVON03 = 2 IVCOMP = IVON01 * (-3) * IVON03 GO TO 44520 34520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44520, 4531, 44520 44520 IF (IVCOMP - 32766) 24520,14520,24520 14520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4531 24520 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 453 THROUGH TEST 461 CONTAIN TWO INTEGER VARIABLES AND ONE C INTEGER CONSTANT IN AN ARITHMETIC EXPRESSION. PARENTHESES ARE C USED TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSIONS IN THESE C TESTS. C 4531 CONTINUE IVTNUM = 453 C C **** TEST 453 **** C IF (ICZERO) 34530, 4530, 34530 4530 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01 * (IVON02 * 4) GO TO 44530 34530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44530, 4541, 44530 44530 IF (IVCOMP - 24) 24530,14530,24530 14530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4541 24530 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4541 CONTINUE IVTNUM = 454 C C **** TEST 454 **** C IF (ICZERO) 34540, 4540, 34540 4540 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = (IVON01 * IVON02) * 4 GO TO 44540 34540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44540, 4551, 44540 44540 IF (IVCOMP -24) 24540,14540,24540 14540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4551 24540 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4551 CONTINUE IVTNUM = 455 C C **** TEST 455 **** C IF (ICZERO) 34550, 4550, 34550 4550 CONTINUE IVON01 = -2 IVON02 = 3 IVCOMP = IVON01 *(IVON02 * (-4)) GO TO 44550 34550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44550, 4561, 44550 44550 IF (IVCOMP - 24) 24550,14550,24550 14550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4561 24550 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4561 CONTINUE IVTNUM = 456 C C **** TEST 456 **** C IF (ICZERO) 34560, 4560, 34560 4560 CONTINUE IVON01 = -2 IVON02 = -3 IVCOMP = IVON01 * (IVON02 * 4) GO TO 44560 34560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44560, 4571, 44560 44560 IF (IVCOMP -24) 24560,14560,24560 14560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4571 24560 IVFAIL = IVFAIL + 1 IVCORR = 24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4571 CONTINUE IVTNUM = 457 C C **** TEST 457 **** C IF (ICZERO) 34570, 4570, 34570 4570 CONTINUE IVON01 = -2 IVON02 = -3 IVCOMP = (IVON01*IVON02) * (-4) GO TO 44570 34570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44570, 4581, 44570 44570 IF (IVCOMP +24) 24570,14570,24570 14570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4581 24570 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4581 CONTINUE IVTNUM = 458 C C **** TEST 458 **** C IF (ICZERO) 34580, 4580, 34580 4580 CONTINUE IVON01 = 23 IVON03 = 13 IVCOMP = IVON01 * (51 * IVON03) GO TO 44580 34580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44580, 4591, 44580 44580 IF (IVCOMP -15249) 24580,14580,24580 14580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4591 24580 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4591 CONTINUE IVTNUM = 459 C C **** TEST 459 **** C IF (ICZERO) 34590, 4590, 34590 4590 CONTINUE IVON02 = 51 IVON03 = 13 IVCOMP = (23 * IVON02) * IVON03 GO TO 44590 34590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44590, 4601, 44590 44590 IF (IVCOMP - 15249) 24590,14590,24590 14590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4601 24590 IVFAIL = IVFAIL + 1 IVCORR = 15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4601 CONTINUE IVTNUM = 460 C C **** TEST 460 **** C IF (ICZERO) 34600, 4600, 34600 4600 CONTINUE IVON01 = -23 IVON03 = 13 IVCOMP = (IVON01 * (-51)) * (-IVON03) GO TO 44600 34600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44600, 4611, 44600 44600 IF (IVCOMP + 15249) 24600,14600,24600 14600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4611 24600 IVFAIL = IVFAIL + 1 IVCORR = -15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4611 CONTINUE IVTNUM = 461 C C **** TEST 461 **** C IF (ICZERO) 34610, 4610, 34610 4610 CONTINUE IVON02 = 51 IVON03 = 13 IVCOMP = -23 * (IVON02*IVON03) GO TO 44610 34610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44610, 4621, 44610 44610 IF (IVCOMP + 15249) 24610,14610,24610 14610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4621 24610 IVFAIL = IVFAIL + 1 IVCORR = -15249 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 4621 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 FM035) END *END-OF,FM035 FM036.f 480976027 170 2 100666 19256 ` *HEADER,FORTR,FM036 *FILES1,FORTR,FM036,X C COMMENT SECTION C C FM036 C C THIS ROUTINE TESTS ARITHMETIC ASIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR / AND INTEGER CONSTANTS. BOTH POSITIVE AND NEGATIVE C CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE C MAGNITUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE C REPRESENTED BY THAT FACTOR OR TERM.' C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER CONSTANT/INTEGER CONSTANT C NO TRUNCATION REQUIRED, C (2) INTEGER CONSTANT/INTEGER CONSTANT C TRUNCATION REQUIRED. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 462 THROUGH TEST 490 CONTAIN TWO INTEGER CONSTANTS AND C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT C C TEST 462 THROUGH TEST 469 - POSITIVE CONSTANTS C NO TRUNCATION REQUIRED C 4621 CONTINUE IVTNUM = 462 C C **** TEST 462 **** C IF (ICZERO) 34620, 4620, 34620 4620 CONTINUE IVCOMP = 4/2 GO TO 44620 34620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44620, 4631, 44620 44620 IF (IVCOMP - 2) 24620,14620,24620 14620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4631 24620 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4631 CONTINUE IVTNUM = 463 C C **** TEST 463 **** C IF (ICZERO) 34630, 4630, 34630 4630 CONTINUE IVCOMP = 75 / 25 GO TO 44630 34630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44630, 4641, 44630 44630 IF (IVCOMP - 3) 24630,14630,24630 14630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4641 24630 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4641 CONTINUE IVTNUM = 464 C C **** TEST 464 **** C IF (ICZERO) 34640, 4640, 34640 4640 CONTINUE IVCOMP = 3575/143 GO TO 44640 34640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44640, 4651, 44640 44640 IF (IVCOMP - 25) 24640,14640,24640 14640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4651 24640 IVFAIL = IVFAIL + 1 IVCORR = 25 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4651 CONTINUE IVTNUM = 465 C C **** TEST 465 **** C IF (ICZERO) 34650, 4650, 34650 4650 CONTINUE IVCOMP = 3575/25 GO TO 44650 34650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44650, 4661, 44650 44650 IF (IVCOMP - 143) 24650,14650,24650 14650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4661 24650 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4661 CONTINUE IVTNUM = 466 C C **** TEST 466 **** C IF (ICZERO) 34660, 4660, 34660 4660 CONTINUE IVCOMP = 6170/1234 GO TO 44660 34660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44660, 4671, 44660 44660 IF (IVCOMP - 5) 24660,14660,24660 14660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4671 24660 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4671 CONTINUE IVTNUM = 467 C C **** TEST 467 **** C IF (ICZERO) 34670, 4670, 34670 4670 CONTINUE IVCOMP = 28600/8 GO TO 44670 34670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44670, 4681, 44670 44670 IF (IVCOMP - 3575) 24670,14670,24670 14670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4681 24670 IVFAIL = IVFAIL + 1 IVCORR = 3575 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4681 CONTINUE IVTNUM = 468 C C **** TEST 468 **** C IF (ICZERO) 34680, 4680, 34680 4680 CONTINUE IVCOMP = 32766/2 GO TO 44680 34680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44680, 4691, 44680 44680 IF (IVCOMP - 16383) 24680,14680,24680 14680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4691 24680 IVFAIL = IVFAIL + 1 IVCORR = 16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4691 CONTINUE IVTNUM = 469 C C **** TEST 469 **** C IF (ICZERO) 34690, 4690, 34690 4690 CONTINUE IVCOMP = 32767/1 GO TO 44690 34690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44690, 4701, 44690 44690 IF (IVCOMP - 32767) 24690,14690,24690 14690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4701 24690 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 470 THROUGH TEST 478 - POSITIVE CONSTANTS C TRUNCATION REQUIRED C 4701 CONTINUE IVTNUM = 470 C C **** TEST 470 **** C IF (ICZERO) 34700, 4700, 34700 4700 CONTINUE IVCOMP = 5/2 GO TO 44700 34700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44700, 4711, 44700 44700 IF (IVCOMP - 2) 24700,14700,24700 14700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4711 24700 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4711 CONTINUE IVTNUM = 471 C C **** TEST 471 **** C IF (ICZERO) 34710, 4710, 34710 4710 CONTINUE IVCOMP = 2/3 GO TO 44710 34710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44710, 4721, 44710 44710 IF (IVCOMP - 0) 24710,14710,24710 14710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4721 24710 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4721 CONTINUE IVTNUM = 472 C C **** TEST 472 **** C IF (ICZERO) 34720, 4720, 34720 4720 CONTINUE IVCOMP = 80/15 GO TO 44720 34720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44720, 4731, 44720 44720 IF (IVCOMP - 5) 24720,14720,24720 14720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4731 24720 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4731 CONTINUE IVTNUM = 473 C C **** TEST 473 **** C IF (ICZERO) 34730, 4730, 34730 4730 CONTINUE IVCOMP = 959/120 GO TO 44730 34730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44730, 4741, 44730 44730 IF (IVCOMP - 7) 24730,14730,24730 14730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4741 24730 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4741 CONTINUE IVTNUM = 474 C C **** TEST 474 **** C IF (ICZERO) 34740, 4740, 34740 4740 CONTINUE IVCOMP = 959 / 12 GO TO 44740 34740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44740, 4751, 44740 44740 IF (IVCOMP - 79) 24740,14740,24740 14740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4751 24740 IVFAIL = IVFAIL + 1 IVCORR = 79 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4751 CONTINUE IVTNUM = 475 C C **** TEST 475 **** C IF (ICZERO) 34750, 4750, 34750 4750 CONTINUE IVCOMP = 959/6 GO TO 44750 34750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44750, 4761, 44750 44750 IF (IVCOMP - 159) 24750,14750,24750 14750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4761 24750 IVFAIL = IVFAIL + 1 IVCORR = 159 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4761 CONTINUE IVTNUM = 476 C C **** TEST 476 **** C IF (ICZERO) 34760, 4760, 34760 4760 CONTINUE IVCOMP = 28606/8 GO TO 44760 34760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44760, 4771, 44760 44760 IF (IVCOMP - 3575) 24760,14760,24760 14760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4771 24760 IVFAIL = IVFAIL + 1 IVCORR = 3575 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4771 CONTINUE IVTNUM = 477 C C **** TEST 477 **** C IF (ICZERO) 34770, 4770, 34770 4770 CONTINUE IVCOMP = 25603/2 GO TO 44770 34770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44770, 4781, 44770 44770 IF (IVCOMP - 12801) 24770,14770,24770 14770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4781 24770 IVFAIL = IVFAIL + 1 IVCORR = 12801 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4781 CONTINUE IVTNUM = 478 C C **** TEST 478 **** C IF (ICZERO) 34780, 4780, 34780 4780 CONTINUE IVCOMP = 25603/10354 GO TO 44780 34780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44780, 4791, 44780 44780 IF (IVCOMP - 2) 24780,14780,24780 14780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4791 24780 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 479 THROUGH TEST 482 - NEGATIVE CONSTANTS INCLUDED C NO TRUNCATION REQUIRED C 4791 CONTINUE IVTNUM = 479 C C **** TEST 479 **** C IF (ICZERO) 34790, 4790, 34790 4790 CONTINUE IVCOMP = -4/2 GO TO 44790 34790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44790, 4801, 44790 44790 IF (IVCOMP + 2) 24790,14790,24790 14790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4801 24790 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4801 CONTINUE IVTNUM = 480 C C **** TEST 480 **** C IF (ICZERO) 34800, 4800, 34800 4800 CONTINUE IVCOMP = 75 / (-25) GO TO 44800 34800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44800, 4811, 44800 44800 IF (IVCOMP + 3) 24800,14800,24800 14800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4811 24800 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4811 CONTINUE IVTNUM = 481 C C **** TEST 481 **** C IF (ICZERO) 34810, 4810, 34810 4810 CONTINUE IVCOMP= (-6170) / (-1234) GO TO 44810 34810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44810, 4821, 44810 44810 IF (IVCOMP - 5) 24810,14810,24810 14810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4821 24810 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4821 CONTINUE IVTNUM = 482 C C **** TEST 482 **** C IF (ICZERO) 34820, 4820, 34820 4820 CONTINUE IVCOMP = -32766/(-2) GO TO 44820 34820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44820, 4831, 44820 44820 IF (IVCOMP - 16383) 24820,14820,24820 14820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4831 24820 IVFAIL = IVFAIL + 1 IVCORR = 16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 483 THROUGH TEST 490 - NEGATIVE CONSTANTS INCLUDED C TRUNCATION REQUIRED C 4831 CONTINUE IVTNUM = 483 C C **** TEST 483 **** C IF (ICZERO) 34830, 4830, 34830 4830 CONTINUE IVCOMP = -5/2 GO TO 44830 34830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44830, 4841, 44830 44830 IF (IVCOMP +2) 24830,14830,24830 14830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4841 24830 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4841 CONTINUE IVTNUM = 484 C C **** TEST 484 **** C IF (ICZERO) 34840, 4840, 34840 4840 CONTINUE IVCOMP = -2/3 GO TO 44840 34840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44840, 4851, 44840 44840 IF (IVCOMP) 24840,14840,24840 14840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4851 24840 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4851 CONTINUE IVTNUM = 485 C C **** TEST 485 **** C IF (ICZERO) 34850, 4850, 34850 4850 CONTINUE IVCOMP = 80/(-15) GO TO 44850 34850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44850, 4861, 44850 44850 IF (IVCOMP +5) 24850,14850,24850 14850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4861 24850 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4861 CONTINUE IVTNUM = 486 C C **** TEST 486 **** C IF (ICZERO) 34860, 4860, 34860 4860 CONTINUE IVCOMP = -959/(-120) GO TO 44860 34860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44860, 4871, 44860 44860 IF (IVCOMP - 7) 24860,14860,24860 14860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4871 24860 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4871 CONTINUE IVTNUM = 487 C C **** TEST 487 **** C IF (ICZERO) 34870, 4870, 34870 4870 CONTINUE IVCOMP = -959/6 GO TO 44870 34870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44870, 4881, 44870 44870 IF (IVCOMP + 159) 24870,14870,24870 14870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4881 24870 IVFAIL = IVFAIL + 1 IVCORR = -159 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4881 CONTINUE IVTNUM = 488 C C **** TEST 488 **** C IF (ICZERO) 34880, 4880, 34880 4880 CONTINUE IVCOMP = -28606/(-8) GO TO 44880 34880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44880, 4891, 44880 44880 IF (IVCOMP - 3575) 24880,14880,24880 14880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4891 24880 IVFAIL = IVFAIL + 1 IVCORR = 3575 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4891 CONTINUE IVTNUM = 489 C C **** TEST 489 **** C IF (ICZERO) 34890, 4890, 34890 4890 CONTINUE IVCOMP = -25603/2 GO TO 44890 34890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44890, 4901, 44890 44890 IF (IVCOMP + 12801) 24890,14890,24890 14890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4901 24890 IVFAIL = IVFAIL + 1 IVCORR = -12801 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4901 CONTINUE IVTNUM = 490 C C **** TEST 490 **** C IF (ICZERO) 34900, 4900, 34900 4900 CONTINUE IVCOMP = -25603/(-10354) GO TO 44900 34900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44900, 4911, 44900 44900 IF (IVCOMP - 2) 24900,14900,24900 14900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4911 24900 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C **** END OF TESTS **** 4911 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 FM036) END *END-OF,FM036 FM037.f 480976030 170 2 100666 19838 ` *HEADER,FORTR,FM037 *FILES1,FORTR,FM037,X C COMMENT SECTION C C FM037 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THREE INTEGER C CONSTANTS AND THE ARITHMETIC OPERATOR /. BOTH POSITIVE AND NEGA- C TIVE CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE MAGNI- C TUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE C REPRESENTED BY THAT FACTOR OR TERM. THE ASSOCIATIVE AND COMMUTA- C TIVE LAWS DO NOT APPLY IN THE EVALUATION OF INTEGER TERMS CON- C TAINING DIVISION, HENCE THE EVALUATION OF SUCH TERMS MUST EFFEC- C TIVELY PROCEED FROM LEFT TO RIGHT.' C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT C NO TRUNCATION REQUIRED C (2) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT C TRUNCATION REQUIRED C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 491 THROUGH TEST 519 CONTAIN THREE INTEGER CONSTANTS AND C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT/INT.CON. C C C TEST 491 THROUGH TEST 496 - POSITIVE INTEGER CONSTANTS C NO TRUNCATION REQUIRED C 4911 CONTINUE IVTNUM = 491 C C **** TEST 491 **** C IF (ICZERO) 34910, 4910, 34910 4910 CONTINUE IVCOMP = 24/3/4 GO TO 44910 34910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44910, 4921, 44910 44910 IF (IVCOMP - 2) 24910,14910,24910 14910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4921 24910 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4921 CONTINUE IVTNUM = 492 C C **** TEST 492 **** C IF (ICZERO) 34920, 4920, 34920 4920 CONTINUE IVCOMP = 330/3/2 GO TO 44920 34920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44920, 4931, 44920 44920 IF (IVCOMP - 55) 24920,14920,24920 14920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4931 24920 IVFAIL = IVFAIL + 1 IVCORR = 55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4931 CONTINUE IVTNUM = 493 C C **** TEST 493 **** C IF (ICZERO) 34930, 4930, 34930 4930 CONTINUE IVCOMP = 15249/13/51 GO TO 44930 34930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44930, 4941, 44930 44930 IF (IVCOMP - 23) 24930,14930,24930 14930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4941 24930 IVFAIL = IVFAIL + 1 IVCORR = 23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4941 CONTINUE IVTNUM = 494 C C **** TEST 494 **** C IF (ICZERO) 34940, 4940, 34940 4940 CONTINUE IVCOMP = 7150/2/25 GO TO 44940 34940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44940, 4951, 44940 44940 IF (IVCOMP - 143) 24940,14940,24940 14940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4951 24940 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4951 CONTINUE IVTNUM = 495 C C **** TEST 495 **** C IF (ICZERO) 34950, 4950, 34950 4950 CONTINUE IVCOMP = 32766/2/3 GO TO 44950 34950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44950, 4961, 44950 44950 IF (IVCOMP - 5461) 24950,14950,24950 14950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4961 24950 IVFAIL = IVFAIL + 1 IVCORR = 5461 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4961 CONTINUE IVTNUM = 496 C C **** TEST 496 **** C IF (ICZERO) 34960, 4960, 34960 4960 CONTINUE IVCOMP = 32766/1/1 GO TO 44960 34960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44960, 4971, 44960 44960 IF (IVCOMP - 32766) 24960,14960,24960 14960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4971 24960 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 497 THROUGH TEST 502 - POSITIVE INTEGER CONSTANTS C TRUNCATION REQUIRED C 4971 CONTINUE IVTNUM = 497 C C **** TEST 497 **** C IF (ICZERO) 34970, 4970, 34970 4970 CONTINUE IVCOMP = 24/3/3 GO TO 44970 34970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44970, 4981, 44970 44970 IF (IVCOMP -2) 24970,14970,24970 14970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4981 24970 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4981 CONTINUE IVTNUM = 498 C C **** TEST 498 **** C IF (ICZERO) 34980, 4980, 34980 4980 CONTINUE IVCOMP = 230/2/3 GO TO 44980 34980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44980, 4991, 44980 44980 IF (IVCOMP - 38) 24980,14980,24980 14980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4991 24980 IVFAIL = IVFAIL + 1 IVCORR = 38 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4991 CONTINUE IVTNUM = 499 C C **** TEST 499 **** C IF (ICZERO) 34990, 4990, 34990 4990 CONTINUE IVCOMP = 7151/3/10 GO TO 44990 34990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44990, 5001, 44990 44990 IF (IVCOMP - 238) 24990,14990,24990 14990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5001 24990 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5001 CONTINUE IVTNUM = 500 C C **** TEST 500 **** C IF (ICZERO) 35000, 5000, 35000 5000 CONTINUE IVCOMP = 15248/51/13 GO TO 45000 35000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45000, 5011, 45000 45000 IF (IVCOMP - 22) 25000,15000,25000 15000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5011 25000 IVFAIL = IVFAIL + 1 IVCORR = 22 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5011 CONTINUE IVTNUM = 501 C C **** TEST 501 **** C IF (ICZERO) 35010, 5010, 35010 5010 CONTINUE IVCOMP = 27342/4/3 GO TO 45010 35010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45010, 5021, 45010 45010 IF (IVCOMP - 2278) 25010,15010,25010 15010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5021 25010 IVFAIL = IVFAIL + 1 IVCORR = 2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5021 CONTINUE IVTNUM = 502 C C **** TEST 502 **** C IF (ICZERO) 35020, 5020, 35020 5020 CONTINUE IVCOMP = 32767/2/1 GO TO 45020 35020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45020, 5031, 45020 45020 IF (IVCOMP - 16383) 25020,15020,25020 15020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5031 25020 IVFAIL = IVFAIL + 1 IVCORR = 16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 503 THROUGH TEST 507 - NEGATIVE INTEGER CONSTANTS INCLUDED C NO TRUNCATION REQUIRED C 5031 CONTINUE IVTNUM = 503 C C **** TEST 503 **** C IF (ICZERO) 35030, 5030, 35030 5030 CONTINUE IVCOMP = -24/3/4 GO TO 45030 35030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45030, 5041, 45030 45030 IF (IVCOMP +2) 25030,15030,25030 15030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5041 25030 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5041 CONTINUE IVTNUM = 504 C C **** TEST 504 **** C IF (ICZERO) 35040, 5040, 35040 5040 CONTINUE IVCOMP = 330/(-3)/2 GO TO 45040 35040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45040, 5051, 45040 45040 IF (IVCOMP + 55) 25040,15040,25040 15040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5051 25040 IVFAIL = IVFAIL + 1 IVCORR = -55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5051 CONTINUE IVTNUM = 505 C C **** TEST 505 **** C IF (ICZERO) 35050, 5050, 35050 5050 CONTINUE IVCOMP = 15249/(-13)/(-51) GO TO 45050 35050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45050, 5061, 45050 45050 IF (IVCOMP - 23) 25050,15050,25050 15050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5061 25050 IVFAIL = IVFAIL + 1 IVCORR = 23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5061 CONTINUE IVTNUM = 506 C C **** TEST 506 **** C IF (ICZERO) 35060, 5060, 35060 5060 CONTINUE IVCOMP = -7150/(-2)/(-25) GO TO 45060 35060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45060, 5071, 45060 45060 IF (IVCOMP + 143) 25060,15060,25060 15060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5071 25060 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5071 CONTINUE IVTNUM = 507 C C **** TEST 507 **** C IF (ICZERO) 35070, 5070, 35070 5070 CONTINUE IVCOMP = (-32766)/(-2)/(-3) GO TO 45070 35070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45070, 5081, 45070 45070 IF (IVCOMP + 5461) 25070,15070,25070 15070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5081 25070 IVFAIL = IVFAIL + 1 IVCORR = -5461 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 508 THROUGH TEST 513 - NEGATIVE INTEGER CONSTANTS INCLUDED C TRUNCATION REQUIRED C 5081 CONTINUE IVTNUM = 508 C C **** TEST 508 **** C IF (ICZERO) 35080, 5080, 35080 5080 CONTINUE IVCOMP = -24/3/3 GO TO 45080 35080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45080, 5091, 45080 45080 IF (IVCOMP + 2) 25080,15080,25080 15080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5091 25080 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5091 CONTINUE IVTNUM = 509 C C **** TEST 509 **** C IF (ICZERO) 35090, 5090, 35090 5090 CONTINUE IVCOMP = 230/(-2)/3 GO TO 45090 35090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45090, 5101, 45090 45090 IF (IVCOMP + 38) 25090,15090,25090 15090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5101 25090 IVFAIL = IVFAIL + 1 IVCORR = -38 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5101 CONTINUE IVTNUM = 510 C C **** TEST 510 **** C IF (ICZERO) 35100, 5100, 35100 5100 CONTINUE IVCOMP = 7151/(-3)/(-10) GO TO 45100 35100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45100, 5111, 45100 45100 IF (IVCOMP - 238) 25100,15100,25100 15100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5111 25100 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5111 CONTINUE IVTNUM = 511 C C **** TEST 511 **** C IF (ICZERO) 35110, 5110, 35110 5110 CONTINUE IVCOMP = -15248/(-51)/(-13) GO TO 45110 35110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45110, 5121, 45110 45110 IF (IVCOMP + 22) 25110,15110,25110 15110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5121 25110 IVFAIL = IVFAIL + 1 IVCORR = -22 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5121 CONTINUE IVTNUM = 512 C C **** TEST 512 **** C IF (ICZERO) 35120, 5120, 35120 5120 CONTINUE IVCOMP = (-27342)/(-4)/(-3) GO TO 45120 35120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45120, 5131, 45120 45120 IF (IVCOMP + 2278) 25120,15120,25120 15120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5131 25120 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5131 CONTINUE IVTNUM = 513 C C **** TEST 513 **** C IF (ICZERO) 35130, 5130, 35130 5130 CONTINUE IVCOMP = 32767/2/(-1) GO TO 45130 35130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45130, 5141, 45130 45130 IF (IVCOMP + 16383) 25130,15130,25130 15130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5141 25130 IVFAIL = IVFAIL + 1 IVCORR = -16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 514 THROUGH TEST 519 - POSITIVE AND NEGATIVE SIGNED INTEGER C CONSTANTS IN ARITHMETIC EXPRESSION. C 5141 CONTINUE IVTNUM = 514 C C **** TEST 514 **** C IF (ICZERO) 35140, 5140, 35140 5140 CONTINUE IVCOMP = +24/(-3)/4 GO TO 45140 35140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45140, 5151, 45140 45140 IF (IVCOMP +2) 25140,15140,25140 15140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5151 25140 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5151 CONTINUE IVTNUM = 515 C C **** TEST 515 **** C IF (ICZERO) 35150, 5150, 35150 5150 CONTINUE IVCOMP = 24/(+3)/(-4) GO TO 45150 35150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45150, 5161, 45150 45150 IF (IVCOMP +2) 25150,15150,25150 15150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5161 25150 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5161 CONTINUE IVTNUM = 516 C C **** TEST 516 **** C IF (ICZERO) 35160, 5160, 35160 5160 CONTINUE IVCOMP = -24/(-3)/(+4) GO TO 45160 35160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45160, 5171, 45160 45160 IF (IVCOMP -2) 25160,15160,25160 15160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5171 25160 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5171 CONTINUE IVTNUM = 517 C C **** TEST 517 **** C IF (ICZERO) 35170, 5170, 35170 5170 CONTINUE IVCOMP = -16811/(-16812)/(+1) GO TO 45170 35170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45170, 5181, 45170 45170 IF (IVCOMP - 0) 25170,15170,25170 15170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5181 25170 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5181 CONTINUE IVTNUM = 518 C C **** TEST 518 **** C IF (ICZERO) 35180, 5180, 35180 5180 CONTINUE IVCOMP = (-16811) / (+16811) / (+1) GO TO 45180 35180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45180, 5191, 45180 45180 IF (IVCOMP +1) 25180,15180,25180 15180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5191 25180 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5191 CONTINUE IVTNUM = 519 C C **** TEST 519 **** C IF (ICZERO) 35190, 5190, 35190 5190 CONTINUE IVCOMP = (-335)/(+168)/(+1) GO TO 45190 35190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45190, 5201, 45190 45190 IF (IVCOMP + 1) 25190,15190,25190 15190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5201 25190 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 5201 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 FM037) END *END-OF,FM037 FM038.f 480976033 170 2 100666 21554 ` *HEADER,FORTR,FM038 *FILES1,FORTR,FM038,X C COMMENT SECTION C C FM038 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR /, INTEGER CONSTANTS AND AN INTEGER VARIABLE. BOTH C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER CONSTANTS C AND THE INTEGER VARIABLE. C C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED C IN THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) (INTEGER CONSTANT/INTEGER CONSTANT)/INTEGER CONSTANT C (2) INTEGER CONSTANT/(INTEGER CONSTANT/INTEGER CONSTANT) C (3) INTEGER VARIABLE/INTEGER CONSTANT C (4) INTEGER CONSTANT/INTEGER VARIABLE C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 520 THROUGH TEST 525 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE = (INT.CON./INT.CON.)/INT.CON. C NO TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND C NEGATIVE CONSTANTS ARE INCLUDED. C 5201 CONTINUE IVTNUM = 520 C C **** TEST 520 **** C IF (ICZERO) 35200, 5200, 35200 5200 CONTINUE IVCOMP = (24/3)/4 GO TO 45200 35200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45200, 5211, 45200 45200 IF (IVCOMP - 2) 25200,15200,25200 15200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5211 25200 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5211 CONTINUE IVTNUM = 521 C C **** TEST 521 **** C IF (ICZERO) 35210, 5210, 35210 5210 CONTINUE IVCOMP = (7150/2)/25 GO TO 45210 35210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45210, 5221, 45210 45210 IF (IVCOMP - 143) 25210,15210,25210 15210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5221 25210 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5221 CONTINUE IVTNUM = 522 C C **** TEST 522 **** C IF (ICZERO) 35220, 5220, 35220 5220 CONTINUE IVCOMP = (-24/3)/4 GO TO 45220 35220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45220, 5231, 45220 45220 IF (IVCOMP + 2) 25220,15220,25220 15220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5231 25220 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5231 CONTINUE IVTNUM = 523 C C **** TEST 523 **** C IF (ICZERO) 35230, 5230, 35230 5230 CONTINUE IVCOMP = (330/(-3))/2 GO TO 45230 35230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45230, 5241, 45230 45230 IF (IVCOMP + 55) 25230,15230,25230 15230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5241 25230 IVFAIL = IVFAIL + 1 IVCORR = -55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5241 CONTINUE IVTNUM = 524 C C **** TEST 524 **** C IF (ICZERO) 35240, 5240, 35240 5240 CONTINUE IVCOMP = ((-7150)/(-2))/(-25) GO TO 45240 35240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45240, 5251, 45240 45240 IF (IVCOMP + 143) 25240,15240,25240 15240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5251 25240 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5251 CONTINUE IVTNUM = 525 C C **** TEST 525 **** C IF (ICZERO) 35250, 5250, 35250 5250 CONTINUE IVCOMP = (15249/(-13))/(-51) GO TO 45250 35250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45250, 5261, 45250 45250 IF (IVCOMP - 23) 25250,15250,25250 15250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5261 25250 IVFAIL = IVFAIL + 1 IVCORR = 23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 526 THROUGH TEST 531 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM IV = (IC/IC)/IC. C TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND C NEGATIVE CONSTANTS ARE INCLUDED. C 5261 CONTINUE IVTNUM = 526 C C **** TEST 526 **** C IF (ICZERO) 35260, 5260, 35260 5260 CONTINUE IVCOMP = (24/3)/3 GO TO 45260 35260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45260, 5271, 45260 45260 IF (IVCOMP - 2) 25260,15260,25260 15260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5271 25260 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5271 CONTINUE IVTNUM = 527 C C **** TEST 527 **** C IF (ICZERO) 35270, 5270, 35270 5270 CONTINUE IVCOMP = (7151/3)/10 GO TO 45270 35270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45270, 5281, 45270 45270 IF (IVCOMP - 238) 25270,15270,25270 15270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5281 25270 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5281 CONTINUE IVTNUM = 528 C C **** TEST 528 **** C IF (ICZERO) 35280, 5280, 35280 5280 CONTINUE IVCOMP = (-24/3)/3 GO TO 45280 35280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45280, 5291, 45280 45280 IF (IVCOMP + 2) 25280,15280,25280 15280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5291 25280 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5291 CONTINUE IVTNUM = 529 C C **** TEST 529 **** C IF (ICZERO) 35290, 5290, 35290 5290 CONTINUE IVCOMP = (7151/(-3))/10 GO TO 45290 35290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45290, 5301, 45290 45290 IF (IVCOMP + 238) 25290,15290,25290 15290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5301 25290 IVFAIL = IVFAIL + 1 IVCORR = -238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5301 CONTINUE IVTNUM = 530 C C **** TEST 530 **** C IF (ICZERO) 35300, 5300, 35300 5300 CONTINUE IVCOMP = (15248/(-51))/(-23) GO TO 45300 35300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45300, 5311, 45300 45300 IF (IVCOMP - 12) 25300,15300,25300 15300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5311 25300 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5311 CONTINUE IVTNUM = 531 C C **** TEST 531 **** C IF (ICZERO) 35310, 5310, 35310 5310 CONTINUE IVCOMP = ((-27342)/(-4))/(-3) GO TO 45310 35310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45310, 5321, 45310 45310 IF (IVCOMP + 2278) 25310,15310,25310 15310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5321 25310 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 532 THROUGH TEST 537 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM IV = IC/(IC/IC). C NO TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND C NEGATIVE CONSTANTS ARE INCLUDED. C 5321 CONTINUE IVTNUM = 532 C C **** TEST 532 **** C IF (ICZERO) 35320, 5320, 35320 5320 CONTINUE IVCOMP = 24/(8/4) GO TO 45320 35320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45320, 5331, 45320 45320 IF (IVCOMP - 12) 25320,15320,25320 15320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5331 25320 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5331 CONTINUE IVTNUM = 533 C C **** TEST 533 **** C IF (ICZERO) 35330, 5330, 35330 5330 CONTINUE IVCOMP = 7150/(25/5) GO TO 45330 35330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45330, 5341, 45330 45330 IF (IVCOMP - 1430) 25330,15330,25330 15330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5341 25330 IVFAIL = IVFAIL + 1 IVCORR = 1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5341 CONTINUE IVTNUM = 534 C C **** TEST 534 **** C IF (ICZERO) 35340, 5340, 35340 5340 CONTINUE IVCOMP = -24/(8/4) GO TO 45340 35340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45340, 5351, 45340 45340 IF (IVCOMP + 12) 25340,15340,25340 15340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5351 25340 IVFAIL = IVFAIL + 1 IVCORR = -12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5351 CONTINUE IVTNUM = 535 C C **** TEST 535 **** C IF (ICZERO) 35350, 5350, 35350 5350 CONTINUE IVCOMP = 24/((-8)/4) GO TO 45350 35350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45350, 5361, 45350 45350 IF (IVCOMP + 12) 25350,15350,25350 15350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5361 25350 IVFAIL = IVFAIL + 1 IVCORR = -12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5361 CONTINUE IVTNUM = 536 C C **** TEST 536 **** C IF (ICZERO) 35360, 5360, 35360 5360 CONTINUE IVCOMP = (-7150)/((-25)/(-5)) GO TO 45360 35360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45360, 5371, 45360 45360 IF (IVCOMP + 1430) 25360,15360,25360 15360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5371 25360 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5371 CONTINUE IVTNUM = 537 C C **** TEST 537 **** C IF (ICZERO) 35370, 5370, 35370 5370 CONTINUE IVCOMP = -7150/(25/(-5)) GO TO 45370 35370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45370, 5381, 45370 45370 IF (IVCOMP - 1430) 25370,15370,25370 15370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5381 25370 IVFAIL = IVFAIL + 1 IVCORR = 1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 538 THROUGH TEST 543 CONTAIN ARITHMETIC ASSIGMMENT STATEMENTS C OF THE FORM IV = IC/(IC/IC). C TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND C NEGATIVE CONSTANTS ARE INCLUDED. C 5381 CONTINUE IVTNUM = 538 C C **** TEST 538 **** C IF (ICZERO) 35380, 5380, 35380 5380 CONTINUE IVCOMP = 29/(5/2) GO TO 45380 35380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45380, 5391, 45380 45380 IF (IVCOMP - 14) 25380,15380,25380 15380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5391 25380 IVFAIL = IVFAIL + 1 IVCORR = 14 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5391 CONTINUE IVTNUM = 539 C C **** TEST 539 **** C IF (ICZERO) 35390, 5390, 35390 5390 CONTINUE IVCOMP = 7154/(26/5) GO TO 45390 35390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45390, 5401, 45390 45390 IF (IVCOMP - 1430) 25390,15390,25390 15390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5401 25390 IVFAIL = IVFAIL + 1 IVCORR = 1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5401 CONTINUE IVTNUM = 540 C C **** TEST 540 **** C IF (ICZERO) 35400, 5400, 35400 5400 CONTINUE IVCOMP = -7154/(26/5) GO TO 45400 35400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45400, 5411, 45400 45400 IF (IVCOMP + 1430) 25400,15400,25400 15400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5411 25400 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5411 CONTINUE IVTNUM = 541 C C **** TEST 541 **** C IF (ICZERO) 35410, 5410, 35410 5410 CONTINUE IVCOMP = (-7154)/((-26)/5) GO TO 45410 35410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45410, 5421, 45410 45410 IF (IVCOMP - 1430) 25410,15410,25410 15410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5421 25410 IVFAIL = IVFAIL + 1 IVCORR = 1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5421 CONTINUE IVTNUM = 542 C C **** TEST 542 **** C IF (ICZERO) 35420, 5420, 35420 5420 CONTINUE IVCOMP = 7154/((-26)/(-5)) GO TO 45420 35420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45420, 5431, 45420 45420 IF (IVCOMP - 1430) 25420,15420,25420 15420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5431 25420 IVFAIL = IVFAIL + 1 IVCORR = 1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5431 CONTINUE IVTNUM = 543 C C **** TEST 543 **** C IF (ICZERO) 35430, 5430, 35430 5430 CONTINUE IVCOMP = (-7154)/((-26)/(-5)) GO TO 45430 35430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45430, 5441, 45430 45430 IF (IVCOMP + 1430) 25430,15430,25430 15430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5441 25430 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 544 THROUGH TEST 547 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE = INTEGER VARIABLE/INTEGER CONSTANT C 5441 CONTINUE IVTNUM = 544 C C **** TEST 544 **** C IF (ICZERO) 35440, 5440, 35440 5440 CONTINUE IVON01 = 75 IVCOMP = IVON01/25 GO TO 45440 35440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45440, 5451, 45440 45440 IF (IVCOMP - 3) 25440,15440,25440 15440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5451 25440 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5451 CONTINUE IVTNUM = 545 C C **** TEST 545 **** C IF (ICZERO) 35450, 5450, 35450 5450 CONTINUE IVON01 = -3575 IVCOMP = IVON01/25 GO TO 45450 35450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45450, 5461, 45450 45450 IF (IVCOMP + 143) 25450,15450,25450 15450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5461 25450 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5461 CONTINUE IVTNUM = 546 C C **** TEST 546 **** C IF (ICZERO) 35460, 5460, 35460 5460 CONTINUE IVON01 = 3575 IVCOMP = IVON01/(-143) GO TO 45460 35460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45460, 5471, 45460 45460 IF (IVCOMP + 25) 25460,15460,25460 15460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5471 25460 IVFAIL = IVFAIL + 1 IVCORR = -25 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5471 CONTINUE IVTNUM = 547 C C **** TEST 547 **** C IF (ICZERO) 35470, 5470, 35470 5470 CONTINUE IVON01 = 959 IVCOMP = IVON01/120 GO TO 45470 35470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45470, 5481, 45470 45470 IF (IVCOMP -7) 25470,15470,25470 15470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5481 25470 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 548 THROUGH TEST 551 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE =INTEGER CONSTANT/INTEGER VARIABLE. C 5481 CONTINUE IVTNUM = 548 C C **** TEST 548 **** C IF (ICZERO) 35480, 5480, 35480 5480 CONTINUE IVON02 = 25 IVCOMP = 75/IVON02 GO TO 45480 35480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45480, 5491, 45480 45480 IF (IVCOMP - 3) 25480,15480,25480 15480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5491 25480 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5491 CONTINUE IVTNUM = 549 C C **** TEST 549 **** C IF (ICZERO) 35490, 5490, 35490 5490 CONTINUE IVON02 = -25 IVCOMP = 3579/IVON02 GO TO 45490 35490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45490, 5501, 45490 45490 IF (IVCOMP + 143) 25490,15490,25490 15490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5501 25490 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5501 CONTINUE IVTNUM = 550 C C **** TEST 550 **** C IF (ICZERO) 35500, 5500, 35500 5500 CONTINUE IVON02 = -143 IVCOMP = (-3575)/IVON02 GO TO 45500 35500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45500, 5511, 45500 45500 IF (IVCOMP - 25) 25500,15500,25500 15500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5511 25500 IVFAIL = IVFAIL + 1 IVCORR = 25 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5511 CONTINUE IVTNUM = 551 C C **** TEST 551 **** C IF (ICZERO) 35510, 5510, 35510 5510 CONTINUE IVON02 = 120 IVCOMP = -959/IVON02 GO TO 45510 35510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45510, 5521, 45510 45510 IF (IVCOMP + 7) 25510,15510,25510 15510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5521 25510 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 5521 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 FM038) END *END-OF,FM038 FM039.f 480976036 170 2 100666 20638 ` *HEADER,FORTR,FM039 *FILES1,FORTR,FM039,X C COMMENT SECTION C C FM039 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR /, INTEGER CONSTANTS AND AN INTEGER VARIABLE. BOTH C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER CONSTANTS C AND THE INTEGER VARIABLE. C C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED C IN THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER VARIABLE/INTEGER CONSTANT/INTEGER CONSTANT C INTEGER CONSTANT/INTEGER VARIABLE/INTEGER CONSTANT C INTEGER CONSTANT/INTEGER CONSTANT/INTEGER VARIABLE C (2) SAME AS (1) BUT WITH PARENTHESES TO GROUP ELEMENTS C IN THE ARITHMETIC EXPRESSION. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 552 THROUGH TEST 557 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM IV = IV/IC/IC. C 5521 CONTINUE IVTNUM = 552 C C **** TEST 552 **** C IF (ICZERO) 35520, 5520, 35520 5520 CONTINUE IVON01 = 24 IVCOMP = IVON01/3/4 GO TO 45520 35520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45520, 5531, 45520 45520 IF (IVCOMP - 2) 25520,15520,25520 15520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5531 25520 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5531 CONTINUE IVTNUM = 553 C C **** TEST 553 **** C IF (ICZERO) 35530, 5530, 35530 5530 CONTINUE IVON01 = 7151 IVCOMP = IVON01/3/10 GO TO 45530 35530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45530, 5541, 45530 45530 IF (IVCOMP - 238) 25530,15530,25530 15530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5541 25530 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5541 CONTINUE IVTNUM = 554 C C **** TEST 554 **** C IF (ICZERO) 35540, 5540, 35540 5540 CONTINUE IVON01 = -330 IVCOMP = IVON01/3/2 GO TO 45540 35540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45540, 5551, 45540 45540 IF (IVCOMP + 55) 25540,15540,25540 15540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5551 25540 IVFAIL = IVFAIL + 1 IVCORR = -55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5551 CONTINUE IVTNUM = 555 C C **** TEST 555 **** C IF (ICZERO) 35550, 5550, 35550 5550 CONTINUE IVON01 = 15249 IVCOMP = IVON01/(-13)/51 GO TO 45550 35550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45550, 5561, 45550 45550 IF (IVCOMP + 23) 25550,15550,25550 15550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5561 25550 IVFAIL = IVFAIL + 1 IVCORR = -23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5561 CONTINUE IVTNUM = 556 C C **** TEST 556 **** C IF (ICZERO) 35560, 5560, 35560 5560 CONTINUE IVON01 = -27342 IVCOMP = IVON01/(-4)/(-3) GO TO 45560 35560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45560, 5571, 45560 45560 IF (IVCOMP + 2278) 25560,15560,25560 15560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5571 25560 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5571 CONTINUE IVTNUM = 557 C C **** TEST 557 **** C IF (ICZERO) 35570, 5570, 35570 5570 CONTINUE IVON01 = -27342 IVCOMP = -IVON01/4/(-3) GO TO 45570 35570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45570, 5581, 45570 45570 IF (IVCOMP + 2278) 25570,15570,25570 15570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5581 25570 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 558 THROUGH TEST 563 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM IV=IC/IV/IC. C 5581 CONTINUE IVTNUM = 558 C C **** TEST 558 **** C IF (ICZERO) 35580, 5580, 35580 5580 CONTINUE IVON02 = 3 IVCOMP = 24/IVON02/4 GO TO 45580 35580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45580, 5591, 45580 45580 IF (IVCOMP - 2) 25580,15580,25580 15580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5591 25580 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5591 CONTINUE IVTNUM = 559 C C **** TEST 559 **** C IF (ICZERO) 35590, 5590, 35590 5590 CONTINUE IVON02 = 3 IVCOMP = 7151/IVON02/10 GO TO 45590 35590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45590, 5601, 45590 45590 IF (IVCOMP - 238) 25590,15590,25590 15590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5601 25590 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5601 CONTINUE IVTNUM = 560 C C **** TEST 560 **** C IF (ICZERO) 35600, 5600, 35600 5600 CONTINUE IVON02 = -3 IVCOMP = 330/IVON02/2 GO TO 45600 35600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45600, 5611, 45600 45600 IF (IVCOMP +55) 25600,15600,25600 15600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5611 25600 IVFAIL = IVFAIL + 1 IVCORR = -55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5611 CONTINUE IVTNUM = 561 C C **** TEST 561 **** C IF (ICZERO) 35610, 5610, 35610 5610 CONTINUE IVON02 = +13 IVCOMP = 15249/IVON02/(-51) GO TO 45610 35610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45610, 5621, 45610 45610 IF (IVCOMP + 23) 25610,15610,25610 15610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5621 25610 IVFAIL = IVFAIL + 1 IVCORR = -23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5621 CONTINUE IVTNUM = 562 C C **** TEST 562 **** C IF (ICZERO) 35620, 5620, 35620 5620 CONTINUE IVON02 = -4 IVCOMP = (-27342)/IVON02/(-3) GO TO 45620 35620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45620, 5631, 45620 45620 IF (IVCOMP + 2278) 25620,15620,25620 15620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5631 25620 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5631 CONTINUE IVTNUM = 563 C C **** TEST 563 **** C IF (ICZERO) 35630, 5630, 35630 5630 CONTINUE IVON02 = -4 IVCOMP = -27342/(-IVON02)/(-3) GO TO 45630 35630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45630, 5641, 45630 45630 IF (IVCOMP - 2278) 25630,15630,25630 15630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5641 25630 IVFAIL = IVFAIL + 1 IVCORR = 2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 564 THROUGH TEST 569 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM IV = IC/IC/IV. C 5641 CONTINUE IVTNUM = 564 C C **** TEST 564 **** C IF (ICZERO) 35640, 5640, 35640 5640 CONTINUE IVON03 = 4 IVCOMP = 24/3/IVON03 GO TO 45640 35640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45640, 5651, 45640 45640 IF (IVCOMP -2) 25640,15640,25640 15640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5651 25640 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5651 CONTINUE IVTNUM = 565 C C **** TEST 565 **** C IF (ICZERO) 35650, 5650, 35650 5650 CONTINUE IVON03 = 10 IVCOMP = 7151/3/IVON03 GO TO 45650 35650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45650, 5661, 45650 45650 IF (IVCOMP - 238) 25650,15650,25650 15650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5661 25650 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5661 CONTINUE IVTNUM = 566 C C **** TEST 566 **** C IF (ICZERO) 35660, 5660, 35660 5660 CONTINUE IVON03 = -2 IVCOMP = 330/3/IVON03 GO TO 45660 35660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45660, 5671, 45660 45660 IF (IVCOMP + 55) 25660,15660,25660 15660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5671 25660 IVFAIL = IVFAIL + 1 IVCORR = -55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5671 CONTINUE IVTNUM = 567 C C **** TEST 567 **** C IF (ICZERO) 35670, 5670, 35670 5670 CONTINUE IVON03 = +51 IVCOMP = 15249/(-13)/IVON03 GO TO 45670 35670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45670, 5681, 45670 45670 IF (IVCOMP + 23) 25670,15670,25670 15670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5681 25670 IVFAIL = IVFAIL + 1 IVCORR = -23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5681 CONTINUE IVTNUM = 568 C C **** TEST 568 **** C IF (ICZERO) 35680, 5680, 35680 5680 CONTINUE IVON03 = -3 IVCOMP = (-27342)/(-4)/IVON03 GO TO 45680 35680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45680, 5691, 45680 45680 IF (IVCOMP + 2278) 25680,15680,25680 15680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5691 25680 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5691 CONTINUE IVTNUM = 569 C C **** TEST 569 **** C IF (ICZERO) 35690, 5690, 35690 5690 CONTINUE IVON03 = -3 IVCOMP = -27342/(-4)/(-IVON03) GO TO 45690 35690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45690, 5701, 45690 45690 IF (IVCOMP - 2278) 25690,15690,25690 15690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5701 25690 IVFAIL = IVFAIL + 1 IVCORR = 2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 570 AND TEST 571 - IV =(IV/IC)/IC C 5701 CONTINUE IVTNUM = 570 C C **** TEST 570 **** C IF (ICZERO) 35700, 5700, 35700 5700 CONTINUE IVON01 = 24 IVCOMP = (IVON01/3)/4 GO TO 45700 35700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45700, 5711, 45700 45700 IF (IVCOMP -2) 25700,15700,25700 15700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5711 25700 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5711 CONTINUE IVTNUM = 571 C C **** TEST 571 **** C IF (ICZERO) 35710, 5710, 35710 5710 CONTINUE IVON01 = -330 IVCOMP = (IVON01/(-3))/4 GO TO 45710 35710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45710, 5721, 45710 45710 IF (IVCOMP - 27) 25710,15710,25710 15710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5721 25710 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 572 AND TEST 573 - IV= IV/(IC/IC) C 5721 CONTINUE IVTNUM = 572 C C **** TEST 572 **** C IF (ICZERO) 35720, 5720, 35720 5720 CONTINUE IVON01 = 24 IVCOMP = IVON01/(8/4) GO TO 45720 35720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45720, 5731, 45720 45720 IF (IVCOMP - 12) 25720,15720,25720 15720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5731 25720 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5731 CONTINUE IVTNUM = 573 C C **** TEST 573 **** C IF (ICZERO) 35730, 5730, 35730 5730 CONTINUE IVON01 = -7154 IVCOMP = -IVON01/((-26)/5) GO TO 45730 35730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45730, 5741, 45730 45730 IF (IVCOMP + 1430) 25730,15730,25730 15730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5741 25730 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 574 AND TEST 575 - IV=(IC/IV)/IC C 5741 CONTINUE IVTNUM = 574 C C **** TEST 574 **** C IF (ICZERO) 35740, 5740, 35740 5740 CONTINUE IVON02 = 3 IVCOMP = (24/IVON02)/4 GO TO 45740 35740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45740, 5751, 45740 45740 IF (IVCOMP -2) 25740,15740,25740 15740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5751 25740 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5751 CONTINUE IVTNUM = 575 C C **** TEST 575 **** C IF (ICZERO) 35750, 5750, 35750 5750 CONTINUE IVON02 = -3 IVCOMP = (-330/IVON02)/(-4) GO TO 45750 35750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45750, 5761, 45750 45750 IF (IVCOMP + 27) 25750,15750,25750 15750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5761 25750 IVFAIL = IVFAIL + 1 IVCORR = -27 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 576 AND TEST 577 - IV=IC/(IV/IC) C 5761 CONTINUE IVTNUM = 576 C C **** TEST 576 **** C IF (ICZERO) 35760, 5760, 35760 5760 CONTINUE IVON02 = 8 IVCOMP = 24/(IVON02/4) GO TO 45760 35760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45760, 5771, 45760 45760 IF (IVCOMP - 12) 25760,15760,25760 15760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5771 25760 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5771 CONTINUE IVTNUM = 577 C C **** TEST 577 **** C IF (ICZERO) 35770, 5770, 35770 5770 CONTINUE IVON02 = -26 IVCOMP = 7154/((-IVON02)/(-5)) GO TO 45770 35770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45770, 5781, 45770 45770 IF (IVCOMP + 1430) 25770,15770,25770 15770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5781 25770 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 578 AND TEST 579 - IV=(IC/IC)/IV C 5781 CONTINUE IVTNUM = 578 C C **** TEST 578 **** C IF (ICZERO) 35780, 5780, 35780 5780 CONTINUE IVON03 = 4 IVCOMP = (24/3)/IVON03 GO TO 45780 35780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45780, 5791, 45780 45780 IF (IVCOMP - 2) 25780,15780,25780 15780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5791 25780 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5791 CONTINUE IVTNUM = 579 C C **** TEST 579 **** C IF (ICZERO) 35790, 5790, 35790 5790 CONTINUE IVON03 = -4 IVCOMP = (330/(-3))/IVON03 GO TO 45790 35790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45790, 5801, 45790 45790 IF (IVCOMP - 27) 25790,15790,25790 15790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5801 25790 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 580 AND TEST 581 - IV= IC/(IC/IV) C 5801 CONTINUE IVTNUM = 580 C C **** TEST 580 **** C IF (ICZERO) 35800, 5800, 35800 5800 CONTINUE IVON03 = 4 IVCOMP = 24/(8/IVON03) GO TO 45800 35800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45800, 5811, 45800 45800 IF (IVCOMP - 12) 25800,15800,25800 15800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5811 25800 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5811 CONTINUE IVTNUM = 581 C C **** TEST 581 **** C IF (ICZERO) 35810, 5810, 35810 5810 CONTINUE IVON03 = -5 IVCOMP = -7154/((-26)/IVON03) GO TO 45810 35810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45810, 5821, 45810 45810 IF (IVCOMP + 1430) 25810,15810,25810 15810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5821 25810 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C **** END OF TESTS **** 5821 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 FM039) END *END-OF,FM039 FM040.f 480976039 170 2 100666 23544 ` *HEADER,FORTR,FM040 *FILES1,FORTR,FM040,X C COMMENT SECTION C C FM040 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC C OPERATOR /, INTEGER VARIABLES AND AN INTEGER CONSTANT. BOTH C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER VARIABLES C AND THE INTEGER CONSTANT. C C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT AND C TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED IN C THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER VARIABLE/INTEGER VARIABLE C (2) INTEGER VARIABLE/INTEGER VARIABLE/INTEGER CONSTANT C INTEGER VARIABLE/INTEGER CONSTANT/INTEGER VARIABLE C INTEGER CONSTANT/INTEGER VARIABLE/INTEGER VARIABLE C (3) SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS C IN THE ARITHMETIC EXPRESSION. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 582 THROUGH TEST 597 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE=INTEGER VARIABLE/INTEGER VAR. C C TEST 582 THROUGH TEST 585 - POSITIVE VALUES C NO TRUNCATION REQUIRED C 5821 CONTINUE IVTNUM = 582 C C **** TEST 582 **** C IF (ICZERO) 35820, 5820, 35820 5820 CONTINUE IVON01 = 4 IVON02 = 2 IVCOMP = IVON01 / IVON02 GO TO 45820 35820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45820, 5831, 45820 45820 IF (IVCOMP -2) 25820,15820,25820 15820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5831 25820 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5831 CONTINUE IVTNUM = 583 C C **** TEST 583 **** C IF (ICZERO) 35830, 5830, 35830 5830 CONTINUE IVON01 = 3575 IVON02 = 25 IVCOMP = IVON01/IVON02 GO TO 45830 35830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45830, 5841, 45830 45830 IF (IVCOMP - 143) 25830,15830,25830 15830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5841 25830 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5841 CONTINUE IVTNUM = 584 C C **** TEST 584 **** C IF (ICZERO) 35840, 5840, 35840 5840 CONTINUE IVON01 = 6170 IVON02 = 1234 IVCOMP = IVON01/IVON02 GO TO 45840 35840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45840, 5851, 45840 45840 IF (IVCOMP - 5) 25840,15840,25840 15840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5851 25840 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5851 CONTINUE IVTNUM = 585 C C **** TEST 585 **** C IF (ICZERO) 35850, 5850, 35850 5850 CONTINUE IVON01 = 32767 IVON02 = 1 IVCOMP = IVON01/IVON02 GO TO 45850 35850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45850, 5861, 45850 45850 IF (IVCOMP - 32767) 25850,15850,25850 15850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5861 25850 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 586 THROUGH TEST 589 - POSITIVE VALUES C TRUNCATION OF RESULT REQUIRED C 5861 CONTINUE IVTNUM = 586 C C **** TEST 586 **** C IF (ICZERO) 35860, 5860, 35860 5860 CONTINUE IVON01 = 2 IVON02 = 3 IVCOMP = IVON01/IVON02 GO TO 45860 35860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45860, 5871, 45860 45860 IF (IVCOMP) 25860,15860,25860 15860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5871 25860 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5871 CONTINUE IVTNUM = 587 C C **** TEST 587 **** C IF (ICZERO) 35870, 5870, 35870 5870 CONTINUE IVON01 = 959 IVON02 = 120 IVCOMP = IVON01/IVON02 GO TO 45870 35870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45870, 5881, 45870 45870 IF (IVCOMP - 7) 25870,15870,25870 15870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5881 25870 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5881 CONTINUE IVTNUM = 588 C C **** TEST 588 **** C IF (ICZERO) 35880, 5880, 35880 5880 CONTINUE IVON01 = 26606 IVON02 = 8 IVCOMP = IVON01/IVON02 GO TO 45880 35880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45880, 5891, 45880 45880 IF (IVCOMP - 3325) 25880,15880,25880 15880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5891 25880 IVFAIL = IVFAIL + 1 IVCORR = 3325 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5891 CONTINUE IVTNUM = 589 C C **** TEST 589 **** C IF (ICZERO) 35890, 5890, 35890 5890 CONTINUE IVON01 = 25603 IVON02 = 10354 IVCOMP = IVON01/IVON02 GO TO 45890 35890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45890, 5901, 45890 45890 IF (IVCOMP - 2) 25890,15890,25890 15890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5901 25890 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 590 THROUGH TEST 593 - NEGATIVE VALUES INCLUDED C NO TRUNCATION REQUIRED C 5901 CONTINUE IVTNUM = 590 C C **** TEST 590 **** C IF (ICZERO) 35900, 5900, 35900 5900 CONTINUE IVON01 = 75 IVON02 = -25 IVCOMP = IVON01/IVON02 GO TO 45900 35900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45900, 5911, 45900 45900 IF (IVCOMP + 3) 25900,15900,25900 15900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5911 25900 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5911 CONTINUE IVTNUM = 591 C C **** TEST 591 **** C IF (ICZERO) 35910, 5910, 35910 5910 CONTINUE IVON01 = -6170 IVON02 = -1234 IVCOMP = IVON01/IVON02 GO TO 45910 35910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45910, 5921, 45910 45910 IF (IVCOMP -5) 25910,15910,25910 15910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5921 25910 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5921 CONTINUE IVTNUM = 592 C C **** TEST 592 **** C IF (ICZERO) 35920, 5920, 35920 5920 CONTINUE IVON01 = 32766 IVON02 = -2 IVCOMP =-IVON01/IVON02 GO TO 45920 35920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45920, 5931, 45920 45920 IF (IVCOMP - 16383) 25920,15920,25920 15920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5931 25920 IVFAIL = IVFAIL + 1 IVCORR = 16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5931 CONTINUE IVTNUM = 593 C C **** TEST 593 **** C IF (ICZERO) 35930, 5930, 35930 5930 CONTINUE IVON01 = 4 IVON02 = 2 IVCOMP = IVON01/(-IVON02) GO TO 45930 35930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45930, 5941, 45930 45930 IF (IVCOMP + 2) 25930,15930,25930 15930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5941 25930 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 594 THROUGH TEST 597 - NEGATIVE VALUES INCLUDED C TRUNCATION OF RESULT REQUIRED C 5941 CONTINUE IVTNUM = 594 C C **** TEST 594 **** C IF (ICZERO) 35940, 5940, 35940 5940 CONTINUE IVON01 = -5 IVON02 = 2 IVCOMP = IVON01/IVON02 GO TO 45940 35940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45940, 5951, 45940 45940 IF (IVCOMP + 2) 25940,15940,25940 15940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5951 25940 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5951 CONTINUE IVTNUM = 595 C C **** TEST 595 **** C IF (ICZERO) 35950, 5950, 35950 5950 CONTINUE IVON01 = -25603 IVON02 = -10354 IVCOMP = IVON01/IVON02 GO TO 45950 35950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45950, 5961, 45950 45950 IF (IVCOMP -2) 25950,15950,25950 15950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5961 25950 IVFAIL = IVFAIL + 1 IVCORR =2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5961 CONTINUE IVTNUM = 596 C C **** TEST 596 **** C IF (ICZERO) 35960, 5960, 35960 5960 CONTINUE IVON01 = 25603 IVON02 = 10354 IVCOMP = -IVON01/IVON02 GO TO 45960 35960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45960, 5971, 45960 45960 IF (IVCOMP +2) 25960,15960,25960 15960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5971 25960 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5971 CONTINUE IVTNUM = 597 C C **** TEST 597 **** C IF (ICZERO) 35970, 5970, 35970 5970 CONTINUE IVON01 = 25603 IVON02 = -2 IVCOMP = -(IVON01/IVON02) GO TO 45970 35970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45970, 5981, 45970 45970 IF (IVCOMP - 12801) 25970,15970,25970 15970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5981 25970 IVFAIL = IVFAIL + 1 IVCORR = 12801 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 598 THROUGH TEST 614 CONTAIN TWO INTEGER VARIABLES, AN C INTEGER CONSTANT AND OPERATOR / IN AN ARITHMETIC EXPRESSION. C C TEST 598 THROUGH TEST 603 - NO PARENS TO GROUP ELEMENTS BUT C THERE ARE PARENS SURROUNDING NEGATIVE CONSTANTS C C TEST 598 AND TEST 599 - IV = IV/IV/IC. C 5981 CONTINUE IVTNUM = 598 C C **** TEST 598 **** C IF (ICZERO) 35980, 5980, 35980 5980 CONTINUE IVON01 = 32766 IVON02 = 2 IVCOMP = IVON01/IVON02/3 GO TO 45980 35980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45980, 5991, 45980 45980 IF (IVCOMP - 5461) 25980,15980,25980 15980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5991 25980 IVFAIL = IVFAIL + 1 IVCORR = 5461 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5991 CONTINUE IVTNUM = 599 C C **** TEST 599 **** C IF (ICZERO) 35990, 5990, 35990 5990 CONTINUE IVON01 = 7151 IVON02 = 3 IVCOMP = IVON01/IVON02/10 GO TO 45990 35990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45990, 6001, 45990 45990 IF (IVCOMP -238) 25990,15990,25990 15990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6001 25990 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 600 AND TEST 601 - IV= IV/IC/IV. C 6001 CONTINUE IVTNUM = 600 C C **** TEST 600 **** C IF (ICZERO) 36000, 6000, 36000 6000 CONTINUE IVON01 = -7150 IVON03 = -25 IVCOMP = IVON01/(-2)/IVON03 GO TO 46000 36000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46000, 6011, 46000 46000 IF (IVCOMP + 143) 26000,16000,26000 16000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6011 26000 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6011 CONTINUE IVTNUM = 601 C C **** TEST 601 **** C IF (ICZERO) 36010, 6010, 36010 6010 CONTINUE IVON01 = 32767 IVON03 = -1 IVCOMP = IVON01/2/IVON03 GO TO 46010 36010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46010, 6021, 46010 46010 IF (IVCOMP + 16383) 26010,16010,26010 16010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6021 26010 IVFAIL = IVFAIL + 1 IVCORR = -16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6021 CONTINUE IVTNUM = 602 C C **** TEST 602 **** C C TEST 602 AND TEST 603 - IV=IC/IV/IV C C IF (ICZERO) 36020, 6020, 36020 6020 CONTINUE IVON02 = 13 IVON03 = 51 IVCOMP = 15249/IVON02/IVON03 GO TO 46020 36020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46020, 6031, 46020 46020 IF (IVCOMP - 23) 26020,16020,26020 16020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6031 26020 IVFAIL = IVFAIL + 1 IVCORR = 23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6031 CONTINUE IVTNUM = 603 C C **** TEST 603 **** C IF (ICZERO) 36030, 6030, 36030 6030 CONTINUE IVON02 = -13 IVON03 = -51 IVCOMP = -15249/IVON02/IVON03 GO TO 46030 36030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46030, 6041, 46030 46030 IF (IVCOMP +23) 26030,16030,26030 16030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6041 26030 IVFAIL = IVFAIL + 1 IVCORR = -23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 604 THROUGH TEST 614 - PARENTHESES ARE USED TO GROUP C ELEMENTS IN THE ARITHMETIC EXPRESSIONS. C C TEST 604 AND TEST 605 - IV=(IV/IV)/IC. C 6041 CONTINUE IVTNUM = 604 C C **** TEST 604 **** C IF (ICZERO) 36040, 6040, 36040 6040 CONTINUE IVON01 = 32766 IVON02 = 2 IVCOMP =(IVON01/IVON02)/3 GO TO 46040 36040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46040, 6051, 46040 46040 IF (IVCOMP -5461) 26040,16040,26040 16040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6051 26040 IVFAIL = IVFAIL + 1 IVCORR = 5461 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6051 CONTINUE IVTNUM = 605 C C **** TEST 605 **** C IF (ICZERO) 36050, 6050, 36050 6050 CONTINUE IVON01 = 7151 IVON02 = 3 IVCOMP = (IVON01/IVON02)/10 GO TO 46050 36050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46050, 6061, 46050 46050 IF (IVCOMP - 238) 26050,16050,26050 16050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6061 26050 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 606 AND TEST 607 - IV=IV/(IV/IC). C 6061 CONTINUE IVTNUM = 606 C C **** TEST 606 **** C IF (ICZERO) 36060, 6060, 36060 6060 CONTINUE IVON01 = -7154 IVON02 = 26 IVCOMP = IVON01/(IVON02/5) GO TO 46060 36060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46060, 6071, 46060 46060 IF (IVCOMP + 1430) 26060,16060,26060 16060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6071 26060 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6071 CONTINUE IVTNUM = 607 C C **** TEST 607 **** C IF (ICZERO) 36070, 6070, 36070 6070 CONTINUE IVON01 = 29 IVON02 = -5 IVCOMP = IVON01/(IVON02/2) GO TO 46070 36070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46070, 6081, 46070 46070 IF (IVCOMP + 14) 26070,16070,26070 16070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6081 26070 IVFAIL = IVFAIL + 1 IVCORR = -14 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 608 AND TEST 609 - IV = (IV/IC)/IV. C 6081 CONTINUE IVTNUM = 608 C C **** TEST 608 **** C IF (ICZERO) 36080, 6080, 36080 6080 CONTINUE IVON01 = 24 IVON03 = 3 IVCOMP = (IVON01/3)/IVON03 GO TO 46080 36080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46080, 6091, 46080 46080 IF (IVCOMP -2) 26080,16080,26080 16080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6091 26080 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6091 CONTINUE IVTNUM = 609 C C **** TEST 609 **** C IF (ICZERO) 36090, 6090, 36090 6090 CONTINUE IVON01 = 7151 IVON03 = 10 IVCOMP = (IVON01/(-3))/IVON03 GO TO 46090 36090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46090, 6101, 46090 46090 IF (IVCOMP + 238) 26090,16090,26090 16090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6101 26090 IVFAIL = IVFAIL + 1 IVCORR = -238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 610 AND TEST 611 - IV=IV(IC/IV) C 6101 CONTINUE IVTNUM = 610 C C **** TEST 610 **** C IF (ICZERO) 36100, 6100, 36100 6100 CONTINUE IVON01 = -7154 IVON03 = -5 IVCOMP = IVON01/((-26)/IVON03) GO TO 46100 36100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46100, 6111, 46100 46100 IF (IVCOMP + 1430) 26100,16100,26100 16100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6111 26100 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6111 CONTINUE IVTNUM = 611 C C **** TEST 611 **** C IF (ICZERO) 36110, 6110, 36110 6110 CONTINUE IVON01 = 7150 IVON03 = 5 IVCOMP = IVON01/((+25)/IVON03) GO TO 46110 36110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46110, 6121, 46110 46110 IF (IVCOMP -1430) 26110,16110,26110 16110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6121 26110 IVFAIL = IVFAIL + 1 IVCORR = 1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6121 CONTINUE IVTNUM = 612 C C **** TEST 612 **** C TEST 612 - IV= (IC/IV)/IV C IF (ICZERO) 36120, 6120, 36120 6120 CONTINUE IVON02 = -3 IVON03 = -10 IVCOMP = (-7154/IVON02)/IVON03 GO TO 46120 36120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46120, 6131, 46120 46120 IF (IVCOMP + 238) 26120,16120,26120 16120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6131 26120 IVFAIL = IVFAIL + 1 IVCORR = -238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 613 AND TEST 614 - IV=IC/(IV/IV) C 6131 CONTINUE IVTNUM = 613 C C **** TEST 613 **** C IF (ICZERO) 36130, 6130, 36130 6130 CONTINUE IVON02 = 8 IVON03 = 4 IVCOMP = 24/(IVON02/IVON03) GO TO 46130 36130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46130, 6141, 46130 46130 IF (IVCOMP - 12) 26130,16130,26130 16130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6141 26130 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6141 CONTINUE IVTNUM = 614 C C **** TEST 614 **** C IF (ICZERO) 36140, 6140, 36140 6140 CONTINUE IVON02 = 25 IVON03 = 5 IVCOMP = 7150/(-(IVON02/IVON03)) GO TO 46140 36140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46140, 6151, 46140 46140 IF (IVCOMP + 1430) 26140,16140,26140 16140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6151 26140 IVFAIL = IVFAIL + 1 IVCORR = -1430 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 6151 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 FM040) END *END-OF,FM040 FM041.f 480976042 170 2 100666 22277 ` *HEADER,FORTR,FM041 *FILES1,FORTR,FM041,X C COMMENT SECTION C C FM041 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE C FORM INTEGER VARIABLE = PRIMARY ** PRIMARY C WHERE THE FIRST OF TWO PRIMARIES IS AN INTEGER VARIABLE OR AN C INTEGER CONSTANT AND THE SECOND PRIMARY IS AN INTEGER CONSTANT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 615 THROUGH TEST 631 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE = INTEGER CONSTANT ** INTEGER CON. C C TEST 632 THROUGH TEST 648 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE = INTEGER VARIABLE ** INTEGER CON. C C IVTNUM = 615 C C **** TEST 615 **** C TEST 615 - SMALL NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36150, 6150, 36150 6150 CONTINUE IVCOMP = 1 ** 0 GO TO 46150 36150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46150, 6161, 46150 46150 IF (IVCOMP - 1) 26150,16150,26150 16150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6161 26150 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6161 CONTINUE IVTNUM = 616 C C **** TEST 616 **** C TEST 616 - ZERO BASE TO FIRST POWER C IF (ICZERO) 36160, 6160, 36160 6160 CONTINUE IVCOMP = 0 ** 1 GO TO 46160 36160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46160, 6171, 46160 46160 IF (IVCOMP) 26160,16160,26160 16160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6171 26160 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6171 CONTINUE IVTNUM = 617 C C **** TEST 617 **** C TEST 617 - BASE =1; EXPONENT = 1 C IF (ICZERO) 36170, 6170, 36170 6170 CONTINUE IVCOMP = 1 ** 1 GO TO 46170 36170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46170, 6181, 46170 46170 IF (IVCOMP - 1) 26170,16170,26170 16170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6181 26170 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6181 CONTINUE IVTNUM = 618 C C **** TEST 618 **** C TEST 618 - LARGE NUMBER BASE; EXPONENT = 1 C IF (ICZERO) 36180, 6180, 36180 6180 CONTINUE IVCOMP = 32767 ** 1 GO TO 46180 36180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46180, 6191, 46180 46180 IF (IVCOMP - 32767) 26180,16180,26180 16180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6191 26180 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6191 CONTINUE IVTNUM = 619 C C **** TEST 619 **** C TEST 619 - LARGE EXPONENT C IF (ICZERO) 36190, 6190, 36190 6190 CONTINUE IVCOMP = 1 ** 32767 GO TO 46190 36190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46190, 6201, 46190 46190 IF (IVCOMP - 1) 26190,16190,26190 16190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6201 26190 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6201 CONTINUE IVTNUM = 620 C C **** TEST 620 **** C TEST 620 - ZERO BASE; LARGE NUMBER EXPONENT C IF (ICZERO) 36200, 6200, 36200 6200 CONTINUE IVCOMP = 0 ** 32767 GO TO 46200 36200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46200, 6211, 46200 46200 IF (IVCOMP) 26200,16200,26200 16200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6211 26200 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6211 CONTINUE IVTNUM = 621 C C **** TEST 621 **** C TEST 621 -LARGE NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36210, 6210, 36210 6210 CONTINUE IVCOMP = 32767 ** 0 GO TO 46210 36210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46210, 6221, 46210 46210 IF (IVCOMP - 1) 26210,16210,26210 16210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6221 26210 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6221 CONTINUE IVTNUM = 622 C C **** TEST 622 **** C TEST 622 -EXPONENT IS POWER OF TWO C IF (ICZERO) 36220, 6220, 36220 6220 CONTINUE IVCOMP = 181 ** 2 GO TO 46220 36220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46220, 6231, 46220 46220 IF (IVCOMP - 32761) 26220,16220,26220 16220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6231 26220 IVFAIL = IVFAIL + 1 IVCORR = 32761 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6231 CONTINUE IVTNUM = 623 C C **** TEST 623 **** C TEST 623 - BASE AND EXPONENT ARE BOTH POWERS OF TWO C IF (ICZERO) 36230, 6230, 36230 6230 CONTINUE IVCOMP = 2 ** 8 GO TO 46230 36230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46230, 6241, 46230 46230 IF (IVCOMP - 256) 26230,16230,26230 16230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6241 26230 IVFAIL = IVFAIL + 1 IVCORR = 256 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6241 CONTINUE C C TESTS 624 AND 625 TEST TO ENSURE EXPONENTIATION OPERATOR IS C NOT COMMUTATIVE C IVTNUM = 624 C C **** TEST 624 **** C IF (ICZERO) 36240, 6240, 36240 6240 CONTINUE IVCOMP = 3 ** 9 GO TO 46240 36240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46240, 6251, 46240 46240 IF (IVCOMP - 19683) 26240,16240,26240 16240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6251 26240 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6251 CONTINUE IVTNUM = 625 C C **** TEST 625 **** C IF (ICZERO) 36250, 6250, 36250 6250 CONTINUE IVCOMP = 9 ** 3 GO TO 46250 36250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46250, 6261, 46250 46250 IF (IVCOMP - 729) 26250,16250,26250 16250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6261 26250 IVFAIL = IVFAIL + 1 IVCORR = 729 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6261 CONTINUE C C TESTS 626 THROUGH 631 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN C OF THE RESULTS C IVTNUM = 626 C C **** TEST 626 **** C IF (ICZERO) 36260, 6260, 36260 6260 CONTINUE IVCOMP = 1 ** 2 GO TO 46260 36260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46260, 6271, 46260 46260 IF (IVCOMP - 1) 26260,16260,26260 16260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6271 26260 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6271 CONTINUE IVTNUM = 627 C C **** TEST 627 **** C IF (ICZERO) 36270, 6270, 36270 6270 CONTINUE IVCOMP= (-1) ** 2 GO TO 46270 36270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46270, 6281, 46270 46270 IF (IVCOMP - 1) 26270,16270,26270 16270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6281 26270 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6281 CONTINUE IVTNUM = 628 C C **** TEST 628 **** C IF (ICZERO) 36280, 6280, 36280 6280 CONTINUE IVCOMP = 7 ** 3 GO TO 46280 36280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46280, 6291, 46280 46280 IF (IVCOMP - 343) 26280,16280,26280 16280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6291 26280 IVFAIL = IVFAIL + 1 IVCORR = 343 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6291 CONTINUE IVTNUM = 629 C C **** TEST 629 **** C IF (ICZERO) 36290, 6290, 36290 6290 CONTINUE IVCOMP = (-7) ** 3 GO TO 46290 36290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46290, 6301, 46290 46290 IF (IVCOMP + 343) 26290,16290,26290 16290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6301 26290 IVFAIL = IVFAIL + 1 IVCORR = -343 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6301 CONTINUE IVTNUM = 630 C C **** TEST 630 **** C IF (ICZERO) 36300, 6300, 36300 6300 CONTINUE IVCOMP = 7 ** 4 GO TO 46300 36300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46300, 6311, 46300 46300 IF (IVCOMP - 2401) 26300,16300,26300 16300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6311 26300 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6311 CONTINUE IVTNUM = 631 C C **** TEST 631 **** C IF (ICZERO) 36310, 6310, 36310 6310 CONTINUE IVCOMP = (-7) ** 4 GO TO 46310 36310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46310, 6321, 46310 46310 IF (IVCOMP - 2401) 26310,16310,26310 16310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6321 26310 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6321 CONTINUE IVTNUM = 632 C C **** TEST 632 **** C TEST 632 - SMALL NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36320, 6320, 36320 6320 CONTINUE IVON01 = 1 IVCOMP = IVON01 ** 1 GO TO 46320 36320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46320, 6331, 46320 46320 IF (IVCOMP - 1) 26320,16320,26320 16320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6331 26320 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6331 CONTINUE IVTNUM = 633 C C **** TEST 633 **** C TEST 633 - ZERO BASE TO FIRST POWER C IF (ICZERO) 36330, 6330, 36330 6330 CONTINUE IVON01 = 0 IVCOMP = IVON01 ** 1 GO TO 46330 36330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46330, 6341, 46330 46330 IF (IVCOMP) 26330,16330,26330 16330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6341 26330 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6341 CONTINUE IVTNUM = 634 C C **** TEST 634 **** C TEST 634 - BASE =1; EXPONENT = 1 C IF (ICZERO) 36340, 6340, 36340 6340 CONTINUE IVON01 = 1 IVCOMP = IVON01 ** 1 GO TO 46340 36340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46340, 6351, 46340 46340 IF (IVCOMP - 1) 26340,16340,26340 16340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6351 26340 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6351 CONTINUE IVTNUM = 635 C C **** TEST 635 **** C TEST 635 - LARGE EXPONENT C IF (ICZERO) 36350, 6350, 36350 6350 CONTINUE IVON01 = 1 IVCOMP = IVON01 ** 32767 GO TO 46350 36350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46350, 6361, 46350 46350 IF (IVCOMP - 1) 26350,16350,26350 16350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6361 26350 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6361 CONTINUE IVTNUM = 636 C C **** TEST 636 **** C TEST 636 - LARGE NUMBER BASE; EXPONENT = 1 C IF (ICZERO) 36360, 6360, 36360 6360 CONTINUE IVON01 = 32767 IVCOMP = IVON01 ** 1 GO TO 46360 36360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46360, 6371, 46360 46360 IF (IVCOMP - 32767) 26360,16360,26360 16360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6371 26360 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6371 CONTINUE IVTNUM = 637 C C **** TEST 637 **** C TEST 637 - ZERO BASE; LARGE NUMBER EXPONENT C IF (ICZERO) 36370, 6370, 36370 6370 CONTINUE IVON01 = 0 IVCOMP = IVON01 ** 32767 GO TO 46370 36370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46370, 6381, 46370 46370 IF (IVCOMP) 26370,16370,26370 16370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6381 26370 IVFAIL = IVFAIL +1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6381 CONTINUE IVTNUM = 638 C C **** TEST 638 **** C TEST 638 -LARGE NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36380, 6380, 36380 6380 CONTINUE IVON01 = 32767 IVCOMP = IVON01 ** 0 GO TO 46380 36380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46380, 6391, 46380 46380 IF (IVCOMP - 1) 26380,16380,26380 16380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6391 26380 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6391 CONTINUE IVTNUM = 639 C C **** TEST 639 **** C TEST 639 -EXPONENT IS POWER OF TWO C IF (ICZERO) 36390, 6390, 36390 6390 CONTINUE IVON01 = 181 IVCOMP = IVON01 ** 2 GO TO 46390 36390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46390, 6401, 46390 46390 IF (IVCOMP - 32761) 26390,16390,26390 16390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6401 26390 IVFAIL = IVFAIL + 1 IVCORR = 32761 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6401 CONTINUE IVTNUM = 640 C C **** TEST 640 **** C TEST 640 - BASE AND EXPONENT ARE BOTH POWERS OF TWO C IF (ICZERO) 36400, 6400, 36400 6400 CONTINUE IVON01 = 2 IVCOMP = IVON01 ** 8 GO TO 46400 36400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46400, 6411, 46400 46400 IF (IVCOMP - 256) 26400,16400,26400 16400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6411 26400 IVFAIL = IVFAIL + 1 IVCORR = 256 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6411 CONTINUE C C TESTS 641 AND 642 TEST TO ENSURE EXPONENTIATION OPERATOR IS C NOT COMMUTATIVE C IVTNUM = 641 C C **** TEST 641 **** C IF (ICZERO) 36410, 6410, 36410 6410 CONTINUE IVON01 = 3 IVCOMP = IVON01 ** 9 GO TO 46410 36410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46410, 6421, 46410 46410 IF (IVCOMP - 19683) 26410,16410,26410 16410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6421 26410 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6421 CONTINUE IVTNUM = 642 C C **** TEST 642 **** C IF (ICZERO) 36420, 6420, 36420 6420 CONTINUE IVON01 = 9 IVCOMP = IVON01 ** 3 GO TO 46420 36420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46420, 6431, 46420 46420 IF (IVCOMP - 729) 26420,16420,26420 16420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6431 26420 IVFAIL = IVFAIL + 1 IVCORR = 729 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6431 CONTINUE C C TESTS 643 THROUGH 648 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN C OF THE RESULTS C IVTNUM = 643 C C **** TEST 643 **** C IF (ICZERO) 36430, 6430, 36430 6430 CONTINUE IVON01 = 1 IVCOMP = IVON01 ** 2 GO TO 46430 36430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46430, 6441, 46430 46430 IF (IVCOMP - 1) 26430,16430,26430 16430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6441 26430 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6441 CONTINUE IVTNUM = 644 C C **** TEST 644 **** C IF (ICZERO) 36440, 6440, 36440 6440 CONTINUE IVON01 = -1 IVCOMP = IVON01 ** 2 GO TO 46440 36440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46440, 6451, 46440 46440 IF (IVCOMP - 1) 26440,16440,26440 16440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6451 26440 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6451 CONTINUE IVTNUM = 645 C C **** TEST 645 **** C IF (ICZERO) 36450, 6450, 36450 6450 CONTINUE IVON01 = 7 IVCOMP = IVON01 ** 3 GO TO 46450 36450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46450, 6461, 46450 46450 IF (IVCOMP - 343) 26450,16450,26450 16450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6461 26450 IVFAIL = IVFAIL + 1 IVCORR = 343 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6461 CONTINUE IVTNUM = 646 C C **** TEST 646 **** C IF (ICZERO) 36460, 6460, 36460 6460 CONTINUE IVON01 = -7 IVCOMP = IVON01 ** 3 GO TO 46460 36460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46460, 6471, 46460 46460 IF (IVCOMP + 343) 26460,16460,26460 16460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6471 26460 IVFAIL = IVFAIL + 1 IVCORR = -343 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6471 CONTINUE IVTNUM = 647 C C **** TEST 647 **** C IF (ICZERO) 36470, 6470, 36470 6470 CONTINUE IVON01 = 7 IVCOMP = IVON01 ** 4 GO TO 46470 36470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46470, 6481, 46470 46470 IF (IVCOMP - 2401) 26470,16470,26470 16470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6481 26470 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6481 CONTINUE IVTNUM = 648 C C **** TEST 648 **** C IF (ICZERO) 36480, 6480, 36480 6480 CONTINUE IVON01 = -7 IVCOMP = IVON01 ** 4 GO TO 46480 36480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46480, 6491, 46480 46480 IF (IVCOMP - 2401) 26480,16480,26480 16480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6491 26480 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6491 CONTINUE C *** END OF TESTS *** 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 FM041) END *END-OF,FM041 FM042.f 480976044 170 2 100666 22985 ` *HEADER,FORTR,FM042 *FILES1,FORTR,FM042,X C COMMENT SECTION C C FM042 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE C FORM INTEGER VARIABLE = PRIMARY ** PRIMARY C WHERE THE FIRST OF TWO PRIMARIES IS AN INTEGER VARIABLE OR AN C INTEGER CONSTANT AND THE SECOND PRIMARY IS AN INTEGER VARIABLE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 649 THROUGH TEST 665 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE = INTEGER CONST. ** INTEGER VAR. C C TEST 666 THROUGH TEST 682 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM INTEGER VARIABLE = INTEGER VAR. ** INTEGER VAR. C C IVTNUM = 649 C C **** TEST 649 **** C TEST 649 - SMALL NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36490, 6490, 36490 6490 CONTINUE IVON01 = 0 IVCOMP = 1 ** IVON01 GO TO 46490 36490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46490, 6501, 46490 46490 IF (IVCOMP - 1) 26490,16490,26490 16490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6501 26490 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 6501 CONTINUE IVTNUM = 650 C C **** TEST 650 **** C TEST 650 - ZERO BASE TO FIRST POWER C IF (ICZERO) 36500, 6500, 36500 6500 CONTINUE IVON01 = 1 IVCOMP = 0 ** IVON01 GO TO 46500 36500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46500, 6511, 46500 46500 IF (IVCOMP) 26500,16500,26500 16500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6511 26500 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6511 CONTINUE IVTNUM = 651 C C **** TEST 651 **** C TEST 651 - BASE =1; EXPONENT = 1 C IF (ICZERO) 36510, 6510, 36510 6510 CONTINUE IVON01 = 1 IVCOMP = 1 ** IVON01 GO TO 46510 36510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46510, 6521, 46510 46510 IF (IVCOMP - 1) 26510,16510,26510 16510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6521 26510 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6521 CONTINUE IVTNUM = 652 C C **** TEST 652 **** C TEST 652 - LARGE EXPONENT C IF (ICZERO) 36520, 6520, 36520 6520 CONTINUE IVON01 = 32767 IVCOMP = 1 ** IVON01 GO TO 46520 36520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46520, 6531, 46520 46520 IF (IVCOMP - 1) 26520,16520,26520 16520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6531 26520 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6531 CONTINUE IVTNUM = 653 C C **** TEST 653 **** C TEST 653 - LARGE NUMBER BASE; EXPONENT = 1 C IF (ICZERO) 36530, 6530, 36530 6530 CONTINUE IVON01 = 1 IVCOMP = 32767 ** IVON01 GO TO 46530 36530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46530, 6541, 46530 46530 IF (IVCOMP - 32767) 26530,16530,26530 16530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6541 26530 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6541 CONTINUE IVTNUM = 654 C C **** TEST 654 **** C TEST 654 - ZERO BASE; LARGE NUMBER EXPONENT C IF (ICZERO) 36540, 6540, 36540 6540 CONTINUE IVON01 = 32767 IVCOMP = 0 ** IVON01 GO TO 46540 36540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46540, 6551, 46540 46540 IF (IVCOMP) 26540,16540,26540 16540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6551 26540 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6551 CONTINUE IVTNUM = 655 C C **** TEST 655 **** C TEST 655 -LARGE NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36550, 6550, 36550 6550 CONTINUE IVON01 = 0 IVCOMP = 32767 ** IVON01 GO TO 46550 36550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46550, 6561, 46550 46550 IF (IVCOMP -1) 26550,16550,26550 16550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6561 26550 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6561 CONTINUE IVTNUM = 656 C C **** TEST 656 **** C TEST 656 -EXPONENT IS POWER OF TWO C IF (ICZERO) 36560, 6560, 36560 6560 CONTINUE IVON01 = 2 IVCOMP = 181 ** IVON01 GO TO 46560 36560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46560, 6571, 46560 46560 IF (IVCOMP - 32761) 26560,16560,26560 16560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6571 26560 IVFAIL = IVFAIL + 1 IVCORR = 32761 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6571 CONTINUE IVTNUM = 657 C C **** TEST 657 **** C TEST 657 - BASE AND EXPONENT ARE BOTH POWERS OF TWO C IF (ICZERO) 36570, 6570, 36570 6570 CONTINUE IVON01 = 8 IVCOMP = 2 ** IVON01 GO TO 46570 36570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46570, 6581, 46570 46570 IF (IVCOMP - 256) 26570,16570,26560 16570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6581 26570 IVFAIL = IVFAIL + 1 IVCORR = 256 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6581 CONTINUE C C TESTS 658 AND 659 TEST TO ENSURE EXPONENTIATION OPERATOR IS C NOT COMMUTATIVE C IVTNUM = 658 C C **** TEST 658 **** C IF (ICZERO) 36580, 6580, 36580 6580 CONTINUE IVON01 = 9 IVCOMP = 3 ** IVON01 GO TO 46580 36580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46580, 6591, 46580 46580 IF (IVCOMP - 19683) 26580,16580,26580 16580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6591 26580 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6591 CONTINUE IVTNUM = 659 C C **** TEST 659 **** C IF (ICZERO) 36590, 6590, 36590 6590 CONTINUE IVON01 = 3 IVCOMP = 9 ** IVON01 GO TO 46590 36590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46590, 6601, 46590 46590 IF (IVCOMP - 729) 26590,16590,26590 16590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6601 26590 IVFAIL = IVFAIL + 1 IVCORR = 729 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6601 CONTINUE C C TESTS 660 THROUGH 665 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN C OF THE RESULTS C IVTNUM = 660 C C **** TEST 660 **** C IF (ICZERO) 36600, 6600, 36600 6600 CONTINUE IVON01 = 2 IVCOMP = 1 ** IVON01 GO TO 46600 36600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46600, 6611, 46600 46600 IF (IVCOMP - 1) 26600,16600,26600 16600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6611 26600 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6611 CONTINUE IVTNUM = 661 C C **** TEST 661 **** C IF (ICZERO) 36610, 6610, 36610 6610 CONTINUE IVON01 = 2 IVCOMP = ( -1) ** IVON01 GO TO 46610 36610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46610, 6621, 46610 46610 IF (IVCOMP - 1) 26610,16610,26610 16610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6621 26610 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6621 CONTINUE IVTNUM = 662 C C **** TEST 662 **** C IF (ICZERO) 36620, 6620, 36620 6620 CONTINUE IVON01 = 3 IVCOMP = 7 ** IVON01 GO TO 46620 36620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46620, 6631, 46620 46620 IF (IVCOMP - 343) 26620,16620,26620 16620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6631 26620 IVFAIL = IVFAIL + 1 IVCORR = 343 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6631 CONTINUE IVTNUM = 663 C C **** TEST 663 **** C IF (ICZERO) 36630, 6630, 36630 6630 CONTINUE IVON01 = 3 IVCOMP = (-7) **IVON01 GO TO 46630 36630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46630, 6641, 46630 46630 IF (IVCOMP + 343) 26630,16630,26630 16630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6641 26630 IVFAIL = IVFAIL + 1 IVCORR = -343 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6641 CONTINUE IVTNUM = 664 C C **** TEST 664 **** C IF (ICZERO) 36640, 6640, 36640 6640 CONTINUE IVON01 = 4 IVCOMP = 7 ** IVON01 GO TO 46640 36640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46640, 6651, 46640 46640 IF (IVCOMP - 2401) 26640,16640,26640 16640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6651 26640 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6651 CONTINUE IVTNUM = 665 C C **** TEST 665 **** C IF (ICZERO) 36650, 6650, 36650 6650 CONTINUE IVON01 = 4 IVCOMP = (-7) ** IVON01 GO TO 46650 36650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46650, 6661, 46650 46650 IF (IVCOMP - 2401) 26650,16650,26650 16650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6661 26650 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6661 CONTINUE IVTNUM = 666 C C **** TEST 666 **** C TEST 666 - SMALL NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36660, 6660, 36660 6660 CONTINUE IVON01 = 1 IVON02 = 0 IVCOMP = IVON01 ** IVON02 GO TO 46660 36660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46660, 6671, 46660 46660 IF (IVCOMP - 1) 26660,16660,26660 16660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6671 26660 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6671 CONTINUE IVTNUM = 667 C C **** TEST 667 **** C TEST 667 - ZERO BASE TO FIRST POWER C IF (ICZERO) 36670, 6670, 36670 6670 CONTINUE IVON01 = 0 IVON02 = 1 IVCOMP = IVON01 ** IVON02 GO TO 46670 36670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46670, 6681, 46670 46670 IF (IVCOMP) 26670,16670,26670 16670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6681 26670 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6681 CONTINUE IVTNUM = 668 C C **** TEST 668 **** C TEST 668 - BASE =1; EXPONENT = 1 C IF (ICZERO) 36680, 6680, 36680 6680 CONTINUE IVON01 = 1 IVON02 = 1 IVCOMP = IVON01 ** IVON02 GO TO 46680 36680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46680, 6691, 46680 46680 IF (IVCOMP - 1) 26680,16680,26680 16680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6691 26680 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6691 CONTINUE IVTNUM = 669 C C **** TEST 669 **** C TEST 669 - LARGE EXPONENT C IF (ICZERO) 36690, 6690, 36690 6690 CONTINUE IVON01 = 1 IVON02 = 32767 IVCOMP = IVON01 ** IVON02 GO TO 46690 36690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46690, 6701, 46690 46690 IF (IVCOMP - 1) 26690,16690,26690 16690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6701 26690 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6701 CONTINUE IVTNUM = 670 C C **** TEST 670 **** C TEST 670 - LARGE NUMBER BASE; EXPONENT = 1 C IF (ICZERO) 36700, 6700, 36700 6700 CONTINUE IVON01 = 32767 IVON02 = 1 IVCOMP = IVON01 ** IVON02 GO TO 46700 36700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46700, 6711, 46700 46700 IF (IVCOMP - 32767) 26700,16700,26700 16700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6711 26700 IVFAIL = IVFAIL + 1 IVCORR = 32767 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6711 CONTINUE IVTNUM = 671 C C **** TEST 671 **** C TEST 671 - ZERO BASE; LARGE NUMBER EXPONENT C IF (ICZERO) 36710, 6710, 36710 6710 CONTINUE IVON01 = 0 IVON02 = 32767 IVCOMP = IVON01 ** IVON02 GO TO 46710 36710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46710, 6721, 46710 46710 IF (IVCOMP) 26710,16710,26710 16710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6721 26710 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6721 CONTINUE IVTNUM = 672 C C **** TEST 672 **** C TEST 672 -LARGE NUMBER BASE; ZERO EXPONENT C IF (ICZERO) 36720, 6720, 36720 6720 CONTINUE IVON01 = 32767 IVON02 = 0 IVCOMP = IVON01 ** IVON02 GO TO 46720 36720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46720, 6731, 46720 46720 IF (IVCOMP -1) 26720,16720,26720 16720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6731 26720 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6731 CONTINUE IVTNUM = 673 C C **** TEST 673 **** C TEST 673 -EXPONENT IS POWER OF TWO C IF (ICZERO) 36730, 6730, 36730 6730 CONTINUE IVON01 = 181 IVON02 = 2 IVCOMP = IVON01 ** IVON02 GO TO 46730 36730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46730, 6741, 46730 46730 IF (IVCOMP - 32761) 26730,16730,26730 16730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6741 26730 IVFAIL = IVFAIL + 1 IVCORR = 32761 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6741 CONTINUE IVTNUM = 674 C C **** TEST 674 **** C TEST 674 - BASE AND EXPONENT ARE BOTH POWERS OF TWO C IF (ICZERO) 36740, 6740, 36740 6740 CONTINUE IVON01 = 2 IVON02 = 8 IVCOMP = IVON01 ** IVON02 GO TO 46740 36740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46740, 6751, 46740 46740 IF (IVCOMP - 256) 26740,16740,26740 16740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6751 26740 IVFAIL = IVFAIL + 1 IVCORR = 256 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6751 CONTINUE C C TESTS 675 AND 676 TEST TO ENSURE EXPONENTIATION OPERATOR IS C NOT COMMUTATIVE C IVTNUM = 675 C C **** TEST 675 **** C IF (ICZERO) 36750, 6750, 36750 6750 CONTINUE IVON01 = 3 IVON02 = 9 IVCOMP = IVON01 ** IVON02 GO TO 46750 36750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46750, 6761, 46750 46750 IF (IVCOMP - 19683) 26750,16750,26750 16750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6761 26750 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6761 CONTINUE IVTNUM = 676 C C **** TEST 676 **** C IF (ICZERO) 36760, 6760, 36760 6760 CONTINUE IVON01 = 9 IVON02 = 3 IVCOMP = IVON01 ** IVON02 GO TO 46760 36760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46760, 6771, 46760 46760 IF (IVCOMP - 729) 26760,16760,26760 16760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6771 26760 IVFAIL = IVFAIL + 1 IVCORR = 729 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6771 CONTINUE C C TESTS 677 THROUGH 682 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN C OF THE RESULTS C IVTNUM = 677 C C **** TEST 677 **** C IF (ICZERO) 36770, 6770, 36770 6770 CONTINUE IVON01 = 1 IVON02 = 2 IVCOMP = IVON01 ** IVON02 GO TO 46770 36770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46770, 6781, 46770 46770 IF (IVCOMP - 1) 26770,16770,26770 16770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6781 26770 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6781 CONTINUE IVTNUM = 678 C C **** TEST 678 **** C IF (ICZERO) 36780, 6780, 36780 6780 CONTINUE IVON01 = -1 IVON02 = 2 IVCOMP = IVON01 ** IVON02 GO TO 46780 36780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46780, 6791, 46780 46780 IF (IVCOMP - 1) 26780,16780,26780 16780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6791 26780 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6791 CONTINUE IVTNUM = 679 C C **** TEST 679 **** C IF (ICZERO) 36790, 6790, 36790 6790 CONTINUE IVON01 = 7 IVON02 = 3 IVCOMP = IVON01 ** IVON02 GO TO 46790 36790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46790, 6801, 46790 46790 IF (IVCOMP - 343) 26790,16790,26790 16790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6801 26790 IVFAIL = IVFAIL + 1 IVCORR = 343 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6801 CONTINUE IVTNUM = 680 C C **** TEST 680 **** C IF (ICZERO) 36800, 6800, 36800 6800 CONTINUE IVON01 = -7 IVON02 = 3 IVCOMP = IVON01 ** IVON02 GO TO 46800 36800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46800, 6811, 46800 46800 IF (IVCOMP + 343) 26800,16800,26800 16800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6811 26800 IVFAIL = IVFAIL + 1 IVCORR = -343 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6811 CONTINUE IVTNUM = 681 C C **** TEST 681 **** C IF (ICZERO) 36810, 6810, 36810 6810 CONTINUE IVON01 = 7 IVON02 = 4 IVCOMP = IVON01 ** IVON02 GO TO 46810 36810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46810, 6821, 46810 46810 IF (IVCOMP - 2401) 26810,16810,26810 16810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6821 26810 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6821 CONTINUE IVTNUM = 682 C C **** TEST 682 **** C IF (ICZERO) 36820, 6820, 36820 6820 CONTINUE IVON01 = -7 IVON02 = 4 IVCOMP = IVON01 ** IVON02 GO TO 46820 36820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46820, 6831, 46820 46820 IF (IVCOMP - 2401) 26820,16820,26820 16820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6831 26820 IVFAIL = IVFAIL + 1 IVCORR = 2401 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6831 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 FM042) END *END-OF,FM042 FM043.f 480976047 170 2 100666 24670 ` *HEADER,FORTR,FM043 *FILES1,FORTR,FM043,X C COMMENT SECTION C C FM043 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE FORM C C INTEGER VAR. = INTEGER VAR. <OP1> INTEGER VAR. <OP2> INTEGER VAR. C C WHERE <OP1> AND <OP2> ARE ARITHMETIC OPERATORS, BUT <OP1> IS C NOT THE SAME AS <OP2>. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TESTS 683 THROUGH 694 TEST STATEMENTS WHERE <OP1> IS '+' AND C <OP2> VARIES. C C TEST 695 THROUGH 706 TEST STATEMENTS WHERE <OP1> IS '-' AND C <OP2> VARIES. C C TESTS 707 THROUGH 718 TEST STATEMENTS WHERE <OP1> IS '*' AND C <OP2> VARIES. C C C C TESTS 683 THROUGH 685 TEST '+' FOLLOWED BY '-'. C IVTNUM = 683 C C **** TEST 683 **** C IF (ICZERO) 36830, 6830, 36830 6830 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + IVON02 - IVON03 GO TO 46830 36830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46830, 6841, 46830 46830 IF (IVCOMP - 51) 26830,16830,26830 16830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6841 26830 IVFAIL = IVFAIL + 1 IVCORR = 51 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6841 CONTINUE IVTNUM = 684 C C **** TEST 684 **** C IF (ICZERO) 36840, 6840, 36840 6840 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 + IVON02) - IVON03 GO TO 46840 36840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46840, 6851, 46840 46840 IF (IVCOMP - 51) 26840,16840,26840 16840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6851 26840 IVFAIL = IVFAIL + 1 IVCORR = 51 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6851 CONTINUE IVTNUM = 685 C C **** TEST 685 **** C IF (ICZERO) 36850, 6850, 36850 6850 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + (IVON02 - IVON03) GO TO 46850 36850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46850, 6861, 46850 46850 IF (IVCOMP - 51) 26850,16850,26850 16850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6861 26850 IVFAIL = IVFAIL + 1 IVCORR = 51 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6861 CONTINUE C C TESTS 686 THROUGH 688 TEST '+' FOLLOWED BY '*'. C IVTNUM = 686 C C **** TEST 686 **** C IF (ICZERO) 36860, 6860, 36860 6860 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + IVON02 * IVON03 GO TO 46860 36860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46860, 6871, 46860 46860 IF (IVCOMP - 72) 26860,16860,26860 16860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6871 26860 IVFAIL = IVFAIL + 1 IVCORR = 72 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6871 CONTINUE IVTNUM = 687 C C **** TEST 687 **** C IF (ICZERO) 36870, 6870, 36870 6870 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 + IVON02) * IVON03 GO TO 46870 36870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46870, 6881, 46870 46870 IF (IVCOMP - 162) 26870,16870,26870 16870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6881 26870 IVFAIL = IVFAIL + 1 IVCORR = 162 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6881 CONTINUE IVTNUM = 688 C C **** TEST 688 **** C IF (ICZERO) 36880, 6880, 36880 6880 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + (IVON02 * IVON03) GO TO 46880 36880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46880, 6891, 46880 46880 IF (IVCOMP - 72) 26880,16880,26880 16880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6891 26880 IVFAIL = IVFAIL + 1 IVCORR = 72 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6891 CONTINUE C C TESTS 689 THROUGH 691 TEST '+' FOLLOWED BY '/'. C IVTNUM = 689 C C **** TEST 689 **** C IF (ICZERO) 36890, 6890, 36890 6890 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + IVON02 / IVON03 GO TO 46890 36890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46890, 6901, 46890 46890 IF (IVCOMP - 48) 26890,16890,26890 16890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6901 26890 IVFAIL = IVFAIL + 1 IVCORR = 48 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6901 CONTINUE IVTNUM = 690 C C **** TEST 690 **** C IF (ICZERO) 36900, 6900, 36900 6900 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 + IVON02) / IVON03 GO TO 46900 36900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46900, 6911, 46900 46900 IF (IVCOMP - 18) 26900,16900,26900 16900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6911 26900 IVFAIL = IVFAIL + 1 IVCORR = 18 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6911 CONTINUE IVTNUM = 691 C C **** TEST 691 **** C IF (ICZERO) 36910, 6910, 36910 6910 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + (IVON02 / IVON03) GO TO 46910 36910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46910, 6921, 46910 46910 IF (IVCOMP - 48) 26910,16910,26910 16910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6921 26910 IVFAIL = IVFAIL + 1 IVCORR = 48 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6921 CONTINUE C C TESTS 692 THROUGH 694 TEST '+' FOLLOWED BY '**'. C IVTNUM = 692 C C **** TEST 692 **** C IF (ICZERO) 36920, 6920, 36920 6920 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + IVON02 ** IVON03 GO TO 46920 36920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46920, 6931, 46920 46920 IF (IVCOMP - 744) 26920,16920,26920 16920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6931 26920 IVFAIL = IVFAIL + 1 IVCORR = 744 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6931 CONTINUE IVTNUM = 693 C C **** TEST 693 **** C IF (ICZERO) 36930, 6930, 36930 6930 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 + IVON02) ** IVON03 GO TO 46930 36930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46930, 6941, 46930 46930 IF (IVCOMP - 13824) 26930,16930,26930 16930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6941 26930 IVFAIL = IVFAIL + 1 IVCORR = 13824 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6941 CONTINUE IVTNUM = 694 C C **** TEST 694 **** C IF (ICZERO) 36940, 6940, 36940 6940 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 + (IVON02 ** IVON03) GO TO 46940 36940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46940, 6951, 46940 46940 IF (IVCOMP - 744) 26940,16940,26940 16940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6951 26940 IVFAIL = IVFAIL + 1 IVCORR = 744 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6951 CONTINUE C C TESTS 695 THROUGH 697 TEST '-' FOLLOWED BY '+'. C IVTNUM = 695 C C **** TEST 695 **** C IF (ICZERO) 36950, 6950, 36950 6950 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - IVON02 + IVON03 GO TO 46950 36950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46950, 6961, 46950 46950 IF (IVCOMP - 39) 26950,16950,26950 16950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6961 26950 IVFAIL = IVFAIL + 1 IVCORR = 39 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6961 CONTINUE IVTNUM = 696 C C **** TEST 696 **** C IF (ICZERO) 36960, 6960, 36960 6960 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 - IVON02) + IVON03 GO TO 46960 36960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46960, 6971, 46960 46960 IF (IVCOMP - 39) 26960,16960,26960 16960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6971 26960 IVFAIL = IVFAIL + 1 IVCORR = 39 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6971 CONTINUE IVTNUM = 697 C C **** TEST 697 **** C IF (ICZERO) 36970, 6970, 36970 6970 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - (IVON02 + IVON03) GO TO 46970 36970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46970, 6981, 46970 46970 IF (IVCOMP - 33) 26970,16970,26970 16970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6981 26970 IVFAIL = IVFAIL + 1 IVCORR = 33 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6981 CONTINUE C C TESTS 698 THROUGH 700 TEST '-' FOLLOWED BY '*'. C IVTNUM = 698 C C **** TEST 698 **** C IF (ICZERO) 36980, 6980, 36980 6980 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - IVON02 * IVON03 GO TO 46980 36980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46980, 6991, 46980 46980 IF (IVCOMP - 18) 26980,16980,26980 16980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6991 26980 IVFAIL = IVFAIL + 1 IVCORR = 18 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6991 CONTINUE IVTNUM = 699 C C **** TEST 699 **** C IF (ICZERO) 36990, 6990, 36990 6990 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 - IVON02) * IVON03 GO TO 46990 36990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46990, 7001, 46990 46990 IF (IVCOMP - 108) 26990,16990,26990 16990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7001 26990 IVFAIL = IVFAIL + 1 IVCORR = 108 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7001 CONTINUE IVTNUM = 700 C C **** TEST 700 **** C IF (ICZERO) 37000, 7000, 37000 7000 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - (IVON02 * IVON03) GO TO 47000 37000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47000, 7011, 47000 47000 IF (IVCOMP - 18) 27000,17000,27000 17000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7011 27000 IVFAIL = IVFAIL + 1 IVCORR = 18 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7011 CONTINUE C C TESTS 701 THROUGH 703 TEST '-' FOLLOWED BY '/'. C IVTNUM = 701 C C **** TEST 701 **** C IF (ICZERO) 37010, 7010, 37010 7010 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - IVON02 / IVON03 GO TO 47010 37010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47010, 7021, 47010 47010 IF (IVCOMP - 42) 27010,17010,27010 17010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7021 27010 IVFAIL = IVFAIL + 1 IVCORR = 42 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7021 CONTINUE IVTNUM = 702 C C **** TEST 702 **** C IF (ICZERO) 37020, 7020, 37020 7020 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 - IVON02) / IVON03 GO TO 47020 37020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47020, 7031, 47020 47020 IF (IVCOMP - 12) 27020,17020,27020 17020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7031 27020 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7031 CONTINUE IVTNUM = 703 C C **** TEST 703 **** C IF (ICZERO) 37030, 7030, 37030 7030 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - (IVON02 / IVON03) GO TO 47030 37030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47030, 7041, 47030 47030 IF (IVCOMP - 42) 27030,17030,27030 17030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7041 27030 IVFAIL = IVFAIL + 1 IVCORR = 42 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7041 CONTINUE C C TESTS 704 THROUGH 706 TEST '-' FOLLOWED BY '**'. C IVTNUM = 704 C C **** TEST 704 **** C IF (ICZERO) 37040, 7040, 37040 7040 CONTINUE IVON01 = 35 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - IVON02 ** IVON03 GO TO 47040 37040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47040, 7051, 47040 47040 IF (IVCOMP + 694) 27040,17040,27040 17040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7051 27040 IVFAIL = IVFAIL + 1 IVCORR = -694 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7051 CONTINUE IVTNUM = 705 C C **** TEST 705 **** C IF (ICZERO) 37050, 7050, 37050 7050 CONTINUE IVON01 = 35 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 - IVON02) ** IVON03 GO TO 47050 37050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47050, 7061, 47050 47050 IF (IVCOMP - 17576) 27050,17050,27050 17050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7061 27050 IVFAIL = IVFAIL + 1 IVCORR = 17576 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7061 CONTINUE IVTNUM = 706 C C **** TEST 706 **** C IF (ICZERO) 37060, 7060, 37060 7060 CONTINUE IVON01 = 35 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 - (IVON02 ** IVON03) GO TO 47060 37060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47060, 7071, 47060 47060 IF (IVCOMP + 694) 27060,17060,27060 17060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7071 27060 IVFAIL = IVFAIL + 1 IVCORR = -694 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7071 CONTINUE C C TESTS 707 THROUGH 709 TEST '*' FOLLOWED BY '+'. C IVTNUM = 707 C C **** TEST 707 **** C IF (ICZERO) 37070, 7070, 37070 7070 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 * IVON02 + IVON03 GO TO 47070 37070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47070, 7081, 47070 47070 IF (IVCOMP - 408) 27070,17070,27070 17070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7081 27070 IVFAIL = IVFAIL + 1 IVCORR = 408 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7081 CONTINUE IVTNUM = 708 C C **** TEST 708 **** C IF (ICZERO) 37080, 7080, 37080 7080 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 * IVON02) + IVON03 GO TO 47080 37080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47080, 7091, 47080 47080 IF (IVCOMP - 408) 27080,17080,27080 17080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7091 27080 IVFAIL = IVFAIL + 1 IVCORR = 408 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7091 CONTINUE IVTNUM = 709 C C **** TEST 709 **** C IF (ICZERO) 37090, 7090, 37090 7090 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 * (IVON02 + IVON03) GO TO 47090 37090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47090, 7101, 47090 47090 IF (IVCOMP - 540) 27090,17090,27090 17090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7101 27090 IVFAIL = IVFAIL + 1 IVCORR = 540 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7101 CONTINUE C C TESTS 710 THROUGH 712 TEST '*' FOLLOWED BY '-'. C IVTNUM = 710 C C **** TEST 710 **** C IF (ICZERO) 37100, 7100, 37100 7100 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 * IVON02 - IVON03 GO TO 47100 37100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47100, 7111, 47100 47100 IF (IVCOMP - 402) 27100,17100,27100 17100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7111 27100 IVFAIL = IVFAIL + 1 IVCORR = 402 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7111 CONTINUE IVTNUM = 711 C C **** TEST 711 **** C IF (ICZERO) 37110, 7110, 37110 7110 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 * IVON02) - IVON03 GO TO 47110 37110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47110, 7121, 47110 47110 IF (IVCOMP - 402) 27110,17110,27110 17110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7121 27110 IVFAIL = IVFAIL + 1 IVCORR = 402 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7121 CONTINUE IVTNUM = 712 C C **** TEST 712 **** C IF (ICZERO) 37120, 7120, 37120 7120 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 * (IVON02 - IVON03) GO TO 47120 37120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47120, 7131, 47120 47120 IF (IVCOMP - 270) 27120,17120,27120 17120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7131 27120 IVFAIL = IVFAIL + 1 IVCORR = 270 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7131 CONTINUE C C TESTS 713 THROUGH 715 TEST '*' FOLLOWED BY '/'. C IVTNUM = 713 C C **** TEST 713 **** C IF (ICZERO) 37130, 7130, 37130 7130 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 * IVON02 / IVON03 GO TO 47130 37130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47130, 7141, 47130 47130 IF (IVCOMP - 135) 27130,17130,27130 17130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7141 27130 IVFAIL = IVFAIL + 1 IVCORR = 135 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7141 CONTINUE IVTNUM = 714 C C **** TEST 714 **** C IF (ICZERO) 37140, 7140, 37140 7140 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 * IVON02) / IVON03 GO TO 47140 37140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47140, 7151, 47140 47140 IF (IVCOMP - 135) 27140,17140,27140 17140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7151 27140 IVFAIL = IVFAIL + 1 IVCORR = 135 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7151 CONTINUE IVTNUM = 715 C C **** TEST 715 **** C IF (ICZERO) 37150, 7150, 37150 7150 CONTINUE IVON01 = 45 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 * (IVON02 / IVON03) GO TO 47150 37150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47150, 7161, 47150 47150 IF (IVCOMP - 135) 27150,17150,27150 17150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7161 27150 IVFAIL = IVFAIL + 1 IVCORR = 135 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7161 CONTINUE C C TESTS 716 THROUGH 718 TEST '*' FOLLOWED BY '**'. C IVTNUM = 716 C C **** TEST 716 **** C IF (ICZERO) 37160, 7160, 37160 7160 CONTINUE IVON01 = 7 IVON02 = 3 IVON03 = 3 IVCOMP = IVON01 * IVON02 ** IVON03 GO TO 47160 37160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47160, 7171, 47160 47160 IF (IVCOMP - 189) 27160,17160,27160 17160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7171 27160 IVFAIL = IVFAIL + 1 IVCORR = 189 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7171 CONTINUE IVTNUM = 717 C C **** TEST 717 **** C IF (ICZERO) 37170, 7170, 37170 7170 CONTINUE IVON01 = 7 IVON02 = 3 IVON03 = 3 IVCOMP = (IVON01 * IVON02) ** IVON03 GO TO 47170 37170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47170, 7181, 47170 47170 IF (IVCOMP - 9261) 27170,17170,27170 17170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7181 27170 IVFAIL = IVFAIL + 1 IVCORR = 9261 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7181 CONTINUE IVTNUM = 718 C C **** TEST 718 **** C IF (ICZERO) 37180, 7180, 37180 7180 CONTINUE IVON01 = 7 IVON02 = 3 IVON03 = 3 IVCOMP = IVON01 * (IVON02 ** IVON03) GO TO 47180 37180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47180, 7191, 47180 47180 IF (IVCOMP - 189) 27180,17180,27180 17180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7191 27180 IVFAIL = IVFAIL + 1 IVCORR = 189 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7191 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 FM043) END *END-OF,FM043 FM044.f 480976049 170 2 100666 20120 ` *HEADER,FORTR,FM044 *FILES1,FORTR,FM044,X C COMMENT SECTION C C FM044 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE FORM C INTEGER VAR. = INTEGER VAR. <OP1> INTEGER VAR. <OP2> INTEGER VAR. C C WHERE <OP1> AND <OP2> ARE ARITHMETIC OPERATORS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TESTS 719 THROUGH 730 TEST STATEMENTS WHERE <OP1> IS '/' AND C <OP2> VARIES. C C TESTS 731 THROUGH 746 TEST STATEMENTS WHERE <OP1> IS '**' AND C <OP2> VARIES. C C C TEST 719 THROUGH 721 TEST '/' FOLLOWED BY '+'. C IVTNUM = 719 C C **** TEST 719 **** C IF (ICZERO) 37190, 7190, 37190 7190 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 / IVON02 + IVON03 GO TO 47190 37190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47190, 7201, 47190 47190 IF (IVCOMP - 15) 27190,17190,27190 17190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7201 27190 IVFAIL = IVFAIL + 1 IVCORR = 15 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7201 CONTINUE IVTNUM = 720 C C **** TEST 720 **** C IF (ICZERO) 37200, 7200, 37200 7200 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 / IVON02) + IVON03 GO TO 47200 37200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47200, 7211, 47200 47200 IF (IVCOMP - 15) 27200,17200,27200 17200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7211 27200 IVFAIL = IVFAIL + 1 IVCORR = 15 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7211 CONTINUE IVTNUM = 721 C C **** TEST 721 **** C IF (ICZERO) 37210, 7210, 37210 7210 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 / (IVON02 + IVON03) GO TO 47210 37210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47210, 7221, 47210 47210 IF (IVCOMP - 9) 27210,17210,27210 17210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7221 27210 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7221 CONTINUE C C TEST 722 THROUGH 724 TEST '/' FOLLOWED BY '-'. C IVTNUM = 722 C C **** TEST 722 **** C IF (ICZERO) 37220, 7220, 37220 7220 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 / IVON02 - IVON03 GO TO 47220 37220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47220, 7231, 47220 47220 IF (IVCOMP - 9) 27220,17220,27220 17220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7231 27220 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7231 CONTINUE IVTNUM = 723 C C **** TEST 723 **** C IF (ICZERO) 37230, 7230, 37230 7230 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 / IVON02) - IVON03 GO TO 47230 37230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47230, 7241, 47230 47230 IF (IVCOMP - 9) 27230,17230,27230 17230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7241 27230 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7241 CONTINUE IVTNUM = 724 C C **** TEST 724 **** C IF (ICZERO) 37240, 7240, 37240 7240 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 / (IVON02 - IVON03) GO TO 47240 37240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47240, 7251, 47240 47240 IF (IVCOMP - 18) 27240,17240,27240 17240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7251 27240 IVFAIL = IVFAIL + 1 IVCORR = 18 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7251 CONTINUE C C TEST 725 THROUGH 727 TEST '/' FOLLOWED BY '*'. C IVTNUM = 725 C C **** TEST 725 **** C IF (ICZERO) 37250, 7250, 37250 7250 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 / IVON02 * IVON03 GO TO 47250 37250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47250, 7261, 47250 47250 IF (IVCOMP - 36) 27250,17250,27250 17250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7261 27250 IVFAIL = IVFAIL + 1 IVCORR = 36 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7261 CONTINUE IVTNUM = 726 C C **** TEST 726 **** C IF (ICZERO) 37260, 7260, 37260 7260 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 / IVON02) * IVON03 GO TO 47260 37260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47260, 7271, 47260 47260 IF (IVCOMP - 36) 27260,17260,27260 17260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7271 27260 IVFAIL = IVFAIL + 1 IVCORR = 36 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7271 CONTINUE IVTNUM = 727 C C **** TEST 727 **** C IF (ICZERO) 37270, 7270, 37270 7270 CONTINUE IVON01 = 108 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 / (IVON02 * IVON03) GO TO 47270 37270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47270, 7281, 47270 47270 IF (IVCOMP - 4) 27270,17270,27270 17270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7281 27270 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7281 CONTINUE C C TEST 728 THROUGH 730 TEST '/' FOLLOWED BY '**'. C IVTNUM = 728 C C **** TEST 728 **** C IF (ICZERO) 37280, 7280, 37280 7280 CONTINUE IVON01 = 108 IVON02 = 3 IVON03 = 2 IVCOMP = IVON01 / IVON02 ** IVON03 GO TO 47280 37280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47280, 7291, 47280 47280 IF (IVCOMP - 12) 27280,17280,27280 17280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7291 27280 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7291 CONTINUE IVTNUM = 729 C C **** TEST 729 **** C IF (ICZERO) 37290, 7290, 37290 7290 CONTINUE IVON01 = 108 IVON02 = 3 IVON03 = 2 IVCOMP = (IVON01 / IVON02) ** IVON03 GO TO 47290 37290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47290, 7301, 47290 47290 IF (IVCOMP - 1296) 27290,17290,27290 17290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7301 27290 IVFAIL = IVFAIL + 1 IVCORR = 1296 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7301 CONTINUE IVTNUM = 730 C C **** TEST 730 **** C IF (ICZERO) 37300, 7300, 37300 7300 CONTINUE IVON01 = 108 IVON02 = 3 IVON03 = 2 IVCOMP = IVON01 / (IVON02 ** IVON03) GO TO 47300 37300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47300, 7311, 47300 47300 IF (IVCOMP - 12) 27300,17300,27300 17300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7311 27300 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7311 CONTINUE C C TEST 731 THROUGH 733 TEST '**' FOLLOWED BY '+'. C IVTNUM = 731 C C **** TEST 731 **** C IF (ICZERO) 37310, 7310, 37310 7310 CONTINUE IVON01 = 3 IVON02 = 5 IVON03 = 4 IVCOMP = IVON01 ** IVON02 + IVON03 GO TO 47310 37310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47310, 7321, 47310 47310 IF (IVCOMP - 247) 27310,17310,27310 17310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7321 27310 IVFAIL = IVFAIL + 1 IVCORR = 247 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7321 CONTINUE IVTNUM = 732 C C **** TEST 732 **** C IF (ICZERO) 37320, 7320, 37320 7320 CONTINUE IVON01 = 3 IVON02 = 5 IVON03 = 4 IVCOMP = (IVON01 ** IVON02) + IVON03 GO TO 47320 37320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47320, 7331, 47320 47320 IF (IVCOMP - 247) 27320,17320,27320 17320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7331 27320 IVFAIL = IVFAIL + 1 IVCORR = 247 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7331 CONTINUE IVTNUM = 733 C C **** TEST 733 **** C IF (ICZERO) 37330, 7330, 37330 7330 CONTINUE IVON01 = 3 IVON02 = 5 IVON03 = 4 IVCOMP = IVON01 ** (IVON02 + IVON03) GO TO 47330 37330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47330, 7341, 47330 47330 IF (IVCOMP - 19683) 27330,17330,27330 17330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7341 27330 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7341 CONTINUE C C TEST 734 THROUGH 736 TEST '**' FOLLOWED BY '-'. C IVTNUM = 734 C C **** TEST 734 **** C IF (ICZERO) 37340, 7340, 37340 7340 CONTINUE IVON01 = 3 IVON02 = 7 IVON03 = 4 IVCOMP = IVON01 ** IVON02 - IVON03 GO TO 47340 37340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47340, 7351, 47340 47340 IF (IVCOMP - 2183) 27340,17340,27340 17340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7351 27340 IVFAIL = IVFAIL + 1 IVCORR = 2183 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7351 CONTINUE IVTNUM = 735 C C **** TEST 735 **** C IF (ICZERO) 37350, 7350, 37350 7350 CONTINUE IVON01 = 3 IVON02 = 7 IVON03 = 4 IVCOMP = (IVON01 ** IVON02) - IVON03 GO TO 47350 37350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47350, 7361, 47350 47350 IF (IVCOMP - 2183) 27350,17350,27350 17350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7361 27350 IVFAIL = IVFAIL + 1 IVCORR = 2183 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7361 CONTINUE IVTNUM = 736 C C **** TEST 736 **** C IF (ICZERO) 37360, 7360, 37360 7360 CONTINUE IVON01 = 3 IVON02 = 7 IVON03 = 4 IVCOMP = IVON01 ** (IVON02 - IVON03) GO TO 47360 37360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47360, 7371, 47360 47360 IF (IVCOMP - 27) 27360,17360,27360 17360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7371 27360 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7371 CONTINUE C C TEST 737 THROUGH 739 TEST '**' FOLLOWED BY '*'. C IVTNUM = 737 C C **** TEST 737 **** C IF (ICZERO) 37370, 7370, 37370 7370 CONTINUE IVON01 = 3 IVON02 = 3 IVON03 = 3 IVCOMP = IVON01 ** IVON02 * IVON03 GO TO 47370 37370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47370, 7381, 47370 47370 IF (IVCOMP - 81) 27370,17370,27370 17370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7381 27370 IVFAIL = IVFAIL + 1 IVCORR = 81 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7381 CONTINUE IVTNUM = 738 C C **** TEST 738 **** C IF (ICZERO) 37380, 7380, 37380 7380 CONTINUE IVON01 = 3 IVON02 = 3 IVON03 = 3 IVCOMP = (IVON01 ** IVON02) * IVON03 GO TO 47380 37380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47380, 7391, 47380 47380 IF (IVCOMP - 81) 27380,17380,27380 17380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7391 27380 IVFAIL = IVFAIL + 1 IVCORR = 81 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7391 CONTINUE IVTNUM = 739 C C **** TEST 739 **** C IF (ICZERO) 37390, 7390, 37390 7390 CONTINUE IVON01 = 3 IVON02 = 3 IVON03 = 3 IVCOMP = IVON01 ** (IVON02 * IVON03) GO TO 47390 37390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47390, 7401, 47390 47390 IF (IVCOMP - 19683) 27390,17390,27390 17390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7401 27390 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7401 CONTINUE C C TEST 740 THROUGH 742 TEST '**' FOLLOWED BY '/'. C IVTNUM = 740 C C **** TEST 740 **** C IF (ICZERO) 37400, 7400, 37400 7400 CONTINUE IVON01 = 3 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 ** IVON02 / IVON03 GO TO 47400 37400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47400, 7411, 47400 47400 IF (IVCOMP - 6561) 27400,17400,27400 17400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7411 27400 IVFAIL = IVFAIL + 1 IVCORR = 6561 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7411 CONTINUE IVTNUM = 741 C C **** TEST 741 **** C IF (ICZERO) 37410, 7410, 37410 7410 CONTINUE IVON01 = 3 IVON02 = 9 IVON03 = 3 IVCOMP = (IVON01 ** IVON02) / IVON03 GO TO 47410 37410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47410, 7421, 47410 47410 IF (IVCOMP - 6561) 27410,17410,27410 17410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7421 27410 IVFAIL = IVFAIL + 1 IVCORR = 6561 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7421 CONTINUE IVTNUM = 742 C **** TEST 742 **** C IF (ICZERO) 37420, 7420, 37420 7420 CONTINUE IVON01 = 3 IVON02 = 9 IVON03 = 3 IVCOMP = IVON01 ** (IVON02 / IVON03) GO TO 47420 37420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47420, 7431, 47420 47420 IF (IVCOMP - 27) 27420,17420,27420 17420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7431 27420 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7431 CONTINUE C C TEST 743 THROUGH 746 TEST '**' FOLLOWED BY '**'. C IVTNUM = 743 C C **** TEST 743 **** C IF (ICZERO) 37430, 7430, 37430 7430 CONTINUE IVON01 = 3 IVON02 = 3 IVON03 = 2 IVCOMP = (IVON01 ** IVON02) ** IVON03 GO TO 47430 37430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47430, 7441, 47430 47430 IF (IVCOMP - 729) 27430,17430,27430 17430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7441 27430 IVFAIL = IVFAIL + 1 IVCORR = 729 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7441 CONTINUE IVTNUM = 744 C C **** TEST 744 **** C IF (ICZERO) 37440, 7440, 37440 7440 CONTINUE IVON01 = 3 IVON02 = 3 IVON03 = 2 IVCOMP = IVON01 ** (IVON02 ** IVON03) GO TO 47440 37440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47440, 7451, 47440 47440 IF (IVCOMP - 19683) 27440,17440,27440 17440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7451 27440 IVFAIL = IVFAIL + 1 IVCORR = 19683 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7451 CONTINUE IVTNUM = 745 C C **** TEST 745 **** C IF (ICZERO) 37450, 7450, 37450 7450 CONTINUE IVON01 = -3 IVON02 = 3 IVON03 = 2 IVCOMP = (IVON01 ** IVON02) ** IVON03 GO TO 47450 37450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47450, 7461, 47450 47450 IF (IVCOMP - 729) 27450,17450,27450 17450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7461 27450 IVFAIL = IVFAIL + 1 IVCORR = 729 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7461 CONTINUE IVTNUM = 746 C C **** TEST 746 **** C IF (ICZERO) 37460, 7460, 37460 7460 CONTINUE IVON01 = -3 IVON02 = 3 IVON03 = 2 IVCOMP = IVON01 ** (IVON02 ** IVON03) GO TO 47460 37460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47460, 7471, 47460 47460 IF (IVCOMP + 19683) 27460,17460,27460 17460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7471 27460 IVFAIL = IVFAIL + 1 IVCORR = -19683 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7471 CONTINUE C 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 FM044) END *END-OF,FM044 FM045.f 480976051 170 2 100666 13207 ` *HEADER,FORTR,FM045 *FILES1,FORTR,FM045,X C COMMENT SECTION C C FM045 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS USING INTEGER C VARIABLES CONNECTED BY A SERIES OF ARITHMETIC OPERATORS. C DIFFERENT COMBINATIONS OF PARENTHETICAL NOTATION ARE EXERCIZED. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT C 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) C C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C C TESTS 747 THROUGH 755 USE THE SAME STRING OF VARIABLES AND C OPERATORS, BUT USE DIFFERENT COMBINATIONS OF PARENTHETICAL C NOTATION TO ALTER PRIORITIES IN ORDER OF EVALUATION. C C TESTS 756 THROUGH 759 CHECK THE CAPABILITY TO ENCLOSE THE ENTIRE C RIGHT HAND SIDE OF AN ASSIGNMENT STATEMENT IN PARENTHESES OR SETS C OF NESTED PARENTHESES. C C C C C C C IVTNUM = 747 C C **** TEST 747 **** C IF (ICZERO) 37470, 7470, 37470 7470 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 18 IVON05 = 6 IVON06 = 2 IVCOMP = IVON01 + IVON02 - IVON03 * IVON04 / IVON05 ** IVON06 GO TO 47470 37470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47470, 7481, 47470 47470 IF (IVCOMP - 22) 27470,17470,27470 17470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7481 27470 IVFAIL = IVFAIL + 1 IVCORR = 22 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7481 CONTINUE IVTNUM = 748 C C **** TEST 748 **** C IF (ICZERO) 37480, 7480, 37480 7480 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 18 IVON05 = 6 IVON06 = 2 IVCOMP = ((((IVON01 + IVON02) - IVON03) * IVON04) / IVON05) * ** IVON06 GO TO 47480 37480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47480, 7491, 47480 47480 IF (IVCOMP - 3600) 27480,17480,27480 17480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7491 27480 IVFAIL = IVFAIL + 1 IVCORR = 3600 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7491 CONTINUE IVTNUM = 749 C C **** TEST 749 **** C IF (ICZERO) 37490, 7490, 37490 7490 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = (IVON01 + IVON02 - IVON03) * (IVON04 / IVON05 ** IVON06) GO TO 47490 37490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47490, 7501, 47490 47490 IF (IVCOMP - 20) 27490,17490,27490 17490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7501 27490 IVFAIL = IVFAIL + 1 IVCORR = 20 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7501 CONTINUE IVTNUM = 750 C C **** TEST 750 **** C IF (ICZERO) 37500, 7500, 37500 7500 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = (IVON01 + IVON02) - (IVON03 * IVON04) / (IVON05 ** * IVON06) GO TO 47500 37500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47500, 7511, 47500 47500 IF (IVCOMP - 20) 27500,17500,27500 17500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7511 27500 IVFAIL = IVFAIL + 1 IVCORR = 20 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7511 CONTINUE IVTNUM = 751 C C **** TEST 751 **** C IF (ICZERO) 37510, 7510, 37510 7510 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = ((IVON01 + IVON02) - (IVON03 * IVON04)) / (IVON05 ** * IVON06) GO TO 47510 37510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47510, 7521, 47510 47510 IF (IVCOMP + 3) 27510,17510,27510 17510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7521 27510 IVFAIL = IVFAIL + 1 IVCORR = -3 C ACTUAL ANSWER IS -3.333333... TRUNCATION IS NECESSARY WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7521 CONTINUE IVTNUM = 752 C C **** TEST 752 **** C IF (ICZERO) 37520, 7520, 37520 7520 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = (IVON01 + IVON02) - (IVON03 * IVON04 / IVON05) ** IVON06 GO TO 47520 37520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47520, 7531, 47520 47520 IF (IVCOMP + 552) 27520,17520,27520 17520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7531 27520 IVFAIL = IVFAIL + 1 IVCORR = -552 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7531 CONTINUE IVTNUM = 753 C C **** TEST 753 **** C IF (ICZERO) 37530, 7530, 37530 7530 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = IVON01 + (IVON02 - IVON03 * IVON04) / IVON05 ** IVON06 GO TO 47530 37530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47530, 7541, 47530 47530 IF (IVCOMP - 12) 27530,17530,27530 17530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7541 27530 IVFAIL = IVFAIL + 1 IVCORR = 12 C ACTUAL ANSWER IS 11.25 TRUNCATION IS NECESSARY C DURING AN INTERMEDIATE STEP WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7541 CONTINUE IVTNUM = 754 C C **** TEST 754 **** C IF (ICZERO) 37540, 7540, 37540 7540 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = IVON01 + (IVON02 - IVON03) * (IVON04 / IVON05) ** IVON06 GO TO 47540 37540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47540, 7551, 47540 47540 IF (IVCOMP - 195) 27540,17540,27540 17540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7551 27540 IVFAIL = IVFAIL + 1 IVCORR = 195 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7551 CONTINUE IVTNUM = 755 C C **** TEST 755 **** C IF (ICZERO) 37550, 7550, 37550 7550 CONTINUE IVON01 = 15 IVON02 = 9 IVON03 = 4 IVON04 = 36 IVON05 = 6 IVON06 = 2 IVCOMP = ((IVON01 + (IVON02 - IVON03) * IVON04) / IVON05) ** * IVON06 GO TO 47550 37550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47550, 7561, 47550 47550 IF (IVCOMP - 1024) 27550,17550,27550 17550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7561 27550 IVFAIL = IVFAIL + 1 IVCORR = 1024 C ACTUAL ANSWER IS 1056.25 TRUNCATION IS NECESSARY C DURING AN INTERMEDIATE STEP WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7561 CONTINUE IVTNUM = 756 C C **** TEST 756 **** C SINGLE PARENTHESES C IF (ICZERO) 37560, 7560, 37560 7560 CONTINUE IVON01 = 13 IVON02 = 37 IVCOMP = (IVON01 + IVON02) GO TO 47560 37560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47560, 7571, 47560 47560 IF (IVCOMP - 50) 27560,17560,27560 17560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7571 27560 IVFAIL = IVFAIL + 1 IVCORR = 50 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7571 CONTINUE IVTNUM = 757 C C **** TEST 757 **** C NESTED PARENTHESES (TWO SETS) C IF (ICZERO) 37570, 7570, 37570 7570 CONTINUE IVON01 = 13 IVON02 = 37 IVCOMP = ((IVON01 - IVON02)) GO TO 47570 37570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47570, 7581, 47570 47570 IF (IVCOMP + 24) 27570,17570,27570 17570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7581 27570 IVFAIL = IVFAIL + 1 IVCORR = -24 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7581 CONTINUE IVTNUM = 758 C C **** TEST 758 **** C NESTED PARENTHESES (21 SETS - SAME LINE) C IF (ICZERO) 37580, 7580, 37580 7580 CONTINUE IVON01 = 13 IVON02 = 37 IVCOMP = (((((((((((((((((((((IVON01 * IVON02))))))))))))))))))))) GO TO 47580 37580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47580, 7591, 47580 47580 IF (IVCOMP - 481) 27580,17580,27580 17580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7591 27580 IVFAIL = IVFAIL + 1 IVCORR = 481 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7591 CONTINUE IVTNUM = 759 C C **** TEST 759 **** C NESTED PARENTHESES (57 SETS - MULTIPLE LINES) C IF (ICZERO) 37590, 7590, 37590 7590 CONTINUE IVON01 = 13 IVON02 = 37 IVCOMP = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((( * IVON01 / IVON02 * ))))))))))))))))))))))))))))))))))))))))))))))))))))))))) GO TO 47590 37590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 47590, 7601, 47590 47590 IF (IVCOMP) 27590,17590,27590 17590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 7601 27590 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 7601 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 FM045) END *END-OF,FM045 FM050.f 480976054 170 2 100666 16213 ` *HEADER,FORTR,FM050 *FILES1,FORTR,FM050 C C COMMENT SECTION C C FM050 C C THIS ROUTINE CONTAINS BASIC SUBROUTINE AND FUNCTION REFERENCE C TESTS. FOUR SUBROUTINES AND ONE FUNCTION ARE CALLED OR C REFERENCED. FS051 IS CALLED TO TEST THE CALLING AND PASSING OF C ARGUMENTS THROUGH UNLABELED COMMON. NO ARGUMENTS ARE SPECIFIED C IN THE CALL LINE. FS052 IS IDENTICAL TO FS051 EXCEPT THAT SEVERAL C RETURNS ARE USED. FS053 UTILIZES MANY ARGUMENTS ON THE CALL C STATEMENT AND MANY RETURN STATEMENTS IN THE SUBROUTINE BODY. C FF054 IS A FUNCTION SUBROUTINE IN WHICH MANY ARGUMENTS AND RETURN C STATEMENTS ARE USED. AND FINALLY FS055 PASSES A ONE DIMENIONAL C ARRAY BACK TO FM050. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.2, REFERENCING AN EXTERNAL FUNCTION C SECTION 15.6.2, SUBROUTINE REFERENCE C COMMON RVCN01,IVCN01,IVCN02,IACN11(20) INTEGER FF054 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) C TEST SECTION C C SUBROUTINE AND FUNCTION SUBPROGRAMS C 4001 CONTINUE IVTNUM = 400 C C **** TEST 400 **** C TEST 400 TESTS THE CALL TO A SUBROUTINE CONTAINING NO ARGUMENTS. C ALL PARAMETERS ARE PASSED THROUGH UNLABELED COMMON. C IF (ICZERO) 34000, 4000, 34000 4000 CONTINUE RVCN01 = 2.1654 CALL FS051 RVCOMP = RVCN01 GO TO 44000 34000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44000, 4011, 44000 44000 IF (RVCOMP - 3.1649) 24000,14000,44001 44001 IF (RVCOMP - 3.1659) 14000,14000,24000 14000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4011 24000 IVFAIL = IVFAIL + 1 RVCORR = 3.1654 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 4011 CONTINUE C C TEST 401 THROUGH TEST 403 TEST THE CALL TO SUBROUTINE FS052 WHICH C CONTAINS NO ARGUMENTS. ALL PARAMETERS ARE PASSED THROUGH C UNLABELED COMMON. SUBROUTINE FS052 CONTAIN SEVERAL RETURN C STATEMENTS. C IVTNUM = 401 C C **** TEST 401 **** C IF (ICZERO) 34010, 4010, 34010 4010 CONTINUE IVCN01 = 5 IVCN02 = 1 CALL FS052 IVCOMP = IVCN01 GO TO 44010 34010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44010, 4021, 44010 44010 IF (IVCOMP - 6) 24010,14010,24010 14010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4021 24010 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4021 CONTINUE IVTNUM = 402 C C **** TEST 402 **** C IF (ICZERO) 34020, 4020, 34020 4020 CONTINUE IVCN01 = 10 IVCN02 = 5 CALL FS052 IVCOMP = IVCN01 GO TO 44020 34020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44020, 4031, 44020 44020 IF (IVCOMP - 15) 24020,14020,24020 14020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4031 24020 IVFAIL = IVFAIL + 1 IVCORR = 15 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4031 CONTINUE IVTNUM = 403 C C **** TEST 403 **** C IF (ICZERO) 34030, 4030, 34030 4030 CONTINUE IVCN01 = 30 IVCN02 = 3 CALL FS052 IVCOMP = IVCN01 GO TO 44030 34030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44030, 4041, 44030 44030 IF (IVCOMP - 33) 24030,14030,24030 14030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4041 24030 IVFAIL = IVFAIL + 1 IVCORR = 33 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4041 CONTINUE C C TEST 404 THROUGH TEST 406 TEST THE CALL TO SUBROUTINE FS053 WHICH C CONTAINS SEVERAL ARGUMENTS AND SEVERAL RETURN STATEMENTS. C IVTNUM = 404 C C **** TEST 404 **** C IF (ICZERO) 34040, 4040, 34040 4040 CONTINUE CALL FS053 (6,10,11,IVON04,1) IVCOMP = IVON04 GO TO 44040 34040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44040, 4051, 44040 44040 IF (IVCOMP - 6) 24040,14040,24040 14040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4051 24040 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4051 CONTINUE IVTNUM = 405 C C **** TEST 405 **** C IF (ICZERO) 34050, 4050, 34050 4050 CONTINUE IVCN01 = 10 CALL FS053 (6,IVCN01,11,IVON04,2) IVCOMP = IVON04 GO TO 44050 34050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44050, 4061, 44050 44050 IF (IVCOMP - 16) 24050,14050,24050 14050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4061 24050 IVFAIL = IVFAIL + 1 IVCORR = 16 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4061 CONTINUE IVTNUM = 406 C C **** TEST 406 **** C IF (ICZERO) 34060, 4060, 34060 4060 CONTINUE IVON01 = 6 IVON02 = 10 IVON03 = 11 IVON05 = 3 CALL FS053 (IVON01,IVON02,IVON03,IVON04,IVON05) IVCOMP = IVON04 GO TO 44060 34060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44060, 4071, 44060 44060 IF (IVCOMP - 27) 24060,14060,24060 14060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4071 24060 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4071 CONTINUE C C TEST 407 THROUGH 409 TEST THE REFERENCE TO FUNCTION FF054 WHICH C CONTAINS SEVERAL ARGUMENTS AND SEVERAL RETURN STATEMENTS C IVTNUM = 407 C C **** TEST 407 **** C IF (ICZERO) 34070, 4070, 34070 4070 CONTINUE IVCOMP = FF054 (300,1,21,1) GO TO 44070 34070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44070, 4081, 44070 44070 IF (IVCOMP - 300) 24070,14070,24070 14070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4081 24070 IVFAIL = IVFAIL + 1 IVCORR = 300 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4081 CONTINUE IVTNUM = 408 C C **** TEST 408 **** C IF (ICZERO) 34080, 4080, 34080 4080 CONTINUE IVON01 = 300 IVON04 = 2 IVCOMP = FF054 (IVON01,77,5,IVON04) GO TO 44080 34080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44080, 4091, 44080 44080 IF (IVCOMP - 377) 24080,14080,24080 14080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4091 24080 IVFAIL = IVFAIL + 1 IVCORR = 377 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4091 CONTINUE IVTNUM = 409 C C **** TEST 409 **** C IF (ICZERO) 34090, 4090, 34090 4090 CONTINUE IVON01 = 71 IVON02 = 21 IVON03 = 17 IVON04 = 3 IVCOMP = FF054 (IVON01,IVON02,IVON03,IVON04) GO TO 44090 34090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44090, 4101, 44090 44090 IF (IVCOMP - 109) 24090,14090,24090 14090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4101 24090 IVFAIL = IVFAIL + 1 IVCORR = 109 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4101 CONTINUE C C TEST 410 THROUGH 429 TEST THE CALL TO SUBROUTINE FS055 WHICH C CONTAINS NO ARGUMENTS. THE PARAMETERS ARE PASSED THROUGH AN C INTEGER ARRAY VARIABLE IN UNLABELED COMMON. C CALL FS055 DO 20 I = 1,20 IF (ICZERO) 34100, 4100, 34100 4100 CONTINUE IVTNUM = 409 + I IVCOMP = IACN11(I) GO TO 44100 34100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44100, 4111, 44100 44100 IF (IVCOMP - I) 24100,14100,24100 14100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4111 24100 IVFAIL = IVFAIL + 1 IVCORR = I WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4111 CONTINUE 20 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 FM050) END *HEADER,FORTR,FM050,SUBRTN,FM051 C C COMMENT SECTION C C FS051 C C FS051 IS A SUBROUTINE SUBPROGRAM WHICH IS CALLED BY THE MAIN C PROGRAM FM050. NO ARGUMENTS ARE SPECIFIED THEREFORE ALL C PARAMETERS ARE PASSED VIA UNLABELED COMMON. THE SUBROUTINE FS051 C INCREMENTS THE VALUE OF A REAL VARIABLE BY 1 AND RETURNS CONTROL C TO THE CALLING PROGRAM FM050. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM - NO ARGUMENTS C SUBROUTINE FS051 COMMON //RVCN01 RVCN01 = RVCN01 + 1.0 RETURN END *HEADER,FORTR,FM050,SUBRTN,FM052 C C COMMENT SECTION C C FS052 C C FS052 IS A SUBROUTINE SUBPROGRAM WHICH IS CALLED BY THE MAIN C PROGRAM FM050. NO ARGUMENTS ARE SPECIFIED THEREFORE ALL C PARAMETERS ARE PASSED VIA UNLABELED COMMON. THE SUBROUTINE FS052 C INCREMENTS THE VALUE OF ONE INTEGER VARIABLE BY 1,2,3,4 OR 5 C DEPENDING ON THE VALUE OF A SECOND INTEGER VARIABLE AND THEN C RETURNS CONTROL TO THE CALLING PROGRAM FM050. SEVERAL RETURN C STATEMENTS ARE INCLUDED. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM - NO ARGUMENTS, MANY RETURNS C SUBROUTINE FS052 COMMON RVDN01,IVCN01,IVCN02 GO TO (10,20,30,40,50),IVCN02 10 IVCN01 = IVCN01 + 1 RETURN 20 IVCN01 = IVCN01 + 2 RETURN 30 IVCN01 = IVCN01 + 3 RETURN 40 IVCN01 = IVCN01 + 4 RETURN 50 IVCN01 = IVCN01 + 5 RETURN END *HEADER,FORTR,FM050,SUBRTN,FM053 C C COMMENT SECTION C C FS053 C C FS053 IS A SUBROUTINE SUBPROGRAM WHICH IS CALLED BY THE MAIN C PROGRAM FM050. FIVE INTEGER VARIABLE ARGUMENTS ARE PASSED AND C SEVERAL RETURN STATEMENTS ARE SPECIFIED. THE SUBROUTINE FS053 C ADDS TOGETHER THE VALUES OF THE FIRST ONE, TWO OR THREE ARGUMENTS C DEPENDING ON THE VALUE OF THE FIFTH ARGUMENT. THE RESULTING SUM C IS THEN RETURNED TO THE CALLING PROGRAM FM050 THROUGH THE FOURTH C ARGUMENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM - SEVERAL ARGUMENTS, SEVERAL RETURNS C SUBROUTINE FS053 (IVON01,IVON02,IVON03,IVON04,IVON05) GO TO (10,20,30),IVON05 10 IVON04 = IVON01 RETURN 20 IVON04 = IVON01 + IVON02 RETURN 30 IVON04 = IVON01 + IVON02 + IVON03 RETURN END *HEADER,FORTR,FM050,SUBRTN,FM054 C C COMMENT SECTION C C FF054 C C FF054 IS A FUNCTION SUBPROGRAM WHICH IS REFERENCED BY THE C MAIN PROGRAM. FIVE INTEGER VARIABLE ARGUMENTS ARE PASSED AND C SEVERAL RETURN STATEMENTS ARE SPECIFIED. THE FUNCTION FF054 C ADDS TOGETHER THE VALUES OF THE FIRST ONE, TWO OR THREE ARGUMENTS C DEPENDING ON THE VALUE OF THE FOURTH ARGUMENT. THE RESULTING SUM C IS THEN RETURNED TO THE REFERENCING PROGRAM FM050 THROUGH THE C FUNCTION REFERENCE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C FUNCTION SUBPROGRAM - SEVERAL ARGUMENTS, SEVERAL RETURNS C INTEGER FUNCTION FF054 (IVON01,IVON02,IVON03,IVON04) GO TO (10,20,30),IVON04 10 FF054 = IVON01 RETURN 20 FF054 = IVON01 + IVON02 RETURN 30 FF054 = IVON01 + IVON02 + IVON03 RETURN END *HEADER,FORTR,FM050,SUBRTN,FM055 C C COMMENT SECTION C C FS055 C C FS055 IS A SUBROUTINE SUBPROGRAM WHICH IS CALLED BY THE MAIN C PROGRAM FM050. NO ARGUMENTS ARE SPECIFIED THEREFORE ALL C PARAMETERS ARE PASSED VIA UNLABELED COMMON. THE SUBROUTINE FS055 C INITIALIZES A ONE DIMENSIONAL INTEGER ARRAY OF 20 ELEMENTS WITH C THE VALUES 1 THROUGH 20 RESPECTIVELY. CONTROL IS THEN RETURNED C TO THE CALLING PROGRAM FM050. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM - ARRAY ARGUMENTS C SUBROUTINE FS055 COMMON RVCN01,IVCN01,IVCN02,IACN11 DIMENSION IACN11(20) DO 20 I = 1,20 IACN11(I) = I 20 CONTINUE RETURN END *END-OF,FM050 FM056.f 480976058 170 2 100666 15185 ` *HEADER,FORTR,FM056 *FILES1,FORTR,FM056 C C COMMENT SECTION C C FM056 C C FM056 IS A MAIN WHICH TESTS THE ARGUMENT PASSING LINKAGE OF C A 2 LEVEL NESTED SUBROUTINE AND AN EXTERNAL FUNCTION REFERENCE. C THE MAIN PROGRAM FM056 CALLS SUBROUTINE FS057 PASSING ONE C ARGUMENT. SUBROUTINE FS057 CALLS SUBROUTINE FS058 PASSING TWO C ARGUMENTS. SUBROUTINE FS058 REFERENCES EXTERNAL FUNCTION FF059 C PASSING 3 ARGUMENTS. FUNCTION FF059 ADDS THE VALUES OF THE 3 C ARGUMENTS TOGETHER. SUBROUTINE FS057 AND FS058 THEN MERELY C RETURN THE RESULT TO FM056 IN THE FIRST ARGUMENT. C C THE VALUES OF THE ARGUMENTS THAT ARE PASSED TO EACH C SUBPROGRAM AND FUNCTION, AND RETURNED TO THE CALLING OR C REFERENCING PROGRAM ARE SAVED IN AN INTEGER ARRAY. FM056 THEN C USES THESE VALUES TO TEST THE COMPILER'S ARGUMENT PASSING C CAPABILITIES. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6.2, SUBROUTINE REFERENCE COMMON IACN11 (12) 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) C C TEST SECTION C C SUBROUTINE SUBPROGRAM C IVON01 = 5 CALL FS057 (IVON01) IACN11 (12) = IVON01 IVTNUM = 430 C C **** TEST 430 **** C C TEST 430 TESTS THE VALUE OF THE ARGUMENT RECEIVED BY FS057 FROM C A FM056 CALL TO FS057 C IF (ICZERO) 34300, 4300, 34300 4300 CONTINUE IVCOMP = IACN11 (1) GO TO 44300 34300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44300, 4311, 44300 44300 IF (IVCOMP - 5) 24300,14300,24300 14300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4311 24300 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4311 CONTINUE IVTNUM = 431 C C **** TEST 431 **** C C TEST 431 TESTS THE VALUE OF THE SECOND ARGUMENT THAT WAS PASSED C FROM A FS057 CALL TO FS058 C C IF (ICZERO) 34310, 4310, 34310 4310 CONTINUE IVCOMP = IACN11 (2) GO TO 44310 34310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44310, 4321, 44310 44310 IF (IVCOMP - 4) 24310,14310,24310 14310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4321 24310 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4321 CONTINUE IVTNUM = 432 C C **** TEST 432 **** C C TEST 432 TESTS THE VALUE OF THE FIRST ARGUMENT RECEIVED BY FS058 C FROM A FS057 CALL TO FS058 C C IF (ICZERO) 34320, 4320, 34320 4320 CONTINUE IVCOMP = IACN11 (3) GO TO 44320 34320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44320, 4331, 44320 44320 IF (IVCOMP - 5) 24320,14320,24320 14320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4331 24320 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4331 CONTINUE IVTNUM = 433 C C **** TEST 433 **** C C TEST 433 TESTS THE VALUE OF THE SECOND ARGUMENT RECEIVED BY FS058 C FROM A FS057 CALL TO FS058 C C IF (ICZERO) 34330, 4330, 34330 4330 CONTINUE IVCOMP = IACN11 (4) GO TO 44330 34330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44330, 4341, 44330 44330 IF (IVCOMP - 4) 24330,14330,24330 14330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4341 24330 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4341 CONTINUE IVTNUM = 434 C C **** TEST 434 **** C C TEST 434 TESTS THE VALUE OF THE THIRD ARGUMENT THAT WAS PASSED C FROM A FS058 REFERENCE OF FUNCTION FF059 C C IF (ICZERO) 34340, 4340, 34340 4340 CONTINUE IVCOMP = IACN11 (5) GO TO 44340 34340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44340, 4351, 44340 44340 IF (IVCOMP - 3) 24340,14340,24340 14340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4351 24340 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4351 CONTINUE IVTNUM = 435 C C **** TEST 435 **** C C TEST 435 TESTS THE VALUE OF THE FIRST ARGUMENT RECEIVED BY FF059 C FROM A FS058 REFERENCE OF FUNCTION FF059 C C IF (ICZERO) 34350, 4350, 34350 4350 CONTINUE IVCOMP = IACN11 (6) GO TO 44350 34350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44350, 4361, 44350 44350 IF (IVCOMP - 5) 24350,14350,24350 14350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4361 24350 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4361 CONTINUE IVTNUM = 436 C C **** TEST 436 **** C C TEST 436 TESTS THE VALUE OF THE SECOND ARGUMENT RECEIVED BY FF059 C FROM A FS058 REFERENCE OF FUNCTION FF059 C C IF (ICZERO) 34360, 4360, 34360 4360 CONTINUE IVCOMP = IACN11 (7) GO TO 44360 34360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44360, 4371, 44360 44360 IF (IVCOMP - 4) 24360,14360,24360 14360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4371 24360 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4371 CONTINUE IVTNUM = 437 C C **** TEST 437 **** C C TEST 437 TESTS THE VALUE OF THE THIRD ARGUMENT RECEIVED BY FF059 C FROM A FS058 REFERENCE OF FUNCTION FF059 C C IF (ICZERO) 34370, 4370, 34370 4370 CONTINUE IVCOMP = IACN11 (8) GO TO 44370 34370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44370, 4381, 44370 44370 IF (IVCOMP - 3) 24370,14370,24370 14370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4381 24370 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4381 CONTINUE IVTNUM = 438 C C **** TEST 438 **** C C TEST 438 TESTS THE VALUE OF THE FUNCTION DETERMINED BY FF059 C C IF (ICZERO) 34380, 4380, 34380 4380 CONTINUE IVCOMP = IACN11 (9) GO TO 44380 34380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44380, 4391, 44380 44380 IF (IVCOMP - 12) 24380,14380,24380 14380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4391 24380 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4391 CONTINUE IVTNUM = 439 C C **** TEST 439 **** C C TEST 439 TESTS THE VALUE OF THE FUNCTION RETURNED TO FS058 BY C FF059 C C IF (ICZERO) 34390, 4390, 34390 4390 CONTINUE IVCOMP = IACN11 (10) GO TO 44390 34390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44390, 4401, 44390 44390 IF (IVCOMP - 12) 24390,14390,24390 14390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4401 24390 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4401 CONTINUE IVTNUM = 440 C C **** TEST 440 **** C C TEST 440 TESTS THE VALUE OF THE FIRST ARGUMENT RETURNED TO FS057 C BY FS058 C IF (ICZERO) 34400, 4400, 34400 4400 CONTINUE IVCOMP = IACN11 (11) GO TO 44400 34400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44400, 4411, 44400 44400 IF (IVCOMP - 12) 24400,14400,24400 14400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4411 24400 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4411 CONTINUE IVTNUM = 441 C C **** TEST 441 **** C C TEST 441 TESTS THE VALUE OF THE FIRST ARGUMENT RETURNED TO FM056 C BY FS057 C C IF (ICZERO) 34410, 4410, 34410 4410 CONTINUE IVCOMP = IACN11 (12) GO TO 44410 34410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44410, 4421, 44410 44410 IF (IVCOMP - 12) 24410,14410,24410 14410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4421 24410 IVFAIL = IVFAIL + 1 IVCORR = 12 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4421 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 FM056) END *HEADER,FORTR,FM056,SUBRTN,FM057 C C COMMENT SECTION C C FS057 C C THIS SUBROUTINE IS CALLED BY THE MAIN PROGRAM FM056. THE C SINGLE ARGUMENT PASSED FROM FM056 ALONG WITH A SECOND PARAMETER C CREATED IN FS057 ARE THEN PASSED VIA A CALL TO SUBROUTINE FS058. C A RESULT FROM AN ARITHMETIC OPERATION IS RETURNED FROM FS058 IN C THE FIRST ARGUMENT. FS057 ACCEPTS THIS RESULT AND RETURNS CONTROL C TO FM056 WITHOUT ANY ADDITIONAL PROCESSING. C C THE VALUES OF THE ARGUMENTS THAT ARE PASSED FROM FM056 TO C FS057 AND RETURNED ARE SAVED IN AN INTEGER ARRAY FOR LATER C VERIFICATION BY THE MAIN PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.6, SUBROUTINES C SECTION 15.6.2, SUBROUTINE REFERENCE C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM C SUBROUTINE FS057 (IVON01) COMMON IACN11 (12) IACN11 (1) = IVON01 IVON02 = 4 IACN11 (2) = IVON02 CALL FS058 (IVON01,IVON02) IACN11 (11) = IVON01 RETURN END *HEADER,FORTR,FM056,SUBRTN,FM058 C C COMMENT SECTION C C FS058 C C THIS SUBROUTINE IS CALLED BY SUBROUTINE FS057. THE TWO C ARGUMENTS PASSED FROM FS057 ALONG WITH A THIRD PARAMETER CREATED C IN FS058 ARE THEN PASSED TO FUNCTION FF059 WHERE THEY ARE USED IN C AN ARITHMETIC OPERATION. FS058 THEN SAVES THE RESULT OF THIS C OPERATION IN THE FIRST ARGUMENT AND RETURNS CONTROL TO FS057 C WITHOUT ANY ADDITIONAL PROCESSING. C C THE VALUES OF THE ARGUMENTS THAT ARE PASSED FROM FS057 TO C FS058 AND RETURNED ARE SAVED IN AN INTEGER ARRAY FOR LATER C VERIFICATION BY THE MAIN PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.2, REFERENCING EXTERNAL FUNCTIONS C SECTION 15.6, SUBROUTINES C SECTION 15.8, RETURN STATEMENT C C TEST SECTION C C SUBROUTINE SUBPROGRAM C SUBROUTINE FS058 (IVON01,IVON02) COMMON IACN11 (12) INTEGER FF059 IVON03 = 3 IACN11 (3) = IVON01 IACN11 (4) = IVON02 IACN11 (5) = IVON03 IVON01 = FF059 (IVON01,IVON02,IVON03) IACN11 (10) = IVON01 RETURN END *HEADER,FORTR,FM056,SUBRTN,FM059 C C COMMENT SECTION C C FF059 C C THIS EXTERNAL FUNCTION IS REFERENCED WITHIN SUBROUTINE FS058. C THE THREE ARGUMENTS THAT ARE PASSED ARE SIMPLY ADDED TOGETHER AND C THE RESULT SUBSTITUTED FOR THE ORIGINAL REFERENCE. CONTROL IS C THEN RETURNED TO FS058. C C THE VALUES OF THE ARGUMENTS THAT ARE PASSED FROM FS058 TO C FF059 AND THE RESULT THAT IS RETURNED ARE SAVED IN AN INTEGER C ARRAY FOR LATER VERIFICATION BY THE MAIN PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT C SECTION 15.8, RETURN STATEMENT C TEST SECTION C C FUNCTION SUBPROGRAM C INTEGER FUNCTION FF059 (IVON01,IVON02,IVON03) COMMON IACN11 (12) IACN11 (6) = IVON01 IACN11 (7) = IVON02 IACN11 (8) = IVON03 FF059 = IVON01 + IVON02 + IVON03 IACN11 (9) = IVON01 + IVON02 + IVON03 RETURN END *END-OF,FM056 FM060.f 480976062 170 2 100666 23638 ` *HEADER,FORTR,FM060 *FILES1,FORTR,FM060,X C COMMENT SECTION C C FM060 C C THIS ROUTINE CONTAINS BASIC ARITHMETIC IF STATEMENT TESTS FOR C THE FORMAT C C IF (E) K1,K2,K3 C C WHERE E IS A SIMPLE REAL EXPRESSION OF THE FORM C C REAL VARIABLE C REAL VARIABLE - REAL CONSTANT C REAL VARIABLE + REAL CONSTANT C C AND K1, K2 AND K3 ARE STATEMENT LABELS. C C THIS ROUTINE ALSO TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF C THE FORM C REAL VARIABLE = REAL CONSTANT C REAL VARIABLE = REAL VARIABLE C REAL VARIABLE = -REAL VARIABLE C C THE REAL CONSTANTS AND REAL VARIABLES CONTAIN BOTH POSITIVE AND C NEGATIVE VALUES. C C A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A C REAL NUMBER. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. C C A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A DECIMAL C POINT, AND A DECIMAL FRACTION PART IN THAT ORDER. BOTH THE C INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; EITHER C ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH. THE CONSTANT IS C AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A DECIMAL C NUMERAL. C C A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN C OPTIONALLY SIGNED INTEGER CONSTANT. C C A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT, C A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN C INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.4, REAL TYPE C SECTION 4.4.1, REAL CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT C SECTION 11.4, ARITHMETIC IF STATEMENT 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) C C TEST SECTION C C ARITHMETIC IF STATEMENT C C TEST 1 THROUGH TEST 3 CONTAIN BASIC ARITHMETIC IF STATEMENT TESTS C WITH A REAL VARIABLE AS ARITHMETIC EXPRESSION. C 11 CONTINUE IVTNUM = 1 C C **** TEST 1 **** C TEST 001 - LESS THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30010, 10, 30010 10 CONTINUE RVCOMP = 0.0 RVON01 = -1.0 IF (RVON01) 12,40010, 40010 12 RVCOMP = RVON01 GO TO 40010 30010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40010, 21, 40010 40010 IF (RVCOMP) 10010,20010,20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 21 20010 IVFAIL = IVFAIL + 1 RVCORR = -1.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 21 CONTINUE IVTNUM = 2 C C **** TEST 2 **** C TEST 002 - EQUAL TO ZERO BRANCH EXPECTED C IF (ICZERO) 30020, 20, 30020 20 CONTINUE RVCOMP = 1.0 RVON01 = 0.0 IF (RVON01) 40020,22,40020 22 RVCOMP = RVON01 GO TO 40020 30020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40020, 31, 40020 40020 IF (RVCOMP) 20020,10020,20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 31 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 31 CONTINUE IVTNUM = 3 C C **** TEST 3 **** C TEST 003 - GREATER THAN ZERO BRANCH EXPECTED C IF (ICZERO) 30030, 30, 30030 30 CONTINUE RVCOMP = 0.0 RVON01 = 1.0 IF (RVON01) 40030,40030,32 32 RVCOMP = RVON01 GO TO 40030 30030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40030, 41, 40030 40030 IF (RVCOMP) 20030,20030,10030 10030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 41 20030 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 41 CONTINUE IVTNUM = 4 C C **** TEST 4 **** C TEST 004 - BASIC IF STATEMENTS TEST C THESE IF STATEMENTS ARE USED IN REAL VARIABLE TEST C VERIFICATION. THE ARITHMETIC EXPRESSIONS ARE OF THE FORM C REAL VARIABLE - REAL CONSTANT C IF (ICZERO) 30040, 40, 30040 40 CONTINUE RVCOMP = 4.0 RVON01 = 1.0 IF (RVON01 - .99995) 40040,42,42 42 IF (RVON01 - 1.0005) 43,43,40040 43 RVCOMP = 0.0 GO TO 40040 30040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40040, 51, 40040 40040 IF (RVCOMP) 20040,10040,20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 51 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 51 CONTINUE IVTNUM = 5 C C **** TEST 5 **** C TEST 005 - BASIC IF STATEMENTS TEST C THESE IF STATEMENTS ARE USED IN REAL VARIABLE TEST C VERIFICATION. THE ARITHMETIC EXPRESSIONS ARE OF THE FORM C REAL VARIABLE + REAL CONSTANT C IF (ICZERO) 30050, 50, 30050 50 CONTINUE RVCOMP = -1.0 RVON01 = -1.0 IF (RVON01 + 1.0005) 40050,52,52 52 IF (RVON01 + .99995) 53,53,40050 53 RVCOMP = 0.0 GO TO 40050 30050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40050, 61, 40050 40050 IF (RVCOMP) 20050,10050,20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 61 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR C C ARITHMETIC ASSIGNMENT STATEMENT C C C TEST 006 THROUGH TEST 025 CONTAIN ARITHMETIC ASSIGNMENT C STATEMENTS OF THE FORM C REAL VARIABLE = REAL CONSTANT C C THE THREE TYPES OF REAL CONSTANTS ARE TESTED WITH POSITIVE C AND NEGATIVE VALUES FOR THE CONSTANTS, AND POSITIVE AND NEGATIVE C EXPONENTS. C C TEST 006 THROUGH TEST 011 - CONSTANT IS BASIC REAL CONSTANT C 61 CONTINUE IVTNUM = 6 C C **** TEST 6 **** C IF (ICZERO) 30060, 60, 30060 60 CONTINUE RVCOMP = 2.0 GO TO 40060 30060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40060, 71, 40060 40060 IF (RVCOMP - 1.9995) 20060,10060,40061 40061 IF (RVCOMP - 2.0005) 10060,10060,20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 71 20060 IVFAIL = IVFAIL + 1 RVCORR = 2.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 71 CONTINUE IVTNUM = 7 C C **** TEST 7 **** C IF (ICZERO) 30070, 70, 30070 70 CONTINUE RVCOMP = 44.5 GO TO 40070 30070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40070, 81, 40070 40070 IF (RVCOMP - 44.495) 20070,10070,40071 40071 IF (RVCOMP - 45.505) 10070,10070,20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 81 20070 IVFAIL = IVFAIL + 1 RVCORR = 44.5 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 81 CONTINUE IVTNUM = 8 C C **** TEST 8 **** C IF (ICZERO) 30080, 80, 30080 80 CONTINUE RVCOMP = -2.0 GO TO 40080 30080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40080, 91, 40080 40080 IF (RVCOMP + 2.0005) 20080,10080,40081 40081 IF (RVCOMP + 1.9995) 10080,10080,20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 91 20080 IVFAIL = IVFAIL + 1 RVCORR = -2.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 91 CONTINUE IVTNUM = 9 C C **** TEST 9 **** C IF (ICZERO) 30090, 90, 30090 90 CONTINUE RVCOMP = 65001. GO TO 40090 30090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40090, 101, 40090 40090 IF (RVCOMP - 64996.) 20090,10090,40091 40091 IF (RVCOMP - 65006.) 10090,10090,20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 101 20090 IVFAIL = IVFAIL + 1 RVCORR = 65001. WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 101 CONTINUE IVTNUM = 10 C C **** TEST 10 **** C IF (ICZERO) 30100, 100, 30100 100 CONTINUE RVCOMP = .65001 GO TO 40100 30100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40100, 111, 40100 40100 IF (RVCOMP - .64996) 20100,10100,40101 40101 IF (RVCOMP - .65006) 10100,10100,20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 111 20100 IVFAIL = IVFAIL + 1 RVCORR = .65001 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 111 CONTINUE IVTNUM = 11 C C **** TEST 11 **** C IF (ICZERO) 30110, 110, 30110 110 CONTINUE RVCOMP = -.33333 GO TO 40110 30110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40110, 121, 40110 40110 IF (RVCOMP + .33338) 20110,10110,40111 40111 IF (RVCOMP + .33328) 10110,10110,20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 121 20110 IVFAIL = IVFAIL + 1 RVCORR = -.33333 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR C C TEST 012 THROUGH TEST 19 - REAL CONSTANT IS BASIC REAL CONSTANT C - FOLLOWED BY DECIMAL EXPONENT C 121 CONTINUE IVTNUM = 12 C C **** TEST 12 **** C IF (ICZERO) 30120, 120, 30120 120 CONTINUE RVCOMP = .2E+1 GO TO 40120 30120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40120, 131, 40120 40120 IF (RVCOMP - 1.9995) 20120,10120,40121 40121 IF (RVCOMP - 2.0005) 10120,10120,20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 131 20120 IVFAIL = IVFAIL + 1 RVCORR = 2.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 131 CONTINUE IVTNUM = 13 C C **** TEST 13 **** C IF (ICZERO) 30130, 130, 30130 130 CONTINUE RVCOMP = 2.0E+0 GO TO 40130 30130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40130, 141, 40130 40130 IF (RVCOMP - 1.9995) 20130,10130,40131 40131 IF (RVCOMP - 2.0005) 10130,10130,20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 141 20130 IVFAIL = IVFAIL + 1 RVCORR = 2.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 141 CONTINUE IVTNUM = 14 C C **** TEST 14 **** C IF (ICZERO) 30140, 140, 30140 140 CONTINUE RVCOMP = 445.0E-01 GO TO 40140 30140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40140, 151, 40140 40140 IF (RVCOMP - 44.495) 20140,10140,40141 40141 IF (RVCOMP - 44.505) 10140,10140,20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 151 20140 IVFAIL = IVFAIL + 1 RVCORR = 44.5 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 151 CONTINUE IVTNUM = 15 C C **** TEST 15 **** C IF (ICZERO) 30150, 150, 30150 150 CONTINUE RVCOMP = 4.450E1 GO TO 40150 30150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40150, 161, 40150 40150 IF (RVCOMP - 44.495) 20150,10150,40151 40151 IF (RVCOMP - 44.505) 10150,10150,20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 161 20150 IVFAIL = IVFAIL + 1 RVCORR = 44.5 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 161 CONTINUE IVTNUM = 16 C C **** TEST 16 **** C IF (ICZERO) 30160, 160, 30160 160 CONTINUE RVCOMP = 2.E+15 GO TO 40160 30160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40160, 171, 40160 40160 IF (RVCOMP - 1.9995E+15) 20160,10160,40161 40161 IF (RVCOMP - 2.0005E+15) 10160,10160,20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 171 20160 IVFAIL = IVFAIL + 1 RVCORR = 2.0E+15 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 171 CONTINUE IVTNUM = 17 C C **** TEST 17 **** C IF (ICZERO) 30170, 170, 30170 170 CONTINUE RVCOMP = 44.5E-15 GO TO 40170 30170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40170, 181, 40170 40170 IF (RVCOMP - 44.495E-15) 20170,10170,40171 40171 IF (RVCOMP - 44.505E-15) 10170,10170,20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 181 20170 IVFAIL = IVFAIL + 1 RVCORR = 44.5E-15 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 181 CONTINUE IVTNUM = 18 C C **** TEST 18 **** C IF (ICZERO) 30180, 180, 30180 180 CONTINUE RVCOMP = -4.45E0 GO TO 40180 30180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40180, 191, 40180 40180 IF (RVCOMP + 4.4505) 20180,10180,40181 40181 IF (RVCOMP + 4.4495) 10180,10180,20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 191 20180 IVFAIL = IVFAIL + 1 RVCORR = -4.45 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 191 CONTINUE IVTNUM = 19 C C **** TEST 19 **** C IF (ICZERO) 30190, 190, 30190 190 CONTINUE RVCOMP = -6511.8E-0 GO TO 40190 30190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40190, 201, 40190 40190 IF (RVCOMP + 6512.3) 20190,10190,40191 40191 IF (RVCOMP + 6511.3) 10190,10190,20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 201 20190 IVFAIL = IVFAIL + 1 RVCORR = -6511.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR C C TEST 020 THROUGH TEST 025 - INTEGER CONSTANT FOLLOWED C - BY A DECIMAL EXPONENT C 201 CONTINUE IVTNUM = 20 C C **** TEST 20 **** C IF (ICZERO) 30200, 200, 30200 200 CONTINUE RVCOMP = 2E+1 GO TO 40200 30200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40200, 211, 40200 40200 IF (RVCOMP - 19.995) 20200,10200,40201 40201 IF (RVCOMP - 20.005) 10200,10200,20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 211 20200 IVFAIL = IVFAIL + 1 RVCORR = 20.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 211 CONTINUE IVTNUM = 21 C C **** TEST 21 **** C IF (ICZERO) 30210, 210, 30210 210 CONTINUE RVCOMP = 445E-02 GO TO 40210 30210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40210, 221, 40210 40210 IF (RVCOMP - 4.4495) 20210,10210,40211 40211 IF (RVCOMP - 4.4505) 10210,10210,20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 221 20210 IVFAIL = IVFAIL + 1 RVCORR = 4.45 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 221 CONTINUE IVTNUM = 22 C C **** TEST 22 **** C IF (ICZERO) 30220, 220, 30220 220 CONTINUE RVCOMP = 7E3 GO TO 40220 30220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40220, 231, 40220 40220 IF (RVCOMP - 6999.0) 20220,10220,40221 40221 IF (RVCOMP - 7001.0) 10220,10220,20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 231 20220 IVFAIL = IVFAIL + 1 RVCORR = 7000.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 231 CONTINUE IVTNUM = 23 C C **** TEST 23 **** C IF (ICZERO) 30230, 230, 30230 230 CONTINUE RVCOMP = 214 E 0 GO TO 40230 30230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40230, 241, 40230 40230 IF (RVCOMP - 213.95) 20230,10230,40231 40231 IF (RVCOMP - 214.05) 10230,10230,20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 241 20230 IVFAIL = IVFAIL + 1 RVCORR = 214.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 241 CONTINUE IVTNUM = 24 C C **** TEST 24 **** C IF (ICZERO) 30240, 240, 30240 240 CONTINUE RVCOMP = -3276E+6 GO TO 40240 30240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40240, 251, 40240 40240 IF (RVCOMP + .32765E+10) 20240,10240,40241 40241 IF (RVCOMP + .32755E+10) 10240,10240,20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 251 20240 IVFAIL = IVFAIL + 1 RVCORR = -3276E+6 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 251 CONTINUE IVTNUM = 25 C C **** TEST 25 **** C IF (ICZERO) 30250, 250, 30250 250 CONTINUE RVCOMP = -7E3 GO TO 40250 30250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40250, 261, 40250 40250 IF (RVCOMP + 7001.) 20250,10250,40251 40251 IF (RVCOMP + 6999.) 10250,10250,20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 261 20250 IVFAIL = IVFAIL + 1 RVCORR = -7000.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR C C TEST 026 THROUGH TEST 028 CONTAIN ARITHMETIC ASSIGNMENT STATEMENT C OF THE FORM REAL VARIABLE = REAL VARIABLE C 261 CONTINUE IVTNUM = 26 C C **** TEST 26 **** C IF (ICZERO) 30260, 260, 30260 260 CONTINUE RVON01 = .2E+1 RVCOMP = RVON01 GO TO 40260 30260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40260, 271, 40260 40260 IF (RVCOMP - 1.9995) 20260,10260,40261 40261 IF (RVCOMP - 2.0005) 10260,10260,20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 271 20260 IVFAIL = IVFAIL + 1 RVCORR = 20.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 271 CONTINUE IVTNUM = 27 C C **** TEST 27 **** C IF (ICZERO) 30270, 270, 30270 270 CONTINUE RVON01 = -445.E-01 RVCOMP = RVON01 GO TO 40270 30270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40270, 281, 40270 40270 IF (RVCOMP + 44.505) 20270,10270,40271 40271 IF (RVCOMP + 44.495) 10270,10270,20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 281 20270 IVFAIL = IVFAIL + 1 RVCORR = -44.5 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 281 CONTINUE IVTNUM = 28 C C **** TEST 28 **** C IF (ICZERO) 30280, 280, 30280 280 CONTINUE RVON01 = 7E3 RVCOMP = RVON01 GO TO 40280 30280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40280, 291, 40280 40280 IF (RVCOMP - 6999.0) 20280,10280,40281 40281 IF (RVCOMP-7001.0) 10280,10280,20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 291 20280 IVFAIL = IVFAIL + 1 RVCORR = 7000.0 C C TEST 029 THROUGH TEST 031 CONTAIN ARITHMETIC ASSIGNMENT STATEMENT C OF THE FORM REAL VARIABLE = - REAL VARIABLE C WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 291 CONTINUE IVTNUM = 29 C C **** TEST 29 **** C IF (ICZERO) 30290, 290, 30290 290 CONTINUE RVON01 = .2E+1 RVCOMP = -RVON01 GO TO 40290 30290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40290, 301, 40290 40290 IF (RVCOMP + 2.0005) 20290,10290,40291 40291 IF (RVCOMP + 1.9995) 10290,10290,20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 301 20290 IVFAIL = IVFAIL + 1 RVCORR = -2.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 301 CONTINUE IVTNUM = 30 C C **** TEST 30 **** C IF (ICZERO) 30300, 300, 30300 300 CONTINUE RVON01 = -445.E-01 RVCOMP = -RVON01 GO TO 40300 30300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40300, 311, 40300 40300 IF (RVCOMP - 44.495) 20300,10300,40301 40301 IF (RVCOMP - 44.505) 10300,10300,20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 311 20300 IVFAIL = IVFAIL + 1 RVCORR = 44.5 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 311 CONTINUE IVTNUM = 31 C C **** TEST 31 **** C IF (ICZERO) 30310, 310, 30310 310 CONTINUE RVON01 = -.44559E1 RVCOMP = -RVON01 GO TO 40310 30310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40310, 321, 40310 40310 IF (RVCOMP - 4.4554) 20310,10310,40311 40311 IF (RVCOMP - 4.4564) 10310,10310,20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 321 20310 IVFAIL = IVFAIL + 1 RVCORR = 4.4559 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR C **** END OF TESTS **** 321 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 FM060) END *END-OF,FM060 FM061.f 480976066 170 2 100666 21108 ` *HEADER,FORTR,FM061 *FILES1,FORTR,FM061,X C COMMENT SECTION C C FM061 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = REAL CONSTANT C INTEGER VARIABLE = REAL VARIABLE C REAL VARIABLE = INTEGER VARIABLE C REAL VARIABLE = INTEGER CONSTANT C C THE CONSTANTS AND VARIABLES CONTAIN BOTH POSITIVE AND NEGATIVE C VALUES. C C A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A C REAL NUMBER. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. C C A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A C DECIMAL POINT, AND A DECIMAL FRACTION PART IN THAT ORDER. BOTH C THE INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; C EITHER ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH. THE C CONSTANT IS AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A C DECIMAL NUMERAL. C C A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN C OPTIONALLY SIGNED INTEGER CONSTANT. C C A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT, C A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN C INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.4, REAL TYPE C SECTION 4.4.1, REAL CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT C SECTION 11.4, ARITHMETIC IF STATEMENT 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) C C TEST SECTION C C TEST 32 THROUGH TEST 42 CONTAIN ARITHMETIC ASSIGNMENT C STATEMENTS OF THE FORM C C INTEGER VARIABLE = REAL VARIABLE C IVTNUM = 32 C C **** TEST 32 **** C IF (ICZERO) 30320, 320, 30320 320 CONTINUE RVON01 = 44.5 IVCOMP = RVON01 GO TO 40320 30320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40320, 331, 40320 40320 IF (IVCOMP - 44) 20320,10320,20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 331 20320 IVFAIL = IVFAIL + 1 IVCORR = 44 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 331 CONTINUE IVTNUM = 33 C C **** TEST 33 **** C IF (ICZERO) 30330, 330, 30330 330 CONTINUE RVON01 = -2.0005 IVCOMP = RVON01 GO TO 40330 30330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40330, 341, 40330 40330 IF (IVCOMP + 2) 20330,10330,20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 341 20330 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 341 CONTINUE IVTNUM = 34 C C **** TEST 34 **** C IF (ICZERO) 30340, 340, 30340 340 CONTINUE RVON01 = .32767 IVCOMP = RVON01 GO TO 40340 30340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40340, 351, 40340 40340 IF (IVCOMP) 20340,10340,20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 351 20340 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 351 CONTINUE IVTNUM = 35 C C **** TEST 35 **** C IF (ICZERO) 30350, 350, 30350 350 CONTINUE RVON01 = 1.999 IVCOMP = RVON01 GO TO 40350 30350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40350, 361, 40350 40350 IF (IVCOMP - 1) 20350,10350,20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 361 20350 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 361 CONTINUE IVTNUM = 36 C C **** TEST 36 **** C IF (ICZERO) 30360, 360, 30360 360 CONTINUE RVON01 = .25E+1 IVCOMP = RVON01 GO TO 40360 30360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40360, 371, 40360 40360 IF (IVCOMP - 2) 20360,10360,20360 10360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 371 20360 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 371 CONTINUE IVTNUM = 37 C C **** TEST 37 **** C IF (ICZERO) 30370, 370, 30370 370 CONTINUE RVON01 = 445.0E-01 IVCOMP = RVON01 GO TO 40370 30370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40370, 381, 40370 40370 IF (IVCOMP - 44) 20370,10370,20370 10370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 381 20370 IVFAIL = IVFAIL + 1 IVCORR = 44 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 381 CONTINUE IVTNUM = 38 C C **** TEST 38 **** C IF (ICZERO) 30380, 380, 30380 380 CONTINUE RVON01 = -651.1E-0 IVCOMP = RVON01 GO TO 40380 30380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40380, 391, 40380 40380 IF (IVCOMP + 651) 20380,10380,20380 10380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 391 20380 IVFAIL = IVFAIL + 1 IVCORR = -651 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 391 CONTINUE IVTNUM = 39 C C **** TEST 39 **** C IF (ICZERO) 30390, 390, 30390 390 CONTINUE RVON01 = .3266E4 IVCOMP = RVON01 GO TO 40390 30390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40390, 401, 40390 40390 IF (IVCOMP - 3266) 20390,10390,20390 10390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 401 20390 IVFAIL = IVFAIL + 1 IVCORR = 3266 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 401 CONTINUE IVTNUM = 40 C C **** TEST 40 **** C IF (ICZERO) 30400, 400, 30400 400 CONTINUE RVON01 = 35.43E-01 IVCOMP = RVON01 GO TO 40400 30400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40400, 411, 40400 40400 IF (IVCOMP - 3) 20400,10400,20400 10400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 411 20400 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 411 CONTINUE IVTNUM = 41 C C **** TEST 41 **** C IF (ICZERO) 30410, 410, 30410 410 CONTINUE RVON01 = -7.001E2 IVCOMP = RVON01 GO TO 40410 30410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40410, 421, 40410 40410 IF (IVCOMP + 700) 20410,10410,20410 10410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 421 20410 IVFAIL = IVFAIL + 1 IVCORR = -700 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 421 CONTINUE IVTNUM = 42 C C **** TEST 42 **** C IF (ICZERO) 30420, 420, 30420 420 CONTINUE RVON01 = 4.45E-02 IVCOMP = RVON01 GO TO 40420 30420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40420, 431, 40420 40420 IF (IVCOMP) 20420,10420,20420 10420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 431 20420 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C TEST 43 THROUGH TEST 48 CONTAIN ARITHMETIC ASSIGNMENT C STATEMENTS OF THE FORM C C REAL VARIABLE = INTEGER VARIABLE C 431 CONTINUE IVTNUM = 43 C C **** TEST 43 **** C IF (ICZERO) 30430, 430, 30430 430 CONTINUE IVON01 = 2 RVCOMP = IVON01 GO TO 40430 30430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40430, 441, 40430 40430 IF (RVCOMP - 1.9995) 20430,10430,40431 40431 IF (RVCOMP - 2.0005) 10430,10430,20430 10430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 441 20430 IVFAIL = IVFAIL + 1 RVCORR = 2.0000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 441 CONTINUE IVTNUM = 44 C C **** TEST 44 **** C IF (ICZERO) 30440, 440, 30440 440 CONTINUE IVON01 = 25 RVCOMP = IVON01 GO TO 40440 30440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40440, 451, 40440 40440 IF (RVCOMP - 24.995) 20440,10440,40441 40441 IF (RVCOMP - 25.005) 10440,10440,20440 10440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 451 20440 IVFAIL = IVFAIL + 1 RVCORR = 25.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 451 CONTINUE IVTNUM = 45 C C **** TEST 45 **** C IF (ICZERO) 30450, 450, 30450 450 CONTINUE IVON01 = 357 RVCOMP = IVON01 GO TO 40450 30450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40450, 461, 40450 40450 IF (RVCOMP - 356.95) 20450,10450,40451 40451 IF (RVCOMP - 357.05) 10450,10450,20450 10450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 461 20450 IVFAIL = IVFAIL + 1 RVCORR = 357.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 461 CONTINUE IVTNUM = 46 C C **** TEST 46 **** C IF (ICZERO) 30460, 460, 30460 460 CONTINUE IVON01 = 4968 RVCOMP = IVON01 GO TO 40460 30460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40460, 471, 40460 40460 IF (RVCOMP - 4967.5) 20460,10460,40461 40461 IF (RVCOMP - 4968.5) 10460,10460,20460 10460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 471 20460 IVFAIL = IVFAIL + 1 RVCORR = 4968.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 471 CONTINUE IVTNUM = 47 C C **** TEST 47 **** C IF (ICZERO) 30470, 470, 30470 470 CONTINUE IVON01 = 32767 RVCOMP = IVON01 GO TO 40470 30470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40470, 481, 40470 40470 IF (RVCOMP - 32762.) 20470,10470,40471 40471 IF (RVCOMP - 32772.) 10470,10470,20470 10470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 481 20470 IVFAIL = IVFAIL + 1 RVCORR = 32767. WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 481 CONTINUE IVTNUM = 48 C C **** TEST 48 **** C IF (ICZERO) 30480, 480, 30480 480 CONTINUE IVON01 = -2 RVCOMP = IVON01 GO TO 40480 30480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40480, 491, 40480 40480 IF (RVCOMP + 2.0005) 20480,10480,40481 40481 IF (RVCOMP + 1.9995) 10480,10480,20450 10480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 491 20480 IVFAIL = IVFAIL + 1 RVCORR = -2.0000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR C C TEST 49 THROUGH TEST 51 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM C INTEGER VARIABLE = REAL CONSTANT C WHERE CONSTANT IS BASIC REAL CONSTANT C 491 CONTINUE IVTNUM = 49 C C **** TEST 49 **** C IF (ICZERO) 30490, 490, 30490 490 CONTINUE IVCOMP = 44.5 GO TO 40490 30490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40490, 501, 40490 40490 IF (IVCOMP - 44) 20490,10490,20490 10490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 501 20490 IVFAIL = IVFAIL + 1 IVCORR = 44 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 501 CONTINUE IVTNUM = 50 C C **** TEST 50 **** C IF (ICZERO) 30500, 500, 30500 500 CONTINUE IVCOMP = 6500.1 GO TO 40500 30500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40500, 511, 40500 40500 IF (IVCOMP - 6500) 20500,10500,20500 10500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 511 20500 IVFAIL = IVFAIL + 1 IVCORR = 6500 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 511 CONTINUE IVTNUM = 51 C C **** TEST 51 **** C IF (ICZERO) 30510, 510, 30510 510 CONTINUE IVCOMP = -.33333 GO TO 40510 30510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40510, 521, 40510 40510 IF (IVCOMP) 20510,10510,20510 10510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 521 20510 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 52 THROUGH TEST 55 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM C INTEGER VARIABLE = REAL CONSTANT C C WHERE CONSTANT IS BASIC REAL CONSTANT FOLLOWED BY DECIMAL EXPONENT C 521 CONTINUE IVTNUM = 52 C C **** TEST 52 **** C IF (ICZERO) 30520, 520, 30520 520 CONTINUE IVCOMP = .21E+1 GO TO 40520 30520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40520, 531, 40520 40520 IF (IVCOMP - 2) 20520,10520,20520 10520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 531 20520 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 531 CONTINUE IVTNUM = 53 C C **** TEST 53 **** C IF (ICZERO) 30530, 530, 30530 530 CONTINUE IVCOMP = 445.0E-01 GO TO 40530 30530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40530, 541, 40530 40530 IF (IVCOMP - 44) 20530,10530,20530 10530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 541 20530 IVFAIL = IVFAIL + 1 IVCORR = 44 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 541 CONTINUE IVTNUM = 54 C C **** TEST 54 **** C IF (ICZERO) 30540, 540, 30540 540 CONTINUE IVCOMP = 4.450E1 GO TO 40540 30540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40540, 551, 40540 40540 IF (IVCOMP - 44) 20540,10540,20540 10540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 551 20540 IVFAIL = IVFAIL + 1 IVCORR = 44 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 551 CONTINUE IVTNUM = 55 C C **** TEST 55 **** C IF (ICZERO) 30550, 550, 30550 550 CONTINUE IVCOMP = -4.45E0 GO TO 40550 30550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40550, 561, 40550 40550 IF (IVCOMP + 4) 20550,10550,20550 10550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 561 20550 IVFAIL = IVFAIL + 1 IVCORR = -4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 56 AND 57 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM INTEGER VARIABLE = REAL CONSTANT C WHERE CONSTANT IS INTEGER CONSTANT FOLLOWED BY DECIMAL EXPONENT C 561 CONTINUE IVTNUM = 56 C C **** TEST 56 **** C IF (ICZERO) 30560, 560, 30560 560 CONTINUE IVCOMP = 445E-02 GO TO 40560 30560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40560, 571, 40560 40560 IF (IVCOMP - 4) 20560,10560,20560 10560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 571 20560 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 571 CONTINUE IVTNUM = 57 C C **** TEST 57 **** C IF (ICZERO) 30570, 570, 30570 570 CONTINUE IVCOMP = -701E-1 GO TO 40570 30570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40570, 581, 40570 40570 IF (IVCOMP + 70) 20570,10570,20570 10570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 581 20570 IVFAIL = IVFAIL + 1 IVCORR = -70 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 58 THROUGH TEST 62 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS C OF THE FORM REAL VARIABLE = INTEGER CONSTANT C 581 CONTINUE IVTNUM = 58 C C **** TEST 58 **** C IF (ICZERO) 30580, 580, 30580 580 CONTINUE RVCOMP = 23 GO TO 40580 30580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40580, 591, 40580 40580 IF (RVCOMP - 22.995) 20580,10580,40581 40581 IF (RVCOMP - 23.005) 10580,10580,20580 10580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 591 20580 IVFAIL = IVFAIL + 1 RVCORR = 23.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 591 CONTINUE IVTNUM = 59 C C **** TEST 59 **** C IF (ICZERO) 30590, 590, 30590 590 CONTINUE RVCOMP = 32645 GO TO 40590 30590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40590, 601, 40590 40590 IF (RVCOMP - 32640.) 20590,10590,40591 40591 IF (RVCOMP - 32650.) 10590,10590,20590 10590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 601 20590 IVFAIL = IVFAIL + 1 RVCORR = 32645. WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 601 CONTINUE IVTNUM = 60 C C **** TEST 60 **** C IF (ICZERO) 30600, 600, 30600 600 CONTINUE RVCOMP = 0 GO TO 40600 30600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40600, 611, 40600 40600 IF (RVCOMP) 20600,10600,20600 10600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 611 20600 IVFAIL = IVFAIL + 1 RVCORR = 00000. WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 611 CONTINUE IVTNUM = 61 C C **** TEST 61 **** C IF (ICZERO) 30610, 610, 30610 610 CONTINUE RVCOMP = -15 GO TO 40610 30610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40610, 621, 40610 40610 IF (RVCOMP -14.995) 40611,10610,20610 40611 IF (RVCOMP + 15.005) 20610,10610,10610 10610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 621 20610 IVFAIL = IVFAIL + 1 RVCORR = -15.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 621 CONTINUE C C **** END OF TESTS **** C 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 FM061) END *END-OF,FM061 FM062.f 480976070 170 2 100666 24785 ` *HEADER,FORTR,FM062 *FILES1,FORTR,FM062,X C COMMENT SECTION C C FM062 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS WHERE C AN ARITHMETIC EXPRESSION FORMED FROM REAL VARIABLES AND C CONSTANTS CONNECTED BY ARITHMETIC OPERATORS IS ASSIGNED TO C A REAL VARIABLE. IN CASES INVOLVING THE EXPONENTIATION C OPERATOR, REAL VALUES ARE RAISED TO INTEGER POWERS ONLY. C C A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A C REAL NUMBER. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. C C A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A C DECIMAL POINT, AND A DECIMAL FRACTION PART IN THAT ORDER. BOTH C THE INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; C EITHER ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH. THE C CONSTANT IS AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A C DECIMAL NUMERAL. C C A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN C OPTIONALLY SIGNED INTEGER CONSTANT. C C A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT, C A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN C INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.4, REAL TYPE C SECTION 4.4.1, REAL CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 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) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C C TESTS 62 THROUGH 70 USE A MIXTURE OF REAL VARIABLES AND REAL C CONSTANTS CONNECTED BY TWO IDENTICAL ARITHMETIC OPERATORS. C TESTS OCCUR IN PAIRS, ONE WITHOUT PARENTHESES AND ONE WITH C PARENTHESES TO ALTER THE NORMAL ORDER OF EVALUATION. C C TESTS 71 THROUGH 90 USE THREE REAL VARIABLES CONNECTED BY A C PAIR OF DISSIMILAR OPERATORS. ALL COMBINATIONS AND ORDERINGS C OF OPERATORS ARE EXERCIZED. WHERE EXPONENTIATION IS TESTED, C INTEGER VARIABLES ARE USED FOR THE POWER PRIMARIES. C C TESTS 91 AND 92 USE A SERIES OF REAL VARIABLES CONNECTED BY ONE C EACH OF THE ARITHMETIC OPERTORS. PARENTHETICAL NOTATIONS ARE C ALSO TESTED. C C C C C IVTNUM = 62 C C **** TEST 62 **** C IF (ICZERO) 30620, 620, 30620 620 CONTINUE RVON01 = 7.5 RVON02 = 5E2 RVCOMP = RVON01 + RVON02 + 33E-1 GO TO 40620 30620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40620, 631, 40620 40620 IF (RVCOMP - 510.75) 20620,10620,40621 40621 IF (RVCOMP - 510.85) 10620,10620,20620 10620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 631 20620 IVFAIL = IVFAIL + 1 RVCORR = 510.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 631 CONTINUE IVTNUM = 63 C C **** TEST 63 **** C IF (ICZERO) 30630, 630, 30630 630 CONTINUE RVON01 = 75E-1 RVON02 = 500.0 RVCOMP = RVON01 + (RVON02 + 3.3) GO TO 40630 30630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40630, 641, 40630 40630 IF (RVCOMP - 510.75) 20630,10630,40631 40631 IF (RVCOMP - 510.85) 10630,10630,20630 10630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 641 20630 IVFAIL = IVFAIL + 1 RVCORR = 510.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 641 CONTINUE IVTNUM = 64 C C **** TEST 64 **** C IF (ICZERO) 30640, 640, 30640 640 CONTINUE RVCOMP = 7.5 - 500. - 3.3 GO TO 40640 30640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40640, 651, 40640 40640 IF (RVCOMP + 495.85) 20640,10640,40641 40641 IF (RVCOMP + 495.75) 10640,10640,20640 10640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 651 20640 IVFAIL = IVFAIL + 1 RVCORR = -495.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 651 CONTINUE IVTNUM = 65 C C **** TEST 65 **** C IF (ICZERO) 30650, 650, 30650 650 CONTINUE RVON01 = 7.5 RVON02 = 5E2 RVCOMP = RVON01 - (33E-1 - RVON02) GO TO 40650 30650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40650, 661, 40650 40650 IF (RVCOMP - 504.15) 20650,10650,40651 40651 IF (RVCOMP - 504.25) 10650,10650,20650 10650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 661 20650 IVFAIL = IVFAIL + 1 RVCORR = 504.2 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 661 CONTINUE IVTNUM = 66 C C **** TEST 66 **** C IF (ICZERO) 30660, 660, 30660 660 CONTINUE RVON01 = 7.5 RVCOMP = 5E2 * 33E-1 * RVON01 GO TO 40660 30660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40660, 671, 40660 40660 IF (RVCOMP - 12370) 20660,10660,40661 40661 IF (RVCOMP - 12380) 10660,10660,20660 10660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 671 20660 IVFAIL = IVFAIL + 1 RVCORR = 12375. WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 671 CONTINUE IVTNUM = 67 C C **** TEST 67 **** C IF (ICZERO) 30670, 670, 30670 670 CONTINUE RVON01 = 7.5 RVCOMP = 5E2 * (RVON01 * 33E-1) GO TO 40670 30670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40670, 681, 40670 40670 IF (RVCOMP - 12370) 20670,10670,40671 40671 IF (RVCOMP - 12380) 10670,10670,20670 10670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 681 20670 IVFAIL = IVFAIL + 1 RVCORR = 12375. WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 681 CONTINUE IVTNUM = 68 C C **** TEST 68 **** C IF (ICZERO) 30680, 680, 30680 680 CONTINUE RVON01 = 7.5 RVON02 = 33E-1 RVON03 = -5E+2 RVCOMP = RVON01 / RVON02 / RVON03 GO TO 40680 30680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40680, 691, 40680 40680 IF (RVCOMP + .00459) 20680,10680,40681 40681 IF (RVCOMP + .00449) 10680,10680,20680 10680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 691 20680 IVFAIL = IVFAIL + 1 RVCORR = -.0045454 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 691 CONTINUE IVTNUM = 69 C C **** TEST 69 **** C IF (ICZERO) 30690, 690, 30690 690 CONTINUE RVON01 = 7.5 RVON02 = 33E-1 RVON03 = -5E+2 RVCOMP = RVON01 / (RVON02 / RVON03) GO TO 40690 30690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40690, 701, 40690 40690 IF (RVCOMP + 1180.) 20690,10690,40691 40691 IF (RVCOMP + 1080.) 10690,10690,20690 10690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 701 20690 IVFAIL = IVFAIL + 1 RVCORR = -1136.4 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 701 CONTINUE IVTNUM = 70 C C **** TEST 70 **** C IF (ICZERO) 30700, 700, 30700 700 CONTINUE RVON01 = 3.835E3 IVON01 = 5 RVCOMP = RVON01 ** IVON01 GO TO 40700 30700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40700, 711, 40700 40700 IF (RVCOMP - 8.29E17) 20700,10700,40701 40701 IF (RVCOMP - 8.30E17) 10700,10700,20700 10700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 711 20700 IVFAIL = IVFAIL + 1 RVCORR = 8.295E17 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 711 CONTINUE C C TESTS 71 THROUGH 74 TEST RV1 + RV2 <OP2> RV3 C IVTNUM = 71 C C **** TEST 71 **** C IF (ICZERO) 30710, 710, 30710 710 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .005679 RVCOMP = RVON01 + RVON02 - RVON03 GO TO 40710 30710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40710, 721, 40710 40710 IF (RVCOMP - 528.16) 20710,10710,40711 40711 IF (RVCOMP - 528.26) 10710,10710,20710 10710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 721 20710 IVFAIL = IVFAIL + 1 RVCORR = 528.21 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 721 CONTINUE IVTNUM = 72 C C **** TEST 72 **** C IF (ICZERO) 30720, 720, 30720 720 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .005679 RVCOMP = RVON01 + RVON02 * RVON03 GO TO 40720 30720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40720, 731, 40720 40720 IF (RVCOMP - 524.84) 20720,10720,40721 40721 IF (RVCOMP - 524.94) 10720,10720,20720 10720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 731 20720 IVFAIL = IVFAIL + 1 RVCORR = 524.89 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 731 CONTINUE IVTNUM = 73 C C **** TEST 73 **** C IF (ICZERO) 30730, 730, 30730 730 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .005679 RVCOMP = RVON01 + RVON02 / RVON03 GO TO 40730 30730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40730, 741, 40730 40730 IF (RVCOMP - 1114.2) 20730,10730,40731 40731 IF (RVCOMP - 1115.2) 10730,10730,20730 10730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 741 20730 IVFAIL = IVFAIL + 1 RVCORR = 1114.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 741 CONTINUE IVTNUM = 74 C C **** TEST 74 **** C IF (ICZERO) 30740, 740, 30740 740 CONTINUE RVON01 = 524.87 RVON02 = 3.35 IVON01 = 7 RVCOMP = RVON01 + RVON02 ** IVON01 GO TO 40740 30740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40740, 751, 40740 40740 IF (RVCOMP - 5259.3) 20740,10740,40741 40741 IF (RVCOMP - 5260.3) 10740,10740,20740 10740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 751 20740 IVFAIL = IVFAIL + 1 RVCORR = 5259.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 751 CONTINUE C C TESTS 75 THROUGH 78 CHECK RV1 - RV2 <OP2> RV3 C IVTNUM = 75 C C **** TEST 75 **** C IF (ICZERO) 30750, 750, 30750 750 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .5679 RVCOMP = RVON01 - RVON02 + RVON03 GO TO 40750 30750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40750, 761, 40750 40750 IF (RVCOMP - 522.03) 20750,10750,40751 40751 IF (RVCOMP - 522.13) 10750,10750,20750 10750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 761 20750 IVFAIL = IVFAIL + 1 RVCORR = 522.09 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 761 CONTINUE IVTNUM = 76 C C **** TEST 76 **** C IF (ICZERO) 30760, 760, 30760 760 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .5679 RVCOMP = RVON01 - RVON02 * RVON03 GO TO 40760 30760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40760, 771, 40760 40760 IF (RVCOMP - 522.92) 20760,10760,40761 40761 IF (RVCOMP - 523.02) 10760,10760,20760 10760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 771 20760 IVFAIL = IVFAIL + 1 RVCORR = 522.97 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 771 CONTINUE IVTNUM = 77 C C **** TEST 77 **** C IF (ICZERO) 30770, 770, 30770 770 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .5679 RVCOMP = RVON01 - RVON02 / RVON03 GO TO 40770 30770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40770, 781, 40770 40770 IF (RVCOMP - 518.92) 20770,10770,40771 40771 IF (RVCOMP - 519.02) 10770,10770,20770 10770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 781 20770 IVFAIL = IVFAIL + 1 RVCORR = 518.97 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 781 CONTINUE IVTNUM = 78 C C **** TEST 78 **** C IF (ICZERO) 30780, 780, 30780 780 CONTINUE RVON01 = 524.87 RVON02 = 3.35 IVON01 = 7 RVCOMP = RVON01 - RVON02 ** IVON01 GO TO 40780 30780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40780, 791, 40780 40780 IF (RVCOMP + 4210.6) 20780,10780,40781 40781 IF (RVCOMP + 4209.6) 10780,10780,20780 10780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 791 20780 IVFAIL = IVFAIL + 1 RVCORR = -4210.1 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 791 CONTINUE C C TESTS 79 THROUGH 82 CHECK RV1 * RV2 <OP2> RV3 C IVTNUM = 79 C C **** TEST 79 **** C IF (ICZERO) 30790, 790, 30790 790 CONTINUE RVON01 = 524.87 RVON02 = .5679 RVON03 = 3.35 RVCOMP = RVON01 * RVON02 + RVON03 GO TO 40790 30790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40790, 801, 40790 40790 IF (RVCOMP - 301.37) 20790,10790,40791 40791 IF (RVCOMP - 301.47) 10790,10790,20790 10790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 801 20790 IVFAIL = IVFAIL + 1 RVCORR = 301.42 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 801 CONTINUE IVTNUM = 80 C C **** TEST 80 **** C IF (ICZERO) 30800, 800, 30800 800 CONTINUE RVON01 = 524.87 RVON02 = .5679 RVON03 = 3.35 RVCOMP = RVON01 * RVON02 - RVON03 GO TO 40800 30800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40800, 811, 40800 40800 IF (RVCOMP - 294.67) 20800,10800,40801 40801 IF (RVCOMP - 294.77) 10800,10800,20800 10800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 811 20800 IVFAIL = IVFAIL + 1 RVCORR = 294.72 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 811 CONTINUE IVTNUM = 81 C C **** TEST 81 **** C IF (ICZERO) 30810, 810, 30810 810 CONTINUE RVON01 = 524.87 RVON02 = .5679 RVON03 = 3.35 RVCOMP = RVON01 * RVON02 / RVON03 GO TO 40810 30810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40810, 821, 40810 40810 IF (RVCOMP - 88.92) 20810,10810,40811 40811 IF (RVCOMP - 89.02) 10810,10810,20810 10810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 821 20810 IVFAIL = IVFAIL + 1 RVCORR = 88.977 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 821 CONTINUE IVTNUM = 82 C C **** TEST 82 **** C IF (ICZERO) 30820, 820, 30820 820 CONTINUE RVON01 = 524.87 RVON02 = .5679 IVON01 = 7 RVCOMP = RVON01 * RVON02 ** IVON01 GO TO 40820 30820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40820, 831, 40820 40820 IF (RVCOMP - 9.94) 20820,10820,40821 40821 IF (RVCOMP - 10.04) 10820,10820,20820 10820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 831 20820 IVFAIL = IVFAIL + 1 RVCORR = 9.999 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 831 CONTINUE C C TESTS 83 THROUGH 86 CHECK RV1 / RV2 <OP2> RV3 C IVTNUM = 83 C C **** TEST 83 **** C IF (ICZERO) 30830, 830, 30830 830 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .5679 RVCOMP = RVON01 / RVON02 + RVON03 GO TO 40830 30830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40830, 841, 40830 40830 IF (RVCOMP - 157.19) 20830,10830,40831 40831 IF (RVCOMP - 157.29) 10830,10830,20830 10830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 841 20830 IVFAIL = IVFAIL + 1 RVCORR = 157.25 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 841 CONTINUE IVTNUM = 84 C C **** TEST 84 **** C IF (ICZERO) 30840, 840, 30840 840 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .8507 RVCOMP = RVON01 / RVON02 - RVON03 GO TO 40840 30840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40840, 851, 40840 40840 IF (RVCOMP - 155.77) 20840,10840,40841 40841 IF (RVCOMP - 155.87) 10840,10840,20840 10840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 851 20840 IVFAIL = IVFAIL + 1 RVCORR = 155.83 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 851 CONTINUE IVTNUM = 85 C C **** TEST 85 **** C IF (ICZERO) 30850, 850, 30850 850 CONTINUE RVON01 = 524.87 RVON02 = 3.35 RVON03 = .8507 RVCOMP = RVON01 / RVON02 * RVON03 GO TO 40850 30850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40850, 861, 40850 40850 IF (RVCOMP - 132.7) 20850,10850,40851 40851 IF (RVCOMP - 133.7) 10850,10850,20850 10850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 861 20850 IVFAIL = IVFAIL + 1 RVCORR = 133.29 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 861 CONTINUE IVTNUM = 86 C C **** TEST 86 **** C IF (ICZERO) 30860, 860, 30860 860 CONTINUE RVON01 = 524.87 RVON02 = 3.35 IVON01 = 7 RVCOMP = RVON01 / RVON02 ** IVON01 GO TO 40860 30860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40860, 871, 40860 40860 IF (RVCOMP - .106) 20860,10860,40861 40861 IF (RVCOMP - .116) 10860,10860,20860 10860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 871 20860 IVFAIL = IVFAIL + 1 RVCORR = .11085 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 871 CONTINUE C C TESTS 87 THROUGH 90 CHECK RV1 ** IV1 <OP2> RV2 C IVTNUM = 87 C C **** TEST 87 **** C IF (ICZERO) 30870, 870, 30870 870 CONTINUE RVON01 = 3.35 IVON01 = 7 RVON02 = 524.87 RVCOMP = RVON01 ** IVON01 + RVON02 GO TO 40870 30870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40870, 881, 40870 40870 IF (RVCOMP - 5210.) 20870,10870,40871 40871 IF (RVCOMP - 5310.) 10870,10870,20870 10870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 881 20870 IVFAIL = IVFAIL + 1 RVCORR = 5259.8 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 881 CONTINUE IVTNUM = 88 C C **** TEST 88 **** C IF (ICZERO) 30880, 880, 30880 880 CONTINUE RVON01 = 3.35 IVON01 = 7 RVON02 = 524.87 RVCOMP = RVON01 ** IVON01 - RVON02 GO TO 40880 30880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40880, 891, 40880 40880 IF (RVCOMP - 4160.) 20880,10880,40881 40881 IF (RVCOMP - 4260.) 10880,10880,20880 10880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 891 20880 IVFAIL = IVFAIL + 1 RVCORR = 4210.1 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 891 CONTINUE IVTNUM = 89 C C **** TEST 89 **** C IF (ICZERO) 30890, 890, 30890 890 CONTINUE RVON01 = 3.35 IVON01 = 7 RVON02 = 524.87 RVCOMP = RVON01 ** IVON01 * RVON02 GO TO 40890 30890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40890, 901, 40890 40890 IF (RVCOMP - 2.43E6) 20890,10890,40891 40891 IF (RVCOMP - 2.53E6) 10890,10890,20890 10890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 901 20890 IVFAIL = IVFAIL + 1 RVCORR = 2.4852E6 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 901 CONTINUE IVTNUM = 90 C C **** TEST 90 **** C IF (ICZERO) 30900, 900, 30900 900 CONTINUE RVON01 = 3.35 IVON01 = 7 RVON02 = 524.87 RVCOMP = RVON01 ** IVON01 / RVON02 GO TO 40900 30900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40900, 911, 40900 40900 IF (RVCOMP - 8.97) 20900,10900,40901 40901 IF (RVCOMP - 9.07) 10900,10900,20900 10900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 911 20900 IVFAIL = IVFAIL + 1 RVCORR = 9.0211 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 911 CONTINUE C C TESTS 91 AND 92 CHECK ALL ARITHMETIC OPERATORS USED TOGETHER C IVTNUM = 91 C C **** TEST 91 **** C IF (ICZERO) 30910, 910, 30910 910 CONTINUE RVON01 = 780.56 RVON02 = .803 RVON03 = 3.35 IVON01 = 7 RVON04 = 20.07 RVON05 = 511.9 RVCOMP = - RVON01 + RVON02 * RVON03 ** IVON01 / RVON04 - RVON05 GO TO 40910 30910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40910, 921, 40910 40910 IF (RVCOMP + 1113.0) 20910,10910,40911 40911 IF (RVCOMP + 1093.0) 10910,10910,20910 10910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 921 20910 IVFAIL = IVFAIL + 1 RVCORR = -1103.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 921 CONTINUE IVTNUM = 92 C C **** TEST 92 **** C IF (ICZERO) 30920, 920, 30920 920 CONTINUE RVON01 = 780.56 RVON02 = .803 RVON03 = 3.35 IVON01 = 7 RVON04 = 20.07 RVON05 = 511.9 RVCOMP = (-RVON01) + (RVON02 * RVON03) ** IVON01 / (RVON04-RVON05) GO TO 40920 30920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40920, 931, 40920 40920 IF (RVCOMP + 788.) 20920,10920,40921 40921 IF (RVCOMP + 777.) 10920,10920,20920 10920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 931 20920 IVFAIL = IVFAIL + 1 RVCORR = -782.63 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 931 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 FM062) END *END-OF,FM062 FM080.f 480976073 170 2 100666 21805 ` *HEADER,FORTR,FM080 *FILES1,FORTR,FM080 C COMMENT SECTION C C FM080 C C THIS ROUTINE CONTAINS EXTERNAL FUNCTION REFERENCE TESTS. C THE FUNCTION SUBPROGRAMS CALLED BY THIS ROUTINE ARE FF081, C FF082 AND FF083. THE FUNCTION SUBPROGRAMS ARE DEFINED AS C FF081 = INTEGER, FF082 = REAL, FF083 = IMPLICIT REAL. C THE FUNCTION SUBPROGRAM DUMMY ARGUMENTS MUST AGREE IN ORDER, C NUMBER AND TYPE WITH THE CORRESPONDING ACTUAL ARGUMENTS OF THE C MAIN PROGRAM. THE ARGUMENTS OF THE FUNCTION SUBPROGRAMS WILL C CORRESPOND TO ACTUAL ARGUMENT LIST REFERENCES OF VARIABLE-NAME, C ARRAY-NAME, ARRAY-ELEMENT-NAME AND EXPRESSION RESPECTIVELY. C C THIS ROUTINE WILL TEST THE VALUE OF THE FUNCTION AND THE C FUNCTION ARGUMENTS RETURNED FOLLOWING THE FUNCTION REFERENCE CALL. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 2.6, ARRAY C SECTION 15.5.2, REFERENCING EXTERNAL FUNCTIONS C SECTION 17.2, EVENTS THAT CAUSE ENTITIES TO BECOME DEFINED DIMENSION IADN1A (5), IADN2A (4,4) DIMENSION RADN3A (3,6,3), RADN1A (10) DIMENSION IADN3A (3,4,5) INTEGER FF081 REAL FF082 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) C C TEST SECTION C C EXTERNAL FUNCTION REFERENCE - FUNCTION SUBPROGRAM DEFINED AS C INTEGER (FF081) C 6741 CONTINUE IVTNUM = 674 C C TEST 674 THROUGH 679 TEST THE FUNCTION AND ARGUMENT VALUES C FROM REFERENCE OF FUNCTION FF081. FUNCTION SUBPROGRAM FF081 IS C DEFINED AS INTEGER. C C **** TEST 674 **** C C TEST 674 TESTS THE FUNCTION VALUE RETURNED FROM FUNCTION FF081 C IF (ICZERO) 36740,6740,36740 6740 CONTINUE IVON0A = 0 IVON02 = 2 IADN1A (3) = 8 IADN1A (2) = 4 IADN2A (1,3) =10 IVON0A = FF081 (IVON02, IADN1A, IADN2A, 999) GO TO 46740 36740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46740,6751,46740 46740 IF (IVON0A - 1015) 26740,16740,26740 16740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6751 26740 IVFAIL = IVFAIL + 1 IVCORR = 1015 IVCOMP = IVON0A WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6751 CONTINUE IVTNUM = 675 C C **** TEST 675 **** C C TEST 675 TESTS THE RETURN VALUE OF VARIABLE-NAME ARGUMENT C IVON02. VALUE OF IVON02 SHOULD BE 4. C IF (ICZERO) 36750,6750,36750 6750 CONTINUE GO TO 46750 36750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46750,6761,46750 46750 IF (IVON02 - 4) 26750,16750,26750 16750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6761 26750 IVFAIL = IVFAIL + 1 IVCORR = 4 IVCOMP = IVON02 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6761 CONTINUE IVTNUM = 676 C C **** TEST 676 **** C C TEST 676 TESTS THE RETURN VALUE OF ARRAY-NAME ARGUMENT C IADN1A. IADN1A (2) IS INCREMENTED BY 40 IN FUNCTION SUBPROGRAM C AND SHOULD RETURN A VALUE OF 44. C IF (ICZERO) 36760,6760,36760 6760 CONTINUE GO TO 46760 36760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46760,6771,46760 46760 IF (IADN1A (2) - 44) 26760,16760,26760 16760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6771 26760 IVFAIL = IVFAIL + 1 IVCORR = 44 IVCOMP = IADN1A (2) WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6771 CONTINUE IVTNUM = 677 C C **** TEST 677 **** C C TEST 677 TESTS THE RETURN VALUE OF ARRAY-NAME ARGUMENT IADN1A. C IADN1A (3) WAS NOT MODIFFED BY FUNCTION SUBPROGRAM AND SHOULD C HAVE A VALUE OF 8 C IF (ICZERO) 36770,6770,36770 6770 CONTINUE GO TO 46770 36770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46770,6781,46770 46770 IF (IADN1A (3) - 8) 26770,16770,26770 16770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6781 26770 IVFAIL = IVFAIL + 1 IVCORR = 8 IVCOMP = IADN1A (3) WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6781 CONTINUE IVTNUM = 678 C C **** TEST 678 **** C C TEST 678 TESTS THE RETURN VALUE OF ARRAY-ELEMENT-NAME C IADN2A (1,3). IADN2A (1,3) WAS INCREMENTED BY 70 IN THE FUNCTION C SUBPROGRAM AND SHOULD CONTAIN A VALUE OF 80. C IF (ICZERO) 36780,6780,36780 6780 CONTINUE GO TO 46780 36780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46780,6791,46780 46780 IF (IADN2A (1,3) - 80) 26780,16780,26780 16780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6791 26780 IVFAIL = IVFAIL + 1 IVCORR = 80 IVCOMP = IADN2A (1,3) WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6791 CONTINUE IVTNUM = 679 C C **** TEST 679 **** C C TEST 679 TESTS THE VALUE OF INTEGER FUNCTION ASSIGNED C TO A REAL VARIABLE. C IF (ICZERO) 36790,6790,36790 6790 CONTINUE RVON0A = 0.0 IVON02 = 2 IADN1A (2) = 4 IADN2A (1,3) = 10 RVON0A = FF081 (IVON02, IADN1A, IADN2A, 999) GO TO 46790 36790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46790,6801,46790 46790 IF (RVON0A - 1014.5) 26790,16790,46791 46791 IF (RVON0A - 1015.5) 16790,16790,26790 16790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6801 26790 IVFAIL = IVFAIL + 1 RVCORR = 1015.0 RVCOMP = RVON0A WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 6801 CONTINUE IVTNUM = 680 C C EXTERNAL FUNCTION REFERENCE - FUNCTION SUBPROGRAM FF082 DEFINED AS C REAL C C TESTS 680 THRU 685 TESTS THE FUNCTION AND ARGUMENT VALUES C FROM THE FUNCTION REFERENCE TO SUBPROGRAM FF082. THE FUNCTION C SUBPROGRAM IS DEFINED AS REAL. C C **** TEST 680 *** C C TEST 680 TESTS THE VALUE OF THE FUNCTION FF082. VALUE OF C FUNCTION SHOULD BE 339.0. C IF (ICZERO) 36800,6800,36800 6800 CONTINUE RVON01 = 2.0 RADN3A (2,5,2) = 100.0 RADN1A (5) = 210.5 RVON0A = 0.0 RVON0A = FF082 (RVON01, RADN3A, RADN1A, 26.5) GO TO 46800 36800 IVDELE = IVDELE + 1 WRITE (I02, 80003) IVTNUM IF (ICZERO) 46800,6811,46800 46800 IF (RVON0A - 338.5) 26800,16800,46801 46801 IF (RVON0A - 339.5) 16800,16800,26800 16800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6811 26800 IVFAIL = IVFAIL + 1 RVCORR = 339.0 RVCOMP = RVON0A WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 6811 CONTINUE IVTNUM = 681 C C **** TEST 681 **** C C TEST 681 TESTS THE VALUE OF THE VARIABLE-NAME ARGUMENT RVON01 C FOLLOWING THE FUNCTION REFERENCE. VALUE OF RVON01 SHOULD BE 8.4. C IF (ICZERO) 36810,6810,36810 6810 CONTINUE GO TO 46810 36810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46810,6821,46810 46810 IF (RVON01 - 8.395) 26810,16810,46811 46811 IF (RVON01 - 8.405) 16810,16810,26810 16810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6821 26810 IVFAIL = IVFAIL + 1 RVCORR = 8.4 RVCOMP = RVON01 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 6821 CONTINUE IVTNUM = 682 C C **** TEST 682 **** C C TEST 682 TESTS THE VALUE OF THE ARRAY-NAME ARGUMENT RADN3A C FOLLOWING THE FUNCTION REFERENCE. RADN3A (2,5,2) WAS INITIALIZED C IN MAIN PROGRAM AND INCREMENTED IN SUBPROGRAM. VALUE OF RADN3A C (2,5,2) SHOULD BE 112.2. C IF (ICZERO) 36820,6820,36820 6820 CONTINUE GO TO 46820 36820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46820,6831,46820 46820 IF (RADN3A (2,5,2) - 111.7) 26820,16820,46821 46821 IF (RADN3A (2,5,2) - 112.7) 16820,16820,26820 16820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6831 26820 IVFAIL = IVFAIL + 1 RVCORR = 112.2 RVCOMP = RADN3A (2,5,2) WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 6831 CONTINUE IVTNUM = 683 C C **** TEST 683 **** C C TEST 683 TESTS THE VALUE OF THE ARRAY-NAME ARGUMENT RADN3A C FOLLOWING THE FUNCTION REFERENCE. RADN3A (1,2,1) WAS INITIALIZED C IN THE SUBPROGRAM. THE VALUE OF RADN3A (1,2,1) SHOULD BE 612.2. C IF (ICZERO) 36830,6830,36830 6830 CONTINUE GO TO 46830 36830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46830,6841,46830 46830 IF (RADN3A (1,2,1) - 611.7) 26830,16830,46831 46831 IF (RADN3A (1,2,1) - 612.7) 16830,16830,26830 16830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6841 26830 IVFAIL = IVFAIL + 1 RVCORR = 612.2 RVCOMP = RADN3A (1,2,1) WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 6841 CONTINUE IVTNUM = 684 C C **** TEST 684 **** C C TEST 684 TESTS THE VALUE OF THE ARRAY-ELEMENT-NAME ARGUMENT C RADN1A FOLLOWING THE FUNCTION REFERENCE. RADN1A (5) WAS C INITIALIZED IN THE MAIN PROGRAM AND INCREMENTED BY 18.8 IN THE C FUNCTION SUBPROGRAM. THE VALUE OF RADN1A SHOULD BE 229.3. C IF (ICZERO) 36840,6840,36840 6840 CONTINUE GO TO 46840 36840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46840,6851,46840 46840 IF (RADN1A (5) - 228.8) 26840,16840,46841 46841 IF (RADN1A (5) - 229.8) 16840,16840,26840 16840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6851 26840 IVFAIL = IVFAIL + 1 RVCORR = 229.3 RVCOMP = RADN1A (5) WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 6851 CONTINUE IVTNUM = 685 C C **** TEST 685 **** C C TEST 685 TESTS THE RESULTANT VALUE WHERE THE FUNCTION C SUBPROGRAM IS DEFINED AS REAL AND THE VARIABLE TO WHICH THE C FUNCTION VALUE IS ASSIGNED IN THE MAIN PROGRAM IS DEFINED AS C INTEGER. C IF (ICZERO) 36850,6850,36850 6850 CONTINUE RVON01 = 4.0 RADN3A (2,5,2) = 200.0 RADN1A (5) = 2.85 IVON0A = 0.0 IVON0A = FF082 (RVON01, RADN3A, RADN1A, 102.68) GO TO 46850 36850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46850,6861,46850 46850 IF (IVON0A - 309) 26850,16850,26850 16850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6861 26850 IVFAIL = IVFAIL + 1 IVCORR = 309 IVCOMP = IVON0A WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6861 CONTINUE IVTNUM = 686 C C TESTS 686 THRU 690 TESTS THE FUNCTION AND ARGUMENT VALUES C FROM THE EXTERNAL FUNCTION REFERENCE TO SUBPROGRAM FF083. THE C FUNCTION SUBPROGRAM IS AN IMPLICIT DEFINITION OF REAL. C C ***** TEST 686 ***** C C TEST 686 TESTS THE VALUE OF FUNCTION FF082. THE VALUE OF THE C FUNCTION SHOULD BE 921.8. C IF (ICZERO) 36860,6860,36860 6860 CONTINUE C C IVON01 = 826 IADN2A (1,1) = 77 IADN3A (2,3,4) = 10 RVON02 = 4.4 RVON03 = 0.0 C RVON03 = FF083 (IVON01, IADN2A, IADN3A, RVON02 * 2.0) GO TO 46860 36860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46860,6871,46860 46860 IF (RVON03 - 921.3) 26860,16860,46861 46861 IF (RVON03 - 922.3) 16860,16860,26860 16860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6871 26860 IVFAIL = IVFAIL + 1 RVCORR = 921.8 RVCOMP = RVON03 WRITE (I02,80005) IVTNUM, RVCOMP, IVCORR 6871 CONTINUE IVTNUM = 687 C C **** TEST 687 ***** C C TEST 687 TESTS THE VALUE OF THE VARIABLE-NAME ARGUMENT IVON01 C FOLLOWING THE FUNCTION REFERENCE. THE VALUE OF IVON01 SHOULD BE C 836. C IF (ICZERO) 36870,6870,36870 6870 CONTINUE GO TO 46870 36870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46870,6881,46870 46870 IF (IVON01 - 836) 26870,16870,26870 16870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6881 26870 IVFAIL = IVFAIL + 1 IVCORR = 836 IVCOMP = IVON01 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6881 CONTINUE IVTNUM = 688 C C **** TEST 688 ***** C C TEST 688 TESTS THE VALUE OF THE ARRAY-NAME ARGUMENT IADN2A C FOLLOWING THE FUNCTION REFERENCE. THE ACTUAL ARGUMENT WAS C INITIALIZED IN THE MAIN PROGRAM AND IS INCREMENTED IN THE C SUBPROGRAM. THE VALUE OF IADN2A (1,1) SHOULD BE 97. C IF (ICZERO) 36880,6880,36880 6880 CONTINUE GO TO 46880 36880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46880,6880,46880 46880 IF (IADN2A (1,1) - 97) 26880,16880,26880 16880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6891 26880 IVFAIL = IVFAIL + 1 IVCORR = 97 IVCOMP = IADN2A (1,1) WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6891 CONTINUE IVTNUM = 689 C C **** TEST 689 **** C C TEST 689 TESTS THE VALUE OF THE ARRAY-ELEMENT-NAME ARGUMENT C IADN3A FOLLOWING THE FUNCTION REFERENCE. IADN3A (2,3,4) C WAS INTIALIZED IN THE MAIN PROGRAM AND INCREMENTED BY 40 IN THE C FUNCTION SUBPROGRAM. THE VALUE OF IADN3A SHOULD BE 50. C IF (ICZERO) 36890,6890,36890 6890 CONTINUE GO TO 46890 36890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46890,6901,46890 46890 IF (IADN3A (2,3,4) - 50) 26890,16890,26890 16890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6901 26890 IVFAIL = IVFAIL + 1 IVCORR = 50 IVCOMP = IADN3A (2,3,4) WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 6901 CONTINUE IVTNUM = 690 C C **** TEST 690 **** C C TEST 690 TESTS THE RESULTANT VALUE WHERE THE FUNCTION C SUBPROGRAM IS IMPLICITY DEFINED AS REAL AND THE VARIABLE C TO WHICH THE FUNCTION VALUE IS ASSIGNED IN THE MAIN PROGRAM C IS DEFINED AS INTEGER. THE VALUE OF IVON03 SHOULD BE 329. C IF (ICZERO) 36900,6900,36900 6900 CONTINUE IVON01 = 226 IADN2A (1,1) = 66 IADN3A (2,3,4) = 20 RVON02 = 8.8 IVON03 = 0 C IVON03 = FF083 (IVON01,IADN2A,IADN3A,RVON02 * 2.0) C GO TO 46900 36900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 46900,6911,46900 46900 IF (IVON03 - 329) 26900,16900,26900 16900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 6911 26900 IVFAIL = IVFAIL + 1 IVCORR = 329 IVCOMP = IVON03 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 6911 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 FM080) END *HEADER,FORTR,FM080,SUBRTN,FM081 INTEGER FUNCTION FF081 (IDON01, IDDN10, IDDN20, IDON02) C C COMMENT SECTION C C FF081 C C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM080. C THE FUNCTION DUMMY ARGUMENTS IDON01, IDDN10 AND IDDN20 ARE C INCREMENTED BY 2, 40 AND 70 RESPECTIVELY BEFORE CONTROL IS C RETURNED TO THE CALLING PROGRAM. VALUE OF THE FUNCTION WILL BE C THE SUM OF THE ACTUAL ARGUMENTS AS PASSED FROM CALLING PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT C C TEST SECTION C C FUNCTION SUBPROGRAM C DIMENSION IDDN10 (5), IDDN20 (4,4) IVON01 = IDON01 IVON02 = IDDN10(2) IVON03 = IDDN20(1,3) IVON04 = IDON02 C FF081 = IVON01 + IVON02 + IVON03 + IVON04 IDON01 = IVON01 + 2 IDDN10 (2) = IVON02 + 40 IDDN20 (1,3) = IVON03 + 70 IDDN10 (4) = IVON02 + 40 RETURN END *HEADER,FORTR,FM080,SUBRTN,FM082 REAL FUNCTION FF082 (RDON01, RDDN3A, RDDN1A, RDON02) DIMENSION RDDN3A (3,6,3), RDDN1A (10) C C COMMENT SECTION C C FF082 C C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM080. C THE FUNCTION DUMMY ARGUMENTS RDON01, RDDN3A, AND RDDN1A ARE C INCREMENTED BY 6.4, 12.2 AND 18.8 RESPECTIVELY BEFORE CONTROL IS C RETURNED TO THE MAIN PROGRAM. VALUE OF THE FUNCTION WILL BE C THE SUM OF THE ACTUAL ARGUMENTS AS PASSED TO THE SUBPROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT C C TEST SECTION C C FUNCTION SUBPROGRAM C RVON01 = RDON01 RVON02 = RDDN3A (2,5,2) RVON03 = RDDN1A (5) RVON04 = RDON02 C FF082 = RVON01 + RVON02 + RVON03 + RVON04 C RDON01 = RVON01 + 6.4 RDDN3A (2,5,2) = RVON02 + 12.2 RDDN1A (5) = RVON03 + 18.8 RDDN3A (1,2,1) = 600.0 + 12.2 RETURN END *HEADER,FORTR,FM080,SUBRTN,FM083 FUNCTION FF083 (IDON01,IDDN2A,IDDN3A,RDON02) DIMENSION IDDN2A (2,2), IDDN3A(3,4,5) C C COMMENT SECTION C C FF083 C C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM080. C THE TYPE DECLARATION IS IMPLICIT REAL. C THE FUNCTION DUMMY ARGUMENTS ARE BOTH INTEGER AND REAL. DUMMY C ARGUMENTS IDON01, IDDN2A AND IDDN3A ARE INCREMENTED BY 10, 20 AND C 40 RESPECTIVELY BEFORE CONTROL IS RETURNED TO THE MAIN PROGRAM. C THE VALUE OF THE FUNCTION RETURNED TO THE REFERENCING PROGRAM C WILL BE THE SUM OF THE ACTUAL ARGUMENTS AS PASSED TO THE C SUBPROGRAM FF083. C DUMMY ARGUMENT IDDN2A CORRESPONDS TO AN ARRAY-NAME IN THE C ACTUAL ARGUMENT OF THE MAIN PROGRAM. DUMMY ARGUMENT IDDN3A C CORRESPONDS TO AN ARRAY-ELEMENT-NAME IN THE ACTUAL ARGUMENT OF THE C MAIN PROGRAM. DUMMY ARGUMENT IDON02 CORRESPONDS TO AN EXPRESSION C CONTAINING VARIABLES,ARITHMETIC OPERATORS AND CONSTANTS IN THE C ACTUAL ARGUMENT OF THE MAIN PROGRAM. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS C SECTION 15.5.1, FUNCTION SUBPROGRAM C C TEST SECTION C C FUNCTION SUBPROGRAM C IVON01 = IDON01 IVON02 = IDDN2A (1,1) IVON03 = IDDN3A (2,3,4) RVON04 = RDON02 C RVON05 = IVON01 + IVON02 + IVON03 FF083 = RVON05 + RVON04 C IDON01 = IVON01 + 10 IDDN2A (1,1) = IVON02 + 20 IDDN3A (2,3,4) = IVON03 + 40 C RETURN END *END-OF,FM080 FM097.f 480976076 170 2 100666 24662 ` *HEADER,FORTR,FM097 *FILES1,FORTR,FM097,X C COMMENT SECTION C C FM097 C C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION TYPE IS C REAL AND THE ARGUMENTS ARE EITHER INTEGER OR REAL. THE REAL AND C INTEGER VARIABLES AND THE REAL AND INTEGER CONSTANTS CONTAIN BOTH C POSITIVE AND NEGATIVE VALUES. THE INTRINSIC FUNCTIONS TESTED BY C FM097 INCLUDE C TYPE OF C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION C ------------------ ---- -------- -------- C ABSOLUTE VALUE ABS REAL REAL C TRUNCATION AINT REAL REAL C REMAINDERING AMOD REAL REAL C CHOOSING LARGEST VALUE AMAX0 INTEGER REAL C AMAX1 REAL REAL C CHOOSING SMALLEST VALUE AMIN0 INTEGER REAL C AMIN1 REAL REAL C FLOAT FLOAT INTEGER REAL C TRANSFER OF SIGN SIGN REAL REAL C POSITIVE DIFFERENCE DIM REAL REAL C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS C SECTION 15.3, INTRINSIC FUNCTION C SECTION 15.3.2, INTRINSIC FUNCTIONS AND THEIR REFERENCE 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) C C TEST SECTION C C TEST 875 THROUGH TEST 878 CONTAIN INTRINSIC FUNCTION TESTS FOR C ABSOLUTE VALUE WHERE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 875 C C **** TEST 875 **** C IF (ICZERO) 38750, 8750, 38750 8750 CONTINUE RVCOMP = ABS (-38.2) GO TO 48750 38750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48750, 8761, 48750 48750 IF (RVCOMP - 38.195) 28750,18750,48751 48751 IF (RVCOMP - 38.205) 18750,18750,28750 18750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8761 28750 IVFAIL = IVFAIL + 1 RVCORR = 38.200 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8761 CONTINUE IVTNUM = 876 C C **** TEST 876 **** C IF (ICZERO) 38760, 8760, 38760 8760 CONTINUE RVON01 = 445.06 RVCOMP = ABS (RVON01) GO TO 48760 38760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48760, 8771, 48760 48760 IF (RVCOMP - 445.01) 28760,18760,48761 48761 IF (RVCOMP - 445.11) 18760,18760,28760 18760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8771 28760 IVFAIL = IVFAIL + 1 RVCORR = 445.06 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8771 CONTINUE IVTNUM = 877 C C **** TEST 877 **** C IF (ICZERO) 38770, 8770, 38770 8770 CONTINUE RVON01 = -32.176 RVCOMP = ABS (RVON01) GO TO 48770 38770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48770, 8781, 48770 48770 IF (RVCOMP - 32.171) 28770,18770,48771 48771 IF (RVCOMP - 32.181) 18770,18770,28770 18770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8781 28770 IVFAIL = IVFAIL + 1 RVCORR = 32.176 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8781 CONTINUE IVTNUM = 878 C C **** TEST 878 **** C IF (ICZERO) 38780, 8780, 38780 8780 CONTINUE RVON01 = -2.2E+2 RVCOMP = ABS (RVON01) GO TO 48780 38780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48780, 8791, 48780 48780 IF (RVCOMP - 219.95) 28780,18780,48781 48781 IF (RVCOMP - 220.05) 18780,18780,28780 18780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8791 28780 IVFAIL = IVFAIL + 1 RVCORR = 220.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8791 CONTINUE IVTNUM = 879 C C **** TEST 879 **** C C TEST 879 THROUGH TEST 882 CONTAIN INTRINSIC FUNCTION TESTS FOR C TRUNCATION WHERE ARGUMENT AND FUNCTION ARE REAL C C IF (ICZERO) 38790, 8790, 38790 8790 CONTINUE RVCOMP = AINT (38.2) GO TO 48790 38790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48790, 8801, 48790 48790 IF (RVCOMP - 37.995) 28790,18790,48791 48791 IF (RVCOMP - 38.005) 18790,18790,28790 18790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8801 28790 IVFAIL = IVFAIL + 1 RVCORR = 38.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8801 CONTINUE IVTNUM = 880 C C **** TEST 880 **** C IF (ICZERO) 38800, 8800, 38800 8800 CONTINUE RVON01 = -445.95 RVCOMP = AINT (RVON01) GO TO 48800 38800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48800, 8811, 48800 48800 IF (RVCOMP + 445.05) 28800,18800,48801 48801 IF (RVCOMP + 444.95) 18800,18800,28800 18800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8811 28800 IVFAIL = IVFAIL + 1 RVCORR = -445.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8811 CONTINUE IVTNUM = 881 C C **** TEST 881 **** C IF (ICZERO) 38810, 8810, 38810 8810 CONTINUE RVON01 = 466.01 RVCOMP = AINT (RVON01) GO TO 48810 38810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48810, 8821, 48810 48810 IF (RVCOMP - 465.95) 28810,18810,48811 48811 IF (RVCOMP - 466.05) 18810,18810,28810 18810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8821 28810 IVFAIL = IVFAIL + 1 RVCOMP = 466.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8821 CONTINUE IVTNUM = 882 C C **** TEST 882 **** C IF (ICZERO) 38820, 8820, 38820 8820 CONTINUE RVON01 = 382E-1 RVCOMP = AINT (RVON01) GO TO 48820 38820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48820, 8831, 48820 48820 IF (RVCOMP - 37.995) 28820,18820,48821 48821 IF (RVCOMP - 38.005) 18820,18820,28820 18820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8831 28820 IVFAIL = IVFAIL + 1 RVCORR = 38.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8831 CONTINUE C C TEST 883 THROUGH 886 CONTAIN INTRINSIC FUNCTION TESTS FOR C REMAINDERING WHERE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 883 C C **** TEST 883 **** C IF (ICZERO) 38830, 8830, 38830 8830 CONTINUE RVCOMP = AMOD (42.0,19.0) GO TO 48830 38830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48830, 8841, 48830 48830 IF (RVCOMP - 3.9995) 28830,18830,48831 48831 IF (RVCOMP - 4.0005) 18830,18830,28830 18830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8841 28830 IVFAIL = IVFAIL + 1 RVCORR = 4.0000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8841 CONTINUE IVTNUM = 884 C C **** TEST 884 **** C IF (ICZERO) 38840, 8840, 38840 8840 CONTINUE RVON01 = 16.27 RVON02 = 2.0 RVCOMP = AMOD (RVON01,RVON02) GO TO 48840 38840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48840, 8851, 48840 48840 IF (RVCOMP - .26995) 28840,18840,48841 48841 IF (RVCOMP - .27005) 18840,18840,28840 18840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8851 28840 IVFAIL = IVFAIL + 1 RVCORR = .27000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8851 CONTINUE IVTNUM = 885 C C **** TEST 885 **** C IF (ICZERO) 38850, 8850, 38850 8850 CONTINUE RVON01 = 225.0 RVON02 = 5.0E1 RVCOMP = AMOD (RVON01,RVON02) GO TO 48850 38850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48850, 8861, 48850 48850 IF (RVCOMP - 24.995) 28850,18850,48851 48851 IF (RVCOMP - 25.005) 18850,18850,28850 18850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8861 28850 IVFAIL = IVFAIL + 1 RVCORR = 25.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8861 CONTINUE IVTNUM = 886 C C **** TEST 886 **** C IF (ICZERO) 38860, 8860, 38860 8860 CONTINUE RVON01 = -0.390E+2 RVON02 = 5E2 RVCOMP = AMOD (RVON01,RVON02) GO TO 48860 38860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48860, 8871, 48860 48860 IF (RVCOMP + 39.005) 28860,18860,48861 48861 IF (RVCOMP + 38.995) 18860,18860,28860 18860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8871 28860 IVFAIL = IVFAIL + 1 RVCORR = -39.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8871 CONTINUE C C TEST 887 AND 888 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C LARGEST VALUE WHERE ARGUMENTS ARE INTEGER AND FUNCTION IS REAL C IVTNUM = 887 C C **** TEST 887 **** C IF (ICZERO) 38870, 8870, 38870 8870 CONTINUE IVON01 = 317 IVON02 = -99 IVON03 = 1 RVCOMP = AMAX0 (263,IVON01,IVON02,IVON03) GO TO 48870 38870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48870, 8881, 48870 48870 IF (RVCOMP - 316.95) 28870,18870,48871 48871 IF (RVCOMP - 317.05) 18870,18870,28870 18870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8881 28870 IVFAIL = IVFAIL + 1 RVCORR = 317.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8881 CONTINUE IVTNUM = 888 C C **** TEST 888 **** C IF (ICZERO) 38880, 8880, 38880 8880 CONTINUE IVON01 = 2572 IVON02 = 2570 RVCOMP = AMAX0 (IVON01,IVON02) GO TO 48880 38880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48880, 8891, 48880 48880 IF (RVCOMP - 2571.5) 28880,18880,48881 48881 IF (RVCOMP - 2572.5) 18880,18880,28880 18880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8891 28880 IVFAIL = IVFAIL + 1 RVCORR = 2572.0 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8891 CONTINUE C C TEST 889 AND 890 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C LARGEST VALUE WHERE THE ARGUMENTS AND FUNCTION ARE REAL C IVTNUM = 889 C C **** TEST 889 **** C IF (ICZERO) 38890, 8890, 38890 8890 CONTINUE RVON01 = .326E+2 RVON02 = 22.075 RVON03 = 76E-1 RVCOMP = AMAX1 (RVON01,RVON02,RVON03) GO TO 48890 38890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48890, 8901, 48890 48890 IF (RVCOMP - 32.595) 28890,18890,48891 48891 IF (RVCOMP - 32.605) 18890,18890,28890 18890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8901 28890 IVFAIL = IVFAIL + 1 RVCORR = 32.600 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8901 CONTINUE IVTNUM = 890 C C **** TEST 890 **** C IF (ICZERO) 38900, 8900, 38900 8900 CONTINUE RVON01 = -6.3E2 RVON02 = -21.0 RVCOMP = AMAX1 (-463.3,RVON01,RVON02) GO TO 48900 38900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48900, 8911, 48900 48900 IF (RVCOMP + 21.005) 28900,18900,48901 48901 IF (RVCOMP + 20.995) 18900,18900,28900 18900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8911 28900 IVFAIL = IVFAIL + 1 RVCORR = -21.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8911 CONTINUE C C TESTS 891 AND 892 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C SMALLEST VALUE WHERE ARGUMENTS ARE INTEGER AND FUNCTION IS REAL C IVTNUM = 891 C C **** TEST 891 **** C IF (ICZERO) 38910, 8910, 38910 8910 CONTINUE IVON01 = -75 IVON02 = -243 RVCOMP = AMIN0 (IVON01,IVON02) GO TO 48910 38910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48910, 8921, 48910 48910 IF (RVCOMP + 243.05) 28910,18910,48911 48911 IF (RVCOMP + 242.95) 18910,18910,28910 18910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8921 28910 IVFAIL = IVFAIL + 1 RVCORR = -243.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8921 CONTINUE IVTNUM = 892 C C **** TEST 892 **** C IF (ICZERO) 38920, 8920, 38920 8920 CONTINUE IVON01 = -11 IVON02 = 11 RVCOMP = AMIN0 (0,IVON01,IVON02) GO TO 48920 38920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48920, 8931, 48920 48920 IF (RVCOMP + 11.005) 28920,18920,48921 48921 IF (RVCOMP + 10.995) 18920,18920,28920 18920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8931 28920 IVFAIL = IVFAIL + 1 RVCORR = -11.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8931 CONTINUE C C TESTS 893 AND 894 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C SMALLEST VALUE WHERE ARGUMENTS AND FUNCTION ARE REAL C IVTNUM = 893 C C **** TEST 893 **** C IF (ICZERO) 38930, 8930, 38930 8930 CONTINUE RVON01 = 1.1111 RVON02 = 22.222 RVON03 = 333.33 RVCOMP = AMIN1 (RVON01,RVON02,RVON03) GO TO 48930 38930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48930, 8941, 48930 48930 IF (RVCOMP - 1.1106) 28930,18930,48931 48931 IF (RVCOMP - 1.1116) 18930,18930,28930 18930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8941 28930 IVFAIL = IVFAIL + 1 RVCORR = 1.1111 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8941 CONTINUE IVTNUM = 894 C C **** TEST 894 **** C IF (ICZERO) 38940, 8940, 38940 8940 CONTINUE RVON01 = 28.8 RVON02 = 2.88E1 RVON03 = 288E-1 RVON04 = 35.0 RVCOMP = AMIN1 (RVON01,RVON02,RVON03,RVON04) GO TO 48940 38940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48940, 8951, 48940 48940 IF (RVCOMP - 28.795) 28940,18940,48941 48941 IF (RVCOMP - 28.805) 18940,18940,28940 18940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8951 28940 IVFAIL = IVFAIL + 1 RVCORR = 28.800 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8951 CONTINUE C C TEST 895 THROUGH TEST 897 CONTAIN INTRINSIC FUNCTION TESTS FOR C FLOAT - CONVERSION OF AN INTEGER ARGUMENT TO REAL FUNCTION C IVTNUM = 895 C C **** TEST 895 **** C IF (ICZERO) 38950, 8950, 38950 8950 CONTINUE RVCOMP = FLOAT (-606) GO TO 48950 38950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48950, 8961, 48950 48950 IF (RVCOMP + 606.05) 28950,18950,48951 48951 IF (RVCOMP + 605.95) 18950,18950,28950 18950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8961 28950 IVFAIL = IVFAIL + 1 RVCORR = -606.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8961 CONTINUE IVTNUM = 896 C C **** TEST 896 **** C IF (ICZERO) 38960, 8960, 38960 8960 CONTINUE IVON01 = 71 RVCOMP = FLOAT (IVON01) GO TO 48960 38960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48960, 8971, 48960 48960 IF (RVCOMP - 70.995) 28960,18960,48961 48961 IF (RVCOMP - 71.005) 18960,18960,28960 18960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8971 28960 IVFAIL = IVFAIL + 1 RVCORR = 71.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8971 CONTINUE IVTNUM = 897 C C **** TEST 897 **** C IF (ICZERO) 38970, 8970, 38970 8970 CONTINUE IVON01 = 321 RVCOMP = FLOAT (-IVON01) GO TO 48970 38970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48970, 8981, 48970 48970 IF (RVCOMP + 321.05) 28970,18970,48971 48971 IF (RVCOMP + 320.95) 18970,18970,28970 18970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8981 28970 IVFAIL = IVFAIL + 1 RVCORR = -321.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8981 CONTINUE C C TEST 898 THROUGH TEST 900 CONTAIN INTRINSIC FUNCTION TESTS FOR C TRANSFER OF SIGN - BOTH ARGUMENTS AND FUNCTION ARE REAL C IVTNUM = 898 C C **** TEST 898 **** C IF (ICZERO) 38980, 8980, 38980 8980 CONTINUE RVON01 = 64.3 RVCOMP = SIGN (RVON01,-1.0) GO TO 48980 38980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48980, 8991, 48980 48980 IF (RVCOMP + 64.305) 28980,18980,48981 48981 IF (RVCOMP + 64.295) 18980,18980,28980 18980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 8991 28980 IVFAIL = IVFAIL + 1 RVCORR = -64.300 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 8991 CONTINUE IVTNUM = 899 C C **** TEST 899 **** C IF (ICZERO) 38990, 8990, 38990 8990 CONTINUE RVON01 = -2.2 RVON02 = 7.23E1 RVCOMP = SIGN (RVON01,RVON02) GO TO 48990 38990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 48990, 9001, 48990 48990 IF (RVCOMP - 2.1995) 28990,18990,48991 48991 IF (RVCOMP - 2.2005) 18990,18990,28990 18990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9001 28990 IVFAIL = IVFAIL + 1 RVCORR = 2.2000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9001 CONTINUE IVTNUM = 900 C C **** TEST 900 **** C IF (ICZERO) 39000, 9000, 39000 9000 CONTINUE RVON01 = 35.32E+1 RVON02 = 1.0 RVCOMP = SIGN (RVON01,RVON02) GO TO 49000 39000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49000, 9011, 49000 49000 IF (RVCOMP - 353.15) 29000,19000,49001 49001 IF (RVCOMP - 353.25) 19000,19000,29000 19000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9011 29000 IVFAIL = IVFAIL + 1 RVCORR = 353.20 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9011 CONTINUE C C TEST 901 THROUGH TEST 904 CONTAIN INTRINSIC FUNCTION TESTS FOR C POSITIVE DIFFERENCE WHERE ARGUMENTS AND FUNCTION ARE REAL C IVTNUM = 901 C C **** TEST 901 **** C IF (ICZERO) 39010, 9010, 39010 9010 CONTINUE RVON01 = 22.2 RVCOMP = DIM (RVON01,1.0) GO TO 49010 39010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49010, 9021, 49010 49010 IF (RVCOMP - 21.195) 29010,19010,49011 49011 IF (RVCOMP - 21.205) 19010,19010,29010 19010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9021 29010 IVFAIL = IVFAIL + 1 RVCORR = 21.200 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9021 CONTINUE IVTNUM = 902 C C **** TEST 902 **** C IF (ICZERO) 39020, 9020, 39020 9020 CONTINUE RVON01 = 4.5E1 RVON02 = 41.0 RVCOMP = DIM (RVON01,RVON02) GO TO 49020 39020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49020, 9031, 49020 49020 IF (RVCOMP - 3.9995) 29020,19020,49021 49021 IF (RVCOMP - 4.0005) 19020,19020,29020 19020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9031 29020 IVFAIL = IVFAIL + 1 RVCORR = 4.0000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9031 CONTINUE IVTNUM = 903 C C **** TEST 903 **** C IF (ICZERO) 39030, 9030, 39030 9030 CONTINUE RVON01 = 2.0 RVON02 = 10.0 RVCOMP = DIM (RVON01,RVON02) GO TO 49030 39030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49030, 9041, 49030 49030 IF (RVCOMP) 29030,19030,29030 19030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9041 29030 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9041 CONTINUE IVTNUM = 904 C C **** TEST 904 **** C IF (ICZERO) 39040, 9040, 39040 9040 CONTINUE RVON01 = 1.65E+1 RVON02 = -2.0 RVCOMP = DIM (RVON01,RVON02) GO TO 49040 39040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49040, 9051, 49040 49040 IF (RVCOMP - 18.495) 29040,19040,49041 49041 IF (RVCOMP - 18.505) 19040,19040,29040 19040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9051 29040 IVFAIL = IVFAIL + 1 RVCORR = 18.500 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9051 CONTINUE C C TESTS 905 AND 906 CONTAIN EXPRESSIONS CONTAINING MORE THAN ONE C INTRINSIC FUNCTION - ALL ARGUMENTS AND FUNCTIONS ARE REAL C IVTNUM = 905 C C **** TEST 905 **** C IF (ICZERO) 39050, 9050, 39050 9050 CONTINUE RVON01 = 33.3 RVON02 = -12.1 RVCOMP = AINT (RVON01) + ABS (RVON02) GO TO 49050 39050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49050, 9061, 49050 49050 IF (RVCOMP - 45.095) 29050,19050,49051 49051 IF (RVCOMP - 45.105) 19050,19050,29050 19050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9061 29050 IVFAIL = IVFAIL + 1 RVCORR = 45.100 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9061 CONTINUE IVTNUM = 906 C C **** TEST 906 **** C IF (ICZERO) 39060, 9060, 39060 9060 CONTINUE RVON01 = 76.3 RVON02 = 2.1E1 RVON03 = 3E1 RVCOMP = AMAX1(RVON01,RVON02,RVON03)-AMIN1(RVON01,RVON02,RVON03) GO TO 49060 39060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49060, 9071, 49060 49060 IF (RVCOMP - 55.295) 29060,19060,49061 49061 IF (RVCOMP - 55.305) 19060,19060,29060 19060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9071 29060 IVFAIL = IVFAIL + 1 RVCORR = 55.300 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9071 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 FM097) END *END-OF,FM097 FM098.f 480976079 170 2 100666 23086 ` *HEADER,FORTR,FM098 *FILES1,FORTR,FM098,X C COMMENT SECTION C C FM098 C C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION TYPE IS C INTEGER AND THE ARGUMENTS ARE EITHER INTEGER OR REAL. THE REAL C AND INTEGER VARIABLES AND THE REAL AND INTEGER CONSTANTS CONTAIN C BOTH POSITIVE AND NEGATIVE VALUES. THE INTRINSIC FUNCTIONS TESTED C BY FM098 INCLUDE C TYPE OF C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION C ------------------ ---- -------- -------- C ABSOLUTE VALUE IABS INTEGER INTEGER C TRUNCATION INT REAL INTEGER C REMAINDERING MOD INTEGER INTEGER C CHOOSING LARGEST VALUE MAX0 INTEGER INTEGER C MAX1 REAL INTEGER C CHOOSING SMALLEST VALUE MIN0 INTEGER INTEGER C MIN1 REAL INTEGER C FIX IFIX REAL INTEGER C TRANSFER OF SIGN ISIGN INTEGER INTEGER C POSITIVE DIFFERENCE IDIM INTEGER INTEGER C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS C SECTION 15.3, INTRINSIC FUNCTION C SECTION 15.3.2, INTRINSIC FUNCTIONS AND THEIR REFERENCE 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) C C TEST SECTION C C TEST 907 THROUGH TEST 909 CONTAIN INTRINSIC FUNCTION TESTS FOR C ABSOLUTE VALUE WHERE ARGUMENT AND FUNCTION ARE INTEGER C 9071 CONTINUE IVTNUM = 907 C C **** TEST 907 **** C IF (ICZERO) 39070, 9070, 39070 9070 CONTINUE IVCOMP = IABS (-382) GO TO 49070 39070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49070, 9081, 49070 49070 IF (IVCOMP - 382) 29070,19070,29070 19070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9081 29070 IVFAIL = IVFAIL + 1 IVCORR = 382 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9081 CONTINUE IVTNUM = 908 C C **** TEST 908 **** C IF (ICZERO) 39080, 9080, 39080 9080 CONTINUE IVON01 = 445 IVCOMP = IABS (IVON01) GO TO 49080 39080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49080, 9091, 49080 49080 IF (IVCOMP - 445) 29080,19080,29080 19080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9091 29080 IVFAIL = IVFAIL + 1 IVCORR = 445 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9091 CONTINUE IVTNUM = 909 C C **** TEST 909 **** C IF (ICZERO) 39090, 9090, 39090 9090 CONTINUE IVON01 = -32176 IVCOMP = IABS (IVON01) GO TO 49090 39090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49090, 9101, 49090 49090 IF (IVCOMP - 32176) 29090,19090,29090 19090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9101 29090 IVFAIL = IVFAIL + 1 IVCORR = 32176 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 910 THROUGH TEST 913 CONTAIN INTRINSIC FUNCTION TESTS FOR C TRUNCATION WHERE ARGUMENT IS REAL AND FUNCTION IS INTEGER C 9101 CONTINUE IVTNUM = 910 C C **** TEST 910 **** C IF (ICZERO) 39100, 9100, 39100 9100 CONTINUE IVCOMP = INT (38.2) GO TO 49100 39100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49100, 9111, 49100 49100 IF (IVCOMP - 38) 29100,19100,29100 19100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9111 29100 IVFAIL = IVFAIL + 1 IVCORR = 38 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9111 CONTINUE IVTNUM = 911 C C **** TEST 911 **** C IF (ICZERO) 39110, 9110, 39110 9110 CONTINUE RVON01 = -445.95 IVCOMP = INT (RVON01) GO TO 49110 39110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49110, 9121, 49110 49110 IF (IVCOMP + 445) 29110,19110,29110 19110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9121 29110 IVFAIL = IVFAIL + 1 IVCORR = -445 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9121 CONTINUE IVTNUM = 912 C C **** TEST 912 **** C IF (ICZERO) 39120, 9120, 39120 9120 CONTINUE RVON01 = 466.01 IVCOMP = INT (RVON01) GO TO 49120 39120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49120, 9131, 49120 49120 IF (IVCOMP - 466) 29120,19120,29120 19120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9131 29120 IVFAIL = IVFAIL + 1 IVCORR = 466 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9131 CONTINUE IVTNUM = 913 C C **** TEST 913 **** C IF (ICZERO) 39130, 9130, 39130 9130 CONTINUE RVON01 = 382E-1 IVCOMP = INT (RVON01) GO TO 49130 39130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49130, 9141, 49130 49130 IF (IVCOMP - 38) 29130,19130,29130 19130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9141 29130 IVFAIL = IVFAIL + 1 IVCORR = 38 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 914 THROUGH TEST 917 CONTAIN INTRINSIC FUNCTION TESTS FOR C REMAINDERING WHERE ARGUMENTS AND FUNCTION ARE INTEGERS C 9141 CONTINUE IVTNUM = 914 C C **** TEST 914 **** C IF (ICZERO) 39140, 9140, 39140 9140 CONTINUE IVCOMP = MOD (42,19) GO TO 49140 39140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49140, 9151, 49140 49140 IF (IVCOMP - 4) 29140,19140,29140 19140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9151 29140 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9151 CONTINUE IVTNUM = 915 C C **** TEST 915 **** C IF (ICZERO) 39150, 9150, 39150 9150 CONTINUE IVON01 = 6667 IVON02 = 2 IVCOMP = MOD (IVON01,IVON02) GO TO 49150 39150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49150, 9161, 49150 49150 IF (IVCOMP - 1) 29150,19150,29150 19150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9161 29150 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9161 CONTINUE IVTNUM = 916 C C **** TEST 916 **** C IF (ICZERO) 39160, 9160, 39160 9160 CONTINUE IVON01 = 225 IVON02 = 50 IVCOMP = MOD (IVON01,IVON02) GO TO 49160 39160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49160, 9171, 49160 49160 IF (IVCOMP - 25) 29160,19160,29160 19160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9171 29160 IVFAIL = IVFAIL + 1 IVCORR = 25 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9171 CONTINUE IVTNUM = 917 C C **** TEST 917 **** C IF (ICZERO) 39170, 9170, 39170 9170 CONTINUE IVON01 = -39 IVON02 = 500 IVCOMP = MOD (IVON01,IVON02) GO TO 49170 39170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49170, 9181, 49170 49170 IF (IVCOMP + 39) 29170,19170,29170 19170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9181 29170 IVFAIL = IVFAIL + 1 IVCORR = -39 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 918 AND 919 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C LARGEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER C 9181 CONTINUE IVTNUM = 918 C C **** TEST 918 **** C IF (ICZERO) 39180, 9180, 39180 9180 CONTINUE IVON01 = 317 IVON02 = -99 IVON03 = 1 IVCOMP = MAX0 (263,IVON01,IVON02,IVON03) GO TO 49180 39180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49180, 9191, 49180 49180 IF (IVCOMP - 317) 29180,19180,29180 19180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9191 29180 IVFAIL = IVFAIL + 1 IVCORR = 317 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9191 CONTINUE IVTNUM = 919 C C **** TEST 919 **** C IF (ICZERO) 39190, 9190, 39190 9190 CONTINUE IVON01 = 2572 IVON02 = 2570 IVCOMP = MAX0 (IVON01,IVON02) GO TO 49190 39190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49190, 9201, 49190 49190 IF (IVCOMP - 2572) 29190,19190,29190 19190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9201 29190 IVFAIL = IVFAIL + 1 IVCORR = 2572 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 920 AND 921 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C LARGEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER C 9201 CONTINUE IVTNUM = 920 C C **** TEST 920 **** C IF (ICZERO) 39200, 9200, 39200 9200 CONTINUE RVON01 = .326E+2 RVON02 = 22.075 RVON03 = 76E-1 IVCOMP = MAX1 (RVON01,RVON02,RVON03) GO TO 49200 39200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49200, 9211, 49200 49200 IF (IVCOMP - 32) 29200,19200,29200 19200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9211 29200 IVFAIL = IVFAIL + 1 IVCORR = 32 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9211 CONTINUE IVTNUM = 921 C C **** TEST 921 **** C IF (ICZERO) 39210, 9210, 39210 9210 CONTINUE RVON01 = -6.3E2 RVON02 = -21.0 IVCOMP = MAX1 (-463.3,RVON01,RVON02) GO TO 49210 39210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49210, 9221, 49210 49210 IF (IVCOMP + 21) 29210,19210,29210 19210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9221 29210 IVFAIL = IVFAIL + 1 IVCORR = -21 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 922 AND 923 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C SMALLEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER C 9221 CONTINUE IVTNUM = 922 C C **** TEST 922 **** C IF (ICZERO) 39220, 9220, 39220 9220 CONTINUE IVON01 = -75 IVON02 = -243 IVCOMP = MIN0 (IVON01,IVON02) GO TO 49220 39220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49220, 9231, 49220 49220 IF (IVCOMP + 243) 29220,19220,29220 19220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9231 29220 IVFAIL = IVFAIL + 1 IVCORR = -243 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9231 CONTINUE IVTNUM = 923 C C **** TEST 923 **** C IF (ICZERO) 39230, 9230, 39230 9230 CONTINUE IVON01 = -11 IVON02 = 11 IVCOMP = MIN0 (0,IVON01,IVON02) GO TO 49230 39230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49230, 9241, 49230 49230 IF (IVCOMP + 11) 29230,19230,29230 19230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9241 29230 IVFAIL = IVFAIL + 1 IVCORR = -11 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 924 AND 925 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C SMALLEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER C 9241 CONTINUE IVTNUM = 924 C C **** TEST 924 **** C IF (ICZERO) 39240, 9240, 39240 9240 CONTINUE RVON01 = 1.1111 RVON02 = 22.222 RVON03 = 333.33 IVCOMP = MIN1 (RVON01,RVON02,RVON03) GO TO 49240 39240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49240, 9251, 49240 49240 IF (IVCOMP - 1) 29240,19240,29240 19240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9251 29240 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9251 CONTINUE IVTNUM = 925 C C **** TEST 925 **** C IF (ICZERO) 39250, 9250, 39250 9250 CONTINUE RVON01 = 28.8 RVON02 = 2.88E1 RVON03 = 288E-1 RVON04 = 35.0 IVCOMP = MIN1 (RVON01,RVON02,RVON03,RVON04) GO TO 49250 39250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49250, 9261, 49250 49250 IF (IVCOMP - 28) 29250,19250,29250 19250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9261 29250 IVFAIL = IVFAIL + 1 IVCORR = 28 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 926 THROUGH TEST 929 CONTAIN THE INTRINSIC FUNCTION FIX C WHICH CONVERTS REAL ARGUMENTS TO INTEGER FUNCTION RESULTS C 9261 CONTINUE IVTNUM = 926 C C **** TEST 926 **** C IF (ICZERO) 39260, 9260, 39260 9260 CONTINUE IVCOMP = IFIX (-6.06) GO TO 49260 39260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49260, 9271, 49260 49260 IF (IVCOMP + 6) 29260,19260,29260 19260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9271 29260 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9271 CONTINUE IVTNUM = 927 C C **** TEST 927 **** C IF (ICZERO) 39270, 9270, 39270 9270 CONTINUE RVON01 = 71.01 IVCOMP = IFIX (RVON01) GO TO 49270 39270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49270, 9281, 49270 49270 IF (IVCOMP - 71) 29270,19270,29270 19270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9281 29270 IVFAIL = IVFAIL + 1 IVCORR = 71 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9281 CONTINUE IVTNUM = 928 C C **** TEST 928 **** C IF (ICZERO) 39280, 9280, 39280 9280 CONTINUE RVON01 = 3.211E2 IVCOMP = IFIX (RVON01) GO TO 49280 39280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49280, 9291, 49280 49280 IF (IVCOMP - 321) 29280,19280,29280 19280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9291 29280 IVFAIL = IVFAIL + 1 IVCORR = 321 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9291 CONTINUE IVTNUM = 929 C C **** TEST 929 **** C IF (ICZERO) 39290, 9290, 39290 9290 CONTINUE RVON01 = 777E-1 IVCOMP = IFIX (RVON01) GO TO 49290 39290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49290, 9301, 49290 49290 IF (IVCOMP - 77) 29290,19290,29290 19290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9301 29290 IVFAIL = IVFAIL + 1 IVCORR = 77 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 930 THROUGH TEST 932 CONTAIN INTRINSIC FUNCTION TESTS FOR C TRANSFER OF SIGN WHERE ARGUMENTS AND FUNCTION ARE INTEGER C 9301 CONTINUE IVTNUM = 930 C C **** TEST 930 **** C IF (ICZERO) 39300, 9300, 39300 9300 CONTINUE IVON01 = 643 IVCOMP = ISIGN (IVON01,-1) GO TO 49300 39300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49300, 9311, 49300 49300 IF (IVCOMP + 643) 29300,19300,29300 19300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9311 29300 IVFAIL = IVFAIL + 1 IVCORR = -643 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9311 CONTINUE IVTNUM = 931 C C **** TEST 931 **** C IF (ICZERO) 39310, 9310, 39310 9310 CONTINUE IVON01 = -22 IVON02 = 723 IVCOMP = ISIGN (IVON01,IVON02) GO TO 49310 39310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49310, 9321, 49310 49310 IF (IVCOMP - 22) 29310,19310,29310 19310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9321 29310 IVFAIL = IVFAIL + 1 IVCORR = 22 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9321 CONTINUE IVTNUM = 932 C C **** TEST 932 **** C IF (ICZERO) 39320, 9320, 39320 9320 CONTINUE IVON01 = 3532 IVON02 = 1 IVCOMP = ISIGN (IVON01,IVON02) GO TO 49320 39320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49320, 9331, 49320 49320 IF (IVCOMP - 3532) 29320,19320,29320 19320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9331 29320 IVFAIL = IVFAIL + 1 IVCORR = 3532 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 933 THROUGH TEST 936 CONTAIN INTRINSIC FUNCTION TESTS FOR C POSITIVE DIFFERENCE WHERE ARGUMENTS AND FUNCTION ARE INTEGERS C 9331 CONTINUE IVTNUM = 933 C C **** TEST 933 **** C IF (ICZERO) 39330, 9330, 39330 9330 CONTINUE IVON01 = 222 IVCOMP = IDIM (IVON01,1) GO TO 49330 39330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49330, 9341, 49330 49330 IF (IVCOMP - 221) 29330,19330,29330 19330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9341 29330 IVFAIL = IVFAIL + 1 IVCORR = 221 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9341 CONTINUE IVTNUM = 934 C C **** TEST 934 **** C IF (ICZERO) 39340, 9340, 39340 9340 CONTINUE IVON01 = 45 IVON02 = 41 IVCOMP = IDIM (IVON01,IVON02) GO TO 49340 39340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49340, 9351, 49340 49340 IF (IVCOMP - 4) 29340,19340,29340 19340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9351 29340 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9351 CONTINUE IVTNUM = 935 C C **** TEST 935 **** C IF (ICZERO) 39350, 9350, 39350 9350 CONTINUE IVON01 = 2 IVON02 = 10 IVCOMP = IDIM (IVON01,IVON02) GO TO 49350 39350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49350, 9361, 49350 49350 IF (IVCOMP) 29350,19350,29350 19350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9361 29350 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9361 CONTINUE IVTNUM = 936 C C **** TEST 936 **** C IF (ICZERO) 39360, 9360, 39360 9360 CONTINUE IVON01 = 165 IVON02 = -2 IVCOMP = IDIM (IVON01,IVON02) GO TO 49360 39360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49360, 9371, 49360 49360 IF (IVCOMP - 167) 29360,19360,29360 19360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9371 29360 IVFAIL = IVFAIL + 1 IVCORR = 167 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TESTS 937 AND 938 CONTAIN EXPRESSIONS CONTAINING MORE THAN ONE C INTRINSIC FUNCTION - THE FUNCTIONS ARE INTEGER AND THE ARGUMENTS C ARE REAL AND INTEGER C 9371 CONTINUE IVTNUM = 937 C C **** TEST 937 **** C IF (ICZERO) 39370, 9370, 39370 9370 CONTINUE RVON01 = 33.3 IVON01 = -12 IVCOMP = INT (RVON01) + IABS (IVON01) GO TO 49370 39370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49370, 9381, 49370 49370 IF (IVCOMP - 45) 29370,19370,29370 19370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9381 29370 IVFAIL = IVFAIL + 1 IVCORR = 45 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9381 CONTINUE IVTNUM = 938 C C **** TEST 938 **** C IF (ICZERO) 39380, 9380, 39380 9380 CONTINUE IVON01 = 76 IVON02 = 21 IVON03 = 30 IVCOMP = MAX0 (IVON01,IVON02,IVON03) - MIN0 (IVON01,IVON02,IVON03) GO TO 49380 39380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49380, 9391, 49380 49380 IF (IVCOMP - 55) 29380,19380,29380 19380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9391 29380 IVFAIL = IVFAIL + 1 IVCORR = 55 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9391 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 FM098) END *END-OF,FM098 FM099.f 480976081 170 2 100666 20139 ` *HEADER,FORTR,FM099 *FILES1,FORTR,FM099,X C COMMENT SECTION C C FM099 C C THIS ROUTINE TESTS VARIOUS MATHEMATICAL FUNCTIONS WHERE BOTH THE C FUNCTION TYPE AND ARGUMENTS ARE REAL. THE REAL VARIABLES AND C CONSTANTS CONTAIN BOTH POSITIVE AND NEGATIVE VALUES. THE C FUNCTIONS TESTED IN FM099 INCLUDE C C TYPE OF C FUNCTION NAME ARGUMENT FUNCTION C ---------------- ---- -------- -------- C EXPONENTIAL EXP REAL REAL C NATURAL LOGARITHM ALOG REAL REAL C COMMON LOGARITHM ALOG10 REAL REAL C SQUARE ROOT SQRT REAL REAL C TRIGONOMETRIC SINE SIN REAL REAL C TRIGONOMETRIC COSINE COS REAL REAL C HYPERBOLIC TANGENT TANH REAL REAL C ARCTANGENT ATAN REAL REAL C ATAN2 REAL REAL C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8.7, EXTERNAL STATEMENT C SECTION 15.5.2, FUNCTION REFERENCE 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) C C TEST SECTION C C TEST 939 THROUGH TEST 942 CONTAIN FUNCTION TESTS FOR EXPONENTIAL C FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 939 C C **** TEST 939 **** C IF (ICZERO) 39390, 9390, 39390 9390 CONTINUE RVON01 = 0.0 RVCOMP = EXP (RVON01) GO TO 49390 39390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49390, 9401, 49390 49390 IF (RVCOMP - 0.95) 29390,19390,49391 49391 IF (RVCOMP - 1.05) 19390,19390,29390 19390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9401 29390 IVFAIL = IVFAIL + 1 RVCORR = 1.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9401 CONTINUE IVTNUM = 940 C C **** TEST 940 **** C IF (ICZERO) 39400, 9400, 39400 9400 CONTINUE RVCOMP = EXP (0.5) GO TO 49400 39400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49400, 9411, 49400 49400 IF (RVCOMP - 1.60) 29400,19400,49401 49401 IF (RVCOMP - 1.70) 19400,19400,29400 19400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9411 29400 IVFAIL = IVFAIL + 1 RVCORR = 1.65 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9411 CONTINUE IVTNUM = 941 C C **** TEST 941 **** C IF (ICZERO) 39410, 9410, 39410 9410 CONTINUE RVON01 = .1E1 RVCOMP = EXP (RVON01) GO TO 49410 39410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49410, 9421, 49410 49410 IF (RVCOMP - 2.67) 29410,19410,49411 49411 IF (RVCOMP - 2.77) 19410,19410,29410 19410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9421 29410 IVFAIL = IVFAIL + 1 RVCORR = 2.72 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9421 CONTINUE IVTNUM = 942 C C **** TEST 942 **** C IF (ICZERO) 39420, 9420, 39420 9420 CONTINUE RVON01 = -1.0 RVCOMP = EXP (RVON01) GO TO 49420 39420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49420, 9431, 49420 49420 IF (RVCOMP - 0.363) 29420,19420,49421 49421 IF (RVCOMP - 0.373) 19420,19420,29420 19420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9431 29420 IVFAIL = IVFAIL + 1 RVCORR = 0.368 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9431 CONTINUE C C TEST 943 THROUGH TEST 945 CONTAIN FUNCTION TESTS FOR NATURAL C LOGARITHM FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 943 C C **** TEST 943 **** C IF (ICZERO) 39430, 9430, 39430 9430 CONTINUE RVON01 = 5E1 RVCOMP = ALOG (RVON01) GO TO 49430 39430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49430, 9441, 49430 49430 IF (RVCOMP - 3.9115) 29430,19430,49431 49431 IF (RVCOMP - 3.9125) 19430,19430,29430 19430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9441 29430 IVFAIL = IVFAIL + 1 RVCORR = 3.9120 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9441 CONTINUE IVTNUM = 944 C C **** TEST 944 **** C IF (ICZERO) 39440, 9440, 39440 9440 CONTINUE RVON01 = 1.0 RVCOMP = ALOG (RVON01) GO TO 49440 39440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49440, 9451, 49440 49440 IF (RVCOMP + .00005) 29440,19440,49441 49441 IF (RVCOMP - .00005) 19440,19440,29440 19440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9451 29440 IVFAIL = IVFAIL + 1 RVCORR = 0.00000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9451 CONTINUE IVTNUM = 945 C C **** TEST 945 **** C IF (ICZERO) 39450, 9450, 39450 9450 CONTINUE RVCOMP = ALOG (2.0) GO TO 49450 39450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49450, 9461, 49450 49450 IF (RVCOMP - 0.688) 29450,19450,49451 49451 IF (RVCOMP - 0.698) 19450,19450,29450 19450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9461 29450 IVFAIL = IVFAIL + 1 RVCORR = 0.693 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9461 CONTINUE C C TEST 946 THROUGH TEST 948 CONTAIN FUNCTION TESTS FOR COMMON C LOGARITHM FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 946 C C **** TEST 946 **** C IF (ICZERO) 39460, 9460, 39460 9460 CONTINUE RVON01 = 2E2 RVCOMP = ALOG10 (RVON01) GO TO 49460 39460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49460, 9471, 49460 49460 IF (RVCOMP - 2.296) 29460,19460,49461 49461 IF (RVCOMP - 2.306) 19460,19460,29460 19460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9471 29460 IVFAIL = IVFAIL + 1 RVCORR = 2.301 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9471 CONTINUE IVTNUM = 947 C C **** TEST 947 **** C IF (ICZERO) 39470, 9470, 39470 9470 CONTINUE RVON01 = .3E+3 RVCOMP = ALOG10 (RVON01) GO TO 49470 39470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49470, 9481, 49470 49470 IF (RVCOMP - 2.472) 29470,19470,49471 49471 IF (RVCOMP - 2.482) 19470,19470,29470 19470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9481 29470 IVFAIL = IVFAIL + 1 RVCORR = 2.477 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9481 CONTINUE IVTNUM = 948 C C **** TEST 948 **** C IF (ICZERO) 39480, 9480, 39480 9480 CONTINUE RVON01 = 1350.0 RVCOMP = ALOG10 (RVON01) GO TO 49480 39480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49480, 9491, 49480 49480 IF (RVCOMP - 3.125) 29480,19480,49481 49481 IF (RVCOMP - 3.135) 19480,19480,29480 19480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9491 29480 IVFAIL = IVFAIL + 1 RVCORR = 3.130 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9491 CONTINUE C C TEST 949 THROUGH TEST 951 CONTAIN FUNCTION TESTS FOR SQUARE ROOT C FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 949 C C **** TEST 949 **** C IF (ICZERO) 39490, 9490, 39490 9490 CONTINUE RVON01 = 1.0 RVCOMP = SQRT (RVON01) GO TO 49490 39490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49490, 9501, 49490 49490 IF (RVCOMP - 0.95) 29490,19490,49491 49491 IF (RVCOMP - 1.05) 19490,19490,29490 19490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9501 29490 IVFAIL = IVFAIL + 1 RVCORR = 1.00 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9501 CONTINUE IVTNUM = 950 C C **** TEST 950 **** C IF (ICZERO) 39500, 9500, 39500 9500 CONTINUE RVCOMP = SQRT (2.0) GO TO 49500 39500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49500, 9511, 49500 49500 IF (RVCOMP - 1.36) 29500,19500,49501 49501 IF (RVCOMP - 1.46) 19500,19500,29500 19500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9511 29500 IVFAIL = IVFAIL + 1 RVCORR = 1.41 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9511 CONTINUE IVTNUM = 951 C C **** TEST 951 **** C IF (ICZERO) 39510, 9510, 39510 9510 CONTINUE RVON01 = .229E1 RVCOMP = SQRT (RVON01) GO TO 49510 39510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49510, 9521, 49510 49510 IF (RVCOMP - 1.46) 29510,19510,49511 49511 IF (RVCOMP - 1.56) 19510,19510,29510 19510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9521 29510 IVFAIL = IVFAIL + 1 RVCORR = 1.51 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9521 CONTINUE C C TEST 952 THROUGH TEST 953 CONTAIN FUNCTION TESTS FOR TRIGONOMETRIC C SINE FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 952 C C **** TEST 952 **** C IF (ICZERO) 39520, 9520, 39520 9520 CONTINUE RVON01 = 0.00000 RVCOMP = SIN (RVON01) GO TO 49520 39520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49520, 9531, 49520 49520 IF (RVCOMP + .00005) 29520,19520,49521 49521 IF (RVCOMP - .00005) 19520,19520,29520 19520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9531 29520 IVFAIL = IVFAIL + 1 RVCORR = 0.00000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9531 CONTINUE IVTNUM = 953 C C **** TEST 953 **** C IF (ICZERO) 39530, 9530, 39530 9530 CONTINUE RVON01 = 0.5 RVCOMP = SIN (RVON01) GO TO 49530 39530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49530, 9541, 49530 49530 IF (RVCOMP - .474) 29530,19530,49531 49531 IF (RVCOMP - .484) 19530,19530,29530 19530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9541 29530 IVFAIL = IVFAIL + 1 RVCORR = .479 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9541 CONTINUE IVTNUM = 954 C C **** TEST 954 **** C IF (ICZERO) 39540, 9540, 39540 9540 CONTINUE RVON01 = 4E0 RVCOMP = SIN (RVON01) GO TO 49540 39540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49540, 9551, 49540 49540 IF (RVCOMP + .762) 29540,19540,49541 49541 IF (RVCOMP + .752) 19540,19540,29540 19540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9551 29540 IVFAIL = IVFAIL + 1 RVCORR = -.757 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9551 CONTINUE C C TEST 955 THROUGH TEST 957 CONTAIN FUNCTION TESTS FOR TRIGONOMETRIC C COSINE FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 955 C C **** TEST 955 **** C IF (ICZERO) 39550, 9550, 39550 9550 CONTINUE RVON01 = 0.00000 RVCOMP = COS (RVON01) GO TO 49550 39550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49550, 9561, 49550 49550 IF (RVCOMP - .995) 29550,19550,49551 49551 IF (RVCOMP - 1.005) 19550,19550,29550 19550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9561 29550 IVFAIL = IVFAIL + 1 RVCORR = 1.000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9561 CONTINUE IVTNUM = 956 C C **** TEST 956 **** C IF (ICZERO) 39560, 9560, 39560 9560 CONTINUE RVON01 = 1.0E0 RVCOMP = COS (RVON01) GO TO 49560 39560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49560, 9571, 49560 49560 IF (RVCOMP - .535) 29560,19560,49561 49561 IF (RVCOMP - .545) 19560,19560,29560 19560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9571 29560 IVFAIL = IVFAIL + 1 RVCORR = 0.540 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9571 CONTINUE IVTNUM = 957 C C **** TEST 957 **** C IF (ICZERO) 39570, 9570, 39570 9570 CONTINUE RVCOMP = COS (4.0) GO TO 49570 39570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49570, 9581, 49570 49570 IF (RVCOMP + .659) 29570,19570,49571 49571 IF (RVCOMP + .649) 19570,19570,29570 19570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9581 29570 IVFAIL = IVFAIL + 1 RVCORR = -0.654 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9581 CONTINUE C C TEST 958 THROUGH TEST 960 CONTAIN FUNCTION TESTS FOR HYPERBOLIC C TANGENT FUNCTIONS WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 958 C C **** TEST 958 **** C IF (ICZERO) 39580, 9580, 39580 9580 CONTINUE RVCOMP = TANH (0.0) GO TO 49580 39580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49580, 9591, 49580 49580 IF (RVCOMP + .00005) 29580,19580,49581 49581 IF (RVCOMP - .00005) 19580,19580,29580 19580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9591 29580 IVFAIL = IVFAIL + 1 RVCORR = 0.00000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9591 CONTINUE IVTNUM = 959 C C **** TEST 959 **** C IF (ICZERO) 39590, 9590, 39590 9590 CONTINUE RVON01 = .5E0 RVCOMP = TANH (RVON01) GO TO 49590 39590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49590, 9601, 49590 49590 IF (RVCOMP - .457) 29590,19590,49591 49591 IF (RVCOMP - .467) 19590,19590,29590 19590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9601 29590 IVFAIL = IVFAIL + 1 RVCORR = 0.462 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9601 CONTINUE IVTNUM = 960 C C **** TEST 960 **** C IF (ICZERO) 39600, 9600, 39600 9600 CONTINUE RVON01 = .25 RVCOMP = TANH (RVON01) GO TO 49600 39600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49600, 9611, 49600 49600 IF (RVCOMP - .240) 29600,19600,49601 49601 IF (RVCOMP - .250) 19600,19600,29600 19600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9611 29600 IVFAIL = IVFAIL + 1 RVCORR = 0.245 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9611 CONTINUE C C TESTS 961 AND 962 CONTAIN TESTS FOR ARCTANGENT OF THE FORM C ATAN (A) WHERE THE ARGUMENT AND FUNCTION ARE REAL C IVTNUM = 961 C C **** TEST 961 **** C IF (ICZERO) 39610, 9610, 39610 9610 CONTINUE RVCOMP = ATAN (0.0) GO TO 49610 39610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49610, 9621, 49610 49610 IF (RVCOMP + .00005) 29610,19610,49611 49611 IF (RVCOMP - .00005) 19610,19610,29610 19610 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9621 29610 IVFAIL = IVFAIL + 1 RVCORR = 0.00000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9621 CONTINUE IVTNUM = 962 C C **** TEST 962 **** C IF (ICZERO) 39620, 9620, 39620 9620 CONTINUE RVON01 = 5E-1 RVCOMP = ATAN (RVON01) GO TO 49620 39620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49620, 9631, 49620 49620 IF (RVCOMP - .459) 29620,19620,49621 49621 IF (RVCOMP - .469) 19620,19620,29620 19620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9631 29620 IVFAIL = IVFAIL + 1 RVCORR = 0.464 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9631 CONTINUE C C TESTS 963 AND 964 CONTAIN TESTS FOR ARCTANGENT OF THE FORM C ATAN2 (A1,A2) WHERE THE ARGUMENTS AND FUNCTION ARE REAL C IVTNUM = 963 C C **** TEST 963 **** C IF (ICZERO) 39630, 9630, 39630 9630 CONTINUE RVON01 = 0.0 RVON02 = 1E0 RVCOMP = ATAN2 (RVON01,RVON02) GO TO 49630 39630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49630, 9641, 49630 49630 IF (RVCOMP + .00005) 29630,19630,49631 49631 IF (RVCOMP - .00005) 19630,19630,29630 19630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9641 29630 IVFAIL = IVFAIL + 1 RVCORR = 0.00000 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9641 CONTINUE IVTNUM = 964 C C **** TEST 964 **** C IF (ICZERO) 39640, 9640, 39640 9640 CONTINUE RVON01 = 2E1 RVCOMP = ATAN2 (-1.0,RVON01) GO TO 49640 39640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49640, 9651, 49640 49640 IF (RVCOMP + .05001) 29640,19640,49641 49641 IF (RVCOMP + .04991) 19640,19640,29640 19640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9651 29640 IVFAIL = IVFAIL + 1 RVCORR = -.04996 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 9651 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 FM099) END *END-OF,FM099 FM100.f 480976083 170 2 100666 12440 ` *HEADER,FORTR,FM100 *FILES1,FORTR,FM100,X C COMMENT SECTION. C C FM100 C C THIS ROUTINE IS A TEST OF THE I FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE INTEGER VARIABLE AND INTEGER ARRAY ELEMENT OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY FOURTH RECORD IS C CHECKED DURING THE READ TEST SECTION PLUS THE LAST TWO RECORDS C AND THE END OF FILE ON THE LAST RECORD. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C SECTION 13.5.9.1, INTEGER EDITING C DIMENSION ITEST(30) DIMENSION IDUMP(136) CHARACTER*1 NINE,IDUMP DATA NINE/'9'/ C 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,43HFILE I06 CREATED WITH 31 SEQUENTIAL RECORDS) 77751 FORMAT (I3,I2,I2,I3,I3,I3,I4,I1,I1,I1,I1,I1,I1,I1,I1,I1,I1,I2,I2,I 13,I3,I4,I4,I4,I4,I4,I5,I5,I5,I5) 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) C C DEFAULT ASSIGNMENT FOR FILE 01 IS I06 = 7 I06 = 7 CX060 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-060 CX061 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-061 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I06 THAT IS C 80 CHARACTERS PER RECORD, 31 RECORDS LONG, AND CONSISTS OF ONLY C INTEGERS ( I FORMAT ). THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM100 AND FOR PURPOSES OF IDENTIFICATION IS FILE 01. C ALL OF THE DATA WITH THE EXCEPTION OF THE RECORD NUMBER - IRNUM , C INTEGER VARIABLE ICON31 WHICH IS SET TO THE VALUE OF THE RECORD C NUMBER, AND THE END OF FILE CHECK - IEOF IS SET BY INTEGER C ASSIGNMENT STATEMENTS TO VARIOUS INTEGER CONSTANTS. IPROG = 100 IFILE = 01 ILUN = I06 ITOTR = 31 IRLGN = 80 IEOF = 0000 ICON11 = 1 ICON12 = 2 ICON13 = 3 ICON14 = 4 ICON15 = 5 ICON16 = 6 ICON17 = 7 ICON18 = 8 ICON19 = 9 ICON10 = 0 ICON21 = 21 ICON22 = 22 ICON32 = 512 ICON41 = 9995 ICON42 = 9996 ICON43 = 9997 ICON44 = 9998 ICON45 = 9999 ICON51 = 32764 ICON52 = 32765 ICON53 = 32766 ICON54 = 32767 DO 12 IRNUM = 1, 31 ICON31 = IRNUM IF ( IRNUM .EQ. 31 ) IEOF = 9999 WRITE(I06,77751)IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,ICON11,ICO 1N12,ICON13,ICON14,ICON15,ICON16,ICON17,ICON18,ICON19,ICON10,ICON21 2,ICON22,ICON31,ICON32,ICON41,ICON42,ICON43,ICON44,ICON45,ICON51,IC 3ON52,ICON53,ICON54 12 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I06 C C READ SECTION.... C IVTNUM = 1 C C **** TEST 1 THRU TEST 8 **** C TEST 1 THRU TEST 8 - THESE TESTS READ THE SEQUENTIAL FILE C PREVIOUSLY WRITTEN ON LUN I06 AND CHECK THE FIRST AND EVERY FOURTH C RECORD. THE VALUES CHECKED ARE THE RECORD NUMBER - IRNUM AND C SEVERAL VALUES WHICH SHOULD REMAIN CONSTANT FOR ALL OF THE 31 C RECORDS. C IRTST = 1 READ(I06,77751) ITEST C READ THE FIRST RECORD.... DO 23 I = 1, 8 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 1 THRU 8 IF ( ITEST(4) .EQ. IRTST ) IVON01 = IVON01 + 1 C THE ELEMENT (4) SHOULD EQUAL THE RECORD NUMBER.... IF ( ITEST(8) .EQ. ICON11 ) IVON01 = IVON01 + 1 C THE ELEMENT (8) SHOULD EQUAL ICON11 = 1.... IF ( ITEST(18) .EQ. ICON21 ) IVON01 = IVON01 + 1 C THE ELEMENT (18) SHOULD EQUAL ICON21 = 21.... IF ( ITEST(20) .EQ. IRTST ) IVON01 = IVON01 + 1 C THE ELEMENT (20) SHOULD ALSO EQUAL THE RECORD NUMBER.... IF ( ITEST(26) .EQ. ICON45 ) IVON01 = IVON01 + 1 C THE ELEMENT (26. SHOULD EQUAL ICON45 = 9999.... IF ( ITEST(30) .EQ. ICON54 ) IVON01 = IVON01 + 1 C THE ELEMENT (30) SHOULD EQUAL ICON54 = 32767.... IF ( IVON01 - 6 ) 20010, 10010, 20010 C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 10010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 21 20010 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 21 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... IF ( IVTNUM .EQ. 9 ) GO TO 91 C TAPE SHOULD BE AT RECORD NUMBER 29 FOR TEST 8 - DO NOT READ MORE C UNTIL TEST NUMBER NINE WHICH CHECKS RECORD NUMBER 30.... DO 22 J = 1, 4 READ(I06,77751) ITEST C READ FOUR RECORDS ON LUN I06.... 22 CONTINUE IRTST = IRTST + 4 C INCREMENT THE RECORD NUMBER COUNTER.... 23 CONTINUE IF (ICZERO) 30010, 91, 30010 30010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 91 CONTINUE IVTNUM = 9 C C **** TEST 9 **** C TEST 9 - THIS CHECKS THE RECORD NUMBER ON EXPECTED RECORD 30. C IF (ICZERO) 30090, 90, 30090 90 CONTINUE READ ( I06, 77751 ) ITEST IVCOMP = ITEST(4) GO TO 40090 30090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40090, 101, 40090 40090 IF ( IVCOMP - 30 ) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 101 20090 IVFAIL = IVFAIL + 1 IVCORR = 30 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 101 CONTINUE IVTNUM = 10 C C **** TEST 10 **** C TEST 10 - THIS CHECKS THE RECORD NUMBER ON EXPECTED RECORD 31. C IF (ICZERO) 30100, 100, 30100 100 CONTINUE READ ( I06,77751) ITEST IVCOMP = ITEST(4) GO TO 40100 30100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40100, 111, 40100 40100 IF ( IVCOMP - 31 ) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 111 20100 IVFAIL = IVFAIL + 1 IVCORR = 31 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 111 CONTINUE IVTNUM = 11 C C **** TEST 11 **** C TEST 11 - THIS CHECKS FOR THE CORRECT END OF FILE CODE 9999 C ON RECORD NUMBER 31. C IF (ICZERO) 30110, 110, 30110 110 CONTINUE IVCOMP = ITEST(7) GO TO 40110 30110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40110, 121, 40110 40110 IF ( IVCOMP - 9999 ) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 121 20110 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 121 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 01 C TO THE LINE PRINTER. CDB** C ILUN = I06 C ITOTR = 31 C IRLGN = 80 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM100) END *END-OF,FM100 FM101.f 480976085 170 2 100666 12798 ` *HEADER,FORTR,FM101 *FILES1,FORTR,FM101,X C COMMENT SECTION. C C FM101 C C THIS ROUTINE IS A TEST OF THE F FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE REAL VARIABLES AND REAL ARRAY ELEMENTS OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY FOURTH RECORD IS C CHECKED DURING THE READ TEST SECTION PLUS THE LAST TWO RECORDS C AND THE END OF FILE ON THE LAST RECORD. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C DIMENSION ITEST(7), RTEST(20) DIMENSION IDUMP(136) CHARACTER*1 NINE,IDUMP DATA NINE/'9'/ C 77701 FORMAT ( 110A1) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1 / 10X, 30A1) 77706 FORMAT (10X,43HFILE I07 CREATED WITH 31 SEQUENTIAL RECORDS) 77751 FORMAT (I3,2I2,3I3,I4,F2.0,F2.1,F3.0,F3.1,F3.2,F4.0,F4.1,F4.2,F4.3 1,F5.0,F5.1,F5.2,F5.3,F5.4,F6.0,F6.1,F6.2,F6.3,F6.4,F6.5 ) 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) C I07 = 7 C DEFAULT ASSIGNMENT FOR FILE 02 IS I07 = 7 C CX070 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-070 CX071 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-071 C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I07 THAT IS C 110 CHARS. PER RECORD, 31 RECORDS LONG, AND CONSISTS OF ONLY C REALS ( F FORMAT ). THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM101 AND FOR PURPOSES OF IDENTIFICATION IS FILE 02. C ALL OF THE DATA WITH THE EXCEPTION OF THE 20 CHARACTER INTEGER C PREAMBLE FOR EACH RECORD, IS COMPRISED OF REAL VARIABLES SET BY C REAL ASSIGNMENT STATEMENTS TO VARIOUS REAL CONSTANTS. C C ALL THE THE REAL CONSTANTS USED ARE POSITIVE, I.E. NO SIGN. C IPROG = 101 IFILE = 02 ILUN = I07 ITOTR = 31 IRLGN = 110 IEOF = 0000 RCON21 = 9. RCON22 = .9 RCON31 = 21. RCON32 = 2.1 RCON33 = .21 RCON41 = 512. RCON42 = 51.2 RCON43 = 5.12 RCON44 = .512 RCON51 = 9995. RCON52 = 999.6 RCON53 = 99.97 RCON54 = 9.998 RCON55 = .9999 RCON61 = 32764. RCON62 = 3276.5 RCON63 = 327.66 RCON64 = 32.767 RCON65 = 3.2768 RCON66 = .32769 DO 122 IRNUM = 1, 31 IF ( IRNUM .EQ. 31 ) IEOF = 9999 WRITE(I07,77751)IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,RCON21,RCO 1N22,RCON31,RCON32,RCON33,RCON41,RCON42,RCON43,RCON44,RCON51,RCON52 2,RCON53,RCON54,RCON55,RCON61,RCON62,RCON63,RCON64,RCON65,RCON66 122 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I07 C C READ SECTION.... C IVTNUM = 12 C C **** TEST 12 THRU TEST 19 **** C TEST 12 THRU TEST 19 - THESE TESTS READ THE SEQUENTIAL FILE C PREVIOUSLY WRITTEN ON LUN I07 AND CHECK THE FIRST AND EVERY FOURTH C RECORD. THE VALUES CHECKED ARE THE RECORD NUMBER - IRNUM AND C SEVERAL VALUES WHICH SHOULD REMAIN CONSTANT FOR ALL OF THE 31 C RECORDS. C IRTST = 1 READ ( I07, 77751) ITEST, RTEST C READ THE FIRST RECORD.... DO 193 I = 1, 8 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 1 THRU 8 IF ( ITEST(4) .EQ. IRTST ) IVON01 = IVON01 + 1 C THE ELEMENT (4) SHOULD EQUAL THE RECORD NUMBER.... C THE TOLERANCE GIVEN IN THE REAL COMPARISONS IS BASED ON 16 BIT C MANTISSAS TO ALLOW FOR INPUT, OUTPUT, AND STORAGE CONVERSION, C TRUNCATION, OR ROUNDING TECHNIQUES USED BY THE IMPLEMENTOR. IF(RTEST(1) .GE. 8.9995 .OR. RTEST(1) .LE. 9.0005) IVON01=IVON01+1 C THE ELEMENT(1) SHOULD EQUAL RCON21 = 9. .... IF(RTEST(4) .GE. 2.0995 .OR. RTEST(4) .LE. 2.1005) IVON01=IVON01+1 C THE ELEMENT( 4) SHOULD EQUAL RCON32 = 2.1 .... IF(RTEST(9) .GE. .51195 .OR. RTEST(9) .LE. .51205) IVON01=IVON01+1 C THE ELEMENT( 9) SHOULD EQUAL RCON44 = .512 .... IF ( RTEST(13) .GE. 9.9975 .OR. RTEST(13) .LE. 9.9985 ) 1 IVON01 = IVON01 + 1 C THE ELEMENT(13) SHOULD EQUAL RCON54 = 9.998 .... IF ( RTEST(20) .GE. .32764 .OR. RTEST(20) .LE. .32774 ) 1 IVON01 = IVON01 + 1 C THE ELEMENT(20) SHOULD EQUAL RCON66 = .32769 .... IF ( IVON01 - 6 ) 20190, 10190, 20190 C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 10190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 201 20190 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 201 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... IF ( IVTNUM .EQ. 20 ) GO TO 194 C TAPE SHOULD BE AT RECORD NUMBER 29 FOR TEST 19 - DO NOT READ MORE C UNTIL TEST NUMBER 20 WHICH CHECKS RECORD NUMBER 30.... DO 192 J = 1, 4 READ ( I07, 77751) ITEST, RTEST C READ FOUR RECORDS ON LUN I07.... 192 CONTINUE IRTST = IRTST + 4 C INCREMENT THE RECORD NUMBER COUNTER.... 193 CONTINUE IF ( ICZERO ) 30190, 194, 30190 30190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 194 CONTINUE IVTNUM = 20 C C **** TEST 20 **** C TEST 20 - THIS CHECKS THE RECORD NUMBER ON EXPECTED RECORD 30. C IF (ICZERO) 30200, 200, 30200 200 CONTINUE READ ( I07, 77751) ITEST, RTEST IVCOMP = ITEST(4) GO TO 40200 30200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40200, 211, 40200 40200 IF ( IVCOMP - 30 ) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 211 20200 IVFAIL = IVFAIL + 1 IVCORR = 30 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 211 CONTINUE IVTNUM = 21 C C **** TEST 21 **** C TEST 21 - THIS CHECKS THE RECORD NUMBER ON EXPECTED RECORD 31. C IF (ICZERO) 30210, 210, 30210 210 CONTINUE READ ( I07, 77751) ITEST, RTEST IVCOMP = ITEST(4) GO TO 40210 30210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40210, 221, 40210 40210 IF ( IVCOMP - 31 ) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 221 20210 IVFAIL = IVFAIL + 1 IVCORR = 31 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 221 CONTINUE IVTNUM = 22 C C **** TEST 22 **** C TEST 22 - THIS CHECKS FOR THE CORRECT END OF FILE CODE 9999 C ON RECORD NUMBER 31. C IF (ICZERO) 30220, 220, 30220 220 CONTINUE IVCOMP = ITEST(7) GO TO 40220 30220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40220, 231, 40220 40220 IF ( IVCOMP - 9999 ) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 231 20220 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 231 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 02 C TO THE LINE PRINTER. CDB** C ILUN = I07 C ITOTR = 31 C IRLGN = 110 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM101) END *END-OF,FM101 FM102.f 480976086 170 2 100666 13456 ` *HEADER,FORTR,FM102 *FILES1,FORTR,FM102,X C COMMENT SECTION. C C FM102 C C THIS ROUTINE IS A TEST OF THE A FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE ALPHANUMERIC INTEGERS AND ARRAY ELEMENTS OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY RECORD IS READ AND C CHECKED FOR ACCURACY AND THE END OF FILE ON RECORD 31 IS ALSO C CHECKED. DURING THE READ AND CHECK PROCESS THE FILE IS REWOUND C TWICE. THE FIRST PASS CHECKS THE ODD NUMBERED RECORDS AND THE C SECOND PASS CHECKS THE EVEN NUMBERED RECORDS. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C COMMON IACN11(60), IACN12(30) C DIMENSION ITEST(7) DIMENSION IADN11(60), IADN12(30) DIMENSION IDUMP(136) CHARACTER*1 NINE,IADN11,IACN11,IDUMP CHARACTER*2 IADN12,IACN12 DATA NINE/'9'/ DATA IADN11 /'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 1'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 2'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 3' ', '=', '+', '-', '*', '/', '(', ')', ',', '.','*', '0', '*', 4'1', '.', '2', ',', '3', ')', '4', '(', '5', '/', '6' / DATA IADN12 / 1'6/', '5(', '4)','3,', '2.', '1*', '0*', '.,', ')(', '/*', '-+', 2'= ', 'ZY', 'XW', 'VU', 'TS', 'RQ', 'PO', 'NM', 'LK', 'JI', 'HG' 3,'FE', 'DC', 'BA', '98', '76', '54', '32', '10' / 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,43HFILE I08 CREATED WITH 31 SEQUENTIAL RECORDS) 77751 FORMAT (I3, 2I2, 3I3, I4, 60A1 ) 77752 FORMAT ( I3, 2I2, 3I3, I4, 30A2 ) 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) C C DEFAULT ASSIGNMENT FOR FILE 03 IS I08 = 7 I08 = 7 CX080 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-080 CX081 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-081 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I08 THAT IS C 80 CHARACTERS PER RECORD, 31 RECORDS LONG, AND CONSISTS OF ONLY C INTEGERS AND ALPHANUMERICS ( I AND A FORMAT ). THIS ROUTINE HAS C ONLY ONE FILE AND FOR PURPOSES OF IDENTIFICATION IS FILE 03. C ALL ARRAY ELEMENT DATA FOR THE ALPHANUMERIC CHARACTERS IS SET BY C THE DATA INITIALIZATION STATEMENT. IPROG = 102 IFILE = 03 ILUN = I08 ITOTR = 31 IRLGN = 80 IEOF = 0000 IFLIP = 1 DO 234 IRNUM = 1, 31 IF ( IRNUM .EQ. 31 ) IEOF = 9999 IF ( IFLIP - 1 ) 232, 232, 233 232 WRITE ( I08, 77751 ) IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,IADN 111 IFLIP = 2 GO TO 234 233 WRITE ( I08, 77752 ) IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,IADN1 12 IFLIP = 1 234 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I08 C C READ SECTION.... C IVTNUM = 23 C C **** TEST 23 THRU TEST 38 **** C TEST 23 THRU 38 - THESE TESTS READ THE FILE SEQUENTIALLY FORWARD C AND CHECK THE ODD NUMBERED RECORDS FOR THE RECORD NUMBER AND THE C VALUE OF SEVERAL OF THE DATA ITEMS WHICH SHOULD REMAIN CONSTANT C FROM RECORD TO RECORD. C IRTST = 1 DO 383 I = 1, 16 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 23 - 38. IVON01 = 0 C READ AN ODD NUMBERED RECORD.... READ ( I08, 77751 ) ITEST, IACN11 IF ( ITEST(4) .EQ. IRTST ) IVON01 = IVON01 + 1 C THE ELEMENT (4) SHOULD EQUAL THE RECORD NUMBER.... IF ( IACN11(1) .EQ. IADN11(1) ) IVON01 = IVON01 + 1 C THE ELEMENT (1) SHOULD EQUAL IADN11(1) = '0' .... IF ( IACN11(11) .EQ. IADN11(11) ) IVON01 = IVON01 + 1 C THE ELEMENT (11) SHOULD EQUAL IADN11(11) = 'A' .... IF ( IACN11(36) .EQ. IADN11(36) ) IVON01 = IVON01 + 1 C THE ELEMENT (36) SHOULD EQUAL IADN11(36) = 'Z' .... IF ( IACN11(44) .EQ. IADN11(44) ) IVON01 = IVON01 + 1 C THE ELEMENT (44) SHOULD EQUAL IADN11(44) = ')' .... IF ( IACN11(60) .EQ. IADN11(60) ) IVON01 = IVON01 + 1 C THE ELEMENT (60) SHOULD EQUAL IADN11(60) = '6' .... IF ( IVON01 - 6 ) 20230, 10230, 20230 C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 10230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 382 20230 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 382 CONTINUE C DO NOT READ PAST RECORD NUMBER 31 ON THE I = 16 LOOP.... IF ( I .EQ. 16 ) GO TO 391 C SKIP OVER THE EVEN NUMBERED RECORDS BY AN EXTRA READ.... READ ( I08, 77752 ) ITEST, IACN12 IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... IRTST = IRTST + 2 C INCREMENT THE RECORD NUMBER COUNTER.... 383 CONTINUE IF ( ICZERO ) 30230, 391, 30230 30230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 391 CONTINUE IVTNUM = 39 C C **** TEST 39 **** C TEST 39 - THIS CHECKS FOR THE END OF FILE INDICATOR ON THE 31ST C RECORD. THE EOF INDICATOR IS ITEST(7) AND SHOULD EQUAL 9999 C IF (ICZERO) 30390, 390, 30390 390 CONTINUE IVCOMP = ITEST(7) GO TO 40390 30390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40390, 401, 40390 40390 IF ( IVCOMP - 9999 ) 20390, 10390, 20390 10390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 401 20390 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 401 CONTINUE C REWIND THE FILE AGAIN.... REWIND I08 C READ THE FILE AGAIN IVTNUM = 40 C **** TEST 40 THRU 54 **** C TEST 40 THRU 54 - THESE TESTS CHECK THE EVEN NUMBERED RECORDS C FOR THE CORRECT RECORD NUMBER AND THE VALUE OF SEVERAL DATA ITEMS C WHICH SHOULD REMAIN CONSTANT FOR EACH RECORD. THESE READ CHECKS C USE A DIFFERENT FORMAT THAN TESTS 23 THRU 38 BECAUSE THE RECORDS C WERE WRITTEN USING A FLIP-FLOP BETWEEN TWO FORMATS. C IRTST = 2 C THIS RECORD POINTER IS INITIALIZED TO THE SECOND (EVEN) RECORD DO 532 I = 1, 15 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 40 - 54 IVON01 = 0 C SKIP OVER THE ODD NUMBERED RECORDS.... READ ( I08, 77751 ) ITEST, IACN11 C READ THE EVEN NUMBERED RECORDS.... READ ( I08, 77752 ) ITEST, IACN12 IF ( ITEST(4) .EQ. IRTST ) IVON01 = IVON01 + 1 C CHECK THE RECORD NUMBER.... IF ( IACN12(1) .EQ. IADN12(1) ) IVON01 = IVON01 + 1 C ELEMENT (1) SHOULD EQUAL '6/' .... IF ( IACN12(11) .EQ. IADN12(11) ) IVON01 = IVON01 + 1 C ELEMENT (11) SHOULD EQUAL '-+' .... IF ( IACN12(16) .EQ. IADN12(16) ) IVON01 = IVON01 + 1 C ELEMENT (16) SHOULD EQUAL 'TS' .... IF ( IACN12(23) .EQ. IADN12(23) ) IVON01 = IVON01 + 1 C ELEMENT (23) SHOULD EQUAL 'FE' .... (THE SYMBOL FOR IRONY) IF ( IACN12(30) .EQ. IADN12(30) ) IVON01 = IVON01 + 1 C ELEMENT (30) SHOULD EQUAL '10' .... IF ( IVON01 - 6 ) 20400, 10400, 20400 10400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 402 20400 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 402 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... IRTST = IRTST + 2 C INCREMENT THE RECORD NUMBER COUNTER.... 532 CONTINUE IF ( ICZERO ) 30400, 411, 30400 30400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 411 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 03 C TO THE LINE PRINTER. CDB** C ILUN = I08 C ITOTR = 31 C IRLGN = 80 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM102) END *END-OF,FM102 FM103.f 480976088 170 2 100666 11194 ` *HEADER,FORTR,FM103 *FILES1,FORTR,FM103,X C COMMENT SECTION. C C FM103 C C THIS ROUTINE IS A TEST OF THE X FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE INTEGER OR REAL VARIABLES, INTEGER ARRAY ELEMENTS C OR ARRAY NAME REFERENCES. READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY RECORD IS READ AND C CHECKED FOR ACCURACY AND THE END OF FILE ON RECORD 31 IS ALSO C CHECKED. DURING THE READ AND CHECK PROCESS THE FILE IS REWOUND C TWICE. THE FIRST PASS CHECKS THE ODD NUMBERED RECORDS AND THE C SECOND PASS CHECKS THE EVEN NUMBERED RECORDS. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C DIMENSION IDUMP(136) DIMENSION IADN11(5), IADN12(3), IADN13(3) CHARACTER*1 NINE,IADN11,ICON04,ICON06,IDUMP CHARACTER*2 IADN12 CHARACTER*3 IADN13 DATA NINE/'9'/ DATA IADN11/'A', 'B', 'C', 'D', 'E'/, IADN12 / 'HE', 'LL', 'O'/ 1,IADN13 / 'H', 'EL', 'LO' / C 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,43HFILE I09 CREATED WITH 31 SEQUENTIAL RECORDS) 77751 FORMAT ( I3,2I2,3I3,I4,5X,I5,5X,F5.2,5X,5A1,5X,I5,5X,F5.4,5X,2A2,A 11 ) 77752 FORMAT ( I3,2I2,3I3,I4,I5,5X,F5.2,5X,5A1,5X,I5,5X,F5.4,5X,A1,2A2,5 1X ) 77753 FORMAT (7X,I3,6X,I4,5X,I5,15X,A1,9X,I5,5X,F5.4,9X,A1 ) 77754 FORMAT (7X,I3,6X,I4,I5,15X,A1,9X,I5,5X,F5.4,9X,A1 ) 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) C C DEFAULT ASSIGNMENT FOR FILE 04 IS I09 = 7 I09 = 7 CX090 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-090 CX091 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-091 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I09 THAT IS C 80 CHARACTERS PER RECORD, 31 RECORDS LONG, AND CONSISTS OF C I, F, A, AND X FORMAT. THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM103 AND FOR PURPOSES OF IDENTIFICATION IS FILE 04. C ALL ARRAY ELEMENT DATA FOR THE ALPHANUMERIC CHARACTERS IS SET BY C THE DATA INITIALIZATION STATEMENT. INTEGER AND REAL VARIABLES ARE C SET BY ASSIGNMENT STATEMENTS. IPROG = 103 IFILE = 04 ILUN = I09 ITOTR = 31 IRLGN = 80 IEOF = 0000 ICON01 = 32767 RCON01 = 12.34 ICON02 = 12345 RCON02 = .9999 IFLIP = 1 DO 504 IRNUM = 1, 31 IF ( IRNUM .EQ. 31 ) IEOF = 9999 IF ( IFLIP - 1 ) 502, 502, 503 502 WRITE ( I09, 77751 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF 1, ICON01, RCON01, IADN11,ICON02, RCON02, IADN12 IFLIP = 2 GO TO 504 503 WRITE ( I09, 77752 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF 1, ICON01, RCON01, IADN11, ICON02, RCON02, IADN13 IFLIP = 1 504 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I09 C C READ SECTION.... C C IVTNUM = 55 C C **** TEST 55 THRU 85 **** C TEST 55 THRU 85 - THESE TESTS CHECK THE RECORD NUMBER AND C CONTENTS OF SEVERAL OF THE DATA ITEMS WHICH REMAIN CONSTANT FOR C ALL OF THE RECORDS. A DIFFERENT USE OF THE X SKIP FIELD FORMAT C IS USED IN READING THE FILE THAN WAS USED TO WRITE THE FILE. C IFLIP = 1 DO 556 IRNUM = 1, 31 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 55 - 85. IVON01 = 0 C READ THE FILE.... IF ( IFLIP - 1 ) 552, 552, 553 552 READ ( I09,77753 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 IFLIP = 2 GO TO 554 553 READ ( I09,77754 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 IFLIP = 1 554 CONTINUE IF ( IRNO .EQ. IRNUM ) IVON01 = IVON01 + 1 C IRNO SHOULD BE THE RECORD NUMBER.... IF ( ICON03 .EQ. ICON01 ) IVON01 = IVON01 + 1 C ICON03 SHOULD EQUAL 32767 .... IF ( ICON04 .EQ. IADN11(1) ) IVON01 = IVON01 + 1 C ICON04 SHOULD EQUAL 'A' .... IF ( ICON05 .EQ. ICON02 ) IVON01 = IVON01 + 1 C ICON05 SHOULD EQUAL 12345 .... IF(RCON03.GE. .99985 .OR. RCON03.LE. .99995) IVON01=IVON01+1 C RCON03 SHOULD EQUAL .9999 .... IF ( ICON06 .EQ. IADN12(3) ) IVON01 = IVON01 + 1 C ICON06 SHOULD EQUAL 'O' .... IF ( IVON01 - 6 ) 20550, 10550, 20550 C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 10550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 555 20550 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 555 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... 556 CONTINUE IF ( ICZERO ) 30550, 861, 30550 30550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 861 CONTINUE IVTNUM = 86 C C **** TEST 86 **** C TEST 86 - THIS TEST CHECKS THE END OF FILE INDICATOR ON THE C 31ST RECORD.. C IF (ICZERO) 30860, 860, 30860 860 CONTINUE IVCOMP = IEND GO TO 40860 30860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40860, 871, 40860 40860 IF ( IVCOMP - 9999 ) 20860, 10860, 20860 10860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 871 20860 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 871 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 04 C TO THE LINE PRINTER. CDB** C ILUN = I09 C ITOTR = 31 C IRLGN = 80 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM103) END *END-OF,FM103 FM104.f 480976091 170 2 100666 11954 ` *HEADER,FORTR,FM104 *FILES1,FORTR,FM104,X C COMMENT SECTION. C C FM104 C C THIS ROUTINE IS A TEST OF THE / FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE INTEGER VARIABLE AND INTEGER ARRAY ELEMENT OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY RECORD IS READ AND C CHECKED DURING THE READ TEST SECTION FOR VALUES OF DATA ITEMS C AND THE END OF FILE ON THE LAST RECORD IS ALSO CHECKED. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C SECTION 13.5.9.1, INTEGER EDITING C COMMON ITEST(7), IACN11(57), ICHEC C DIMENSION IPREM(7), IADN11(57) DIMENSION IDUMP(136) CHARACTER*1 NINE,IZERO,IDUMP DATA NINE/'9'/, IZERO/'0'/ C 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H NO EOF.. MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,43HFILE I06 CREATED WITH 28 SEQUENTIAL RECORDS) 77751 FORMAT (I3,2I2,3I3,I4,57I1,I3/I3,2I2,3I3,I4,57I1,I3/I3,2I2,3I3,I4, 157I1,I3/I3,2I2,3I3,I4,57I1,I3 ) 77752 FORMAT (7X,I3,6X,I4,I1,56X,I3/7X,I3,67X,I3/7X,I3,67X,I3/7X,I3,67X, 1I3 ) 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) C C DEFAULT ASSIGNMENT FOR FILE 05 IS I06 = 7 I06 = 7 CX060 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-060 CX061 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-061 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I06 THAT IS C 80 CHARACTERS PER RECORD, 28 RECORDS LONG, AND CONSISTS OF ONLY C INTEGERS ( I FORMAT ). THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM104 AND FOR PURPOSES OF IDENTIFICATION IS FILE 05. C SINCE THIS ROUTINE IS A TEST OF / IN A FORMAT STATEMENT, FOUR (4) C RECORDS ARE ACTUALLY WRITTEN WITH ONE WRITE STATEMENT. ALL FOUR C OF THESE RECORDS WILL HAVE THE SAME RECORD NUMBER IN THE 20 C CHARACTER PREAMBLE. THE INTEGER STORED IN CHARACTER POSITIONS C 78 - 80 WILL EQUAL THE RECORD NUMBER PLUS 0, 1, 2, AND 3 FOR C THE FOUR RECORD SET RESPECTIVELY.. THE INTEGER ARRAY ELEMENTS C IN CHARACTER POSITIONS 21-77 WILL CONTAIN THE INTEGER DIGIT 9. IPROG = 104 IFILE = 05 ILUN = I06 ITOTR = 28 IRLGN = 80 IEOF = 0000 C SET THE RECORD PREAMBLE VALUES EXCEPT FOR RECORD NUMBER AND EOF.. IPREM(1) = IPROG IPREM(2) = IFILE IPREM(3) = ILUN IPREM(5) = ITOTR IPREM(6) = IRLGN C SET THE INTEGER ARRAY ELEMENTS TO THE INTEGER DIGIT 9 DO 10 I = 1, 57 IADN11(I) = 9 10 CONTINUE DO 872 IRNUM = 1, 7 IF ( IRNUM .EQ. 7 ) IEOF = 9999 IPREM(4) = IRNUM IPREM(7) = IEOF IVON02 = IRNUM IVON03 = IRNUM + 1 IVON04 = IRNUM + 2 IVON05 = IRNUM + 3 WRITE ( I06, 77751 ) IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,IADN1 11,IVON02,IPREM,IADN11,IVON03,IPREM,IADN11,IVON04,IPREM,IADN11,IVON 205 872 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I06 C C READ SECTION.... C IVTNUM = 87 C C **** TEST 87 THRU TEST 93 **** C TEST 87 THRU 93 - THESE TESTS CHECK EVERY ONE OF THE 28 RECORDS C CREATED AS FILE I06 FOR THE RECORD NUMBER, CONSTANT DATA ITEMS, C AND THE END OF FILE INDICATOR. C DO 932 IRNUM = 1, 7 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 87 - 93. READ ( I06, 77752 ) IRN01,IEND,IVON06,IVON07,IRN02,IVON08,IRN03, 1IVON09,IRN04,IVON10 C READ THE FILE I06 - NOTE, FOUR RECORDS ARE READ IN EACH SINGLE C READ STATEMENT AND THE FORMAT IS DIFFERENT THAN THE ONE USED TO C CREATE THE FILE. C C CHECK THE DATA ITEM VALUES .... IF ( IRN01 .EQ. IRNUM ) IVON01 = IVON01 + 1 C IRN01 SHOULD EQUAL THE RECORD NUMBER FOR THE SET OF FOUR RECORDS C RECORD NUMBERS GO FROM 1 TO 7 .... IF ( IVON06 .EQ. 9 ) IVON01 = IVON01 + 1 C IVON06 IS THE INTEGER ARRAY ELEMENT WHICH SHOULD BE ALWAYS EQUAL C TO THE INTEGER CONSTANT 9 .... IF ( IVON07 .EQ. IRNUM ) IVON01 = IVON01 + 1 C IVON07 SHOULD ALWAYS EQUAL THE RECORD NUMBER OF THE FIRST RECORD C IN THE SET OF FOUR RECORDS .... IF ( IRN02 .EQ. IRNUM ) IVON01 = IVON01 + 1 C THIS VALUE REMAINS CONSTANT FOR ALL FOUR RECORDS IN THE SET OF 4.. IF ( IVON08 .EQ. IRNUM + 1 ) IVON01 = IVON01 + 1 C IVON08 IS THE 80TH CHARACTER IN THE SECOND RECORD OF THE SET OF 4. IF ( IRN03 .EQ. IRNUM ) IVON01 = IVON01 + 1 C AGAIN THIS VALUE IS CONSTANT FOR THE SET OF FOUR RECORDS.... IF ( IVON09 .EQ. IRNUM + 2 ) IVON01 = IVON01 + 1 C IVON09 IS THE 80TH CHARACTER IN THE THIRD RECORD OF THE SET OF 4. IF ( IRN04 .EQ. IRNUM ) IVON01 = IVON01 + 1 C STILL EQUALS THE RECORD NUMBER FOR THE SET OF FOUR RECORDS. IF ( IVON10 .EQ. IRNUM + 3 ) IVON01 = IVON01 + 1 C IVON10 IS THE 80TH CHARACTER IN THE FOURTH RECORD OF THE SET OF 4. IF ( IVON01 - 9 ) 20870, 10870, 20870 C WHEN IVON01 = 9 THEN ALL NINE OF THE DATA ITEMS CHECKED ARE OK... 10870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 881 20870 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 881 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... 932 CONTINUE IF ( ICZERO ) 30870, 941, 30870 30870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 941 CONTINUE IVTNUM = 94 C C **** TEST 94 **** C TEST 94 - THIS TEST CHECKS THE END OF FILE INDICATOR ON THE LAST C SET OF 4 RECORDS ( 25,26,27,AND 28 ). C THE VARIABLE IEND IS ACTUALLY IN THE RECORD NUMBERED 25. C IF (ICZERO) 30940, 940, 30940 940 CONTINUE IVCOMP = IEND GO TO 40940 30940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 40940, 951, 40940 40940 IF ( IVCOMP - 9999 ) 20940, 10940, 20940 10940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 951 20940 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 951 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 05 C TO THE LINE PRINTER. CDB** C ILUN = I06 C ITOTR = 28 C IRLGN = 80 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE .AND. IDUMP(80) .EQ. IZERO ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM104) END *END-OF,FM104 FM105.f 480976093 170 2 100666 12404 ` *HEADER,FORTR,FM105 *FILES1,FORTR,FM105,X C COMMENT SECTION. C C FM105 C C FM105 TESTS REPEATED ( ) FORMAT FIELDS AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE INTEGER VARIABLE AND INTEGER ARRAY ELEMENT OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C ROUTINE FM105 IS EXACTLY LIKE ROUTINE FM104 EXCEPT THAT C FORMAT NUMBERS 77751 AND 77752 HAVE BEEN CHANGED TO USE THREE (3) C REPEATED FIELDS, I.E. ... 3(/ ... ) THIS SHOULD STILL C MAKE THE ROUTINE WRITE AND THEN READ FOUR (4) 80 CHARACTER C RECORDS FOR EACH SINGLE WRITE OR READ STATEMENT. OTHER FORMAT C CONVERSIONS USED ARE THE X AND I FORMAT FIELDS. BECAUSE OF THE C NUMBER OF CHARACTERS TO BE WRITTEN OR READ IN EACH SET OF FOUR C RECORDS, THE ENTIRE REPEATED FIELD IS USED. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY RECORD IS READ AND C CHECKED DURING THE READ TEST SECTION FOR VALUES OF DATA ITEMS C AND THE END OF FILE ON THE LAST RECORD IS ALSO CHECKED. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C SECTION 13.5.9.1, INTEGER EDITING C C DIMENSION IPREM(7), IADN11(57) DIMENSION IDUMP(136) CHARACTER*1 NINE,IZERO,IDUMP DATA NINE/'9'/, IZERO/'0'/ C 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,43HFILE I08 CREATED WITH 28 SEQUENTIAL RECORDS) 77751 FORMAT ( I3,2(I2),3(I3),I4,57(I1),I3,3(/I3,2(I2),3(I3),I4,57(I1),I 13) ) 77752 FORMAT ( 7(1X),I3,6(1X),I4,I1,56(1X),I3,3(/7(1X),I3,67(1X),I3) ) 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) C C DEFAULT ASSIGNMENT FOR FILE 06 IS I08 = 7 I08 = 7 CX080 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-080 CX081 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-081 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I08 THAT IS C 80 CHARACTERS PER RECORD, 28 RECORDS LONG, AND CONSISTS OF ONLY C INTEGERS ( I FORMAT ). THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM105 AND FOR PURPOSES OF IDENTIFICATION IS FILE 06. C SINCE THIS ROUTINE IS A TEST OF / IN A FORMAT STATEMENT, FOUR (4) C RECORDS ARE ACTUALLY WRITTEN WITH ONE WRITE STATEMENT. ALL FOUR C OF THESE RECORDS WILL HAVE THE SAME RECORD NUMBER IN THE 20 C CHARACTER PREAMBLE. THE INTEGER STORED IN CHARACTER POSITIONS C 78 - 80 WILL EQUAL THE RECORD NUMBER PLUS 0, 1, 2, AND 3 FOR C THE FOUR RECORD SET RESPECTIVELY.. THE INTEGER ARRAY ELEMENTS C IN CHARACTER POSITIONS 21-77 WILL CONTAIN THE INTEGER DIGIT 9. IPROG = 105 IFILE = 06 ILUN = I08 ITOTR = 28 IRLGN = 80 IEOF = 0000 C SET THE RECORD PREAMBLE VALUES EXCEPT FOR RECORD NUMBER AND EOF.. IPREM(1) = IPROG IPREM(2) = IFILE IPREM(3) = ILUN IPREM(5) = ITOTR IPREM(6) = IRLGN C SET THE INTEGER ARRAY ELEMENTS TO THE INTEGER DIGIT 9 DO 10 I = 1, 57 IADN11(I) = 9 10 CONTINUE DO 952 IRNUM = 1, 7 IF ( IRNUM .EQ. 7 ) IEOF = 9999 IPREM(4) = IRNUM IPREM(7) = IEOF IVON02 = IRNUM IVON03 = IRNUM + 1 IVON04 = IRNUM + 2 IVON05 = IRNUM + 3 WRITE ( I08, 77751 ) IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,IADN1 11,IVON02,IPREM,IADN11,IVON03,IPREM,IADN11,IVON04,IPREM,IADN11,IVON 205 952 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I08 C C READ SECTION.... C IVTNUM = 95 C C **** TEST 95 THRU TEST 101 **** C TEST 95 THRU 101 - THESE TESTS CHECK EVERY ONE OF THE 28 RECORDS C CREATED AS FILE I08 FOR THE RECORD NUMBER, CONSTANT DATA ITEMS, C AND THE END OF FILE INDICATOR. C DO 962 IRNUM = 1, 7 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 95 - 101 READ ( I08, 77752 ) IRN01,IEND,IVON06,IVON07,IRN02,IVON08,IRN03, 1IVON09,IRN04,IVON10 C READ THE FILE I08 - NOTE, FOUR RECORDS ARE READ IN EACH SINGLE C READ STATEMENT AND THE FORMAT IS DIFFERENT THAN THE ONE USED TO C CREATE THE FILE. C C CHECK THE DATA ITEM VALUES .... IF ( IRN01 .EQ. IRNUM ) IVON01 = IVON01 + 1 C IRN01 SHOULD EQUAL THE RECORD NUMBER FOR THE SET OF FOUR RECORDS C RECORD NUMBERS GO FROM 1 TO 7 .... IF ( IVON06 .EQ. 9 ) IVON01 = IVON01 + 1 C IVON06 IS THE INTEGER ARRAY ELEMENT WHICH SHOULD BE ALWAYS EQUAL C TO THE INTEGER CONSTANT 9 .... IF ( IVON07 .EQ. IRNUM ) IVON01 = IVON01 + 1 C IVON07 SHOULD ALWAYS EQUAL THE RECORD NUMBER OF THE FIRST RECORD C IN THE SET OF FOUR RECORDS .... IF ( IRN02 .EQ. IRNUM ) IVON01 = IVON01 + 1 C THIS VALUE REMAINS CONSTANT FOR ALL FOUR RECORDS IN THE SET OF 4.. IF ( IVON08 .EQ. IRNUM + 1 ) IVON01 = IVON01 + 1 C IVON08 IS THE 80TH CHARACTER IN THE SECOND RECORD OF THE SET OF 4. IF ( IRN03 .EQ. IRNUM ) IVON01 = IVON01 + 1 C AGAIN THIS VALUE IS CONSTANT FOR THE SET OF FOUR RECORDS.... IF ( IVON09 .EQ. IRNUM + 2 ) IVON01 = IVON01 + 1 C IVON09 IS THE 80TH CHARACTER IN THE THIRD RECORD OF THE SET OF 4. IF ( IRN04 .EQ. IRNUM ) IVON01 = IVON01 + 1 C STILL EQUALS THE RECORD NUMBER FOR THE SET OF FOUR RECORDS. IF ( IVON10 .EQ. IRNUM + 3 ) IVON01 = IVON01 + 1 C IVON10 IS THE 80TH CHARACTER IN THE FOURTH RECORD OF THE SET OF 4. IF ( IVON01 - 9 ) 20960, 10960, 20960 C WHEN IVON01 = 9 THEN ALL NINE OF THE DATA ITEMS CHECKED ARE OK... 10960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 971 20960 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 9 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 971 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... 962 CONTINUE IF ( ICZERO ) 30960, 1021, 30960 30960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1021 CONTINUE IVTNUM = 102 C C **** TEST 102 **** C TEST 102 - THIS TEST CHECKS THE END OF FILE INDICATOR ON THE LAST C SET OF 4 RECORDS ( 25,26,27,AND 28 ). C THE VARIABLE IEND IS ACTUALLY IN THE RECORD NUMBERED 25. C IF (ICZERO) 31020, 1020, 31020 1020 CONTINUE IVCOMP = IEND GO TO 41020 31020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41020, 1031, 41020 41020 IF ( IVCOMP - 9999 ) 21020, 11020, 21020 11020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1031 21020 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1031 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 06 C TO THE LINE PRINTER. CDB** C ILUN = I08 C ITOTR = 28 C IRLGN = 80 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE .AND. IDUMP(80) .EQ. IZERO ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM105) END *END-OF,FM105 FM106.f 480976095 170 2 100666 13241 ` *HEADER,FORTR,FM106 *FILES1,FORTR,FM106,X C COMMENT SECTION. C C FM106 C C THIS ROUTINE IS A TEST OF THE E FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE REAL VARIABLES AND REAL ARRAY ELEMENTS OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY FOURTH RECORD IS C CHECKED DURING THE READ TEST SECTION PLUS THE LAST TWO RECORDS C AND THE END OF FILE ON THE LAST RECORD. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C DIMENSION ITEST(7), RTEST(20) DIMENSION IDUMP(136) CHARACTER*1 NINE,IDUMP DATA NINE/'9'/ C 77701 FORMAT ( 110A1) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1,3(/ 10X,71A1) ) 77706 FORMAT ( 10X, 44HFILE I09 CREATED WITH 124 SEQUENTIAL RECORDS ) 77751 FORMAT ( I3,2I2,3I3,I4,3X,2E8.1,2X,3E9.2,2X,E10.3/24X,3E10.3,4X,2E 111.4,/1X,3E11.4,2X,2E12.5/26X,4E12.5,6X ) 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) C C DEFAULT ASSIGNMENT FOR FILE 07 IS I09 = 7 I09 = 7 CX090 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-090 CX091 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-091 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I09 THAT IS C 80 CHARACTERS PER RECORD, 124 RECORDS AND CONSISTS OF ONLY C REALS ( E FORMAT ). THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM106 AND FOR PURPOSES OF IDENTIFICATION IS FILE 07. C ALL OF THE DATA WITH THE EXCEPTION OF THE 20 CHARACTER INTEGER C PREAMBLE FOR EACH RECORD, IS COMPRISED OF REAL VARIABLES SET BY C REAL ASSIGNMENT STATEMENTS TO VARIOUS REAL CONSTANTS. C C ALL THE THE REAL CONSTANTS USED ARE POSITIVE, I.E. NO SIGN. C IPROG = 106 IFILE = 07 ILUN = I09 C THERE ARE 31 SETS OF FOUR 80 CHARACTER RECORDS EACH.. C EACH WRITE OR READ OF THE FILE HANDLES 4 RECORDS. FOR THE C PURPOSES OF THE OPTIONAL DUMP OF FILE 07, THE TOTAL NUMBER OF C 80 CHARACTER RECORDS IS 4 * 31 = 124 RECORDS. ITOTR = 124 IRLGN = 80 IEOF = 0000 C SET THE REAL VARIABLES USING E - NOTATION.... RCON21 = 0.9E01 RCON22 = 0.9E00 RCON31 = 0.21E02 RCON32 = 0.21E01 RCON33 = 0.21E00 RCON41 = 0.512E03 RCON42 = 0.512E02 RCON43 = 0.512E01 RCON44 = 0.512E00 RCON51 = 0.9995E04 RCON52 = 0.9996E03 RCON53 = 0.9997E02 RCON54 = 0.9998E01 RCON55 = 0.9999E00 RCON61 = 0.32764E05 RCON62 = 0.32765E04 RCON63 = 0.32766E03 RCON64 = 0.32767E02 RCON65 = 0.32768E01 RCON66 = 0.32769E00 DO 1032 IRNUM = 1, 31 IF ( IRNUM .EQ. 31 ) IEOF = 9999 WRITE(I09,77751)IPROG,IFILE,ILUN,IRNUM,ITOTR,IRLGN,IEOF,RCON21,RCO 1N22,RCON31,RCON32,RCON33,RCON41,RCON42,RCON43,RCON44,RCON51,RCON52 2,RCON53,RCON54,RCON55,RCON61,RCON62,RCON63,RCON64,RCON65,RCON66 1032 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I09 C C READ SECTION.... C IVTNUM = 103 C C **** TEST 103 THRU TEST 110 **** C TEST 103 THRU 110 - THESE TESTS READ THE SEQUENTIAL FILE C PREVIOUSLY WRITTEN ON LUN I09 AND CHECK THE FIRST AND EVERY FOURTH C RECORD. THE VALUES CHECKED ARE THE RECORD NUMBER - IRNUM AND C SEVERAL VALUES WHICH SHOULD REMAIN CONSTANT FOR ALL OF THE 31 C SETS OF 4 RECORDS. C IRTST = 1 READ ( I09, 77751) ITEST, RTEST C READ THE FIRST RECORD.... DO 1034 I = 1, 8 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 1 THRU 8 IF ( ITEST(4) .EQ. IRTST ) IVON01 = IVON01 + 1 C THE ELEMENT (4) SHOULD EQUAL THE RECORD NUMBER.... C THE ERROR TOLERANCE IS BASED ON A SIXTEEN BIT MANTISSA AND C PROVIDES SOME ALLOWANCE FOR THE IMPLEMENTORS INPUT, OUTPUT, AND C STORAGE OF REAL NUMBERS.... IF(RTEST(1) .GE. 8.9995 .OR. RTEST(1) .LE. 9.0005) IVON01=IVON01+1 C THE ELEMENT(1) SHOULD EQUAL RCON21 = 9. .... IF(RTEST(4) .GE. 2.0995 .OR. RTEST(4) .LE. 2.1005) IVON01=IVON01+1 C THE ELEMENT( 4) SHOULD EQUAL RCON32 = 2.1 .... IF(RTEST(9) .GE. .51195 .OR. RTEST(9) .LE. .51205) IVON01=IVON01+1 C THE ELEMENT( 9) SHOULD EQUAL RCON44 = .512 .... IF ( RTEST(13) .GE. 9.9975 .OR. RTEST(13) .LE. 9.9985 ) 1 IVON01 = IVON01 + 1 C THE ELEMENT(13) SHOULD EQUAL RCON54 = 9.998 .... IF ( RTEST(20) .GE. .32764 .OR. RTEST(20) .LE. .32774 ) 1 IVON01 = IVON01 + 1 C THE ELEMENT(20) SHOULD EQUAL RCON66 = .32769 .... IF ( IVON01 - 6 ) 21030, 11030, 21030 C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 11030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1041 21030 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1041 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... IF ( IVTNUM .EQ. 111 ) GO TO 1035 C TAPE SHOULD BE AT RECORD NUMBER 29 FOR TEST 110 - DO NOT READ MORE C UNTIL TEST NUMBER 111 WHICH CHECKS RECORD NUMBER 30.... DO 1033 J = 1, 4 READ ( I09, 77751 ) ITEST, RTEST C READ FOUR SETS OF RECORDS ON LUN I09.... 1033 CONTINUE IRTST = IRTST + 4 C INCREMENT THE RECORD NUMBER COUNTER.... 1034 CONTINUE IF ( ICZERO ) 31030, 1035, 31030 31030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1035 CONTINUE IVTNUM = 111 C C **** TEST 111 **** C TEST 111 - THIS CHECKS THE RECORD NUMBER ON EXPECTED RECORD C SET 30.... C IF (ICZERO) 31110, 1110, 31110 1110 CONTINUE READ ( I09, 77751 ) ITEST, RTEST IVCOMP = ITEST(4) GO TO 41110 31110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41110, 1121, 41110 41110 IF ( IVCOMP - 30 ) 21110, 11110, 21110 11110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1121 21110 IVFAIL = IVFAIL + 1 IVCORR = 30 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1121 CONTINUE IVTNUM = 112 C C **** TEST 112 **** C TEST 112 - THIS CHECKS THE RECORD NUMBER ON RECORD SET 31. C IF (ICZERO) 31120, 1120, 31120 1120 CONTINUE READ ( I09, 77751 ) ITEST, RTEST IVCOMP = ITEST(4) GO TO 41120 31120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41120, 1131, 41120 41120 IF ( IVCOMP - 31 ) 21120, 11120, 21120 11120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1131 21120 IVFAIL = IVFAIL + 1 IVCORR = 31 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1131 CONTINUE IVTNUM = 113 C C **** TEST 113 **** C TEST 113 - THIS CHECKS THE END OF FILE INDICATOR ON RECORD SET C NUMBER 31. C C IF (ICZERO) 31130, 1130, 31130 1130 CONTINUE IVCOMP = ITEST(7) GO TO 41130 31130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41130, 1141, 41130 41130 IF ( IVCOMP - 9999 ) 21130, 11130, 21130 11130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1141 21130 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1141 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 07 C TO THE LINE PRINTER. CDB** C ILUN = I09 C ITOTR = 124 C IRLGN = 80 C7777 REWIND ILUN C IENDC = 0 C IRCNT = 0 C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IRCNT = IRCNT + 1 C IF ( IDUMP(20) .EQ. NINE ) IENDC = IRNUM C7778 CONTINUE C IF ( IENDC - 121 ) 7780,7779,7782 C7779 IF ( IRCNT - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM106) END *END-OF,FM106 FM107.f 480976097 170 2 100666 13131 ` *HEADER,FORTR,FM107 *FILES1,FORTR,FM107,X C COMMENT SECTION. C C FM107 C C THIS ROUTINE IS A TEST OF THE I FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE INTEGER VARIABLE AND INTEGER ARRAY ELEMENT OR C ARRAY NAME REFERENCES. ALL READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C THE MAJOR PURPOSE OF THIS ROUTINE IS TO TEST WHETHER THE LAST C SET OF PARENTHESES WILL BE REPEATED IN A FORMAT STATEMENT IF THE C NUMBER OF DATA ITEMS IN THE INPUT/OUTPUT LIST IS GREATER THAN THE C NUMBER OF FIELD SPECIFICATIONS WITHIN THE FORMAT STATEMENT. C IN ADDITION THE USE OF TWO AND THREE DIMENSIONED ARRAYS IS TESTED C IN THE IMPLIED-DO LISTS IN BOTH THE WRITE AND READ SECTIONS. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY FOURTH RECORD IS C CHECKED DURING THE READ TEST SECTION PLUS THE LAST TWO RECORDS C AND THE END OF FILE ON THE LAST RECORD. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C DIMENSION IADN21(31,20), IADN31(31,10,2) DIMENSION ITEST(27) DIMENSION IDUMP(136) CHARACTER*1 NINE,IDUMP DATA NINE/'9'/ C 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H NO EOF.. MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,44HFILE I06 CREATED WITH 137 SEQUENTIAL RECORDS ) 77751 FORMAT ( I3, 2(1I2), 3(1I3), I4, 10(1I3) ) 77752 FORMAT ( I3,2(1I2), 3(1I3), I4, 3(1I3) ) 77753 FORMAT ( //////////////// I3,2I2,3I3,I4,10(I3) ) 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) C C DEFAULT ASSIGNMENT FOR FILE 08 IS I06 = 7 I06 = 7 CX060 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-060 CX061 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-061 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I06 THAT IS C 80 CHARACTERS PER RECORD, 31 RECORDS SETS, AND CONSISTS OF ONLY C INTEGERS ( I FORMAT ). THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM107 AND FOR PURPOSES OF IDENTIFICATION IS FILE 08. IPROG = 107 IFILE = 08 ILUN = I06 ITOTR = 137 IRLGN = 80 IEOF = 0000 C THESE DO-LOOPS ARE TO SET THE VALUES INTO THE TWO AND THREE C DIMENSIONED ARRAYS FOR THE I/O LISTS.... DO 1143 IRNUM = 1, 31 DO 1142 J = 1, 20 IADN21(IRNUM,J) = IRNUM + J + 99 1142 CONTINUE 1143 CONTINUE C DO 1146 IRNUM = 1, 31 DO 1145 J = 1, 10 DO 1144 K = 1, 2 IADN31(IRNUM,J,K) = IRNUM + J + K + 298 1144 CONTINUE 1145 CONTINUE 1146 CONTINUE IFLIP = 1 DO 1149 IRNUM = 1, 31 IF ( IRNUM .EQ. 31 ) IEOF = 9999 IF ( IFLIP - 1 ) 1147, 1147, 1148 1147 WRITE ( I06, 77751 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF 1,(IADN21(IRNUM,J), J = 1, 20) IFLIP = 2 GO TO 1149 1148 WRITE ( I06, 77752 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF 1,((IADN31(IRNUM,J,K), K = 1, 2), J = 1, 10) IFLIP = 1 1149 CONTINUE WRITE (I02,77706) C C REWIND SECTION C REWIND I06 C C READ SECTION.... C IVTNUM = 114 C C **** TEST 114 THRU TEST 121 **** C TEST 114 THRU 121 - THESE TESTS READ THE SEQUENTIAL FILE C PREVIOUSLY WRITTEN ON LUN I06 AND CHECK THE FIRST AND EVERY FOURTH C RECORD. THE VALUES CHECKED ARE THE RECORD NUMBER - IRNUM AND C SEVERAL VALUES IN THE INTEGER ARRAY WHICH SHOULD FOLLOW A C CALCULATED PATTERN WITH RESPECT TO THE SUBSCRIPTS AND THE RECORD C NUMBER.... C IRNUM = 1 READ(I06,77751) ITEST C READ THE FIRST RECORD.... DO 1212 I = 1, 8 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST IF ( ITEST(4) .EQ. IRNUM ) IVON01 = IVON01 + 1 C THE ELEMENT (4) SHOULD EQUAL THE RECORD NUMBER.... C THE FOLLOWING TESTS ARE FOR ODD NUMBERED RECORDS IF ( ITEST(8) .EQ. IADN21(IRNUM,1) ) IVON01 = IVON01 + 1 C ELEMENT (8) SHOULD EQUAL IRNUM + 100 .... IF ( ITEST(12) .EQ. IADN21(IRNUM,5) ) IVON01 = IVON01 + 1 C ELEMENT (12) SHOULD EQUAL IRNUM + 104 .... IF ( ITEST(16) .EQ. IADN21(IRNUM,9) ) IVON01 = IVON01 + 1 C ELEMENT (16) SHOULD EQUAL IRNUM + 108 .... IF ( ITEST(20) .EQ. IADN21(IRNUM,13) ) IVON01 = IVON01 + 1 C ELEMENT (20) SHOULD EQUAL IRNUM + 112 .... IF ( ITEST(27) .EQ. IADN21(IRNUM,20) ) IVON01 = IVON01 + 1 C ELEMENT (27) SHOULD EQUAL IRNUM + 119 .... C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 41200 IF ( IVON01 - 6 ) 21200, 11200, 21200 11200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1210 21200 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1210 CONTINUE IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... C IF ( I .EQ. 8 ) GO TO 1221 C THIS CODE IS TO SKIP READING PAST THE END OF FILE BY NOT READING C FOUR RECORDS PAST RECORD NUMBER 29 ON THE 8TH LOOP.... C READ ( I06,77753 ) ITEST C READ FOUR RECORDS ON LUN I06.... IRNUM = IRNUM + 4 C INCREMENT THE RECORD NUMBER COUNTER.... 1212 CONTINUE IF ( ICZERO ) 31200, 1221, 31200 31200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1221 CONTINUE IVTNUM = 122 C C **** TEST 122 **** C TEST 122 - THIS CHECKS THE VALUE OF THE VARIABLE ITEST(27) C ON RECORD NUMBER 30. ELEMENT (20) SHOULD EQUAL IADN31(30,2,10) C WHICH SHOULD BE EQUAL TO 340 .... C IF (ICZERO) 31220, 1220, 31220 1220 CONTINUE READ ( I06,77752 ) ITEST IVCOMP = ITEST(27) GO TO 41220 31220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41220, 1231, 41220 41220 IF ( IVCOMP - 340 ) 21220, 11220, 21220 11220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1231 21220 IVFAIL = IVFAIL + 1 IVCORR = 340 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1231 CONTINUE IVTNUM = 123 C C **** TEST 123 **** C TEST 123 - THIS CHECKS THE VALUE OF VARIABLE ITEST(27) ON C RECORD NUMBER 31 WHICH SHOULD EQUAL IADN21(31,20) = 31 + 20 + 99 C ITEST(27) SHOULD EQUAL 150 .... C IF (ICZERO) 31230, 1230, 31230 1230 CONTINUE READ ( I06,77751) ITEST IVCOMP = ITEST(27) GO TO 41230 31230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41230, 1241, 41230 41230 IF ( IVCOMP - 150 ) 21230, 11230, 21230 11230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1241 21230 IVFAIL = IVFAIL + 1 IVCORR = 150 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1241 CONTINUE IVTNUM = 124 C C **** TEST 124 **** C TEST 124 - THIS CHECKS FOR THE PROPER 9999 EOF INDICATOR ON C RECORD NUMBER 31 .... C IF (ICZERO) 31240, 1240, 31240 1240 CONTINUE IVCOMP = ITEST(7) GO TO 41240 31240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41240, 1251, 41240 41240 IF ( IVCOMP - 9999 ) 21240, 11240, 21240 11240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1251 21240 IVFAIL = IVFAIL + 1 IVCORR = 9999 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1251 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 08 C TO THE LINE PRINTER. CDB** C ILUN = I06 C ITOTR = 137 C IRLGN = 80 C7777 REWIND ILUN C IENDC = 0 C IRCNT = 0 C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IRCNT = IRCNT + 1 C IF ( IDUMP(20) .EQ. NINE ) IENDC = IRNUM C7778 CONTINUE C IF ( IENDC - 136 ) 7780, 7779, 7782 C7779 IF ( IRCNT - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM107) END *END-OF,FM107 FM108.f 480976100 170 2 100666 12779 ` *HEADER,FORTR,FM108 *FILES1,FORTR,FM108,X C COMMENT SECTION. C C FM108 C C THIS ROUTINE IS A TEST OF THE X FORMAT AND IS TAPE AND PRINTER C ORIENTED. THE ROUTINE CAN NOT BE USED FOR DISK. BOTH THE READ C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND C OUTPUT LISTS ARE INTEGER OR REAL VARIABLES, INTEGER ARRAY ELEMENTS C OR ARRAY NAME REFERENCES. READ AND WRITE STATEMENTS ARE DONE C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL C INTEGER ARRAY FOR THE DUMP SECTION. C C WITH THE EXCEPTION OF THE RECORD PREAMBLES ON EACH RECORD, C ALL OF THE I, F, AND A-FIELDS HAVE A MINUS SIGN IN THE LEFTMOST C CHARACTER POSITION OF EACH FIELD. C C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS C REWOUND AND READ SEQUENTIALLY FORWARD AND THEN READ SEQUENTIALLY C BACKWARD BY USING THE BACKSPACE COMMAND. THE FORWARD READ IS C USED TO CHECK ALL OF THE ODD RECORDS AND THE READ REVERSE IN C EFFECT CHECKS THE EVEN NUMBERED RECORDS. THE ENDFILE COMMAND IS C ALSO USED AFTER THE WRITE SECTION BUT BECAUSE THE RESULT OF C ATTEMPTING TO READ OR READ BEYOND THE ENDFILE MARK IS NOT POSSIBLE C TO PREDICT FOR ALL MACHINES, THE ENDFILE MARK IS NEVER ACTUALLY C READ. C C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING C OF THE CONTINUATION LINE. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C DIMENSION IDUMP(136) DIMENSION IADN11(5), IADN12(3), IADN13(3) CHARACTER*1 NINE,IADN11,ICON04,IDUMP CHARACTER*2 IADN12,ICON06 CHARACTER*3 IADN13 DATA NINE/'9'/ DATA IADN11/'-', 'W', 'H', 'E', 'E'/, IADN12/'-H', 'EL', 'L'/, 1IADN13/'-', 'HE', 'LL'/ C 77701 FORMAT ( 80A1 ) 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O 1F ,I3,8H RECORDS) 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H NO EOF.. MORE THAN ,I3,8H RECOR 1DS) 77705 FORMAT ( 1X,80A1) 77706 FORMAT (10X,43HFILE I08 CREATED WITH 31 SEQUENTIAL RECORDS) 77751 FORMAT ( I3,2I2,3I3,I4,4X,I6,4X,F6.2,5X,5A1,4X,I6,4X,F6.4,5X,2A2,A 11 ) 77752 FORMAT ( I3,2I2,3I3,I4,I6,4X,F6.2,4X,5A1,5X,I6,4X,F6.4,4X,A1,2A2,5 1X ) 77753 FORMAT (7X,I3,6X,I4,4X,I6,15X,A1,8X,I6,4X,F6.4,9X,A1 ) 77754 FORMAT (7X,I3,6X,I4,I6,14X,A1,9X,I6,4X,F6.4,7X,A2,5X ) 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) C C DEFAULT ASSIGNMENT FOR FILE 09 IS I08 = 7 I08 = 7 CX080 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-080 CX081 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-081 C C WRITE SECTION.... C C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I08 THAT IS C 80 CHARACTERS PER RECORD, 31 RECORDS LONG, AND CONSISTS OF C I, F, A, AND X FORMAT. THIS IS THE ONLY FILE TESTED IN THE C ROUTINE FM108 AND FOR PURPOSES OF IDENTIFICATION IS FILE 09. C ALL ARRAY ELEMENT DATA FOR THE ALPHANUMERIC CHARACTERS IS SET BY C THE DATA INITIALIZATION STATEMENT. INTEGER AND REAL VARIABLES ARE C SET BY ASSIGNMENT STATEMENTS. C IPROG = 108 IFILE = 09 ILUN = I08 ITOTR = 31 IRLGN = 80 IEOF = 0000 ICON01 = -32766 RCON01 = -12.34 ICON02 = -12345 RCON02 = -.9999 IFLIP = 1 DO 1254 IRNUM = 1, 31 IF ( IRNUM .EQ. 31 ) IEOF = 9999 IF ( IFLIP - 1 ) 1252, 1252, 1253 1252 WRITE ( I08, 77751 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF 1, ICON01, RCON01, IADN11,ICON02, RCON02, IADN12 IFLIP = 2 GO TO 1254 1253 WRITE ( I08, 77752 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF 1, ICON01, RCON01, IADN11, ICON02, RCON02, IADN13 IFLIP = 1 1254 CONTINUE WRITE (I02,77706) C C ENDFILE SECTION .... ENDFILE I08 C C REWIND SECTION REWIND I08 C C C READ FORWARD SECTION .... C C IVTNUM = 125 C C **** TEST 125 THRU TEST 140 **** C TEST 125 THRU 140 - THESE TESTS CHECK THE ODD NUMBERED RECORDS. C THE FILE 09 IS READ SEQUENTIALLY FORWARD AND THE EVEN NUMBERED C RECORDS ARE SKIPPED BY READING PAST THEM. C DO 1255 IRNUM = 1, 31, 2 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 125-140. READ ( I08,77753 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 C READ AN ODD NUMBERED RECORD.... IF ( IRNO .EQ. IRNUM ) IVON01 = IVON01 + 1 C IRNO SHOULD BE THE RECORD NUMBER.... IF ( ICON03 .EQ. ICON01 ) IVON01 = IVON01 + 1 C ICON03 SHOULD EQUAL -32766 .... IF ( ICON04 .EQ. IADN11(1) ) IVON01 = IVON01 + 1 C ICON04 SHOULD EQUAL '-' .... IF ( ICON05 .EQ. ICON02 ) IVON01 = IVON01 + 1 C ICON05 SHOULD EQUAL -12345 .... IF(RCON03.GE. -.99995 .OR. RCON03.LE. -.99985)IVON01=IVON01+1 C RCON03 SHOULD EQUAL -.9999 .... IF ( ICON06 .EQ. IADN12(3) ) IVON01 = IVON01 + 1 C ICON06 SHOULD EQUAL 'L' .... IF ( IVON01 - 6 ) 21250, 11250, 21250 11250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1261 21250 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1261 CONTINUE IF ( IRNUM .EQ. 31 ) GO TO 1255 C THIS DOES NOT ALLOW READING THE ENDFILE MARK.... READ ( I08,77754 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 C READ PAST THE EVEN NUMBERED RECORD .... IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... 1255 CONTINUE IF ( ICZERO ) 31250, 1411, 31250 31250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1411 CONTINUE IVTNUM = 141 C C **** TEST 141 THRU TEST 155 **** C TEST 141 THRU 155 - THESE TESTS USE THE BACKSPACE COMMAND C TO READ REVERSE AND CHECK THE EVEN NUMBERED RECORDS. AT THE C BEGINNING OF THIS SERIES, THE FILE 09 SHOULD BE SETTING AT THE C ENDFILE MARK PAST RECORD NUMBER 31. C BACKSPACE I08 BACKSPACE I08 IRNUM = 30 C THE FILE SHOULD NOW BE SETTING AT RECORD NUMBER 30.... DO 1552 I = 1, 15 IVON01 = 0 C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 141-155. READ ( I08,77754 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 C READ AN EVEN NUMBERED RECORD.... IF ( IRNO .EQ. IRNUM ) IVON01 = IVON01 + 1 C IRNO SHOULD BE THE RECORD NUMBER.... IF ( ICON03 .EQ. ICON01 ) IVON01 = IVON01 + 1 C ICON03 SHOULD EQUAL -32766 .... IF ( ICON04 .EQ. IADN11(1) ) IVON01 = IVON01 + 1 C ICON04 SHOULD EQUAL '-' .... IF ( ICON05 .EQ. ICON02 ) IVON01 = IVON01 + 1 C ICON05 SHOULD EQUAL -12345 .... IF(RCON03.GE. -.99995 .OR. RCON03.LE. -.99985)IVON01=IVON01+1 C RCON03 SHOULD EQUAL -.9999 .... IF ( ICON06 .EQ. IADN13(3) ) IVON01 = IVON01 + 1 C ICON06 SHOULD EQUAL 'LL' .... IF ( IVON01 - 6 ) 21410, 11410, 21410 11410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1421 21410 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 6 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1421 CONTINUE C THIS IS TO NOT ALLOW READING BACKWARDS PAST RECORD NUMBER 1.... IF ( I .EQ. 15 ) GO TO 1552 C BACKSPACE TO THE NEXT EVEN RECORD.... BACKSPACE I08 BACKSPACE I08 BACKSPACE I08 IVTNUM = IVTNUM + 1 C INCREMENT THE TEST NUMBER.... IRNUM = IRNUM - 2 C DECREMENT THE RECORD NUMBER POINTER BY 2 .... 1552 CONTINUE IF ( ICZERO ) 31410, 1561, 31410 31410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1561 CONTINUE C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 09 C TO THE LINE PRINTER. CDB** C ILUN = I08 C ITOTR = 31 C IRLGN = 80 C7777 REWIND ILUN C DO 7778 IRNUM = 1, ITOTR C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7779 C7778 CONTINUE C GO TO 7782 C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR C GO TO 7784 C7781 WRITE (I02,77703) ILUN,ITOTR C GO TO 7784 C7782 WRITE (I02,77704) ILUN, ITOTR C DO 7783 I = 1, 5 C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 C7783 CONTINUE C7784 GO TO 99999 CDE** 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 FM108) END *END-OF,FM108 FM109.f 480976102 170 2 100666 18096 ` *HEADER,FORTR,FM109 *FILES1,FORTR,FM109,X C COMMENT SECTION C C FM109 C C THIS ROUTINE TESTS THE BASIC OPTIONS REGARDING THE SIMPLE C FORMATTED WRITE STATEMENT OF FORM C WRITE (U,F) OR C WRITE (U,F) L C WHERE U IS A LOGICAL UNIT NUMBER C F IS A FORMAT STATEMENT LABEL, AND C L IS A LIST OF INTEGER VARIABLES. C THE FORMAT STATEMENT F CONTAINS NH HOLLERITH FIELD DESCRIPTORS, C NX BLANK FIELD DESCRIPTORS AND IW NUMERIC FIELD DESCRIPTORS. C C THIS ROUTINE TESTS WHETHER THE FIRST CHARACTER OF A FORMAT C RECORD FOR PRINTER OUTPUT DETERMINES VERTICAL SPACING AS FOLLOWS C 1 - ADVANCE TO FIRST LINE OF NEXT PAGE C BLANK - ONE LINE C 0 - ADVANCE TWO LINES BEFORE PRINTING C + - DO NOT ADVANCE BEFORE PRINTING - ADVANCE 0 C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8, SPECIFICATION STATEMENTS C SECTION 9, DATA STATEMENT C SECTION 11.10, DO STATEMENT C SECTION 12, INPUT/OUTPUT STATEMENTS C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.9.5.2, FORMATTED DATA TRANSFER C SECTION 13, FORMAT STATEMENT C SECTION 13.2.1, EDIT DESCRIPTORS C C ALL OF THE RESULTS OF THIS ROUTINE MUST BE VISUALLY CHECKED C ON THE OUTPUT REPORT. THE USUAL TEST CODE FOR PASS, FAIL, OR C DELETE DOES NOT APPLY TO THIS ROUTINE. IF ANY TEST IS TO BE C DELETED, CHANGE THE OFFENDING WRITE OR FORMAT STATEMENT TO A C COMMENT. THE PERSON RESPONSIBLE FOR CHECKING THE OUTPUT MUST ALSO C CHECK THE COMPILER LISTING TO SEE IF ANY STATEMENTS HAVE BEEN C CHANGED TO COMMENTS. 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,90006) WRITE (I02,90002) C IVTNUM = 156 C **** TEST 156 **** C TEST 156 - VERTICAL SPACING TEST C 1 IN FIRST CHARACTER OF FORMATTED PRINT RECORD MEANS C RECORD IS FIRST LINE AT TOP OF NEXT PAGE. C IF (ICZERO) 31560, 1560, 31560 1560 CONTINUE WRITE (I02,80001) IVTNUM WRITE (I02,80331) 80331 FORMAT (5X,22HLAST LINE ON THIS PAGE) WRITE (I02,80330) 80330 FORMAT (1H1,31H THIS IS FIRST LINE ON PAGE) GO TO 1571 31560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1571 CONTINUE IVTNUM = 157 C C **** TEST 157 **** C TEST 157 - VERTICAL SPACING TEST C PRINT BLANK LINES C C IF (ICZERO) 31570, 1570, 31570 1570 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80340) 80340 FORMAT (1H , 10X) WRITE (I02,80341) 80341 FORMAT (41H THERE IS ONE BLANK LINE BEFORE THIS LINE) WRITE (I02,80342) WRITE (I02,80342) 80342 FORMAT (11H ) WRITE (I02,80343) 80343 FORMAT (43H THERE ARE TWO BLANK LINES BEFORE THIS LINE) WRITE (I02,80344) WRITE (I02,80344) WRITE (I02,80344) 80344 FORMAT (11X) WRITE (I02,80345) 80345 FORMAT (45H THERE ARE THREE BLANK LINES BEFORE THIS LINE) GO TO 1581 31570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1581 CONTINUE IVTNUM = 158 C C **** TEST 158 **** C TEST 158 - PRINT 54 CHARACTERS C C IF (ICZERO) 31580, 1580, 31580 1580 CONTINUE WRITE (I02,90002) WRITE (I02,80001)IVTNUM WRITE (I02,80351) 80351 FORMAT (33H NEXT LINE CONTAINS 54 CHARACTERS) WRITE (I02,80350) 80350 FORMAT(55H 123456789012345678901234567890123456789012345678901234) GO TO 1591 31580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1591 CONTINUE IVTNUM = 159 C C **** TEST 159 **** C TEST 159 - NUMERIC FIELD DESCRIPTOR I1 C IF (ICZERO) 31590, 1590, 31590 1590 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80361) 80361 FORMAT (1H ,10X,38HTHIS TEST PRINTS 3 UNDER I1 DESCRIPTOR) IVON01 = 3 WRITE (I02,80360) IVON01 80360 FORMAT (1H ,10X,I1) GO TO 1601 31590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1601 CONTINUE IVTNUM = 160 C C **** TEST 160 **** C TEST 160 - NUMERIC FIELD DESCRIPTOR I2 C IF (ICZERO) 31600, 1600, 31600 1600 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80371) 80371 FORMAT (11X,39HTHIS TEST PRINTS 15 UNDER I2 DESCRIPTOR) IVON01 = 15 WRITE (I02,80370) IVON01 80370 FORMAT (1H ,10X,I2) GO TO 1611 31600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1611 CONTINUE IVTNUM = 161 C C **** TEST 161 **** C TEST 161 - NUMERIC FIELD DESCRIPTOR I3 C IF (ICZERO) 31610, 1610, 31610 1610 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80381) 80381 FORMAT (11X,40HTHIS TEST PRINTS 291 UNDER I3 DESCRIPTOR) IVON01 = 291 WRITE (I02,80380) IVON01 80380 FORMAT (11X,I3) GO TO 1621 31610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1621 CONTINUE IVTNUM = 162 C C **** TEST 162 **** C TEST 162 - NUMERIC FIELD DESCRIPTOR I4 C IF (ICZERO) 31620, 1620, 31620 1620 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80391) 80391 FORMAT (11X,41HTHIS TEST PRINTS 4321 UNDER I4 DESCRIPTOR) IVON01 = 4321 WRITE (I02,80390) IVON01 80390 FORMAT (11X,I4) GO TO 1631 31620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1631 CONTINUE IVTNUM = 163 C C **** TEST 163 **** C TEST 163 - NUMERIC FIELD DESCRIPTOR I5 C IF (ICZERO) 31630, 1630, 31630 1630 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80401) 80401 FORMAT (1H ,10X,42HTHIS TEST PRINTS 12345 UNDER I5 DESCRIPTOR) IVON01 = 12345 WRITE (I02,80400) IVON01 80400 FORMAT (1H ,10X,I5) GO TO 1641 31630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1641 CONTINUE IVTNUM = 164 C C **** TEST 164 **** C TEST 164 - NUMERIC FIELD DESCRIPTORS, INTEGER CONVERSION C IF (ICZERO) 31640, 1640, 31640 1640 CONTINUE IVON01 = 1 IVON02 = 22 IVON03 = 333 IVON04 = 4444 IVON05 = 25555 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80411) 80411 FORMAT (3X,50HTHIS TEST PRINTS 1, 22, 333, 4444, AND 25555 UNDER) WRITE (I02,80412) 80412 FORMAT (10X,32H(10X,I1,3X,I2,3X,I3,3X,I4,3X,I5)) WRITE (I02,80410) IVON01, IVON02, IVON03, IVON04, IVON05 80410 FORMAT (10X,I1,3X,I2,3X,I3,3X,I4,3X,I5) GO TO 1651 31640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1651 CONTINUE IVTNUM = 165 C C **** TEST 165 **** C TEST 165 - HOLLERITH, NUMERIC AND X FIELD DESCRIPTORS C COMBINE HOLLERITH, NUMERIC AND X FIELD DESCRIPTORS IN C ONE FORMAT STATEMENT C IF (ICZERO) 31650, 1650, 31650 1650 CONTINUE IVON01=113 IVON02=8 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80421) 80421 FORMAT (10X,28HNEXT TWO LINES ARE IDENTICAL) WRITE (I02,80422) 80422 FORMAT (35H IVON01 = 113 IVON02 = 8) WRITE (I02,80420) IVON01, IVON02 80420 FORMAT (6X,8HIVON01 =,I5,3X,8HIVON02 =,I5) GO TO 1661 31650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1661 CONTINUE IVTNUM = 166 C C **** TEST 166 **** C TEST 166 - NUMERIC FIELD DESCRIPTOR I2 C PRINT NEGATIVE INTEGER C IF (ICZERO) 31660, 1660, 31660 1660 CONTINUE IVON01 = -1 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80431) 80431 FORMAT (11X,39HTHIS TEST PRINTS -1 UNDER I2 DESCRIPTOR) WRITE (I02,80430) IVON01 80430 FORMAT (11X,I2) GO TO 1671 31660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1671 CONTINUE IVTNUM = 167 C C **** TEST 167 **** C TEST 167 - NUMERIC FIELD DESCRIPTOR I3 C PRINT NEGATIVE INTEGER C IF (ICZERO) 31670, 1670, 31670 1670 CONTINUE IVON01 = -22 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80441) 80441 FORMAT (11X,40HTHIS TEST PRINTS -22 UNDER I3 DESCRIPTOR) WRITE (I02,80440) IVON01 80440 FORMAT (11X,I3) GO TO 1681 31670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1681 CONTINUE IVTNUM = 168 C C **** TEST 168 **** C TEST 168 - NUMERIC FIELD DESCRIPTOR I4 C PRINT NEGATIVE INTEGER C IF (ICZERO) 31680, 1680, 31680 1680 CONTINUE IVON01 = -333 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80451) 80451 FORMAT (11X,41HTHIS TEST PRINTS -333 UNDER I4 DESCRIPTOR) WRITE (I02,80450) IVON01 80450 FORMAT (11X,I4) GO TO 1691 31680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1691 CONTINUE IVTNUM = 169 C C **** TEST 169 **** C TEST 169 - NUMERIC FIELD DESCRIPTOR I5 C PRINT NEGATIVE INTEGER C IF (ICZERO) 31690, 1690, 31690 1690 CONTINUE IVON01 = -4444 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80461) 80461 FORMAT (11X,42HTHIS TEST PRINTS -4444 UNDER I5 DESCRIPTOR) WRITE (I02,80460) IVON01 80460 FORMAT (11X,I5) GO TO 1701 31690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1701 CONTINUE IVTNUM = 170 C C **** TEST 170 **** C TEST 170 - NUMERIC FIELD DESCRIPTOR I6 C PRINT NEGATIVE INTEGER C IF (ICZERO) 31700, 1700, 31700 1700 CONTINUE IVON01 = -15555 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80471) 80471 FORMAT (11X,43HTHIS TEST PRINTS -15555 UNDER DESCRIPTOR I6) WRITE (I02,80470) IVON01 80470 FORMAT (11X,I6) GO TO 1711 31700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1711 CONTINUE IVTNUM = 171 C C **** TEST 171 **** C TEST 171 - NUMERIC FIELD DESCRIPTORS, INTEGER CONVERSION C PRINT NEGATIVE INTEGERS C IF (ICZERO) 31710, 1710, 31710 1710 CONTINUE IVON01 = -9 IVON02 = -88 IVON03 = -777 IVON04 = -6666 IVON05 = -25555 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80481) 80481 FORMAT (8X,49HTHIS TEST PRINTS -9, -88, -777, -6666, AND -25555) WRITE (I02,80482) 80482 FORMAT (11X,43HUNDER FORMAT 10X,I2,3X,I3,3X,I4,3X,I5,3X,I6) WRITE (I02,80480) IVON01,IVON02,IVON03,IVON04,IVON05 80480 FORMAT (10X,I2,3X,I3,3X,I4,3X,I5,3X,I6) GO TO 1721 31710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1721 CONTINUE IVTNUM = 172 C C **** TEST 172 **** C TEST 172 - NUMERIC FIELD DESCRIPTOR I5 C MIX POSITIVE AND NEGATIVE INTEGER OUTPUT IN ONE FORMAT C STATEMENT ALL UNDER I5 DESCRIPTOR C IF (ICZERO) 31720, 1720, 31720 1720 CONTINUE IVON01 =5 IVON02 = -54 IVON03 = 543 IVON04 = -5432 IVON05=32000 WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,80491) 80491 FORMAT (18X,46HTHIS TEST PRINTS 5, -54, 543, -5432, AND 32000) WRITE (I02,80492) 80492 FORMAT (11X,33HUNDER I5 NUMERIC FIELD DESCRIPTOR) WRITE (I02,80490) IVON01,IVON02,IVON03,IVON04,IVON05 80490 FORMAT (11X,I5,3X,I5,3X,I5,3X,I5,3X,I5) GO TO 1731 31720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1731 CONTINUE IVTNUM = 173 C C **** TEST 173 **** C TEST 173 - VERTICAL SPACING TEST USING THE 1H0 AS A DOUBLE C SPACE BEFORE PRINT ( ADVANCE TWO LINES BEFORE WRITING ). THE 0 C AS A CARRIAGE CONTROL CHARACTER IS USED WITH THE BLANK CHARACTER C TO GET AN ODD NUMBER OF LINES TO ADVANCE BEFORE WRITING. C IF (ICZERO) 31730, 1730, 31730 1730 CONTINUE WRITE (I02,90002) WRITE (I02,80001) IVTNUM WRITE (I02,81730) 81730 FORMAT (1H , 10X) WRITE (I02,81731) 81731 FORMAT (41H THERE IS ONE BLANK LINE BEFORE THIS LINE) WRITE ( I02, 81732 ) 81732 FORMAT ( 1H0,10X) WRITE ( I02, 81733 ) 81733 FORMAT (43H THERE ARE TWO BLANK LINES BEFORE THIS LINE) WRITE ( I02, 81730 ) WRITE ( I02, 81732 ) WRITE ( I02, 81735 ) 81735 FORMAT (45H THERE ARE THREE BLANK LINES BEFORE THIS LINE) WRITE ( I02, 81732 ) WRITE ( I02, 81732 ) WRITE ( I02, 81736 ) 81736 FORMAT (45H THERE ARE FOUR BLANK LINES BEFORE THIS LINE) GO TO 1741 31730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1741 CONTINUE IVTNUM = 174 C C **** TEST 174 **** C TEST 174 - VERTICAL SPACING TEST USING THE + CHARACTER TO C SUPPRESS ADVANCING BEFORE THE PRINT AND THIS SHOULD CAUSE TWO AND C THEN THREE SUCCESSIVE LINES TO OVERPRINT C IF (ICZERO) 31740, 1740, 31740 1740 CONTINUE WRITE ( I02, 90002 ) WRITE ( I02, 80001 ) IVTNUM WRITE ( I02, 81740 ) 81740 FORMAT ( 1H ) WRITE ( I02, 81741 ) 81741 FORMAT ( 1H ,10X, 19H1ST LINE - AABBCCDD) WRITE ( I02, 81742 ) 81742 FORMAT ( 1H+, 25X, 30HWWXXYYZZ OVERPRINTS - 2ND LINE) WRITE ( I02, 81743 ) 81743 FORMAT ( /////1H ) C SKIP DOWN A FEW LINES TO GET SET - OK AWAY WE GO.. WRITE ( I02, 81740 ) WRITE ( I02, 81744 ) 81744 FORMAT ( 1H , 10X, 29H11 44 1ST LINE) WRITE ( I02, 81745 ) 81745 FORMAT ( 1H+, 10X, 20H 22 55 2ND) WRITE ( I02, 81746 ) 81746 FORMAT ( 1H+, 10X, 24H 33 66 3RD) GO TO 1751 31740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1751 CONTINUE IVTNUM = 175 C C **** TEST 175 **** C TEST 175 - NUMERIC FIELD DESCRIPTOR F3.0 C IF (ICZERO) 31750, 1750, 31750 1750 CONTINUE WRITE ( I02, 90002 ) WRITE ( I02, 80001 ) IVTNUM WRITE ( I02, 81751 ) 81751 FORMAT (1H ,10X,42HTHIS TESTS PRINTS 3. UNDER F3.0 DESCRIPTOR) RVON01 = 3. WRITE ( I02, 81752 ) RVON01 81752 FORMAT ( 1H ,10X, F3.0 ) GO TO 1761 31750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1761 CONTINUE IVTNUM = 176 C C **** TEST 176 **** C TEST 176 - SIGNED NUMERIC FIELD DESCRIPTOR F4.0 C IF (ICZERO) 31760, 1760, 31760 1760 CONTINUE WRITE ( I02, 90002 ) WRITE ( I02, 80001 ) IVTNUM WRITE ( I02, 81761 ) 81761 FORMAT ( 1H ,10X,43HTHIS TEST PRINTS -15. WITH F4.0 DESCRIPTOR) RVON01 = -15. WRITE ( I02, 81762 ) RVON01 81762 FORMAT ( 1H ,10X, F4.0) GO TO 1771 31760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1771 CONTINUE IVTNUM = 177 C C **** TEST 177 **** C TEST 177 - SIGNED NUMERIC FIELD DESCRIPTOR E12.5 C IF (ICZERO) 31770, 1770, 31770 1770 CONTINUE WRITE ( I02, 90002 ) WRITE ( I02, 80001 ) IVTNUM WRITE ( I02, 81771 ) 81771 FORMAT ( 1H , 10X,41HTHIS TEST PRINTS -0.12345E+03 USING E12.5) RVON01 = -123.45 WRITE ( I02, 81772 ) RVON01 81772 FORMAT ( 1H , 10X, E12.5 ) GO TO 1781 31770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM 1781 CONTINUE C C WRITE PAGE FOOTINGS 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90007) 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 FORMAT STATEMENTS FOR THIS ROUTINE 80001 FORMAT (10X,5HTEST ,I5) 80003 FORMAT ( 1H ,4X,I5,7X,7HDELETED) 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM109) END *END-OF,FM109 FM110.f 480976104 170 2 100666 26302 ` *HEADER,FORTR,FM110 *FILES1,FORTR,FM110,XX C*********************************************************************** C***** FORTRAN 77 C***** FM110 IOFMT - (350) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REFS C***** TO TEST ADDITIONAL FEATURES OF READ AND WRITE 12.8 C***** STATEMENTS, FORMATTED RECORDS AND FORMAT STATEMENTS 12.1.1 C***** FOR INTEGER AND REAL DATA TYPES C***** RESTRICTIONS OBSERVED C***** * ALL FORMAT STATEMENTS ARE LABELED 13.1.1 C***** * H AND X DESCRIPTORS ARE NEVER REPEATED 13.2.1 C***** * FOR W.D DESCRIPTORS, D IS ALWAYS SPECIFIED AND C***** W IS EQUAL TO OR GREATER THAN D C***** * FIELD WIDTH IS NEVER ZERO C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION C***** * ITEMS IN I/O LIST CORRESPOND TO EDIT DESCRIPTORS C***** * NEGATIVE OUTPUT VALUES ARE SIGNED 13.5.9 C***** * AN H EDIT DESCRIPTOR IS NEVER USED ON INPUT 13.5.2 C***** * IN THE INPUT FIELD, FOR THE IW EDIT DESCRIPTOR 13.5.9.1 C***** THE CHARACTER STRING MUST BE AN OPTIONALLY SIGNED C***** INTEGER CONSTANT CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C INPUT DATA TO THIS SEGMENT CONSISTS OF 40 CARD IMAGES IN COL. 1 - 80 C COLS. 22 25 31 34-35 40-43 55 67 69 74-76 CARD 1 . . . 0. E+00 + + . E00 C COLS. 16 31 33 42-45 50 59-60 CARD 2 + + . D+00 . D0 C COLS. 1-----------14 18-----26 28-------38 CARD 3 1.23456987654. +1.234E-0 -98.7654E+0 C COLS 1---5 CARDS 4,5,6,7,8 12345 C COLS. 1-3 CARDS 9,10,11,12 1.1 C COLS. 1------------------------------------------------------58 CARD 13 +0.339567E+02 CARD 14 + .339567+2 CARD 15 + 3.395670E1 CARD 16 0.96295134244D+04 CARD 17 .96295134244D04 CARD 18 0.96295134244+4 CARD 19 +.96295134244D4 CARD 20 31.23+0.14E+04+0.2D+02 CARD 21 31.23 .14D+4 +.2+2 CARD 22 -0.13579E+054444 CARD 23 4444 CARD 24 4444 CARD 25 4444 CARD 26 4444 CARD 27 -333 5.555+0.4545E-04 CARD 28 -6.666 .9989E+12 CARD 29 7.77-0.747E-02 +0.549E022 CARD 30 +0.662E-00 0.468-1011 CARD 31 0.59542D+04-44.6666-0.1234560000D-03 CARD 32 54.9327-0.1395624534D+00 CARD 33 65432.1 CARD 34 +0.848E+03 .848E3 + .1290D7+0.129D+07 0.412D21 CARD 35 22222222222222222222222222222222222222222222222222 CARD 36 -.987E0-0.987E+00 -.987D0 CARD 37 5 5 CARD 38 987654 8647.86 987.654 CARD 39 1.2345E0 1.2345 1234.5 CARD 40 12345. CARD COLS. NOT MENTIONED ARE BLANK C***** C***** S P E C I F I C A T I O N S SEGMENT 350 C***** REAL A1S(5),A2S(2,2),A3S(3,3,3),AC1S(25),AC2S(5,6) DIMENSION IAC1I(5),IAC2I(2,7),EP1S(33) INTEGER MCA3I(2,3,3) REAL MVS C CHARACTER*80 IDATA C***** IDATA USED BY TEST 3 TO BYPASS CARDS 4-21 TO DELETE TEST C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 IVTOTL = 11 ZPROG='FM110' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** ALL VARIABLES AND ARRAY ELEMENTS USED IN THIS SEGMENT C***** ARE FIRST SET TO A NON-ZERO VALUE C***** C***** HEADER FOR SEGMENT 350 WRITTEN 35000 FORMAT (//2X,38HIOFMT - (350) ADDITIONAL FORMATTED I/O //16X, 1 14HDATA TRANSFERS,//2X, 24HSUBSET REFS - 12.8 13.) WRITE (NUVI,35000) C***** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** JACVI = 11111 IAC1I(1) = -2345 IAC2I(1,1) = 9999 MCA3I(1,1,1) = 2 ACVS = 1.2 BCVS = -.34E-3 A1S(1) = 34.56 A1S(2) = 456.789E+02 A2S(1,1) = -7899.3 A2S(2,1) = +9876.543E-01 A3S(1,1,1) = .543 A3S(2,1,1) = 4.33E+1 MVS = +2.22E+01 A1S(3) = -.33456E-01 A2S(1,2) = 9987.76E+2 A3S(3,1,1) = 44.E-2 C**** C CT001* TEST 1 IVTNUM = 1 C****** C***** TEST THAT BLANK INPUT FIELDS ARE TREATED AS ZERO 13.5.9 C***** I, E, and F EDIT DESCRIPTORS ARE TESTED C***** CARDS 1 AND 2 C***** 35001 FORMAT (4(I5), 4(F3.1), 4(F11.4)/ 4(E15.8)) READ (IRVI,35001) JACVI, IAC1I(1), IAC2I(1,1), MCA3I(1,1,1), ACVS, 1 A1S(1), A2S(1,1), A3S(1,1,1), BCVS, A1S(2), A2S(2,1), 2 A3S(2,1,1), MVS, A1S(3), A2S(1,2), A3S(3,1,1) C**** TO DELETE TEST INSERT THE FOLLOWING CODE: C**** IVDELE=IVDELE+1 C**** WRITE (NUVI,80000) IVTNUM C**** COMMENT OUT FOLLOWING CODE UNTIL NEXT TEST IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM 70010 FORMAT (/49X,27HTHIS TEST CONTAINS 4 GROUPS, 1 /49X,26HALL ANSWERS SHOULD BE ZERO) C************************** WRITE (NUVI,70010) 35002 FORMAT (1H ,16X,10HCOMPUTED: ,22X, 1 25H4 COMPUTED LINES EXPECTED,4(/23X,I6), 2 /17X,10HCOMPUTED: ,22X,25H4 COMPUTED LINES EXPECTED, 3 4(/23X,F8.1),/17X,10HCOMPUTED: ,22X, 4 25H4 COMPUTED LINES EXPECTED,4(/23X,F12.5), 5 /17X,10HCOMPUTED: ,22X,25H4 COMPUTED LINES EXPECTED, 6 4(/23X,E12.1)) WRITE (NUVI,35002) JACVI, IAC1I(1), IAC2I(1,1), MCA3I(1,1,1),ACVS, 1 A1S(1), A2S(1,1), A3S(1,1,1), BCVS, A1S(2), A2S(2,1), 2 A3S(2,1,1), MVS, A1S(3), A2S(1,2), A3S(3,1,1) C***** CT002* TEST 2 IVTNUM = 2 C***** TEST THAT DECIMAL POINTS APPEARING IN INPUT FIELDS 13.5.9.2.1 C***** OVERRIDE THE SPECIFICATIONS SUPPLIED BY E AND F C***** EDIT DESCRIPTORS 70020 FORMAT (1H ,48X,27HTHIS TEST CONTAINS 4 GROUPS) CMAVS = 1.23456 CMBVS = 987654. CMEVS = 0.1234E+01 CMFVS = -0.987654E+02 C***** CARD 3 35004 FORMAT (2(F7.3), 2(E12.5)) READ (IRVI,35004) ACVS, BCVS, FFCVS, GGCVS 35005 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 2(/23X,F12.5),/17X,10HCORRECT: ,8H 1.23456, 2 //17X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 3 2(/23X,F13.1),/17X,10HCORRECT: ,9H 987654.0, 4 //17X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 5 2(/23X,E15.4),/17X,10HCORRECT: ,11H 0.1234E+01,4H OR , 6 10H .1234+001,//17X,10HCOMPUTED: ,22X, 7 25H2 COMPUTED LINES EXPECTED,2(/23X,E17.6), 8 /17X,10HCORRECT: ,13H-0.987654E+02,4H OR ,12H-.987654+002) C**** SEE TEST 1 TO DELETE TEST (ENTER CODE HERE) IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM WRITE (NUVI,70020) WRITE (NUVI,35005) CMAVS, ACVS, CMBVS, BCVS, CMEVS, FFCVS, 1 CMFVS, GGCVS C***** CT003* TEST 3 IVTNUM=3 C***** TEST COMPLETE FORMAT RESCAN 13.3 C***** WHEN ADDITIONAL ITEMS REMAIN IN AN I/O LIST C***** AND THE LAST RIGHT PARENTHESIS HAS BEEN REACHED C***** IN THE CORRESPONDING FORMAT STATEMENT JACVI = +12345 KBCVI = 3 CMAVS = 1.1 CMBVS = 1.23 CMEVS = 33.9567 CMGVS = 1.4E+03 AVS = .962951E+4 BVS = 2.0E1 C***** CARDS 4, 5, 6, 7, 8 70030 FORMAT (/49X,27HTHIS TEST CONTAINS 5 GROUPS) C*********************** C**** TO DELETE TEST 3 - CARDS 4 THRU 21 MUST BE BYPASS C**** USE THE FOLLOWING CODE: C**** IVDELE=IVDELE+1 C**** WRITE (NUVI,80000) IVTNUM C**** DO 0031 IPASS=1,18 C0032 FORMAT (A80) C**** READ (IRVI,0032) IDATA C0031 CONTINUE C**** COMMENT OUT REMAINING CODE UNTIL NEXT TEST C************************* IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM WRITE (NUVI,70030) 35007 FORMAT (I5) READ (IRVI,35007) IAC1I 3509 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H6 COMPUTED LINES EXPECTED) WRITE (NUVI,3509) 35009 FORMAT(23X,I10) WRITE(NUVI,35009)JACVI,IAC1I 35008 FORMAT (1H ,16X,10HC0RRECT: ,6H 12345) WRITE(NUVI,35008) C***** CARDS 9, 10, 11, 12 35010 FORMAT(F3.1) READ (IRVI,35010) A2S 3501 FORMAT (/17X,10HCOMPUTED: ,22X,25H5 COMPUTED LINES EXPECTED) WRITE (NUVI,3501) 35012 FORMAT(23X,F8.1) WRITE(NUVI,35012)CMAVS,A2S 35011 FORMAT (1H ,16X,10HC0RRECT: ,4H 1.1) WRITE (NUVI,35011) C***** CARDS 13, 14, 15 35013 FORMAT (E13.6) READ (IRVI,35013) A1S(1), HHCVS, A1S(2) 3504 FORMAT (/17X,10HCOMPUTED: ,22X,25H4 COMPUTED LINES EXPECTED) WRITE (NUVI,3504) 35015 FORMAT(23X,E17.6) WRITE(NUVI,35015) CMEVS, A1S(1), HHCVS, A1S(2) 35014 FORMAT (1H ,16X,10HC0RRECT: ,13H 0.339567E+02,4H OR , 1 12H .339567+002) WRITE (NUVI,35014) C***** CARDS 16, 17, 18, 19 WITH D EXPONENTS 35016 FORMAT (F18.11/E18.11) READ (IRVI,35016) A2S 3507 FORMAT (/17X,10HCOMPUTED: ,22X,25H5 COMPUTED LINES EXPECTED) WRITE (NUVI,3507) 35018 FORMAT (23X,E17.6) WRITE (NUVI,35018) AVS, A2S 35017 FORMAT (1H ,16X,10HCORRECT: ,13H 0.962951E+04, 1 4H OR ,12H .962951+004) WRITE (NUVI,35017) C***** CARDS 20, 21 35019 FORMAT (I1,F4.2,E9.2,F8.1) READ (IRVI,35019) LCCVI, DCVS, AC2S(5,6), A3S(1,2,2), MDCVI, 1 FFCVS, GGCVS, AAVS 70033 FORMAT (/17X,10HCOMPUTED: ,22X,25H3 COMPUTED LINES EXPECTED) WRITE (NUVI,70033) 35021 FORMAT (23X,I6, F6.2, E10.2, E9.1) WRITE (NUVI,35021) KBCVI, CMBVS, CMGVS, BVS, LCCVI, DCVS, 1 AC2S(5,6), A3S(1,2,2), MDCVI, FFCVS, GGCVS, AAVS 35020 FORMAT (1H ,16X,10HCORRECT: ,22X, 1 26H2 CORRECT ANSWERS POSSIBLE, 2 /28X,26H3 1.23 0.14E+04 0.2E+02, 3 /28X,26H3 1.23 0.14+004 0.2+002) WRITE (NUVI,35020) C********************************** CT004* TEST 4 IVTNUM=4 C***** C************************************ C***** TEST THAT FORMAT CONTROL PASSES TO THE GROUP C***** ENCLOSED BY THE LAST PRECEDING RIGHT PARENTHESIS C***** WHEN THE I/O LIST CONTAINS MORE ELEMENTS THAN C***** THE NUMBER OF DESCRIPTORS IN THE FORMAT STATEMENT C*************************************** JACVI = +4444 KBCVI = -333 LCCVI = 22 MDCVI = 11 ACVS = 5.555 BCVS = -6.666 CCVS = +7.77 DCVS = 65432.1 CMAVS = -0.13579E+5 CMBVS = 0.4545E-04 CMCVS = 0.9989E12 CMDVS = -0.747E-2 CMEVS = +0.549E+00 CMFVS = 0.662E-0 CMGVS = 0.468E-10 RAVS = +59.542E02 RBVS = -0.01234560E-2 RCVS = -1395624534.E-10 RDVS = +129.E4 REVS = 4.12E+20 FFCVS = -44.6666 GGCVS = +.549327E+2 HHCVS = 848. MVS = -.987 C***** CARDS 22, 23, 24, 25, 26 35022 FORMAT ( E12.5, (I4)) C***** SEE NOTES TEST1 & TEST 3 TO BYPASS TEST C***** CARDS 22 THRU 26 MUST BE BYPASSED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM WRITE (NUVI,70040) READ (IRVI,35022) A1S(2), IAC1I 70040 FORMAT (1H ,48X,27HTHIS TEST CONTAINS 2 GROUPS) 35023 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 2(/23X,E16.5), 2 /17X,10HCORRECT: ,12H-0.13579E+05,4H OR ,12H -.13579+005, 3 //17X,10HCOMPUTED: ,22X,25H6 COMPUTED LINES EXPECTED, 4 /(23X,I9)) 70041 FORMAT (1H ,16X,10HCORRECT: ,5H 4444) WRITE (NUVI,35023) CMAVS, A1S(2), JACVI, IAC1I WRITE (NUVI,70041) CT005* TEST 5 C***** IVTNUM = 5 C***** CARDS 27, 28 C***** SEE NOTES TEST 1 & TEST 3 TO DELETE TEST C***** CARDS 27,28 SHOULD BE BYPASSED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM WRITE (NUVI,70050) 70050 FORMAT (1H ,48X,27HTHIS TEST CONTAINS 5 GROUPS) 35025 FORMAT (I4, (F6.3), E11.4) READ (IRVI,35025) MRRVI, AC1S(1), EP1S(1), A3S(1,1,1), AC2S(2,2) 35026 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 2(/23X,I8),/17X,10HCORRECT: ,4H-333,//17X,10HCOMPUTED: , 2 22X,25H2 COMPUTED LINES EXPECTED,2(/23X,F10.3), 3 /17X,10HCORRECT: ,6H 5.555,//17X,10HCOMPUTED: , 4 22X,25H2 COMPUTED LINES EXPECTED,2(/23X,E15.4), 5 /17X,10HCORRECT: ,11H 0.4545E-04,4H OR ,9H.4545-004,//17X, 6 10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED,2(/23X,F10.3), 7 /17X,10HCORRECT: ,6H-6.666,//17X, 8 10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED,2(/23X,E15.4), 9 /17X,10HCORRECT: ,11H 0.9989E+12,4H OR ,9H.9989+012) WRITE (NUVI,35026) KBCVI, MRRVI, ACVS, AC1S(1), CMBVS, EP1S(1), 1 BCVS, A3S(1,1,1),CMCVS,AC2S(2,2) CT006* TEST 6 C***** CARDS 29, 30 IVTNUM = 6 C***** SEE NOTES TEST 1 & 3 TO DELETE TEST C***** CARDS 29 & 30 MUST BE BYPASSED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM 70060 FORMAT (1H ,48X,27HTHIS TEST CONTAINS 7 GROUPS) WRITE (NUVI,70060) 35027 FORMAT (F4.2, (2(E10.3)), I2) READ (IRVI,35027) A2S(2,2), A3S(2,1,1), EP1S(2), MCA3I(1,1,1), 1 BVS, AC2S(2,1), NECVI 35028 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 2(/23X,F9.2),/17X,10HCORRECT: ,5H 7.77,//17X,10HCOMPUTED: , 222X,25H2 COMPUTED LINES EXPECTED,2(/23X,E14.3),/17X,10HCORRECT: , 310H-0.747E-02,4H OR ,9H-.747-002,//17X,10HCOMPUTED: ,22X, 425H2 COMPUTED LINES EXPECTED,2(/23X,E14.3),/17X,10HCORRECT: , 510H 0.549E+00,4H OR ,8H.549+000,//17X,10HCOMPUTED: ,22X, 625H2 COMPUTED LINES EXPECTED,2(/23X,I7),/17X,10HCORRECT: ,3H 22, 7//17X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 82(/23X,E14.3), /17X,10HCORRECT: ,10H 0.662E+00,4H OR ,8H.662+000) 75028 FORMAT (//17X,10HCOMPUTED: ,22X, 1 25H2 COMPUTED LINES EXPECTED,2(/23X,E14.3), 2 /17X,10HCORRECT: ,10H 0.468E-10,4H OR ,8H.468-010, 3 //17X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED,2(/23X,I7), 4 /17X,10HCORRECT: ,3H 11) WRITE (NUVI,35028) CCVS, A2S(2,2), CMDVS, A3S(2,1,1), CMEVS, 1 EP1S(2), LCCVI, MCA3I(1,1,1), CMFVS, BVS C WRITE (NUVI,75028) CMGVS,AC2S(2,1),MDCVI,NECVI C CT007* TEST 7 IVTNUM = 7 C***** CARDS 31, 32 C***** SEE NOTES TEST 1 & TEST 3 TO DELETE TEST C***** CARDS 31,& 32 SHOULD BE BYPASSED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM WRITE (NUVI,70070) 70070 FORMAT (1H ,48X,27HTHIS TEST CONTAINS 5 GROUPS) 35029 FORMAT (E12.5, (F8.4, E17.10)) READ (IRVI,35029) CAVS, EP1S(3), A1S(1), A2S(1,2), A2S(2,1) 35030 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 /(23X, E16.5)) 70071 FORMAT (/17X,10HCORRECT: ,12H 0.59542E+04,4H OR , 1 10H.59542+004) WRITE (NUVI,35030) RAVS, CAVS WRITE (NUVI,70071) 35031 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 2(/23X,F12.4),/17X,10HCORRECT: ,8H-44.6666, 2 //17X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 3 2(/23X,E17.6), 4 /17X,10HCORRECT: ,13H-0.123456E-03,4H OR ,12H-.123456-003, 5 //17X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 6 2(/23X,F12.4),/17X,10HCORRECT: ,8H 54.9327,//17X, 7 10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED,/(23X,E17.6)) C 70072 FORMAT (/17X,10HCORRECT: ,13H-0.139562E+00,4H OR , 1 12H-.139562+000) WRITE (NUVI,35031) FFCVS, EP1S(3), RBVS, A1S(1), GGCVS, A2S(1,2), 1 RCVS, A2S(2,1) WRITE (NUVI,70072) C**** CT008* TEST 8 IVTNUM = 8 C***** CARDS 33, 34, 35, 36 C***** SEE NOTES TEST 1 & TEST 3 TO DELETE TEST C***** CARDS 33 THRU 36 SHOULD BE BYPASSED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM WRITE (NUVI,70080) 70080 FORMAT (1H ,48X,27HTHIS TEST CONTAINS 5 GROUPS) C***** THIS READ CAUSES AN INPUT DATA CARD TO BE SKIPPED 35032 FORMAT( F7.1, (/2(E10.3), 2(E10.3)), E10.3) READ (IRVI,35032) CVS, A2S(2,1), A3S(1,2,2), A3S(1,1,1), 1 A3S(2,2,1), A2S(1,1), A3S(1,2,1), EP1S(4),A1S(2) 35033 FORMAT (1H ,16X,10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED, 1 2(/23X,F12.1),/17X,10HCORRECT: ,8H 65432.1,//17X, 2 10HCOMPUTED: ,22X,25H3 COMPUTED LINES EXPECTED,3(/23X,E14.3), 3 /17X,10HCORRECT: ,10H 0.848E+03,4H OR ,8H.848+003,//17X, 4 10HCOMPUTED: ,22X,25H3 COMPUTED LINES EXPECTED,3(/23X,E14.3), 5 /17X,10HCORRECT: ,10H 0.129E+07,4H OR ,8H.129+007,//17X, 6 10HCOMPUTED: ,22X,25H2 COMPUTED LINES EXPECTED,2(/23X,E14.3), 7 /17X,10HCORRECT: ,10H 0.412E+21,4H OR ,8H.412+021,//17X, 8 10HCOMPUTED: ,22X,25H4 COMPUTED LINES EXPECTED,4(/23X,E14.3), 9 /17X,10HCORRECT: ,10H-0.987E+00,4H OR ,9H-.987+000) WRITE (NUVI,35033) DCVS, CVS, HHCVS, A2S(2,1), A3S(1,2,2),RDVS, 1 A3S(1,1,1), A3S(2,2,1), REVS, A2S(1,1), 2 MVS, A3S(1,2,1), EP1S(4),A1S(2) CT009* TEST 9 IVTNUM = 9 C***** TEST FOR EMPTY FORMAT STATEMENT C***** SEE NOTES TEST 1 TO DELETE TEST IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM 35034 FORMAT (1H ,48X,22HEMPTY FORMAT ( ) WRITE, 1 //2X,34HTHE FOLLOWING LINE SHOULD BE BLANK) WRITE (NUVI,35034) 35035 FORMAT ( ) WRITE (NUVI,35035) 35036 FORMAT (2X,23H END EMPTY FORMAT TEST) WRITE (NUVI,35036) C***** POSITION INPUT TO INSURE CORRECT RECORD FOR NEXT TESTS 35037 IF (MRRVI - 5) 35038, 35039, 35038 C***** CARD 37 35038 READ (IRVI, 35025) MRRVI GO TO 35037 35039 CONTINUE CT010* TEST 10 IVTNUM = 10 C***** C***** ADDITIONAL SCALE FACTOR ON INPUT-OUTPUT 13.5.7 C***** CARD 38 IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM 35040 FORMAT (1PE10.3, -1PE10.2, E10.3) READ (IRVI,35040) A1S(3), A1S(4), A1S(5) C**** SEE NOTES TEST 1 TO DELETE TEST (INSERT CODE HERE) 35041 FORMAT (1H ,16X,10HCOMPUTED: , 1 E12.3, E12.4, E12.4, 2 /17X,10HCORRECT: ,22X,26H2 CORRECT ANSWERS POSSIBLE, 3 /30X,33H0.988E+02 0.8648E+05 0.9877E+04, 4 /30X,33H .988+002 .8648+005 .9877+004) WRITE(NUVI, 35041) A1S(3), A1S(4), A1S(5) CT011* TEST 11 IVTNUM = 11 C***** CARDS 39 & 40 C***** SCALE FACTOR HAS NO EFFECT ON FORMAT RESCAN OR F EDIT C***** DESCRIPTOR WITH INPUT DATA CONTAINING AN EXPONENT AAVS = .087654 BAVS = .87654 35042 FORMAT (-1P2F8.1, +1P, 2X,(F8.1)) READ (IRVI, 35042) AVS, BVS, CVS, DVS C**** SEE NOTES TEST 1 TO DELETE TEST IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM 35043 FORMAT (1H ,16X,10HCOMPUTED: ,22X, 1 25H3 COMPUTED LINES EXPECTED,/25X,F8.4, F8.3, F8.2, F8.1, 1P, 2 /26X, F5.4, 3X, 2P, F5.3, +3P, 1H , (23X,F6.2),3X) 5043 FORMAT (17X,10HCORRECT: ,22X,26H , 1 /25X,32H 1.2345 12.345 123.45 1234.5,/24X, 2 45H .8765 8.765 87.65/21X, 3 8H 876.54) WRITE (NUVI,35043) AVS,BVS,CVS,DVS,AAVS,AAVS,AAVS,BAVS WRITE (NUVI,5043) CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 350 STOP END *END-OF,FM110 FM111.f 480976106 170 2 100666 14987 ` *HEADER,FORTR,FM111 *FILES1,FORTR,FM111,XX C*********************************************************************** C***** FORTRAN 77 C***** FM111 IOFMTS - (353) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REFS C***** TO TEST ADDITIONAL FEATURES OF READ AND WRITE 12.8 C***** STATEMENTS, FORMATTED RECORDS AND FORMAT STATEMENTS 12.1.1 C***** FOR INTEGER AND REAL DATA TYPES C***** TO TEST CHARACTER CONSTANTS AS FORMAT SPECIFIERS. 13.1.2 C***** RESTRICTIONS OBSERVED C***** * H AND X DESCRIPTORS ARE NEVER REPEATED 13.2.1 C***** * FOR W.D DESCRIPTORS, D IS ALWAYS SPECIFIED AND C***** W IS EQUAL TO OR GREATER THAN D C***** * FIELD WIDTH IS NEVER ZERO C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION C***** * ITEMS IN I/O LIST CORRESPOND TO EDIT DESCRIPTORS C***** * NEGATIVE OUTPUT VALUES ARE SIGNED 13.5.9 C***** * AN H EDIT DESCRIPTOR IS NEVER USED ON INPUT 13.5.2 C***** * IN THE INPUT FIELD, FOR THE IW EDIT DESCRIPTOR 13.5.9.1 C***** THE CHARACTER STRING MUST BE AN OPTIONALLY SIGNED C***** INTEGER CONSTANT C***** GENERAL COMMENTS C***** PLUS SIGNS FOR INPUT FIELDS ARE USUALLY OMITTED 13.5.9 C INPUT DATA TO THIS SEGMENT CONSISTS OF 8 CARD IMAGES IN COL. 1 - 39 COL. 1-------------------------------------------46 CARD 1 111 2 2 3 3. 3E-1 44 5 5 6 . 67 . 78 8. 8E-1 CARD 2 9 9 CARD 3 2345 1 34512 45123 51234 CARD 4 2345 1 34512 45123 51234 CARD 5 CARD 6 246801357912345678901234 CARD 7 .10203040506070809010E+0233.33 CARD 8 1 2 3 4 5 6 C***** C***** S P E C I F I C A T I O N S SEGMENT 353 C***** INTEGER I2I(2,2), I3I(2,2,2), J3I(1,2,3) REAL A1S(5) CHARACTER*80 IDATA C***** C***** I N P U T - O U T P U T TAPE ASSIGNMENT STATEMENTS CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 C***** TOTAL NUMBER OF EXPECTED TEST IVTOTL =4 ZPROG='FM111' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** HEADER FORMAT STATEMENT WRITE(NUVI, 35300) 35300 FORMAT(/1X, 35HIOFMTS - (353) ADDITIONAL FORMATTED/16X, 1 14HDATA TRANSFERS,//2X, 2 32HSUBSET REFS 12.9.5.2 13.1 13.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C******************************************************* C**** TO DELETE A TEST USED CODE SHOWN IN TEST 1 * C**** REPLACE THE DELETE COMMENT WITH DELETE CODE * C******************************************************* CT001* TEST 1 C***** TEST VARIOUS COMBINATION OF BZ AND BN EDIT 13.5.8 C***** DESCRIPTORS, INCLUDING USING EACH AS A LEADING 13.5.9(1) C***** DESCRIPTOR, AND PRECEDING IW, EW.D, AND FW.D DESCRIPTORS. C***** BN AND BZ HAVE NO EFFECT ON OUTPUT. 13.5.8 C***** CARDS 1-2 C***** IVTNUM = 1 C**** TO DELETE TEST 1 - CARDS 1 THRU 5 MUST BE BYPASS C**** USE THE FOLLOWING CODE: C**** IVDELE=IVDELE+1 C**** WRITE (NUVI,80000) IVTNUM C**** DO 0031 IPASS=1,5 C0011 FORMAT (A80) C**** READ (IRVI,0011) IDATA C0031 CONTINUE C**** COMMENT OUT OUT FOLLOWING LINES UNTIL NEXT TEST C************************* IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM READ(IRVI, 35301)I2I(1,2), IVI, A1S(3), JVI, KVI, A1S(2), AVS, 1 A1S(1), I2I(1,1) 35301 FORMAT(BZ,(2I4, E10.1, BN, 2I4, F5.2, BZ, F5.2, BN, E10.1)) WRITE(NUVI, 35302)I2I(1,2), IVI, A1S(3), JVI, KVI, A1S(2), AVS, 1 A1S(1), I2I(1,1) C****************************TEST 1 ******************** 35302 FORMAT (1H ,10X,11HCOMPUTED: , 2I5, 1X, E10.5, BN, 2I5, F6.1, 1 BZ, F6.2, BN, 1X, E8.3, I5) 70010 FORMAT (1H ,10X,10HCORRECT: , 1 44H 1110 2020 .30303E-07 44 55 6.6 70.07, 2 14H .888E+01 99) WRITE (NUVI,70010) C***** CARDS 3-4 READ(IRVI, 35303) I3I(1,2,1), A1S(3), AVS, IVI, I2I(1,1), 1 JVI, BVS, A1S(2), (I3I(KVI,1,1), KVI=1,2) 35303 FORMAT(BZ, (I5, F5.0, BN, F5.2, 2I5)) C***************************************************************** WRITE(NUVI, 35304) I3I(1,2,1), A1S(3), AVS, IVI, I2I(1,1), 1 JVI, BVS, A1S(2), I3I(1,1,1), I3I(2,1,1) 35304 FORMAT ( /BN, 11X,11HCOMPUTED: , I5, F7.0, BZ, 1X, F5.2, 1 2(1X,I4),I5, F7.0, BZ, 1X, F5.2, 2(1X, I4)) 70011 FORMAT (1H ,10X,10HCORRECT: , 1 29H 23450 10345. 12.45 1235 1234, 2 28H 2345 1345. 12.45 1235 1234) WRITE (NUVI,70011) C**** CARD 5 CVS = -0.0044 READ(IRVI, 35305) IVI, AVS, A1S(2), JVI, BVS 35305 FORMAT(BZ, I5, F5.1, BN, F5.1, I5, BZ, F5.1, I5) C************************************************************** WRITE(NUVI, 35306) IVI, AVS, A1S(2), JVI, BVS, CVS, CVS 35306 FORMAT (/11X,11HCOMPUTED: , 1 I5, 2(3X, F2.1), I5, 3X, E5.1E1, 3X, F2.1, 3X, E6.1E1) 70012 FORMAT (1H ,10X,10HCORRECT: , 1 42H 0 .0 .0 0 .0E+0 .0 .0E+0/) WRITE (NUVI,70012) C***** CT002* TEST 2 C***** TEST CASES WHERE THE NUMBER OF CHARACTERS TO BE 13.5.9(3) C***** OUTPUT EXCEEDS THE SPECIFIED OUTPUT FIELD WIDTH, C***** OR AN EXPONENT EXCEEDS ITS SPECIFIED LENGTH. C*************************************** IVTNUM = 2 C***** SEE NOTES TEST 1 TO DELETE TEST (NO READS REQUIRED) IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM AVS = 0.12345E+10 C********************************************************* WRITE(NUVI, 35307) AVS, AVS, AVS, AVS, AVS 35307 FORMAT (1H ,10X,10HCOMPUTED: , 1 E9.5E1, 1X, E10.5E2, 1X, E11.5E3,1X,E11.5E4,1X,E10.5) 70020 FORMAT (1H ,10X,10HCORRECT: , 1 44H********* .12345E+10 .12345E+010 ***********, 2 11H .12345E+10/) WRITE (NUVI,70020) CT003* TEST 3 C***** C***** - TEST THAT FW.D AND EW.D MAY HAVE MORE DIGITS 13.5.9(2) C***** ON INPUT THAN THE PROCESSOR CAN USE. C***** - READ IN AN ARRAY USING AN IMPLIED DO-LOOP, AND 12.8.2.3 C***** AND TEST VALUE OF THE IMPLIED DO-PARAMETER. 11.10 C***** - USE AS A FORMAT AN INTEGER VARIABLE WHOSE VALUE 10.3 C***** IS ASSIGNED USING AN ASSIGNMENT STATEMENT. 12.4(2) C***** - TEST THAT ON INPUT, THE X-EDIT DESCRIPTOR MAY 13.5.3 C***** SPECIFY A POSITION BEYOND COLUMN 80 IF THERE ARE C***** NO MORE ITEMS IN THE I/O LIST. C***** IVTNUM = 3 C***** CARDS 6-7 C***** SEE NOTES TEST 1 TO DELETE TEST C***** CARDS 6 & 7 MUST BE BYPASSED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM ASSIGN 35308 TO JVI 35308 FORMAT(2F5.2, F14.0 / E25.20, F5.2, 51X) READ(IRVI, JVI) (A1S(IVI), IVI=1,5) C************************************************************* ASSIGN 35309 TO JVI 35309 FORMAT (11X,10HCOMPUTED: ,I5,1X,F5.2) 70030 FORMAT (1H ,10X,10HCORRECT: , 1 11H 6 33.33/) WRITE(NUVI, JVI) IVI, A1S(5) WRITE (NUVI,70030) C***** CT004* TEST 4 C***** - TEST NESTING OF 3 LEVELS OF PARENTHESES WITHIN A C***** FORMAT STATEMENT. C***** - TEST DIFFERENT FORMS OF CHARACTER CONSTANTS USED 12.4(2) C***** AS A FORMAT SPECIFIER, INCLUDING BLANKS BEFORE 13.1.2 C***** THE FIRST PARENTHESIS, AND CHARCTERS AFTER THE C***** LAST PARENTHESIS. C***** - 2 CONSECUTIVE APOSTROPHES IN A H-EDIT DESCRIPTOR 13.5.2 C***** CARD 8 IVTNUM = 4 C***** SEE NOTES TEST 1 TO DELETE TEST C***** NO READS REQUIRED IVINSP=IVINSP+1 WRITE (NUVI,80004) IVTNUM READ(IRVI, ' (3(1(2(I5))))') 1 (((J3I(IVI,JVI,KVI),IVI=1,1),JVI=1,2),KVI=1,3) C*************************************************** WRITE(NUVI, 1 '(/11X, 10HCOMPUTED: ,4(2X, I3) )JUNK') 2 (J3I(1,2,IVI),IVI=1,3) WRITE (NUVI, 1 '(11X,10HCORRECT: , 15H 2 4 6) ') WRITE (NUVI, 1 '(/11X,9HCOMPUTED:,21H ''THAT''S ALL FOR NOW'')') 70040 FORMAT (11X,10HCORRECT: , 1 20H'THAT'S ALL FOR NOW') WRITE (NUVI,70040) C***** 0041 CONTINUE C***** END OF TEST SEGMENT 353 CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *END-OF,FM111 FM200.f 480976109 170 2 100666 15448 ` *HEADER,FORTR,FM200 *FILES1,FORTR,FM200,X PROGRAM FM200 C C C THIS ROUTINE IS THE FIRST AUDIT PROGRAM TO CONTAIN A PROGRAM C STATEMENT. THE FOLLOWING FEATURES FROM CHAPTER 3., CHARACTERS, C LINES AND EXECUTION SEQUENCE ARE TESTED. C C (1) ASTERISK (*) IN COLUMN 1 TO DESIGNATE A COMMENT LINE. C (2) USE OF NON-FORTRAN CHARACTERS WITHIN A COMMENT LINE. C (3) STATEMENT LABELS ON NONEXECUTABLE STATEMENTS. C (4) DIGIT 0 IN COLUMN 6 OF AN INITIAL LINE. C (5) CONTINUATION LINES - MAXIMUM OF NINE CONTINUATION LINES C (660 CHARACTERS). C (6) BLANK CHARACTERS WITHIN STATEMENTS. C (7) BLANK COMMENT LINE, BLANK CHARACTERS IN COLUMNS 1-72. C C THE BASIC FEATURES OF SUBSET FORTRAN WHICH ARE TESTED BY THIS C PROGRAM ARE USED THROUGHOUT THE REST OF THE SUBSET ROUTINES. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 3.1.6, BLANK CHARACTER C SECTION 3.2.1, COMMENT LINE C SECTION 3.2.2, INITIAL LINE C SECTION 3.2.3, CONTINUATION LINE C SECTION 3.3, STATEMENTS C SECTION 3.4, STATEMENT LABEL C SECTION 14.1, PROGRAM STATEMENT C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C 12 INTEGER XVTN01 22 DATA IVON02/5/ C THE PRECEDING STATEMENTS ARE NONEXECUTABLE STATEMENTS WHICH C CONTAIN STATEMENT LABELS. THEY ARE REFERENCED IN TESTS 1 AND 2. 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 1 AND TEST 2 REFERENCE VARIABLES DEFINED IN NONEXECUTABLE C STATEMENTS WHICH CONTAIN STATEMENT LABELS. THE NONEXECUTABLE C STATEMENTS WHICH APPEAR AT THE BEGINNING OF THE PROGRAM ARE C 12 INTEGER XVTN01 C 22 DATA IVON02/5/ C C REFERENCE X3.9-1977, SECTION 3.4, STATEMENT LABELS C C C **** FCVS PROGRAM 200 - TEST 001 **** C C TEST 001 ASSIGNS AN INTEGER VALUE TO XVTN01 WHICH WAS SPECIFIED C AS TYPE INTEGER IN AN INTEGER STATEMENT CONTAINING A STATEMENT C LABEL. C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 XVTN01 = 1 IVCOMP = XVTN01 IVCORR = 1 40010 IF (IVCOMP - 1) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 200 - TEST 002 **** C C TEST 002 CHECKS THE VALUE WHICH WAS ASSIGNED TO IVON02 BY A C DATA STATEMENT WITH A STATEMENT LABEL. C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 0 IVCOMP = IVON02 IVCORR = 5 40020 IF (IVCOMP - 5) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C TEST 3 THROUGH TEST 5 USE AN ASTERISK (*) IN COLUMN 1 TO C DENOTE A COMMENT LINE. C C REFERENCE X3.9-1977, SECTION 3.2.1, COMMENT LINE C C C **** FCVS PROGRAM 200 - TEST 003 **** C C GO TO STATEMENT IN ASTERISK COMMENT LINE. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 1 * GO TO 20030 IVCOMP = 0 IVCORR = 0 40030 IF (IVCOMP) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 200 - TEST 004 **** C C SEVERAL * COMMENT LINES INTERMIXED WITH EXECUTABLE STATEMENTS. C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 * THE * COMMENT LINE IS THE SAME AS A C COMMENT LINE. IVCOMP = 1 * THE * COMMENT LINES HAVE NO EFFECT ON THE PROGRAM EXECUTION. * THEIR USE IS STRICTLY FOR DOCUMENTATION PURPOSES. IVCOMP = 2 * IVCOMP = 3 * 40 ANY STATEMENT LABELS ON COMMENT LINES ARE IGNORED. IVCORR = 2 40040 IF (IVCOMP - 2) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 200 - TEST 005 **** C C NONFORTRAN CHARACTERS WITHIN C AND * COMMENT LINES. C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 1 * <>%? NONFORTRAN CHARACTER C <>%? NONFORTRAN CHARACTER IVCOMP = 0 IVCORR = 0 40050 IF (IVCOMP) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 200 - TEST 006 **** C C LINES CONTAINING ONLY BLANK CHARACTERS IN COLUMNS 1 THROUGH C 72 ARE COMMENT LINES. C C REFERENCE X3.9-1977, SECTION 3.2.1, COMMENT LINE C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 0 IVCORR = 3 IVCOMP = 9 * ASTERISK COMMENT LINE FOLLOWED BY BLANK COMMENT LINE. * ASTERISK COMMENT LINE. IVCOMP = 3 40060 IF (IVCOMP - 3) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C TEST 7 AND TEST 8 CONTAIN THE DIGIT 0 IN COLUMN 6 OF INITIAL C LINES. C C REFERENCE X3.9-1977, SECTION 3.2.2, INITIAL LINE C C C **** FCVS PROGRAM 200 - TEST 007 **** C C TEST 007 USES THE DIGIT 0 IN COLUMN 6 OF TWO SUCCESSIVE C INITIAL LINES. C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 0IVON01 = 5 0IVON02 = 6 IVCOMP = IVON01 + IVON02 IVCORR = 11 40070 IF (IVCOMP - 11) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 200 - TEST 008 **** C C TEST 008 MIXES STATEMENTS WITH DIGIT 0 IN COLUMN 6 OF INITIAL C LINE AND COMMENT LINES WITH * IN COLUMN 1. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 0 * FIRST INITIAL LINE FOLLOWS. 0IVON01 = 5 * TWO SUCCESSIVE COMMENT LINES, * FOLLOWED BY TWO INITIAL LINES. 0IVON02=4 0IVCOMP=IVON01+IVON02 * FALL THROUGH TO VERIFICATION CODE IVCORR = 9 40080 IF (IVCOMP - 9) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C TEST 9 THROUGH TEST 13 VERIFY THAT CONTINUATION LINES ARE C PERMITTED. C C REFERENCE X3.9-1977, SECTION 3.2.3, CONTINUATION LINE C C C **** FCVS PROGRAM 200 - TEST 009 **** C C STATEMENT WITH TWO CONTINUATION LINES. C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVON01 = 0 IVON 1 01 2 = 2 IVCOMP = IVON01 IVCORR = 2 40090 IF (IVCOMP - 2) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 200 - TEST 010 **** C C STATEMENT WITH NINE CONTINUATION LINES. C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVON01 = 0 IVON01 = 1 1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9+1 IVCOMP = IVON01 IVCORR = 9 40100 IF (IVCOMP - 9) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 200 - TEST 011 **** C C TEST 011 CONTAINS THE MAXIMUM NUMBER OF CONTINUATION LINES C PERMITTED IN THE SUBSET LANGUAGE AND EACH OF THE 660 CHARACTERS C IN THE STATEMENT ARE NONBLANK. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVON01 = 1 IVCOMP = 0 IVCOMP=IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVO 1N01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01 2+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IV 3ON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON0 41+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+I 5VON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON 601+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+ 7IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVO 8N01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01 9+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+IVON01+12 IVCORR = 105 40110 IF (IVCOMP - 105) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 200 - TEST 012 **** C C TEST 012 SPLITS A STATEMENT ACROSS 8 CONTINUATION LINES. C THERE IS A STATEMENT LABEL IN COLUMNS 1-5 AND 0 IN COLUMN 6 C OF THE INITIAL LINE. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVON01 = 0 GO TO 0122 01220 I 1 V 2 O 3 N 4 0 5 1 6 = 7 8 8 9 IVCOMP = IVON01 IVCORR = 89 40120 IF (IVCOMP - 89) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 200 - TEST 013 **** C C TEST 013 CONSISTS OF AN INITIAL LINE WHICH CONTAINS ONLY A C STATEMENT LABEL AND A CONTINUATION LINE WHICH CONTAINS THE C EXECUTABLE STATEMENT. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 0 0132 1IVCOMP = 4 IVCORR = 4 40130 IF (IVCOMP - 4) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM200) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM200) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM200 FM201.f 480976111 170 2 100666 18703 ` *HEADER,FORTR,FM201 *FILES1,FORTR,FM201,X PROGRAM FM201 C C C THIS ROUTINE VERIFIES THAT C C (1) THE VALUE OF A SIGNED ZERO IS THE SAME AS THE VALUE OF C AN UNSIGNED ZERO FOR INTEGER AND REAL VARIABLES. C C (2) A BASIC REAL CONSTANT MAY BE WRITTEN WITH MORE DIGITS C THAN A PROCESSOR WILL USE TO APPROXIMATE THE VALUE OF C THE CONSTANT. C C (3) AN IMPLICIT STATEMENT CAN BE USED TO CHANGE THE DEFAULT C IMPLICIT INTEGER AND REAL TYPING. C C (4) THE IMPLICIT INTEGER AND REAL TYPING OF AN IMPLICIT C STATEMENT MAY BE OVERRIDDEN BY THE APPEARANCE OF A C VARIABLE NAME IN A TYPE-STATEMENT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.3, DATA TYPE PROPERTIES C SECTION 4.4.1, BASIC REAL CONSTANT C SECTION 6.1.5, INTEGER DIVISION C SECTION 8.4, TYPE-STATEMENTS C SECTION 8.5, IMPLICIT STATEMENT C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C IMPLICIT INTEGER (Y, V-X), REAL (M) REAL RVTN01, RVTN02, RVTN03, YVTN02 INTEGER IVTN01, IVTN02, MVTN02 C THE ABOVE THREE STATEMENTS ARE REFERENCED IN TESTS 29 THRU 35. 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 14 THROUGH TEST 17 COMPARE INTEGER VARIABLES WHICH ARE C SET TO SIGNED ZERO AND UNSIGNED ZERO VALUES BY THE FOLLOWING C STATEMENTS C IVON01 = 0 IVON02 = -0 IVON03 = +0 C C REFERENCE X3.9-1978, SECTION 4.1.3, DATA TYPE PROPERTIES C C **** FCVS PROGRAM 201 - TEST 014 **** C C COMPARE 0 TO -0 C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 1 IVCORR = 0 IF (IVON01 .EQ. IVON02) IVCOMP = 0 40140 IF (IVCOMP) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 201 - TEST 015 **** C C COMPARE 0 TO +0 C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 1 IVCORR = 0 IF (IVON01 .EQ. IVON03) IVCOMP = 0 40150 IF (IVCOMP) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 201 - TEST 016 **** C C COMPARE -0 TO +0 C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 1 IVCORR = 0 IF (IVON02 .EQ. IVON03) IVCOMP = 0 40160 IF (IVCOMP) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 201 - TEST 017 **** C C MINUS ZERO (-0) SHOULD NOT BE LESS THAN PLUS ZERO (+0) C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 1 IVCORR = 0 IF (IVON02 .LT. IVON03) GO TO 20170 IVCOMP = 0 GO TO 10170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C TEST 18 THROUGH TEST 24 COMPARE REAL VARIABLES WHICH ARE SET C TO SIGNED ZERO AND UNSIGNED ZERO VALUES BY THE FOLLOWING C STATEMENTS C RVON01 = 0.0 RVON02 = -0.0 RVON03 = +0.0 RVON04 = -0.0E+01 RVON05 = -0E+10 C C REFERENCE X3.9-1978, SECTION 4.1.3, DATA TYPE PROPERTIES C C **** FCVS PROGRAM 201 - TEST 018 **** C C COMPARE 0.0 TO -0.0 C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON01 .EQ. RVON02) IVCOMP = 0 40180 IF (IVCOMP) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 201 - TEST 019 **** C C COMPARE 0.0 TO +0.0 C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON01 .EQ. RVON03) IVCOMP = 0 40190 IF (IVCOMP) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 201 - TEST 020 **** C C COMPARE -0.0 TO +0.0 C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON02 .EQ. RVON03) IVCOMP = 0 40200 IF (IVCOMP) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 201 - TEST 021 **** C C MINUS ZERO (-0.0) SHOULD NOT BE LESS THAN PLUS ZERO (+0.0) C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON02 .LT. RVON03) GO TO 20210 IVCOMP = 0 GO TO 10210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 201 - TEST 022 **** C C COMPARE -0.0E+01 TO 0.0 C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON04 .EQ. RVON01) IVCOMP = 0 40220 IF (IVCOMP) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 201 - TEST 023 **** C C COMPARE -0E+10 TO 0.0 C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON05 .EQ. RVON01) IVCOMP = 0 40230 IF (IVCOMP) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 201 - TEST 024 **** C C COMPARE -0E+10 TO +0.0 C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVCOMP = 1 IVCORR = 0 IF (RVON05 .NE. RVON03) GO TO 20240 IVCOMP = 0 GO TO 10240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C TEST 25 THROUGH TEST 28 VERIFY THAT A BASIC REAL CONSTANT MAY C BE WRITTEN WITH MORE DIGITS THAN A PROCESSOR WILL USE TO APPROXI- C MATE THE VALUE OF THE CONSTANT. C C REFERENCE X3.9-1978, SECTION 4.4.1, BASIC REAL CONSTANT C C C **** FCVS PROGRAM 201 - TEST 025 **** C C EIGHT DIGITS IN BASIC REAL CONSTANT C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE RVON06 = 0.0 RVCOMP = 0.0 RVON06 = 3.1561234 RVCOMP = RVON06 RVCORR = 3.1561 40250 IF (RVCOMP - 3.1556) 20250, 10250, 40251 40251 IF (RVCOMP - 3.1566) 10250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0261 CONTINUE C C **** FCVS PROGRAM 201 - TEST 026 **** C C EIGHT DIGITS IN BASIC REAL CONSTANT PLUS A REAL EXPONENT. C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE RVON06 = 0.0 RVCOMP = 0.0 RVON06 = .31561234E+01 RVCOMP = RVON06 RVCORR = 3.1561 40260 IF (RVCOMP - 3.1556) 20260, 10260, 40261 40261 IF (RVCOMP - 3.1566) 10260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0271 CONTINUE C C **** FCVS PROGRAM 201 - TEST 027 **** C C TWELVE DIGITS IN BASIC REAL CONSTANT. C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE RVON06 = 0.0 RVCOMP = 0.0 RVON06 = 315612347833 E-11 RVCOMP = RVON06 RVCORR = 3.1561 40270 IF (RVCOMP - 3.1556) 20270, 10270, 40271 40271 IF (RVCOMP - 3.1566) 10270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0281 CONTINUE C C **** FCVS PROGRAM 201 - TEST 028 **** C C TWENTY-FIVE DIGITS IN BASIC REAL CONSTANT. C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE RVON06 = 0.0 RVCOMP = 0.0 RVON06 = 31.56123478334867532834672E-1 RVCOMP = RVON06 RVCORR = 3.1561 40280 IF (RVCOMP - 3.1556) 20280, 10280, 40281 40281 IF (RVCOMP - 3.1566) 10280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0291 CONTINUE C C TEST 29 THROUGH TEST 33 REFERENCE VARIABLES WHOSE TYPE WAS C SPECIFIED BY AN IMPLICIT STATEMENT. DIVISION IS USED TO VERIFY C THAT THE TYPE IS INTEGER OR REAL. C C REFERENCE X3.9-1978, SECTION 8.5, IMPLICIT STATEMENT C C C **** FCVS PROGRAM 201 - TEST 029 **** C C VERIFY YVIN01 IS AN INTEGER VARIABLE. C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE RVCOMP = 10.0 YVIN01 = 4.0 RVCOMP = YVIN01/5 RVCORR = 0.0 40290 IF (RVCOMP) 20290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0301 CONTINUE C C **** FCVS PROGRAM 201 - TEST 030 **** C C VERIFY VVIN01 IS AN INTEGER VARIABLE C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE RVCOMP = 10.0 VVIN01 = 4.0 RVCOMP = VVIN01/5 RVCORR = 0.0 40300 IF (RVCOMP) 20300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0311 CONTINUE C C **** FCVS PROGRAM 201 - TEST 031 **** C C VERIFY WVIN01 IS AN INTEGER VARIABLE. C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE RVCOMP = 10.0 WVIN01 = 4.0 RVCOMP = WVIN01/5 RVCORR = 0.0 40310 IF (RVCOMP) 20310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0321 CONTINUE C C **** FCVS PROGRAM 201 - TEST 032 **** C C VERIFY XVIN01 IS AN INTEGER VARIABLE. C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE XVIN01 = 4 RVCOMP = 10.0 RVCOMP = XVIN01/5 RVCORR = 0.0 40320 IF (RVCOMP) 20320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0331 CONTINUE C C **** FCVS PROGRAM 201 - TEST 033 **** C C VERIFY MVIN01 IS A REAL VARIABLE. C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE RVCOMP = 10.0 MVIN01 = 4 RVCOMP = MVIN01/5 RVCORR = 0.8 40330 IF (RVCOMP - 0.79995) 20330, 10330, 40331 40331 IF (RVCOMP - 0.80005) 10330, 10330, 20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0341 CONTINUE C C TEST 34 AND TEST 35 VERIFY THAT THE IMPLICIT TYPE SPECIFICA- C TION FOR A VARIABLE IS OVERRIDDEN BY THE APPEARANCE OF THAT C VARIABLE NAME IN A TYPE-STATEMENT. C C REFERENCE X3.9-1977, SECTION 8.4, TYPE-STATEMENTS C SECTION 8.5, IMPLICIT STATEMENT C C C **** FCVS PROGRAM 201 - TEST 034 **** C C VERIFY YVTN02 IS A REAL VARIABLE. C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE RVCOMP = 10.0 YVTN02 = 4 RVCOMP = YVTN02/5 RVCORR = 0.8 40340 IF (RVCOMP - 0.79995) 20340, 10340, 40341 40341 IF (RVCOMP - 0.80005) 10340, 10340, 20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0351 CONTINUE C C **** FCVS PROGRAM 201 - TEST 035 **** C C VERIFY MVTN02 IS AN INTEGER VARIABLE. C IVTNUM = 35 IF (ICZERO) 30350, 0350, 30350 0350 CONTINUE RVCOMP = 10.0 MVTN02 = 4.0 RVCOMP = MVTN02/5 RVCORR = 0.0 40350 IF (RVCOMP) 20350, 10350, 20350 30350 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10350, 0361, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0361 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0361 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM201) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM201) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM201 FM202.f 480976114 170 2 100666 23719 ` *HEADER,FORTR,FM202 *FILES1,FORTR,FM202,X PROGRAM FM202 C C C THIS ROUTINE IS THE FIRST ROUTINE TO TEST CHARACTER DATA C TYPES. CHARACTER TYPE-STATEMENTS SPECIFY CHARACTER VARIABLES OF C LENGTH ONE AND LENGTH TWO. THE TESTS IN THIS ROUTINE DETERMINE C THAT THE FOLLOWING LANGUAGE FEATURES FUNCTION CORRECTLY. C C (1) CHARACTER ASSIGNMENT STATEMENTS OF THE FORM C C CHARACTER VARIABLE = CHARACTER CONSTANT C CHARACTER VARIABLE = CHARACTER VARIABLE C C WHERE THE VARIABLES AND CONSTANTS ARE THE SAME LENGTH. C C (2) THE REPRESENTATION OF AN APOSTROPHE IN A CHARACTER C CONSTANT IS TWO CONSECUTIVE APOSTROPHES WITH NO INTERVENING C BLANKS. C C (3) CHARACTER RELATIONAL EXPRESSION OF THE FORM C C CHARACTER VARIABLE RELOP CHARACTER CONSTANT C CHARACTER CONSTANT RELOP CHARACTER VARIABLE C CHARACTER VARIABLE RELOP CHARACTER VARIABLE C C WHERE THE CHARACTER ENTITIES ARE THE SAME LENGTH. C C (4) CHARACTER RELATIONAL EXPRESSIONS OF THE FORM C C CHARACTER VARIABLE .EQ. CHARACTER CONSTANT C C ARE USED IN THIS ROUTINE TO VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.8, CHARACTER TYPE C SECTION 4.8.1, CHARACTER CONSTANT C SECTION 6.2, CHARACTER EXPRESSIONS C SECTION 6.3.4, CHARACTER RELATIONAL EXPRESSION C SECTION 6.3.5, INTERPRETATION OF CHARACTER RELATIONAL C EXPRESSIONS C SECTION 8.4.2, CHARACTER TYPE-STATEMENT C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C CHARACTER *1 CVTN01, CVTN02 CHARACTER *2 CVTN03, CVTN04 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 1 THROUGH TEST 6 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENT C C CHARACTER VARIABLE (LEN 1) = CHARACTER CONSTANT (LEN 1) C C IS CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER VARIABLE (LEN 1) RELOP CHARACTER CONSTANT (LEN 1) C C IS USED TO VERIFY THE ASSIGNMENT STATEMENT. BOTH OF THE ABOVE C STATEMENTS MUST MEET THE LANGUAGE SPECIFICATIONS FOR THESE TESTS C TO PASS. C C C **** FCVS PROGRAM 202 - TEST 001 **** C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 CVTN01 = ' ' IVCORR = 1 IF (CVTN01 .EQ. ' ') IVCOMP = 1 40010 IF (IVCOMP - 1) 20010,10010,20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 202 - TEST 002 **** C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 0 CVTN01 = 'M' IVCORR = 1 IF (CVTN01 .EQ. 'M') IVCOMP = 1 40020 IF (IVCOMP - 1) 20020,10020,20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 202 - TEST 003 **** C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '4' IF (CVTN01 .EQ. '4') IVCOMP = 1 40030 IF (IVCOMP - 1) 20030,10030,20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 202 - TEST 004 **** C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '=' IF (CVTN01 .EQ. '=') IVCOMP = 1 40040 IF (IVCOMP - 1) 20040,10040,20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 202 - TEST 005 **** C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '/' IF (CVTN01 .EQ. '/') IVCOMP = 1 40050 IF (IVCOMP - 1) 20050,10050,20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 202 - TEST 006 **** C C AN APOSTROPHE IN A CHARACTER CONSTANT IS REPRESENTED BY TWO C CONSECUTIVE APOSTROPHES WITH NO INTERVENING BLANKS. C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '''' IF (CVTN01 .EQ. '''') IVCOMP = 1 40060 IF (IVCOMP - 1) 20060,10060,20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C TEST 7 THROUGH TEST 12 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER VARIABLE (LEN 1) = CHARACTER CONSTANT (LEN 1) C CHARACTER VARIABLE (LEN 1) = CHARACTER VARIABLE (LEN 1) C C ARE CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER VARIABLE (LEN 1) .EQ. CHARACTER CONSTANT (LEN 1) C C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENTS. C C C **** FCVS PROGRAM 202 - TEST 007 **** C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = ' ' CVTN02 = CVTN01 IF (CVTN02 .EQ. ' ') IVCOMP = 1 40070 IF (IVCOMP - 1) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 202 - TEST 008 **** C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = 'M' CVTN02 = CVTN01 IF (CVTN02 .EQ. 'M') IVCOMP = 1 40080 IF (IVCOMP - 1) 20080,10080,20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 202 - TEST 009 **** C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '4' CVTN02 = CVTN01 IF (CVTN02 .EQ. '4') IVCOMP = 1 40090 IF (IVCOMP - 1) 20090,10090,20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 202 - TEST 010 **** C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '=' CVTN02 = CVTN01 IF (CVTN02 .EQ. '=') IVCOMP = 1 40100 IF (IVCOMP - 1) 20100,10100,20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 202 - TEST 011 **** C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP =0 IVCORR = 1 CVTN01 = '/' CVTN02 = CVTN01 IF (CVTN02 .EQ. '/') IVCOMP = 1 40110 IF (IVCOMP - 1) 20110,10110,20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 202 - TEST 012 **** C C AN APOSTROPHE IN A CHARACTER CONSTANT IS REPRESENTED BY TWO C CONSECUTIVE APOSTROPHES WITH NO INTERVENING BLANKS. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '''' CVTN02 = CVTN01 IF (CVTN02 .EQ. '''') IVCOMP = 1 40120 IF (IVCOMP - 1) 20120,10120,20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C TEST 13 THROUGH TEST 18 VERIFY THE RESULTS OF THE CHARACTER C RELATIONAL EXPRESSION USING EACH OF THE SIX RELATIONAL OPERATORS C IN THE STATEMENT FORM C C CHARACTER VARIABLE (LEN 1) RELOP CHARACTER CONSTANT (LEN 1). C C THE VARIABLE AND CONSTANT CONTAIN THE CHARACTER DATUM C. C CVTN01 = 'C' C C **** FCVS PROGRAM 202 - TEST 013 **** C C RELATIONAL OPERATOR .EQ. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN01 .EQ. 'C') IVCOMP = 1 40130 IF (IVCOMP - 1) 20130,10130,20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 202 - TEST 014 **** C C RELATIONAL OPERATOR .NE. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IVCORR = 0 IF (CVTN01 .NE. 'C') IVCOMP = 1 40140 IF (IVCOMP) 20140,10140,20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 202 - TEST 015 **** C C RELATIONAL OPERATOR .LE. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN01 .LE. 'C') IVCOMP = 1 IF (IVCOMP - 1) 20150,10150,20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 202 - TEST 016 **** C C RELATIONAL OPERATOR .LT. C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP=0 IVCORR=0 IF (CVTN01 .LT. 'C') IVCOMP = 1 IF (IVCOMP) 20160,10160,20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 202 - TEST 017 **** C C RELATIONAL OPERATOR .GE. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN01 .GE. 'C') IVCOMP = 1 40170 IF (IVCOMP - 1) 20170,10170,20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 202 - TEST 018 **** C C RELATIONAL OPERATOR .GT. C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 0 IVCORR = 0 IF (CVTN01 .GT. 'C') IVCOMP = 1 40180 IF (IVCOMP) 20180,10180,20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C TEST 19 THROUGH TEST 21 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENT C C CHARACTER VARIABLE (LEN 2) = CHARACTER CONSTANT (LEN 2) C C OPERATES CORRECTLY. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER VARIABLE (LEN 2) .EQ. CHARACTER CONSTANT (LEN 2) C C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENT. C C C **** FCVS PROGRAM 202 - TEST 019 **** C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP =0 IVCORR =1 CVTN03 = 'AZ' IF (CVTN03 .EQ. 'AZ') IVCOMP = 1 40190 IF (IVCOMP - 1) 20190,10190,20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 202 - TEST 020 **** C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'B''' IF (CVTN03 .EQ. 'B''') IVCOMP = 1 40200 IF (IVCOMP - 1) 20200,10200,20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 202 - TEST 021 **** C C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = '//' IF (CVTN03 .EQ. '//') IVCOMP = 1 40210 IF (IVCOMP - 1) 20210,10210,20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C TEST 22 THROUGH TEST 24 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER VARIABLE (LEN 2) = CHARACTER CONSTANT (LEN 2) C CHARACTER VARIABLE (LEN 2) = CHARACTER VARIABLE (LEN 2) C C OPERATE CORRECTLY. C C C **** FCVS PROGRAM 202 - TEST 022 **** C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'AZ' CVTN04 = CVTN03 IF (CVTN04 .EQ. 'AZ') IVCOMP=1 40220 IF (IVCOMP - 1) 20220,10220,20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 202 - TEST 023 **** C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'B''' CVTN04 = CVTN03 IF (CVTN04 .EQ. 'B''') IVCOMP = 1 40230 IF (IVCOMP - 1) 20230,10230,20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 202 - TEST 024 **** C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = '//' CVTN04 = CVTN03 IF (CVTN04 .EQ. '//') IVCOMP = 1 40240 IF (IVCOMP - 1) 20240,10240,20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C TEST 25 THROUGH TEST 30 VERIFY THE RESULTS OF THE CHARACTER C RELATIONAL EXPRESSION USING EACH OF THE SIX RELATIONAL OPERATORS C IN THE EXPRESSION FORM C C CHARACTER VARIABLE (LEN 2) RELOP CHARACTER VARIABLE (LEN 2) C C THE VARIABLES CONTAIN THE CHARACTER DATUM CC. C CVTN03 = 'CC' CVTN04 = 'CC' C C **** FCVS PROGRAM 202 - TEST 025 **** C C RELATIONAL OPERATOR .EQ. C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN03 .EQ. CVTN04) IVCOMP = 1 40250 IF (IVCOMP - 1) 20250,10250,20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 202 - TEST 026 **** C C RELATIONAL OPERATOR .NE. C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE IVCOMP = 0 IVCORR = 0 IF (CVTN03 .NE. CVTN04) IVCOMP = 1 40260 IF (IVCOMP) 20260,10260,20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 202 - TEST 027 **** C C RELATIONAL OPERATOR .LE. C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN03 .LE. CVTN04) IVCOMP = 1 40270 IF (IVCOMP - 1) 20270,10270,20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 202 - TEST 028 **** C C RELATIONAL OPERATOR .LT. C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE IVCOMP = 0 IVCORR = 0 IF (CVTN03 .LT. CVTN04) IVCOMP=1 40280 IF (IVCOMP) 20280,10280,20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C **** FCVS PROGRAM 202 - TEST 029 **** C C RELATIONAL OPERATOR .GE. C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN03 .GE. CVTN04) IVCOMP = 1 40290 IF (IVCOMP - 1) 20290,10290,20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C C **** FCVS PROGRAM 202 - TEST 030 **** C C RELATIONAL OPERATOR .GT. C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE IVCOMP = 0 IVCORR = 0 IF (CVTN03 .GT. CVTN04) IVCOMP = 1 40300 IF (IVCOMP) 20300,10300,20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM202) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM202) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM202 FM203.f 480976116 170 2 100666 28009 ` *HEADER,FORTR,FM203 *FILES1,FORTR,FM203,X PROGRAM FM203 C C C THIS ROUTINE CONTINUES THE TESTING OF CHARACTER DATA TYPES C WHICH WAS STARTED IN FM202. THE CHARACTER TYPE-STATEMENTS SPECIFY C CHARACTER VARIABLES AND ONE-DIMENSIONAL CHARACTER ARRAYS OF C LENGTH ONE AND LENGTH TWO. THE TESTS IN THIS ROUTINE DETERMINE C THAT THE FOLLOWING LANGUAGE FEATURES FUNCTION CORRECTLY. C C (1) CHARACTER ASSIGNMENT STATEMENTS OF THE FORM C C CHARACTER ARRAY ELEMENT = CHARACTER CONSTANT C CHARACTER ARRAY ELEMENT = CHARACTER VARIABLE C CHARACTER ARRAY ELEMENT = CHARACTER ARRAY ELEMENT C CHARACTER VARIABLE = CHARACTER ARRAY ELEMENT C C WHERE THE ARRAY ELEMENTS, VARIABLES AND CONSTANTS ARE OF LENGTH C ONE OR TWO. C C (2) CHARACTER RELATIONAL EXPRESSIONS OF THE FORM C C CHARACTER ARRAY ELEMENT RELOP CHARACTER CONSTANT C CHARACTER ARRAY ELEMENT RELOP CHARACTER VARIABLE C CHARACTER ARRAY ELEMENT RELOP CHARACTER ARRAY ELEMENT C C WHERE THE ARRAY ELEMENTS, VARIABLES AND CONSTANTS ARE OF LENGTH C ONE OR TWO. C C (3) CHARACTER EXPRESSIONS ENCLOSED IN PARENTHESES. THE FORMS C TESTED ARE C C (CHARACTER CONSTANT) C (CHARACTER VARIABLE) C (CHARACTER ARRAY ELEMENT) C ((CHARACTER ARRAY ELEMENT)) C C (4) CHARACTER RELATIONAL EXPRESSIONS OF THE FORM C C CHARACTER ARRAY ELEMENT .EQ. CHARACTER CONSTANT C C ARE USED IN THIS ROUTINE TO VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.8, CHARACTER TYPE C SECTION 4.8.1, CHARACTER CONSTANT C SECTION 6.2, CHARACTER EXPRESSIONS C SECTION 6.3.4, CHARACTER RELATIONAL EXPRESSION C SECTION 6.3.5, INTERPRETATION OF CHARACTER RELATIONAL C EXPRESSIONS C SECTION 8.4.2, CHARACTER TYPE-STATEMENT C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C CHARACTER CATN11(5), CVTN01, CATN12(5), CVTN02 CHARACTER*2 CATN13, CVTN03, CATN14(5), CVTN04 DIMENSION CATN13(5) 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 31 THROUGH TEST 33 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENT C C CHARACTER ARRAY ELEMENT (LEN 1) = CHARACTER CONSTANT (LEN 1) C C IS CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER ARRAY ELEMENT (LEN 1) .EQ. CHARACTER CONSTANT (LEN 1) C C IS USED TO VERIFY THE ASSIGNMENT STATEMENT. BOTH OF THE ABOVE C STATEMENT FORMS MUST MEET THE LANGUAGE SPECIFICATIONS FOR THESE C TESTS TO PASS. C C THE TWO ARRAYS USED IN THESE TESTS ARE CATN11(5) AND CATN12(5) C THE ARRAYS ARE INITIALIZED TO A BLANK CHARACTER BY THE DO-LOOP C DO 312 I= 1,5 CATN11(I) = ' ' CATN12(I) = ' ' 312 CONTINUE C C **** FCVS PROGRAM 203 - TEST 031 **** C C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11(2) = 'V' IF (CATN11(2) .EQ. 'V') IVCOMP = 1 40310 IF (IVCOMP - 1) 20310,10310,20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C **** FCVS PROGRAM 203 - TEST 032 **** C C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE IVCOMP=0 IVCORR=1 CATN11(3) = '+' IF (CATN11(3) .EQ. '+') IVCOMP = 1 40320 IF (IVCOMP - 1) 20320,10320,20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C **** FCVS PROGRAM 203 - TEST 033 **** C C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11 (4) = '7' IF (CATN11 (4) .EQ. '7') IVCOMP = 1 40330 IF (IVCOMP -1) 20330,10330,20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C C TEST 34 THROUGH TEST 36 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER VARIABLE (LEN 1) = CHARACTER CONSTANT (LEN 1) C CHARACTER ARRAY ELEMENT (LEN1) = CHARACTER VARIABLE (LEN1) C C ARE CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER ARRAY ELEMENT (LEN1) .EQ. CHAR. CONSTANT (LEN1) C C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENTS. C C C **** FCVS PROGRAM 203 - TEST 034 **** C C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = 'V' CATN12(2) = CVTN01 IF (CATN12(2) .EQ. 'V') IVCOMP = 1 40340 IF (IVCOMP - 1) 20340,10340,20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 CONTINUE C C **** FCVS PROGRAM 203 - TEST 035 **** C C IVTNUM = 35 IF (ICZERO) 30350, 0350, 30350 0350 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '+' CATN12(3) = CVTN01 IF (CATN12(3) .EQ. '+') IVCOMP = 1 40350 IF (IVCOMP - 1) 20350,10350,20350 30350 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10350, 0361, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0361 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0361 CONTINUE C C **** FCVS PROGRAM 203 - TEST 036 **** C C IVTNUM = 36 IF (ICZERO) 30360, 0360, 30360 0360 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '7' CATN12(4) = CVTN01 IF (CATN12(4) .EQ. '7') IVCOMP = 1 40360 IF (IVCOMP - 1) 20360,10360,20360 30360 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10360, 0371, 20360 10360 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0371 20360 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0371 CONTINUE C C TEST 37 THROUGH TEST 39 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHAR. ARRAY ELEMENT (LEN 1) = CHAR. CONSTANT (LEN 1) C CHAR. ARRAY ELEMENT (LEN 1) = CHAR. ARRAY ELEMENT (LEN 1) C C ARE CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHAR. ARRAY ELEMENT (LEN 1) .EQ. CHAR. CONSTANT (LEN 1) C C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENTS. C C C **** FCVS PROGRAM 203 - TEST 037 **** C C IVTNUM = 37 IF (ICZERO) 30370, 0370, 30370 0370 CONTINUE IVCOMP = 1 IVCORR = 6 CATN11 (1) = 'V' CATN12 (1) = CATN11 (1) IF (CATN12(1) .EQ. 'V') IVCOMP=IVCOMP*2 IF (CATN11(1) .EQ. 'V') IVCOMP=IVCOMP*3 40370 IF (IVCOMP-6) 20370,10370,20370 30370 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10370, 0381, 20370 10370 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0381 20370 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0381 CONTINUE C C **** FCVS PROGRAM 203 - TEST 038 **** C C IVTNUM = 38 IF (ICZERO) 30380, 0380, 30380 0380 CONTINUE IVCOMP=1 IVCORR=6 CATN11(2) = '+' CATN12(2) = CATN11(2) IF (CATN12(2) .EQ. '+') IVCOMP=IVCOMP*2 IF (CATN11(2) .EQ. '+') IVCOMP=IVCOMP*3 40380 IF (IVCOMP - 6) 20380,10380,20380 30380 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10380, 0391, 20380 10380 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0391 20380 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0391 CONTINUE C C **** FCVS PROGRAM 203 - TEST 039 **** C C IVTNUM = 39 IF (ICZERO) 30390, 0390, 30390 0390 CONTINUE IVCOMP = 1 IVCORR = 6 CATN11 (3) = '7' CATN12 (3) = CATN11 (3) IF (CATN12(3) .EQ. '7') IVCOMP = IVCOMP * 2 IF (CATN11(3) .EQ. '7') IVCOMP = IVCOMP * 3 40390 IF (IVCOMP - 6) 20390,10390,20390 30390 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10390, 0401, 20390 10390 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0401 20390 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0401 CONTINUE C C TEST 40 AND TEST 41 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHAR. ARRAY ELEMENT (LEN 1) = CHAR. CONSTANT (LEN 1) C CHAR. VARIABLE (LEN 1) = CHAR. ARRAY ELEMENT (LEN 1) C C ARE CORRECT. C C C **** FCVS PROGRAM 203 - TEST 040 **** C C IVTNUM = 40 IF (ICZERO) 30400, 0400, 30400 0400 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11(4) = 'X' CVTN02 = CATN11 (4) IF (CVTN02 .EQ. 'X') IVCOMP = 1 40400 IF (IVCOMP - 1) 20400,10400,20400 30400 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10400, 0411, 20400 10400 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0411 20400 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0411 CONTINUE C C **** FCVS PROGRAM 203 - TEST 041 **** C C IVTNUM = 41 IF (ICZERO) 30410, 0410, 30410 0410 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11(3) = '-' CVTN02 = CATN11(3) IF (CVTN02 .EQ. '-') IVCOMP=1 40410 IF (IVCOMP - 1) 20410,10410,20410 30410 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10410, 0421, 20410 10410 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0421 20410 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0421 CONTINUE C C TEST 42 THROUGH TEST 44 VERIFY THE RESULTS OF CHARACTER C RELATIONAL EXPRESSIONS USING EACH OF THE SIX RELATIONAL OPERATORS. C THE CHARACTER DATA 'A' AND '1' ARE COMPARED IN THE EXPRESSION C AND ARE INITIALIZED BY THE CHARACTER ASSIGNMENT STATEMENTS C CATN11 (4) = 'A' CATN12 (3) = '1' CVTN01 = 'A' CVTN02 = '1' C C **** FCVS PROGRAM 203 - TEST 042 **** C C RELATIONAL OPERATORS .NE. AND .EQ. C CHAR. ARRAY ELEMENT (LEN 1) RELOP CHAR. CONSTANT (LEN 1) C IVTNUM = 42 IF (ICZERO) 30420, 0420, 30420 0420 CONTINUE IVCOMP = 1 IVCORR = 3 IF (CATN11(4) .EQ. '1') IVCOMP=IVCOMP*2 IF ('A' .NE. CATN12(3)) IVCOMP=IVCOMP*3 40420 IF (IVCOMP - 3) 20420,10420,20420 30420 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10420, 0431, 20420 10420 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0431 20420 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0431 CONTINUE C C **** FCVS PROGRAM 203 - TEST 043 **** C C RELATIONAL OPERATORS .LE. AND .GE. C CHAR. ARRAY ELEMENT (LEN 1) RELOP CHAR. VARIABLE (LEN 1) C IVTNUM = 43 IF (ICZERO) 30430, 0430, 30430 0430 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(4) .LE. CVTN02) IVCOMP=IVCOMP+1 IF (CVTN01 .GE. CATN12(3)) IVCOMP=IVCOMP+1 40430 IF (IVCOMP - 1) 20430,10430,20430 30430 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10430, 0441, 20430 10430 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0441 20430 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0441 CONTINUE C C **** FCVS PROGRAM 203 - TEST 044 **** C C RELATIONAL OPERATORS .LT. AND .GT. C CHAR. ARRAY ELEMENT (LEN 1) RELOP CHAR. ARRAY ELEMENT (LEN 1) C IVTNUM = 44 IF (ICZERO) 30440, 0440, 30440 0440 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(4) .LT. CATN12(3)) IVCOMP=IVCOMP+1 IF (CATN11(4) .GT. CATN12(3)) IVCOMP=IVCOMP+1 40440 IF (IVCOMP - 1) 20440,10440,20440 30440 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10440, 0451, 20440 10440 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0451 20440 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0451 CONTINUE C C **** FCVS PROGRAM 203 - TEST 045 **** C C TEST 45 VERIFIES THAT THE LAST ELEMENTS OF THE ARRAYS USED C IN TEST 31 THROUGH TEST 44 WERE NOT AFFECTED BY THE SETTING C OF OTHER CHARACTER ARRAY ELEMENTS. C IVTNUM = 45 IF (ICZERO) 30450, 0450, 30450 0450 CONTINUE IVCOMP = 1 IVCORR = 30 IF (CATN11(5) .EQ. ' ') IVCOMP=IVCOMP*2 IF (CATN12(5) .EQ. ' ') IVCOMP=IVCOMP*3 IF (CATN11(5) .EQ. CATN12(5)) IVCOMP=IVCOMP*5 40450 IF (IVCOMP - 30) 20450,10450,20450 30450 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10450, 0461, 20450 10450 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0461 20450 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0461 CONTINUE C C TEST 46 THROUGH TEST 49 CONTAIN CHARACTER ARRAY ELEMENTS OF C LENGTH TWO IN CHARACTER ASSIGNMENT STATEMENTS. THE CHARACTER C RELATIONAL EXPRESSION C C CHAR. ARRAY ELEMENT (LEN 2) .EQ. CHAR. CONSTANT (LEN 2) C C IS USED TO VERIFY THE TEST RESULTS. C C THE TWO ARRAYS USED IN THESE TESTS ARE CATN13(5) AND CATN14(5) C THE ARRAYS ARE INITIALIZED TO TWO BLANK CHARACTERS BY THE DO-LOOP C DO 462 I=1,5 CATN13(I) = ' ' CATN14(I) = ' ' 462 CONTINUE C C **** FCVS PROGRAM 203 - TEST 046 **** C C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. CONSTANT (LEN 2) C IVTNUM = 46 IF (ICZERO) 30460, 0460, 30460 0460 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(1) = 'AB' IF (CATN13(1) .EQ. 'AB') IVCOMP = 1 40460 IF (IVCOMP - 1) 20460,10460,20460 30460 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10460, 0471, 20460 10460 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0471 20460 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0471 CONTINUE C C **** FCVS PROGRAM 203 - TEST 047 **** C C CHAR. VARIABLE (LEN 2) = CHAR. CONSTANT (LEN 2) C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. VARIABLE (LEN 2) C IVTNUM = 47 IF (ICZERO) 30470, 0470, 30470 0470 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = '+-' CATN13(2) = CVTN03 IF (CATN13(2) .EQ. '+-') IVCOMP=1 40470 IF (IVCOMP - 1) 20470,10470,20470 30470 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10470, 0481, 20470 10470 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0481 20470 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0481 CONTINUE C C **** FCVS PROGRAM 203 - TEST 048 **** C C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. CONSTANT (LEN 2) C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. ARRAY ELEMENT (LEN 2) C IVTNUM = 48 IF (ICZERO) 30480, 0480, 30480 0480 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(4) = '24' CATN13(3) = CATN13(4) IF (CATN13(3) .EQ. '24') IVCOMP = 1 40480 IF (IVCOMP - 1) 20480,10480,20480 30480 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10480, 0491, 20480 10480 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0491 20480 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0491 CONTINUE C C **** FCVS PROGRAM 203 - TEST 049 **** C C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. CONSTANT (LEN 2) C CHAR. VARIABLE (LEN 2) = CHAR. ARRAY ELEMENT (LEN 2) C IVTNUM = 49 IF (ICZERO) 30490, 0490, 30490 0490 CONTINUE IVCOMP = 0 IVCORR = 1 CATN14(1) = 'AB' CVTN04 = CATN14(1) IF (CVTN04 .EQ. 'AB') IVCOMP = 1 40490 IF (IVCOMP - 1) 20490,10490,20490 30490 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10490, 0501, 20490 10490 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0501 20490 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0501 CONTINUE C C TEST 50 THROUGH TEST 52 VERIFY THE RESULTS OF CHARACTER C RELATIONAL EXPRESSIONS USING EACH OF THE SIX RELATIONAL OPERATORS. C THE CHARACTER DATA 'ZA' AND 'Z1' ARE COMPARED IN THE EXPRESSION C AND ARE INITIALIZED BY THE CHARACTER ASSIGNMENT STATEMENTS C CATN14(2) = 'ZA' CATN14(3) = 'Z1' CVTN03 = 'ZA' CVTN04 = 'Z1' C C **** FCVS PROGRAM 203 - TEST 050 **** C C RELATIONAL OPERATORS .NE. AND .EQ. C CHAR. ARRAY ELEMENT (LEN 2) RELOP CHAR. VARIABLE (LEN 2) C IVTNUM = 50 IF (ICZERO) 30500, 0500, 30500 0500 CONTINUE IVCOMP = 1 IVCORR = 3 IF (CATN14(2) .EQ. 'Z1') IVCOMP=IVCOMP*2 IF ('ZA' .NE. CATN14(3)) IVCOMP=IVCOMP*3 40500 IF (IVCOMP - 3) 20500,10500,20500 30500 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10500, 0511, 20500 10500 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0511 20500 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0511 CONTINUE C C **** FCVS PROGRAM 203 - TEST 051 **** C C RELATIONAL OPERATORS .LE. AND .GE. C CHAR. ARRAY ELEMENT (LEN 2) RELOP CHAR. VARIABLE (LEN 2) C IVTNUM = 51 IF (ICZERO) 30510, 0510, 30510 0510 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN14(2) .LE. CVTN04) IVCOMP=IVCOMP+1 IF (CVTN03 .GE. CATN14(3)) IVCOMP=IVCOMP+1 40510 IF (IVCOMP - 1) 20510,10510,20510 30510 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10510, 0521, 20510 10510 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0521 20510 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0521 CONTINUE C C **** FCVS PROGRAM 203 - TEST 052 **** C C RELATIONAL OPERATORS .LT. AND .GT. C CHAR. ARRAY ELEMENT (LEN 2) RELOP CHAR. ARRAY ELEMENT (LEN 2) C IVTNUM = 52 IF (ICZERO) 30520, 0520, 30520 0520 CONTINUE IVCOMP =0 IVCORR =1 IF (CATN14(2) .LT. CATN14(3)) IVCOMP=IVCOMP+1 IF (CATN14(2) .GT. CATN14(3)) IVCOMP=IVCOMP+1 40520 IF (IVCOMP - 1) 20520,10520,20520 30520 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10520, 0531, 20520 10520 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0531 20520 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0531 CONTINUE C C **** FCVS PROGRAM 203 - TEST 053 **** C C TEST 53 VERIFIES THAT THE LAST ELEMENTS OF THE ARRAYS USED IN C TEST 46 THROUGH TEST 52 WERE NOT AFFECTED BY THE SETTING OF OTHER C CHARACTER ARRAY ELEMENTS. C IVTNUM = 53 IF (ICZERO) 30530, 0530, 30530 0530 CONTINUE IVCOMP = 1 IVCORR = 30 IF (CATN13(5) .EQ. ' ')IVCOMP=IVCOMP*2 IF (CATN14(5) .EQ. ' ') IVCOMP= IVCOMP * 3 IF (CATN14(5) .EQ. CATN13(5)) IVCOMP=IVCOMP*5 40530 IF (IVCOMP - 30) 20530,10530,20530 30530 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10530, 0541, 20530 10530 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0541 20530 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0541 CONTINUE C C TEST 54 THROUGH TEST 60 VERIFY THAT A CHARACTER PRIMARY CAN C BE ENCLOSED IN PARENTHESES. THE CHARACTER PRIMARIES FOR THE C SUBSET ARE CHARACTER CONSTANT, CHARACTER VARIABLE, CHARACTER ARRAY C ELEMENT, AND CHARACTER EXPRESSION ENCLOSED IN PARENTHESES. THE C FORM OF A CHARACTER EXPRESSION IS CHARACTER PRIMARY. C C C **** FCVS PROGRAM 203 - TEST 054 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = (CHARACTER CONSTANT) LENGTH 1 C IVTNUM = 54 IF (ICZERO) 30540, 0540, 30540 0540 CONTINUE CVTN01 = ' ' IVCOMP = 0 IVCORR = 1 CVTN01 = ('N') IF (CVTN01 .EQ. 'N') IVCOMP = 1 40540 IF (IVCOMP - 1) 20540,10540,20540 30540 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10540, 0551, 20540 10540 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0551 20540 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0551 CONTINUE C C **** FCVS PROGRAM 203 - TEST 055 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = (CHAR. VARIABLE) LENGTH 2 C IVTNUM = 55 IF (ICZERO) 30550, 0550, 30550 0550 CONTINUE CVTN04 = ' ' IVCOMP = 0 IVCORR = 1 CVTN03 = '/+' CVTN04 = (CVTN03) IF (CVTN04 .EQ. '/+') IVCOMP=1 40550 IF (IVCOMP - 1) 20550,10550,20550 30550 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10550, 0561, 20550 10550 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0561 20550 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0561 CONTINUE C C **** FCVS PROGRAM 203 - TEST 056 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = (CHAR. ARRAY ELEMENT) LENGTH 2 C IVTNUM = 56 IF (ICZERO) 30560, 0560, 30560 0560 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN04 = ' ' CATN13(1) = 'BC' CVTN04 = (CATN13(1)) IF (CVTN04 .EQ. 'BC') IVCOMP = 1 40560 IF (IVCOMP - 1) 20560,10560,20560 30560 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10560, 0571, 20560 10560 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0571 20560 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0571 CONTINUE C C **** FCVS PROGRAM 203 - TEST 057 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = ((CHAR. ARRAY ELEMENT)) LENGTH 2 C IVTNUM = 57 IF (ICZERO) 30570, 0570, 30570 0570 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN04 = ' ' CATN13(3) = 'BC' CVTN04 = ((CATN13(3))) IF (CVTN04 .EQ. 'BC') IVCOMP=1 40570 IF (IVCOMP - 1) 20570,10570,20570 30570 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10570, 0581, 20570 10570 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0581 20570 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0581 CONTINUE C C **** FCVS PROGRAM 203 - TEST 058 **** C C RELATIONAL EXPRESSION, .NE. C (CHAR. CONSTANT) .NE. (CHAR. VARIABLE) LENGTH 1 C IVTNUM = 58 IF (ICZERO) 30580, 0580, 30580 0580 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '6' IF (('9') .NE. (CVTN01)) IVCOMP=1 40580 IF (IVCOMP - 1) 20580,10580,20580 30580 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10580, 0591, 20580 10580 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0591 20580 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0591 CONTINUE C C **** FCVS PROGRAM 203 - TEST 059 **** C C RELATIONAL EXPRESSION, .GE. C (CHAR. VARIABLE) .GE. (CHAR. ARRAY ELEMENT) LENGTH 2 C IVTNUM = 59 IF (ICZERO) 30590, 0590, 30590 0590 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'DE' CATN13(5) = 'DE' IF ((CVTN03) .GE. (CATN13(5))) IVCOMP=1 40590 IF (IVCOMP - 1) 20590,10590,20590 30590 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10590, 0601, 20590 10590 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0601 20590 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0601 CONTINUE C C **** FCVS PROGRAM 203 - TEST 060 **** C C RELATIONAL EXPRESSION, .LE. C ((CHAR. ARRAY ELEMENT)) .LE. ((CHAR. ARRAY ELEMENT)) LEN 2 C IVTNUM = 60 IF (ICZERO) 30600, 0600, 30600 0600 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(4) = 'MC' CATN13(5) = 'MC' IF (((CATN13(4))) .LE. ((CATN13(5)))) IVCOMP = 1 40600 IF (IVCOMP - 1) 20600,10600,20600 30600 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10600, 0611, 20600 10600 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0611 20600 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0611 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM203) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM203) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM203 FM204.f 480976119 170 2 100666 25723 ` *HEADER,FORTR,FM204 *FILES1,FORTR,FM204,X PROGRAM FM204 C C C THIS ROUTINE CONTINUES THE TESTING OF CHARACTER VARIABLES AND C CHARACTER ARRAYS OF LENGTH ONE. THE CHARACTER FEATURES TESTED IN C FM202 AND FM203 ARE USED IN THE TESTS IN THIS ROUTINE. THE C FOLLOWING CHARACTER FEATURES ARE TESTED C C (1) INITIAL DEFINITION OF CHARACTER ENTITIES OF LENGTH ONE BY C SPECIFYING THEM IN A DATA STATEMENT. C C (2) THE SUBSET FORTRAN LANGUAGE SPECIFIES THE FOLLOWING C COLLATING SEQUENCE RULES. C C A LESS THAN B ... LESS THAN Z, C 0 LESS THAN 1 ... LESS THAN 9, C ALL OF THE DIGITS PRECEDE A OR ALL OF THE DIGITS FOLLOW C Z, C BLANK IS LESS THAN THE LETTER A AND BLANK IS LESS THAN C THE DIGIT ZERO. C C (3) THE VALUE OF THE INTRINSIC FUNCTION ICHAR IS AN INTEGER C IN THE RANGE (0, N-1), WHERE N IS THE NUMBER OF CHARACTERS IN C THE COLLATING SEQUENCE FOR THE PROCESSOR. FOR ANY CHARACTERS C C1 AND C2 CAPABLE OF REPRESENTATION IN THE PROCESSOR, C1 .LE. C2 C IS TRUE IF AND ONLY IF ICHAR(C1) .LE. ICHAR(C2) IS TRUE; AND C C1 .EQ. C2 IF AND ONLY IF ICHAR(C1) .EQ. ICHAR(C2). C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 3.1.5, COLLATING SEQUENCE AND GRAPHICS C SECTION 4.8, CHARACTER TYPE C SECTION 6.2, CHARACTER EXPRESSIONS C SECTION 6.3.4, CHARACTER RELATIONAL EXPRESSIONS C SECTION 6.3.5, INTERPRETATION OF CHARACTER RELATIONAL C EXPRESSIONS C SECTION 8.4.2, CHARACTER TYPE-STATEMENT C SECTION 9.4, CHARACTER CONSTANT IN A DATA STATEMENT C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT C SECTION 15.3, INTRINSIC FUNCTIONS C SECTION 15.10, TABLE 5 INTRINSIC FUNCTIONS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C CHARACTER*1 CATN11(47), CATN12(26), CATN13(10) CHARACTER CVTN10*1, CATN14(6)*1, CVTN01 DIMENSION IAON11(47) DATA CATN11/'A','B','C','D','E','F','G','H','I','J','K','L','M', 1 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1', 2 '2','3','4','5','6','7','8','9',' ','=','+','-','*','/','(', 3 ')',',','.',''''/ DATA CATN12/'A','B','C','D','E','F','G','H','I','J','K','L','M', 1 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'/ DATA CATN14(1),CATN14(2),CATN14(3),CATN14(4),CATN14(5),CATN14(6) 1 /6*'V'/,IAON11/47*7/, CATN13/'0','1','2','3','4','5','6', 2 '7','8','9'/,CVTN10/' '/ 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 61 THROUGH TEST 73 VERIFY THE CONTENTS OF CHARACTER ARRAY C ELEMENTS AND CHARACTER VARIABLES WHICH WERE INITIALLY DEFINED IN C A DATA STATEMENT. C C TEST 61 THROUGH TEST 65 VERIFY THE CONTENTS OF SELECTED C ELEMENTS OF THE ARRAY CATN11 WHICH WAS INITIALLY SET EQUAL TO THE C 47 CHARACTERS OF THE FORTRAN SUBSET LANGUAGE CHARACTER SET. C C C **** FCVS PROGRAM 204 - TEST 061 **** C C IVTNUM = 61 IF (ICZERO) 30610, 0610, 30610 0610 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(1) .EQ. 'A') IVCOMP = 1 40610 IF (IVCOMP - 1) 20610, 10610, 20610 30610 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10610, 0621, 20610 10610 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0621 20610 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0621 CONTINUE C C **** FCVS PROGRAM 204 - TEST 062 **** C C IVTNUM = 62 IF (ICZERO) 30620, 0620, 30620 0620 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(47) .EQ. '''') IVCOMP = 1 40620 IF (IVCOMP - 1) 20620, 10620, 20620 30620 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10620, 0631, 20620 10620 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0631 20620 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0631 CONTINUE C C **** FCVS PROGRAM 204 - TEST 063 **** C C IVTNUM = 63 IF (ICZERO) 30630, 0630, 30630 0630 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(46) .EQ. '.') IVCOMP = 1 40630 IF (IVCOMP - 1) 20630, 10630, 20630 30630 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10630, 0641, 20630 10630 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0641 20630 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0641 CONTINUE C C **** FCVS PROGRAM 204 - TEST 064 **** C C IVTNUM = 64 IF (ICZERO) 30640, 0640, 30640 0640 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(27) .EQ. '0') IVCOMP = 1 40640 IF (IVCOMP - 1) 20640, 10640, 20640 30640 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10640, 0651, 20640 10640 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0651 20640 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0651 CONTINUE C C **** FCVS PROGRAM 204 - TEST 065 **** C C IVTNUM = 65 IF (ICZERO) 30650, 0650, 30650 0650 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(36) .EQ. '9') IVCOMP = 1 40650 IF (IVCOMP - 1) 20650, 10650, 20650 30650 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10650, 0661, 20650 10650 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0661 20650 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0661 CONTINUE C C TEST 66 THROUGH TEST 68 VERIFY THE CONTENTS OF SELECTED C ELEMENTS OF THE ARRAY CATN12 WHICH WAS INITIALLY SET EQUAL TO THE C 26 LETTERS OF THE ALPHABET. C C C **** FCVS PROGRAM 204 - TEST 066 **** C C IVTNUM = 66 IF (ICZERO) 30660, 0660, 30660 0660 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN12(1) .EQ. 'A') IVCOMP = 1 40660 IF (IVCOMP - 1) 20660, 10660, 20660 30660 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10660, 0671, 20660 10660 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0671 20660 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0671 CONTINUE C C **** FCVS PROGRAM 204 - TEST 067 **** C C IVTNUM = 67 IF (ICZERO) 30670, 0670, 30670 0670 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN12(26) .EQ. 'Z') IVCOMP = 1 40670 IF (IVCOMP - 1) 20670, 10670, 20670 30670 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10670, 0681, 20670 10670 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0681 20670 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0681 CONTINUE C C **** FCVS PROGRAM 204 - TEST 068 **** C C IVTNUM = 68 IF (ICZERO) 30680, 0680, 30680 0680 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN12(20) .EQ. 'T') IVCOMP = 1 40680 IF (IVCOMP - 1) 20680, 10680, 20680 30680 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10680, 0691, 20680 10680 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0691 20680 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0691 CONTINUE C C TEST 69 AND TEST 70 VERIFY THE CONTENTS OF SELECTED ELEMENTS C OF THE ARRAY CATN13 WHICH WAS INITIALLY SET EQUAL TO THE TEN C NUMERIC DIGITS. C C C **** FCVS PROGRAM 204 - TEST 069 **** C C IVTNUM = 69 IF (ICZERO) 30690, 0690, 30690 0690 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN13(1) .EQ. '0') IVCOMP = 1 40690 IF (IVCOMP - 1) 20690, 10690, 20690 30690 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10690, 0701, 20690 10690 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0701 20690 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0701 CONTINUE C C **** FCVS PROGRAM 204 - TEST 070 **** C C IVTNUM = 70 IF (ICZERO) 30700, 0700, 30700 0700 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN13(10) .EQ. '9') IVCOMP = 1 40700 IF (IVCOMP - 1) 20700, 10700, 20700 30700 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10700, 0711, 20700 10700 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0711 20700 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0711 CONTINUE C C **** FCVS PROGRAM 204 - TEST 071 **** C C TEST 71 VERIFIES THE CONTENTS OF THE VARIABLE CVTN10 WHICH C WAS INITIALLY SET EQUAL TO BLANK. C IVTNUM = 71 IF (ICZERO) 30710, 0710, 30710 0710 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CVTN10 .EQ. ' ') IVCOMP = 1 40710 IF (IVCOMP - 1) 20710, 10710, 20710 30710 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10710, 0721, 20710 10710 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0721 20710 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0721 CONTINUE C C **** FCVS PROGRAM 204 - TEST 072 **** C C TEST 72 VERIFIES THE CONTENTS OF THE ARRAY CATN14 WHICH WAS C INITIALLY SET EQUAL TO ALL V'S. C IVTNUM = 72 IF (ICZERO) 30720, 0720, 30720 0720 CONTINUE IVCOMP = 0 IVCORR = 6 DO 722 I= 1,6 IF (CATN14(I) .EQ. 'V') IVCOMP = IVCOMP + 1 722 CONTINUE 40720 IF (IVCOMP - 6) 20720, 10720, 20720 30720 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10720, 0731, 20720 10720 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0731 20720 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0731 CONTINUE C C **** FCVS PROGRAM 204 - TEST 073 **** C C TEST 73 VERIFIES THE CONTENTS OF THE ARRAY IAON11 WHICH WAS C INITIALLY SET EQUAL TO ALL 7'S. C IVTNUM = 73 IF (ICZERO) 30730, 0730, 30730 0730 CONTINUE IVCOMP = 0 IVCORR = 47 DO 732 I= 1,47 IF (IAON11(I) - 7) 732, 733, 732 733 IVCOMP = IVCOMP + 1 732 CONTINUE 40730 IF (IVCOMP - 47) 20730, 10730, 20730 30730 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10730, 0741, 20730 10730 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0741 20730 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0741 CONTINUE C C TEST 74 THROUGH TEST 79 VERIFY THE COLLATING SEQUENCE C SPECIFICATIONS FOR THE FORTRAN SUBSET LANGUAGE. C C TEST 74 AND TEST 75 VERIFY THE COLLATING SEQUENCE FOR LETTERS. C C C **** FCVS PROGRAM 204 - TEST 074 **** C C IVTNUM = 74 IF (ICZERO) 30740, 0740, 30740 0740 CONTINUE IVCOMP = 1 IVCORR = 210 IF ('A' .LT. 'B') IVCOMP = IVCOMP * 2 IF ('B' .LT. 'M') IVCOMP = IVCOMP * 3 IF ('M' .LT. 'V') IVCOMP = IVCOMP * 5 IF ('V' .LT. 'Z') IVCOMP = IVCOMP * 7 40740 IF (IVCOMP - 210) 20740, 10740, 20740 30740 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10740, 0751, 20740 10740 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0751 20740 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0751 CONTINUE C C **** FCVS PROGRAM 204 - TEST 075 **** C C IVTNUM = 75 IF (ICZERO) 30750, 0750, 30750 0750 CONTINUE IVCOMP = 0 IVCORR = 25 DO 752 I=1,25 J= I + 1 IF (CATN12(J) .GT. CATN12(I)) IVCOMP = IVCOMP + 1 752 CONTINUE 40750 IF (IVCOMP - 25) 20750, 10750, 20750 30750 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10750, 0761, 20750 10750 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0761 20750 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0761 CONTINUE C C TEST 76 AND TEST 77 VERIFY THE COLLATING SEQUENCE FOR DIGITS. C C C **** FCVS PROGRAM 204 - TEST 076 **** C C IVTNUM = 76 IF (ICZERO) 30760, 0760, 30760 0760 CONTINUE IVCOMP = 1 IVCORR = 30 IF ('0' .LT. '1') IVCOMP = IVCOMP * 2 IF ('1' .LT. '5') IVCOMP = IVCOMP * 3 IF ('5' .LT. '9') IVCOMP = IVCOMP * 5 40760 IF (IVCOMP - 30) 20760, 10760, 20760 30760 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10760, 0771, 20760 10760 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0771 20760 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0771 CONTINUE C C **** FCVS PROGRAM 204 - TEST 077 **** C C IVTNUM = 77 IF (ICZERO) 30770, 0770, 30770 0770 CONTINUE IVCOMP = 0 IVCORR = 9 DO 772 I=1,9 J = I + 1 IF (CATN13(I) .LT. CATN13(J)) IVCOMP = IVCOMP + 1 772 CONTINUE 40770 IF (IVCOMP - 9) 20770, 10770, 20770 30770 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10770, 0781, 20770 10770 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0781 20770 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0781 CONTINUE C C **** FCVS PROGRAM 204 - TEST 078 **** C C TEST 78 VERIFIES THAT BLANK IS LESS THAN THE LETTER A AND BLANK C IS LESS THAN THE DIGIT ZERO. C IVTNUM = 78 IF (ICZERO) 30780, 0780, 30780 0780 CONTINUE IVCOMP = 1 IVCORR = 6 IF (' ' .LT. 'A') IVCOMP = IVCOMP * 2 IF (' ' .LT. '0') IVCOMP = IVCOMP * 3 40780 IF (IVCOMP - 6) 20780, 10780, 20780 30780 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10780, 0791, 20780 10780 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0791 20780 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0791 CONTINUE C C **** FCVS PROGRAM 204 - TEST 079 **** C C TEST 79 VERIFIES THAT THE DIGITS AND LETTERS ARE NOT INTERMIXED C IN THE COLLATING SEQUENCE. EITHER ALL OF THE DIGITS MUST PRECEDE C A OR ALL OF THE DIGITS MUST FOLLOW Z. C IVTNUM = 79 IF (ICZERO) 30790, 0790, 30790 0790 CONTINUE IVCOMP = 0 IVCORR = 10 IF ('0' .NE. 'A') GO TO 792 IVCOMP = 111 GO TO 40790 792 IF ('0' .GT. 'A') GO TO 793 C C ZERO IS LESS THAN LETTER A, SO ALL DIGITS MUST BE LESS THAN A C DO 794 I= 1,10 IF (CATN13(I) .LT. 'A') IVCOMP = IVCOMP + 1 794 CONTINUE GO TO 40790 C C ZERO IS GREATER THAN LETTER A, SO ALL DIGITS MUST BE GREATER C THAN LETTER Z. C 793 DO 795 I=1,10 IF (CATN13(I) .GT. 'Z') IVCOMP = IVCOMP + 1 795 CONTINUE 40790 IF (IVCOMP - 10) 20790,10790, 20790 30790 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10790, 0801, 20790 10790 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0801 20790 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0801 CONTINUE C C TEST 80 THROUGH TEST 85 PERFORM THE SAME COMPARISONS AS TEST 74 C THROUGH TEST 79 EXCEPT THAT THE ICHAR INTRINSIC FUNCTION IS USED C IN PLACE OF THE INDIVIDUAL CHARACTERS. C C TEST 80 AND TEST 81 VERIFY THE COLLATING SEQUENCE FOR LETTERS C USING THE ICHAR INTRINSIC FUNCTION. C C C **** FCVS PROGRAM 204 - TEST 080 **** C C IVTNUM = 80 IF (ICZERO) 30800, 0800, 30800 0800 CONTINUE IVCOMP = 1 IVCORR = 210 IVON01 = ICHAR('A') IVON02 = ICHAR('B') IVON03 = ICHAR('M') IVON04 = ICHAR('V') IVON05 = ICHAR('Z') IF (IVON01 .LT. IVON02) IVCOMP = IVCOMP * 2 IF (IVON02 .LT. IVON03) IVCOMP = IVCOMP * 3 IF (IVON03 .LT. IVON04) IVCOMP = IVCOMP * 5 IF (IVON04 .LT. IVON05) IVCOMP = IVCOMP * 7 40800 IF (IVCOMP - 210) 20800, 10800, 20800 30800 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10800, 0811, 20800 10800 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0811 20800 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0811 CONTINUE C C **** FCVS PROGRAM 204 - TEST 081 **** C C IVTNUM = 81 IF (ICZERO) 30810, 0810, 30810 0810 CONTINUE IVON01 = 0 IVON02 = 0 IVCOMP = 0 IVCORR = 25 DO 812 I=1,25 J= I + 1 IVON01 = ICHAR(CATN12(J)) IVON02 = ICHAR(CATN12(I)) IF (IVON01 .GT. IVON02) IVCOMP = IVCOMP + 1 812 CONTINUE 40810 IF (IVCOMP - 25) 20810, 10810, 20810 30810 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10810, 0821, 20810 10810 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0821 20810 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0821 CONTINUE C C TEST 82 AND TEST 83 VERIFY THE COLLATING SEQUENCE FOR DIGITS C USING THE ICHAR INTRINSIC FUNCTION. C C C **** FCVS PROGRAM 204 - TEST 082 **** C C IVTNUM = 82 IF (ICZERO) 30820, 0820, 30820 0820 CONTINUE IVCOMP = 1 IVCORR = 30 IF (ICHAR('0') .LT. ICHAR('1')) IVCOMP = IVCOMP *2 IF (ICHAR('1') .LT. ICHAR('5')) IVCOMP = IVCOMP * 3 IF (ICHAR('5') .LT. ICHAR('9')) IVCOMP = IVCOMP * 5 40820 IF (IVCOMP - 30) 20820, 10820, 20820 30820 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10820, 0831, 20820 10820 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0831 20820 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0831 CONTINUE C C **** FCVS PROGRAM 204 - TEST 083 **** C C IVTNUM = 83 IF (ICZERO) 30830, 0830, 30830 0830 CONTINUE IVON01 = 0 IVON02 = 0 IVCOMP = 0 IVCORR = 9 DO 832 I=1,9 J = I + 1 IVON01 = ICHAR(CATN13(J)) IVON02 = ICHAR(CATN13(I)) IF (IVON02 .LT. IVON01) IVCOMP = IVCOMP + 1 832 CONTINUE 40830 IF (IVCOMP -9) 20830, 10830, 20830 30830 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10830, 0841, 20830 10830 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0841 20830 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0841 CONTINUE C C **** FCVS PROGRAM 204 - TEST 084 **** C C TEST 84 VERIFIES THAT BLANK IS LESS THAN THE LETTER A AND BLANK C IS LESS THAN THE DIGIT ZERO. THE INTRINSIC FUNCTION ICHAR IS C USED IN THIS TEST. C IVTNUM = 84 IF (ICZERO) 30840, 0840, 30840 0840 CONTINUE IVCOMP = 1 IVCORR = 6 IF (ICHAR(' ') .LT. ICHAR('A')) IVCOMP = IVCOMP * 2 IF (ICHAR(' ') .LT. ICHAR('0')) IVCOMP = IVCOMP * 3 40840 IF (IVCOMP - 6) 20840, 10840, 20840 30840 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10840, 0851, 20840 10840 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0851 20840 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0851 CONTINUE C C **** FCVS PROGRAM 204 - TEST 085 **** C C TEST 85 VERIFIES THAT THE DIGITS AND LETTERS ARE NOT INTERMIXED C IN THE COLLATING SEQUENCE. THE ICHAR INTRINSIC FUNCTION IS USED C TO VERIFY THAT EITHER ALL OF THE DIGITS PRECEDE A OR ALL OF THE C DIGITS FOLLOW Z. C IVTNUM = 85 IF (ICZERO) 30850, 0850, 30850 0850 CONTINUE IVCOMP = 0 IVCORR = 10 IF (ICHAR('0') .NE. ICHAR('A')) GO TO 852 IVCOMP = 111 GO TO 40850 852 IF (ICHAR('0') .GT. ICHAR('A')) GO TO 853 C C ZERO IS LESS THAN LETTER A ACCORDING TO ICHAR INTRINSIC C FUNCTION VALUE. THUS, THE ICHAR VALUE FOR ALL DIGITS MUST BE C LESS THAN ICHAR VALUE FOR LETTER A. C DO 854 I=1,10 IF (ICHAR(CATN13(I)) .LT. ICHAR('A')) IVCOMP = IVCOMP + 1 854 CONTINUE GO TO 40850 C C ZERO IS GREATER THAN LETTER A ACCORDING TO ICHAR INTRINSIC C FUNCTION VALUE. THUS, THE ICHAR VALUE FOR ALL DIGITS MUST BE C GREATER THAN ICHAR VALUE FOR LETTER Z. C 853 DO 855 I=1,10 IF (ICHAR(CATN13(I)).GT. ICHAR('Z')) IVCOMP = IVCOMP + 1 855 CONTINUE 40850 IF (IVCOMP - 10) 20850, 10850, 20850 30850 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10850, 0861, 20850 10850 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0861 20850 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0861 CONTINUE C C **** FCVS PROGRAM 204 - TEST 086 **** C C THE ARRAY IAON11 IS SET EQUAL TO THE ICHAR INTRINSIC FUNCTION C VALUE OF THE CORRESPONDING ELEMENT IN THE CATN11 ARRAY. THE C IAON11 ARRAY IS THEN SORTED IN ASCENDING ORDER, AND ENTRIES IN C THE CATN11 ARRAY ARE ARRANGED ACCORDING TO THE ASCENDING SORT C ORDER IN IAON11. THE RESULTING ORDER OF THE CATN11 ARRAY GIVES C THE PROCESSOR'S COLLATING SEQUENCE FOR THE FORTRAN SUBSET LANGUAGE C CHARACTER SET. THE CATN11 ARRAY IS PRINTED AND MUST BE VISUALLY C CHECKED TO DETERMINE IF THE COLLATING SEQUENCE RULES ARE FOLLOWED C BY THE COMPILER. C IVTNUM = 86 IF (ICZERO) 30860, 0860, 30860 0860 CONTINUE IVCOMP = 0 C C INITIALIZE IAON11 TO ZERO. DO 862 I=1,47 IAON11(I) = 0 862 CONTINUE C C PLACE ICHAR INTRINSIC VALUE IN IAON11. C DO 863 I= 1,47 IAON11(I) = ICHAR(CATN11(I)) 863 CONTINUE C C SORT FORTRAN CHARACTERS ACCORDING TO THEIR POSITION IN THE C COLLATING SEQUENCE. C DO 864 I=1,46 J=I N = I + 1 DO 865 K = N,47 IF (IAON11(J) .LT. IAON11(K)) GO TO 865 J=K 865 CONTINUE IVON01 = IAON11(J) IAON11(J)= IAON11(I) IAON11(I)= IVON01 CVTN01 = CATN11(J) CATN11(J) = CATN11(I) CATN11(I) = CVTN01 864 CONTINUE WRITE (I02, 866) CATN11 WRITE (I02, 867) IAON11 866 FORMAT (3X,'FORTRAN CHARACTER SET IN ASCENDING ORDER',3X,/ 1 3X, 'VISUAL VERIFICATION REQUIRED' //,3X, 12(A1,3X)/ 2 3X, 12(A1,3X)/ 3X, 12(A1,3X)/ 3X, 11(A1,3X)) 867 FORMAT ( 3X/3X, 'ICHAR INTRINSIC FUNCTION VALUES FOR FORTRAN ', 1 'CHARACTER SET'// 3X, 12I4/ 3X, 12I4/ 3X, 12I4/ 2 3X,11I4//) IVCOMP = 1 IVCORR = 1 40860 IF (IVCOMP - 1) 20860, 10860, 20860 30860 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10860, 0871, 20860 10860 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0871 20860 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0871 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM204) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM204) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM204 FM205.f 480976123 170 2 100666 27102 ` *HEADER,FORTR,FM205 *FILES1,FORTR,FM205,X PROGRAM FM205 C C C THE ROUTINE FM205 TESTS CHARACTER CONSTANTS, CHARACTER C VARIABLES, AND CHARACTER ARRAY ELEMENTS WITH A MAXIMUM LENGTH C OF 57 CHARACTERS. CHARACTER ASSIGNMENT STATEMENTS AND CHARACTER C RELATIONAL EXPRESSIONS OF THE FOLLOWING STATEMENT FORMS ARE C TESTED IN THIS ROUTINE. C C (1) CHARACTER ASSIGNMENT STATEMENTS C C CHARACTER VARIABLE = CHARACTER CONSTANT, C CHARACTER VARIABLE = CHARACTER VARIABLE, C CHARACTER ARRAY ELEMENT = CHARACTER CONSTANT, C CHARACTER ARRAY ELEMENT = CHARACTER VARIABLE, C CHARACTER ARRAY ELEMENT = CHARACTER ARRAY ELEMENT, C CHARACTER VARIABLE = CHARACTER ARRAY ELEMENT. C C THE CHARACTER ENTITIES IN AN ASSIGNMENT STATEMENT ARE THE C SAME LENGTH. C C (2) CHARACTER RELATIONAL EXPRESSIONS C C CHARACTER VARIABLE RELOP CHARACTER CONSTANT, C CHARACTER VARIABLE RELOP CHARACTER VARIABLE, C CHARACTER ARRAY ELEMENT RELOP CHARACTER CONSTANT, C CHARACTER ARRAY ELEMENT RELOP CHARACTER VARIABLE, C CHARACTER ARRAY ELEMENT RELOP CHAR. ARRAY ELEMENT. C C THE CHARACTER ENTITIES IN A RELATIONAL EXPRESSION ARE THE C SAME LENGTH. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978. C C SECTION 4.8, CHARACTER TYPE C SECTION 4.8.1, CHARACTER CONSTANT C SECTION 6.2, CHARACTER EXPRESSIONS C SECTION 6.3.4, CHARACTER RELATIONAL EXPRESSION C SECTION 6.3.5, INTERPRETATION OF CHARACTER RELATIONAL C EXPRESSIONS C SECTION 8.4,2, CHARACTER TYPE-STATEMENT C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C CHARACTER CVTN01*3,CVTN02*7,CVTN03*12 CHARACTER CVTN04*25,CVTN05*41,CVTN06*57 CHARACTER CVTN07*3,CVTN08*7,CVTN09*12 CHARACTER CVTN10*25,CVTN11*41,CVTN12*57 CHARACTER CATN11(6)*3,CATN12(7)*7,CATN13(3)*12 CHARACTER CATN14(2)*25,CATN15(10)*41,CATN16(4)*57 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 87 THROUGH TEST 92 VERIFY THE CHARACTER ASSIGNMENT C STATEMENT C C CHARACTER VARIABLE = CHARACTER CONSTANT C C IS CORRECT. THE VARIABLE AND CONSTANT ARE THE SAME LENGTH, AND C THE LENGTHS 3, 7, 12, 25, 41, AND 57 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 087 **** C C IVTNUM = 87 IF (ICZERO) 30870, 0870, 30870 0870 CONTINUE IVCOMP = 0 CVTN01 = 'ABC' IF (CVTN01 .EQ. 'ABC') IVCOMP = 1 IVCORR = 1 40870 IF (IVCOMP - 1) 20870, 10870, 20870 30870 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10870, 0881, 20870 10870 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0881 20870 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0881 CONTINUE C C **** FCVS PROGRAM 205 - TEST 088 **** C C IVTNUM = 88 IF (ICZERO) 30880, 0880, 30880 0880 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN02 = 'ABCDEFG' IF (CVTN02 .EQ. 'ABCDEFG') IVCOMP = 1 40880 IF (IVCOMP - 1) 20880, 10880, 20880 30880 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10880, 0891, 20880 10880 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0891 20880 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0891 CONTINUE C C **** FCVS PROGRAM 205 - TEST 089 **** C C IVTNUM = 89 IF (ICZERO) 30890, 0890, 30890 0890 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'ABCDEFGHIJKL' IF (CVTN03 .EQ. 'ABCDEFGHIJKL') IVCOMP = 1 40890 IF (IVCOMP - 1) 20890, 10890, 20890 30890 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10890, 0901, 20890 10890 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0901 20890 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0901 CONTINUE C C **** FCVS PROGRAM 205 - TEST 090 **** C C IVTNUM = 90 IF (ICZERO) 30900, 0900, 30900 0900 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN04 = 'ABCDEFGHIJKLMNOPQRSTUVWXY' IF (CVTN04 .EQ. 'ABCDEFGHIJKLMNOPQRSTUVWXY') IVCOMP = 1 40900 IF (IVCOMP - 1) 20900, 10900, 20900 30900 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10900, 0911, 20900 10900 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0911 20900 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0911 CONTINUE C C **** FCVS PROGRAM 205 - TEST 091 **** C C IVTNUM = 91 IF (ICZERO) 30910, 0910, 30910 0910 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN05 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO' IF (CVTN05 .EQ. 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO') 1 IVCOMP = 1 40910 IF (IVCOMP - 1) 20910, 10910, 20910 30910 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10910, 0921, 20910 10910 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0921 20910 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0921 CONTINUE C C **** FCVS PROGRAM 205 - TEST 092 **** C C IVTNUM = 92 IF (ICZERO) 30920, 0920, 30920 0920 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN06 = 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE' IF (CVTN06 .EQ. 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE') 2 IVCOMP = 1 40920 IF (IVCOMP - 1) 20920, 10920, 20920 30920 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10920, 0931, 20920 10920 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0931 20920 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0931 CONTINUE C C TEST 93 THROUGH TEST 96 VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER VARIABLE = CHARACTER CONSTANT C CHARACTER VARIABLE = CHARACTER VARIABLE C C ARE CORRECT. THE VARIABLES AND CONSTANT ARE THE SAME LENGTH, C AND THE LENGTHS 3, 12, 25, AND 57 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 093 **** C C IVTNUM = 93 IF (ICZERO) 30930, 0930, 30930 0930 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN07 = ' ' CVTN01 = 'ABC' CVTN07 = CVTN01 IF (CVTN07 .EQ. 'ABC') IVCOMP = 1 40930 IF (IVCOMP - 1) 20930, 10930, 20930 30930 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10930, 0941, 20930 10930 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0941 20930 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0941 CONTINUE C C **** FCVS PROGRAM 205 - TEST 094 **** C C IVTNUM = 94 IF (ICZERO) 30940, 0940, 30940 0940 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'ABCDEFGHIJKL' CVTN09 = ' ' CVTN09 = CVTN03 IF (CVTN09 .EQ. 'ABCDEFGHIJKL') IVCOMP = 1 40940 IF (IVCOMP - 1) 20940, 10940, 20940 30940 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10940, 0951, 20940 10940 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0951 20940 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0951 CONTINUE C C **** FCVS PROGRAM 205 - TEST 095 **** C C IVTNUM = 95 IF (ICZERO) 30950, 0950, 30950 0950 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN04 = 'ABCDEFGHIJKLMNOPQRSTUVWXY' CVTN10 = ' ' CVTN10 = CVTN04 IF (CVTN10 .EQ. 'ABCDEFGHIJKLMNOPQRSTUVWXY') IVCOMP = 1 40950 IF (IVCOMP - 1) 20950, 10950, 20950 30950 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10950, 0961, 20950 10950 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0961 20950 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0961 CONTINUE C C **** FCVS PROGRAM 205 - TEST 096 **** C C IVTNUM = 96 IF (ICZERO) 30960, 0960, 30960 0960 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN12 = ' ' CVTN06 = 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE' CVTN12 = CVTN06 IF (CVTN12 .EQ. 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE') 2 IVCOMP = 1 40960 IF (IVCOMP - 1) 20960, 10960, 20960 30960 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10960, 0971, 20960 10960 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0971 20960 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0971 CONTINUE C C TEST 97 AND TEST 98 VERIFY THE CHARACTER ASSIGNMENT C STATEMENT C C CHARACTER ARRAY ELEMENT = CHARACTER CONSTANT C C IS CORRECT. THE ARRAY ELEMENT AND CONSTANT ARE THE SAME LENGTH, C AND THE LENGTHS 25 AND 41 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 097 **** C C IVTNUM = 97 IF (ICZERO) 30970, 0970, 30970 0970 CONTINUE IVCOMP = 0 IVCORR = 1 CATN14(1) = 'ABCDEFGHIJKLMNOPQRSTUVWXY' IF (CATN14(1) .EQ. 'ABCDEFGHIJKLMNOPQRSTUVWXY') IVCOMP = 1 40970 IF (IVCOMP - 1) 20970, 10970, 20970 30970 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10970, 0981, 20970 10970 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0981 20970 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0981 CONTINUE C C **** FCVS PROGRAM 205 - TEST 098 **** C C IVTNUM = 98 IF (ICZERO) 30980, 0980, 30980 0980 CONTINUE IVCOMP = 0 IVCORR = 1 CATN15(8) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO' IF (CATN15(8) .EQ. 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO') IVCOMP = 1 40980 IF (IVCOMP - 1) 20980, 10980, 20980 30980 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10980, 0991, 20980 10980 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0991 20980 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0991 CONTINUE C C TEST 99 AND TEST 100 VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER VARIABLE = CHARACTER CONSTANT C CHARACTER ARRAY ELEMENT = CHARACTER VARIABLE C C ARE CORRECT. THE CHARACTER ENTITIES ARE THE SAME LENGTH, C AND THE LENGTHS 3 AND 57 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 099 **** C C IVTNUM = 99 IF (ICZERO) 30990, 0990, 30990 0990 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = 'ABC' CATN11(5) = CVTN01 IF (CATN11(5) .EQ. 'ABC') IVCOMP = 1 40990 IF (IVCOMP - 1) 20990, 10990, 20990 30990 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10990, 1001, 20990 10990 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1001 20990 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1001 CONTINUE C C **** FCVS PROGRAM 205 - TEST 100 **** C C IVTNUM = 100 IF (ICZERO) 31000, 1000, 31000 1000 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN06 = 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE' CATN16(3) = CVTN06 IF (CATN16(3) .EQ. 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE') 2 IVCOMP = 1 41000 IF (IVCOMP - 1) 21000, 11000, 21000 31000 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11000, 1011, 21000 11000 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1011 21000 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1011 CONTINUE C C TEST 101 AND TEST 102 VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER ARRAY ELEMENT = CHARACTER CONSTANT C CHARACTER ARRAY ELEMENT = CHARACTER ARRAY ELEMENT C C ARE CORRECT. THE CHARACTER ENTITIES ARE THE SAME LENGTH, AND C THE LENGTHS 7 AND 41 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 101 **** C C IVTNUM = 101 IF (ICZERO) 31010, 1010, 31010 1010 CONTINUE IVCOMP = 0 IVCORR = 1 CATN12(3) = 'ABCDEFG' CATN12(4) = CATN12(3) IF (CATN12(4) .EQ. 'ABCDEFG') IVCOMP = 1 41010 IF (IVCOMP - 1) 21010, 11010, 21010 31010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11010, 1021, 21010 11010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1021 21010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1021 CONTINUE C C **** FCVS PROGRAM 205 - TEST 102 **** C C IVTNUM = 102 IF (ICZERO) 31020, 1020, 31020 1020 CONTINUE IVCOMP = 0 IVCORR = 1 CATN15(3) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO' CATN15(4) = CATN15(3) IF (CATN15(4) .EQ. 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO') IVCOMP = 1 41020 IF (IVCOMP - 1) 21020, 11020, 21020 31020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11020, 1031, 21020 11020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1031 21020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1031 CONTINUE C C TEST 103 AND TEST 104 VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER ARRAY ELEMENT = CHARACTER CONSTANT C CHARACTER VARIABLE = CHARACTER ARRAY ELEMENT C C ARE CORRECT. THE CHARACTER ENTITIES ARE THE SAME LENGTH, AND C THE LENGTHS 12 AND 25 ARE USED. C C C **** FCVS PROGRAM 205 - TEST 103 **** C C IVTNUM = 103 IF (ICZERO) 31030, 1030, 31030 1030 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(1) = 'ABCDEFGHIJKL' CVTN09 = ' ' CVTN09 = CATN13(1) IF (CVTN09 .EQ. 'ABCDEFGHIJKL') IVCOMP = 1 41030 IF (IVCOMP - 1) 21030, 11030, 21030 31030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11030, 1041, 21030 11030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1041 21030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1041 CONTINUE C C **** FCVS PROGRAM 205 - TEST 104 **** C C IVTNUM = 104 IF (ICZERO) 31040, 1040, 31040 1040 CONTINUE IVCOMP = 0 IVCORR = 1 CATN14(1) = 'ABCDEFGHIJKLMNOPQRSTUVWXY' CVTN10 = ' ' CVTN10 = CATN14(1) IF (CVTN10 .EQ. 'ABCDEFGHIJKLMNOPQRSTUVWXY') IVCOMP = 1 41040 IF (IVCOMP - 1) 21040, 11040, 21040 31040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11040, 1051, 21040 11040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1051 21040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1051 CONTINUE C C TEST 105 THROUGH TEST 110 VERIFY THE CHARACTER RELATIONAL C EXPRESSION USING EACH OF THE SIX RELATIONAL OPERATORS IN THE C STATEMENT FORM C C CHARACTER VARIABLE RELOP CHARACTER CONSTANT C C THE CHARACTER ENTITIES ARE THE SAME LENGTH, AND THE LENGTHS C 3, 7, 12, 25, 41, AND 57 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 105 **** C C IVTNUM = 105 IF (ICZERO) 31050, 1050, 31050 1050 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN07 = 'ZAB' IF (CVTN07 .EQ. 'ZAB') IVCOMP = 1 41050 IF (IVCOMP - 1) 21050, 11050, 21050 31050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11050, 1061, 21050 11050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1061 21050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1061 CONTINUE C C **** FCVS PROGRAM 205 - TEST 106 **** C C IVTNUM = 106 IF (ICZERO) 31060, 1060, 31060 1060 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN08 = 'ABDDEEF' IF (CVTN08 .GT. 'ABCDEEF') IVCOMP = 1 41060 IF (IVCOMP - 1) 21060, 11060, 21060 31060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11060, 1071, 21060 11060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1071 21060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1071 CONTINUE C C **** FCVS PROGRAM 205 - TEST 107 **** C C IVTNUM = 107 IF (ICZERO) 31070, 1070, 31070 1070 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN09 = 'ZXYZZZABCDEF' IF (CVTN09 .LT. 'ZXYZZZACCDEF') IVCOMP = 1 41070 IF (IVCOMP - 1) 21070, 11070, 21070 31070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11070, 1081, 21070 11070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1081 21070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1081 CONTINUE C C **** FCVS PROGRAM 205 - TEST 108 **** C C IVTNUM = 108 IF (ICZERO) 31080, 1080, 31080 1080 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN10 = 'ABCDEFGHIJKKMNOPQRSTUVWXY' IF ('ABCDEFGHIJKLMNOPQRSTUVWXY' .NE. CVTN10) IVCOMP = 1 41080 IF (IVCOMP - 1) 21080, 11080, 21080 31080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11080, 1091, 21080 11080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1091 21080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1091 CONTINUE C C **** FCVS PROGRAM 205 - TEST 109 **** C C IVTNUM = 109 IF (ICZERO) 31090, 1090, 31090 1090 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN11 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZAABCDEFGHIJKLMN' IF ('ABCDEFGHIJKLMNOPQRSTUVWXYZABBCDEFGHIJKLMN' .GE. CVTN11) 1 IVCOMP = 1 41090 IF (IVCOMP - 1) 21090, 11090, 21090 31090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11090, 1101, 21090 11090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1101 21090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1101 CONTINUE C C **** FCVS PROGRAM 205 - TEST 110 **** C C IVTNUM = 110 IF (ICZERO) 31100, 1100, 31100 1100 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN12 = 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAAAAA' IF ('ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYAAAAAA' 1 .LE. CVTN12) IVCOMP = 1 41100 IF (IVCOMP - 1) 21100, 11100, 21100 31100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11100, 1111, 21100 11100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1111 21100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1111 CONTINUE C C TEST 111 AND TEST 112 VERIFY THE CHARACTER RELATIONAL C EXPRESSION OF THE FORM C C CHARACTER VARIABLE RELOP CHARACTER VARIABLE C C THE CHARACTER ENTITIES ARE THE SAME LENGTH, AND THE LENGTHS 3 C AND 41 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 111 **** C C IVTNUM = 111 IF (ICZERO) 31110, 1110, 31110 1110 CONTINUE IVCOMP = 1 IVCORR = 3 CVTN01 = 'ABC' CVTN07 = 'BBC' IF (CVTN01 .EQ. CVTN07) IVCOMP = IVCOMP * 2 IF (CVTN01 .NE. CVTN07) IVCOMP = IVCOMP * 3 41110 IF (IVCOMP - 3) 21110, 11110, 21110 31110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11110, 1121, 21110 11110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1121 21110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1121 CONTINUE C C **** FCVS PROGRAM 205 - TEST 112 **** C C IVTNUM = 112 IF (ICZERO) 31120, 1120, 31120 1120 CONTINUE IVCOMP = 1 IVCORR = 6 CVTN05 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO' CVTN11 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNO' IF (CVTN05 .GE. CVTN11) IVCOMP = IVCOMP * 2 IF (CVTN05 .LE. CVTN11) IVCOMP = IVCOMP * 3 41120 IF (IVCOMP - 6) 21120, 11120, 21120 31120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11120, 1131, 21120 11120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1131 21120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1131 CONTINUE C C TEST 113 AND TEST 114 VERIFY THE CHARACTER RELATIONAL C EXPRESSION OF THE FORM C C CHARACTER ARRAY ELEMENT RELOP CHARACTER CONSTANT C C THE CHARACTER ENTITIES ARE THE SAME LENGTH, AND THE LENGTHS 7 AND C 25 ARE USED IN THESE TESTS. C C C **** FCVS PROGRAM 205 - TEST 113 **** C C IVTNUM = 113 IF (ICZERO) 31130, 1130, 31130 1130 CONTINUE IVCOMP = 1 IVCORR = 6 CATN12(3) = 'AB012CD' IF (CATN12(3) .LT. 'AB013CD') IVCOMP = IVCOMP * 2 IF ('AB013CD' .GT. CATN12(3)) IVCOMP = IVCOMP * 3 41130 IF (IVCOMP - 6) 21130, 11130, 21130 31130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11130, 1141, 21130 11130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1141 21130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1141 CONTINUE C C **** FCVS PROGRAM 205 - TEST 114 **** C C IVTNUM = 114 IF (ICZERO) 31140, 1140, 31140 1140 CONTINUE IVCOMP = 1 IVCORR = 2 CATN14(1) = 'ABCDEFGHIJKLMNOPQRSTUVWXX' IF (CATN14(1) .NE. 'ABCDEFGHIJKLMNOPQRSTUVWXY') 1 IVCOMP = IVCOMP * 2 IF (CATN14(1) .EQ. 'ABCDEFGHIJKLMNOPQRSTUVWXY') 1 IVCOMP = IVCOMP * 3 41140 IF (IVCOMP - 2) 21140, 11140, 21140 31140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11140, 1151, 21140 11140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1151 21140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1151 CONTINUE C C **** FCVS PROGRAM 205 - TEST 115 **** C C TEST 115 VERIFIES THE CHARACTER RELATIONAL EXPRESSION C OF THE FORM C C CHARACTER ARRAY ELEMENT RELOP CHARACTER VARIABLE C C THE CHARACTER ENTITIES ARE 12 CHARACTERS IN LENGTH. C IVTNUM = 115 IF (ICZERO) 31150, 1150, 31150 1150 CONTINUE IVCOMP = 1 IVCORR = 2 CATN13(3) = 'ABC+AAB/CDDF' IF (CATN13(3) .LT. 'BBC+AAB/CCCC') IVCOMP = IVCOMP * 2 IF (CATN13(3) .GT. 'BBC+AAB/CCCC') IVCOMP = IVCOMP * 3 41150 IF (IVCOMP - 2) 21150, 11150, 21150 31150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11150, 1161, 21150 11150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1161 21150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1161 CONTINUE C C **** FCVS PROGRAM 205 - TEST 116 **** C C TEST 116 VERIFIES THE CHARACTER RELATIONAL EXPRESSION C OF THE FORM C C CHARACTER ARRAY ELEMENT RELOP CHARACTER ARRAY ELEMENT C C THE CHARACTER ENTITIES ARE 57 CHARACTERS IN LENGTH. C IVTNUM = 116 IF (ICZERO) 31160, 1160, 31160 1160 CONTINUE IVCOMP = 1 IVCORR = 30 CATN16(1) = 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ//012' CATN16(2) = 1 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ//112' IF (CATN16 (1) .LT. CATN16 (2)) IVCOMP = IVCOMP * 2 IF (CATN16 (1) .NE. CATN16 (2)) IVCOMP = IVCOMP * 3 IF (CATN16 (1) .LE. CATN16 (2)) IVCOMP = IVCOMP * 5 41160 IF (IVCOMP - 30) 21160, 11160, 21160 31160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 11160, 1171, 21160 11160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 1171 21160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 1171 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM205) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM205) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM205 FM251.f 480976125 170 2 100666 16469 ` *HEADER,FORTR,FM251 *FILES1,FORTR,FM251,X PROGRAM FM251 C C C C THIS ROUTINE TESTS THE IMPLICIT STATEMENT FOR DECLARING C VARIABLES AS TYPE LOGICAL. THE TYPE OF A VARIABLE ( LOGICAL, C INTEGER, OR REAL ) IS SET BY BOTH IMPLICIT STATEMENTS AND ALSO C BY EXPLICIT TYPE STATEMENTS. TESTS ARE MADE TO CHECK THAT C EXPLICIT TYPE STATEMENTS OVERIDE THE TYPE SET BY AN IMPLICIT C STATEMENT FOR THE VARIABLES LISTED. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1977 C SECTION 4.7, LOGICAL TYPE C SECTION 8.4.1, LOGICAL TYPE STAEMENT C SECTION 8.5, IMPLICIT STATEMENT C SECTION 11.5, LOGICAL IF STATEMENT C C C FM016 - TESTS LOGICAL TYPE STATEMENTS WITH VARIOUS FORMS OF C LOGICAL CONSTANTS AND VARIABLES. C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C IMPLICIT LOGICAL (M,N) IMPLICIT LOGICAL ( E-H, O, P-Q, S-T, X-Y ), INTEGER ( U-W ) IMPLICIT INTEGER (A, B), REAL (I, J) INTEGER IVCOMP, IVPASS, IVCORR, IVTNUM, IVDELE, IVFAIL, I01, I02 INTEGER ICZERO INTEGER MVTN01 REAL NVTN01 LOGICAL MVTN02, NVTN02, MATN21(3,3) LOGICAL AVTN01 LOGICAL IVTN01 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 251 - TEST 001 **** C C TEST 001 ASSIGNS A LOGICAL VALUE OF .TRUE. TO MVIN01 WHICH WAS C SPECIFIED AS TYPE LOGICAL IN AN IMPLICIT STATEMENT. C IMPLICIT LOGICAL (M,N) C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 MVIN01 = .TRUE. IF ( MVIN01 ) IVCOMP = 1 IVCORR = 1 40010 IF ( IVCOMP - 1 ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 251 - TEST 002 **** C C TEST 002 ASSIGNS A LOGICAL VALUE OF .FALSE. TO NVIN01 WHICH C WAS SPECIFIED AS TYPE LOGICAL IN AN IMPLICIT STATEMENT. C IMPLICIT LOGICAL (M,N) C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 1 LCON01 = .FALSE. NVIN01 = LCON01 IF ( NVIN01 ) IVCOMP = 0 IVCORR = 1 40020 IF ( IVCOMP - 1 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 251 - TEST 003 **** C C TEST 003 ASSIGNS AN INTEGER VALUE OF 4 TO MVTN01 WHICH C WAS SPECIFIED AS TYPE INTEGER EXPLICITLY IN A TYPE STATEMENT. C INTEGER MVTN01 C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT INTEGER TYPE C STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD C SET THE TYPE AS LOGICAL. C IMPLICIT LOGICAL (M,N) C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE RVCOMP = 10.0 MVTN01 = 4 RVCOMP = MVTN01/5 RVCORR = 0.0 40030 IF ( RVCOMP ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0041 CONTINUE C C **** FCVS PROGRAM 251 - TEST 004 **** C C TEST 004 ASSIGNS A REAL VALUE OF 4.0 TO NVTN01 WHICH C WAS SPECIFIED AS TYPE REAL EXPLICITLY IN A TYPE STATEMENT. C REAL NVTN01 C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT REAL TYPE C STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD C SET THE TYPE AS LOGICAL. C IMPLICIT LOGICAL (M,N) C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE RVCOMP = 10.0 NVTN01 = 4.0 RVCOMP = NVTN01/5 RVCORR = 0.8 40040 IF ( RVCOMP - 0.79995 ) 20040, 10040, 40041 40041 IF ( RVCOMP - 0.80005 ) 10040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0051 CONTINUE C C **** FCVS PROGRAM 251 - TEST 005 **** C C TEST 005 ASSIGNS A LOGICAL VALUE OF .TRUE. TO MVTN02 WHICH WAS C SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT AFTER ALSO C HAVING ITS FIRST LETTER M SPECIFIED AS TYPE LOGICAL IN AN C IMPLICIT STATEMENT. C IMPLICIT LOGICAL (M,N) C LOGICAL MVTN02 C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 0 LCON02 = .TRUE. MVTN02 = LCON02 IF ( MVTN02 ) IVCOMP = 1 IVCORR = 1 40050 IF ( IVCOMP - 1 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 251 - TEST 006 **** C C TEST 006 ASSIGNS A LOGICAL VALUE OF .FALSE. TO NVTN02 WHICH WAS C SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT AFTER ALSO C HAVING ITS FIRST LETTER N SPECIFIED AS TYPE LOGICAL IN AN C IMPLICIT STATEMENT. C IMPLICIT LOGICAL (M,N) C LOGICAL NVTN02 C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 NVTN02 = .FALSE. IF ( NVTN02 ) IVCOMP = 0 IVCORR = 1 40060 IF ( IVCOMP - 1 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 251 - TEST 007 **** C C TEST 007 ASSIGNS A LOGICAL VALUE OF .TRUE. TO THE ARRAY ELEMENT C MATN21(1,1) WHICH WAS SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT C TYPE STATEMENT AFTER ALSO HAVING ITS FIRST LETTER M SPECIFIED AS C TYPE LOGICAL IN AN IMPLICIT STATEMENT. C IMPLICIT LOGICAL (M,N) C LOGICAL MATN21(3,3) C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 MATN21(1,1) = .TRUE. IF ( MATN21(1,1) ) IVCOMP = 1 IVCORR = 1 40070 IF ( IVCOMP - 1 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 251 - TEST 008 **** C C TEST 008 ASSIGNS AN INTEGER VALUE OF 4 TO AVIN01 WHICH WAS C SPECIFIED AS TYPE INTEGER IN AN IMPLICIT STATEMENT. C IMPLICIT INTEGER (A,B) C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE RVCOMP = 10.0 AVIN01 = 4 RVCOMP = AVIN01/5 RVCORR = 0.0 40080 IF ( RVCOMP ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0091 CONTINUE C C **** FCVS PROGRAM 251 - TEST 009 **** C C TEST 009 ASSIGNS A LOGICAL VALUE OF .TRUE. TO AVTN01 WHICH WAS C SPECIFIED AS TYPE LOGICAL EXPLICITLY IN A TYPE STATEMENT. C LOGICAL AVTN01 C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT LOGICAL TYPE C STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD C SET THE TYPE AS INTEGER. C IMPLICIT INTEGER (A,B) C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 AVTN01 = .TRUE. IF ( AVTN01 ) IVCOMP = 1 IVCORR = 1 40090 IF ( IVCOMP - 1 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 251 - TEST 010 **** C C TEST 010 ASSIGNS A REAL VALUE OF 4.0 TO IVIN01 WHICH WAS C SPECIFIED AS REAL IMPLICITLY IN AN IMPLICIT STATEMENT. C IMPLICIT REAL (I,J) C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE RVCOMP = 10.0 IVIN01 = 4.0 RVCOMP = IVIN01/5 RVCORR = 0.8 40100 IF ( RVCOMP - 0.79995 ) 20100, 10100, 40101 40101 IF ( RVCOMP - 0.80005 ) 10100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0111 CONTINUE C C **** FCVS PROGRAM 251 - TEST 011 **** C C TEST 011 ASSIGNS A LOGICAL VALUE OF .FALSE. TO IVTN01 WHICH WAS C SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT. C LOGICAL IVTN01 C THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT TYPE STATEMENT C CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD SET THE TYPE C AS REAL. C IMPLICIT REAL (I,J) C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 1 IVTN01 = .FALSE. IF ( IVTN01 ) IVCOMP = 0 IVCORR = 1 40110 IF ( IVCOMP - 1 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C C THE NEXT TWO TESTS CHECK THE RANGE OF LETTERS THAT C ARE SET BY THE IMPLICIT STATEMENT AS FOLLOWS - C IMPLICIT LOGICAL ( E-H, O, P-Q, S-T, X-Y ), INTEGER ( U-W ) C C C C **** FCVS PROGRAM 251 - TEST 012 **** C C TEST 012 ASSIGNS A LOGICAL VALUE OF .TRUE. TO A SERIES OF C VARIABLES THAT BEGIN WITH THE FOLLOWING LETTERS - C C E F G H O P Q S T X Y C C VARIABLES THAT BEGIN WITH THESE LETTERS SHOULD BE IMPLICITLY TYPED C LOGICAL BECAUSE OF THE IMPLICIT STATEMENT USING BOTH THE RANGE AND C SINGLE LETTER SPECIFICATION FOR TYPE LOGICAL. THE VARIABLE XVIN01 C IS FIRST USED IN A LOGICAL IF STATEMENT. THE TRUE BRANCH SHOULD C BE TAKEN TO SET IVCOMP = 1. THEN EACH OF THE VARIABLES SET TO C .TRUE. ARE USED IN A SECOND LOGICAL IF STATEMENT WHICH IS ONE C LARGE LOGICAL CONJUNCTION ( VARIABLE .AND. VARIABLE .AND. ... ). C THE TRUE BRANCH SHOULD BE TAKEN TO INCREMENT THE VALUE OF IVCOMP C TO A FINAL VALUE OF THREE (3). C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 0 IVCORR = 3 EVIN01 = .TRUE. FVIN01 = .TRUE. GVIN01 = .TRUE. HVIN01 = .TRUE. OVIN01 = .TRUE. PVIN01 = .TRUE. QVIN01 = .TRUE. SVIN01 = .TRUE. TVIN01 = .TRUE. XVIN01 = .TRUE. YVIN01 = .TRUE. IF ( XVIN01 ) IVCOMP = 1 IF ( EVIN01 .AND. FVIN01 .AND. GVIN01 .AND. HVIN01 .AND. OVIN01 1.AND. PVIN01 .AND. QVIN01 .AND. SVIN01 .AND. TVIN01 .AND. XVIN01 2.AND. YVIN01 ) IVCOMP = IVCOMP + 2 40120 IF ( IVCOMP - 3 ) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 251 - TEST 013 **** C C TEST 013 ASSIGNS AN INTEGER VALUE OF 4 TO VVIN01 WHICH C WAS SPECIFIED AS TYPE INTEGER IMPLICITLY USING THE RANGE OF C LETTERS U-W IN THE IMPLICIT INTEGER SPECIFICATION STATEMENT. C DIVISION IS USED TO DETERMINE WHETHER VVIN01 IS TYPE INTEGER. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVCOMP = 10.0 VVIN01 = 4 RVCOMP = VVIN01/5 RVCORR = 0.0 40130 IF ( RVCOMP ) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM251) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM251) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM251 FM252.f 480976127 170 2 100666 15130 ` *HEADER,FORTR,FM252 *FILES1,FORTR,FM252,X PROGRAM FM252 C C C C C THIS PROGRAM TESTS REDEFINITION OF STATEMENT LABELS WITH THE C ASSIGN STATEMENT IN CONJUNCTION WITH THE ASSIGNED GO TO STATEMENT. C THE OPTIONAL COMMA IN THE SYNTAX OF THE ASSIGNED GO TO IS TESTED. C THE RANGE OF STATEMENT LABELS ( FROM 00001 TO 99999 ) IS TESTED C USING THE ASSIGN STATEMENT AND THE ASSIGNED GO TO STATEMENT. C IT ALSO TESTS THE OPTIONAL COMMA IN THE SYNTAX OF THE COMPUTED C GO TO STATEMENT AND HAS TESTS ON THE RANGE OF THE INDEX IN THE C COMPUTED GO TO. C C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C SECTION 10.3, STATEMENT LABEL ASSIGNMENT (ASSIGN) C SECTION 11.2, COMPUTED GO TO STATEMENT C SECTION 11.3, ASSIGNED GO TO STATEMENT C C C FM013 - SUBSET LEVEL TESTS OF THE ASSIGN STATEMENT AND THE C ASSIGNED GO TO STATEMENT. C C FM014, FM052, AND FM053 - SUBSET LEVEL TESTS OF THE COMPUTED C GO TO STATEMENT. C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 252 - TEST 001 **** C C TEST 001 IS AN ASSIGN STATEMENT IN WHICH THE STATEMENT C LABEL IS ACTUALLY FOR A FORMAT STATEMENT. IN 10.3 - THE STATEMENT C LABEL MUST BE THE LABEL OF AN EXECUTABLE STATEMENT OR A FORMAT C STATEMENT. THE ASSIGN STATEMENT IS FOLLOWED BY A SIMPLE WRITE C TO THE PRINTER. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE ASSIGN 0012 TO I 0012 FORMAT (51H **** ASSIGN FORMAT NUMBER TO INTEGER VARIABLE ****) WRITE (I02, I) C ***** VISUALLY CHECK THE OUTPUT PRINTER LISTING ***** IVCOMP = 0 IVCORR = 0 40010 IF ( IVCOMP ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 252 - TEST 002 **** C C TEST 002 IS A TEST OF THE ASSIGNED GO TO STATEMENT WITH THE C OPTIONAL COMMA INTENTIONALLY DELETED FROM THE SYNTAX. C GO TO I (S1, S2, S3) C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 0 IVCORR = 1 ASSIGN 0023 TO J GO TO 0025 0022 IVCOMP = 0 GO TO 40020 0023 IVCOMP = 1 GO TO 40020 0024 IVCOMP = 0 GO TO 40020 0025 GO TO J (0022, 0023, 0024) C NOTE THAT THE OPTIONAL COMMA IS NOT PRESENT AFTER THE J IN C PREVIOUS ASSIGNED GO TO STATEMENT. 40020 IF ( IVCOMP - 1 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 252 - TEST 003 **** C C TEST 003 USES A SERIES OF ASSIGN STATEMENTS TO TEST THAT THE C SAME STATEMENT LABEL AND INTEGER VARIABLE CAN BE USED IN A C MULTIPLE REDEFINITION TO THE SAME VALUES. A SIMPLE ASSIGNED C GO TO IS USED TO TEST THE VALUE OF THE INTEGER VARIABLE M. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 IVCORR = 1 ASSIGN 0033 TO M ASSIGN 0033 TO M ASSIGN 0033 TO M GO TO 0035 0032 IVCOMP = 0 GO TO 40030 0033 IVCOMP = 1 GO TO 40030 0034 IVCOMP = 0 GO TO 40030 0035 GO TO M, (0032, 0033, 0034) 40030 IF ( IVCOMP - 1 ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 252 - TEST 004 **** C C TEST 004 USES A SERIES OF ASSIGN STATEMENTS TO SET THE INTEGER C VARIABLE K TO A STATEMENT LABEL IN THE PARENTHESIZED LIST OF C STATEMENT LABELS FOR THE ASSIGNED GO TO STATEMENT, THEN TO A C STATEMENT LABEL NOT IN THE LIST AND FINALLY BACK TO A PROPER C STATEMENT LABEL WITHIN THE PARENTHESIZED LIST. SECTION 11.3 C REQUIRES - IF THE PARENTHESIZED LIST IS PRESENT, THE STATEMENT C LABEL ASSIGNED TO I MUST BE ONE OF THE STATEMENT LABELS IN C THE LIST. AN ASSIGNED GO TO STATEMENT IS USED TO TEST THE FINAL C ASSIGNMENT OF STATEMENT LABELS TO THE INTEGER VARIABLE K. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 IVCORR = 1 ASSIGN 0043 TO K ASSIGN 0042 TO K 0042 ASSIGN 0043 TO K GO TO 0045 0043 IVCOMP = 1 GO TO 40040 0044 IVCOMP = 0 GO TO 40040 0045 GO TO K, (0044, 0043) 40040 IF ( IVCOMP - 1 ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C C THE FOLLOWING TWO TESTS CHECK THE POSSIBLE RANGE OF STATEMENT C LABELS ( FROM 00001 TO 99999 ) BY USING THEM IN ASSIGN STATEMENTS C AND ASSIGNED GO TO STATEMENTS. C C C C **** FCVS PROGRAM 252 - TEST 005 **** C C TEST 005 USES A STATEMENT LABEL OF 00001 WHICH IS THE SMALLEST C ALLOWABLE STATEMENT LABEL. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 0 IVCORR = 1 ASSIGN 00001 TO I GO TO 0054 0052 IVCOMP = 0 GO TO 40050 00001 IVCOMP = 1 GO TO 40050 0053 IVCOMP = 0 GO TO 40050 0054 GO TO I, ( 0052, 00001, 0053 ) 40050 IF ( IVCOMP - 1 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 252 - TEST 006 **** C C TEST 006 USES A STATEMENT LABEL OF 99999 WHICH IS THE LARGEST C ALLOWABLE STATEMENT LABEL. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 0 IVCORR = 1 ASSIGN 99999 TO J GO TO 0064 0062 IVCOMP = 0 GO TO 40060 99999 IVCOMP = 1 GO TO 40060 0063 IVCOMP = 0 GO TO 40060 0064 GO TO J, ( 0062, 99999, 0063 ) 40060 IF ( IVCOMP - 1 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 252 - TEST 007 **** C C TEST 007 IS A SYNTAX CHECK ON THE OPTIONAL COMMA IN THE C COMPUTED GO TO STATEMENT. THE COMMA FOLLOWING THE PARENTHESIZED C LIST OF STATEMENT LABELS IS INTENTIONALLY OMITTED. C GO TO ( S1, S2, S3 ) I C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 IVCORR = 1 I = 3 GO TO 0075 0072 IVCOMP = 0 I = 1 GO TO 0075 0073 IVCOMP = 1 GO TO 40070 0074 IVCOMP = 0 I = 2 GO TO 0075 0075 GO TO ( 0074, 0073, 0072 ) I 40070 IF ( I - 2 ) 20070, 40071, 20070 40071 IF ( IVCOMP - 1 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 252 - TEST 008 **** C C TEST 008 USES THE COMPUTED GO TO WITHOUT THE OPTIONAL COMMA C AND HAS A SINGLE STATEMENT LABEL IN THE PARENTHESIZED LIST OF C STATEMENT LABELS. C GO TO ( S1 ) I C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 0 IVCORR = 1 J = 1 GO TO 0083 0082 IVCOMP = 1 GO TO 40080 0083 GO TO ( 0082 ) J 40080 IF ( IVCOMP - 1 ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C C THE NEXT THREE TESTS OF THE COMPUTED GO TO TEST THE RANGE OF C THE INDEX. C C FORTRAN 77 HAS THE REQUIREMENT IN SECTION 11.2 - IF THE INDEX C IS LESS THAN ONE OR GREATER THAN THE NUMBER OF STATEMENT LABELS IN C THE PARENTHESIZED LIST, THE EXECUTION SEQUENCE CONTINUES AS THOUGH C A CONTINUE STATEMENT WERE EXECUTED. C C C C **** FCVS PROGRAM 252 - TEST 009 **** C C C TEST 009 USES A VALUE OF THE INDEX OF THE COMPUTED GO TO C STATEMENT GREATER THAN THE NUMBER OF STATEMENT LABELS IN THE C PARENTHESIZED LIST. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 IVCORR = 1 K = 3 GO TO 0094 0092 IVCOMP = 0 GO TO 40090 0093 IVCOMP = 0 GO TO 40090 0094 GO TO ( 0092, 0093 ) K C C TO REACH THIS STATEMENT THE COMPUTED GO TO WILL HAVE TO BE C EXECUTED AS IF IT WERE A CONTINUE STATEMENT. C IVCOMP = 1 40090 IF ( IVCOMP - 1 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 252 - TEST 010 **** C C TEST 010 USES A VALUE OF THE INDEX OF THE COMPUTED GO TO C STATEMENT EQUAL TO ZERO. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 IVCORR = 1 I = 0 GO TO 0104 0102 IVCOMP = 0 GO TO 40100 0103 IVCOMP = 0 GO TO 40100 0104 GO TO ( 0103, 0102 ), I C C THIS STATEMENT CAN ONLY BE REACHED IF THE COMPUTED GO TO C IS EXECUTED AS IF IT WERE A CONTINUE STATEMENT. C IVCOMP = 1 40100 IF ( IVCOMP - 1 ) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 252 - TEST 011 **** C C TEST 011 USES A VALUE OF THE INDEX OF THE COMPUTED GO TO C EQUAL TO -1. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 0 IVCORR = 1 J = -1 GO TO 0114 0112 IVCOMP = 0 GO TO 40110 0113 IVCOMP = 0 GO TO 40110 0114 GO TO (0112,0113),J C C THIS STATEMENT CAN ONLY BE REACHED IF THE COMPUTED GO TO C IS EXECUTED AS IF IT WERE A CONTINUE STATEMENT. C IVCOMP = 1 40110 IF ( IVCOMP - 1 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM252) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM252) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM252 FM253.f 480976130 170 2 100666 36190 ` *HEADER,FORTR,FM253 *FILES1,FORTR,FM253,X PROGRAM FM253 C C C C THIS ROUTINE IS A TEST OF THE IF-BLOCK. TESTS WITHIN THIS C ROUTINE ARE FOR THE SYNTAX OF THE BASIC IF ( ) THEN THROUGH C END IF BLOCK STRUCTURE. C C THERE IS ALSO A SERIES OF TESTS TO CHECK THE HIERARCHY AND C ORDER OF EVALUATION IN EXPRESSIONS THAT CONTAIN A COMBINATION OF C ARITHMETIC, RELATIONAL, AND LOGICAL OPERATORS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C SECTION 11.6, BLOCK IF STATEMENT C SECTION 11.6.1, IF-LEVEL C SECTION 11.6.2, IF-BLOCK C SECTION 11.6.3, EXECUTION OF A BLOCK IF STATEMENT C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION LADN11(2) LOGICAL LVTN01, LVTN02, LATN11(2), LADN11 DATA LADN11/.TRUE., .FALSE./ C C C **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 20 **** C LFIS01 ( L ) = .NOT. L 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 253 - TEST 001 **** C C TEST 001 USES A VERY SIMPLE BLOCK IF STATEMENT. THE EXPRESSION C WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT .TRUE. AND THE C EXECUTABLE STATEMENT WITHIN THE IF-BLOCK OF LEVEL ONE IS AN C INTEGER ARITHMETIC ASSIGNMENT STATEMENT. SINCE THE LOGICAL C EXPRESSION IS TRUE, THEN THE INTEGER ASSIGNMENT STATEMENT ( TRUE C PATH ) SHOULD BE EXECUTED. C C THIS IS A SYNTAX CHECK FOR THE BLOCK IF STATEMENT. SHOULD A C COMPILER NOT BE ABLE TO ACCEPT THE SYNTAX OF THIS BASIC TEST, C THEN ROUTINES FM253, THRU FMXXX NEED NOT BE RUN. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 IF ( .TRUE. ) THEN IVCOMP = 1 END IF IVCORR = 1 40010 IF ( IVCOMP - 1 ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 253 - TEST 002 **** C C TEST 002 USES A LOGICAL VARIABLE SET .FALSE. AS THE LOGICAL C EXPRESSION IN THE BLOCK IF STATEMENT. BECAUSE THE EXPRESSION C IS FALSE, THE IF-BLOCK (WHICH IS AN INTEGER ARITHMETIC ASSIGNMENT C STATEMENT AND A LOGICAL ASSIGNMENT STATEMENT) SHOULD NOT BE C EXECUTED. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 0 IVON01 = 1 LVON01 = .FALSE. LVTN01 = .FALSE. IF ( LVON01 ) THEN IVON01 = 0 LVTN01 = .TRUE. END IF IVCORR = 1 40020 IF ( IVON01 .EQ. 1 ) IVCOMP = 1 40021 IF ( IVCOMP - 1 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 253 - TEST 003 **** C C TEST 003 IS A BLOCK IF STATEMENT WITH AN EMPTY IF-BLOCK. THE C LOGICAL EXPRESSION IS A LOGICAL ARRAY ELEMENT REFERENCE SET TO C .TRUE. SECTION 11.6.2 STATES THAT, AN IF-BLOCK MAY BE EMPTY. C BECAUSE THE LOGICAL EXPRESSION IS TRUE, THE IF-BLOCK SHOULD BE C EXECUTED. IF THE VALUE OF THE EXPRESSION IS TRUE AND THE IF-BLOCK C IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF STATEMENT C THAT HAS THE SAME IF-LEVEL AS THE BLOCK IF STATEMENT ACCORDING C TO SECTION 11.6.3. IN THIS TEST THE EMPTY IF-BLOCK IS OF LEVEL ONE C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 LATN11(1) = .TRUE. IF ( LATN11(1) ) THEN END IF IVCOMP = 1 IVCORR = 1 40030 IF ( IVCOMP - 1 ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 253 - TEST 004 **** C C TEST 004 IS LIKE THE PREVIOUS TEST USING A LOGICAL ARRAY C ELEMENT REFERENCE AS THE LOGICAL EXPRESSION OF THE BLOCK IF C STATEMENT THAT HAS AN EMPTY IF-BLOCK STRUCTURE OF LEVEL ONE. C IN THIS TEST THE LOGICAL EXPRESSION IS FALSE SO CONTROL SHOULD C BE TRANSFERRED TO THE END IF STATEMENT THAT HAS THE SAME IF-LEVEL C AS THE BLOCK IF STATEMENT ACCORDING TO SECTION 11.6.3. C C THE LOGICAL ARRAY ELEMENT REFERENCE LADN11(2) IS SET TO .FALSE. C IN THE DATA STATEMENT AS FOLLOWS C C DATA LADN11/.TRUE., .FALSE./ C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 IF ( LADN11(2) ) THEN END IF IVCOMP = 1 IVCORR = 1 40040 IF ( IVCOMP - 1 ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C C THE NEXT FOUR TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL C TWO IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C END IF C END IF C TESTS WILL USE THE FOUR COMBINATIONS OF TRUE AND FALSE FOR E1 AND C E2 RESPECTIVELY TO TEST THE TRANSFER OF CONTROL AS DESCRIBED C IN SECTION 11.6.3. C C C C **** FCVS PROGRAM 253 - TEST 005 **** C C TEST 005 USES A FALSE VALUE FOR E1 AND A FALSE VALUE FOR E2. C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 1 LADN11(2) = .FALSE. IF ( 76 .LT. 3 ) THEN IVCOMP = IVCOMP * 2 IF ( ( LADN11(2) ) ) THEN IVCOMP = IVCOMP * 3 END IF END IF IVCORR = 1 40051 IF ( IVCOMP - 1 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 253 - TEST 006 **** C C TEST 006 USES A FALSE VALUE FOR E1 AND A TRUE VALUE FOR E2. C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 IVON03 = 32767 LVTN01 = .TRUE. LVON01 = .TRUE. IF ( .NOT. LVTN01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON01 .AND. IVON03 .GE. 587 ) THEN IVCOMP = IVCOMP * 3 END IF END IF IVCORR = 1 40061 IF ( IVCOMP - 1 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 253 - TEST 007 **** C C TEST 007 USES A TRUE VALUE FOR E1 AND A FALSE VALUE FOR E2. C IF-BLOCK 1 SHOULD BE EXECUTED, BUT IF-BLOCK 2 SHOULD NOT BE C EXECUTED. C C IF-BLOCK 1 ALSO CONTAINS AN UNCONDITIONAL GO TO AND A CONTINUE C STATEMENT WHICH SHOULD BOTH BE EXECUTED. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 1 IVON03 = 587 IVON04 = 3 LATN11(1) = .TRUE. LATN11(2) = .FALSE. IF ( (LATN11(1)) .OR. ((7 * IVON04) .EQ. 21) ) THEN IVCOMP = IVCOMP * 2 GO TO 0072 0072 CONTINUE IF ( 7 .GT. IVON03 .OR. LATN11(2) ) THEN IVCOMP = IVCOMP * 3 END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40070 IF ( IVCOMP - 2 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 253 - TEST 008 **** C C TEST 008 USES A TRUE VALUE FOR E1 AND A TRUE VALUE FOR E2. C BOTH IF-BLOCK 1 AND IF-BLOCK 2 SHOULD BE EXECUTED. C C IF-BLOCK 1 CONTAINS AN ASSIGN STATEMENT PLUS AN ASSIGNED GO TO C STATEMENT WHICH SHOULD BOTH BE EXECUTED. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 1 IVON04 = 4 IVON05 = 2 LVON01 = .FALSE. LVTN01 = LVON01 C IF ( IVON04 - 1 .LE. 6 .AND. 7 .GE. 5 / IVON05 ) THEN IVCOMP = IVCOMP * 2 ASSIGN 0083 TO I GO TO 0084 0082 IVCOMP = IVCOMP * 3 GO TO 0085 0083 IVCOMP = IVCOMP * 5 GO TO 0085 0084 GO TO I, ( 0082, 0083 ) 0085 IF ( .NOT. ( LVTN01 ) ) THEN IVCOMP = IVCOMP * 7 END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 70 = 1 * 2 * 5 * 7 **** C IVCORR = 70 40080 IF ( IVCOMP - 70 ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C THE NEXT FIVE TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL C THREE IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C IF ( E3 ) THEN C IF-BLOCK 3 C END IF C END IF C END IF C C THE FIVE TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE AND C FALSE FOR E1, E2, AND E3 AS SHOWN BELOW - C TEST NUMBER 9 10 11 12 13 C E1 T T T T F C E2 T T F F T C E3 T F T F T C C CONTROL SHOULD BE AS DESCRIBED IN SECTION 11.6.3. C C C C **** FCVS PROGRAM 253 - TEST 009 **** C C TEST 009 HAS E1, E2, AND E3 AS TRUE. IF-BLOCK 1, 2, AND 3 C SHOULD BE EXECUTED. IF-BLOCK 1 HAS A COMPUTED GO TO STATEMENT C WHICH SHOULD BE EXECUTED. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 1 IVON01 = 4 IVON02 = 3 C IF ( .NOT. IVON01 .EQ. 3 .OR. .NOT. IVON02 .EQ. 4 ) THEN IVCOMP = IVCOMP * 2 J = 2 GO TO 0095 0092 IVCOMP = IVCOMP * 3 GO TO 0096 0093 IVCOMP = IVCOMP * 5 GO TO 0096 0094 IVCOMP = IVCOMP * 7 GO TO 0096 0095 GO TO ( 0092, 0093, 0094 ), J 0096 IF ( IVON01 .EQ. 4 .AND. IVON02 .NE. 2 ) THEN IVCOMP = IVCOMP * 11 IF ( IVON01 .EQ. 4 .AND. .NOT. IVON02 .EQ. 2 ) THEN IVCOMP = IVCOMP * 13 END IF END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 1430 = 1*2*5*11*13 **** C IVCORR = 1430 40090 IF ( IVCOMP - 1430 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 253 - TEST 010 **** C C C TEST 010 HAS E1 AND E2 AS TRUE. E3 IS FALSE. IF-BLOCK 1 HAS C A LOGICAL IF STATEMENT WHICH SHOULD BE EXECUTED BY TAKING THE C TRUE PATH. IF-BLOCK 2 HAS AN ARITHMETIC IF STATEMENT WITH THE C VALUE INSIDE THE PARENTHESIS EQUAL TO ZERO. IF-BLOCK 3 SHOULD NOT C BE EXECUTED. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 1 IVON01 = +3 LVON01 = .FALSE. C IF ( .NOT. LVON01 .AND. .TRUE. .OR. .TRUE. .AND. .NOT. LVON01 ) 1THEN IVCOMP = IVCOMP * 2 IF ( 3 .LE. IVON01 ) IVCOMP = IVCOMP * 3 IF ( .NOT.(LVON01.AND..TRUE.).OR.(.TRUE..AND..NOT.LVON01) ) 1 THEN IF ( 3 - IVON01 ) 0103, 0102, 0103 0102 IVCOMP = IVCOMP * 5 GO TO 0104 0103 IVCOMP = IVCOMP * 7 0104 CONTINUE IF ( .NOT.(.NOT.(LVON01.AND..TRUE.)).OR..FALSE..AND. 1 .NOT.LVON01 ) THEN IVCOMP = IVCOMP * 11 END IF END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 **** C IVCORR = 30 40100 IF ( IVCOMP - 30 ) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 253 - TEST 011 **** C C C TEST 011 HAS E1 AND E3 AS TRUE. E2 IS FALSE. ONLY IF-BLOCK 1 C SHOULD BE EXECUTED. THIS SET OF BLOCK IF STATEMENTS HAS INTEGER C ASSIGNMENT STATEMENTS BETWEEN THE END IF STATEMENTS. A CHECK IS C MADE TO DETERMINE IF THESE STATEMENTS HAVE BEEN EXECUTED. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .TRUE. C IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 END IF IVCOMP = IVCOMP * 11 END IF IVCOMP = IVCOMP * 13 C C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 **** C IVCORR = 286 40110 IF ( IVCOMP - 286 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 253 - TEST 012 **** C C C TEST 012 HAS E1 AS TRUE. E2 AND E3 ARE FALSE. ONLY IF-BLOCK 1 C SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE USED TO C DETERMINE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .FALSE. C IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 END IF IVCOMP = IVCOMP * 11 END IF IVCOMP = IVCOMP * 13 C C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 **** C IVCORR = 286 40120 IF ( IVCOMP - 286 ) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 253 - TEST 013 **** C C C TEST 013 HAS E1 FALSE. E2 AND E3 ARE TRUE. NONE OF THE IF- C BLOCKS SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE C USED TO TRACE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .TRUE. LVON03 = .TRUE. C IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 END IF IVCOMP = IVCOMP * 11 END IF IVCOMP = IVCOMP * 13 C C **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13 **** C IVCORR = 13 40130 IF ( IVCOMP - 13 ) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 253 - TEST 014 **** C C TEST 014 IS TO CHECK FOR PROPER TRANSFER OF CONTROL USING C LOGICAL IF STATEMENTS WITHIN IF-BLOCKS AND BRANCHING TO THE C OUTERMOST IF-LEVEL FROM THE INNERMOST IF-LEVEL IN A CONTROLLED C LOOP. THE INNERMOST IF-LEVEL SHOULD BE EXECUTED 10 TIMES. A C LOGICAL IF STATEMENT IS USED IN EACH OF THE IF-LEVELS IN CASE C THE EXECUTION LOGIC BRANCHES INCORRECTLY. THIS SHOULD PREVENT C AN INFINITE LOOP DURING THE EXECUTION OF THIS ROUTINE. C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IVON01 = 0 IVON02 = 0 IVON03 = 0 0142 IF ( IVON03 .LT. 10 ) THEN IVON01 = IVON01 + 1 IF ( IVON01 .GT. 11 ) GO TO 0143 IF ( IVON03 .LT. 10 ) THEN IVON02 = IVON02 + 1 IF ( IVON02 .GT. 11 ) GO TO 0143 IF ( IVON03 .LT. 10 ) THEN IVON03 = IVON03 + 1 IF ( IVON03 .GT. 11 ) GO TO 0143 IF ( IVON03 .LE. 10 ) GO TO 0142 END IF END IF END IF 0143 CONTINUE IVCOMP = IVON01 IVCORR = 10 40140 IF ( IVCOMP - 10 ) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C THE NEXT TWO TESTS ARE TO CHECK THE COUNTERS IN IF-LEVEL 2 AND C IF-LEVEL 3 RESPECTIVELY IN THE PREVIOUS TEST. C C C C **** FCVS PROGRAM 253 - TEST 015 **** C C TEST 015 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 2 IN THE C PREVIOUS TEST IS EQUAL TO TEN (10). C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = IVON02 IVCORR = 10 40150 IF ( IVCOMP - 10 ) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 253 - TEST 016 **** C C TEST 016 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 3 IN THE C PREVIOUS TEST IS EQUAL TO TEN (10). C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = IVON03 IVCORR = 10 40160 IF ( IVCOMP - 10 ) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C THE NEXT THREE TESTS ARE SIMILAR TO THE PREVIOUS THREE TESTS C IN THAT THEY TEST THE TRANSFER OF CONTROL WITHIN A THREE LEVEL C BLOCK IF STRUCTURE. EACH OF THE IF-LEVELS ARE EXECUTED AS IF THEY C WERE A LOOP USING LOGICAL IF STATEMENTS WITHIN EACH IF-LEVEL. C C C C **** FCVS PROGRAM 253 - TEST 017 **** C C TEST 017 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON04 IN C IF-LEVEL 1 IN THIS TEST EQUALS 10. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IVON01 = 0 IVON02 = 0 IVON03 = 0 IVON04 = 0 IVON05 = 0 IVON06 = 0 C 0172 IF ( IVON01 .LT. 10 ) THEN IVON01 = IVON01 + 1 IVON04 = IVON04 + 1 IF ( IVON01 .GT. 11 ) GO TO 0175 0173 IF ( IVON02 .LT. 10 ) THEN IVON02 = IVON02 + 1 IVON05 = IVON05 + 1 IF ( IVON02 .GT. 11 ) GO TO 0175 0174 IF ( IVON03 .LT. 10 ) THEN IVON03 = IVON03 + 1 IVON06 = IVON06 + 1 IF ( IVON03 .GT. 11 ) GO TO 0175 IF ( IVON03 .LE. 10 ) GO TO 0174 END IF IVON03 = 0 IF ( IVON02 .LE. 10 ) GO TO 0173 END IF IVON02 = 0 IF ( IVON01 .LE. 10 ) GO TO 0172 END IF 0175 CONTINUE IVCOMP = IVON04 IVCORR = 10 40170 IF ( IVCOMP - 10 ) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 253 - TEST 018 **** C C TEST 018 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON05 IN C IF-LEVEL 2 OF THE PREVIOUS TEST EQUALS 100. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = IVON05 IVCORR = 100 40180 IF ( IVCOMP - 100 ) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 253 - TEST 019 **** C C TEST 019 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON06 IN C IF-LEVEL 3 OF THE PREVIOUS TEST EQUALS 1000. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = IVON06 IVCORR = 1000 40190 IF ( IVCOMP - 1000 ) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 253 - TEST 020 **** C C TEST 020 USES A LOGICAL STATEMENT FUNCTION LFIS01(L) AS C THE LOGICAL EXPRESSION IN A BLOCK IF STRUCTURE. THE LOGICAL C STATEMENT FUNCTION TAKES THE LOGICAL COMPLEMENT OF THE LOGICAL C VALUE SUPPLIED. THE VALUE OF .FALSE. IS SUPPLIED AND THE LOGICAL C VALUE OF .TRUE. SHOULD BE RETURNED AS THE LOGICAL FUNCTION C REFERENCE. THE IF-BLOCK OF LEVEL ONE SHOULD BE EXECUTED. C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 0 LVON01 = .FALSE. IF ( LFIS01( LVON01 ) ) THEN IVCOMP = 1 END IF IVCORR = 1 40200 IF ( IVCOMP - 1 ) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C C THE FOLLOWING SERIES OF TESTS ARE TO CHECK THE PRECEDENCE OF C OPERATORS. THESE INCLUDE ARITHMETIC, RELATIONAL, AND LOGICAL C OPERATORS. ARITHMETIC OPERATORS ARE CHECKED FIRST FROM THE C EVALUATION OF CERTAIN ARITHMETIC EXPRESSIONS THAT USE ONLY INTEGER C VALUES IN THE COMPUTATIONS. ALL INTERMEDIATE AND FINAL VALUES ARE C LESS THAN 32767. AFTER EACH OF THE STATEMENTS IS TESTED BY ITSELF C THEN THE RELATIONAL OPERATORS ARE TESTED USING THE INTEGER VALUES C OBTAINED IN EACH OF THE ARITHMETIC EXPRESSIONS. IN THIS TEST THE C RELATIONAL EXPRESSIONS ARE COMBINED WITH LOGICAL OPERATORS TO C PRODUCE A LOGICAL EXPRESSION. FINALLY THE ENTIRE SET OF SIX (6) C ARITHMETIC , RELATIONAL, AND LOGICAL EXPRESSIONS IS COMBINED INTO C ONE LOGICAL IF STATEMENT. C C C C **** FCVS PROGRAM 253 - TEST 021 **** C C TEST 021 CHECKS THE ORDER OF EVALUATION WHEN AN ARITHMETIC C EXPRESSION HAS PARENTHESES AND A SERIES OF EXPONENTIATION. THE C ORDER OF EVALUATION IS SHOWN BELOW - C C 1 + 2 * ( 4 - 2 ) ** 2 ** 3 - 4 / 2 C 1 + 2 * ( 2 ) ** 2 ** 3 - 4 / 2 C 1 + 2 * 2 ** 8 - 4 / 2 C 1 + 2 * 256 - 4 / 2 C 1 + 512 - 2 C 513 - 2 C 511 C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVON01 = 1 IVON02 = 2 IVON03 = 4 IVON04 = 2 IVON05 = 4 IVON06 = 2 IVCOMP = IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 1 / IVON06 IVCORR = 511 40210 IF ( IVCOMP - 511 ) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 253 - TEST 022 **** C C TEST 022 IS A SERIES OF DIVISIONS FOLLOWED BY A SERIES OF C MULTIPLICATIONS ALL WITHOUT ANY PARENTHESES. C C 16 / 2 / 2 / 2 * 4 * 8 C 8 / 2 / 2 * 4 * 8 C 4 / 2 * 4 * 8 C 2 * 4 * 8 C 8 * 8 C 64 C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVON07 = 16 IVON08 = 2 IVON09 = 2 IVON10 = 2 IVON11 = 4 IVON12 = 8 IVCOMP = IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 IVCORR = 64 40220 IF ( IVCOMP - 64 ) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 253 - TEST 023 **** C C TEST 023 HAS ONE SUBTRACTION IMBEDDED IN A SERIES OF ADDITIONS C WITHOUT ANY PARENTHESES. C C 3 + 4 - 1 + 5 C 7 - 1 + 5 C 6 + 5 C 11 C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVON13 = 3 IVON14 = 4 IVON15 = 1 IVON16 = 5 IVCOMP = IVON13 + IVON14 - IVON15 + IVON16 IVCORR = 11 40230 IF ( IVCOMP - 11 ) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 253 - TEST 024 **** C C TEST 024 HAS ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, C AND EXPONENTIATION WITHOUT PARENTHESES. C C 4 + 4 - 6 * 3 / 3 ** 2 C 4 + 4 - 6 * 3 / 9 C 4 + 4 - 18 / 9 C 4 + 4 - 2 C 8 - 2 C 6 C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVON17 = 4 IVON18 = 4 IVON19 = 6 IVON20 = 3 IVON21 = 3 IVON22 = 2 IVCOMP = IVON17 + IVON18 - IVON19 * IVON20 / IVON21 ** IVON22 IVCORR = 6 40240 IF ( IVCOMP - 6 ) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 253 - TEST 025 **** C C TEST 025 IS LIKE TEST NUMBER 021 EXCEPT THAT THE PARENTHESES C HAVE BEEN REMOVED. THE INTEGER VALUES USED AS INPUT ARE THE SAME. C REMOVAL OF THE PARENTHESES CHANGES THE ORDER OF EVALUATION SO THE C FINAL INTEGER RESULT IS DIFFERENT. C C 1 + 2 * 4 - 2 ** 2 ** 3 - 4 / 2 C 1 + 2 * 4 - 2 ** 8 - 4 / 2 C 1 + 2 * 4 - 256 - 4 / 2 C 1 + 8 - 256 - 2 C 9 - 256 - 2 C -247 - 2 C -249 C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE IVON23 = 1 IVON24 = 2 IVON25 = 4 IVON26 = 2 IVON27 = 4 IVON28 = 2 IVCOMP = IVON23 + IVON24 * IVON25 - IVON26 ** 2 ** 3 - IVON27 1 / IVON28 IVCORR = -249 40250 IF ( IVCOMP + 249 ) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 253 - TEST 026 **** C C TEST 026 IS JUST LIKE TEST NUMBER 022 EXCEPT THAT PARENTHESES C HAVE BEEN ADDED. ALTHOUGH THE INTEGER VALUES ARE THE SAME, THE C PARENTHESES CHANGE THE ORDER OF EVALUATION SO THAT THE FINAL C INTEGER RESULT IS DIFFERENT. C C 16 / ( 2 / 2 ) / 2 * ( 4 * 8 ) C 16 / ( 1 ) / 2 * ( 32 ) C 16 / 2 * 32 C 8 * 32 C 256 C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE IVON29 = 16 IVON30 = 2 IVON31 = 2 IVON32 = 2 IVON33 = 4 IVON34 = 8 IVCOMP = IVON29 / ( IVON30 / IVON31 ) / IVON32 * ( IVON33 * 1 IVON34 ) IVCORR = 256 40260 IF ( IVCOMP - 256 ) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 253 - TEST 027 **** C C TEST 027 COMBINES THE INTEGER RESULTS OBTAINED IN THE PREVIOUS C SIX TESTS AND USES RELATIONAL AND LOGICAL OPERATORS IN ONE C LOGICAL EXPRESSION. RELATIONAL EXPRESSIONS ARE EVALUATED FIRST C FOLLOWED BY THE LOGICAL OPERATORS .NOT. , .AND., AND .OR. IN THAT C ORDER. C C 511 .LT. 64 .OR. .NOT. 11 .LE. 6 .AND. -249 .LE. 256 C F .OR. .NOT. F .AND. T C F .OR. T .AND. T C F .OR. T C T C C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE IVON35 = 511 IVON36 = 64 IVON37 = 11 IVON38 = 6 IVON39 = -249 IVON40 = 256 IVCOMP = 0 LVON01 = IVON35 .LT. IVON36 .OR. .NOT. IVON37 .LE. IVON38 .AND. 1 IVON39 .LE. IVON40 IF ( LVON01 ) IVCOMP = 1 IVCORR = 1 40270 IF ( IVCOMP - 1 ) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 253 - TEST 028 **** C C TEST 028 IS THE BIGGIE. IT COMBINES ALL OF THE INTEGER VALUES C AND RESULTS IN THE PREVIOUS SEVEN (7) TESTS. IF THERE WERE ANY C ERRORS IN ANY OF THE PREVIOUS SEVEN TESTS, THEN THIS TEST SHOULD C ALSO FAIL. C C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE IVCOMP = 0 IF ( IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 / 1IVON06 .LT. IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 2.OR. .NOT. IVON13 + IVON14 - IVON15 + IVON16 .LE. IVON17 + IVON18 3- IVON19 * IVON20 / IVON21 ** IVON22 .AND. IVON23 + IVON24 * 4IVON25 - IVON26 ** 2 ** 3 - IVON27 / IVON28 .LE. IVON29 / ( IVON30 5 / IVON31 ) / IVON32 * ( IVON33 * IVON34 ) ) IVCOMP = 1 IVCORR = 1 40280 IF ( IVCOMP - 1 ) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM253) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM253) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM253 FM254.f 480976133 170 2 100666 18706 ` *HEADER,FORTR,FM254 *FILES1,FORTR,FM254,X PROGRAM FM254 C C C C THIS ROUTINE IS A TEST OF THE ELSE IF-BLOCK. TESTS WITHIN THIS C ROUTINE ARE FOR THE SYNTAX OF THE BASIC ELSE IF STATEMENT AND C ELSE IF-BLOCK STRUCTURE. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1977 C SECTION 11.7, ELSE IF STATEMENT C SECTION 11.7.1, ELSE IF-BLOCK C SECTION 11.7.2, EXECUTION OF THE ELSE IF STATEMENT C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION LADN11(2) LOGICAL LVTN01, LVTN02, LATN11(2), LADN11 DATA LADN11/.TRUE., .FALSE./ C C C **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 4 **** C LFIS01 ( L ) = L .AND. L 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C C THE SYNTAX OF THE ELSE IF STATEMENTS IN THE TESTS TO FOLLOW IS C C IF ( E1 ) THEN C IF-BLOCK C ELSE IF ( E2 ) THEN C ELSE IF-BLOCK C END IF C C THE NEXT FOUR TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE C AND FALSE FOR E1 AND E2 AS SHOWN BELOW - C TEST NUMBER 1 2 3 4 C E1 F F T T C E2 T F T F C C C C C **** FCVS PROGRAM 254 - TEST 001 **** C C TEST 001 USES A VERY SIMPLE ELSE IF STATEMENT. THE EXPRESSION C WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT .TRUE. AND THE C EXECUTABLE STATEMENT WITHIN THE ELSE IF-BLOCK OF LEVEL ONE IS AN C INTEGER ARITHMETIC ASSIGNMENT STATEMENT. IN THIS TEST THE LOGICAL C EXPRESSION E1 IS .FALSE. SO THE IF-BLOCK SHOULD NOT BE EXECUTED. C THE LOGICAL EXPRESSION E2 IS .TRUE. SO THE ELSE IF-BLOCK SHOULD C BE EXECUTED. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 1 IF ( .FALSE. ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( .TRUE. ) THEN IVCOMP = IVCOMP * 3 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 C IVCORR = 3 40010 IF ( IVCOMP - 3 ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 254 - TEST 002 **** C C TEST 002 HAS E1 .FALSE. AND E2 .FALSE.. NEITHER THE IF-BLOCK C NOR THE ELSE IF-BLOCK SHOULD BE EXECUTED. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 END IF IVCORR = 1 40020 IF ( IVCOMP - 1 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 254 - TEST 003 **** C C TEST 003 HAS E1 AS .TRUE. AND E2 AS .TRUE.. ONLY THE IF-BLOCK C SHOULD BE EXECUTED. THE ELSE IF-BLOCK SHOULD NOT BE EXECUTED. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .TRUE. LVTN01 = LVON01 LVTN02 = LVON02 IF ( LVTN01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVTN02 ) THEN IVCOMP = IVCOMP * 3 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40030 IF ( IVCOMP - 2 ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 254 - TEST 004 **** C C TEST 004 HAS E1 AS .TRUE. AND E2 AS .FALSE.. ONLY THE IF-BLOCK C SHOULD BE EXECUTED. THE ELSE IF-BLOCK SHOULD NOT BE EXECUTED. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVTN01 = LFIS01 ( LVON01 ) LVON02 = .FALSE. IF ( LVTN01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LFIS01 ( LVON02 ) ) THEN IVCOMP = IVCOMP * 3 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40040 IF ( IVCOMP - 2 ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C C THE SYNTAX OF THE ELSE IF STATEMENTS IN THE TESTS TO FOLLOW IS C C IF ( E1 ) THEN C IF-BLOCK 1 C ELSE IF ( E2 ) THEN C ELSE IF-BLOCK 1 C ELSE IF ( E3 ) THEN C ELSE IF-BLOCK 2 C END IF C C C C **** FCVS PROGRAM 254 - TEST 005 **** C C TEST 005 HAS E1 AS TRUE. E2 AND E3 ARE FALSE. ONLY IF-BLOCK 1 C SHOULD BE EXECUTED. ELSE IF-BLOCKS 1 AND 2 SHOULD NOT EXECUTE. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 1 C LADN11(1) IS SET TO .TRUE. IN A DATA STATEMENT. LVON02 = .FALSE. LVON03 = .FALSE. IF ( LADN11(1) ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40050 IF ( IVCOMP - 2 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 254 - TEST 006 **** C C TEST 006 HAS E1 AS FALSE, E2 AS TRUE, AND E3 AS FALSE. ONLY C ELSE IF-BLOCK 1 SHOULD EXECUTE. IF-BLOCK 1 AND ELSE IF-BLOCK 2 C SHOULD NOT EXECUTE. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LATN11(2) = .TRUE. LVON03 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LATN11(2) ) THEN IVCOMP = IVCOMP * 3 ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 **** C IVCORR = 3 40060 IF ( IVCOMP - 3 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 254 - TEST 007 **** C C TEST 007 HAS E1 AS FALSE, E2 AS FALSE, AND E3 AS TRUE. ONLY C ELSE IF-BLOCK 2 SHOULD BE EXECUTED. IF-BLOCK 1 AND ELSE IF-BLOCK C 1 SHOULD NOT EXECUTE. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .FALSE. LVON03 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 5 = 1 * 5 **** C IVCORR = 5 40070 IF ( IVCOMP - 5 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 254 - TEST 008 **** C C TEST 008 HAS E1 AS FALSE. BOTH E2 AND E3 ARE TRUE. ONLY ELSE C IF-BLOCK 1 SHOULD EXECUTE. IF-BLOCK 1 AND ELSE IF-BLOCK 2 SHOULD C NOT EXECUTE. THIS IS A TEST OF THE LOGIC FLOW WHEN ONE OF THE C EXPRESSIONS IN A STRING OF ELSE IF BLOCK STRUCTURES IS TRUE. ONLY C THAT PARTICULAR ELSE IF-BLOCK SHOULD BE EXECUTED. THE REST OF THE C STRING SHOULD BE SKIPPED. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .TRUE. LVON03 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 **** C IVCORR = 3 40080 IF ( IVCOMP - 3 ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C C THE FOLLOWING TWO TESTS ARE TO CHECK THE EXECUTION OF AN ELSE C IF STATEMENT WITH AN EMPTY ELSE IF-BLOCK. THE SYNTAX FOR THE TWO C TESTS IS AS FOLLOWS - C C IF ( E1 ) THEN C IF-BLOCK 1 C ELSE IF ( E2 ) THEN C ELSE IF ( E3 ) THEN C ELSE IF-BLOCK 1 C END IF C C C C **** FCVS PROGRAM 254 - TEST 009 **** C C TEST 009 HAS E1 FALSE, E2 TRUE, AND E3 AS TRUE. THE STRUCTURE C ELSE IF ( E2 ) THEN C IS FOLLOWED BY AN EMPTY ELSE IF-BLOCK ALLOWED IN SECTION 11.7.1. C IN SECTION 11.7.2, IF THE VALUE OF THE EXPRESSION IS TRUE AND THE C ELSE IF-BLOCK IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF C STATEMENT THAT HAS THE SAME IF-LEVEL AS THE ELSE IF STATEMENT. C NEITHER IF-BLOCK 1 NOR ELSE IF-BLOCK 1 SHOULD BE EXECUTED. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .TRUE. LVON03 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVON02 ) THEN ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 3 END IF IVCORR = 1 40090 IF ( IVCOMP - 1 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 254 - TEST 010 **** C C TEST 010 ALSO HAS AN EMPTY ELSE IF-BLOCK. E1 AND E2 ARE FALSE. C E3 IS TRUE. ONLY ELSE IF-BLOCK 1 SHOULD BE EXECUTED. IF-BLOCK 1 C SHOULD NOT BE EXECUTED. IN SECTION 11.7.2, IF THE VALUE OF THE C EXPRESSION IS FALSE, CONTROL IS TRANSFERRED TO THE NEXT ELSE IF, C ELSE, OR END IF STATEMENT THAT HAS THE SAME IF-LEVEL AS THE ELSE C IF STATEMENT. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .FALSE. LVON03 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( LVON02 ) THEN ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 3 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 **** C IVCORR = 3 40100 IF ( IVCOMP - 3 ) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C C THE NEXT TWO TESTS USE THE ELSE IF STRUCTURE INSIDE A BLOCKED C IF STRUCTURE OF LEVEL 2 AS FOLLOWS - C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C ELSE IF ( E3 ) THEN C ELSE IF-BLOCK 1 C ELSE IF ( E4 ) THEN C ELSE IF-BLOCK 2 C END IF C ELSE IF ( E5 ) THEN C ELSE IF-BLOCK 3 C ELSE IF ( E6 ) THEN C ELSE IF-BLOCK 4 C END IF C C C C **** FCVS PROGRAM 254 - TEST 011 **** C C TEST 011 HAS E1 TRUE, E2 AND E3 AS FALSE, E4, E5, AND ALSO C E6 AS TRUE. IF-BLOCK 1, AND ELSE IF-BLOCK 2 SHOULD BE EXECUTED. C IF-BLOCK 2, ELSE IF-BLOCK 1, 3, AND 4 SHOULD NOT BE EXECUTED. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .FALSE. LVON04 = .TRUE. LVON05 = .TRUE. LVON06 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 END IF ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 13 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 14 = 1 * 2 * 7 **** C IVCORR = 14 40110 IF ( IVCOMP - 14 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 254 - TEST 012 **** C C TEST 012 HAS E1 AS FALSE, E2, E3, AND E4 ARE TRUE, E5 AS FALSE, C AND E6 IS TRUE. ONLY ELSE IF-BLOCK 4 SHOULD BE EXECUTED. NO C OTHER IF-BLOCK OR ELSE IF-BLOCK SHOULD BE EXECUTED. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .TRUE. LVON03 = .TRUE. LVON04 = .TRUE. LVON05 = .FALSE. LVON06 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 END IF ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 13 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13 **** C IVCORR = 13 40120 IF ( IVCOMP - 13 ) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM254) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM254) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM254 FM255.f 480976135 170 2 100666 27587 ` *HEADER,FORTR,FM255 *FILES1,FORTR,FM255,X PROGRAM FM255 C C C C THIS ROUTINE IS A TEST OF THE ELSE STATEMENT. TESTS WITHIN C THIS ROUTINE ARE FOR THE SYNTAX OF THE BASIC ELSE STATEMENT AND C ELSE BLOCK STRUCTURES. THE END IF STATEMENT IS USED IN ALL BLOCK C IF STRUCTURES FOR THE ROUTINES FM253, FM254, AND FM255. FOR EACH C BLOCK IF STATEMENT, THERE MUST BE A CORRESPONDING END IF STATEMENT C IN THE SAME PROGRAM UNIT. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1977 C SECTION 11.8, ELSE STATEMENT C SECTION 11.8.1, ELSE BLOCK C SECTION 11.8.2, EXECUTION OF AN ELSE STATEMENT C SECTION 11.9, END IF STATEMENT C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C C THE SYNTAX OF THE ELSE STATEMENTS IN THE TESTS TO FOLLOW IS C C IF ( E1 ) THEN C IF-BLOCK C ELSE C ELSE-BLOCK C END IF C C THE NEXT TWO TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE C AND FALSE FOR E1 AS SHOWN BELOW - C TEST NUMBER 1 2 C E1 T F C C C C **** FCVS PROGRAM 255 - TEST 001 **** C C TEST 001 USES A VALUE OF .TRUE. FOR E1. THE IF-BLOCK SHOULD BE C EXECUTED. THE ELSE-BLOCK SHOULD NOT BE EXECUTED. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 1 IF ( .TRUE. ) THEN IVCOMP = IVCOMP * 2 ELSE IVCOMP = IVCOMP * 3 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40010 IF ( IVCOMP - 2 ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 255 - TEST 002 **** C C TEST 002 HAS E1 AS FALSE. THE IF-BLOCK SHOULD NOT BE EXECUTED. C THE ELSE-BLOCK SHOULD EXECUTE. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 1 LVON01 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IVCOMP = IVCOMP * 3 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3 **** C IVCORR = 3 40020 IF ( IVCOMP - 3 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 255 - TEST 003 **** C C TEST 003 HAS AN EMPTY ELSE-BLOCK. SECTION 11.8.1 STATES THAT C AN ELSE-BLOCK MAY BE EMPTY. IN THIS TEST THE VALUE OF E1 IS TRUE. C THE IF-BLOCK SHOULD BE EXECUTED. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 1 LVON01 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40030 IF ( IVCOMP - 2 ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 255 - TEST 004 **** C C TEST 004 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THAT THE VALUE C OF E1 IS FALSE. THE IF-BLOCK SHOULD NOT BE EXECUTED. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 1 LVON01 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE END IF IVCORR = 1 40040 IF ( IVCOMP - 1 ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 255 - TEST 005 **** C C TEST 005 USES AN ELSE STATEMENT IN AN IF-LEVEL OF 2. THE C SYNTAX FOR THIS STRUCTURE IS SHOWN BELOW - C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C ELSE C ELSE-BLOCK 1 C END IF C ELSE C ELSE-BLOCK 2 C END IF C C IN THIS TEST THE VALUES FOR E1 AND E2 ARE BOTH TRUE. IF-BLOCK C 1 AND IF-BLOCK 2 SHOULD BE EXECUTED. ELSE-BLOCKS 1 AND 2 SHOULD C NOT BE EXECUTED. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IVCOMP = IVCOMP * 5 END IF ELSE IVCOMP = IVCOMP * 7 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 6 = 1 * 2 * 3 C IVCORR = 6 40050 IF ( IVCOMP - 6 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 255 - TEST 006 **** C C TEST 006 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THAT E1 IS TRUE C AND E2 IS FALSE. IF-BLOCK 1 AND ELSE-BLOCK 1 SHOULD BE EXECUTED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IVCOMP = IVCOMP * 5 END IF ELSE IVCOMP = IVCOMP * 7 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 10 = 1 * 2 * 5 **** C IVCORR = 10 40060 IF ( IVCOMP - 10 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 255 - TEST 007 **** C C TEST 007 AGAIN USES THE SAME STRUCTURE AS THE PREVIOUS TWO C TESTS. IN THIS TEST E1 IS FALSE AND E2 IS TRUE. ONLY ELSE-BLOCK C 2 SHOULD BE EXECUTED. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 ELSE IVCOMP = IVCOMP * 5 END IF ELSE IVCOMP = IVCOMP * 7 END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 7 = 1 * 7 **** C IVCORR = 7 40070 IF ( IVCOMP - 7 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C C THE FOLLOWING TESTS USE A BLOCK IF STRUCTURE OF IF-LEVEL 3. C THE STRUCTURE AS SHOWN BELOW CONTAINS THE IF-THEN, ELSE IF-THEN, C AND ELSE STRUCTURES. C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C IF ( E3 ) THEN C IF-BLOCK 3 C ELSE IF ( E4 ) THEN C ELSE IF-BLOCK 1 C ELSE IF ( E5 ) THEN C ELSE IF-BLOCK 2 C ELSE C ELSE-BLOCK 1 C END IF C MORE IF-BLOCK 2 C ELSE IF ( E6 ) THEN C ELSE IF-BLOCK 3 C ELSE C ELSE-BLOCK 2 C END IF C MORE IF-BLOCK 1 C ELSE IF ( E7 ) THEN C ELSE IF-BLOCK 4 C ELSE C ELSE-BLOCK 3 C END IF C C THE TRUE AND FALSE VALUES FOR THE VARIOUS LOGICAL EXPRESSIONS C USED IN THE TESTS TO FOLLOW ARE SHOWN BELOW - C C TEST NUMBER 8 9 10 11 12 13 14 15 C E1 T T T T T T F F C E2 T T T T F F F F C E3 T F F F F F F F C E4 T F F T F F F F C E5 T F T F F F F F C E6 T F F F T F F F C E7 T F F F F F T F C C C C **** FCVS PROGRAM 255 - TEST 008 **** C C TEST 008 SHOULD EXECUTE IF-BLOCKS 1, 2, AND 3. IT SHOULD ALSO C EXECUTE MORE IF-BLOCKS 2 AND 1. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .TRUE. LVON03 = .TRUE. LVON04 = .TRUE. LVON05 = .TRUE. LVON06 = .TRUE. LVON07 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE GO TO 0082 END IF GO TO 0083 0082 IVCOMP = IVCOMP * 37 0083 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 14790 = 1 * 2 * 3 * 5 * C 17 * 29 **** C IVCORR = 14790 40080 IF ( IVCOMP - 14790 ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 255 - TEST 009 **** C C TEST 009 SHOULD EXECUTE IF-BLOCKS 1 AND 2. IT SHOULD ALSO C EXECUTE ELSE-BLOCK 1, PLUS MORE IF-BLOCKS 2 AND 1. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .TRUE. LVON03 = .FALSE. LVON04 = .FALSE. LVON05 = .FALSE. LVON06 = .FALSE. LVON07 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 13 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 17 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE IF ( .TRUE. ) GO TO 0092 END IF GO TO 0093 0092 IVCOMP = IVCOMP * 37 0093 CONTINUE C C **** THE ORDER OF THE PRIME INTEGER MULTIPLIERS HAS BEEN C CHANGED TO KEEP THE IVCOMP RESULT SMALLER THAN 32767 **** C C C **** IVCOMP IS DETERMINED BY IVCOMP = 6090 = 1 * 2 * 3 * 5 * 7 C * 29 **** C IVCORR = 6090 40090 IF ( IVCOMP - 6090 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 255 - TEST 010 **** C C TEST 010 SHOULD EXECUTE IF-BLOCKS 1 AND 2. IT SHOULD ALSO C EXECUTE ELSE IF-BLOCK 2, PLUS MORE IF-BLOCKS 2 AND 1. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .TRUE. LVON03 = .FALSE. LVON04 = .FALSE. LVON05 = .TRUE. LVON06 = .FALSE. LVON07 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE ICON01 = 1 IF ( ICON01 ) 0103, 0102, 0103 END IF GO TO 0103 0102 IVCOMP = IVCOMP * 37 0103 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 32538 = 1 * 2 * 3 * 11 * C 17 * 29 **** C IVCORR = 32538 40100 IF ( IVCOMP - 32538 ) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 255 - TEST 011 **** C C TEST 011 SHOULD EXECUTE IF-BLOCKS 1 AND 2. IT SHOULD ALSO C EXECUTE ELSE IF-BLOCK 1, PLUS MORE IF-BLOCKS 2 AND 1. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .TRUE. LVON03 = .FALSE. LVON04 = .TRUE. LVON05 = .FALSE. LVON06 = .FALSE. LVON07 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE ASSIGN 0112 TO I GO TO I, ( 0113, 0112) END IF GO TO 0113 0112 IVCOMP = IVCOMP * 37 0113 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 20706 = 1 * 2 * 3 * 7 * C 17 * 29 **** C IVCORR = 20706 40110 IF ( IVCOMP - 20706 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 255 - TEST 012 **** C C TEST 012 SHOULD EXECUTE IF-BLOCK 1, ELSE IF-BLOCK 3, AND MORE C IF-BLOCK 1. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .FALSE. LVON04 = .FALSE. LVON05 = .FALSE. LVON06 = .TRUE. LVON07 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE I = 2 GO TO ( 0123, 0122 ), I END IF GO TO 0123 0122 IVCOMP = IVCOMP * 37 0123 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 1102 = 1 * 2 * 19 * 29 C IVCORR = 1102 40120 IF ( IVCOMP - 1102 ) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 255 - TEST 013 **** C C TEST 013 SHOULD EXECUTE IF-BLOCK 1, ELSE-BLOCK 2, AND MORE C IF-BLOCK 1. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .FALSE. LVON04 = .FALSE. LVON05 = .FALSE. LVON06 = .FALSE. LVON07 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE GO TO 0132 END IF GO TO 0133 0132 IVCOMP = IVCOMP * 37 0133 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 1334 = 1 * 2 * 23 * 29 C IVCORR = 1334 40130 IF ( IVCOMP - 1334 ) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 255 - TEST 014 **** C C TEST 014 SHOULD ONLY EXECUTE ELSE IF-BLOCK 4. C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .FALSE. LVON03 = .FALSE. LVON04 = .FALSE. LVON05 = .FALSE. LVON06 = .FALSE. LVON07 = .TRUE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE IF ( .NOT. .FALSE. ) GO TO 0142 END IF GO TO 0143 0142 IVCOMP = IVCOMP * 37 0143 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 31 = 1 * 31 **** C IVCORR = 31 40140 IF ( IVCOMP - 31 ) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 255 - TEST 015 **** C C TEST 015 SHOULD ONLY EXECUTE THE LOGIC IN ELSE-BLOCK 3. THIS C LOGIC CONSISTS OF AN ARITHMETIC IF STATEMENT WHICH SHOULD TAKE C THE EXPRESSION EQUAL TO ZERO BRANCH TO STATEMENT 0152. C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .FALSE. LVON03 = .FALSE. LVON04 = .FALSE. LVON05 = .FALSE. LVON06 = .FALSE. LVON07 = .FALSE. IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 ELSE IF ( LVON04 ) THEN IVCOMP = IVCOMP * 7 ELSE IF ( LVON05 ) THEN IVCOMP = IVCOMP * 11 ELSE IVCOMP = IVCOMP * 13 END IF IVCOMP = IVCOMP * 17 ELSE IF ( LVON06 ) THEN IVCOMP = IVCOMP * 19 ELSE IVCOMP = IVCOMP * 23 END IF IVCOMP = IVCOMP * 29 ELSE IF ( LVON07 ) THEN IVCOMP = IVCOMP * 31 ELSE ICON01 = 1 IF ( ICON01 - 1 ) 0153, 0152, 0153 END IF GO TO 0153 0152 IVCOMP = IVCOMP * 37 0153 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 37 = 1 * 37 **** C IVCORR = 37 40150 IF ( IVCOMP - 37 ) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 255 - TEST 016 **** C C TEST 016 IS A TEST OF THE END IF STATEMENT. SECTION 11.9 C PERMITS TRANSFER OF CONTROL FROM ANYWHERE TO AN END IF STATEMENT. C ALSO ACCORDING TO SECTION 11.9 - EXECUTION OF AN END IF STATEMENT C HAS NO EFFECT. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 1 LVON01 = .TRUE. IF ( ICZERO ) 0163, 0162, 0163 0162 GO TO 0164 0163 IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 ELSE IVCOMP = IVCOMP * 3 0164 END IF C C **** IVCOMP SHOULD REMAIN SET TO ONE (1). **** C IVCORR = 1 40160 IF ( IVCOMP - 1 ) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM255) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM255) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM255 FM256.f 480976138 170 2 100666 24140 ` *HEADER,FORTR,FM256 *FILES1,FORTR,FM256,X PROGRAM FM256 C C C C THIS ROUTINE IS A TEST OF THE DO STATEMENT. THE DO IS TESTED C BOTH OUTSIDE AND INSIDE THE BLOCK-IF STRUCTURE. TESTS ARE MADE OF C THE DO-VARIABLE WHEN THE DO BECOMES INACTIVE. OTHER TESTS CHECK C LOOP AND INCREMENTATION PROCESSING. THE DO-LOOP EXECUTION C IS TESTED FOR THOSE CONDITIONS WHICH MAKE THE DO-LOOP INACTIVE. C C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C SECTION 11.10, DO STATEMENT C SECTION 11.10.1, RANGE OF A DO-LOOP C SECTION 11.10.2, ACTIVE AND INACTIVE DO-LOOPS C SECTION 11.10.3, EXECUTING A DO STATEMENT C SECTION 11.10.4, LOOP CONTROL PROCESSING C SECTION 11.10.5, EXECUTION OF THE RANGE C SECTION 11.10.6, TERMINAL STATEMENT EXECUTION C SECTION 11.10.7, INCREMENTATION PROCESSING C C FM012 - TESTS THE DO STATEMENT WITH THE FORTRAN 66 CONCEPTS OF C EXTENDED RANGE OF A DO STATEMENT. C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 256 - TEST 001 **** C C TEST 001 CHECKS THE SIMPLE DO STATEMENT WITH THE OPTIONAL C COMMAS AND ALL DO PARAMETERS SPECIFIED. THE LOOP IS ACTIVE FOR C TEN COUNTS. THE FINAL VALUE OF THE INTEGER COUNTER SHOULD BE C EQUAL TO TEN (10). THE FORM OF THE DO STATEMENT USED IN THIS TEST C IS SHOWN BELOW - C C DO S, I = E1, E2, E3 C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 DO 0012, IVON01 = 1, 10, 1 IVCOMP = IVCOMP + 1 0012 CONTINUE IVCORR = 10 40010 IF ( IVCOMP - 10 ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 256 - TEST 002 **** C C TEST 002 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THAT THE COMMAS C THAT ARE OPTIONAL HAVE BEEN DELETED AS A SYNTAX CHECK. C C THE INCREMENTATION PARAMETER IS OPTIONAL AND NOT PRESENT IN C THIS TEST. ACCORDING TO SECTION 11.10.3, IF E3 DOES NOT APPEAR C THEN M3 HAS A VALUE OF ONE. THE DO STATEMENT FOR THIS TEST IS OF C THE FORM SHOWN BELOW - C C DO S I = E1, E2 C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 0 DO 0022 IVON01 = 1, 10 IVCOMP = IVCOMP + 1 0022 CONTINUE IVCORR = 10 40020 IF ( IVCOMP - 10 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 256 - TEST 003 **** C C TEST 003 HAS A DO STATEMENT INSIDE A BLOCKED IF STRUCTURE. C THE LOGICAL EXPRESSION IS TRUE SO THE DO-LOOP SHOULD BE EXECUTED C A TOTAL OF TEN TIMES. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 LVON01 = .TRUE. IF ( LVON01 ) THEN DO 0032 IVON01 = 1, 10, 1 IVCOMP = IVCOMP + 1 0032 CONTINUE END IF IVCORR = 10 40030 IF ( IVCOMP - 10 ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 256 - TEST 004 **** C C TEST 004 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THAT THE DO C STATEMENT IS LOCATED IN AN ELSE IF-BLOCK. THE DO-LOOP SHOULD BE C EXECUTED FIVE (5) TIMES. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 LVON01 = .FALSE. LVON02 = .TRUE. IF ( LVON01 ) THEN IVCOMP = 32000 ELSE IF ( LVON02 ) THEN DO 0042 IVON01 = 1, 5 IVCOMP = IVCOMP + 1 0042 CONTINUE END IF IVCORR = 5 40040 IF ( IVCOMP - 5 ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 256 - TEST 005 **** C C TEST 005 IS SIMILAR TO THE PREVIOUS TWO TESTS EXCEPT THAT THE C DO STATEMENT IS CONTAINED IN AN ELSE-BLOCK. THE DO-LOOP SHOULD BE C EXECUTED A TOTAL OF 3 TIMES. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 0 LVON01 = .FALSE. LVON02 = .FALSE. IF ( LVON01 ) THEN IVCOMP = 100 ELSE IF ( LVON02 ) THEN IVCOMP = 1000 ELSE DO 0052 IVON01 = 1, 3 IVCOMP = IVCOMP + 1 0052 CONTINUE END IF IVCORR = 3 40050 IF ( IVCOMP - 3 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 256 - TEST 006 **** C C TEST 006 HAS A BLOCKED IF STRUCTURE INSIDE A DO-LOOP. C THE LOOP IS EXECUTED THREE (3) TIMES. ALL THREE PARTS OF THE C BLOCK-IF STRUCTURE SHOULD BE EXECUTED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 DO 0062 IVON01 = 3, 5, 1 IF ( IVON01 .LE. 3 ) THEN IVCOMP = IVCOMP * 2 ELSE IF ( IVON01 .GT. 3 .AND. IVON01 .LT. 5 ) THEN IVCOMP = IVCOMP * 3 ELSE IVCOMP = IVCOMP * 5 END IF 0062 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 **** C IVCORR = 30 40060 IF ( IVCOMP - 30 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C C THE FOLLOWING SERIES OF TESTS CHECK THE DO-VARIABLE WHEN THE C DO-LOOP BECOMES INACTIVE. ACCORDING TO SECTION 11.10.2, WHEN A C DO-LOOP BECOMES INACTIVE, THE DO-VARIABLE OF THE DO-LOOP RETAINS C ITS LAST DEFINED VALUE. C C C C **** FCVS PROGRAM 256 - TEST 007 **** C C TEST 007 CHECKS THAT THE DO-VARIABLE CONTAINS ITS LAST DEFINED C VALUE WHEN THE ITERATION COUNT IS ZERO. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 IVON02 = 0 DO 0072 IVON01 = 100, 105, 2 IVON02 = IVON02 + 1 0072 CONTINUE IVCOMP = IVON01 IVCORR = 106 40070 IF ( IVCOMP - 106 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 256 - TEST 008 **** C C TEST 008 CHECKS THAT THE LOOP COUNTER IN THE PREVIOUS TEST HAD C A VALUE OF THREE TO SHOW THAT THE DO-LOOP WAS EXECUTED THREE TIMES C BEFORE TERMINATING ( BECOMMING INACTIVE ). C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 0 IVCOMP = IVON02 IVCORR = 3 40080 IF ( IVCOMP - 3 ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 256 - TEST 009 **** C C TEST 009 CHECKS THAT A DO-LOOP BECOMES INACTIVE IF THERE IS A C TRANSFER OF CONTROL OUTSIDE THE RANGE OF THE DO-LOOP. THE TRANS- C FER MUST BE INSIDE OF THE SAME PROGRAM UNIT - NOT A CALL OR C FUNCTION REFERENCE TO A SUBPROGRAM. C C THIS IS A SIGNIFICANT DIFFERENCE BETWEEN FORTRAN 66 AND FORTRAN C 77. FORTRAN 66 HAD AN EXTENDED RANGE OF THE DO FEATURE WHICH C ALLOWED FOR A TRANSFER OUTSIDE THE RANGE OF A DO-LOOP WITHOUT C MAKING THE DO-LOOP INACTIVE. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 DO 0092 IVON01 = 1, 7 IF ( IVON01 .GE. 3 ) GO TO 0093 0092 CONTINUE 0093 IVCOMP = IVON01 IVCORR = 3 40090 IF ( IVCOMP - 3 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 256 - TEST 010 **** C C TEST 010 CHECKS FOR AN INITIAL COUNT EQUAL TO ZERO BECAUSE C M1 IS GREATER THAN M2 AND M3 IS GREATER THAN ZERO - SEE SECTION C 11.10.3 FOR CONDITIONS WHICH MAKE THE ITERATION COUNT ZERO. C THE LOOP SHOULD NOT BE EXECUTED AT ALL. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 DO 0102 IVON01 = 100, 10, 3 IVCOMP = IVCOMP + 1 0102 CONTINUE IVCORR = 0 40100 IF ( IVCOMP ) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 256 - TEST 011 **** C C TEST 011 CHECKS FOR THE PROPER EXECUTION OF THE STEPS AS SHOWN C IN SECTION 11.10.3 - EXECUTING A DO STATEMENT. THE VARIABLE IVON0 C SHOULD HAVE BEEN SET TO 100. THE ITERATION COUNT IS ZERO BY THE C FORMULA IN 11.10.3(3). AS DESCRIBED IN SECTION 11.10.4 - THE C ITERATION COUNT IS TESTED. IF IT IS NOT ZERO, EXECUTION OF THE C FIRST STATEMENT IN THE RANGE OF THE DO-LOOP BEGINS. IF THE C ITERATION COUNT IS ZERO, THE DO-LOOP BECOMES INACTIVE. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 0 IVCOMP = IVON01 IVCORR = 100 40110 IF ( IVCOMP - 100 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C C THE FOLLOWING TWO TESTS ARE SIMILAR TO THE PREVIOUS TWO TESTS C IN THAT THE PARAMETERS OF THE DO STATEMENT MAKE THE ITERATION C COUNT ZERO WHEN THE DO STATEMENT IS EXECUTED. C C C C **** FCVS PROGRAM 256 - TEST 012 **** C C TEST 012 HAS M1 LESS THAN M2, BUT M3 IS NEGATIVE. THE LOOP C SHOULD NOT BE EXECUTED AT ALL. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 0 DO 0122 IVON01 = 10, 100, -3 IVCOMP = IVCOMP + 1 0122 CONTINUE IVCORR = 0 40120 IF ( IVCOMP ) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 256 - TEST 013 **** C C TEST 013 CHECKS THAT THE VALUE RETAINED FOR THE DO-VARIABLE C IN THE PREVIOUS TEST IS EQUAL TO THE INITIAL PARAMETER VALUE - M3. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 0 IVCOMP = IVON01 IVCORR = 10 40130 IF ( IVCOMP - 10 ) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 256 - TEST 014 **** C C TEST 014 CHECKS FOR ONE EXECUTION OF THE RANGE OF A DO-LOOP C ACCORDING TO THE FORMULA SHOWN IN 11.10.3(3) WITH M1 = M2. C C THE DO-LOOPS IN THIS TEST ARE A NEST OF THREE EACH WITH ITS C OWN TERMINAL STATEMENT. C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 1 DO 0144 IVON01 = 1, 1, 1 IVCOMP = IVCOMP * 2 DO 0143 IVON02 = 10,10,10 IVCOMP = IVCOMP * 3 DO 0142 IVON03 = 100, 100, -2 IVCOMP = IVCOMP * 5 0142 CONTINUE 0143 CONTINUE 0144 CONTINUE C C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 *** C IVCORR = 30 40140 IF ( IVCOMP - 30 ) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 256 - TEST 015 **** C C TEST 015 IS A CHECK ON THE FIRST EXAMPLE SHOWN IN SECTION C 11.10.7. THIS IS A TEST OF INCREMENTATION PROCESSING OF TWO NEST C DO-LOOPS HAVING THE SAME TERMINAL STATEMENT. C C THIS IS A TEST OF A DO-LOOP THAT BECOMES ACTIVE INSIDE AN C ALREADY ACTIVE DO-LOOP. C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 0 IVON01 = 0 DO 0152 IVON02 = 1, 10 IVON03 = IVON02 DO 0152 IVON04 = 1, 5 IVON05 = IVON04 0152 IVON01 = IVON01 + 1 0153 CONTINUE IVCOMP = IVON02 C THIS IS THE VALUE FOR I IN THE EXAMPLE. IVCORR = 11 40150 IF ( IVCOMP - 11 ) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 256 - TEST 016 **** C C TEST 016 CHECKS THE VALUE OF J (IVON03) IN THE FIRST EXAMPLE. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 0 IVCOMP = IVON03 IVCORR = 10 40160 IF ( IVCOMP - 10 ) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 256 - TEST 017 **** C C TEST 017 CHECKS THE VALUE OF K (IVON04) IN THE FIRST EXAMPLE. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IVCOMP = IVON04 IVCORR = 6 40170 IF ( IVCOMP - 6 ) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 256 - TEST 018 **** C C TEST 018 CHECKS THE VALUE OF L (IVON05) IN THE FIRST EXAMPLE. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 0 IVCOMP = IVON05 IVCORR = 5 40180 IF ( IVCOMP - 5 ) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 256 - TEST 019 **** C C TEST 019 CHECKS THE VALUE OF N (IVON01) IN THE FIRST EXAMPLE. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 0 IVCOMP = IVON01 IVCORR = 50 40190 IF ( IVCOMP - 50 ) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 256 - TEST 020 **** C C TEST 020 IS A CHECK ON THE SECOND EXAMPLE IN SECTION 11.10.7. C IN THIS EXAMPLE, THE INNER DO-LOOP BECOMES ACTIVE AND THEN C IMMEDIATELY INACTIVE INSIDE AN ALREADY ACTIVE OUTER DO-LOOP. C C ALTHOUGH IN SOME WAYS SIMILAR TO THE FIRST EXAMPLE, THE SECOND C EXAMPLE SHOULD HAVE DIFFERENT FINAL VALUES ON THE INTEGER COUNTERS C AND THE VALUE OF L (IVON10) WILL NOT BE TESTED BECAUSE IT IS NOT C DEFINED DURING THE RANGE OF THE DO-LOOP INVOLVED. C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 0 IVON06 = 0 DO 0202 IVON07 = 1, 10 IVON08 = IVON07 DO 0202 IVON09 = 5, 1 IVON10 = IVON09 0202 IVON06 = IVON06 + 1 0203 CONTINUE IVCOMP = IVON07 C THIS IS THE VALUE FOR I IN THE SECOND EXAMPLE. IVCORR = 11 40200 IF ( IVCOMP - 11 ) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 256 - TEST 021 **** C C TEST 021 CHECKS THE VALUE OF J (IVON08) IN THE SECOND EXAMPLE. C C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 0 IVCOMP = IVON08 IVCORR = 10 40210 IF ( IVCOMP - 10 ) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 256 - TEST 022 **** C C TEST 022 CHECKS THE VALUE OF K (IVON09) IN THE SECOND EXAMPLE. C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVCOMP = 0 IVCOMP = IVON09 IVCORR = 5 40220 IF ( IVCOMP - 5 ) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 256 - TEST 023 **** C C TEST 023 CHECKS THE VALUE OF N (IVON06) IN THE SECOND EXAMPLE. C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 0 IVCOMP = IVON06 IVCORR = 0 40230 IF ( IVCOMP - 0 ) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 256 - TEST 024 **** C C TEST 024 IS A CHECK ON USING A LOGICAL IF STATEMENT AS THE C TERMINAL STATEMENT IN THE RANGE OF A DO-LOOP. THE LOGICAL IF C STATEMENT HAS AN UNCONDITIONAL GO TO STATEMENT AS ITS EXECUTABLE C STATEMENT AS ALLOWED IN SECTION 11.10. C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVCOMP = 0 DO 0242 IVON01 = 1, 10 IVCOMP = IVCOMP + 1 0242 IF ( IVON01 .GE. 5 ) GO TO 0243 C C C IF THE LOGIC DOES NOT BRANCH OUT OF THE RANGE OF THE DO-LOOP WHEN C THE DO-VARIABLE (IVON01) IS EQUAL TO FIVE (5), THEN IVCOMP WILL BE C SET BACK TO THE VALUE OF ZERO. C IVCOMP = 0 C C 0243 IVCORR = 5 40240 IF ( IVCOMP - 5 ) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM256) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM256) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM256 FM257.f 480976139 170 2 100666 9070 ` *HEADER,FORTR,FM257 *FILES1,FORTR,FM257,X PROGRAM FM257 C C C C THIS ROUTINE IS A TEST OF THE PAUSE AND STOP STATEMENTS. THESE C STATEMENTS CAN NOW BE FOLLOWED BY A STRING OF NOT MORE THAN FIVE C DIGITS, OR A CHARACTER CONSTANT. C C REFERENCES C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C SECTION 11.12, STOP STATEMENT C SECTION 11.13, PAUSE STATEMENT C C FM015 - TESTS THE STOP AND PAUSE STATEMENTS USING AN OCTAL C DIGIT STRING OF LENGTH FROM ONE TO FIVE. C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C C THE FOLLOWING SERIES OF TESTS CHECK THE VARIOUS FORMS OF THE C PAUSE STATEMENT. IN EACH CASE THE WORD PAUSE (FOLLOWED BY A C STRING OF CHARACTERS AS NOTED IN EACH TEST DESCRIPTION), SHOULD BE C DISPLAYED ON THE OPERATORS CONSOLE. FOR EACH TEST THE OPERATOR C NEED ONLY DO WHATEVER IS NESSARY TO TELL THE SYSTEM TO CONTINUE C THE EXECUTION OF THE ROUTINE. THE STRING FORMS ARE AS DESCRIBED C IN SECTION 11.13. C C C C **** FCVS PROGRAM 257 - TEST 001 **** C C TEST 001 CHECKS THE PAUSE STATEMENT THAT IS NOT FOLLOWED BY C A STRING OF ANYTHING EXCEPT BLANKS. ONLY THE WORD PAUSE SHOULD C BE DISPLAYED. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE PAUSE C C ***** THESE CARDS INITIALIZE IVCOMP AND IVCORR FOR THE NEXT C FIVE TESTS EVEN THOUGH THEY ONLY APPEAR IN THE FAIL CODE C OF THE BOILERPLATE.***** IVCOMP = 1 IVCORR = 1 C C 40010 IF ( ICZERO ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 257 - TEST 002 **** C C TEST 002 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY A SINGLE C CHARACTER ZERO (0). C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE PAUSE 0 40020 IF ( ICZERO ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 257 - TEST 003 **** C C TEST 003 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY A STRING OF C FIVE ZEROS (00000). C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE PAUSE 00000 40030 IF ( ICZERO ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 257 - TEST 004 **** C C TEST 004 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY THE STRING C OF FIVE CHARACTERS 19283. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE PAUSE 19283 40040 IF ( ICZERO ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 257 - TEST 005 **** C C TEST 005 SHOULD DISPLAY THE WORD PAUSE FOLLOWED BY THE STRING C OF FOUR NINES (9999). C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE PAUSE 9999 40050 IF ( ICZERO ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 257 - TEST 006 **** C C TEST 006 IS FOR THE STOP STATEMENT - SECTION 11.12. C SINCE THE STOP STATEMENT CAN ONLY BE EXECUTED ONCE IN A PROGRAM C UNIT, VARIOUS FORMATS OF THE STOP STATEMENT WILL BE CHECKED FOR C SYNTAX ONLY BY THE USE OF A COMPUTED GO TO STATEMENT. C C ONCE THE STOP STATEMENT HAS BEEN EXECUTED, THEN THE ROUTINE C FM257 SHOULD NO LONGER EXECUTE. ANY CONTINUATION IS CONSIDERED AS C A FAILURE OF THIS TEST. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVON01 = 6 GO TO ( 0062, 0063, 0064, 0065, 0066, 0067, 40060 ), IVON01 C 0062 STOP 0 0063 STOP 00000 0064 STOP 12345 0065 STOP 9999 0066 STOP 'IMA 1' 0067 STOP 'P ASS' C C **** THE TEST FAILS IF IT GOES BEYOND THE STOP STATEMENTS **** C 40060 IF ( ICZERO ) 10060, 20060, 10060 C ***** NOTE THAT THE NORMAL PASS-10060 AND FAIL-20060 LABELS C ARE REVERSED BECAUSE IF THE LOGIC EXECUTES THIS STATEMENT C THEN THE STOP STATEMENT FAILS TO EXECUTE CORRECTLY. ***** 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM257) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM257) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM257 FM258.f 480976141 170 2 100666 11274 ` *HEADER,FORTR,FM258 *FILES1,FORTR,FM258,X C*********************************************************************** C***** FORTRAN 77 C***** FM258 C***** BLKIF1 - (300) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST BLOCK IF STATEMENTS 11.6 - 11.9 C***** SIMPLE TESTS OF IF (E) THEN,ELSE,ELSEIF,ENDIF C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 ZPROG='FM258' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** TOTAL NUMBER OF EXPECTED TEST IVTOTL=8 C***** HEADER FOR SEGMENT 300 WRITE(NUVI,30000) 30000 FORMAT(/1X,38H BLKIF1 - (300) BLOCK IF - SIMPLE TEST// 1 26H SUBSET REF. 11.6 - 11.9) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE (NUVI,30025) CT001* TEST 1 IF (E) THEN .*. ELSE .*. ENDIF IVTNUM = 1 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 30001 JVI = JVI + 1 IF (JVI .EQ. 2) THEN KVI = 2 ELSE KVI = 1 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30001,30002), JVI 30002 CONTINUE CT002* TEST 2 IF (E) THEN .*. ENDIF IVTNUM = 2 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 KVI = 1 30003 JVI = JVI + 1 IF (JVI .EQ. 2) THEN KVI = 2 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30003,30004), JVI 30004 CONTINUE CT003* TEST 3 IF (E) THEN ... ELSE .*. ENDIF IVTNUM = 3 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 KVI = 1 30005 JVI = JVI + 1 IF (JVI .EQ. 1) THEN ELSE KVI = 2 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30005,30006), JVI 30006 CONTINUE CT004* TEST 4 IF (E) THEN .*. ELSEIF .*. ELSE .*. ENDIF IVTNUM = 4 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 30007 JVI = JVI + 1 IF (JVI .EQ. 1) THEN KVI = 1 ELSEIF (JVI .EQ. 2) THEN KVI = 2 ELSE KVI = 3 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30007,30007,30008), JVI 30008 CONTINUE CT005* TEST 5 IF (E) THEN .*. ELSEIF .*. ENDIF IVTNUM = 5 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 KVI = 1 30009 JVI = JVI + 1 IF (JVI .GT. 2) THEN KVI = 3 ELSEIF (JVI .EQ. 2) THEN KVI = 2 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30009,30009,30010), JVI 30010 CONTINUE CT006* TEST 6 IF (E) THEN .*. ELSEIF ... ELSE .*. ENDIF IVTNUM = 6 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 KVI = 1 30011 JVI = JVI + 1 IF ( JVI .GT. 2) THEN KVI = 3 ELSEIF (JVI .EQ. 1) THEN ELSE KVI = 2 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30011,30011,30012), JVI 30012 CONTINUE CT007* TEST 7 IF (E) THEN ... ELSEIF .*. ELSE .*. ENDIF IVTNUM = 7 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 KVI = 1 30013 JVI = JVI + 1 IF (JVI .EQ. 1) THEN ELSEIF (JVI .LT. 3) THEN KVI = 2 ELSE KVI = 3 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30013,30013,30014), JVI 30014 CONTINUE CT008* TEST 8 IF (E) THEN .*. ELSEIF .*. ELSEIF .*. ENDIF IVTNUM = 8 IVINSP=IVINSP+1 WRITE(NUVI,80004) IVTNUM JVI = 0 30015 JVI = JVI + 1 KVI = 4 IF ( JVI .EQ. 1) THEN KVI = 1 ELSEIF (JVI .EQ. 2) THEN KVI = 2 ELSEIF (JVI .LT. 4) THEN KVI = 3 ENDIF LVI = JVI - KVI WRITE(NUVI,30018) LVI GOTO(30015,30015,30015,30016), JVI C***** 30016 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** 30026 FORMAT (1H1, 26X,I1) 30018 FORMAT(1H ,26X,I10) 30025 FORMAT(/49X,30HTESTS 1-3 (2 COMPUTED RESULTS), 1 /49X,30HTESTS 4-7 (3 COMPUTED RESULTS), 2 /49X,30HTEST 8 (4 COMPUTED RESULTS), 3 /49X,26HALL ANSWERS SHOULD BE ZERO) C***** END OF TEST SEGMENT 300 STOP END *END-OF,FM258 FM259.f 481036179 170 2 100666 9699 ` *HEADER,FORTR,FM259 *FILES1,FORTR,FM259,X C*********************************************************************** C***** FORTRAN 77 C***** FM259 C***** BLKIF2 - (301) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST BLOCK IF STATEMENTS 11.1 - 11.3 C***** WITH GOTO, COMPUTED GOTO, ASSIGN GOTO, DO 11.6 - 11.10 C**** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 3 ZPROG = 'FM259' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 301 WRITE(NUVI,30100) 30100 FORMAT(1H , / 24H BLKIF2 - (301) BLOCK IF// 1 35H WITH OTHER CONTROL CONSTRUCTS (I)// 2 36H SUBSET REF. 11.1-11.3, 11.6-11.10) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE (NUVI,70000) CT001* TEST 1 IF (E) THEN .*. ENDIF IVTNUM = 1 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM KVI = 7 IF (KVI .EQ. 7) THEN KVI = 8 IF (KVI .GE. 8) GOTO 0012 KVI = 9 ENDIF 0012 LVI = 8 - KVI WRITE(NUVI,70010) LVI CT002* TEST 2 IF (E) THEN .*. ELSE .*. ENDIF IVTNUM = 2 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM KVI = 0 LVI = 1 IF (LVI .EQ. 7) THEN KVI = 8 IF (LVI .EQ. 1) GOTO 0026 KVI = 9 ELSE GOTO (0023, 0024, 0022), LVI 0022 KVI = 1 GOTO 0025 0023 KVI = 2 GOTO 0025 0024 KVI = 3 0025 CONTINUE ENDIF 0026 LVI = 2 - KVI WRITE(NUVI,70010) LVI CT003* TEST 3 DO .......... IVTNUM = 3 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM MVI = 0 ASSIGN 0034 TO NVI LVI = 0 JVI = 1 DO 0037 IVI = 1,4 IF (IVI .EQ. 1) THEN DO 0032 KVI = 1,IVI LVI = LVI + 1 0032 CONTINUE ELSEIF (IVI .EQ. 2) THEN LVI = 6 IF (.FALSE.) GOTO 0036 LVI = 2 ELSEIF (IVI .EQ. 3) THEN IF (MVI .NE. 0) THEN LVI = 7 ELSE LVI = 3 ENDIF ELSE GOTO NVI, (0033, 0034) 0033 LVI = 5 GOTO 0035 0034 LVI = 4 ASSIGN 0033 TO NVI 0035 CONTINUE ENDIF LVI = LVI - JVI 0036 WRITE(NUVI,70010) LVI JVI = JVI + 1 0037 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** 70000 FORMAT (/49X,'TEST 1 (1 COMPUTED RESULT)'/ 1 49X,'TEST 2 (1 COMPUTED RESULT)'/ 2 49X,'TEST 3 (4 COMPUTED RESULTS)'/ 3 49X,'ALL ANSWERS SHOULD BE ZERO') 70010 FORMAT (1H ,26X,I10) C***** END OF TEST SEGMENT 301 STOP END *END-OF,FM259 FM260.f 481036182 170 2 100666 11432 ` *HEADER,FORTR,FM260 *FILES1,FORTR,FM260,X C*********************************************************************** C***** FORTRAN 77 C***** FM260 C***** BLKIF3 - (302) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST BLOCK IF STATEMENTS 11.1 - 11.3 C***** WITH DO, ARITHMETIC IF, LOGICAL IF, 11.6 - 11.10 C***** COMPUTED GOTO, ASSIGN GOTO C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 ZPROG = 'FM260' IVTOTL = 2 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** TOTAL NUMBER OF EXPECTED TESTS C***** C***** HEADER FOR SEGMENT 302 WRITE(NUVI,30200) 30200 FORMAT(1H ,24H BLKIF3 - (302) BLOCK IF// 1 36H WITH OTHER CONTROL CONSTRUCTS (II)// 2 40H SUBSET REF. 11.1 - 11.3, 11.6 - 11.10) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE (NUVI, 30225) CT001* TEST 1 BLOCK IF WITH DO, ARITHMETIC IF, COMPUTED GOTO, C***** ASSIGNED GOTO IVTNUM = 1 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM JVI = 1 KVI = 1 ASSIGN 0017 TO MVI DO 0011 IVI = 1, 9 IF (IVI - 6) 0010, 0013, 0016 0010 IF (IVI .LE. 3) THEN GOTO (0019, 0012, 0012) IVI 0012 KVI = KVI + 1 ELSE KVI = 5 IF (IVI .NE. 5) KVI = 4 ENDIF GOTO 0019 0013 DO 0015 NVI = 1,3 KVI = 8 IF ((IVI + NVI) .EQ. 7) THEN KVI = 6 GOTO 0014 ELSEIF (NVI .EQ. 2) THEN KVI = 7 C***** LABEL ON A ENDIF IS PERMITTED 0014 ENDIF LVI = KVI - JVI WRITE(NUVI,30215) LVI JVI = JVI + 1 0015 CONTINUE GOTO 0011 0016 LVI = 10 GOTO MVI, (0017, 0018) 0017 ASSIGN 0018 TO MVI LVI = 9 0018 IF (IVI .LE. 8) THEN KVI = LVI ELSE KVI = 11 ENDIF 0019 LVI = KVI - JVI WRITE (NUVI, 30215) LVI JVI = JVI + 1 0011 CONTINUE CT002* TEST 2 DO WITH NESTED BLOCK IFS IVTNUM = 2 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM JVI = 1 DO 0021 IVI = 1, 8 KVI = 0 IF (IVI .LT. 5) THEN IF (IVI .LE. 2) THEN IF (IVI - 1 .EQ. 0) THEN KVI = KVI + 1 ELSE KVI = KVI + 2 ENDIF KVI = KVI * 2 ELSE IF (IVI .EQ. 3) THEN DO 0020 NVI = 1,IVI 0020 KVI = KVI + 10 ELSE DO 0022 NVI = 1, IVI 0022 KVI = KVI + 10 ENDIF KVI = KVI / 10 * 2 ENDIF KVI = KVI * 3 ELSE IF (IVI .LE. 6) THEN IF (IVI - 5 .EQ. 0) THEN KVI = KVI + 105 ELSE KVI = KVI + 106 ENDIF KVI = (KVI - 100) * 3 ELSE IF (IVI .LE. 7) THEN KVI = KVI - 7 ELSE KVI = KVI - 8 ENDIF KVI = KVI + IVI * 4 ENDIF KVI = KVI * 2 ENDIF LVI = KVI / 6 - JVI WRITE (NUVI,30215) LVI JVI = JVI + 1 0021 CONTINUE C***** 30215 FORMAT(1H ,26X,I10) 30225 FORMAT (/49X,'TEST 1 (11 COMPUTED RESULTS)'/ 1 49X,'TEST 2 (8 COMPUTED RESULTS)'/ 2 49X,'ALL ANSWERS SHOULD BE ZERO') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 302 STOP END *END-OF,FM260 FM261.f 481036185 170 2 100666 10040 ` *HEADER,FORTR,FM261 *FILES1,FORTR,FM261 C*********************************************************************** C***** FORTRAN 77 C***** FM261 C***** BLKIF4 - (303) C***** THIS PROGRAM CALLS SUBROUTINES SN262, SN263 AND INTEGER C FUNCTION IF264 C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST BLOCK IF STATEMENTS 11.6 - 11.9 C***** WITH SUBROUTINE CALLS 15.6 C***** USES SUBROUTINES SN262 (750), SN263 (751) C***** AND FUNCTION IF264 (752) CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 ZPROG = 'FM261' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** TOTAL NUMBER OF EXPECTED TESTS IVTOTL = 2 C***** HEADER FOR SEGMENT 303 WRITE(NUVI,30300) 30300 FORMAT(1H ,/24H BLKIF4 - (303) BLOCK IF// 1 31H BLOCK IF WITH SUBPROGRAM CALL// 2 31H SUBSET REF. 11.6 - 11.9, 15.6) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE (NUVI, 30325) CT001* TEST 1 BLOCK IF WITH SUBROUTINE CALLS IVTNUM = 1 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM IVI = 3 CALL SN262 (IVI) IF (IVI .GT. 0) THEN CALL SN262 (IVI) ELSE CALL SN263 (IVI) ENDIF LVI = 7 - IVI WRITE (NUVI, 30301) LVI C***** CONTINUE CT002* TEST 2 CALL OF FUNCTION CONTAINING BLOCK IF IVTNUM = 2 IVINSP = IVINSP + 1 WRITE (NUVI, 80004) IVTNUM IVI = 7 IVI = IF264 (IVI .GT. 0) LVI = 8 - IVI WRITE (NUVI, 30301) LVI IVI = IF264 (LVI .NE. 0) LVI = 6 - IVI WRITE (NUVI, 30301) LVI C***** 30325 FORMAT (/49X,'TEST 1 (1 COMPUTED RESULT)'/ 1 49X,'TEST 2 (2 COMPUTED RESULTS)'/ 2 49X,'ALL ANSWERS SHOULD BE ZERO') 30301 FORMAT (1H ,26X,I10) C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 303 STOP END *HEADER,FORTR,FM261,SUBRTN,FM262 C*********************************************************************** C***** FORTRAN 77 C***** FM262 C***** SN262 SN262 - (750) C***** SUBROUTINE CALLED BY FM261 C*********************************************************************** C***** SUBROUTINE SN262 (IWVI) C***** IWVI = IWVI + 2 C***** RETURN END *HEADER,FORTR,FM261,SUBRTN,FM263 C*********************************************************************** C***** FORTRAN 77 C***** FM263 C***** SN263 SN263 - (751) C***** SUBROUTINE CALLED BY FM261 C*********************************************************************** C***** SUBROUTINE SN263 (IWVI) C***** IWVI = IWVI * (-10) C***** RETURN END *HEADER,FORTR,FM261,SUBRTN,FM264 C*********************************************************************** C***** FORTRAN 77 C***** FM264 C***** IF264 IF264 - (752) C***** INTEGER FUNCTION CALLED BY FM261 C*********************************************************************** C***** INTEGER FUNCTION IF264 (AWVB) LOGICAL AWVB C***** IF (AWVB) THEN IF264 = 8 RETURN ELSE IF264 = 6 ENDIF C***** RETURN END *END-OF,FM261 FM300.f 481036189 170 2 100666 19206 ` *HEADER,FORTR,FM300 *FILES1,FORTR,FM300,X PROGRAM FM300 C C C THIS ROUTINE TESTS THE USE OF THE EQUIVALENCE STATEMENT TO C EQUATE STORAGE UNITS OF VARIABLES, ARRAYS AND ARRAY ELEMENTS. C ONLY INTEGER, REAL, LOGICAL AND CHARACTER DATA TYPES ARE TESTED. C NO ATTEMPT IS MADE TO TEST DATA OF DIFFERENT TYPES THAT ARE C EQUATED WITH THE EQUIVALENCE STATEMENT. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.2, EQUIVALENCE STATEMENT C SECTION 9, DATA STATEMENT C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C C *** SPECIFICATION STATEMENTS FOR TEST 001 *** C EQUIVALENCE (IVOE01, IVOE02) C C *** SPECIFICATION STATEMENTS FOR TEST 002 *** C EQUIVALENCE (RVOE01, RVOE02) C C *** SPECIFICATION STATEMENTS FOR TEST 003 *** C EQUIVALENCE (LVOE01, LVOE02) C C *** SPECIFICATION STATEMENTS FOR TEST 004 *** C CHARACTER CVTE01*3, CVTE02*3, CVCOMP*3 EQUIVALENCE (CVTE01, CVTE02) C C *** SPECIFICATION STATEMENTS FOR TEST 005 *** C EQUIVALENCE (IVOE03, IVOE04, IVOE05) C C *** SPECIFICATION STATEMENTS FOR TEST 006 *** C EQUIVALENCE (IVOE06, IVOE07, RVOE03) C C *** SPECIFICATION STATEMENTS FOR TESTS 007 AND 008 *** C EQUIVALENCE (IVOE08, IVOE09), (IVOE10, IVOE11) C C *** SPECIFICATION STATEMENTS FOR TEST 009 *** C EQUIVALENCE (IVOE12, IVOE13), (IVOE13, IVOE14) C C *** SPECIFICATION STATEMENTS FOR TEST 010 *** C EQUIVALENCE (IVOE15, IVOE16) EQUIVALENCE (IVOE16, IVOE17) C C *** SPECIFICATION STATEMENTS FOR TESTS 011 AND 012 *** C DIMENSION IADE11(2), IADE12(3) EQUIVALENCE (IADE11, IADE12) C C *** SPECIFICATION STATEMENTS FOR TESTS 013 AND 014 *** C DIMENSION RADE11(5), RADE12(5) EQUIVALENCE (RADE11(4), RADE12(2)) C C *** SPECIFICATION STATEMENTS FOR TEST 015 *** C DIMENSION IADE13(4), IADE14(4) EQUIVALENCE (IADE13, IADE14(3)) C C *** SPECIFICATION STATEMENTS FOR TEST 016 *** C DIMENSION IADE15(3) EQUIVALENCE (IADE15(2), IVOE18) C C *** SPECIFICATION STATEMENTS FOR TESTS 017 AND 018 *** C DIMENSION IADE21(2,2), IADE16(4) EQUIVALENCE (IADE21, IADE16) C C *** SPECIFICATION STATEMENTS FOR TEST 019 *** C EQUIVALENCE (IVOE19, IVOE20) DATA IVOE19/19/ 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 300 - TEST 001 **** C C THIS IS A TEST FOR EQUATING TWO INTEGER VARIABLES. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 IVOE01 = 5 IVOE02 = 7 IVCORR = 7 IVCOMP = IVOE01 40010 IF (IVCOMP - 7) 20010,10010,20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 300 - TEST 002 **** C C THIS IS A TEST FOR EQUATING TWO REAL VARIABLES. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVCOMP = 0.0 RVOE01 = 4.5 RVOE02 = 1.2 RVCORR = 1.2 RVCOMP = RVOE01 40020 IF (RVCOMP - 1.1995) 20020,10020,40021 40021 IF (RVCOMP - 1.2005) 10020,10020,20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0031 CONTINUE C C **** FCVS PROGRAM 300 - TEST 003 **** C C THIS IS A TEST FOR EQUATING TWO LOGICAL VARIABLES. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE LVOE01 = .TRUE. LVOE02 = .FALSE. IVCORR = 0 IVCOMP = 0 IF (LVOE01) IVCOMP = 1 40030 IF (IVCOMP) 20030,10030,20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 300 - TEST 004 **** C C THIS IS A TEST FOR EQUATING TWO CHARACTER VARIABLES. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE CVCOMP = ' ' CVTE01 = 'ABC' CVTE02 = 'DEF' CVCORR = 'DEF' CVCOMP = CVTE01 40040 IF (CVCOMP .EQ. 'DEF') GO TO 10040 40041 GO TO 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0051 CONTINUE C C **** FCVS PROGRAM 300 - TEST 005 **** C C THIS IS A TEST FOR EQUATING THREE INTEGER VARIABLES. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 0 IVOE03 = 3 IVOE04 = 4 IVOE05 = 5 IVCORR = 5 IVCOMP = IVOE03 40050 IF (IVCOMP - 5) 20050,40051,20050 40051 IVCOMP = IVOE04 40052 IF (IVCOMP - 5) 20050,10050,20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 300 - TEST 006 **** C C THIS IS A TEST FOR EQUATING TWO INTEGER VARIABLES AND ONE C REAL VARIABLE WITHIN ONE EQUIVALENCE STATEMENT LIST OF NAMES. THE C VALUE OF THE REAL VARIABLE IS NOT TESTED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 0 RVOE03 = 3.445 IVOE06 = 6 IVOE07 = 7 IVCORR = 7 IVCOMP = IVOE06 40060 IF (IVCOMP - 7) 20060,10060,20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 300 - TEST 007 **** C C THIS IS A TEST FOR EQUATING INTEGER VARIABLES USING TWO LISTS C OF NAMES IN ONE EQUIVALENCE STATEMENT. NAMES SPECIFIED IN THE C FIRST LIST ARE NOT EQUATED TO NAMES IN THE SECOND LIST. THIS C TEST CHECKS THE EQUIVALINCE OF THE VARIABLES IN THE FIRST LIST. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 IVOE08 = 8 IVOE09 = 9 IVOE10 = 10 IVOE11 = 11 IVCORR = 9 IVCOMP = IVOE08 40070 IF (IVCOMP - 9) 20070,10070,20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 300 - TEST 008 **** C C THIS TEST CHECKS THE EQUIVALENCE OF THE VARIABLES IN THE C SECOND LIST. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 0 IVCORR = 11 IVCOMP = IVOE10 40080 IF (IVCOMP - 11) 20080,10080,20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 300 - TEST 009 **** C C THIS IS A TEST FOR EQUATING INTEGER VARIABLES IN ONE LIST C WITH INTEGER VARIABLES IN A SECOND LIST OF THE SAME EQUIVALENCE C STATEMENT. ALL VARIABLES SHOULD BE EQUATED AND SHARE THE SAME C STORAGE UNIT. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 IVOE12 = 12 IVOE13 = 13 IVOE14 = 14 IVCORR = 14 IVCOMP = IVOE13 40090 IF (IVCOMP - 14) 20090,40091,20090 40091 IVCOMP = IVOE12 40092 IF (IVCOMP - 14) 20090,10090,20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 300 - TEST 010 **** C C THIS IS A TEST FOR EQUATING INTEGER VARIABLES SPECIFIED IN ONE C EQUIVALENCE STATEMENT WITH INTEGER VARIABLES SPECIFIED IN A C SECOND EQUIVALENCE STATEMENT. ONE VARIABLE IS SPECIFIED IN BOTH C STATEMENTS, THEREFORE ALL VARIABLES SHOULD BE EQUATED AND SHARE C THE SAME STORAGE UNIT. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 IVOE15 = 15 IVOE16 = 16 IVOE17 = 17 IVCORR = 17 IVCOMP = IVOE16 40100 IF (IVCOMP - 17) 20100,40101,20100 40101 IVCOMP = IVOE15 40102 IF (IVCOMP - 17) 20100,10100,20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 300 - TEST 011 **** C C THIS IS A TEST FOR EQUATING TWO INTEGER ARRAYS UNQUALIFIED C BY A SUBSCRIPT IN THE EQUIVALENCE STATEMENT. ALL ARRAY ELEMENTS C SPECIFIED BY THE SAME SUBSCRIPT VALUE, BEGINNING WITH THE FIRST C ARRAY ELEMENT, SHOULD BE EQUATED AND SHARE THE SAME STORAGE UNIT. C THIS TEST CHECKS THE EQUIVALENCE OF THE FIRST ARRAY ELEMENTS. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 0 IADE11(1) = 111 IADE11(2) = 112 IADE12(1) = 121 IADE12(2) = 122 IADE12(3) = 123 IVCORR = 121 IVCOMP = IADE11(1) 40110 IF (IVCOMP - 121) 20110,10110,20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 300 - TEST 012 **** C C THIS TEST CHECKS THE EQUIVALENCE OF THE SECOND ARRAY ELEMENTS. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 0 IVCORR = 122 IVCOMP = IADE11(2) 40120 IF (IVCOMP - 122) 20120,10120,20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 300 - TEST 013 **** C C THIS IS A TEST FOR EQUATING TWO REAL ARRAY ELEMENTS. THIS C TEST CHECKS THE EQUIVALENCE OF THE TWO ARRAY ELEMENTS SPECIFIED C IN THE EQUIVALENCE STATEMENT. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVCOMP = 0.0 RADE11(4) = 11.4 RADE12(2) = 1.22 RVCORR = 1.22 RVCOMP = RADE11(4) 40130 IF (RVCOMP - 1.2195) 20130,10130,40131 40131 IF (RVCOMP - 1.2205) 10130,10130,20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C C **** FCVS PROGRAM 300 - TEST 014 **** C C THIS TEST CHECKS THE EQUIVALENCE OF THE ARRAY ELEMENTS C WITH A SUBSCRIPT VALUE ONE LESS THAN THOSE TESTED IN THE C PREVIOUS TEST. THESE ELEMENTS SHOULD BE EQUATED AND SHARE THE C SAME STORAGE UNIT DUE TO THE WAY ARRAY ELEMENTS OCCUPY C CONSECUTIVE STORAGE UNITS. C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE RVCOMP = 0.0 RADE11(3) = .113 RADE12(1) = 122. RVCORR = 122. RVCOMP = RADE11(3) 40140 IF (RVCOMP - 121.95) 20140,10140,40141 40141 IF (RVCOMP - 122.05) 10140,10140,20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0151 CONTINUE C C **** FCVS PROGRAM 300 - TEST 015 **** C C THIS IS A TEST TO EQUATE AN ARRAY NAME TO AN ARRAY ELEMENT C NAME. C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 0 IADE13(1) = 131 IADE14(3) = 143 IVCORR = 143 IVCOMP = IADE13(1) 40150 IF (IVCOMP - 143) 20150,10150,20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 300 - TEST 016 **** C C THIS IS A TEST TO EQUATE AN ARRAY ELEMENT TO AN INTEGER C VARIABLE. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 0 IADE15(2) = 152 IVOE18 = 18 IVCORR = 18 IVCOMP = IADE15(2) 40160 IF (IVCOMP - 18) 20160,10160,20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 300 - TEST 017 **** C C THIS IS A TEST TO EQUATE A ONE DIMENSIONAL ARRAY TO A TWO C DIMENSIONAL ARRAY. THIS TEST CHECKS THE SECOND ARRAY ELEMENTS. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IADE21(2,1) = 212 IADE16(2) = 162 IVCORR = 162 IVCOMP = IADE21(2,1) 40170 IF (IVCOMP - 162) 20170,10170,20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 300 - TEST 018 **** C C THIS TEST CHECKS THE THIRD ARRAY ELEMENTS FROM THE PREVIOUS C TEST. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 0 IADE21(1,2) = 2112 IADE16(3) = 163 IVCORR = 163 IVCOMP = IADE21(1,2) 40180 IF (IVCOMP - 163) 20180,10180,20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 300 - TEST 019 **** C C THIS IS A TEST TO EQUATE TWO INTEGER VARIABLES ONE OF WHICH C IS INITIALIZED IN A DATA STATEMENT. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 0 IVCORR = 19 IVCOMP = IVOE20 40190 IF (IVCOMP - 19) 20190,10190,20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM300) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM300) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM300 FM301.f 481036193 170 2 100666 19576 ` *HEADER,FORTR,FM301 *FILES1,FORTR,FM301,X PROGRAM FM301 C C C FM301 TESTS THE USE OF THE TYPE-STATEMENT TO EXPLICITLY C DEFINE THE DATA TYPE FOR VARIABLES, ARRAYS, AND STATEMENT C FUNCTIONS. ONLY INTEGER, REAL, LOGICAL AND CHARACTER DATA C TYPES ARE TESTED IN THIS ROUTINE. INTEGER AND REAL VARIABLES C AND ARRAYS ARE TESTED IN A MANNER WHICH BOTH CONFIRMS AND C OVERRIDES THE IMPLICIT TYPING OF THE DATA ENTITIES. C C FM301 DOES NOT ATTEMPT TO TEST ALL OF THE ELEMENTARY SYNTAX C FORMS OF THE TYPE-STATEMENT. THESE FORMS ARE TESTED ADEQUATELY C WITHIN THE BOILER PLATE AND OTHER AUDIT PROGRAMS. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1, DATA TYPES C SECTION 8.4, TYPE-STATEMENT C SECTION 8.5, IMPLICIT STATEMENT C SECTION 15.4, STATEMENT FUNCTION C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C C C *** IMPLICIT STATEMENT FOR TEST 006 *** C IMPLICIT LOGICAL (M) C C *** IMPLICIT STATEMENT FOR TEST 017 *** C IMPLICIT INTEGER (G) C C *** IMPLICIT STATEMENT FOR TEST 018 *** C IMPLICIT CHARACTER*2 (F) C C *** SPECIFICATION STATEMENTS FOR TEST 001 *** C INTEGER AVTN01 C C *** SPECIFICATION STATEMENTS FOR TEST 002 *** C REAL KVTN01 C C *** SPECIFICATION STATEMENTS FOR TEST 003 *** C INTEGER KVTN02, AVTN02, KVTN03 C C *** SPECIFICATION STATEMENTS FOR TEST 004 *** C REAL AVTN03, AVTN04, KVTN04 C C *** SPECIFICATION STATEMENTS FOR TEST 005 *** C LOGICAL HVTN01 C C *** SPECIFICATION STATEMENTS FOR TEST 006 *** C (ALSO SEE THE IMPLICIT STATEMENTS FOR TEST 006) C REAL MVTN01 C C *** SPECIFICATION STATEMENTS FOR TEST 007 *** C INTEGER NVTN11(4) C C *** SPECIFICATION STATEMENTS FOR TEST 008 *** C REAL NVTN22(2,2) C C *** SPECIFICATION STATEMENTS FOR TESTS 009 AND 010 *** C INTEGER NVTN33(3,3,3), AVTN15(5) C C *** SPECIFICATION STATEMENTS FOR TEST 011 *** C DIMENSION NVTN14(5) INTEGER NVTN14 C C *** SPECIFICATION STATEMENTS FOR TEST 012 *** C DIMENSION AVTN16(4) INTEGER AVTN16 C C *** SPECIFICATION STATEMENTS FOR TESTS 013 AND 014 *** C CHARACTER CVTN01*14, CATN12(4)*14 C C *** SPECIFICATION STATEMENTS FOR TEST 015 *** C DIMENSION CADN13(6) CHARACTER CADN13*14 C C *** SPECIFICATION STATEMENTS FOR TEST 016 *** C CHARACTER KVTN05 C C *** SPECIFICATION STATEMENTS FOR TEST 017 *** C (ALSO SEE THE IMPLICIT STATEMENT FOR TEST 017) C CHARACTER GVTN01*3 C C *** SPECIFICATION STATEMENTS FOR TEST 018 *** C (ALSO SEE THE IMPLICIT STATEMENT FOR TEST 018) C CHARACTER FVTN01*3 C C *** SPECIFICATION STATEMENTS FOR TEST 019 *** C INTEGER IFTN01 IFTN01(IDON01) = IDON01 + 1 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 301 - TEST 001 **** C C TEST 001 DEFINES AN INTEGER VARIABLE OVERRIDING THE IMPLICIT C COMPILER DEFAULT TYPE SPECIFYING REAL. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 AVTN01 = 100 IVCORR = 100 IVCOMP = AVTN01 40010 IF (IVCOMP - 100) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 301 - TEST 002 **** C C TEST 002 DEFINES A REAL VARIABLE OVERRIDING THE IMPLICIT C COMPILER DEFAULT TYPE SPECIFYING INTEGER. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVCOMP = 0.0 KVTN01 = 1.004 RVCORR = 1.004 RVCOMP = KVTN01 40020 IF (RVCOMP - 1.0035) 20020, 10020, 40021 40021 IF (RVCOMP - 1.0045) 10020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0031 CONTINUE C C **** FCVS PROGRAM 301 - TEST 003 **** C C TEST 003 DEFINES A SERIES OF INTEGER VARIABLES IN ONE TYPE- C STATEMENT. TWO VARIABLES CONFIRM THE IMPLICIT INTEGER TYPING. C THE OTHER VARIABLE OVERRIDES THE IMPLICIT TYPING. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 KVTN02 = 20 KVTN03 = 30 AVTN02 = 200 IVCORR = 20 IVCOMP = KVTN02 40030 IF (IVCOMP - 20) 20030, 40031, 20030 40031 IVCORR = 30 IVCOMP = KVTN03 40033 IF (IVCOMP - 30) 20030, 40034, 20030 40034 IVCORR = 200 IVCOMP = AVTN02 40035 IF (IVCOMP - 200) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 301 - TEST 004 **** C C TEST 004 DEFINES A SERIES OF REAL VARIABLES IN ONE TYPE- C STATEMENT. TWO VARIABLES CONFIRM THE IMPLICIT REAL TYPING. THE C THIRD VARIABLE OVERRIDES THE IMPLICIT TYPING. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE RVCOMP = 0.0 AVTN03 = 3.0 AVTN04 = 4. KVTN04 = .4 RVCORR = 3.0 RVCOMP = AVTN03 40040 IF (RVCOMP - 2.9995) 20040, 40042, 40041 40041 IF (RVCOMP - 3.0005) 40042, 40042, 20040 40042 RVCORR = 4. RVCOMP = AVTN04 40043 IF (RVCOMP - 3.9995) 20040, 40045, 40044 40044 IF (RVCOMP - 4.0005) 40045, 40045, 20040 40045 RVCORR = .4 RVCOMP = KVTN04 40046 IF (RVCOMP - .39995) 20040, 10040, 40047 40047 IF (RVCOMP - .40005) 10040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0051 CONTINUE C C **** FCVS PROGRAM 301 - TEST 005 **** C C TEST 005 DEFINES A LOGICAL VARIABLE. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE HVTN01 = .TRUE. IVCORR = 1 IVCOMP = 0 IF (HVTN01) IVCOMP = 1 40050 IF (IVCOMP - 1) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 301 - TEST 006 **** C C TEST 006 DEFINES A REAL VARIABLE WITH A TYPE-STATEMENT THAT C OVERRIDES THE IMPLICIT STATEMENT TYPING OF THE INTEGER LETTER 'M' C AS LOGICAL. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE RVCOMP = 0.0 MVTN01 = 12.345 RVCORR = 12.345 RVCOMP = MVTN01 40060 IF (RVCOMP - 12.340) 20060, 10060, 40061 40061 IF (RVCOMP - 12.350) 10060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0071 CONTINUE C C **** FCVS PROGRAM 301 - TEST 007 **** C C TEST 007 DEFINES A ONE DIMENSIONAL INTEGER ARRAY. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 NVTN11(3) = 3 IVCORR = 3 IVCOMP = NVTN11(3) 40070 IF (IVCOMP - 3) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 301 - TEST 008 **** C C TEST 008 DEFINES A TWO DIMENSIONAL REAL ARRAY THAT OVERRIDES C THE IMPLICIT TYPING OF INTEGER. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE RVCOMP = 0.0 NVTN22(1,2) = 2.12 RVCORR = 2.12 RVCOMP = NVTN22(1,2) 40080 IF (RVCOMP - 2.1195) 20080, 10080, 40081 40081 IF (RVCOMP - 2.1205) 10080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0091 CONTINUE C C **** FCVS PROGRAM 301 - TEST 009 **** C C TEST 009 DEFINES TWO INTEGER ARRAYS WITH ONE TYPE-STATEMENT. C ONE ARRAY IS THREE DIMENSIONAL WHILE THE OTHER ARRAY OVERRIDES C THE IMPLICIT TYPING OF REAL. ONLY THE THREE DIMENSIONAL ARRAY C IS CHECKED IN THIS TEST. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 NVTN33(1,2,3) = 123 IVCORR = 123 IVCOMP = NVTN33(1,2,3) 40090 IF (IVCOMP - 123) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 301 - TEST 010 **** C C TEST 010 CHECKS THE SECOND ARRAY DESCRIBED IN THE PREVIOUS C TEST. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 AVTN15(2) = 5 IVCORR = 5 IVCOMP = AVTN15(2) 40100 IF (IVCOMP - 5) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 301 - TEST 011 **** C C TEST 011 USES THE TYPE-STATEMENT TO EXPLICITLY TYPE AN ARRAY C THAT WAS DEFINED WITH A DIMENSION STATEMENT. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 0 NVTN14(5) = 5 IVCORR = 5 IVCOMP = NVTN14(5) 40110 IF (IVCOMP - 5) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 301 - TEST 012 **** C C TEST 012 USES THE TYPE-STATEMENT TO OVERRIDE THE TYPING OF C AN ARRAY THAT WAS DEFINED WITH A DIMENSION STATEMENT. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 0 AVTN16(3) = 163 IVCORR = 163 IVCOMP = AVTN16(3) 40120 IF (IVCOMP - 163) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 301 - TEST 013 **** C C TEST 013 USES ONE CHARACTER TYPE-STATEMENT TO SPECIFY BOTH A C VARIABLE AND AN ARRAY DECLARATOR. ONLY THE VARIABLE IS CHECKED C IN THIS TEST. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE CVTN01 = '12345678901234' CVCOMP = ' ' CVCORR = '12345678901234' CVCOMP = CVTN01 40130 IF (CVCOMP .EQ. '12345678901234') GO TO 10130 40131 GO TO 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0141 CONTINUE C C **** FCVS PROGRAM 301 - TEST 014 **** C C TEST 014 CHECKS THE ARRAY DECLARATOR FROM THE PREVIOUS TEST. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE CVCOMP = ' ' CATN12(2) = 'ABCDEFGHIJKLMN' CVCORR = 'ABCDEFGHIJKLMN' CVCOMP = CATN12(2) 40140 IF (CVCOMP .EQ. 'ABCDEFGHIJKLMN') GO TO 10140 40141 GO TO 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0151 CONTINUE C C **** FCVS PROGRAM 301 - TEST 015 **** C C TEST 015 USES THE CHARACTER TYPE-STATEMENT TO SPECIFY AN C ARRAY-NAME. THE ARRAY IS DECLARED IN A DIMENSION STATEMENT. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE CVCOMP = ' ' CADN13(3) = '12345678901234' CVCORR = '12345678901234' CVCOMP = CADN13(3) 40150 IF (CVCOMP .EQ. '12345678901234') GO TO 10150 40151 GO TO 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0161 CONTINUE C C **** FCVS PROGRAM 301 - TEST 016 **** C C TEST 016 USES THE CHARACTER TYPE-STATEMENT TO OVERRIDE THE C IMPLICIT (DEFAULT) TYPING OF INTEGER. C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE CVCOMP = ' ' KVTN05 = 'A' CVCORR = 'A' CVCOMP = KVTN05 40160 IF (CVCOMP .EQ. 'A') GO TO 10160 40161 GO TO 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0171 CONTINUE C C **** FCVS PROGRAM 301 - TEST 017 **** C C TEST 017 USES THE CHARACTER TYPE-STATEMENT TO OVERRIDE THE C IMPLICIT TYPING OF THE LETTER 'G' AS INTEGER. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE CVCOMP = ' ' GVTN01 = 'ABC' CVCORR = 'ABC' CVCOMP = GVTN01 40170 IF (CVCOMP .EQ. 'ABC') GO TO 10170 40171 GO TO 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0181 CONTINUE C C **** FCVS PROGRAM 301 - TEST 018 **** C C TEST 018 USES THE CHARAACTER TYPE-STATEMENT TO OVERRIDE THE C LENGTH OF A CHARACTER FIELD DEFINED BY AN IMPLICIT STATEMENT. C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE CVCOMP = ' ' FVTN01 = 'ABC' CVCORR = 'ABC' CVCOMP = FVTN01 40180 IF (CVCOMP .EQ. 'ABC') GO TO 10180 40181 GO TO 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0191 CONTINUE C C **** FCVS PROGRAM 301 - TEST 019 **** C C TEST 019 USES THE TYPE-STATEMENT TO SPECIFY AN INTEGER C STATEMENT FUNCTION. C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 0 IVON01 = 5 IVON02 = IFTN01(IVON01) IVCORR = 6 IVCOMP = IVON02 40190 IF (IVCOMP - 6) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM301) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM301) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM301 FM302.f 481036197 170 2 100666 24094 ` *HEADER,FORTR,FM302 *FILES1,FORTR,FM302 PROGRAM FM302 C C C THIS ROUTINE TESTS THE SUBSET LEVEL FEATURES OF THE COMMON C SPECIFICATION STATEMENT. INTEGER, REAL AND LOGICAL VARIABLES AND C ARRAYS ARE PASSED BACK-AND-FORTH BETWEEN THE MAIN PROGRAM,EXTERNAL C FUNCTIONS AND SUBROUTINES. BOTH NAMED AND UNNAMED (BLANK) COMMON C ARE TESTED. SPECIFIC TESTS ARE INCLUDED FOR RENAMING ENTITIES IN C COMMON BETWEEN PROGRAM UNITS, THE PASSING OF DATA THROUGH COMMON C BY EQUIVALENCE ASSOCIATION, AND THE SPECIFYING OF BLANK COMMON OF C DIFFERENT LENGTHS IN DIFFERENT PROGRAM UNITS. THE SUBSET LEVEL C FEATURES OF THE COMMON STATEMENT ARE ALSO TESTED IN FM022 THROUGH C FM025, FM050 AND FM056. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8.2, EQUIVALENCE STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 15.5, EXTERNAL FUNCTIONS C SECTION 15.6, SUBROUTINES C SECTION 15.9.4, COMMON BLOCKS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C C C *** SPECIFICATION STATEMENT FOR TEST 001 *** C COMMON IVCN01 C C *** SPECIFICATION STATEMENT FOR TEST 002 *** C COMMON //IVCN02,LVCN01 C C *** SPECIFICATION STATEMENT FOR TEST 003 *** C COMMON RVCN01//IVCN03 C C *** SPECIFICATION STATEMENT FOR TEST 004 *** C COMMON IVCN04, IVCN05, // IACN11(4) C C *** SPECIFICATION STATEMENT FOR TEST 005 *** C COMMON /BLK1/ IVCNA1 C C *** SPECIFICATION STATEMENT FOR TEST 006 *** C COMMON /BLK2/IVCNB1,RVCNB1, /BLK2/IVCNB2 C C *** SPECIFICATION STATEMENT FOR TEST 007 *** C DIMENSION RACN11(10) COMMON /BLK3/LVCNC1,IVCNC1/BLK4/RACN11,IACN21(2,3) C C *** SPECIFICATION STATEMENT FOR TEST 008 *** C COMMON /BLK5/IVCND1, IVCND2 C C *** SPECIFICATION STATEMENT FOR TEST 009 *** C COMMON IVCN06/BLK5/RVCND1,LVCND1//IVCN07,IVCN08/BLK6/RVCNE1 C C *** SPECIFICATION STATEMENT FOR TEST 010 *** C DIMENSION IACN1F(3) COMMON /BLK7/IVCNF1,IVCNF2,IVCNF3,IACN1F C C *** SPECIFICATION STATEMENT FOR TEST 011 *** C EQUIVALENCE (IVCEH1,IVCEH2) COMMON /BLK8/IVCEH1 C C *** SPECIFICATION STATEMENT FOR TEST 012 EQUIVALENCE (IVCE09,IVCE10) COMMON IVCE09 C C *** SPECIFICATION STATEMENT FOR TEST 013 C EQUIVALENCE (IVCEI1,IACE1I) DIMENSION IACE1I(3) COMMON /BLK9/IVCEI1 C C *** SPECIFICATION STATEMENT FOR TEST 014 *** C COMMON IVCN12 C C *** SPECIFICATION STATEMENT FOR TEST 015 *** C COMMON /BLK10/IVCNJ1 C C *** SPECIFICATION STATEMENT FOR TEST 016 *** C COMMON /BLKCHR/CVTN01,CVTN02,CATN11 CHARACTER CVTN01*2, CVTN02*3, CATN11(3)*5 INTEGER FF304 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C THE FOLLOWING ASSIGNMENT STATEMENTS INITIALIZE THE DATA C ENTITIES BEING PASSED THROUGH COMMON TO SUBROUTINE FS303. ONLY C ONE REFERENCE TO THIS SUBPROGRAM IS MADE FROM THIS PROGRAM. THE C CONTENTS OF THE DATA ENTITIES BEING RETURNED THROUGH COMMON ARE C THEN CHECKED IN THIS PROGRAM. C C IVCN01 = 3 IVCN02 = 2 LVCN01 = .FALSE. IVCNA1 = 25 IVCNB1 = 3 RVCNB1 = 4.0 IVCNB2 = 5 LVCNC1 = .TRUE. IVCNC1 = 13 RACN11(1) = 1. RACN11(10) = 10.0 IACN21(1,1) = 11 IACN21(2,3) = 23 IVCNF1 = 41 IVCNF3 = 43 IACN1F(1) = 141 IACN1F(2) = 142 IVCEH1 = 1 IVCEH2 = 5 CVTN01 = 'AB' CVTN02 = 'CDE' CATN11(1) = 'FGHIJ' CATN11(2) = 'KLMNO' CATN11(3) = 'PQRST' CALL FS303 C C THE FOLLOWING ASSIGNMENT STATEMENTS INITIALIZE THE DATA C ENTITIES BEING PASSED THROUGH COMMON TO EXTERNAL FUNCTION FF304. C ONLY ONE REFERENCE TO THIS SUBPROGRAM IS MADE FROM THIS PROGRAM. C THE CONTENTS OF THE DATA ENTITIES BEING RETURNED THROUGH COMMON C ARE THEN CHECKED IN THIS PROGRAM. C RVCN01 = 6.4 IVCN03 = 11 IVCN03 = IVCN03*2 IVCN04 = 16 IVCN05 = 16 IACN11(1) = 1 IACN11(2) = 2 IACN11(3) = 3 IACN11(4) = 4 IVCND1 = +33 IVCND2 = 10 IVCN06 = 6 IVCN07 = 7 IVCN08 = 8 RVCND1 = 1.3 LVCND1 = .FALSE. RVCNE1 = +3.5 IVCE09 = 9 IVCE10 = 10 IVCEI1 = 5 IACE1I(1) = 10 IACE1I(2) = 15 IACE1I(3) = 20 IVCNJ1 = 1 IVON99 = FF304 ( ) C C TESTS 001 THROUGH 009 ARE DESIGNED TO TEST VARIOUS C SYNTACTICAL CONSTRUCTS OF THE COMMON STATEMENT USING NAMED AND C UNNAMED (BLANK) COMMON IN THE MAIN PROGRAM, A SUBROUTINE AND AN C EXTERNAL FUNCTION. DATA ENTITIES CONSIST OF INTEGER, REAL AND C LOGICAL VARIABLES AND INTEGER AND REAL ARRAYS. C C **** FCVS PROGRAM 302 - TEST 001 **** C C TESTS 001 AND 002 TEST THE USE OF UNNAMED COMMON IN A MAIN C PROGRAM AND A SUBROUTINE. C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 IVCOMP = IVCN01 IVCORR = 4 40010 IF (IVCOMP - 4) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 302 - TEST 002 **** C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 1 IF (IVCN02 .EQ. 7) IVCOMP = IVCOMP * 2 IF (LVCN01) IVCOMP = IVCOMP * 3 IVCORR = 6 C 6 = 2 * 3 40020 IF (IVCOMP - 6) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 302 - TEST 003 **** C C TESTS 003 AND 004 TEST THE USE OF UNNAMED COMMON IN A MAIN C PROGRAM AND AN EXTERNAL FUNCTION. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 1 IF (RVCN01 .GE. 4.1995 .AND. RVCN01 .LE. 4.2005) IVCOMP=IVCOMP*2 IF (IVCN03 .EQ. 23) IVCOMP = IVCOMP * 3 IVCORR = 6 C 6 = 2 * 3 40030 IF (IVCOMP - 6) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 302 - TEST 004 **** C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 1 IF (IVCN04 .EQ. 8) IVCOMP = IVCOMP * 2 IF (IVCN05 .EQ. 16) IVCOMP = IVCOMP * 3 IF (IACN11(1) .EQ. 5) IVCOMP = IVCOMP * 5 IF (IACN11(2) .EQ. 5) IVCOMP = IVCOMP * 7 IF (IACN11(3) .EQ. 5) IVCOMP = IVCOMP * 11 IF (IACN11(4) .EQ. 5) IVCOMP = IVCOMP * 13 IVCORR = 30030 C 30030 = 2 * 3 * 5 * 7 * 11 * 13 40040 IF (IVCOMP - 30030) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 302 - TEST 005 **** C C TESTS 005 THROUGH 007 TEST THE USE OF NAMED COMMON BLOCKS C IN A MAIN PROGRAM AND A SUBROUTINE. C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 0 IVCOMP = IVCNA1 IVCORR = 5 40050 IF (IVCOMP - 5) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 302 - TEST 006 **** C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 IF (IVCNB1 .EQ. 8) IVCOMP = IVCOMP * 2 IF (RVCNB1 .GE. 3.4995 .AND. RVCNB1 .LE. 3.5005) IVCOMP=IVCOMP*3 IF (IVCNB2 .EQ. 5) IVCOMP = IVCOMP * 5 IVCORR = 30 C 30 = 2 * 3 * 5 40060 IF (IVCOMP - 30) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 302 - TEST 007 **** C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 1 IF (.NOT. LVCNC1) IVCOMP = IVCOMP * 2 IF (IVCNC1 .EQ. 12) IVCOMP = IVCOMP * 3 IF (RACN11(1).GE.110.95 .AND. RACN11(1).LE.111.05) IVCOMP=IVCOMP*5 IF (RACN11(10).GE.109.95.AND.RACN11(10).LE.110.05)IVCOMP=IVCOMP*7 IF (IACN21(1,1) .EQ. 12) IVCOMP = IVCOMP * 11 IF (IACN21 (2,3) .EQ. 24) IVCOMP = IVCOMP * 13 IVCORR = 30030 C 30030 = 2* 3 * 5 * 7 * 11 * 13 40070 IF (IVCOMP - 30030) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 302 - TEST 008 **** C C TESTS 008 AND 009 TEST THE USE OF NAMED COMMON BLOCKS IN A C MAIN PROGRAM AND AN EXTERNAL FUNCTION. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 1 IF (IVCND1 .EQ. 34) IVCOMP = IVCOMP * 2 IF (IVCND2 .EQ. 11) IVCOMP = IVCOMP * 3 IVCORR = 6 C 6 = 2 * 3 40080 IF (IVCOMP - 6) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 302 - TEST 009 **** C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 1 IF (IVCN06 .EQ. 7) IVCOMP = IVCOMP * 2 IF (RVCND1 .GE. 4.4995 .AND. RVCND1 .LE. 4.5005) IVCOMP = IVCOMP*3 IF (LVCND1) IVCOMP = IVCOMP * 5 IF (IVCN07 .EQ. -7) IVCOMP = IVCOMP * 7 IF (IVCN08 .EQ. -3) IVCOMP = IVCOMP * 11 IF (RVCNE1.GE.-6.7005.AND.RVCNE1.LE.-6.6995) IVCOMP=IVCOMP*13 IVCORR = 30030 C 30030 = 2 * 3 * 5 * 7 * 11 * 13 40090 IF (IVCOMP - 30030) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 302 - TEST 010 **** C C TEST 010 IS DESIGNED TO TEST THE ABILITY TO RENAME ENTITIES C IN NAMED COMMON BETWEEN A MAIN PROGRAM AND A SUBROUTINE. C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 1 IF (IVCNF1 .EQ. 42) IVCOMP = IVCOMP * 2 IF (IVCNF2 .EQ. 43) IVCOMP = IVCOMP * 3 IF (IVCNF3 .EQ. 44) IVCOMP = IVCOMP * 5 IF (IACN1F(1) .EQ. 142) IVCOMP = IVCOMP * 7 IF (IACN1F(2) .EQ. 143) IVCOMP = IVCOMP * 11 IF (IACN1F(3) .EQ. 144) IVCOMP = IVCOMP * 13 IVCORR = 30030 C 30030 = 2 * 3 * 5 * 7 * 11 * 13 40100 IF (IVCOMP - 30030) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 302 - TEST 011 **** C C TEST 011 IS DESIGNED TO TEST THE STORAGE OF A VARIABLE IN C NAMED COMMON BY EQUIVALENCE ASSOCIATION. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 0 IVCOMP = IVCEH2 IVCORR = 6 40110 IF (IVCOMP - 6) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 302 - TEST 012 **** C C TEST 012 IS DESIGNED TO TEST THE STORAGE OF A VARIABLE IN C UNNAMED COMMON BY EQUIVALENCE ASSOCIATION. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 1 IF (IVCE09 .EQ. 100) IVCOMP = IVCOMP * 2 IF (IVCE10 .EQ. 100) IVCOMP = IVCOMP * 3 IVCORR = 6 C 6 = 2 * 3 40120 IF (IVCOMP - 6) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 302 - TEST 013 **** C C TEST 013 IS DESIGNED TO TEST THE EXTENSION OF NAMED COMMON C BLOCK STORAGE BY EQUIVALENCE ASSOCIATION OF A VARIABLE AND AN C ARRAY. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 1 IF (IVCEI1 .EQ. 11) IVCOMP = IVCOMP * 2 IF (IACE1I(1) .EQ. 11) IVCOMP = IVCOMP * 3 IF (IACE1I(2) .EQ. 16) IVCOMP = IVCOMP * 5 IF (IACE1I(3) .EQ. 21) IVCOMP = IVCOMP * 7 IVCORR = 210 C 210 = 2 * 3 * 5 * 7 40130 IF (IVCOMP - 210) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 302 - TEST 014 **** C C TEST 014 IS DESIGNED TO TEST THE ABILITY OF PASSING DATA C THROUGH UNNAMED COMMON FROM EXTERNAL FUNCTIONS WHICH HAVE MORE C ENTITIES IN UNNAMED COMMON THAN THE MAIN PROGRAM. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IVCOMP = IVCN12 IVCORR = 11 40140 IF (IVCOMP - 11) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 302 - TEST 015 **** C C TEST 015 IS DESIGNED TO TEST THE ABILITY OF PASSING DATA C THROUGH NAMED COMMON BETWEEN EXTERNAL FUNCTIONS WHERE THE NAMED C COMMON BLOCK IS NOT SPECIFIED IN THE MAIN PROGRAM. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 0 IVCOMP = IVCNJ1 IVCORR = 5 40150 IF (IVCOMP - 5) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 302 - TEST 016 **** C C TEST 016 IS DESIGNED TO TEST THE PASSING OF CHARACTER DATA C IN NAMED COMMON BETWEEN THE MAIN PROGRAM AND A SUBROUTINE. C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 1 IF (CVTN01 .EQ. 'YZ') IVCOMP = IVCOMP * 2 IF (CVTN02 .EQ. 'UVW') IVCOMP = IVCOMP * 3 IF (CATN11(1) .EQ. 'VWXYZ') IVCOMP = IVCOMP * 5 IF (CATN11(2) .EQ. 'KLMNO') IVCOMP = IVCOMP * 7 IF (CATN11(3) .EQ. 'ABCDE') IVCOMP = IVCOMP * 11 IVCORR = 2310 C 2310 = 2 * 3 * 5 * 7 * 11 40160 IF (IVCOMP - 2310) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM302) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM302) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *HEADER,FORTR,FM302,SUBRTN,FM303 SUBROUTINE FS303 C C FS303 IS A SUBROUTINE WHICH IS CALLED ONCE FROM PROGRAM FM302. C IT IS USED TO MODIFY VARIABLES AND ARRAY PASSED THROUGH NAMED AND C UNNAMED COMMON FROM FM302. AFTER THE DATA ENTITIES ARE MODIFIED C CONTROL IS RETURNED TO FM302 WHERE EACH ENTITY IS TESTED. C IMPLICIT LOGICAL (L) DIMENSION RACN11(10) COMMON IVCN01 COMMON //IVCN02, LVCN01 COMMON RVCN01//IVCN03 COMMON IVCN04,IVCN05, //IACN11(4) COMMON /BLK1/IVCNA1 COMMON /BLK2/IVCNB1,RVCNB1,/BLK2/IVCNB2 COMMON /BLK3/LVCNC1,IVCNC1/BLK4/RACN11,IACN21(2,3) COMMON /BLK7/IACN1G(5),IVCNG1 COMMON /BLK8/IVCNH1 COMMON /BLKCHR/CVTN01,CVTN02,CATN11 CHARACTER CVTN01*2, CVTN02*3, CATN11(3)*5 C TEST 001 IVCN01 = IVCN01 + 1 C TEST 002 IVCN02 = IVCN02 + 5 LVCN01 = .NOT. LVCN01 C TEST 005 IVCNA1 = IVCNA1 / 5 C TEST 006 IVCNB1 = IVCNB1 + IVCNB2 RVCNB1 = 3.5 C TEST 007 LVCNC1 = .FALSE. IVCNC1 = IVCNC1 - 1 RACN11(1) = 111. RACN11(10) = 110. IACN21(1,1) = IACN21(1,1) + 1 IACN21(2,3) = IACN21(2,3) + 1 C TEST 010 IACN1G(1) = IACN1G(1) + 1 IACN1G(2) = 43 IACN1G(3) = IACN1G(3) + 1 IACN1G(4) = IACN1G(4) + 1 IACN1G(5) = IACN1G(5) + 1 IVCNG1 = 144 C TEST 011 IVCNH1 = IVCNH1 + 1 C TEST 017 CVTN01 = 'YZ' CVTN02 = 'UVW' CATN11(1) = 'VWXYZ' CATN11(3) = 'ABCDE' RETURN END *HEADER,FORTR,FM302,SUBRTN,FM304 INTEGER FUNCTION FF304 () C C FF304 IS AN EXTERNAL FUNCTION WHICH IS REFERENCED ONCE FROM C PROGRAM FM302. IT IS USED TO MODIFY VARIABLES AND ARRAYS PASSED C THROUGH NAMED AND UNNAMED COMMON FROM FM302. AFTER THE DATA C ENTITIES ARE MODIFIED CONTROL IS RETURNED TO FM302 WHERE EACH C ENTITY IS TESTED. A FUNCTION VALUE OF 999 IS RETURNED BUT IT IS C NOT SIGNIFICANT NOR IS IT TESTED BY FM302. C IMPLICIT LOGICAL (L) DIMENSION IACN11(4) COMMON IVCN01 COMMON IVCN02, LVCN01 COMMON RVCN01, IVCN03 COMMON IVCN04,IVCN05,IACN11 COMMON /BLK5/IVCND1,IVCND2 COMMON IVCN06 COMMON /BLK5/RVCND1,LVCND1 COMMON IVCN07, IVCN08 COMMON /BLK6/RVCNE1 COMMON IVCN10 COMMON /BLK9/IVCNI1, IVCNI2, IVCNI3 COMMON IVCN12, IVCN13 COMMON /BLK10/IVCNJ1 COMMON /BLK11/IVCNK1 INTEGER FF305 C TEST 003 RVCN01 = 4.2 IVCN03 = IVCN03 + 1 C TEST 004 IVCN04 = 32 IVCN04 = IVCN04 / 4 IVCN05 = IVCN05 IACN11(1) = IACN11(1) + 4 IACN11(2) = IACN11(2) + 3 IACN11(3) = IACN11(3) + 2 IACN11(4) = IACN11(4) + 1 C TEST 008 IVCND1 = IVCND1 + 1 IVCND2 = IVCND2 + 1 C TEST 009 IVCN06 = IVCN06 + 1 RVCND1 = 4.5 LVCND1 = .TRUE. IVCN07 = -IVCN07 IVCN08 = -3 RVCNE1 = -6.7 C TEST 012 IVCN10 = IVCN10 * IVCN10 C TEST 013 IVCNI1 = IVCNI1 + 1 IVCNI2 = IVCNI2 + 1 IVCNI3 = IVCNI3 + 1 C TEST 014 IVCN13 = 5 C TEST 015 IVCNK1 = 3 C C FOR TESTS 014 AND 015 EXTERNAL FUNCTION FF305 IS REFERENCED C IVON99 = FF305 () C TEST 014 IVCN12 = IVCN13 C TEST 015 IVCNJ1 = IVCNK1 FF304 = 999 RETURN END *HEADER,FORTR,FM302,SUBRTN,FM305 INTEGER FUNCTION FF305 () C C FF305 IS AN EXTERNAL FUNCTION WHICH IS USED IN TEST 014 AND C 015 OF PROGRAM FM302. THIS SUBPROGRAM IS REFERENCED FROM EXTERNAL C FUNCTION FF304. C COMMON IACN11(15) COMMON IVCN12, IVCN13, IVCN14 COMMON /BLK10/IVCNJ1, /BLK11/IVCNK1 C TEST 014 IVCN14 = 11 IVCN13 = IVCN14 C TEST 015 IVCNK1 = 5 FF305 = 999 RETURN END *END-OF,FM302 FM306.f 481036203 170 2 100666 14152 ` *HEADER,FORTR,FM306 *FILES1,FORTR,FM306,X PROGRAM FM306 C C C THIS ROUTINE TESTS THE USE OF THE SUBSET LEVEL FEATURES OF C THE IMPLICIT SPECIFICATION STATEMENT. THE DEFAULT IMPLIED INTEGER C AND REAL TYPING IS EITHER CONFIRMED OR OVERRIDDEN TO SPECIFY C INTEGER, REAL AND LOGICAL TYPING. ALL 26 ALPHABETIC LETTERS ARE C USED TO INDICATE THE IMPLICIT TYPING. VARIABLE AND ARRAY C ENTITIES ARE USED TO TEST THE ACTUAL TYPING. THE SUBSET LEVEL C FEATURES OF THE IMPLICIT STATEMENT ARE ALSO TESTED IN ROUTINES C FM201 AND FM251. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS. C SECTION 8.5, IMPLICIT STATEMENT C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C IMPLICIT INTEGER (A) IMPLICIT LOGICAL (B) IMPLICIT INTEGER (D,E,F) IMPLICIT REAL (G-H) IMPLICIT INTEGER (I) IMPLICIT REAL (J) IMPLICIT INTEGER (K,O-Q) IMPLICIT REAL (M), REAL (N) IMPLICIT REAL (R) IMPLICIT REAL (S), INTEGER (T-V) IMPLICIT INTEGER (W), REAL (X), LOGICAL (Y), INTEGER (Z) DIMENSION AAIN11(5) DIMENSION HAIN11(5) 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 306 - TEST 001 **** C C TEST 001 IS DESIGNED TO CONFIRM IMPLICIT INTEGER TYPING. C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE RVCOMP = 10.0 IVIN01 = 4 RVCOMP = IVIN01 / 5 RVCORR = 0.0 40010 IF (RVCOMP) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0021 CONTINUE C C **** FCVS PROGRAM 306 - TEST 002 **** C C TEST 002 IS DESIGNED TO CONFIRM IMPLICIT REAL TYPING. C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVCOMP = 10.0 RVIN01 = 4 RVCOMP = RVIN01/5 RVCORR = .8 40020 IF (RVCOMP - .79995) 20020, 10020, 40021 40021 IF (RVCOMP - .80005) 10020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0031 CONTINUE C C **** FCVS PROGRAM 306 - TEST 003 **** C C TEST 003 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF C INTEGER WITH IMPLICIT TYPING OF REAL. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE RVCOMP = 10.0 JVIN01 = 4 RVCOMP = JVIN01/5 RVCORR = .8 40030 IF (RVCOMP - .79995) 20030, 10030, 40031 40031 IF (RVCOMP - .80005) 10030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0041 CONTINUE C C **** FCVS PROGRAM 306 - TEST 004 **** C C TEST 004 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF C INTEGER WITH IMPLICIT TYPING OF LOGICAL. C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE LVIN01 = .TRUE. IVCORR = 1 IVCOMP = 0 IF (LVIN01) IVCOMP = 1 40040 IF (IVCOMP - 1) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 306 - TEST 005 **** C C TEST 005 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF C REAL WITH IMPLICIT TYPING OF INTEGER. C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE RVCOMP = 10.0 AAIN11(2) = 4 RVCOMP = AAIN11(2)/5 RVCORR = 0.0 40050 IF (RVCOMP) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0061 CONTINUE C C **** FCVS PROGRAM 306 - TEST 006 **** C C TEST 006 IS DESIGNED TO OVERRIDE IMPLICIT DEFAULT TYPING OF REAL C WITH IMPLICIT TYPING OF LOGICAL. C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE BVIN01 = .TRUE. IVCORR = 1 IVCOMP = 0 IF (BVIN01) IVCOMP = 1 40060 IF (IVCOMP - 1) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C TESTS 007 THROUGH 012 ARE DESIGNED TO TEST VARIOUS SYNTACTICAL C CONSTRUCTS OF THE IMPLICIT STATEMENT. C C C **** FCVS PROGRAM 306 - TEST 007 **** C C TEST 007 TESTS THE SPECIFYING OF MORE THAN ONE ALPHABETIC C CHARACTER IN AN IMPLICIT STATEMENT. C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE DVIN01 = 4 EVIN01 = 4 FVIN01 = 4 RVCMP1 = DVIN01/5 RVCMP2 = EVIN01/5 RVCMP3 = FVIN01/5 IVCOMP = 1 IF (RVCMP1 .EQ. 0.0) IVCOMP = IVCOMP * 2 IF (RVCMP2 .EQ. 0.0) IVCOMP = IVCOMP * 3 IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 5 IVCORR = 30 C 30 = 2 * 3 * 5 40070 IF (IVCOMP - 30) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 306 - TEST 008 **** C C TEST 008 TESTS THE SPECIFYING A RANGE OF SINGLE LETTERS IN C ALPHABETIC ORDER IN AN IMPLICIT STATEMENT. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE GVIN01 = 4 HAIN11(4) = 4 RVCMP1 = GVIN01/5 RVCMP2 = HAIN11(4)/5 IVCOMP = 1 IF (RVCMP1 .GE. .79995 .AND. RVCMP1 .LE. .80005) IVCOMP=IVCOMP*2 IF (RVCMP2 .GE. .79995 .AND. RVCMP2 .LE. .80005) IVCOMP=IVCOMP*3 IVCORR = 6 C 6 = 2 * 3 40080 IF (IVCOMP - 6) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 306 - TEST 009 **** C C TEST 009 TESTS THE SPECIFYING A SINGLE LETTER AND A RANGE OF C SINGLE LETTERS IN ALPHABETIC ORDER IN AN IMPLICIT STATEMENT. C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE KVIN01 = 4 OVIN01 = 4 PVIN01 = 4 QVIN01 = 4 RVCMP1 = KVIN01/5 RVCMP2 = OVIN01/5 RVCMP3 = PVIN01/5 RVCMP4 = QVIN01/5 IVCOMP = 1 IF (RVCMP1 .EQ. 0.0) IVCOMP = IVCOMP * 2 IF (RVCMP2 .EQ. 0.0) IVCOMP = IVCOMP * 3 IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 5 IF (RVCMP4 .EQ. 0.0) IVCOMP = IVCOMP * 7 IVCORR = 210 C 210 = 2 * 3 * 5 * 7 40090 IF (IVCOMP - 210) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 306 - TEST 010 **** C C TEST 010 TESTS THE SPECIFYING OF MORE THAN ONE TYPING IN ONE C IMPLICIT STATEMENT. C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE SVIN01 = 4 TVIN01 = 4 UVIN01 = 4 VVIN01 = 4 RVCMP1 = SVIN01/5 RVCMP2 = TVIN01/5 RVCMP3 = UVIN01/5 RVCMP4 = VVIN01/5 IVCOMP = 1 IF (RVCMP1 .GE. .79995 .AND. RVCMP1 .LE. .80005) IVCOMP=IVCOMP*2 IF (RVCMP2 .EQ. 0.0) IVCOMP = IVCOMP * 3 IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 5 IF (RVCMP4 .EQ. 0.0) IVCOMP = IVCOMP * 7 IVCORR = 210 C 210 = 2 * 3 * 5 * 7 IF (IVCOMP - 210) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 306 - TEST 011 **** C C TEST 011 TESTS THE SPECIFYING OF INTEGER, REAL, AND LOGICAL C TYPING IN ONE IMPLICIT STATEMENT. IN THIS TEST INTEGER TYPING C IS REPEATED A SECOND TIME. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE WVIN01 = 4 XVIN01 = 4 YVIN01 = .TRUE. ZVIN01 = 4 RVCMP1 = WVIN01/5 RVCMP2 = XVIN01/5 LVCOMP = YVIN01 RVCMP3 = ZVIN01/5 IVCOMP = 1 IF (RVCMP1 .EQ. 0.0) IVCOMP = IVCOMP * 2 IF (RVCMP2 .GE. .79995 .AND. RVCMP2 .LE. .80005) IVCOMP=IVCOMP*3 IF (LVCOMP) IVCOMP = IVCOMP * 5 IF (RVCMP3 .EQ. 0.0) IVCOMP = IVCOMP * 7 IVCORR = 210 C 210 = 2 * 3 * 5 * 7 40110 IF (IVCOMP - 210) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 306 - TEST 012 **** C C TEST 012 TESTS THE SPECIFYING OF REAL TYPING TWICE IN ONE C IMPLICIT STATEMENT. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE MVIN01 = 4 NVIN01 = 4 RVCMP1 = MVIN01/5 RVCMP2 = NVIN01/5 IVCOMP = 1 IF (RVCMP1 .GE. .79995 .AND. RVCMP1 .LE. .80005) IVCOMP=IVCOMP*2 IF (RVCMP2 .GE. .79995 .AND. RVCMP2 .LE. .80005) IVCOMP=IVCOMP*3 IVCORR = 6 C 6 = 2 * 3 IF (IVCOMP - 6) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM306) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM306) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM306 FM307.f 481036209 170 2 100666 25921 ` *HEADER,FORTR,FM307 *FILES1,FORTR,FM307,X PROGRAM FM307 C C C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION C TYPE IS REAL AND THE ARGUMENTS ARE EITHER INTEGER OR REAL. THE C FUNCTION NINT IS AN EXCEPTION AND HAS AN INTEGER FUNCTION TYPE. C THE REAL OR INTEGER ARGUMENTS CONSIST OF POSITIVE, NEGATIVE AND C UNSIGNED CONSTANTS, VARIABLES AND ARRAY ELEMENT VALUES. EACH C INTRINSIC FUNCTION IS TESTED WITH THREE OR FOUR DIFFERENT C COMBINATIONS OF ACTUAL ARGUMENTS DESIGNED TO TEST NOT ONLY THE C VARIOUS COMBINATIONS OF DATA USAGES BUT ALSO TO TEST THE RANGE OF C ARGUMENT AND FUNCTION VALUES, WHERE THAT IS APPROPRIATE. THE C INTRINSIC FUNCTIONS TESTED IN THIS ROUTINE INCLUDE. C C SPECIFIC TYPE OF C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION C ------------------ ------ -------- -------- C CONVERSION TO REAL REAL INTEGER REAL C NEAREST WHOLE NUMBER ANINT REAL REAL C NEAREST INTEGER NINT REAL INTEGER C TANGENT TAN REAL REAL C ARCSINE ASIN REAL REAL C ARCCOSINE ACOS REAL REAL C HYPERBOLIC SINE SINH REAL REAL C HYPERBOLIC COSINE COSH REAL REAL C C SUBSET LEVEL ROUTINES FM097 THROUGH FM099 AND FM308 ALSO C TEST THE USE OF INTEGER AND REAL INTRINSIC FUNCTIONS. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 15.3, INTRINSIC FUNCTIONS C SECTION 15.9.2, ACTUAL ARGUMENTS C SECTION 15.9.3, ASSOCIATION OF DUMMY AND ACTUAL ARGUMENTS C TABLE 5, INTRINSIC FUNCTIONS (INCLUDING NOTES) C SECTION 15.10.1, RESTRICTION ON RANGE OF ARGUMENTS AND RESULTS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION IAON11(4) DIMENSION RAON11(4) DATA PI/3.141592654/ 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 001 THROUGH TEST 004 CONTAIN INTRINSIC FUNCTION TESTS FOR C TYPE CONVERSION TO REAL (REAL) WHERE THE FUNCTION IS REAL AND THE C ARGUMENT IS INTEGER. C C C **** FCVS PROGRAM 307 - TEST 001 **** C C CONSTANT ARGUMENT C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE RVCOMP = 10.0 RVCOMP = REAL (6) RVCORR = 6.0 40010 IF (RVCOMP - 5.9995) 20010,10010,40011 40011 IF (RVCOMP - 6.0005) 10010,10010,20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0021 CONTINUE C C **** FCVS PROGRAM 307 - TEST 002 **** C C VARIABLE ARGUMENT C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVCOMP = 10.0 IVON01 = 6 RVCOMP = REAL (IVON01) RVCORR = 6.0 40020 IF (RVCOMP - 5.9995) 20020,10020,40021 40021 IF (RVCOMP - 6.0005) 10020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0031 CONTINUE C C **** FCVS PROGRAM 307 - TEST 003 **** C C ARRAY ELEMENT NAME ARGUMENT C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE RVCOMP = 10.0 IAON11(3) = 6 RVCOMP = REAL (IAON11(3)) RVCORR = 6.0 40030 IF (RVCOMP - 5.9995) 20030, 10030, 40031 40031 IF (RVCOMP - 6.0005) 10030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0041 CONTINUE C C **** FCVS PROGRAM 307 - TEST 004 **** C C EXPRESSION AS ARGUMENT C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE RVCOMP = 10.0 IVON01 = 6 RVCOMP = REAL (IVON01 - 6) RVCORR = 0.0 40040 IF(RVCOMP + .00005) 20040, 10040, 40041 40041 IF(RVCOMP - .00005) 10040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0051 CONTINUE C C TEST 005 THROUGH TEST 008 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE NEAREST WHOLE NUMBER (ANINT) WHERE THE FUNCTION AND C ARGUMENT TYPES ARE BOTH REAL. C C C **** FCVS PROGRAM 307 - TEST 005 **** C C CONSTANT ARGUMENT C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE RVCOMP = 10.0 RVCOMP = ANINT (3.4994) RVCORR = 3.0 40050 IF (RVCOMP - 2.9995) 20050, 10050, 40051 40051 IF (RVCOMP - 3.0005) 10050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0061 CONTINUE C C **** FCVS PROGRAM 307 - TEST 006 **** C C VARIABLE ARGUMENT C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE RVCOMP = 10.0 RVON01 = -3.4994 RVCOMP = ANINT (RVON01) RVCORR = -3.0 40060 IF (RVCOMP + 3.0005) 20060, 10060, 40061 40061 IF (RVCOMP + 2.9995) 10060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0071 CONTINUE C C **** FCVS PROGRAM 307 - TEST 007 **** C C ARRAY ELEMENT NAME ARGUMENT C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE RVCOMP = 10.0 RAON11(3) = 3.0000 RVCOMP = ANINT (RAON11(3)) RVCORR = 3.0 40070 IF (RVCOMP - 2.9995) 20070, 10070, 40071 40071 IF (RVCOMP - 3.0005) 10070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0081 CONTINUE C C **** FCVS PROGRAM 307 - TEST 008 **** C C ZERO ARGUMENT C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE RVCOMP = 10.0 RVCOMP = ANINT (0.0) RVCORR = 0.0 40080 IF (RVCOMP) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0091 CONTINUE C C TEST 009 THROUGH TEST 012 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE NEAREST INTEGER (NINT) WHERE THE ARGUMENT IS REAL C AND THE FUNCTION TYPE IS INTEGER. C C C **** FCVS PROGRAM 307 - TEST 009 **** C C CONSTANT ARGUMENT C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 10 IVCOMP = NINT (3.4994) IVCORR = 3 40090 IF (IVCOMP - 3) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 307 - TEST 010 **** C C VARIABLE ARGUMENT C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 10 RVON01 = -3.4994 IVCOMP = NINT (RVON01) IVCORR = -3 40100 IF (IVCOMP +3) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 307 - TEST 011 **** C C ARRAY ELEMENT NAME ARGUMENT C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 10 RAON11(1) = 3.0000 IVCOMP = NINT (RAON11(1)) IVCORR = 3 40110 IF (IVCOMP -3) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 307 - TEST 012 **** C C ZERO ARGUMENT C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 10 IVCOMP = NINT (0.0) IVCORR = 0 40120 IF (IVCOMP) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C TEST 013 THROUGH TEST 017 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE TRIGONOMETRIC TANGENT (TAN) WHERE THE FUNCTION AND C ARGUMENT TYPES ARE BOTH REAL. ALL ARGUMENTS ARE GIVEN IN RADIANS C WHERE ONE RADIAN EQUALS 57.296 DEGREES. C C C **** FCVS PROGRAM 307 - TEST 013 **** C C FIND THE TANGENT OF 0 DEGREES (0.0 RADIANS) C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVCOMP = 10.0 RVCOMP = TAN (0.0) RVCORR = 0.0 40130 IF (RVCOMP) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C C **** FCVS PROGRAM 307 - TEST 014 **** C C FIND THE TANGENT OF 135 DEGREES (2.3562 RADIANS) C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE RVCOMP = 10.0 RVON01 = 3 * PI / 4 RVCOMP = TAN (RVON01) RVCORR = -1.0 40140 IF (RVCOMP + 1.0005) 20140, 10140, 40141 40141 IF (RVCOMP + .9995) 10140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0151 CONTINUE C C **** FCVS PROGRAM 307 - TEST 015 **** C C FIND THE TANGENT OF 540 DEGREES (9.4248 RADIANS) C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE RVCOMP = 10.0 RAON11(2) = 3 * PI RVCOMP = TAN (RAON11(2)) RVCORR = 0.0 40150 IF (RVCOMP + .00005) 20150, 10150, 40151 40151 IF (RVCOMP - .00005) 10150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0161 CONTINUE C C **** FCVS PROGRAM 307 - TEST 016 **** C C FIND THE TANGENT OF 30 DEGREES (.52360 RADIANS) C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE RVCOMP = 10.0 RVON01 = PI/6 RVCOMP = TAN (RVON01) RVCORR = .57735 40160 IF (RVCOMP - .57730) 20160, 10160, 40161 40161 IF (RVCOMP - .57740) 10160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0171 CONTINUE C C **** FCVS PROGRAM 307 - TEST 017 **** C C FIND THE TANGENT OF 30 DEGREES BY DIVIDING THE SINE OF 30 DEGREES C BY THE COSINE OF 30 DEGREES. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE RVCOMP = 10.0 RVON01 = PI/6 RVCOMP = SIN(RVON01)/COS(RVON01) RVCORR = .57735 40170 IF (RVCOMP - .57730) 20170, 10170, 40171 40171 IF (RVCOMP - .57740) 10170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0181 CONTINUE C C TEST 018 THROUGH TEST 021 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE TRIGONOMETRIC ARCSINE (ASIN) WHERE THE FUNCTION AND C ARGUMENT TYPES ARE BOTH REAL. THE ABSOLUTE VALUES OF ALL C ARGUMENTS ARE LESS THAN OR EQUAL TO ONE. THE FUNCTION VALUES C ARE EXPRESSED IN RADIANS WHERE ONE RADIAN EQUALS 57.296 DEGREES. C C C **** FCVS PROGRAM 307 - TEST 018 **** C C THE ARCSINE OF +1. IS 90 DEGREES (1.5708 RADIANS) C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE RVCOMP = 10.0 RVCOMP = ASIN (+1.0) RVCORR = 1.5708 40180 IF (RVCOMP - 1.5703) 20180, 10180, 40181 40181 IF (RVCOMP - 1.5713) 10180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0191 CONTINUE C C **** FCVS PROGRAM 307 - TEST 019 **** C C THE ARCSINE OF -1. IS -90 DEGREES (-1.5708 RADIANS) C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE RVCOMP = 10.0 RVON01 = -1.0 RVCOMP = ASIN(RVON01) RVCORR = -1.5708 40190 IF (RVCOMP + 1.5713) 20190, 10190, 40191 40191 IF (RVCOMP + 1.5703) 10190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0201 CONTINUE C C **** FCVS PROGRAM 307 - TEST 020 **** C C THE ARCSINE OF -.5 TS -30 DEGREES (-.52360 RADIANS) C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE RVCOMP = 10.0 RAON11(1) = -.5 RVCOMP = ASIN (RAON11(1)) RVCORR = -.52360 40200 IF (RVCOMP + .52365) 20200, 10200, 40201 40201 IF (RVCOMP + .52355) 10200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0211 CONTINUE C C **** FCVS PROGRAM 307 - TEST 021 **** C C THE ARCSINE OF 0.0 IS 0 DEGREES (0.0 RADIANS) C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE RVCOMP = 10.0 RVON01 = 0.0 RVCOMP = ASIN (RVON01) RVCORR = 0.0 40210 IF (RVCOMP) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0221 CONTINUE C C TEST 022 THROUGH TEST 025 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE TRIGONOMETRIC ARCCOSINE (ACOS) WHERE THE FUNCTION C AND ARGUMENT TYPES ARE BOTH REAL. THE ABSOLUTE VALUES ALL C ARGUMENTS ARE LESS THAN OR EQUAL TO ONE. THE FUNCTION VALUES C ARE EXPRESSED IN RADIANS WHERE ONE RADIAN EQUALS 57.296 DEGREES. C C C **** FCVS PROGRAM 307 - TEST 022 **** C C THE ARCCOSINE OF +1. IS 0 DEGREES ( 0.0 RADIANS) C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE RVCOMP = 10.0 RVCOMP = ACOS(+1.) RVCORR = 0.0 40220 IF (RVCOMP + .00005) 20220, 10220, 40221 40221 IF (RVCOMP - .00005) 10220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0231 CONTINUE C C **** FCVS PROGRAM 307 - TEST 023 **** C C THE ARCCOSINE OF -1. IS 180 DEGREES (3.1416 RADIANS) C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE RVCOMP = 10.0 RVON01 = -1.0 RVCOMP = ACOS (RVON01) RVCORR = 3.1416 40230 IF (RVCOMP - 3.1411) 20230, 10230, 40231 40231 IF (RVCOMP - 3.1421) 10230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0241 CONTINUE C C **** FCVS PROGRAM 307 - TEST 024 **** C C THE ARCCOSINE OF -.5 IS 120 DEGREES (2.0944 RADIANS) C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE RVCOMP = 10.0 RAON11(1) = -.5 RVCOMP = ACOS (RAON11(1)) RVCORR = 2.0944 40240 IF (RVCOMP - 2.0939) 20240, 10240, 40241 40241 IF (RVCOMP - 2.0949) 10240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0251 CONTINUE C C **** FCVS PROGRAM 307 - TEST 025 **** C C THE ARCCOSINE OF 0.0 IS 90 DEGREES (1.5708 RADIANS) C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE RVCOMP = 10.0 RVCOMP = ACOS (0.) RVCORR = 1.5708 40250 IF (RVCOMP - 1.5703) 20250, 10250, 40251 40251 IF (RVCOMP - 1.5713) 10250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0261 CONTINUE C C TEST 026 THROUGH TEST 028 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE HYPERBOLIC SINE (SINH) WHERE THE FUNCTION AND C ARGUMENT TYPES ARE BOTH REAL. ONLY POSITIVE ARGUMENTS ARE C TESTED. C C C **** FCVS PROGRAM 307 - TEST 026 **** C C CONSTANT ARGUMENT C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE RVCOMP = 10.0 RVCOMP = SINH (0.0) RVCORR = 0.0 40260 IF (RVCOMP + .00005) 20260, 10260, 40261 40261 IF (RVCOMP - .00005) 10260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0271 CONTINUE C C **** FCVS PROGRAM 307 - TEST 027 **** C C VARIABLE ARGUMENT C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE RVCOMP =10.0 RVON01 = 2.0 RVCOMP = SINH (RVON01) RVCORR = 3.6269 40270 IF (RVCOMP - 3.6264) 20270, 10270, 40271 40271 IF (RVCOMP - 3.6274) 10270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0281 CONTINUE C C **** FCVS PROGRAM 307 - TEST 028 **** C C ARRAY ELEMENT NAME ARGUMENT C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE RVCOMP = 10.0 RAON11(1) = 6.0 RVCOMP = SINH (RAON11(1)) RVCORR = 201.71 40280 IF (RVCOMP - 201.66) 20280, 10280, 40281 40281 IF (RVCOMP - 201.76) 10280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0291 CONTINUE C C TEST 029 THROUGH TEST 031 CONTAIN INTRINSIC FUNCTION TESTS FOR C FINDING THE HYPERBOLIC COSINE (COSH) WHERE THE FUNCTION AND C ARGUMENT TYPES ARE BOTH REAL. ONLY POSITIVE ARGUMENTS ARE TESTED. C C C **** FCVS PROGRAM 307 - TEST 029 **** C C CONSTANT ARGUMENT C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE RVCOMP = 10.0 RVCOMP = COSH (0.0) RVCORR = 1.0 40290 IF (RVCOMP - .9995) 20290, 10290, 40291 40291 IF (RVCOMP - 1.0005) 10290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0301 CONTINUE C C **** FCVS PROGRAM 307 - TEST 030 **** C C VARIABLE ARGUMENT C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE RVCOMP = 10.0 RVON01 = 2.0 RVCOMP = COSH (RVON01) RVCORR = 3.7622 40300 IF (RVCOMP - 3.7617) 20300, 10300, 40301 40301 IF (RVCOMP - 3.7627) 10300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0311 CONTINUE C C **** FCVS PROGRAM 307 - TEST 031 **** C C ARRAY ELEMENT NAME ARGUMENT C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE RVCOMP = 10.0 RAON11(2) = 6.0 RVCOMP = COSH (RAON11(2)) RVCORR = 201.72 40310 IF (RVCOMP - 201.67) 20310, 10310, 40311 40311 IF (RVCOMP - 201.77) 10310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0321 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM307) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM307) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM307 FM308.f 481036215 170 2 100666 28454 ` *HEADER,FORTR,FM308 *FILES1,FORTR,FM308 PROGRAM FM308 C C C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE ACTUAL C ARGUMENTS CONSIST OF INTRINSIC FUNCTION REFERENCES, EXTERNAL C FUNCTION REFERENCES, STATEMENT FUNCTION REFERENCES, AND C EXPRESSIONS INVOLVING OPERATORS. THE ARGUMENT AND FUNCTION C TYPES OF ALL INTRINSIC FUNCTIONS TESTED ARE EITHER INTEGER OR C REAL. THE INTRINSIC AND EXTERNAL SPECIFICATION STATEMENTS ARE C SPECIFIED IN ORDER TO ALLOW INTRINSIC AND EXTERNAL FUNCTIONS TO C BE USED AS ACTUAL ARGUMENTS. THE IMPLICIT STATEMENT AND THE C TYPE-STATEMENT ARE TESTED TO ENSURE THAT THEY DO NOT CHANGE THE C TYPE OF AN INTRINSIC FUNCTION. THE COMMON STATEMENT IS USED TO C PASS DATA ENTITIES TO AN EXTERNAL FUNCTION. THE DATA STATEMENT C IS USED TO ENSURE THAT INITIALLY DEFINED ENTITIES CAN BE USED AS C ACTUAL ARGUMENTS. THE EQUIVALENCE STATEMENT IS USED TO EQUATE A C VARIABLE USED AS AN ACTUAL ARGUMENT. THE INTRINSIC FUNCTIONS C TESTED IN THIS ROUTINE INCLUDE. C C SPECIFIC TYPE OF C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION C ------------------ -------- -------- -------- C TYPE CONVERSION INT REAL INTEGER C TYPE CONVERSION IFIX REAL INTEGER C TYPE CONVERSION FLOAT INTEGER REAL C TYPE CONVERSION REAL INTEGER REAL C TRUNCATION AINT REAL REAL C NEAREST WHOLE NUMBER ANINT REAL REAL C NEAREST INTEGER NINT REAL INTEGER C ABSOLUTE VALUE IABS INTEGER INTEGER C ABSOLUTE VALUE ABS REAL REAL C REMAINDERING MOD INTEGER INTEGER C REMAINDERING AMOD REAL REAL C TRANSFER OF SIGN ISIGN INTEGER INTEGER C TRANSFER OF SIGN SIGN REAL REAL C POSITIVE DIFFERENCE IDIM INTEGER INTEGER C POSITIVE DIFFERENCE DIM REAL REAL C CHOOSING LARGEST VALUE MAX0 INTEGER INTEGER C CHOOSING LARGEST VALUE AMAX0 INTEGER REAL C CHOOSING LARGEST VALUE MAX1 REAL INTEGER C CHOOSING SMALLEST VALUE AMIN1 REAL REAL C CHOOSING SMALLEST VALUE MIN1 REAL INTEGER C SQUARE ROOT SQRT REAL REAL C EXPONENTIAL EXP REAL REAL C NATURAL LOGARITHM ALOG REAL REAL C SINE SIN REAL REAL C COSINE COS REAL REAL C TANGENT TAN REAL REAL C ARCSINE ASIN REAL REAL C ARCCOSINE ACOS REAL REAL C ARCTANGENT ATAN REAL REAL C HYPERBOLIC SINE SINH REAL REAL C HYPERBOLIC COSINE COSH REAL REAL C HYPERBOLIC TANGENT TANH REAL REAL C C SUBSET LEVEL ROUTINES FM097, FM098, FM099 AND FM307 TEST THE C USE OF INTEGER AND REAL INTRINSIC FUNCTIONS USING INTEGER AND REAL C CONSTANTS, VARIABLES AND ARRAY ELEMENT ENTITIES AS ACTUAL C ARGUMENTS. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8.2, EQUIVALENCE STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENTS C SECTION 8.5, IMPLICIT STATEMENT C SECTION 8.7, EXTERNAL STATEMENT C SECTION 8.8, INTRINSIC STATEMENT C SECTION 9, DATA STATEMENT C SECTION 15.3, INTRINSIC FUNCTION C SECTION 15.4, STATEMENT FUNCTION C SECTION 15.5, EXTERNAL FUNCTION C SECTION 15.5.2, .REFERENCING AN EXTERNAL FUNCTION C SECTION 15.9.2, ACTUAL ARGUMENTS C SECTION 15.9.3, ASSOCIATION OF DUMMY AND ACTUAL ARGUMENTS C TABLE 5, INTRINSIC FUNCTIONS (INCLUDING NOTES) C SECTION 15.10.1, RESTRICTIONS ON RANGE OF ARGUMENTS AND RESULTS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C IMPLICIT INTEGER (E) IMPLICIT REAL (N) INTEGER MAX1 REAL SINH DIMENSION RADN11(5) DIMENSION IADN11(5) COMMON RVCN01 EQUIVALENCE (IVOE01,IVOE02) EXTERNAL FF309,FF310 INTRINSIC ABS, AINT, IABS, ISIGN, SQRT DATA RVON04/2.23/ RFOS01(RDON01) = RDON01 + 1.0 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 032 THROUGH TEST 040 TEST INTRINSIC FUNCTIONS USING C INTRINSIC FUNCTION REFERENCES AS ACTUAL ARGUMENTS. C C C **** FCVS PROGRAM 308 - TEST 032 **** C C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE RVCOMP = 10.0 RVCOMP = ANINT (ABS (-2.78) ) RVCORR = 3.0 40320 IF (RVCOMP - 2.9995) 20320, 10320, 40321 40321 IF (RVCOMP - 3.0005) 10320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0331 CONTINUE C C **** FCVS PROGRAM 308 - TEST 033 **** C C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE RVCOMP = 10.0 RVCOMP = ATAN (AINT (1.2) ) RVCORR = .78540 40330 IF (RVCOMP - .78535) 20330, 10330, 40331 40331 IF (RVCOMP - .78545) 10330, 10330, 20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0341 CONTINUE C C **** FCVS PROGRAM 308 - TEST 034 **** C C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE RVCOMP = 10.0 RVCOMP = COS (ABS (-.78540) ) RVCORR = .70711 40340 IF (RVCOMP - .70706) 20340, 10340, 40341 40341 IF (RVCOMP - .70716) 10340, 10340, 20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0351 CONTINUE C C **** FCVS PROGRAM 308 - TEST 035 **** C C IVTNUM = 35 IF (ICZERO) 30350, 0350, 30350 0350 CONTINUE RVCOMP = 10.0 IVON01 = 6 RVCOMP = AMAX0 (1, IVON01, IABS(-7) ) RVCORR = 7.0 40350 IF (RVCOMP - 6.9995) 20350, 10350, 40351 40351 IF (RVCOMP - 7.0005) 10350, 10350, 20350 30350 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10350, 0361, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0361 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0361 CONTINUE C C **** FCVS PROGRAM 308 - TEST 036 **** C C IVTNUM = 36 IF (ICZERO) 30360, 0360, 30360 0360 CONTINUE IVCOMP = 10 IVCOMP = IABS (ISIGN (7, -2)) IVCORR = 7 40360 IF (IVCOMP - 7) 20360, 10360, 20360 30360 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10360, 0371, 20360 10360 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0371 20360 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0371 CONTINUE C C **** FCVS PROGRAM 308 - TEST 037 **** C C IVTNUM = 37 IF (ICZERO) 30370, 0370, 30370 0370 CONTINUE IVCOMP = 10 IVCOMP = MOD (5, IABS (-3) ) IVCORR = 2 40370 IF (IVCOMP - 2) 20370, 10370, 20370 30370 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10370, 0381, 20370 10370 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0381 20370 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0381 CONTINUE C C **** FCVS PROGRAM 308 - TEST 038 **** C C IVTNUM = 38 IF (ICZERO) 30380, 0380, 30380 0380 CONTINUE IVCOMP = 10 IVCOMP = ISIGN (-3, IABS (-5) ) IVCORR = 3 40380 IF (IVCOMP - 3) 20380, 10380, 20380 30380 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10380, 0391, 20380 10380 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0391 20380 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0391 CONTINUE C C **** FCVS PROGRAM 308 - TEST 039 **** C C REPEAT FUNCTION REFERENCE TWICE IN ONE INTRINSIC FUNCTION C REFERENCE. C IVTNUM = 39 IF (ICZERO) 30390, 0390, 30390 0390 CONTINUE IVCOMP = 10 IVCOMP = MAX0 (IABS (-5), IABS (-6) ) IVCORR = 6 40390 IF (IVCOMP -6) 20390, 10390, 20390 30390 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10390, 0401, 20390 10390 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0401 20390 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0401 CONTINUE C C **** FCVS PROGRAM 308 - TEST 040 **** C C USE INTRINSIC FUNCTION REFERENCE AS ACTUAL ARGUMENT TO ITSELF. C IVTNUM = 40 IF (ICZERO) 30400, 0400, 30400 0400 CONTINUE RVCOMP = 10.0 RVCOMP = SQRT (SQRT (25.) ) RVCORR = 2.2361 40400 IF (RVCOMP - 2.2356) 20400, 10400, 40401 40401 IF (RVCOMP - 2.2366) 10400, 10400, 20400 30400 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10400, 0411, 20400 10400 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0411 20400 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0411 CONTINUE C C TEST 041 THROUGH TEST 045 TEST INTRINSIC FUNCTIONS USING EXTERNAL C FUNCTION REFERENCES AS ACTUAL ARGUMENTS. C C C **** FCVS PROGRAM 308 - TEST 041 **** C C IVTNUM = 41 IF (ICZERO) 30410, 0410, 30410 0410 CONTINUE RVCOMP = 10.0 RVCOMP = ALOG (FF309 (29.0) ) RVCORR = 3.4012 40410 IF (RVCOMP - 3.4007) 20410, 10410, 40411 40411 IF (RVCOMP - 3.4017) 10410, 10410, 20410 30410 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10410, 0421, 20410 10410 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0421 20410 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0421 CONTINUE C C **** FCVS PROGRAM 308 - TEST 042 **** C C IVTNUM = 42 IF (ICZERO) 30420, 0420, 30420 0420 CONTINUE RVCOMP = 10.0 RVCOMP = ASIN (FF309 (0.) ) RVCORR = 1.5708 40420 IF (RVCOMP - 1.5703) 20420, 10420, 40421 40421 IF (RVCOMP - 1.5713) 10420, 10420, 20420 30420 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10420, 0431, 20420 10420 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0431 20420 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0431 CONTINUE C C **** FCVS PROGRAM 308 - TEST 043 **** C C IVTNUM = 43 IF (ICZERO) 30430, 0430, 30430 0430 CONTINUE RVCOMP = 10.0 RVON01 = 1.5 RVCOMP = COSH (FF309 (RVON01) ) RVCORR = 6.1323 40430 IF (RVCOMP - 6.1318) 20430, 10430, 40431 40431 IF (RVCOMP - 6.1328) 10430, 10430, 20430 30430 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10430, 0441, 20430 10430 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0441 20430 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0441 CONTINUE C C **** FCVS PROGRAM 308 - TEST 044 **** C C IVTNUM = 44 IF (ICZERO) 30440, 0440, 30440 0440 CONTINUE IVCOMP = 10 IVCOMP = IFIX (FF309 (33.3) ) IVCORR = 34 40440 IF (IVCOMP - 34) 20440, 10440, 20440 30440 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10440, 0451, 20440 10440 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0451 20440 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0451 CONTINUE C C **** FCVS PROGRAM 308 - TEST 045 **** C C IVTNUM = 45 IF (ICZERO) 30450, 0450, 30450 0450 CONTINUE RVCOMP = 10.0 RADN11(2) = 2.1416 RVCOMP = TAN (FF309 (RADN11(2))) RVCORR = 0.0 40450 IF (RVCOMP + .00005) 20450, 10450, 40451 40451 IF (RVCOMP - .00005) 10450, 10450, 20450 30450 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10450, 0461, 20450 10450 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0461 20450 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0461 CONTINUE C C TEST 046 THROUGH TEST 052 TEST INTRINSIC FUNCTIONS USING C EXPRESSIONS INVOLVING OPERATORS AS ACTUAL ARGUMENTS. C C C **** FCVS PROGRAM 308 - TEST 046 **** C C IVTNUM = 46 IF (ICZERO) 30460, 0460, 30460 0460 CONTINUE RVCOMP = 10.0 RVCOMP = ABS (3.4 - 8.2) RVCORR = 4.8 40460 IF (RVCOMP - 4.7995) 20460, 10460, 40461 40461 IF (RVCOMP - 4.8005) 10460, 10460, 20460 30460 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10460, 0471, 20460 10460 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0471 20460 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0471 CONTINUE C C **** FCVS PROGRAM 308 - TEST 047 **** C C IVTNUM = 47 IF (ICZERO) 30470, 0470, 30470 0470 CONTINUE RVCOMP = 10.0 IVON01 = 2 RVON01 = 3.0 RVCOMP = ACOS (IVON01 - RVON01 * .5) RVCORR = 1.0472 40470 IF (RVCOMP - 1.0467) 20470, 10470, 40471 40471 IF (RVCOMP - 1.0477) 10470, 10470, 20470 30470 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10470, 0481, 20470 10470 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0481 20470 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0481 CONTINUE C C **** FCVS PROGRAM 308 - TEST 048 **** C C IVTNUM = 48 IF (ICZERO) 30480, 0480, 30480 0480 CONTINUE RVCOMP = 10.0 IVON01 = 2 RVON01 = -4.8 RVON02 = 4.5 RVCOMP = AMIN1 (RVON01, (IVON01 - 3.2) * RVON02) RVCORR = -5.4 40480 IF (RVCOMP + 5.4005 ) 20480, 10480, 40481 40481 IF (RVCOMP + 5.3995 ) 10480, 10480, 20480 30480 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10480, 0491, 20480 10480 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0491 20480 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0491 CONTINUE C C **** FCVS PROGRAM 308 - TEST 049 **** C C IVTNUM = 49 IF (ICZERO) 30490, 0490, 30490 0490 CONTINUE RVCOMP = 10.0 RVON01 = 12.0 IADN11(1) = 3 RADN11(2) = 2.5 RVCOMP = AMOD (RVON01 / IADN11(1), 12 / RADN11(2)) RVCORR = 4.0 40490 IF (RVCOMP - 3.9995) 20490, 10490, 40491 40491 IF (RVCOMP - 4.0005) 10490, 10490, 20490 30490 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10490, 0501, 20490 10490 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0501 20490 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0501 CONTINUE C C **** FCVS PROGRAM 308 - TEST 050 **** C C IVTNUM = 50 IF (ICZERO) 30500, 0500, 30500 0500 CONTINUE IVCOMP = 10 IVON01 = 2 IVON02 = 9 IVCOMP = IDIM (IVON01 ** 3, IVON02) IVCORR = 0 40500 IF (IVCOMP) 20500, 10500, 20500 30500 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10500, 0511, 20500 10500 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0511 20500 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0511 CONTINUE C C **** FCVS PROGRAM 308 - TEST 051 **** C C IVTNUM = 51 IF (ICZERO) 30510, 0510, 30510 0510 CONTINUE RVCOMP = 10.0 IVON01 = 6 RVCOMP = REAL (IABS (-3) + IVON01) RVCORR = 9.0 40510 IF (RVCOMP - 8.9995) 20510, 10510, 40511 40511 IF (RVCOMP - 9.0005) 10510, 10510, 20510 30510 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10510, 0521, 20510 10510 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0521 20510 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0521 CONTINUE C C **** FCVS PROGRAM 308 - TEST 052 **** C C IVTNUM = 52 IF (ICZERO) 30520, 0520, 30520 0520 CONTINUE RVCOMP = 10.0 RVON01 = 2.3 IVON01 = 150 IADN11(1) = 3 RVCOMP = SIGN(13+RVON01*IABS(-4)-IVON01/FF309(1.)**IADN11(1),-1.) RVCORR = -3.45 40520 IF (RVCOMP + 3.4505) 20520, 10520, 40521 40521 IF (RVCOMP + 3.4495) 10520, 10520, 20520 30520 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10520, 0531, 20520 10520 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0531 20520 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0531 CONTINUE C C TEST 053 THROUGH TEST 056 TEST INTRINSIC FUNCTIONS USING C STATEMENT FUNCTION REFERENCES AS ACTUAL ARGUMENTS. C C C **** FCVS PROGRAM 308 - TEST 053 **** C C IVTNUM = 53 IF (ICZERO) 30530, 0530, 30530 0530 CONTINUE RVCOMP = 10.0 RVCOMP = DIM (RFOS01(5.4), 6.0) RVCORR = .4 40530 IF (RVCOMP - .39995) 20530, 10530, 40531 40531 IF (RVCOMP - .40005) 10530, 10530, 20530 30530 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10530, 0541, 20530 10530 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0541 20530 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0541 CONTINUE C C **** FCVS PROGRAM 308 - TEST 054 **** C C IVTNUM = 54 IF (ICZERO) 30540, 0540, 30540 0540 CONTINUE IVCOMP = 10 IVCOMP = INT(RFOS01(2.01)) IVCORR = 3 40540 IF (IVCOMP - 3) 20540, 10540, 20540 30540 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10540, 0551, 20540 10540 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0551 20540 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0551 CONTINUE C C **** FCVS PROGRAM 308 - TEST 055 **** C C IVTNUM = 55 IF (ICZERO) 30550, 0550, 30550 0550 CONTINUE RVCOMP = 10.0 RVON01 = 0.5708 RVCOMP = SIN (RFOS01 (RVON01) / 2) RVCORR = .70711 40550 IF (RVCOMP - .70706) 20550, 10550, 40551 40551 IF (RVCOMP - .70716) 10550, 10550, 20550 30550 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10550, 0561, 20550 10550 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0561 20550 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0561 CONTINUE C C **** FCVS PROGRAM 308 - TEST 056 **** C C IVTNUM = 56 IF (ICZERO) 30560, 0560, 30560 0560 CONTINUE RVCOMP = 10.0 RADN11(2) = 1.5 RVCOMP = TANH(RFOS01(RADN11(2))) RVCORR = .98661 40560 IF (RVCOMP - .98656) 20560, 10560, 40561 40561 IF (RVCOMP - .98666) 10560, 10560, 20560 30560 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10560, 0571, 20560 10560 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0571 20560 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0571 CONTINUE C C **** FCVS PROGRAM 308 - TEST 057 **** C C TEST 057 TESTS THE INTRINSIC FUNCTION AINT USING AN EXTERNAL C FUNCTION REFERENCE AS AN ACTUAL ARGUMENT AND THE COMMON C STATEMENT AS A MEANS OF PASSING DATA TO THE EXTERNAL FUNCTION. C IVTNUM = 57 IF (ICZERO) 30570, 0570, 30570 0570 CONTINUE RVCOMP = 10.0 RVCN01 = 25.3 RVCOMP = AINT(FF310( )) RVCORR = 26.0 40570 IF (RVCOMP - 25.995) 20570, 10570, 40571 40571 IF (RVCOMP - 26.005) 10570, 10570, 20570 30570 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10570, 0581, 20570 10570 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0581 20570 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0581 CONTINUE C C **** FCVS PROGRAM 308 - TEST 058 **** C C TEST 058 TESTS THE INTRINSIC FUNCTION FLOAT BY USING A VARIABLE C EQUATED BY EQUIVALENCE ASSOCIATION AS AN ACTUAL ARGUMENT. C IVTNUM = 58 IF (ICZERO) 30580, 0580, 30580 0580 CONTINUE RVCOMP = 10.0 IVOE01 = 5 RVCOMP = FLOAT(IVOE01) RVCORR = 5.0 40580 IF (RVCOMP - 4.9995) 20580, 10580, 40581 40581 IF (RVCOMP - 5.0005) 10580, 10580, 20580 30580 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10580, 0591, 20580 10580 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0591 20580 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0591 CONTINUE C C **** FCVS PROGRAM 308 - TEST 059 **** C C TEST 059 TESTS THE INTRINSIC FUNCTION MIN1 BY USING A VARIABLE C INITIALIZED BY THE DATA STATEMENT AS AN ACTUAL ARGUMENT. C IVTNUM = 59 IF (ICZERO) 30590, 0590, 30590 0590 CONTINUE IVCOMP = 10 IVCOMP = MIN1(6., RVON04, 7.3) IVCORR = 2 40590 IF (IVCOMP - 2) 20590, 10590, 20590 30590 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10590, 0601, 20590 10590 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0601 20590 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0601 CONTINUE C C **** FCVS PROGRAM 308 - TEST 060 **** C C TEST 060 ATTEMPTS TO OVERRIDE THE TYPING OF REAL FOR THE C INTRINSIC FUNCTION EXP WITH IMPLICIT INTEGER TYPING. C IVTNUM = 60 IF (ICZERO) 30600, 0600, 30600 0600 CONTINUE RVCOMP = 10.0 RVON01 = 2.05 RVCOMP = EXP(RVON01) RVCORR = 7.7679 40600 IF (RVCOMP - 7.7674) 20600, 10600, 40601 40601 IF (RVCOMP - 7.7684) 10600, 10600, 20600 30600 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10600, 0611, 20600 10600 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0611 20600 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0611 CONTINUE C C **** FCVS PROGRAM 308 - TEST 061 **** C C TEST 061 ATTEMPTS TO OVERRIDE THE TYPING OF INTEGER FOR THE C INTRINSIC FUNCTION NINT WITH IMPLICIT REAL TYPING. C IVTNUM = 61 IF (ICZERO) 30610, 0610, 30610 0610 CONTINUE RVCOMP = 10.0 RVON01 = 3.78 RVCOMP = NINT(RVON01) / 5 RVCORR = 0.0 40610 IF (RVCOMP + .00005) 20610, 10610, 40611 40611 IF (RVCOMP - .00005) 10610, 10610, 20610 30610 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10610, 0621, 20610 10610 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0621 20610 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0621 CONTINUE C C **** FCVS PROGRAM 308 - TEST 062 **** C C TEST 062 ATTEMPTS TO OVERRIDE THE TYPING OF REAL FOR THE C INTRINSIC FUNCTION SINH WITH TYPE-STATEMENT TYPING OF INTEGER. C IVTNUM = 62 IF (ICZERO) 30620, 0620, 30620 0620 CONTINUE RVCOMP = 10.0 RVCOMP = SINH(2.0) RVCORR = 3.6269 40620 IF (RVCOMP - 3.6264) 20620, 10620, 40621 40621 IF (RVCOMP - 3.6274) 10620, 10620, 20620 30620 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10620, 0631, 20620 10620 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0631 20620 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0631 CONTINUE C C **** FCVS PROGRAM 308 - TEST 063 **** C C TEST 063 ATTEMPTS TO OVERRIDE THE TYPING OF INTEGER FOR THE C INTRINSIC FUNCTION MAX1 WITH TYPE-STATEMENT TYPING OF REAL. C IVTNUM = 63 IF (ICZERO) 30630, 0630, 30630 0630 CONTINUE RVCOMP = 10.0 RVCOMP = MAX1(2.3, 3.1, 4.4) / 5 RVCORR = 0.0 40630 IF (RVCOMP + .00005) 20630, 10630, 40631 40631 IF (RVCOMP - .00005) 10630, 10630, 20630 30630 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10630, 0641, 20630 10630 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0641 20630 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0641 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM308) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM308) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *HEADER,FORTR,FM308,SUBRTN,FM309 REAL FUNCTION FF309(RDON01) C THIS FUNCTION IS USED TO INCREMENT THE ARGUMENT VALUE BY C ONE AND RETURN THE RESULT AS THE FUNCTION VALUE. FF309 = RDON01 + 1.0 RETURN END *HEADER,FORTR,FM308,SUBRTN,FM310 REAL FUNCTION FF310 ( ) C THIS FUNCTION IS USED TO INCREMENT BY ONE A VALUE PASSED C TO THE FUNCTION THROUGH COMMON. COMMON RVCN01 FF310 = RVCN01 + 1.0 RETURN END *END-OF,FM308 FM311.f 481036220 170 2 100666 33476 ` *HEADER,FORTR,FM311 *FILES1,FORTR,FM311 PROGRAM FM311 C C C THIS ROUTINE TESTS THE USE OF THE FORTRAN IN-LINE STATEMENT C FUNCTION OF TYPES INTEGER, REAL AND LOGICAL. SPECIFIC FEATURES C TESTED INCLUDE, C C A) REAL STATEMENT FUNCTIONS USING REAL CONSTANTS AND VARIABLES C IN THE EXPRESSION AND AS ACTUAL ARGUMENTS. C C B) STATEMENT FUNCTIONS WHICH REQUIRE CONVERSION OF THE C EXPRESSION TO REAL AND INTEGER TYPING. C C C) THE USE OF VARIABLES, ARRAY ELEMENTS, EXTERNAL REFERENCES, C AND INITIALLY DEFINED ENITIIES IN THE EXPRESSION. C C D) VARIOUS DEFINITIONS AND USES OF DUMMY ARGUMENTS. C C E) ACTUAL ARGUMENTS CONSISTING OF EXPRESSIONS, INTRINSIC C FUNCTION REFERENCES, AND EXTERNAL FUNCTION REFERENCES. C C F) CONFIRMING AND OVERRIDING THE TYPING OF STATEMENT FUNCTIONS C AND DUMMY ARGUMENTS. C C G) USE OF STATEMENT FUNCTIONS AND DUMMY ARGUMENTS IN THE MAIN C PROGRAM AND IN EXTERNAL FUNCTION AND SUBROUTINE SUBPROGRAMS. C C THE SUBSET LEVEL FEATURES OF STATEMENT FUNCTIONS ARE ALSO TESTED C IN ROUTINE FM020. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENT C SECTION 8.5, IMPLICIT STATEMENT C SECTION 8.7, EXTERNAL STATEMENT C SECTION 8.8, INTRINSIC STATEMENT C SECTION 9, DATA STATEMENT C SECTION 15.3, INTRINSIC FUNCTIONS C SECTION 15.4, STATEMENT FUNCTION C SECTION 15.5, EXTERNAL FUNCTIONS C SECTION 15.6, SUBROUTINES C SECTION 15.9.1, DUMMY ARGUMENTS C SECTION 15.9.2, ACTUAL ARGUMENTS C SECTION 15.9.3, ASSOCIATION OF DUMMY AND ACTUAL ARGUMENTS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C IMPLICIT INTEGER (A) IMPLICIT INTEGER (B) IMPLICIT REAL (K) IMPLICIT REAL (M) REAL NDON01 INTEGER EDON01 INTEGER FF312, FF314 EXTERNAL FF312 INTRINSIC NINT DIMENSION RADN11(4), RADN12(4), RADN13(4) DIMENSION IADN11(4), IADN12(4) DIMENSION LADN11(4) COMMON /IFOS19/IVCN01 DATA IVOND1/6/ C TEST 001 RFOS01(RDON01) = 3.5 C TEST 002 RFOS02(RDON02) = RDON02 C TEST 003 RFOS03(RDON03) = RDON03 + 1.0 C TEST 004 IFOS01(RDON04) = RDON04 + 1.0 C TEST 005 RFOS04(IDON01) = IDON01 + 1 C TEST 006 IFOS02(IDON02) = IDON02 + 1.95 C TEST 007 IFOS03(IDON03) = IDON03 + IVON01 C TEST 008 RFOS05(RDON05) = RDON05 + RVON02 C TEST 009 LFOS01(LDON01) = LDON01 .OR. LVON01 C TEST 010 IFOS04(IDON04) = IDON04 + IADN11(1) C TEST 011 RFOS06(RDON06) = RDON06 + RADN12(3) C TEST 012 LFOS02(LDON02) = .NOT. LDON02 .AND. LADN11(2) C TEST 013 RFOS07(IDON05) = RADN13(IDON05) C TEST 014 IFOS05(IDON06) = IDON06 + FF312(4) C TEST 015 IFOS06(IDON07) = (IDON07 + 1) C TEST 016 IFOS07(IDON08) = IDON08 + IVOND1 C TEST 017 IFOS08(IDON09) = IDON09 + 1 IFOS09(IDON10) = IFOS08(IDON10) + 1 C TEST 018 IFOS10() = IVON02 C TEST 019 IFOS11(IDON11,IDON12,IDON13) = IDON11 + IDON12 + IDON13 C TEST 020 IFOS12(IDON14) = IDON14 + 1 IFOS13(IDON14) = IDON14 + 2 C TEST 021,022,023 IFOS14(IDON15) = IDON15 + 1 C TEST 024 KFOS01(IDON16) = IDON16 + 1.0 C TEST 025 AFOS01(RDON07) = RDON07 + 1.0 C TEST 026 RFOS08(MDON01) = MDON01 / 5 C TEST 027 RFOS09(BDON01) = BDON01 / 5 C TEST 028 RFOS10(NDON01) = NDON01 / 5 C TEST 029 RFOS11(EDON01) = EDON01 / 5 C TEST 030 IFOS15(IVON04) = IVON04 + 1 C TEST 031 IFOS16(IDON17) = IDON17 + 1 C TEST 032 IFOS17(IDON18) = IDON18 + 1 C TEST 037 IFOS19(IDON21) = IDON21 + 1 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 001 THROUGH TEST 003 TEST REAL STATEMENT FUNCTIONS WHERE THE C EXPRESSION CONSISTS OF REAL CONSTANTS AND VARIABLES AND THE ACTUAL C ARGUMENTS ARE EITHER REAL CONSTANTS OR VARIABLES. C C C **** FCVS PROGRAM 311 - TEST 001 **** C C EXPRESSION CONSISTS OF REAL CONSTANT (NO DUMMY ARGUMENT). C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE RVCOMP = 0.0 RVCOMP = RFOS01(1.0) RVCORR = 3.5 40010 IF (RVCOMP - 3.4995) 20010, 10010, 40011 40011 IF (RVCOMP - 3.5005) 10010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0021 CONTINUE C C **** FCVS PROGRAM 311 - TEST 002 **** C C DUMMY ARGUMENT USED IN EXPRESSION AND ACTUAL ARGUMENT IS REAL C CONSTANT. C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVCOMP = 0.0 RVCOMP = RFOS02(1.3333) RVCORR = 1.3333 40020 IF (RVCOMP - 1.3328) 20020, 10020, 40021 40021 IF (RVCOMP - 1.3338) 10020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0031 CONTINUE C C **** FCVS PROGRAM 311 - TEST 003 **** C C DUMMY ARGUMENT USED IN EXPRESSION AND ACTUAL ARGUMENT IS REAL C VARIABLE. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE RVCOMP = 0.0 RVON01 = 4.5 RVCOMP = RFOS03(RVON01) RVCORR = 5.5 40030 IF (RVCOMP - 5.4995) 20030, 10030, 40031 40031 IF (RVCOMP - 5.5005) 10030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0041 CONTINUE C C TEST 004 THROUGH TEST 006 TEST STATEMENT FUNCTIONS WHICH REQUIRE C TYPE CONVERSION OF THE EXPRESSION. C C C **** FCVS PROGRAM 311 - TEST 004 **** C C INTEGER STATEMENT FUNCTION WITH REAL EXPRESSION. C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 IVCOMP = IFOS01(2.3) IVCORR = 3 40040 IF (IVCOMP - 3) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 311 - TEST 005 **** C C REAL STATEMENT FUNCTION WITH INTEGER EXPRESSION C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE RVCOMP = 0.0 RVCOMP = RFOS04(3) RVCORR = 4.0 40050 IF (RVCOMP - 3.9995) 20050, 10050, 40051 40051 IF (RVCOMP - 4.0005) 10050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0061 CONTINUE C C **** FCVS PROGRAM 311 - TEST 006 **** C C INTEGER STATEMENT FUNCTION WITH EXPRESSION CONSISTING OF INTEGER C AND REAL PRIMARIES. C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 0 IVCOMP = IFOS02(2) IVCORR = 3 40060 IF (IVCOMP - 3) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C TEST 007 THROUGH TEST 017 TEST THE USAGE OF VARIOUS PRIMARIES C IN THE EXPRESSION OF A STATEMENT FUNCTION. C C C **** FCVS PROGRAM 311 - TEST 007 **** C C USE INTEGER VARIABLE AS PRIMARY C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 IVON01 = 3 IVCOMP = IFOS03(4) IVCORR = 7 40070 IF (IVCOMP - 7) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 311 - TEST 008 **** C C USE REAL VARIABLE AS PRIMARY. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE RVCOMP = 0.0 RVON02 = 1.5 RADN11(2) = 1.3 RVCOMP = RFOS05(RADN11(2)) RVCORR = 2.8 40080 IF (RVCOMP - 2.7995) 20080, 10080, 40081 40081 IF (RVCOMP - 2.8005) 10080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0091 CONTINUE C C **** FCVS PROGRAM 311 - TEST 009 **** C C USE LOGICAL VARIABLE AS PRIMARY. C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE LVON01 = .TRUE. IVCOMP = 0 IF (LFOS01(.FALSE.)) IVCOMP = 1 IVCORR = 1 40090 IF (IVCOMP - 1) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 311 - TEST 010 **** C C USE INTEGER ARRAY ELEMENT NAME AS PRIMARY. C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 IADN11(1) = 7 IVCOMP = IFOS04(-4) IVCORR = 3 40100 IF (IVCOMP - 3) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 311 - TEST 011 **** C C USE REAL ARRAY ELEMENT NAME AS PRIMARY. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE RVCOMP = 0.0 RADN12(3) = 1.23 RVCOMP = RFOS06(3.0) RVCORR = 4.23 40110 IF (RVCOMP - 4.2295) 20110, 10110, 40111 40111 IF (RVCOMP - 4.2305) 10110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0121 CONTINUE C C **** FCVS PROGRAM 311 - TEST 012 **** C C USE LOGICAL ARRAY ELEMENT NAME AS PRIMARY. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE LADN11(2) = .TRUE. IVCOMP = 0 IF (LFOS02(.FALSE.)) IVCOMP = 1 IVCORR = 1 40120 IF (IVCOMP - 1) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 311 - TEST 013 **** C C USE A REAL ARRAY ELEMENT NAME AS PRIMARY WHERE THE SUBSCRIPT C VALUE IS THE DUMMY ARGUMENT NAME. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVCOMP = 0.0 RADN13(4) = 13.4 RVCOMP = RFOS07(4) RVCORR = 13.4 40130 IF (RVCOMP - 13.395) 20130, 10130, 40131 40131 IF (RVCOMP - 13.405) 10130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C C **** FCVS PROGRAM 311 - TEST 014 **** C C USE EXTERNAL FUNCTION REFERENCE AS PRIMARY. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IVCOMP = IFOS05(6) IVCORR = 11 40140 IF (IVCOMP - 11) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 311 - TEST 015 **** C C USE EXPRESSION ENCLOSED IN PARENTHESES. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 0 IVCOMP = IFOS06(4) IVCORR = 5 40150 IF (IVCOMP - 5) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 311 - TEST 016 **** C C USE VARIABLE INITIALLY DEFINED IN DATA STATEMENT AS PRIMARY. C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 0 IVCOMP = IFOS07(3) IVCORR = 9 40160 IF (IVCOMP - 9) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 311 - TEST 017 **** C C USE PREVIOUSLY DEFINED STATEMENT FUNCTION REFERENCE AS PRIMARY. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IVCOMP = IFOS09(3) IVCORR = 5 40170 IF (IVCOMP - 5) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C TEST 018 THROUGH TEST 020 APPLY TO THE DEFINITION OF THE C STATEMENT FUNCTION DUMMY ARGUMENTS. C C C **** FCVS PROGRAM 311 - TEST 018 **** C C DEFINE STATEMENT FUNCTION WITH NO DUMMY ARGUMENTS. C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 0 IVON02 = 4 IVCOMP = IFOS10() IVCORR = 4 40180 IF (IVCOMP - 4) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 311 - TEST 019 **** C C DEFINE STATEMENT FUNCTION WITH THREE DUMMY ARGUMENTS. C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 0 IVCOMP = IFOS11(1,2,3) IVCORR = 6 40190 IF (IVCOMP - 6) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 311 - TEST 020 **** C C USE THE SAME DUMMY ARGUMENT NAME IN TWO DIFFERENT C STATEMENT FUNCTIONS. C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 1 IF (IFOS12(3) .EQ. 4) IVCOMP = IVCOMP * 2 IF (IFOS13(4) .EQ. 6) IVCOMP = IVCOMP * 3 IVCORR = 6 C 6 = 2 * 3 40200 IF (IVCOMP - 6) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C TEST 021 THROUGH TEST 022 TEST THE USAGE OF DIFFERENT TYPES OF C ACTUAL ARGUMENTS IN A STATEMENT FUNCTION REFERENCE. C C C **** FCVS PROGRAM 311 - TEST 021 **** C C USE AN EXPRESSION WITH OPERATORS AS AN ACTUAL ARGUMENT. C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 0 IVON03 = 4 IVCOMP = IFOS14(IVON03 * 4 + 1) IVCORR = 18 40210 IF (IVCOMP - 18) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 311 - TEST 022 **** C C USE AN INTRINSIC FUNCTION REFERENCE AS AN ACTUAL ARGUMENT. C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVCOMP = 0 RVON01 = 1.75 IVCOMP = IFOS14(NINT(RVON01)) IVCORR = 3 40220 IF (IVCOMP - 3) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 311 - TEST 023 **** C C USE AN EXTERNAL FUNCTION REFERENCE AS AN ACTUAL ARGUMENT. C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 0 IVCOMP = IFOS14(FF312(5)) IVCORR = 7 40230 IF (IVCOMP - 7) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C TEST 024 THROUGH TEST 029 APPLY TO THE TYPING OF STATEMENT C FUNCTIONS AND THE ASSOCIATED DUMMY ARGUMENT NAMES. C C C **** FCVS PROGRAM 311 - TEST 024 **** C C OVERRIDE THE INTEGER DEFAULT TYPING OF A STATEMENT FUNCTION WITH C THE IMPLICIT STATEMENT TYPING OF REAL. C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE RVCOMP = 10.0 RVCOMP = KFOS01(3) / 5 RVCORR = 0.8 40240 IF (RVCOMP - .79995) 20240, 10240, 40241 40241 IF (RVCOMP - .80005) 10240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0251 CONTINUE C C **** FCVS PROGRAM 311 - TEST 025 **** C C OVERRIDE THE REAL DEFAULT TYPING OF A STATEMENT FUNCTION WITH C THE IMPLICIT STATEMENT TYPING OF INTEGER. C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE RVCOMP = 10.0 RVCOMP = AFOS01(3.0) / 5 RVCORR = 0.0 40250 IF (RVCOMP + .00005) 20250, 10250, 40251 40251 IF (RVCOMP - .00005) 10250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0261 CONTINUE C C **** FCVS PROGRAM 311 - TEST 026 **** C C OVERRIDE THE INTEGER DEFAULT TYPING OF A STATEMENT FUNCTION C DUMMY ARGUMENT WITH THE IMPLICIT STATEMENT TYPING OF REAL. C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE RVCOMP = 10.0 RVCOMP = RFOS08(4.0) RVCORR = 0.8 40260 IF (RVCOMP - .79995) 20260, 10260, 40261 40261 IF (RVCOMP - .80005) 10260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0271 CONTINUE C C **** FCVS PROGRAM 311 - TEST 027 **** C C OVERRIDE THE REAL DEFAULT TYPING OF A STATEMENT FUNCTION DUMMY C ARGUMENT WITH THE IMPLICIT STATEMENT TYPING OF INTEGER. C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE RVCOMP = 10.0 RVCOMP = RFOS09(4) RVCORR = 0.0 40270 IF (RVCOMP + .00005) 20270, 10270, 40271 40271 IF (RVCOMP - .00005) 10270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0281 CONTINUE C C **** FCVS PROGRAM 311 - TEST 028 **** C C OVERRIDE INTEGER DEFAULT TYPING OF A STATEMENT FUNCTION DUMMY C ARGUMENT WITH TYPE-STATEMENT TYPING OF REAL. C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE RVCOMP = 10.0 RVCOMP = RFOS10(4.0) RVCORR = 0.8 40280 IF (RVCOMP - .79995) 20280, 10280, 40281 40281 IF (RVCOMP - .80005) 10280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0291 CONTINUE C C **** FCVS PROGRAM 311 - TEST 029 **** C C OVERRIDE THE REAL DEFAULT TYPING OF A STATEMENT FUNCTION DUMMY C ARGUMENT WITH TYPE-STATEMENT TYPING OF INTEGER. C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE RVCOMP = 10.0 RVCOMP = RFOS11(4) RVCORR = 0.0 40290 IF (RVCOMP + .00005) 20290, 10290, 40291 40291 IF (RVCOMP - .00005) 10290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0301 CONTINUE C C **** FCVS PROGRAM 311 - TEST 030 **** C C TEST 030 TESTS A STATEMENT FUNCTION WHERE THE DUMMY ARGUMENT C NAME IS IDENTICAL TO A VARIABLE NAME WITHIN THE PROGRAM. C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE IVON04 = 10 IVCOMP = 1 IF (IFOS15(3) .EQ. 4) IVCOMP = IVCOMP * 2 IF (IVON04 .EQ. 10) IVCOMP = IVCOMP * 3 IVCORR = 6 C 6 = 2 * 3 40300 IF (IVCOMP - 6) 20300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C C **** FCVS PROGRAM 311 - TEST 031 **** C C TEST 031 TESTS THE ASSIGNMENT OF A STATEMENT FUNCTION TO AN C ARRAY ELEMENT. C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE IVCOMP = 0 IADN12(3) = IFOS16(4) IVCOMP = IADN12(3) IVCORR = 5 40310 IF (IVCOMP - 5) 20310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C **** FCVS PROGRAM 311 - TEST 032 **** C C TEST 032 TESTS THE USE OF A STATEMENT FUNCTION REFERENCE C IN AN ARITHMETIC EXPRESSION. C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE IVCOMP = 0 IVON05 = 12 IVCOMP = IVON05 + IFOS17(4) * 2 - 3 IVCORR = 19 40320 IF (IVCOMP - 19) 20320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C **** FCVS PROGRAM 311 - TEST 033 **** C C TEST 033 TESTS THE USE OF A STATEMENT FUNCTION DEFINITION AND C REFERENCE WITHIN AN EXTERNAL FUNCTION. C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE RVCOMP = 0.0 RVCOMP = FF313(1.3) RVCORR = 5.8 40330 IF (RVCOMP - 5.7995) 20330, 10330, 40331 40331 IF (RVCOMP - 5.8005) 10330, 10330, 20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0341 CONTINUE C C **** FCVS PROGRAM 311 - TEST 034 **** C C TEST 034 TESTS THE USE OF A STATEMENT FUNCTION DEFINITION AND C REFERENCE WITHIN A SUBROUTINE. C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE RVCOMP = 0.0 RVON05 = 10.0 CALL FS316(RVON05) RVCOMP = RVON05 RVCORR = 5.5 40340 IF (RVCOMP - 5.4995) 20340, 10340, 40341 40341 IF (RVCOMP - 5.5005) 10340, 10340, 20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0351 CONTINUE C C **** FCVS PROGRAM 311 - TEST 035 **** C C TEST 035 REFERENCES THE DUMMY ARGUMENT NAME OF AN EXTERNAL C FUNCTION WITHIN THE EXPRESSION OF A STATEMENT FUNCTION DEFINED C IN THAT EXTERNAL FUNCTION. C IVTNUM = 35 IF (ICZERO) 30350, 0350, 30350 0350 CONTINUE IVCOMP = 0 IVCOMP = FF314(4) IVCORR = 7 40350 IF (IVCOMP - 7) 20350, 10350, 20350 30350 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10350, 0361, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0361 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0361 CONTINUE C C **** FCVS PROGRAM 311 - TEST 036 **** C C TEST 036 TESTS A STATEMENT FUNCTION DEFINED WITHIN AN EXTERNAL C FUNCTION IN WHICH THE STATEMENT FUNCTION DUMMY ARGUMENT NAME IS C IDENTICAL TO THE EXTERNAL FUNCTION DUMMY ARGUMENT NAME. C IVTNUM = 36 IF (ICZERO) 30360, 0360, 30360 0360 CONTINUE RVCOMP = 0.0 RVCOMP = FF315(5.5) RVCORR = 16.7 40360 IF (RVCOMP - 16.695) 20360, 10360, 40361 40361 IF (RVCOMP - 16.705) 10360, 10360, 20360 30360 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10360, 0371, 20360 10360 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0371 20360 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0371 CONTINUE C C **** FCVS PROGRAM 311 - TEST 037 **** C C TEST 037 TESTS THE USAGE OF THE NAME OF A COMMON BLOCK AS THE C SYMBOLIC NAME OF A STATEMENT FUNCTION. C IVTNUM = 37 IF (ICZERO) 30370, 0370, 30370 0370 CONTINUE IVCOMP = 0 IVCOMP = IFOS19(4) IVCORR = 5 40370 IF (IVCOMP - 5) 20370, 10370, 20370 30370 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10370, 0381, 20370 10370 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0381 20370 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0381 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM311) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM311) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *HEADER,FORTR,FM311,SUBRTN,FM312 INTEGER FUNCTION FF312(IDONX1) C THIS SUBPROGRAM IS USED BY TESTS 014 AND 023 OF THE MAIN PROGRAM C FM311 TO TEST STATEMENT FUNCTION. IN TEST 014 REFERENCE TO FF312 C IS USED IN THE EXPRESSION OF A STATEMENT FUNCTION. IN TEST 023 C REFERENCE TO FF312 IS USED AS AN ACTUAL ARGUMENT IN A STATEMENT C FUNCTION REFERENCE. THIS ROUTINE MERELY INCREMENTS THE VALUE OF C ACTUAL/DUMMY ARGUMENT BY ONE AND RETURN THE RESULT AS THE C FUNCTION VALUE. IDONX2 = IDONX1 + 1 FF312 = IDONX2 RETURN END *HEADER,FORTR,FM311,SUBRTN,FM313 REAL FUNCTION FF313(RDON08) C THIS SUBPROGRAM IS USED BY TEST 033 OF THE MAIN PROGRAM FM311 TO C TEST THE DEFINITION AND REFERENCE OF A STATEMENT FUNCTION WITHIN C AN EXTERNAL FUNCTION. RFOS12(RDON09) = RDON09 + 1.0 RVON04 = RFOS12(3.5) FF313 = RDON08 + RVON04 RETURN END *HEADER,FORTR,FM311,SUBRTN,FM314 INTEGER FUNCTION FF314(IDON19) C THIS SUBPROGRAM IS USED BY TEST 035 OF THE MAIN PROGRAM FM311 TO C TEST THE DEFINITION AND REFERENCE OF A STATEMENT FUNCTION WITHIN C AN EXTERNAL FUNCTION. IN THIS TEST THE EXTERNAL FUNCTION DUMMY C ARGUMENT IS REFERENCED WITHIN THE EXPRESSION OF THE STATEMENT C FUNCTION. IFOS18(IDON20) = IDON19 + IDON20 FF314 = IFOS18(3) RETURN END *HEADER,FORTR,FM311,SUBRTN,FM315 REAL FUNCTION FF315(RDON12) C THIS SUBPROGRAM IS USED BY TEST 036 OF THE MAIN PROGRAM FM311 TO C TEST THE DEFINITION AND REFERENCE OF A STATEMENT FUNCTION WITHIN C AN EXTERNAL FUNCTION. IN THIS TEST THE EXTERNAL FUNCTION AND C STATEMENT FUNCTION DUMMY ARGUMENTS NAMES ARE IDENTICAL. RFOS14(RDON12) = RDON12 + 1.0 RVON06 = 10.2 RVON07 = RFOS14(RVON06) FF315 = RDON12 + RVON07 RETURN END *HEADER,FORTR,FM311,SUBRTN,FM316 SUBROUTINE FS316(RDON10) C THIS SUBPROGRAM IS USED BY TEST 034 OF THE MAIN PROGRAM FM311 TO C TEST THE DEFINITION AND REFERENCE OF A STATEMENT FUNCTION WITHIN C A SUBROUTINE. RFOS13(RDON11) = RDON11 + 1.0 RDON10 = RFOS13(3.5) + 1.0 RETURN END *END-OF,FM311 FM317.f 481036226 170 2 100666 32909 ` *HEADER,FORTR,FM317 *FILES1,FORTR,FM317 PROGRAM FM317 C C C THIS ROUTINE TESTS SUBSET LEVEL FEATURES OF EXTERNAL C FUNCTION SUBPROGRAMS. TESTS ARE DESIGNED TO CHECK THE C ASSOCIATION OF ALL PERMISSIBLE FORMS OF ACTUAL ARGUMENTS WITH C VARIABLE, ARRAY AND PROCEDURE NAME DUMMY ARGUMENTS. THESE C INCLUDE, C C 1) ACTUAL ARGUMENTS ASSOCIATED TO VARIABLE NAME DUMMY C ARGUMENT INCLUDE, C C A) CONSTANT C B) VARIABLE NAME C C) ARRAY ELEMENT NAME C D) EXPRESSION INVOLVING OPERATORS C E) EXPRESSION ENCLOSED IN PARENTHESES C F) INTRINSIC FUNCTION REFERENCE C G) EXTERNAL FUNCTION REFERENCE C H) STATEMENT FUNCTION REFERENCE C I) ACTUAL ARGUMENT NAME SAME AS DUMMY ARGUMENT NAME C C 2) ACTUAL ARGUMENTS ASSOCIATED TO ARRAY NAME DUMMY C ARGUMENT INCLUDE, C C A) ARRAY NAME C B) ARRAY ELEMENT NAME C C 3) ACTUAL ARGUMENTS ASSOCIATED TO PROCEDURE NAME DUMMY C ARGUMENT INCLUDE, C C A) EXTERNAL FUNCTION NAME C B) INTRINSIC FUNCTION NAME C C) SUBROUTINE NAME C C SUBSET LEVEL ROUTINES FM028,FM050 AND FM080 ALSO TEST THE USE OF C EXTERNAL FUNCTIONS. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 2.8, DUMMY ARGUMENTS C SECTION 5.1.2.2, DUMMY ARRAY DECLARATOR C SECTION 5.5, DUMMY AND ACTUAL ARRAYS C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENT C SECTION 8.7, EXTERNAL STATEMENT C SECTION 8.8, INTRINSIC STATEMENT C SECTION 15.2, REFERENCING A FUNCTION C SECTION 15.3, INTRINSIC FUNCTIONS C SECTION 15.5, EXTERNAL FUNCTIONS C SECTION 15.6, SUBROUTINES C SECTION 15.9, ARGUMENTS AND COMMON BLOCKS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C INTEGER FF318, FF321, FF322, FF324, FF325 LOGICAL FF320 INTRINSIC ABS, IABS, NINT EXTERNAL FF318, FF321, FF325, FS327 DIMENSION IADN11(4), IADN12(4) DIMENSION RADN11(4), RADN12(4) DIMENSION LADN11(4) COMMON IACN11(6), RACN11(10) INTEGER IATN11(2,3) REAL RATN11(3,4) IFOS01(IDON04) = IDON04 + 1 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 001 THROUGH TEST 022 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS C OF ACTUAL ARGUMENTS TO VARIABLE NAMES USED AS EXTERNAL FUNCTION C DUMMY ARGUMENTS. INTEGER, REAL AND LOGICAL DUMMY ARGUMENTS ARE C TESTED. C C C **** FCVS PROGRAM 317 - TEST 001 **** C C INTEGER CONSTANT AS ACTUAL ARGUMENT C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 IVCOMP = FF318(3) IVCORR = 4 40010 IF (IVCOMP - 4) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 317 - TEST 002 **** C C REAL CONSTANT AS ACTUAL ARGUMENT C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVCOMP = 0.0 RVCOMP = FF319(3.0) RVCORR = 4.0 40020 IF (RVCOMP - 3.9995) 20020, 10020, 40021 40021 IF (RVCOMP - 4.0005) 10020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0031 CONTINUE C C **** FCVS PROGRAM 317 - TEST 003 **** C C LOGICAL CONSTANT AS ACTUAL ARGUMENT C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 IF (FF320(.FALSE.)) IVCOMP = 1 IVCORR = 1 40030 IF (IVCOMP - 1) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 317 - TEST 004 **** C C INTEGER VARIABLE AS ACTUAL ARGUMENT C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 IVON01 = 7 IVCOMP = FF318(IVON01) IVCORR = 8 40040 IF (IVCOMP - 8) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 317 - TEST 005 **** C C REAL VARIABLE AS ACTUAL ARGUMENT C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE RVCOMP = 0.0 RVON01 = 7.0 RVCOMP = FF319(RVON01) RVCORR = 8.0 40050 IF (RVCOMP - 7.9995) 20050, 10050, 40051 40051 IF (RVCOMP - 8.0005) 10050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0061 CONTINUE C C **** FCVS PROGRAM 317 - TEST 006 **** C C LOGICAL VARIABLE AS ACTUAL ARGUMENT C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE LVON01 = .TRUE. IVCOMP = 0 IF (.NOT. FF320(LVON01)) IVCOMP = 1 IVCORR = 1 40060 IF (IVCOMP - 1) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 317 - TEST 007 **** C C INTEGER ARRAY ELEMENT NAME AS ACTUAL ARGUMENT C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 0 IADN11(2) = 2 IVCOMP = FF318(IADN11(2)) IVCORR = 3 40070 IF (IVCOMP - 3) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 317 - TEST 008 **** C C REAL ARRAY ELEMENT NAME AS ACTUAL ARGUMENT C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE RVCOMP = 0.0 RADN11(4) = 4.0 RVCOMP = FF319(RADN11(4)) RVCORR = 5.0 40080 IF (RVCOMP - 4.9995) 20080, 10080, 40081 40081 IF (RVCOMP - 5.0005) 10080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0091 CONTINUE C C **** FCVS PROGRAM 317 - TEST 009 **** C C LOGICAL ARRAY ELEMENT NAME AS ACTUAL ARGUMENT C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE LADN11(1) = .FALSE. IVCOMP = 0 IF (FF320(LADN11(1))) IVCOMP = 1 IVCORR = 1 40090 IF (IVCOMP - 1) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 317 - TEST 010 **** C C INTEGER EXPRESSION INVOLVING OPERATORS AS ACTUAL ARGUMENT C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 IVON02 = 2 IVON03 = 3 IVCOMP = FF318(IVON02 + 3 * IVON03 - 7) IVCORR = 5 40100 IF (IVCOMP - 5) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 317 - TEST 011 **** C C REAL EXPRESSION INVOLVING OPERATORS AS ACTUAL ARGUMENT C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE RVCOMP = 0.0 RVON02 = 2. RVON03 = 1.2 RVCOMP = FF319(RVON02 * RVON03 /.6) RVCORR = 5.0 40110 IF (RVCOMP - 4.9995) 20110, 10110, 40111 40111 IF (RVCOMP - 5.0005) 10110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0121 CONTINUE C C **** FCVS PROGRAM 317 - TEST 012 **** C C REAL EXPRESSION INVOLVING INTEGER AND REAL PRIMARIES AND OPERATORS C AS ACTUAL ARGUMENT. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE RVCOMP = 0.0 IVON01 = 2 RADN11(2) = 2.5 RVCOMP = FF319(IVON01**3 * (RADN11(2) - 1) + 2.0) RVCORR = 15.0 40120 IF (RVCOMP - 14.995) 20120, 10120, 40121 40121 IF (RVCOMP - 15.005) 10120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0131 CONTINUE C C **** FCVS PROGRAM 317 - TEST 013 **** C C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.NOT.) AS ACTUAL C ARGUMENT. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE LVON01 = .TRUE. IVCOMP = 0 IF (FF320(.NOT. LVON01)) IVCOMP = 1 IVCORR = 1 40130 IF (IVCOMP - 1) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 317 - TEST 014 **** C C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.OR.) AS ACTIVE C ARGUMENT. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE LVON01 = .TRUE. LVON02 = .FALSE. IVCOMP = 0 IF (.NOT. FF320(LVON01 .OR. LVON02)) IVCOMP = 1 IVCORR = 1 40140 IF (IVCOMP - 1) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 317 - TEST 015 **** C C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.AND.) AS ACTUAL C ARGUMENT. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE LVON01 = .FALSE. LVON02 = .TRUE. IVCOMP = 0 IF (FF320(LVON01 .AND. LVON02)) IVCOMP = 1 IVCORR = 1 40150 IF (IVCOMP - 1) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 317 - TEST 016 **** C C EXPRESSION ENCLOSED IN PARENTHESES AS ACTUAL ARGUMENT C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 0 IVON01 = 6 IVCOMP = FF318((IVON01 + 3)) IVCORR = 10 40160 IF (IVCOMP - 10) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 317 - TEST 017 **** C C REAL INTRINSIC FUNCTION REFERENCE AS ACTUAL ARGUMENT. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE RVCOMP = 0.0 RVON01 = -5.2 RVCOMP = FF319(ABS(RVON01)) RVCORR = 6.2 40170 IF (RVCOMP - 6.1995) 20170, 10170, 40171 40171 IF (RVCOMP - 6.2005) 10170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0181 CONTINUE C C **** FCVS PROGRAM 317 - TEST 018 **** C C INTEGER INTRINSIC FUNCTION REFERENCE AS ACTUAL ARGUMENT. C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 0 RVON01 = 4.7 IVCOMP = FF318(NINT(RVON01)) IVCORR = 6 40180 IF (IVCOMP - 6) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 317 - TEST 019 **** C C EXTERNAL FUNCTION REFERENCE AS ACTUAL ARGUMENT. C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 0 IVON01 = 4 IVCOMP = FF318(FF321(IVON01)) IVCORR = 6 40190 IF (IVCOMP - 6) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 317 - TEST 020 **** C C EXTERNAL FUNCTION REFERENCE WHICH USES A REFERENCE TO ITSELF C AS AN ACTUAL ARGUMENT. C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 0 IVCOMP = FF318(FF318(4)) IVCORR = 6 40200 IF (IVCOMP - 6) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 317 - TEST 021 **** C C USE AN ACTUAL ARGUMENT NAME WHICH IS IDENTICAL TO THE DUMMY C ARGUMENT NAME. C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 0 IDON01 = 10 IVCOMP = FF318(IDON01) IVCORR = 11 40210 IF (IVCOMP - 11) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 317 - TEST 022 **** C C USE STATEMENT FUNCTION REFERENCE AS ACTUAL ARGUMENT. C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVCOMP = 0 IVCOMP = FF318(IFOS01(4)) IVCORR = 6 40220 IF (IVCOMP - 6) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C TEST 023 THROUGH TEST 028 ARE DESIGNED TO ASSOCIATE VARIOUS C FORMS OF ACTUAL ARGUMENTS TO ARRAY NAMES USED AS EXTERNAL C FUNCTION DUMMY ARGUMENTS. C C C **** FCVS PROGRAM 317 - TEST 023 **** C C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL C ARGUMENT ARRAY DECLARATOR IS IDENTICAL TO THE ASSOCIATED DUMMY C ARGUMENT ARRAY DECLARATOR. C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 0 IADN12(1) = 1 IADN12(2) = 10 IADN12(3) = 100 IADN12(4) = 1000 IVCOMP = FF322(IADN12) IVCORR = 1111 40230 IF (IVCOMP - 1111) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 317 - TEST 024 **** C C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE OF THE C ACTUAL ARGUMENT ARRAY IS LARGER THAN THE SIZE OF THE ASSOCIATED C DUMMY ARGUMENT ARRAY. C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVCOMP = 0 IACN11(1) = 1 IACN11(2) = 10 IACN11(3) = 100 IACN11(4) = 1000 IACN11(5) = 10000 IVCOMP = FF322(IACN11) IVCORR = 1111 40240 IF (IVCOMP - 1111) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 317 - TEST 025 **** C C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL C ARGUMENT ARRAY DECLARATOR IS LARGER AND HAS MORE SUBSCRIPT C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARGUMENT ARRAY DECLARATOR. C THE ASSOCIATED DUMMY ARGUMENT ARRAY DECLARATOR. C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE IVCOMP = 0 IATN11(1,1) = 1 IATN11(2,1) = 10 IATN11(1,2) = 100 IATN11(2,2) = 1000 IATN11(1,3) = 10000 IVCOMP = FF322(IATN11) IVCORR = 1111 40250 IF (IVCOMP - 1111) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 317 - TEST 026 **** C C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE C ASSOCIATED ACTUAL AND DUMMY ARRAY DECLARATORS ARE IDENTICAL. ALL C ARRAY ELEMENTS OF THE ACTUAL ARRAY SHOULD BE PASSED TO THE C DUMMY ARRAY OF THE EXTERNAL FUNCTION. C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE RVCOMP = 0.0 RADN12(1) = 1. RADN12(2) = 10. RADN12(3) = 100. RADN12(4) = 1000. RVCOMP = FF323(RADN12(1)) RVCORR = 1111. 40260 IF (RVCOMP - 1110.5) 20260, 10260, 40261 40261 IF (RVCOMP - 1111.5) 10260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0271 CONTINUE C C **** FCVS PROGRAM 317 - TEST 027 **** C C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE C OF THE ACTUAL ARGUMENT ARRAY IS LARGER AND HAS FEWER SUBSCRIPT C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARGUMENT ARRAY. ONLY ACTUAL C ARRAY ELEMENTS WITH SUBSCRIPT VALUES OF 5, 6, 7 AND 8 (OUT OF A C POSSIBLE 10 ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF THE C EXTERNAL FUNCTION. C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE RVCOMP = 0.0 RACN11(4) = 1. RACN11(5) = 10. RACN11(6) = 100. RACN11(7) = 1000. RACN11(8) = 10000. RACN11(9) = 100000. RVCORR = 11110. RVCOMP = FF323(RACN11(5)) 40270 IF (RVCOMP - 11105.) 20270, 10270, 40271 40271 IF (RVCOMP - 11115.) 10270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0281 CONTINUE C C **** FCVS PROGRAM 317 - TEST 028 **** C C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE C OF THE ACTUAL ARGUMENT ARRAY IS LARGE THAN THE SIZE OF THE C ASSOCIATED DUMMY ARGUMENT ARRAY. ONLY ACTUAL ARRAY ELEMENTS WITH C SUBSCRIPT VALUES OF 9, 10, 11 AND 12 (OUT OF A POSSIBLE 12 C ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF THE EXTERNAL C FUNCTION. C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE RVCOMP = 0.0 RATN11(2,3) = 1. RATN11(3,3) = 10. RATN11(1,4) = 100. RATN11(2,4) = 1000. RATN11(3,4) = 10000. RVCOMP = FF323(RATN11(3,3)) RVCORR = 11110. 40280 IF (RVCOMP - 11105.) 20280, 10280, 40281 40281 IF (RVCOMP - 11115.) 10280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0291 CONTINUE C C TEST 029 THROUGH TEST 032 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS C OF ACTUAL ARGUMENTS TO PROCEDURES USED AS DUMMY ARGUMENTS. C ACTUAL ARGUMENTS TESTED INCLUDE THE NAMES OF AN EXTERNAL FUNCTION, C AN INTRINSIC FUNCTION, AND A SUBROUTINE. C C C **** FCVS PROGRAM 317 - TEST 029 **** C C USE AN EXTERNAL FUNCTION NAME AS AN ACTUAL ARGUMENT. C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE IVCOMP = 0 IVCOMP = FF324(FF325,5) IVCORR = 7 40290 IF (IVCOMP - 7) 20290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C C **** FCVS PROGRAM 317 - TEST 030 **** C C USE AN INTRINSIC FUNCTION NAME AS AN ACTUAL ARGUMENT. C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE IVCOMP = 0 IVCOMP = FF324(IABS,-7) IVCORR = 8 40300 IF (IVCOMP - 8) 20300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C C **** FCVS PROGRAM 317 - TEST 031 **** C C USE AN EXTERNAL FUNCTION NAME AS AN ACTUAL ARGUMENT. THE C INTRINSIC FUNCTION NAME (NINT) IS USED AS THE DUMMY PROCEDURE C NAME IN THE EXTERNAL FUNCTION AND THEREFORE CAN NOT BE USED AS C AN INTRINSIC FUNCTION WITHIN THAT PROGRAM UNIT. HOWEVER IT CAN C BE REFERENCED IN THE MAIN PROGRAM FM317 AND IN THE SUBPROGRAM C FF325. C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE IVCOMP = 0 IVCOMP = NINT(3.7) + FF324(FF325,2) IVCORR = 8 40310 IF (IVCOMP - 8) 20310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C **** FCVS PROGRAM 317 - TEST 032 **** C C USE A SUBROUTINE NAME AS AN ACTUAL ARGUMENT. C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE RVCOMP = 0.0 RVON01 = 3.5 RVCOMP = FF326(FS327,RVON01) RVCORR = 5.5 40320 IF (RVCOMP - 5.4995) 20320, 10320, 40321 40321 IF (RVCOMP - 5.5005) 10320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0331 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM317) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM317) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *HEADER,FORTR,FM317,SUBRTN,FM318 INTEGER FUNCTION FF318(IDON01) C THIS FUNCTION IS USED BY VARIOUS TESTS IN MAIN PROGRAM FM317 C TO TEST THE ASSOCIATION OF VARIOUS FORMS OF INTEGER ACTUAL C ARGUMENTS TO AN INTEGER VARIABLE NAME USED AS AN EXTERNAL C FUNCTION DUMMY ARGUMENT. THIS ROUTINE INCREMENTS THE ARGUMENT C VALUE BY ONE AND RETURNS THE RESULT AS THE FUNCTION VALUE. FF318 = IDON01 + 1 RETURN END *HEADER,FORTR,FM317,SUBRTN,FM319 REAL FUNCTION FF319(RDON01) C THIS FUNCTION IS USED BY VARIOUS TESTS IN MAIN PROGRAM FM317 C TO TEST THE ASSOCIATION OF VARIOUS FORMS OF REAL ACTUAL C ARGUMENTS TO A REAL VARIABLE NAME USED AS AN EXTERNAL FUNCTION C DUMMY ARGUMENT. THIS ROUTINE INCREMENTS THE ARGUMENT VALUE BY C ONE AND RETURNS THE RESULT AS THE FUNCTION VALUE. FF319 = RDON01 + 1.0 RETURN END *HEADER,FORTR,FM317,SUBRTN,FM320 LOGICAL FUNCTION FF320(LDON01) C THIS FUNCTION IS USED BY VARIOUS TESTS IN MAIN PROGRAM FM317 C TO TEST THE ASSOCIATION OF VARIOUS FORMS OF LOGICAL ACTUAL C ARGUMENTS TO A LOGICAL VARIABLE NAME USED AS AN EXTERNAL C FUNCTION DUMMY ARGUMENT. THIS ROUTINE NEGATES THE ARGUMENT C VALUE AND RETURNS THE RESULT AS THE FUNCTION VALUE. LOGICAL LDON01 FF320 = .NOT. LDON01 RETURN END *HEADER,FORTR,FM317,SUBRTN,FM321 INTEGER FUNCTION FF321(IDON02) C THIS FUNCTION IS USED IN TEST 019 OF MAIN PROGRAM FM317 AS C THE TEST OF THE USE OF AN EXTERNAL FUNCTION REFERENCE AS AN C ACTUAL ARGUMENT TO A VARIABLE NAME USED AS AN EXTERNAL FUNCTION C DUMMY ARGUMENT. THIS ROUTINE INCREMENTS THE ARGUMENT VALUE BY C ONE AND RETURNS THE RESULT AS THE FUNCTION VALUE. FF321 = IDON02 + 1 RETURN END *HEADER,FORTR,FM317,SUBRTN,FM322 INTEGER FUNCTION FF322(IDDN11) C THIS FUNCTION IS USED BY VARIOUS TESTS IN MAIN PROGRAM FM317 C TO TEST THE ASSOCIATION OF VARIOUS FORMS OF ARRAY NAMES USED AS C ACTUAL ARGUMENTS TO AN ARRAY NAME USED AS AN EXTERNAL FUNCTION C DUMMY ARGUMENT. THIS ROUTINE ADDS TOGETHER THE FOUR ELEMENTS IN C THE DUMMY ARRAY AND RETURNS THE SUM AS THE FUNCTION VALUE. DIMENSION IDDN11(4) FF322 = IDDN11(1) + IDDN11(2) + IDDN11(3) + IDDN11(4) RETURN END *HEADER,FORTR,FM317,SUBRTN,FM323 REAL FUNCTION FF323(RDTN21) C THIS FUNCTION IS USED BY VARIOUS TESTS IN MAIN PROGRAM FM317 C TO TEST THE ASSOCIATION OF VARIOUS FORMS OF ARRAY ELEMENT NAMES C USED AS ACTUAL ARGUMENTS TO AN ARRAY NAME USED AS AN EXTERNAL C FUNCTION DUMMY ARGUMENT. THIS ROUTINE ADDS TOGETHER THE FOUR C ELEMENTS IN THE DUMMY ARRAY AND RETURNS THE SUM AS THE FUNCTION C VALUE. REAL RDTN21(2,2) FF323 = RDTN21(1,1) + RDTN21(2,1) + RDTN21(1,2) + RDTN21(2,2) RETURN END *HEADER,FORTR,FM317,SUBRTN,FM324 INTEGER FUNCTION FF324(NINT, IDON03) C THIS FUNCTION IS USED BY TESTS 029, 030 AND 031 OF MAIN C PROGRAM FM317 TO TEST THE ASSOCIATION OF EXTERNAL FUNCTION AND C INTRINSIC FUNCTION NAMES USED AS ACTUAL ARGUMENTS TO A PROCEDURE C NAME USED AS A DUMMY ARGUMENT. THIS FUNCTION REFERENCES THE C EXTERNAL FUNCTION OR INTRINSIC FUNCTION PASSED AS A PROCEDURE C NAME ARGUMENT, INCREMENTING THE RESULT BY ONE BEFORE RETURNING C THE RESULT AS THE FUNCTION VALUE. FF324 = NINT(IDON03) + 1 C **** THE NAME NINT IS A DUMMY ARGUMENT C AND NOT AN INTRINSIC FUNCTION REFERENCE ***** RETURN END *HEADER,FORTR,FM317,SUBRTN,FM325 INTEGER FUNCTION FF325(IDON05) C THIS FUNCTION IS USED BY TESTS 029 AND 031 OF MAIN PROGRAM C FM317 TO TEST THE ASSOCIATION OF AN EXTERNAL FUNCTION NAME USED AS C AN ACTUAL ARGUMENT TO A PROCEDURE NAME USED AS A DUMMY ARGUMENT. C FF325 IS REFERENCED FROM EXTERNAL FUNCTION FF324 VIA A DUMMY C PROCEDURE NAME REFERENCE. THIS ROUTINE ADDS THE RESULT OF AN C INTRINSIC FUNCTION REFERENCE (NINT) TO THE ARGUMENT VALUE AND C RETURNS THE SUM AS THE FUNCTION VALUE. FF325 = IDON05 + NINT(1.2) RETURN END *HEADER,FORTR,FM317,SUBRTN,FM326 REAL FUNCTION FF326(RDON02,RDON03) C THIS FUNCTION IS USED BY TEST 032 OF MAIN PROGRAM FM317 TO C TEST THE ASSOCIATION OF A SUBROUTINE NAME USED AS AN ACTUAL C ARGUMENT TO A PROCEDURE NAME USED AS A DUMMY ARGUMENT. THIS C FUNCTION CALLS THE SUBROUTINE (FS327) PASSED AS A PROCEDURE NAME C ARGUMENT. THE VALUE OF THE ARGUMENT RETURNED FROM THIS C REFERENCE IS THEN INCREMENTED BY ONE BEFORE RETURNING THE SUM AS C THE FUNCTION VALUE. CALL RDON02(RDON03) FF326 = RDON03 + 1.0 RETURN END *HEADER,FORTR,FM317,SUBRTN,FM327 SUBROUTINE FS327(RDON04) C THIS SUBROUTINE IS USED BY TEST 032 OF MAIN PROGRAM FM317 TO C TEST THE ASSOCIATION OF A SUBROUTINE NAME USED AS AN ACTUAL C ARGUMENT TO A PROCEDURE NAME USED AS A DUMMY ARGUMENT. FS327 IS C CALLED FROM EXTERNAL PROGRAM FF326 VIA A DUMMY PROCEDURE NAME C REFERENCE. THIS ROUTINE INCREMENTS THE ARGUMENT VALUE BY ONE. RDON04 = RDON04 + 1.0 RETURN END *END-OF,FM317 FM328.f 481036231 170 2 100666 27836 ` *HEADER,FORTR,FM328 *FILES1,FORTR,FM328 PROGRAM FM328 C C C THIS ROUTINE TEST SUBSET LEVEL FEATURES OF C SUBROUTINE SUBPROGRAMS. TESTS ARE DESIGNED TO CHECK THE C ASSOCIATION OF ALL PERMISSIBLE FORMS OF ACTUAL ARGUMENTS WITH C VARIABLE, ARRAY AND PROCEDURE NAME DUMMY ARGUMENTS. THESE C INCLUDE, C C 1) ACTUAL ARGUMENTS ASSOCIATED TO VARIABLE NAME DUMMY C ARGUMENT INCLUDE, C C A) CONSTANT C B) VARIABLE NAME C C) ARRAY ELEMENT NAME C D) EXPRESSION INVOLVING OPERATORS C E) EXPRESSION ENCLOSED IN PARENTHESES C F) INTRINSIC FUNCTION REFERENCE C G) EXTERNAL FUNCTION REFERENCE C H) STATEMENT FUNCTION REFERENCE C I) ACTUAL ARGUMENT NAME SAME AS DUMMY ARGUMENT NAME C C 2) ACTUAL ARGUMENTS ASSOCIATED TO ARRAY NAME DUMMY C ARGUMENT INCLUDE, C C A) ARRAY NAME C B) ARRAY ELEMENT NAME C C 3) ACTUAL ARGUMENTS ASSOCIATED TO PROCEDURE NAME DUMMY C ARGUMENT INCLUDE, C C A) EXTERNAL FUNCTION NAME C B) INTRINSIC FUNCTION NAME C C) SUBROUTINE NAME C C ALL DATA PASSED TO THE REFERENCED SUBPROGRAMS ARE PASSED VIA C ARGUMENT VALUES, WHILE ALL RESULTS RETURNED TO FM328 ARE C RETURNED VIA VARIABLES IN NAMED COMMON. SUBSET LEVEL ROUTINES C FM026, FM050 AND FM056 ALSO TEST THE USE OF SUBROUTINES. C C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 2.8, DUMMY ARGUMENTS C SECTION 5.1.2.2, DUMMY ARRAY DECLARATOR C SECTION 5.5, DUMMY AND ACTUAL ARRAYS C SECTION 8.1, DIMENSION STATEMENT C SECTION 8.3, COMMON STATEMENT C SECTION 8.4, TYPE-STATEMENT C SECTION 8.7, EXTERNAL STATEMENT C SECTION 8.8, INTRINSIC STATEMENT C SECTION 15.2, REFERENCING A FUNCTION C SECTION 15.3, INTRINSIC FUNCTIONS C SECTION 15.5, EXTERNAL FUNCTIONS C SECTION 15.6, SUBROUTINES C SECTION 15.9, ARGUMENTS AND COMMON BLOCKS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C INTEGER IATN11(2,3) REAL RATN11(3,4) INTEGER FF330 DIMENSION IADN11(4), IADN12(4) DIMENSION RADN11(4), RADN12(4) DIMENSION LADN11(4) COMMON /BLK1/IVCN01, RVCN01, LVCN01 COMMON IACN11(6), RACN11(10) EXTERNAL FF330, FS335 INTRINSIC ABS, IABS, NINT IFOS01(IDON04) = IDON04 + 1 RFOS01(RDON04) = RDON04 + 1.0 LFOS01(LDON04) = .NOT. LDON04 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 001 THROUGH TEST 013 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS C OF ACTUAL ARGUMENTS TO VARIABLE NAMES USED AS SUBROUTINE C DUMMY ARGUMENTS. INTEGER, REAL AND LOGICAL DUMMY ARGUMENTS ARE C TESTED. C C C **** FCVS PROGRAM 328 - TEST 001 **** C C USE INTEGER, REAL AND LOGICAL CONSTANTS AS ACTUAL ARGUMENTS. C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE CALL FS329(3, 3.0, .FALSE.) IVCOMP = 1 IF (IVCN01 .EQ. 4) IVCOMP = IVCOMP * 2 IF (RVCN01 .GE. 3.9995 .AND. RVCN01 .LE. 4.0005) IVCOMP = IVCOMP*3 IF (LVCN01) IVCOMP = IVCOMP * 5 IVCORR = 30 40010 IF (IVCOMP - 30) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 328 - TEST 002 **** C C USE INTEGER, REAL AND LOGICAL VARIABLES AS ACTUAL ARGUMENTS. C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVON01 = 7 RVON01 = 7.0 LVON01 = .TRUE. CALL FS329(IVON01, RVON01, LVON01) IVCOMP = 1 IF (IVCN01 .EQ. 8) IVCOMP =IVCOMP * 2 IF (RVCN01 .GE. 7.9995 .AND. RVCN01 .LE. 8.0005) IVCOMP = IVCOMP*3 IF (.NOT. LVCN01) IVCOMP = IVCOMP * 5 IVCORR = 30 40020 IF (IVCOMP - 30) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 328 - TEST 003 **** C C USE INTEGER, REAL AND LOGICAL ARRAY ELEMENT NAMES AS ACTUAL C ARGUMENTS. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IADN11(2) = 2 RADN11(4) = 4.0 LADN11(1) = .FALSE. CALL FS329(IADN11(2), RADN11(4), LADN11(1)) IVCOMP = 1 IF (IVCN01 .EQ. 3) IVCOMP = IVCOMP * 2 IF (RVCN01 .GE. 4.9995 .AND. RVCN01 .LE. 5.0005) IVCOMP = IVCOMP*3 IF (LVCN01) IVCOMP = IVCOMP * 5 IVCORR = 30 40030 IF (IVCOMP - 30) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 328 - TEST 004 **** C C INTEGER AND REAL EXPRESSIONS INVOLVING OPERATORS AS ACTUAL C ARGUMENTS. C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVON02 = 2 IVON03 = 3 RVON02 = 2. RVON03 = 1.2 CALL FS329(IVON02 + 3 * IVON03 - 7, RVON02 *RVON03 / .6, .TRUE.) IVCOMP = 1 IF (IVCN01 .EQ. 5) IVCOMP = IVCOMP * 2 IF (RVCN01 .GE. 4.9995 .AND. RVCN01 .LE. 5.0005) IVCOMP = IVCOMP*3 IVCORR = 6 40040 IF (IVCOMP - 6) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 328 - TEST 005 **** C C REAL EXPRESSION INVOLVING INTEGER AND REAL PRIMARIES AND OPERATORS C AS ACTUAL ARGUMENT. C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE RVCOMP = 0.0 IVON01 = 2 RADN11(2) = 2.5 CALL FS329(1, IVON01**3 * (RADN11(2) - 1) + 2.0, .TRUE.) RVCOMP = RVCN01 RVCORR = 15.0 40050 IF (RVCOMP - 14.995) 20050, 10050, 40051 40051 IF (RVCOMP - 15.005) 10050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0061 CONTINUE C C **** FCVS PROGRAM 328 - TEST 006 **** C C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.NOT.) AS ACTUAL C ARGUMENT. C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE LVON01 = .TRUE. CALL FS329(1, 1.0, .NOT. LVON01) IVCOMP = 0 IF (LVCN01) IVCOMP = 1 IVCORR = 1 40060 IF (IVCOMP - 1) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 328 - TEST 007 **** C C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.OR.) AS ACTIVE C ARGUMENT. C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE LVON01 = .TRUE. LVON02 = .FALSE. CALL FS329(1, 1.0, LVON01 .OR. LVON02) IVCOMP = 0 IF (.NOT. LVCN01) IVCOMP = 1 IVCORR = 1 40070 IF (IVCOMP - 1) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 328 - TEST 008 **** C C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.AND.) AS ACTUAL C ARGUMENT. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE LVON01 = .FALSE. LVON02 = .TRUE. CALL FS329(1, 1.0, LVON01 .AND. LVON02) IVCOMP = 0 IF (LVCN01) IVCOMP = 1 IVCORR = 1 40080 IF (IVCOMP - 1) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 328 - TEST 009 **** C C EXPRESSION ENCLOSED IN PARENTHESES AS ACTUAL ARGUMENT. C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 0 IVON01 = 6 CALL FS329((IVON01 + 3), 1.0, .TRUE.) IVCOMP = IVCN01 IVCORR = 10 40090 IF (IVCOMP - 10) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 328 - TEST 010 **** C C INTEGER AND REAL INTRINSIC FUNCTION REFERENCES AS ACTUAL ARGUMENTS C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE RVON01 = 4.7 RVON02 = -5.2 CALL FS329(NINT(RVON01), ABS(RVON02), .TRUE.) IVCOMP = 1 IF (IVCN01 .EQ. 6) IVCOMP = IVCOMP * 2 IF (RVCN01 .GE. 6.1995 .AND. RVCN01 .LE. 6.2005) IVCOMP = IVCOMP*3 IVCORR = 6 40100 IF (IVCOMP - 6) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 328 - TEST 011 **** C C EXTERNAL FUNCTION REFERENCE AS ACTUAL ARGUMENT. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 0 IVON01 = 4 CALL FS329(FF330(IVON01), 1.0, .TRUE.) IVCOMP = IVCN01 IVCORR = 6 40110 IF (IVCOMP - 6) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 328 - TEST 012 **** C C USE ACTUAL ARGUMENT NAMES WHICH ARE IDENTICAL TO THE DUMMY C ARGUMENT NAMES. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IDON01 = 10 RDON01 = 10.0 LDON01 = .FALSE. CALL FS329(IDON01, RDON01, LDON01) IVCOMP = 1 IF (IVCN01 .EQ. 11) IVCOMP = IVCOMP * 2 IF (RVCN01 .GE. 10.995 .AND. RVCN01 .LE. 11.005) IVCOMP = IVCOMP*3 IF (LVCN01) IVCOMP = IVCOMP * 5 IVCORR = 30 40120 IF (IVCOMP - 30) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 328 - TEST 013 **** C C USE INTEGER, REAL AND LOGICAL STATEMENT FUNCTION REFERENCES AS C ARGUMENT NAMES. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVON01 = 5.0 CALL FS329(IFOS01(4), RFOS01(RVON01), LFOS01(.TRUE.)) IVCOMP = 1 IF (IVCN01 .EQ. 6) IVCOMP = IVCOMP * 2 IF (RVCN01 .GE. 6.9995 .AND. RVCN01 .LE. 7.0005) IVCOMP = IVCOMP*3 IF (LVCN01) IVCOMP = IVCOMP * 5 IVCORR = 30 40130 IF (IVCOMP - 30) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C TEST 014 THROUGH TEST 019 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS C OF ACTUAL ARGUMENTS TO ARRAY NAMES USED AS SUBROUTINE DUMMY C ARGUMENTS. C C C **** FCVS PROGRAM 328 - TEST 014 **** C C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL C ARGUMENT ARRAY DECLARATOR IS IDENTICAL TO THE ASSOCIATED DUMMY C ARGUMENT ARRAY DECLARATOR. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IADN12(1) = 1 IADN12(2) = 10 IADN12(3) = 100 IADN12(4) = 1000 CALL FS331(IADN12) IVCOMP = IVCN01 IVCORR = 1111 40140 IF (IVCOMP - 1111) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 328 - TEST 015 **** C C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE OF THE C ACTUAL ARGUMENT ARRAY IS LARGER THAN THE SIZE OF THE ASSOCIATED C DUMMY ARGUMENT ARRAY. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 0 IACN11(1) = 1 IACN11(2) = 10 IACN11(3) = 100 IACN11(4) = 1000 IACN11(5) = 10000 CALL FS331(IACN11) IVCOMP = IVCN01 IVCORR = 1111 40150 IF (IVCOMP - 1111) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 328 - TEST 016 **** C C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL C ARGUMENT ARRAY DECLARATOR IS LARGER AND HAS MORE SUBSCRIPT C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARGUMENT ARRAY DECLARATOR. C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 0 IATN11(1,1) = 1 IATN11(2,1) = 10 IATN11(1,2) = 100 IATN11(2,2) = 1000 IATN11(1,3) = 10000 CALL FS331(IATN11) IVCOMP = IVCN01 IVCORR = 1111 40160 IF (IVCOMP - 1111) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 328 - TEST 017 **** C C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE C ASSOCIATED ACTUAL AND DUMMY ARRAY DECLARATORS ARE IDENTICAL. ALL C ARRAY ELEMENTS OF THE ACTUAL ARRAY SHOULD BE PASSED TO THE C DUMMY ARRAY OF THE SUBROUTINE. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE RVCOMP = 0.0 RADN12(1) = 1. RADN12(2) = 10. RADN12(3) = 100. RADN12(4) = 1000. CALL FS332(RADN12(1)) RVCOMP = RVCN01 RVCORR = 1111. 40170 IF (RVCOMP - 1110.5) 20170, 10170, 40171 40171 IF (RVCOMP - 1111.5) 10170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0181 CONTINUE C C **** FCVS PROGRAM 328 - TEST 018 **** C C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE C OF THE ACTUAL ARGUMENT ARRAY IS LARGER AND HAS FEWER SUBSCRIPT C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARRAY. ONLY ACTUAL ARRAY C ELEMENTS WITH SUBSCRIPT VALUES OF 5, 6, 7 AND 8 ( OUT OF A C POSSIBLE 10 ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF C THE SUBROUTINE. C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE RVCOMP = 0.0 RACN11(4) = 1. RACN11(5) = 10. RACN11(6) = 100. RACN11(7) = 1000. RACN11(8) = 10000. RACN11(9) = 100000. CALL FS332(RACN11(5)) RVCOMP = RVCN01 RVCORR = 11110. 40180 IF (RVCOMP - 11105.) 20180, 10180, 40181 40181 IF (RVCOMP - 11115.) 10180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0191 CONTINUE C C **** FCVS PROGRAM 328 - TEST 019 **** C C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE C OF THE ACTUAL ARGUMENT ARRAY IS LARGE THAN THE SIZE OF THE C ASSOCIATED DUMMY ARGUMENT ARRAY. ONLY ACTUAL ARRAY ELEMENTS WITH C SUBSCRIPT VALUES OF 9, 10, 11 AND 12 (OUT OF A POSSIBLE 12 C ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF THE SUBROUTINE. C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE RVCOMP = 0.0 RATN11(2,3) = 1. RATN11(3,3) = 10. RATN11(1,4) = 100. RATN11(2,4) = 1000. RATN11(3,4) = 10000. CALL FS332(RATN11(3,3)) RVCOMP = RVCN01 RVCORR = 11110. 40190 IF (RVCOMP - 11105.) 20190, 10190, 40191 40191 IF (RVCOMP - 11115.) 10190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0201 CONTINUE C C TEST 020 THROUGH TEST 022 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS C OF ACTUAL ARGUMENTS TO PROCEDURES USED AS SUBROUTINE DUMMY C ARGUMENTS. ACTUAL ARGUMENTS TESTED INCLUDE THE NAMES OF AN C EXTERNAL FUNCTION, AN INTRINSIC FUNCTION AND A SUBROUTINE. C C C **** FCVS PROGRAM 328 - TEST 020 **** C C USE AN EXTERNAL FUNCTION NAME AS AN ACTUAL ARGUMENT. C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 0 CALL FS333(FF330, 5) IVCOMP = IVCN01 IVCORR = 7 40200 IF (IVCOMP - 7) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 328 - TEST 021 **** C C USE AN INTRINSIC FUNCTION NAME AS AN ACTUAL ARGUMENT. C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 0 CALL FS333(IABS, -7) IVCOMP = IVCN01 IVCORR = 8 40210 IF (IVCOMP - 8) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 328 - TEST 022 **** C C USE A SUBROUTINE NAME AS AN ACTUAL ARGUMENT. C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE RVCOMP = 0.0 RVON01 = 3.5 CALL FS334(FS335, RVON01) RVCOMP = RVCN01 RVCORR = 5.5 40220 IF (RVCOMP - 5.4995) 20220, 10220, 40221 40221 IF (RVCOMP - 5.5005) 10220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0231 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM328) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM328) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *HEADER,FORTR,FM328,SUBRTN,FM329 SUBROUTINE FS329(IDON01, RDON01, LDON01) C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM C FM328 TO TEST THE DIFFERENT FORMS OF INTEGER, REAL AND LOGICAL C ACTUAL ARGUMENTS THAT CAN BE ASSOCIATED WITH INTEGER, REAL AND C LOGICAL DUMMY ARGUMENTS. THIS ROUTINE INCREMENTS THE INTEGER C AND REAL ARGUMENTS BY ONE AND NEGATES THE LOGICAL ARGUMENT. ALL C RESULTS ARE THEN RETURNED TO FM328 VIA VARIABLES IN NAMED COMMON. IMPLICIT LOGICAL (L) COMMON /BLK1/ IVCN01, RVCN01, LVCN01 IVCN01 = IDON01 + 1 RVCN01 = RDON01 + 1.0 LVCN01 = .NOT. LDON01 RETURN END *HEADER,FORTR,FM328,SUBRTN,FM330 INTEGER FUNCTION FF330(IDON02) C THIS FUNCTION IS USED BY TEST 011 OF THE MAIN PROGRAM FM328 TO C TEST THE USE OF AN EXTERNAL FUNCTION REFERENCE AS AN ACTUAL C ARGUMENT WHEN THE ASSOCIATED DUMMY ARGUMENT IS A VARIABLE NAME. C THIS FUNCTION IS ALSO REFERENCED FROM SUBROUTINE FS333 VIA A C DUMMY PROCEDURE NAME REFERENCE. THIS FUNCTION INCREMENTS THE C ARGUMENT VALUE BY ONE AND RETURNS THE RESULT AS THE FUNCTION C VALUE. FF330 = IDON02 + 1 RETURN END *HEADER,FORTR,FM328,SUBRTN,FM331 SUBROUTINE FS331(IDDN11) C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM C FM328 TO TEST THE USE OF AN ARRAY NAME AS AN ACTUAL ARGUMENT WHEN C THE ASSOCIATED DUMMY ARGUMENT IS AN ARRAY NAME. THIS ROUTINE C ADDS TOGETHER THE FOUR ELEMENTS IN THE DUMMY ARGUMENT ARRAY AND C RETURNS THE RESULTS VIA A VARIABLE IN NAMED COMMON. LOGICAL LVCN01 DIMENSION IDDN11(4) COMMON /BLK1/IVCN01, RVCN01, LVCN01 IVCN01 = IDDN11(1) + IDDN11(2) + IDDN11(3) + IDDN11(4) RETURN END *HEADER,FORTR,FM328,SUBRTN,FM332 SUBROUTINE FS332(RDTN21) C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM C FM328 TO TEST THE USE OF AN ARRAY ELEMENT NAME AS AN ACTUAL C ARGUMENT WHEN THE ASSOCIATED DUMMY ARGUMENT IS AN ARRAY NAME. C THIS ROUTINE ADDS TOGETHER THE FOUR ELEMENTS IN THE DUMMY C ARGUMENT ARRAY AND RETURNS THE RESULT VIA A VARIABLE IN NAMED C COMMON. IMPLICIT LOGICAL (L) REAL RDTN21(2,2) COMMON /BLK1/IVCN01, RVCN01, LVCN01 RVCN01 = RDTN21(1,1) + RDTN21(2,1) + RDTN21(1,2) + RDTN21(2,2) RETURN END *HEADER,FORTR,FM328,SUBRTN,FM333 SUBROUTINE FS333(NINT, IDON03) C THIS SUBROUTINE IS USED BY TESTS 020 AND 021 OF THE MAIN C PROGRAM FM328 TO TEST THE USE OF EXTERNAL AND INTRINSIC FUNCTION C NAMES AS ACTUAL ARGUMENTS WHEN THE ASSOCIATED DUMMY ARGUMENT IS A C PROCEDURE NAME. THIS SUBROUTINE REFERENCES THE EXTERNAL FUNCTION C FF330 OR THE INTRINSIC FUNCTION IABS DEPENDING ON THE ACTUAL C ARGUMENT PASSED TO IT. THE RESULT OF THIS FUNCTION REFERENCE IS C THEN INCREMENTED BY ONE AND THE RESULT IS RETURNED TO FS328 VIA C A VARIABLE IN NAMED COMMON. IMPLICIT LOGICAL (L) COMMON /BLK1/IVCN01, RVCN01, LVCN01 IVCN01 = NINT(IDON03) + 1 C **** THE NAME NINT IS A DUMMY ARGUMENT NAME C AND NOT AN INTRINSIC FUNCTION REFERENCE **** RETURN END *HEADER,FORTR,FM328,SUBRTN,FM334 SUBROUTINE FS334(IDON06, RDON03) C THIS SUBROUTINE IS USED BY TEST 022 OF THE MAIN PROGRAM C FM328 TO TEST THE USE OF A SUBROUTINE NAME AS AN ACTUAL ARGUMENT C WHEN THE ASSOCIATED DUMMY ARGUMENT IS A PROCEDURE NAME. THIS C SUBROUTINE CALLS THE SUBROUTINE FS335 VIA A DUMMY PROCEDURE NAME C REFERENCE. THE ARGUMENT VALUE WHICH IS RETURNED FROM THE FS335 C REFERENCE IS THEN INCREMENTED BY ONE AND RETURNED TO FM328 VIA C A VARIABLE IN NAMED COMMON. IMPLICIT LOGICAL (L) COMMON /BLK1/IVCN01, RVCN01, LVCN01 CALL IDON06(RDON03) RVCN01 = RDON03 + 1.0 RETURN END *HEADER,FORTR,FM328,SUBRTN,FM335 SUBROUTINE FS335(RDON04) C THIS SUBROUITNE IS USED BY TEST 022 OF THE MAIN PROGRAM FM328 C TO TEST THE USE OF A SUBROUTINE NAME AS AN ACTUAL ARGUMENT WHEN C THE ASSOCIATED DUMMY ARGUMENT IS A PROCEDURE NAME. FS335 IS C CALLED FROM SUBROUTINE FS334 VIA A DUMMY PROCEDURE NAME REFERENCE. C THIS ROUTINE INCREMENTS THE ARGUMENT VALUE BY ONE. RDON04 = RDON04 + 1.0 RETURN END *END-OF,FM328 FM351.f 481036236 170 2 100666 27623 ` *HEADER,FORTR,FM351 *FILES1,FORTR,FM351,X PROGRAM FM351 C C C THIS PROGRAM CONTAINS TESTS FOR COMPOUND ARITHMETIC C EXPRESSIONS WHICH NECESSITATE THE APPLICATION OF THE RULES C FOR ARITHMETIC OPERATOR PRECEDENCE. THESE TESTS INCLUDE ONES C WHICH EXERCIZE THE C C (1) USE OF ALL ARITHMETIC OPERATOR TYPES IN THE SAME STATEMENT. C (2) USE OF PARENTHESES TO OVERRIDE DEFAULT PRECEDENCES. C (3) USE OF ALL CLASSES OF PRIMARY OPERANDS. C (4) USE OF NESTED FUNCTION REFERENCES. C (5) USE OF MIXED DATA TYPES. C C REFERENCES - C C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, X3.9-1977 C C SECTION 6.1 ARITHMETIC EXPRESSIONS C SECTION 6.5 PRECEDENCE OF OPERATORS C SECTION 6.6 EVALUATION OF EXPRESSIONS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION IADN11(5), RADN11(5) IFOS01(IDON01,IDON02,IDON03) = IDON01 ** IDON02 ** IDON03 IFOS02(IDON04,IDON05) = IADN11(IDON04) / IADN11(IDON05) IFOS04(IDON09,IDON10) = IADN11(IDON09) + IABS(IDON10) IFOS03(IDON06,IDON07,IDON08) = IFOS04(IDON06,IDON07) * IDON08 RFOS01(RDON01,RDON02,RDON03) = RDON01 ** RDON02 ** RDON03 RFOS02(IDON11,IDON12) = RADN11(IDON11) / RADN11(IDON12) RFOS04(IDON13,RDON10) = RADN11(IDON13) + ABS(RDON10) RFOS03(RDON06,RDON07,RDON08) = RFOS04(INT(RDON06),RDON07) * RDON08 IFOS05(IDON14,IDON16) = RADN11(IDON14) + IABS(IDON16) RFOS06(RDON17,IDON18,RDON19) = IFOS05(INT(RDON17),IDON18) * RDON19 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TESTS 1 THROUGH 10 DEAL ENTIRELY WITH INTEGER EXPRESSIONS. C C C **** FCVS PROGRAM 351 - TEST 001 **** C C TEST 1 CHECKS AN INTEGER EXPRESSION WHERE ALL FIVE ARITHMETIC C OPERATORS ARE USED AND ALL OPERAND PRIMARIES ARE SIMPLE INTEGER C VARIABLES. NO PARENTHESES ARE USED TO UPSET DEFAULT PRECEDENCES. C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVON01 = 7 IVON02 = 3 IVON03 = 573 IVON04 = 23 IVON05 = 3 IVON06 = -7 IVCOMP = IVON01 ** IVON02 + IVON03 - IVON04 * IVON05 / IVON06 IVCORR = 925 40010 IF (IVCOMP - 925) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 351 - TEST 002 **** C C TEST 2, LIKE TEST 1, CHECKS AN INTEGER EXPRESSION WHERE ALL C FIVE ARITHMETIC OPERATORS ARE USED AND ALL OPERANDS ARE SIMPLE C INTEGER VARIABLES; BUT IN THIS TEST, PARENTHESES ARE USED, AS IS C A UNARY OPERATOR. C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVON01 = 7 IVON02 = 3 IVON03 = 5 IVON04 = -3 IVON05 = 3 IVCOMP = -(IVON01 / IVON02) + (IVON03 * IVON04 ** IVON05) IVCORR = -137 40020 IF (IVCOMP + 137) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 351 - TEST 003 **** C C TEST 3 IS SIMILAR TO TEST 2 EXCEPT THAT IT EMPLOYS NESTED C PARENTHESES. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVON01 = 5 IVON02 = 3 IVON03 = 5 IVON04 = 17 IVON05 = 14 IVON06 = 3 IVCOMP = IVON01 ** (-(IVON02 + (IVON03 - IVON04)) - (IVON05 / 1 IVON06)) IVCORR = 3125 40030 IF (IVCOMP - 3125) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 351 - TEST 004 **** C C TEST 4 IS SIMILAR TO TEST 2 AND 3 EXCEPT THAT THE C PARENTHESES USED ARE EFFECTIVELY EXTRANEOUS. C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVON01 = 3 IVON02 = 4 IVON03 = 5 IVON04 = 2 IVON05 = 3 IVON06 = 4 IVCOMP = ((IVON01) ** (IVON02) + (IVON03) - (IVON04) * 1 (IVON05) / (IVON06)) IVCORR = 85 40040 IF (IVCOMP - 85) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 351 - TEST 005 **** C C TEST 5 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY C INTEGER VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, C AND USING PARENTHESES TO OVERRIDE PRECEDENCES. C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVON01 = 57 IVON02 = -3 IVON03 = 4 IVON04 = -1 IVON05 = -5 IVON06 = -2 IVCOMP = -IVON01 ** (IVON02 + IVON03 - IVON04) * 1 (IVON05 / IVON06) IVCORR = -6498 40050 IF (IVCOMP + 6498) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 351 - TEST 006 **** C C TEST 6 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY C INTEGER VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, C AND USING PARENTHESES TO OVERRIDE PRECEDENCES. C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVON01 = 5 IVON02 = 3 IVON03 = 4 IVON04 = 5496 IVON05 = 7 IVON06 = -3 IVCOMP = ((IVON01 * (IVON02 / IVON03)) + IVON04) / IVON05 - 1 (-IVON06) IVCORR = 782 40060 IF (IVCOMP - 782) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 351 - TEST 007 **** C C IN TEST 7, AN INTEGER EXPRESSION INVOLVING ALL FIVE C ARITHMETIC OPERATORS TOGETHER WITH PARENTHESES IS EVALUATED, C BUT UNLIKE TESTS 1 THROUGH 6 WHERE ALL OPERANDS WERE INTEGER C VARIABLES, THE OPERANDS IN TEST 7 ARE CLASSED AS INTEGER C VARIABLES, INTEGER CONSTANTS, INTEGER ARRAY ELEMENTS, AND INTEGER C FUNCTION REFERENCES. C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVON01 = 573 IVON02 = 1 IVON03 = 3 IVON04 = 2 IVON05 = 3 IADN11(3) = 3071 IVCOMP = (IVON01 + 1) - (5 + IADN11(IVON03)) / 1 (IFOS01(IVON03,IVON04,IVON05) ** IVON02) IVCORR = 574 40070 IF (IVCOMP - 574) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 351 - TEST 008 **** C C TEST 8 IS IDENTICAL TO TEST 7 EXCEPT THAT PARENTHESES ARE C USED TO CHANGE THE ORDER OF SUB-EXPRESSION EVALUATION. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVON01 = 573 IVON02 = 1 IVON03 = 3 IVON04 = 2 IVON05 = 3 IADN11(3) = 3071 IVCOMP = ((IVON01 + 1) - (5 + IADN11(IVON03))) / 1 IFOS01(IVON03,IVON04,IVON05) ** IVON02 IVCORR = 0 40080 IF (IVCOMP) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 351 - TEST 009 **** C C TEST 9 IS SIMILAR TO TESTS 7 AND 8 EXCEPT THAT THE C FUNCTION REFERENCE IN TURN EVALUATES ARRAY ELEMENTS. C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVON01 = 7 IVON02 = 3 IVON03 = 2 IVON04 = 1 IVON05 = 4 IADN11(1) = 5 IADN11(2) = 2 IADN11(4) = 2 IVCOMP = (IVON01 - 8 * IFOS02(IVON04,IVON03)) / IADN11(IVON05) + 1 13 ** IVON02 IVCORR = 2193 40090 IF (IVCOMP - 2193) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 351 - TEST 010 **** C C TEST 10 EVALUATES AN INTEGER EXPRESSION WHICH CONTAINS C FUNCTION REFERENCES NESTED TO THREE LEVELS. THE OUTER TWO C LEVELS ARE STATEMENT FUNCTION REFERENCES AND THE INNERMOST LEVEL C IS AN INTRINSIC FUNCTION REFERENCE. C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVON01 = -51 IVON02 = 4 IVON03 = -101 IVON04 = 13 IVON05 = 3 IVON06 = 5 IVON07 = -37 IADN11(4) = 87 IADN11(5) = 409 IVCOMP = (IVON01 + IFOS03(IVON02,IVON03,IVON04)) * IVON05 - 1 IFOS04(IVON06,IVON07) IVCORR = 6733 40100 IF (IVCOMP - 6733) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C TESTS 11 THROUGH 20 REPEAT TESTS 1 THROUGH 10 EXCEPT THAT C TESTS 11 THROUGH 20 DEAL ENTIRELY WITH REAL ARITHMETIC C EXPRESSIONS. C C C **** FCVS PROGRAM 351 - TEST 011 **** C C TEST 11 TESTS A REAL EXPRESSION WHERE ALL FIVE ARITHMETIC C OPERATORS ARE USED AND ALL OPERAND PRIMARIES ARE SIMPLE REAL C VARIABLES. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE RVON01 = 3.2 RVON02 = 23.051 RVON03 = 1545 E7 RVON04 = -23.457 RVON05 = .02 E3 RVON06 = 7.210745323 E-10 RVCOMP = RVON01 ** RVON02 + RVON03 - RVON04 * RVON05 / RVON06 RVCORR = 1.10683 E12 40110 IF (RVCOMP - 1.1063 E12) 20110, 10110, 40111 40111 IF (RVCOMP - 1.1073 E12) 10110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0121 CONTINUE C C **** FCVS PROGRAM 351 - TEST 012 **** C C TEST 12, LIKE TEST 11, CHECKS A REAL EXPRESSION WHERE ALL C FIVE ARITHMETIC OPERATORS ARE USED AND ALL OPERANDS ARE REAL C VARIABLES, BUT IN TEST 12, PARENTHESES ARE USED, AS IS ALSO A C UNARY OPERATOR. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE RVON01 = 3.2 RVON02 = 23.051 RVON03 = 1545 E-3 RVON04 = 5.75 E-1 RVON05 = 2.22 E+1 RVCOMP = -(RVON01 / RVON02) + (RVON03 * RVON04 ** RVON05) RVCORR = -.13882 40120 IF (RVCOMP + .13887) 20120, 10120, 40121 40121 IF (RVCOMP + .13877) 10120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0131 CONTINUE C C **** FCVS PROGRAM 351 - TEST 013 **** C C TEST 13 IS SIMILAR TO TEST 12 EXCEPT THAT TEST 13 EMPLOYS C NESTED PARENTHESES. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVON01 = 3.2 RVON02 = -63.051 RVON03 = 1545 E-3 RVON04 = 5.75 E-1 RVON05 = 2.22 E1 RVON06 = 0.523 RVCOMP = RVON01 ** (-(RVON02 + (RVON03 - RVON04)) - 1 (RVON05 / RVON06)) RVCORR = 8.27757 E9 40130 IF (RVCOMP - 8.2770 E9) 20130, 10130, 40131 40131 IF (RVCOMP - 8.2780 E9) 10130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C C **** FCVS PROGRAM 351 - TEST 014 **** C C TEST 14 IS SIMILAR TO TESTS 12 AND 13 EXCEPT THAT THE C PARENTHESES USED ARE EFFECTIVELY EXTRANEOUS. C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE RVON01 = 5.4515 E18 RVON02 = .076923 RVON03 = 23 E-2 RVON04 = 7 E7 RVON05 = 45.23 E5 RVON06 = 5.65375 E12 RVCOMP = ((RVON01) ** (RVON02) + (RVON03) - (RVON04) * (RVON05) / 1 (RVON06)) RVCORR = -28.147 40140 IF (RVCOMP + 28.152) 20140, 10140, 40141 40141 IF (RVCOMP + 28.142) 10140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0151 CONTINUE C C **** FCVS PROGRAM 351 - TEST 015 **** C C TEST 15 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY C REAL VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, AND C USING PARENTHESES TO OVERRIDE PRECEDENCES. C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE RVON01 = .11341 E1 RVON02 = 7.1417 RVON03 = 5.2113 E1 RVON04 = 10.001 RVON05 = 7.241 E5 RVON06 = 5.7777 E-3 RVCOMP = -RVON01 ** (RVON02 + RVON03 - RVON04) * (RVON05 / RVON06) RVCORR = -6.1635 E10 40150 IF (RVCOMP + 6.1640 E10) 20150, 10150, 40151 40151 IF (RVCOMP + 6.1630 E10) 10150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0161 CONTINUE C C **** FCVS PROGRAM 351 - TEST 016 **** C C TEST 16 CONTINUES THE TESTING OF EXPRESSIONS USING ONLY C REAL VARIABLE OPERANDS CONNECTED BY ARITHMETIC OPERATORS, AND C USING PARENTHESES TO OVERRIDE PRECEDENCES. C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE RVON01 = 6.4003 E18 RVON02 = -3.7717 E-2 RVON03 = -5.1195 E3 RVON04 = 1.7521 E14 RVON05 = 1.0533 E3 RVON06 = -9.4207 E11 RVCOMP = ((RVON01 * (RVON02 / RVON03)) + RVON04) / RVON05 - 1 (-RVON06) RVCORR = -7.3096 E11 40160 IF (RVCOMP + 7.3101 E11) 20160, 10160, 40161 40161 IF (RVCOMP + 7.3091 E11) 10160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0171 CONTINUE C C **** FCVS PROGRAM 351 - TEST 017 **** C C IN TEST 17, A REAL EXPRESSION INVOLVING ALL FIVE ARITHMETIC C OPERATORS IS EVALUATED, BUT UNLIKE TESTS 11 THROUGH 16 WHERE C ALL OPERANDS WERE REAL VARIABLES, THE OPERANDS IN TEST 17 ARE C CLASSED AS REAL VARIABLES, REAL CONSTANTS, REAL ARRAY ELEMENTS, C AND REAL FUNCTION REFERENCES. C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE RVON01 = 5.247 E10 IVON01 = 3 RVON02 = 1.07 E1 RVON03 = 5.23 RVON04 = 1.001 RVON05 = 1.573 RADN11(3) = 0.3947 E18 RVCOMP = (RVON01 + 3.491 E10) - (4 E17 + RADN11(IVON01)) / 1 (RFOS01(RVON03,RVON04,RVON05) ** RVON02) RVCORR = 7.1526 E10 40170 IF (RVCOMP - 7.1521 E10) 20170, 10170, 40171 40171 IF (RVCOMP - 7.1531 E10) 10170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0181 CONTINUE C C **** FCVS PROGRAM 351 - TEST 018 **** C C TEST 18 IS IDENTICAL TO TEST 17 EXCEPT THAT PARENTHESES ARE C USED TO CHANGE THE ORDER OF SUB-EXPRESSION EVALUATION. C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE RVON01 = 5.247 E10 IVON01 = 3 RVON02 = 1.07 E1 RVON03 = 5.23 RVON04 = 1.001 RVON05 = 1.573 RADN11(3) = 0.3947 E18 RVCOMP = ((RVON01 + 3.491 E10) - (4 E17 + RADN11(IVON01))) / 1 RFOS01(RVON03,RVON04,RVON05) ** RVON02 RVCORR = -1.5854 E10 40180 IF (RVCOMP + 1.5859 E10) 20180, 10180, 40181 40181 IF (RVCOMP + 1.5849 E10) 10180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0191 CONTINUE C C **** FCVS PROGRAM 351 - TEST 019 **** C C TEST 19 IS SIMILAR TO TESTS 17 AND 18 EXCEPT THAT THE C FUNCTION REFERENCES IN TURN EVALUATE ARRAY ELEMENTS. C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE RVON01 = 5.026 E2 RVON02 = 1.386 E1 IVON03 = 2 RVON04 = 1.9999 RVON05 = 4.0127 RADN11(1) = 3.004 E18 RADN11(2) = 2.5705 E-1 RADN11(4) = 7.993 E16 RVCOMP = (RVON01 - 5.902 * RFOS02(INT(RVON04),INT(RVON05))) / 1 RADN11(IVON03) + 1.5372 ** RVON02 RVCORR = 1.4797 E3 40190 IF (RVCORR - 1.4792 E3) 20190, 10190, 40191 40191 IF (RVCORR - 1.4802 E3) 10190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0201 CONTINUE C C **** FCVS PROGRAM 351 - TEST 020 **** C C TEST 20 EVALUATES A REAL EXPRESSION WHICH CONTAINS FUNCTION C REFERENCES NESTED TO THREE LEVELS. THE OUTER TWO LEVELS ARE C STATEMENT FUNCTION REFERENCES AND THE INNERMOST LEVEL IS AN C INTRINSIC FUNCTION REFERENCE. C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE RVON01 = 4.7117 E05 RVON02 = 5.987 RVON03 = 2.00000 E5 RVON04 = 1.0 E2 RVON05 = 1.5222 E9 IVON06 = 4 RVON07 = -3.2107 E14 RADN11(4) = 7.425 E14 RADN11(5) = -2.4015 E5 RVCOMP = (RVON01 + RFOS03(RVON02,RVON03,RVON04)) * RVON05 - 1 RFOS04(IVON06,RVON07) RVCORR = -6.4580 E15 40200 IF (RVCOMP + 6.4585 E15) 20200, 10200, 40201 40201 IF (RVCOMP + 6.4575 E15) 10200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0211 CONTINUE C C TESTS 21 THROUGH 25 DEAL WITH MIXTURES OF REAL AND INTEGER C EXPRESSIONS; I.E., THESE ARE TESTS WHICH EVALUATE EXPRESSIONS C CONTAINING BOTH REAL SUB-EXPRESSIONS AND INTEGER SUB-EXPRESSIONS C AND THEN ASSIGN THE RESULTS TO EITHER AN INTEGER OR A REAL C VARIABLE. C C C **** FCVS PROGRAM 351 - TEST 021 **** C C TEST 21 USES ALL FIVE ARITHMETIC OPERATORS AND A COMBINATION C OF INTEGER AND REAL VARIABLES. NO PARENTHESES ARE USED. FINAL C ASSIGNMENT IS TO AN INTEGER VARIABLE. C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVON01 = 17 IVON02 = 3 RVON03 = 5.4732 E+2 RVON04 = 1.523 IVON05 = 798 IVCOMP = IVON01 ** IVON02 + RVON03 - RVON04 * IVON05 / IVON01 IVCORR = 5388 40210 IF (IVCOMP - 5388) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 351 - TEST 022 **** C C TEST 22 IS LIKE TEST 21 EXCEPT THAT PARENTHESES ARE USED, C AS IS A UNARY OPERATOR. FINAL ASSIGNMENT IS TO A REAL VARIABLE. C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVON01 = 798 IVON02 = 17 RVON03 = 9.34578 E-2 IVON04 = 15985 RVON05 = 0.72357 RVCOMP = -(IVON01 / IVON02) + (RVON03 * IVON04 ** RVON05) RVCORR = 5.68717 E1 40220 IF (RVCOMP - 5.6866 E1) 20220, 10220, 40221 40221 IF (RVCOMP - 5.6876 E1) 10220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0231 CONTINUE C C **** FCVS PROGRAM 351 - TEST 023 **** C C TEST 23 IS SIMILAR TO TEST 22 EXCEPT THAT IT EMPLOYS NESTED C PARENTHESES. C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVON01 = 2 IVON02 = 183 RVON03 = 58.7025 IVON04 = 197 IVON05 = 87 RVON06 = 2.4611 E15 RVCOMP = IVON01 ** (-(IVON02 + (RVON03 - IVON04)) - 1 (IVON05 / RVON06)) RVCORR = 3.4931 E-14 40230 IF (RVCOMP - 3.4926 E-14) 20230, 10230, 40231 40231 IF (RVCOMP - 3.4936 E-14) 10230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0241 CONTINUE C C **** FCVS PROGRAM 351 - TEST 024 **** C C TEST 24 IS IDENTICAL TO TEST 23 EXCEPT THAT THE FINAL C ASSIGNMENT IS TO AN INTEGER VARIABLE INSTEAD OF A REAL VARIABLE. C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVON01 = 2 IVON02 = 183 RVON03 = 58.7025 IVON04 = 197 IVON05 = 87 RVON06 = 2.4611 E15 IVCOMP = IVON01 ** (-(IVON02 + (RVON03 - IVON04)) - 1 (IVON05 / RVON06)) IVCORR = 0 40240 IF (IVCOMP) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 351 - TEST 025 **** C C TEST 25 IS SIMILAR TO TESTS 9 AND 19 EXCEPT THAT A MIXTURE C OF REAL AND INTEGER OPERANDS ARE USED, AND FINAL ASSIGNMENT IS C TO A REAL VARIABLE. C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE RVON01 = 4.7117 RVON02 = 5.998 IVON03 = 2 RVON04 = 1E2 IVON05 = 20 IVON06 = 4 IVON07 = -3 RADN11(4) = 7.425 RADN11(5) = -2.4015 RVCOMP = (RVON01 + RFOS06(AINT(RVON02),IVON03,RVON04)) * IVON05 - 1 IFOS05(IVON06,IVON07) RVCORR = 84.234 40250 IF (RVCOMP - 84.229) 20250, 10250, 40251 40251 IF (RVCOMP - 84.239) 10250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0261 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM351) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM351) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM351 FM352.f 481036241 170 2 100666 26448 ` *HEADER,FORTR,FM352 *FILES1,FORTR,FM352,X PROGRAM FM352 C C C THIS PROGRAM CHECKS BASIC RELATIONAL EXPRESSIONS INVOLVING C OPERANDS OF REAL DATA TYPE. IN EACH TEST, NOT ONLY THE RELATIONAL C EXPRESSION IS TESTED, BUT THE TRICHOTOMY LAW OF MATHEMATICAL C RELATIONSHIPS IS ALSO TESTED (E.G., IF A .LT. B, THEN A CAN NOT C BE .GT. THAN B, AND A CAN NOT BE .EQ. B). A TEST VARIABLE C (IVCOMP) IS USED TO REPORT THE RESULT OF THE TEST AS FOLLOWS, C IVCOMP = 0 IF BOTH THE TESTED RELATIONAL OPERATOR AND THE C TRICHOTOMY TEST PASS. C IVCOMP = 1 IF THE RELATIONAL TEST FAILS AND THE TRICHOTOMY C TEST PASSES (WHICH WOULD INDICATE THAT A TESTED C NOT .LT., .GT., OR .EQ. B). C IVCOMP = 2 IF THE RELATIONAL TEST PASSES AND THE TRICHOTOMY C TEST FAILS (WHICH WOULD INDICATE THAT A TESTED C .LT., .GT., AND .EQ. B). C IVCOMP = 3 IF BOTH THE RELATIONAL TEST AND THE TRICHOTOMY C TEST FAIL (WHICH WOULD INDICATE THE RELATIONAL C EXPRESSION TESTED OPPOSITE TO THAT EXPECTED C (E.G., WHERE A WAS SUPPOSED TO BE .LT. B, IN C FACT A .LT. B WAS FOUND TO BE FALSE AND A .GE. B C WAS FOUND TO BE TRUE). C C C REFERENCES - C C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, X3.9-1977 C SECTION 4.4, REAL TYPE C SECTION 6.3, RELATIONAL EXPRESSIONS C SECTION 6.5, PRECEDENCE OF OPERATORS C SECTION 6.6, EVALUATION OF EXPRESSIONS C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION RADN11(2) RFOS01(RDON01,RDON02) = RDON01 + RDON02 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TESTS 1 THROUGH 13 CHECK BASIC RELATIONAL EXPRESSIONS USING C ONLY REAL VARIABLE OPERANDS. ALL THE VARIABLES ARE ASSIGNED REAL C CONSTANTS WITH EXPONENTIAL FORMAT. C C C **** FCVS PROGRAM 352 - TEST 001 **** C C TEST 1 CHECKS THE .LT. OPERATOR USING TWO REAL OPERANDS C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.0001 E18 IVCOMP = 0 IVCORR = 0 40010 IF(RVON01 .LT. RVON02) GO TO 40011 IVCOMP = 1 40011 IF (RVON01 .GE. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 352 - TEST 002 **** C C TEST 2 CHECKS THE .LT. OPERATOR USING TWO REAL OPERANDS C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40020 IF (RVON01 .LT. RVON02) GO TO 40021 IVCOMP = 1 40021 IF (RVON01 .GE. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 352 - TEST 003 **** C C TEST 3 CHECKS THE .LE. OPERATOR USING TWO REAL OPERANDS C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.0001 E18 IVCOMP = 0 IVCORR = 0 40030 IF (RVON01 .LE. RVON02) GO TO 40031 IVCOMP = 1 40031 IF (RVON01 .GT. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 352 - TEST 004 **** C C TEST 4 CHECKS THE .LE. OPERATOR USING TWO REAL OPERANDS C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40040 IF (RVON01 .LE. RVON02) GO TO 40041 IVCOMP = 1 40041 IF (RVON01 .GT. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 352 - TEST 005 **** C C TEST 5 CHECKS THE .LE. OPERATOR USING TWO REAL OPERANDS C WHICH HAVE BEEN ASSIGNED THE SAME REAL CONSTANT. C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40050 IF (RVON01 .LE. RVON02) GO TO 40051 IVCOMP = 1 40051 IF (RVON01 .GT. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 352 - TEST 006 **** C C TEST 6 CHECKS THE .NE. OPERATOR USING TWO REAL OPERANDS C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.0001 E18 IVCOMP = 0 IVCORR = 0 40060 IF (RVON01 .NE. RVON02) GO TO 40061 IVCOMP = 1 40061 IF (RVON01 .EQ. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 352 - TEST 007 **** C C TEST 7 CHECKS THE .NE. OPERATOR USING TWO REAL OPERANDS C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40070 IF (RVON01 .NE. RVON02) GO TO 40071 IVCOMP = 1 40071 IF (RVON01 .EQ. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 352 - TEST 008 **** C C TEST 8 CHECKS THE .EQ. OPERATOR USING TWO REAL OPERANDS C WHICH HAVE BEEN ASSIGNED THE SAME REAL CONSTANT. C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40080 IF (RVON01 .EQ. RVON02) GO TO 40081 IVCOMP = 1 40081 IF (RVON01 .NE. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 352 - TEST 009 **** C C TEST 9 CHECKS THE .GT. OPERATOR USING TWO REAL OPERANDS C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE RVON01 = 1.0001 E18 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40090 IF(RVON01 .GT. RVON02) GO TO 40091 IVCOMP = 1 40091 IF (RVON01 .LE. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 352 - TEST 010 **** C C TEST 10 CHECKS THE .GT. OPERATOR USING TWO REAL OPERANDS C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE RVON01 = 1.9999 E17 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40100 IF (RVON01 .GT. RVON02) GO TO 40101 IVCOMP = 1 40101 IF (RVON01 .LE. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 352 - TEST 011 **** C C TEST 11 CHECKS THE .GE. OPERATOR USING TWO REAL OPERANDS C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE RVON01 = 1.0001 E18 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40110 IF (RVON01 .GE. RVON02) GO TO 40111 IVCOMP = 1 40111 IF (RVON01 .LT. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 352 - TEST 012 **** C C TEST 12 CHECKS THE .GE. OPERATOR USING TWO REAL OPERANDS C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE RVON01 = 1.9999 E17 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40120 IF (RVON01 .GE. RVON02) GO TO 40121 IVCOMP = 1 40121 IF (RVON01 .LT. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 352 - TEST 013 **** C C TEST 13 CHECKS THE .GE. OPERATOR USING TWO REAL OPERANDS C WHERE EACH HAS BEEN ASSIGNED THE SAME REAL CONSTANT. C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40130 IF (RVON01 .GE. RVON02) GO TO 40131 IVCOMP = 1 40131 IF (RVON01 .LT. RVON02) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C TESTS 14 THROUGH 28 REPETITIVELY CHECK THE .LT. RELATIONSHIP C USING ALL TYPES AND ORDERINGS OF TWO REAL OPERANDS. C C C TESTS 14 THROUGH 16 CHECK REAL-VARIABLE .LT OTHER-REAL-TYPES. C C C **** FCVS PROGRAM 352 - TEST 014 **** C C TEST 14 CHECKS REAL-VARIABLE .LT. REAL-CONSTANT C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE RVON01 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40140 IF (RVON01 .LT. 1.9999 E17) GO TO 40141 IVCOMP = 1 40141 IF (RVON01 .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 352 - TEST 015 **** C C TEST 15 CHECKS REAL-VARIABLE .LT. ARRAY-ELEMENT C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE RADN11(1) = 1.9999 E17 RVON01 = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40150 IF (RVON01 .LT. RADN11(1)) GO TO 40151 IVCOMP = 1 40151 IF (RVON01 .GE. RADN11(1)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 352 - TEST 016 **** C C TEST 16 CHECKS REAL-VARIABLE .LT. FUNCTION-REFERENCE C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE RVON01 = 1.0001 E17 RVON02 = 1 E17 RVON03 = 0.9999 E17 IVCOMP = 0 IVCORR = 0 40160 IF (RVON01 .LT. RFOS01(RVON02,RVON03)) GO TO 40161 IVCOMP = 1 40161 IF (RVON01 .GE. RFOS01(RVON02,RVON03)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C TESTS 17 THROUGH 20 CHECK REAL-CONSTANT .LT. OTHER-REAL-TYPES C C C **** FCVS PROGRAM 352 - TEST 017 **** C C TEST 17 CHECKS REAL-CONSTANT .LT. REAL-CONSTANT C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IVCORR = 0 40170 IF (1.0001 E17 .LT. 1.9999 E17) GO TO 40171 IVCOMP = 1 40171 IF (1.0001 E17 .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 352 - TEST 018 **** C C TEST 18 CHECKS REAL-CONSTANT .LT. REAL-ARRAY-ELEMENT C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE RADN11(1) = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40180 IF (1.0001 E17 .LT. RADN11(1)) GO TO 40181 IVCOMP = 1 40181 IF (1.0001 E17 .GE. RADN11(1)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 352 - TEST 019 **** C C TEST 19 CHECKS REAL-CONSTANT .LT. REAL-VARIABLE C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE RVON01 = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40190 IF (1.0001 E17 .LT. RVON01) GO TO 40191 IVCOMP = 1 40191 IF (1.0001 E17 .GE. RVON01) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 352 - TEST 020 **** C C TEST 20 CHECKS REAL-CONSTANT .LT. REAL-FUNCTION-REFERENCE C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE RVON01 = 1 E17 RVON02 = 0.9999 E17 IVCOMP = 0 IVCORR = 0 40200 IF (1.0001 E17 .LT. RFOS01(RVON01,RVON02)) GO TO 40201 IVCOMP = 1 40201 IF (1.0001 E17 .GE. RFOS01(RVON01,RVON02)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C TESTS 21 THROUGH 24 CHECK REAL-ARRAY-ELEMENT .LT. OTHER-REALS C C C **** FCVS PROGRAM 352 - TEST 021 **** C C TEST 21 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-CONSTANT C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE RADN11(1) = 1.0001 E17 IVCOMP = 0 IVCORR = 0 40210 IF (RADN11(1) .LT. 1.9999 E17) GO TO 40211 IVCOMP = 1 40211 IF (RADN11(1) .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 352 - TEST 022 **** C C TEST 22 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-ARRAY-ELEMENT C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE RADN11(1) = 1.0001 E17 RADN11(2) = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40220 IF (RADN11(1) .LT. RADN11(2)) GO TO 40221 IVCOMP = 1 40221 IF (RADN11(1) .GE. RADN11(2)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 352 - TEST 023 **** C C TEST 23 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-VARIABLE C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE RVON01 = 1.9999 E17 RADN11(1) = 1.0001 E17 IVCORR = 0 IVCOMP = 0 40230 IF (RADN11(1) .LT. RVON01) GO TO 40231 IVCOMP = 1 40231 IF (RADN11(1) .GE. RVON01) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 352 - TEST 024 **** C C TEST 24 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-FUNCTION-REF. C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE RVON01 = 1.0000 E17 RVON02 = 0.9999 E17 RADN11(1) = 1.0001 E17 IVCORR = 0 IVCOMP = 0 40240 IF (RADN11(1) .LT. RFOS01(RVON01,RVON02)) GO TO 40241 IVCOMP = 1 40241 IF (RADN11(1) .GE. RFOS01(RVON01,RVON02)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C TESTS 25 THROUGH 28 CHECK REAL-FUNCTION-REFERENCE .LT. C OTHER-REAL-TYPES C C C **** FCVS PROGRAM 352 - TEST 025 **** C C TEST 25 CHECKS REAL-FUNCTION-REFERENCE .LT. REAL-CONSTANT C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE RVON01 = 1.0000 E17 RVON02 = 0.0001 E17 IVCOMP = 0 IVCORR = 0 40250 IF (RFOS01(RVON01,RVON02) .LT. 1.9999 E17) GO TO 40251 IVCOMP = 1 40251 IF (RFOS01(RVON01,RVON02) .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 352 - TEST 026 **** C C TEST 26 CHECKS REAL-FUNCTION-REFERENCE .LT. REAL-ARRAY-ELEMNT C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE RVON01 = 1 E17 RVON02 = 0.0001 E17 RADN11(1) = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40260 IF (RFOS01(RVON01,RVON02) .LT. RADN11(1)) GO TO 40261 IVCOMP = 1 40261 IF (RFOS01(RVON01,RVON02) .GE. RADN11(1)) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 352 - TEST 027 **** C C TEST 27 CHECKS REAL-FUNCTION-REFERENCE .LT. REAL-VARIABLE C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE RVON01 = 1 E17 RVON02 = 0.0001 E17 RVON03 = 1.9999 E17 IVCOMP = 0 IVCORR = 0 40270 IF (RFOS01(RVON01,RVON02) .LT. RVON03) GO TO 40271 IVCOMP = 1 40271 IF (RFOS01(RVON01,RVON02) .GE. RVON03) IVCOMP = IVCOMP + 2 IF (IVCOMP) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 352 - TEST 028 **** C C TEST 28 CHECKS REAL-FUNCTION-REFERENCE .LT REAL-FUNCTION-REF. C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE RVON01 = 1 E17 RVON02 = 0.0001 E17 RVON03 = 0.9999 E17 IVCOMP = 0 IVCORR = 0 40280 IF (RFOS01(RVON01,RVON02) .LT. RFOS01(RVON01,RVON03)) GO TO 40281 IVCOMP = 1 40281 IF (RFOS01(RVON01,RVON02) .GE. RFOS01(RVON01,RVON03)) 1 IVCOMP = IVCOMP + 2 IF (IVCOMP) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM352) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM352) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM352 FM353.f 481036245 170 2 100666 11947 ` *HEADER,FORTR,FM353 *FILES1,FORTR,FM353,X C*********************************************************************** C***** FORTRAN 77 C***** FM353 XINT - (150) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION - IFIX - (CONVERSION FROM 15.3 C***** REAL TO INTEGER) (TABLE 5) C***** TEST INTRINSIC FUNCTION - INT - (TRUNCATION -- SIGN C***** OF A * LARGEST INTEGER LE ABS(A) ) C***** C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 14 ZPROG='FM353' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 150 WRITE (NUVI,15001) 15001 FORMAT (1H ,/ 2X,34HXINT - (150) INTRINSIC FUNCTIONS-- /17X, 1 28H IFIX, INT (TYPE CONVERSION)/ 2X, 2 18HSUBSET REF. - 15.3) C***** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** 15003 FORMAT(1X,2X,I3,4X,7HINSPECT,5X, I5, 5X, I5) 15004 FORMAT( /48X,30H BELOW ANSWERS SHOULD BE ZERO /49X, 1 25HFOR TEST SEGMENT TO PASS ) 15005 FORMAT (49X,26H- EACH TEST HAS TWO PARTS.) WRITE (NUVI, 15005) WRITE(NUVI, 15004) WRITE(NUVI,15002) 15002 FORMAT (23X, 5H IFIX, 5X, 5H INT ) C***** CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 RACVS = 0.0 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 0 IAEVI = IABVI - 0 WRITE(NUVI,15003) IVTNUM,IADVI, IAEVI CT002* TEST 2 A VALUE IN (0,1) IVTNUM = 2 RACVS = 0.375 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 0 IAEVI = IABVI - 0 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT003* TEST 3 THE VALUE ONE IVTNUM = 3 RACVS = 1.00001 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 1 IAEVI = IABVI - 1 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT004* TEST 4 AN INTEGRAL VALUE OTHER THAN 0 OR 1 IVTNUM = 4 RACVS = 6.00001 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 6 IAEVI = IABVI - 6 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT005* TEST 5 A VALUE IN (X,X+1) IVTNUM = 5 RACVS = 3.75 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 3 IAEVI = IABVI - 3 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT006* TEST 6 A NEGATIVE VALUE WITH MAGNITUDE IN (0,1) IVTNUM = 6 RACVS = -0.375 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 0 IAEVI = IABVI - 0 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT007* TEST 7 THE VALUE -1 IVTNUM = 7 RACVS = -1.00001 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI + 1 IAEVI = IABVI + 1 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT008* TEST 8 A NEGATIVE INTEGRAL VALUE IVTNUM = 8 RACVS = -6.00001 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI + 6 IAEVI = IABVI + 6 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT009* TEST 9 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+1) IVTNUM = 9 RACVS = -3.75 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI + 3 IAEVI = IABVI + 3 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT010* TEST 10 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 10 RACVS = 0 IAAVI = IFIX(-RACVS) IABVI = INT(-RACVS) IADVI = IAAVI - 0 IAEVI = IABVI - 0 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT011* TEST 011 IFIX, INT USED IN AN ARITHMETIC EXPRESSION IVTNUM = 011 RAAVS = 3.75 IAFVI = 3 IAAVI = 25 + IAFVI * IFIX(RAAVS) IABVI = 25 + IAFVI * INT(RAAVS) IADVI = IAAVI - 34 IAEVI = IABVI - 34 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT012* TEST 12 AN ARITHMETIC EXPRESSION PRESENTED TO IFIX, INT IVTNUM = 12 RAAVS = 25.5 RABVS = 12.25 IAAVI = IFIX(RAAVS - RABVS) IABVI = INT(RAAVS - RABVS) IADVI = IAAVI - 13 IAEVI = IABVI - 13 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT013* TEST 13 COMPARE AUTOMATIC TYPE CONVERSION TO EXPLICIT IVTNUM = 13 RAAVS = 11.75 RABVS = 12.625 IAAVI = IFIX(RAAVS + RABVS) IABVI = INT(RAAVS + RABVS) IACVI = RAAVS + RABVS IADVI = IAAVI - IACVI IAEVI = IABVI - IACVI WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI CT014* TEST 14 ARGUMENT OF LOW MAGNITUDE IVTNUM = 14 RACVS = -3.05923E-33 IAAVI = IFIX(RACVS) IABVI = INT(RACVS) IADVI = IAAVI - 0 IAEVI = IABVI - 0 WRITE(NUVI,15003) IVTNUM, IADVI, IAEVI C***** C***** IVINSP = 14 CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 150 STOP END *END-OF,FM353 FM354.f 481036248 170 2 100666 14377 ` *HEADER,FORTR,FM354 *FILES1,FORTR,FM354,X C*********************************************************************** C***** FORTRAN 77 C***** FM354 XREAL - (152) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTIONS FLOAT AND REAL 15.3 C***** (CONVERSION FROM INTEGER TO REAL) (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 14 ZPROG = 'FM354' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 152 WRITE (NUVI,15201) 15201 FORMAT (1H , // 2X,35HXREAL - (152) INTRINSIC FUNCTIONS--//17X, 1 29HFLOAT, REAL (TYPE CONVERSION)// 2X, 2 18HSUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF FLOAT C***** WRITE(NUVI, 15204) 15204 FORMAT (/ 8X, 13HTEST OF FLOAT) CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 IBCVI = 0 RBAVS = FLOAT(IBCVI) IF (RBAVS + 0.00005) 20010, 10010, 40010 40010 IF (RBAVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0011 CONTINUE CT002* TEST 2 A POSITIVE INTEGER IVTNUM = 2 IBCVI = 3 RBAVS = FLOAT(IBCVI) IF (RBAVS - 2.9998) 20020, 10020, 40020 40020 IF (RBAVS - 3.0002) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0021 CONTINUE CT003* TEST 3 A NEGATIVE INTEGER IVTNUM = 3 IBCVI = -3 RBAVS = FLOAT(IBCVI) IF (RBAVS + 3.0002) 20030, 10030, 40030 40030 IF (RBAVS + 2.9998) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = -3.0 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0031 CONTINUE CT004* TEST 4 A ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 4 IBCVI = 0 RBAVS = FLOAT(-IBCVI) IF (RBAVS + 0.00005) 20040, 10040, 40040 40040 IF (RBAVS - 0.00005) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0041 CONTINUE CT005* TEST 5 FLOAT USED IN AN ARITHMETIC EXPRESSION IVTNUM = 5 RBFVS = -3.0 IBCVI = 3 RBAVS = 16.1875 + RBFVS/FLOAT(IBCVI) IF (RBAVS - 15.186) 20050, 10050, 40050 40050 IF (RBAVS - 15.189) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 15.1875 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0051 CONTINUE CT006* TEST 6 AN ARITHMETIC EXPRESSION PRESENTED TO FLOAT IVTNUM = 6 IBAVI = -7 IBBVI = 27 RBAVS = FLOAT(IBAVI - IBBVI * 2) IF (RBAVS + 61.003) 20060, 10060, 40060 40060 IF (RBAVS + 60.997) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -61.0 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0061 CONTINUE CT007* TEST 7 COMPARE AUTOMATIC TYPE CONVERSION TO EXPLICIT IVTNUM = 7 IBAVI = 2 IBBVI = 10 RBAVS = FLOAT(IBBVI ** IBAVI) IF (RBAVS - 99.995) 20070, 10070, 40070 40070 IF (RBAVS - 100.01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 100.0 WRITE(NUVI, 80012) IVTNUM, RBAVS, RVCORR 0071 CONTINUE C***** C***** TEST OF REAL C***** WRITE(NUVI, 15202) 15202 FORMAT (/ 08X, 12HTEST OF REAL) CT008* TEST 8 THE VALUE ZERO IVTNUM = 8 IBCVI = 0 RBBVS = REAL(IBCVI) IF (RBBVS + 0.00005) 20080, 10080, 40080 40080 IF (RBBVS - 0.00005) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0081 CONTINUE CT009* TEST 9 A POSITIVE INTEGER IVTNUM = 9 IBCVI = 3 RBBVS = REAL(IBCVI) IF (RBBVS - 2.9998) 20090, 10090, 40090 40090 IF (RBBVS - 3.0002) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0091 CONTINUE CT010* TEST 10 A NEGATIVE INTEGER IVTNUM = 10 IBCVI = -3 RBBVS = REAL(IBCVI) IF (RBBVS + 3.0002) 20100, 10100, 40100 40100 IF (RBBVS + 2.9998) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = -3.0 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0101 CONTINUE CT011* TEST 11 A ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 11 IBCVI = 0 RBBVS = REAL(-IBCVI) IF (RBBVS + 0.00005) 20110, 10110, 40110 40110 IF (RBBVS - 0.00005) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0111 CONTINUE CT012* TEST 12 REAL USED IN AN ARITHMETIC EXPRESSION IVTNUM = 12 RBFVS = -3.0 IBCVI = 3 RBBVS = 16.1875 + RBFVS/REAL(IBCVI) IF (RBBVS - 15.186) 20120, 10120, 40120 40120 IF (RBBVS - 15.189) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 15.1875 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0121 CONTINUE CT013* TEST 13 AN ARITHMETIC EXPRESSION PRESENTED TO REAL IVTNUM = 13 IBAVI = -7 IBBVI = 27 RBBVS = REAL(IBAVI - IBBVI * 2) IF (RBBVS + 61.003) 20130, 10130, 40130 40130 IF (RBBVS + 60.997) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 61.0 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0131 CONTINUE CT014* TEST 14 COMPARE AUTOMATIC TYPE CONVERSION TO EXPLICIT IVTNUM = 14 IBAVI = 2 IBBVI = 10 RBBVS = REAL(IBBVI ** IBAVI) IF (RBBVS - 99.995) 20140, 10140, 40140 40140 IF (RBBVS - 100.01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 100.0 WRITE(NUVI, 80012) IVTNUM, RBBVS, RVCORR 0141 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 152 STOP END *END-OF,FM354 FM355.f 481036253 170 2 100666 29785 ` *HEADER,FORTR,FM355 *FILES1,FORTR,FM355,X C*********************************************************************** C***** FORTRAN 77 C***** FM355 XAINT - (154) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTIONS AINT, ANINT, NINT 15.3 C***** TRUNCATION (SIGN OF A * LARGEST INTEGER LE ABS(A) ) (TABLE 5) C***** C***** GENERAL COMMENTS C***** FLOAT FUNCTION ASSUMED WORKING C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 48 ZPROG = 'FM355' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 154 WRITE (NUVI,15401) 15401 FORMAT (1H , // 2X,35HXAINT - (154) INTRINSIC FUNCTIONS--//10X, 1 36HAINT, ANINT, NINT (TYPE CONVERSION) // 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF AINT C***** WRITE(NUVI, 15402) 15402 FORMAT (/ 8X, 12HTEST OF AINT) CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 RCBVS = 0.0 RCAVS = AINT(RCBVS) IF (RCAVS + 0.00005) 20010, 10010, 40010 40010 IF (RCAVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0011 CONTINUE CT002* TEST 2 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 2 RCDVS = -0.0 RCAVS = AINT(RCBVS) IF (RCAVS + 0.00005) 20020, 10020, 40020 40020 IF (RCAVS - 0.00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = -0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0021 CONTINUE CT003* TEST 3 A VALUE IN (0,1) IVTNUM = 3 RCDVS = 0.375 RCAVS = AINT(RCBVS) IF (RCAVS + 0.00005) 20030, 10030, 40030 40030 IF (RCAVS - 0.00005) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0031 CONTINUE CT004* TEST 4 THE VALUE 1 IVTNUM = 4 RCBVS = FLOAT(1) RCAVS = AINT(RCBVS) IF (RCAVS - 0.99995) 20040, 10040, 40040 40040 IF (RCAVS - 1.0001) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0041 CONTINUE CT005* TEST 5 AN INTEGRAL VALUE OTHER THAN 0, 1 IVTNUM = 5 RCBVS = FLOAT(6) RCAVS = AINT(RCBVS) IF (RCAVS - 5.9997) 20050, 10050, 40050 40050 IF (RCAVS - 6.0003) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 6.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0051 CONTINUE CT006* TEST 6 A VALUE IN (X,X+1) IVTNUM = 6 RCBVS = 3.75 RCAVS = AINT(RCBVS) IF (RCAVS - 2.9998) 20060, 10060, 40060 40060 IF (RCAVS - 3.0002) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0061 CONTINUE CT007* TEST 7 A NEGATIVE VALUE WITH MAGNITUDE IN (0,1) IVTNUM = 7 RCBVS = -0.375 RCAVS = AINT(RCBVS) IF (RCAVS + 0.00005) 20070, 10070, 40070 40070 IF (RCAVS - 0.00005) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0071 CONTINUE CT008* TEST 8 THE VALUE -1 IVTNUM = 8 RCBVS = FLOAT(-1) RCAVS = AINT(RCBVS) IF (RCAVS + 1.0001) 20080, 10080, 40080 40080 IF (RCAVS + 0.99995) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0081 CONTINUE CT009* TEST 9 A NEGATIVE INTEGRAL VALUE IVTNUM = 9 RCBVS = FLOAT(-6) RCAVS = AINT(RCBVS) IF (RCAVS + 6.0003) 20090, 10090, 40090 40090 IF (RCAVS + 5.9997) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -6.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0091 CONTINUE CT010* TEST 10 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+1) IVTNUM = 10 RCBVS = -3.75 RCAVS = AINT(RCBVS) IF (RCAVS + 3.0002) 20100, 10100, 40100 40100 IF (RCAVS + 2.9998) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = -3.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0101 CONTINUE CT011* TEST 11 AN ARITHMETIC EXPRESSION PRESENTED TO AINT IVTNUM = 11 RCBVS = 3.25 RCDVS = 3.0 RCAVS = AINT(FLOAT(25) + RCDVS * RCBVS) IF (RCAVS - 33.998) 20110, 10110, 40110 40110 IF (RCAVS - 34.002) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 34.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0111 CONTINUE CT012* TEST 12 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 12 RCBVS = 3.7521E-36 RCAVS = AINT(RCBVS) IF (RCAVS + 0.00005) 20120, 10120, 40120 40120 IF (RCAVS - 0.00005) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0121 CONTINUE C***** WRITE(NUVI, 90002) WRITE(NUVI, 90013) WRITE(NUVI, 90014) C***** C***** TEST OF ANINT C***** WRITE(NUVI, 15404) 15404 FORMAT (/ 08X, 13HTEST OF ANINT) C***** CT013* TEST 13 THE VALUE ZERO IVTNUM = 13 RCBVS = 0.0 RCAVS = ANINT(RCBVS) IF (RCAVS + 0.00005) 20130, 10130, 40130 40130 IF (RCAVS - 0.00005) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0131 CONTINUE CT014* TEST 14 THE VALUE ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 14 RCDVS = 0.0 RCAVS = ANINT(-RCBVS) IF (RCAVS + 0.00005) 20140, 10140, 40140 40140 IF (RCAVS - 0.00005) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0141 CONTINUE CT015* TEST 15 A VALUE IN (0,.5) IVTNUM = 15 RCBVS = 0.25 RCAVS = ANINT(RCBVS) IF (RCAVS + 0.00005) 20150, 10150, 40150 40150 IF (RCAVS - 0.00005) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0151 CONTINUE CT016* TEST 16 THE VALUE 0.5 IVTNUM = 16 RCBVS = FLOAT(1) / FLOAT(2) RCAVS = ANINT(RCBVS) IF (RCAVS - 0.99995) 20160, 10160, 40160 40160 IF (RCAVS - 1.0001) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0161 CONTINUE CT017* TEST 17 A VALUE IN (.5,1) IVTNUM = 17 RCBVS = 0.75 RCAVS = ANINT(RCBVS) IF (RCAVS - 0.99995) 20170, 10170, 40170 40170 IF (RCAVS - 1.0001) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0171 CONTINUE CT018* TEST 18 AN INTEGRAL VALUE OTHER THAN 0,1 IVTNUM = 18 RCBVS = FLOAT(5) RCAVS = ANINT(RCBVS) IF (RCAVS - 4.9997) 20180, 10180, 40180 40180 IF (RCAVS - 5.0003) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = 5.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0181 CONTINUE CT019* TEST 19 A VALUE IN (X,X+.5) IVTNUM = 19 RCBVS = 10.46875 RCAVS = ANINT(RCBVS) IF (RCAVS - 9.9995) 20190, 10190, 40190 40190 IF (RCAVS - 10.001) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 RVCORR = 10.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0191 CONTINUE CT020* TEST 20 A VALUE WITH FRACTIONAL PART OF 0.5 IVTNUM = 20 RCBVS = FLOAT(16) - FLOAT(1) / FLOAT(2) RCAVS = ANINT(RCBVS) IF (RCAVS - 15.999) 20200, 10200, 40200 40200 IF (RCAVS - 16.001) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 RVCORR = 16.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0201 CONTINUE CT021* TEST 21 A VALUE IN (X+.5,X+1) IVTNUM = 21 RCBVS = 27.96875 RCAVS = ANINT(RCBVS) IF (RCAVS - 27.998) 20210, 10210, 40210 40210 IF (RCAVS - 28.002) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 RVCORR = 28.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0211 CONTINUE CT022* TEST 22 A NEGATIVE VALUE WITH MAGNITUDE IN (0,.5) IVTNUM = 22 RCBVS = -0.25 RCAVS = ANINT(RCBVS) IF (RCAVS + 0.00005) 20220, 10220, 40220 40220 IF (RCAVS - 0.00005) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 RVCORR = -0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0221 CONTINUE CT023* TEST 23 THE VALUE -0.5 IVTNUM = 23 RCBVS = FLOAT(-1) / FLOAT(2) RCAVS = ANINT(RCBVS) IF (RCAVS + 1.0001) 20230, 10230, 40230 40230 IF (RCAVS + 0.99995) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 RVCORR = -1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0231 CONTINUE CT024* TEST 24 A NEGATIVE VALUE WITH MAGNITUDE IN (.5,1) IVTNUM = 24 RCBVS = -0.75 RCAVS = ANINT(RCBVS) IF (RCAVS + 1.0001) 20240, 10240, 40240 40240 IF (RCAVS + 0.99995) 10240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 RVCORR = -1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0241 CONTINUE CT025* TEST 25 A NEGATIVE INTEGRAL VALUE IVTNUM = 25 RCBVS = FLOAT(-5) RCAVS = ANINT(RCBVS) IF (RCAVS + 5.0003) 20250, 10250, 40250 40250 IF (RCAVS + 4.9997) 10250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 RVCORR = -5.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0251 CONTINUE CT026* TEST 26 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+.5) IVTNUM = 26 RCBVS = -10.46875 RCAVS = ANINT(RCBVS) IF (RCAVS + 10.001) 20260, 10260, 40260 40260 IF (RCAVS + 9.9995) 10260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 RVCORR = -10.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0261 CONTINUE CT027* TEST 27 A NEGATIVE VALUE WITH FRACTIONAL COMPONENT .5 IVTNUM = 27 RCBVS = FLOAT(-15) - FLOAT(1) / FLOAT(2) RCAVS = ANINT(RCBVS) IF (RCAVS + 16.001) 20270, 10270, 40270 40270 IF (RCAVS + 15.999) 10270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 RVCORR = -16.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0271 CONTINUE CT028* TEST 28 A NEGATIVE VALUE WITH MAGNITUDE IN (X+.5,X+1) IVTNUM = 28 RCBVS = -27.96875 RCAVS = ANINT(RCBVS) IF (RCAVS + 28.002) 20280, 10280, 40280 40280 IF (RCAVS + 27.998) 10280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 RVCORR = -28.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0281 CONTINUE CT029* TEST 29 AN ARITHMETIC EXPRESSION PRESENTED TO ANINT IVTNUM = 29 RCDVS = 8.00 RCBVS = 7.25 RCAVS = ANINT(RCDVS - RCBVS) IF (RCAVS - 0.99995) 20290, 10290, 40290 40290 IF (RCAVS - 1.0001) 10290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0291 CONTINUE CT030* TEST 30 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 30 RCBVS = -5.9876E-35 RCAVS = ANINT(RCBVS) IF (RCAVS + 0.00005) 20300, 10300, 40300 40300 IF (RCAVS - 0.00005) 10300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RCAVS, RVCORR 0301 CONTINUE C***** WRITE(NUVI, 90002) WRITE(NUVI, 90013) WRITE(NUVI, 90014) C***** C***** TEST OF NINT C***** WRITE(NUVI, 15405) 15405 FORMAT (/ 8X, 12HTEST OF NINT) C***** CT031* TEST 31 THE VALUE ZERO IVTNUM = 31 RCBVS = 0.0 ICAVI = NINT(RCBVS) IF (ICAVI - 0) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0311 CONTINUE CT032* TEST 32 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 32 RCDVS = 0.0 ICAVI = NINT(-RCDVS) IF (ICAVI - 0) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0321 CONTINUE CT033* TEST 33 A VALUE IN (0,.5) IVTNUM = 33 RCBVS = 0.25 ICAVI = NINT(RCBVS) IF (ICAVI - 0) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0331 CONTINUE CT034* TEST 34 THE VALUE 0.5 IVTNUM = 34 RCBVS = FLOAT(1) / FLOAT(2) ICAVI = NINT(RCBVS) IF (ICAVI - 1) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0341 CONTINUE CT035* TEST 35 A VALUE IN (.5,1) IVTNUM = 35 RCBVS = 0.75 ICAVI = NINT(RCBVS) IF (ICAVI - 1) 20350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0351 CONTINUE CT036* TEST 36 AN INTEGRAL VALUE OTHER THAN 0, 1 IVTNUM = 36 RCBVS = FLOAT(5) ICAVI = NINT(RCBVS) IF (ICAVI - 5) 20360, 10360, 20360 10360 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0361 20360 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0361 CONTINUE CT037* TEST 37 A VALUE IN (X,X+.5) IVTNUM = 37 RCBVS = 10.46875 ICAVI = NINT(RCBVS) IF (ICAVI - 10) 20370, 10370, 20370 10370 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0371 20370 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0371 CONTINUE CT038* TEST 38 A VALUE WITH FRACTIONAL PART OF 0.5 IVTNUM = 38 RCBVS = FLOAT(15) + FLOAT(1) / FLOAT(2) ICAVI = NINT(RCBVS) IF (ICAVI - 16) 20380, 10380, 20380 10380 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0381 20380 IVFAIL = IVFAIL + 1 IVCORR = 16 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0381 CONTINUE CT039* TEST 39 A VALUE IN (X+.5,X+1) IVTNUM = 39 RCBVS = 27.96875 ICAVI = NINT(RCBVS) IF (ICAVI - 28) 20390, 10390, 20390 10390 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0391 20390 IVFAIL = IVFAIL + 1 IVCORR = 28 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0391 CONTINUE CT040* TEST 40 A NEGATIVE VALUE WITH MAGNITUDE IN (0.,5) IVTNUM = 40 RCBVS = -0.25 ICAVI = NINT(RCBVS) IF (ICAVI - 0) 20400, 10400, 20400 10400 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0401 20400 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0401 CONTINUE CT041* TEST 41 THE VALUE -0.5 IVTNUM = 41 RCBVS = FLOAT(-1) / FLOAT(2) ICAVI = NINT(RCBVS) IF (ICAVI + 1) 20410, 10410, 20410 10410 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0411 20410 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0411 CONTINUE CT042* TEST 42 A NEGATIVE VALUE WITH MAGNITUDE IN (.5,1) IVTNUM = 42 RCBVS = -0.75 ICAVI = NINT(RCBVS) IF (ICAVI + 1) 20420, 10420, 20420 10420 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0421 20420 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0421 CONTINUE CT043* TEST 43 A NEGATIVE INTEGRAL VALUE IVTNUM = 43 RCBVS = FLOAT(-5) ICAVI = NINT(RCBVS) IF (ICAVI + 5) 20430, 10430, 20430 10430 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0431 20430 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0431 CONTINUE CT044* TEST 44 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+.5) IVTNUM = 44 RCBVS = -10.46875 ICAVI = NINT(RCBVS) IF (ICAVI + 10) 20440, 10440, 20440 10440 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0441 20440 IVFAIL = IVFAIL + 1 IVCORR = -10 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0441 CONTINUE CT045* TEST 45 A NEGATIVE VALUE WITH FRACTIONAL COMPONENT 0.5 S1 IVTNUM = 45 RCBVS = FLOAT(-15) - FLOAT(1) / FLOAT(2) ICAVI = NINT(RCBVS) IF (ICAVI + 16) 20450, 10450, 20450 10450 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0451 20450 IVFAIL = IVFAIL + 1 IVCORR = -16 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0451 CONTINUE CT046* TEST 46 A NEGATIVE VALUE WITH MAGNITUDE IN (X+.5,X+1) S1 IVTNUM = 46 RCBVS = -27.96875 ICAVI = NINT(RCBVS) IF (ICAVI + 28) 20460, 10460, 20460 10460 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0461 20460 IVFAIL = IVFAIL + 1 IVCORR = -28 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0461 CONTINUE CT047* TEST 47 AN ARITHMETIC EXPRESSION PRESENTED TO NINT S1 IVTNUM = 47 RCDVS = 8.00 RCEVS = 7.25 ICAVI = NINT(RCDVS - RCEVS) IF (ICAVI - 1) 20470, 10470, 20470 10470 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0471 20470 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0471 CONTINUE CT048* TEST 48 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 48 RCBVS = -5.9876E-33 ICAVI = NINT(RCBVS) IF (ICAVI - 0) 20480, 10480, 20480 10480 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0481 20480 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ICAVI, IVCORR 0481 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 154 STOP END *END-OF,FM355 FM356.f 481036256 170 2 100666 12083 ` *HEADER,FORTR,FM356 *FILES1,FORTR,FM356,X C*********************************************************************** C***** FORTRAN 77 C***** FM356 XABS - (156) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION ABS,IABS (ABSOLUTE VALUE) 15.3 C***** (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 10 ZPROG = 'FM356' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 156 WRITE(NUVI,15601) 15601 FORMAT( 1H , // 36H XABS - (156) INTRINSIC FUNCTIONS--// 11X, 1 26HABS, IABS (ABSOLUTE VALUE)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF ABS C***** WRITE(NUVI, 15602) 15602 FORMAT (/ 8X, 11HTEST OF ABS) CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 RDDVS = 0.0 RDAVS = ABS(RDDVS) IF (RDAVS + .00005) 20010, 10010, 40010 40010 IF (RDAVS - .00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 0011 CONTINUE CT002* TEST 2 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 2 RDDVS = 0.0 RDAVS = ABS(-RDDVS) IF (RDAVS + .00005) 20020, 10020, 40020 40020 IF (RDAVS - .00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 0021 CONTINUE CT003* TEST 3 A POSITIVE NON-INTEGRAL VALUE IVTNUM = 3 RDDVS = 35.875 RDAVS = ABS(RDDVS) IF (RDAVS - 35.873) 20030, 10030, 40030 40030 IF (RDAVS - 35.877) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 35.875 WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 0031 CONTINUE CT004* TEST 4 A NEGATIVE NON-INTEGRAL VALUE IVTNUM = 4 RDBVS = -35.875 RDAVS = ABS(RDBVS) IF (RDAVS - 35.873) 20040, 10040, 40040 40040 IF (RDAVS - 35.877) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 35.875 WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 0041 CONTINUE CT005* TEST 5 ARITHMETIC EXPRESSION PRESENTED TO FUNCTION IVTNUM = 5 RDDVS = 2.625 RDEVS = 3.0 RDAVS = ABS(-RDDVS - RDEVS ** 3) IF (RDAVS - 29.623) 20050, 10050, 40050 40050 IF (RDAVS - 29.627) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 29.625 WRITE (NUVI, 80012) IVTNUM, RDAVS, RVCORR 0051 CONTINUE C***** C***** TEST OF IABS C***** WRITE(NUVI, 15604) 15604 FORMAT (/ 8X, 12HTEST OF IABS) C***** CT006* TEST 6 THE VALUE ZERO IVTNUM = 6 IDDVI = 0 IDAVI = IABS(IDDVI) IF (IDAVI - 0) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 0061 CONTINUE CT007* TEST 7 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 7 IDDVI = 0 IDAVI = IABS(-IDDVI) IF (IDAVI - 0) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 0071 CONTINUE CT008* TEST 8 A POSITIVE INTEGER IVTNUM = 8 IDBVI = 73 IDAVI = IABS(IDBVI) IF (IDAVI - 73) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 IVCORR = 73 WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 0081 CONTINUE CT009* TEST 9 A NEGATIVE INTEGER IVTNUM = 9 IDDVI = -10 IDAVI = IABS(IDDVI) IF (IDAVI - 10) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 0091 CONTINUE CT010* TEST 10 ARITHMETIC EXPRESSION PRESENTED TO FUNCTION IVTNUM = 10 IDDVI = -3 IDAVI = IABS(IDDVI ** 3) IF (IDAVI - 27) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (NUVI, 80010) IVTNUM, IDAVI, IVCORR 0101 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 156 STOP END *END-OF,FM356 FM357.f 481036260 170 2 100666 18009 ` *HEADER,FORTR,FM357 *FILES1,FORTR,FM357,X C*********************************************************************** C***** FORTRAN 77 C***** FM357 XAMOD - (159) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTIONS AMOD AND MOD - REMAINDERING, 15.3 C***** WHICH IS DEFINED AS A1-(A1/A2)A2 WHERE (X) IS AN (TABLE 5) C***** INTEGER WHOSE MAGNITUDE IS LE ABS(X) AND WHOSE SIGN C***** IS THE SAME AS X. C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 22 ZPROG = 'FM357' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 159 WRITTEN WRITE (NUVI,15901) 15901 FORMAT (1H , //, 2X,35HXAMOD - (159) INTRINSIC FUNCTION-- //16X, 1 24HAMOD, MOD (REMAINDERING)//19H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF AMOD C***** WRITE(NUVI, 15902) 15902 FORMAT (/ 8X, 12HTEST OF AMOD) C***** CT001* TEST 1 FIRST VALUE ZERO, SECOND NON-ZERO IVTNUM = 1 REBVS = 0.0 REDVS = 4.5 REAVS = AMOD(REBVS, REDVS) IF (REAVS + 0.00005) 20010, 10010, 40010 40010 IF (REAVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI,80012) IVTNUM, REAVS, RVCORR 0011 CONTINUE CT002* TEST 2 BOTH VALUES EQUAL IVTNUM = 2 REBVS = 3.5 REDVS = 3.5 REAVS = AMOD(REBVS, REDVS) IF (REAVS + 0.00005) 20020, 10020, 40020 40020 IF (REAVS - 0.00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0021 CONTINUE CT003* TEST 3 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 3 REBVS = -10.9 REDVS = -3.3 REAVS = AMOD(REBVS, REDVS) IF (REAVS + 1.0001) 20030, 10030, 40030 40030 IF (REAVS + 0.99995) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = -1.0 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0031 CONTINUE CT004* TEST 4 FIRST MAGNITUDE LARGER, MULTIPLE OF SECOND IVTNUM = 4 REDVS = 1.5 REBVS = 1.5 + REDVS + 1.5 REAVS = AMOD(REBVS, REDVS) IF (REAVS + 0.00005) 20040, 10040, 40040 40040 IF (REAVS - 0.00005) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0041 CONTINUE CT005* TEST 5 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 5 REBVS = 7.625 REDVS = 2.125 REAVS = AMOD(REBVS, REDVS) IF (REAVS - 1.2499) 20050, 10050, 40050 40050 IF (REAVS - 1.2501) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.25 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE ZERO, SECOND NEGATIVE IVTNUM = 6 REBVS = 0.0 REDVS = -4.5 REAVS = AMOD(REBVS, REDVS) IF (REAVS + 0.00005) 20060, 10060, 40060 40060 IF (REAVS - 0.00005) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0061 CONTINUE CT007* TEST 7 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 7 REBVS = -3.5 REDVS = -3.5 REAVS = AMOD(REBVS, REDVS) IF (REAVS + 0.00005) 20070, 10070, 40070 40070 IF (REAVS - 0.00005) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0071 CONTINUE CT008* TEST 8 FIRST VALUE NEGATIVE, SECOND POSITIVE, MULTIPLE IVTNUM = 8 REBVS = 1.5 REDVS = -(1.5 + REDVS + 1.5) REAVS = AMOD(-REBVS, -REDVS) IF (REAVS + 0.00005) 20080, 10080, 40080 40080 IF (REAVS - 0.00005) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0081 CONTINUE CT009* TEST 9 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 9 REBVS = 10.5 REDVS = -3.3 REAVS = AMOD(REBVS, REDVS) IF (REAVS - 0.59997) 20090, 10090, 40090 40090 IF (REAVS - 0.60003) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.6 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0091 CONTINUE CT010* TEST 10 PAIR OF ARITHMETIC EXPRESSIONS USED AS ARGUMENT IVTNUM = 10 RECVS = 7.625 REDVS = 2.125 REFVS = 2.0 REAVS = AMOD(RECVS - REFVS, REDVS + REFVS) IF (REAVS - 1.4999) 20100, 10100, 40100 40100 IF (REAVS - 1.5001) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 1.5 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0101 CONTINUE CT011* TEST 11 TEST LOW AND HIGH MAGNITUDE ARGUMENTS IVTNUM = 11 RECVS = 1.0E-16 REDVS = 1.0E+16 REAVS = AMOD(RECVS, REDVS) IF (REAVS - 0.99995E-16) 20110, 10110, 40110 40110 IF (REAVS - 1.0001E-16) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 1.0E-16 WRITE(NUVI, 80012) IVTNUM, REAVS, RVCORR 0111 CONTINUE C***** C***** TEST OF MOD C***** WRITE(NUVI, 15904) 15904 FORMAT (/ 8X, 11HTEST OF MOD) C***** CT012* TEST 12 FIRST VALUE ZERO, SECOND NON-ZERO IVTNUM = 12 IEBVI = 0 IEDVI = 4 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0121 CONTINUE CT013* TEST 13 BOTH VALUES EQUAL IVTNUM = 13 IEBVI = 3 IEDVI = 3 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0131 CONTINUE CT014* TEST 14 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 14 IEBVI = -10 IEDVI = -3 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI + 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0141 CONTINUE CT015* TEST 15 FIRST MAGNITUDE LARGER, MULTIPLE OF SECOND IVTNUM = 15 IEBVI = 9 IEDVI = 3 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0151 CONTINUE CT016* TEST 16 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 16 IEBVI = 7 IEDVI = 2 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 1) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0161 CONTINUE CT017* TEST 17 FIRST VALUE ZERO, SECOND NEGATIVE IVTNUM = 17 IEBVI = 0 IEDVI = -4 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0171 CONTINUE CT018* TEST 18 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 18 IEBVI = -3 IEDVI = -3 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0181 CONTINUE CT019* TEST 19 FIRST MAGNITUDE LARGER, MULTIPLE, BOTH NEGATIVE IVTNUM = 19 IEBVI = -9 IEDVI = -3 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0191 CONTINUE CT020* TEST 20 FIRST NUMBER NEGATIVE, SECOND POSITIVE, MULTIPLE IVTNUM = 20 IEBVI = -9 IEDVI = 3 IEAVI = MOD(IEBVI, IEDVI) IF (IEAVI - 0) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0201 CONTINUE CT021* TEST 21 FIRST VALUE ZERO PRECEDED BY MINUS SIGN IVTNUM = 21 IEBVI = 0 IEDVI = 4 IEAVI = MOD(-IEBVI, IEDVI) IF (IEAVI - 0) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0211 CONTINUE CT022* TEST 22 PAIR OF ARITHMETIC EXPRESSIONS USED AS ARGUMENT IVTNUM = 22 IEDVI = 10 IEEVI = 3 IEFVI = 2 IEAVI = MOD(IEDVI - IEFVI, IEEVI + IEFVI) IF (IEAVI - 3) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, IEAVI, IVCORR 0221 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 159 STOP END *END-OF,FM357 FM359.f 481036265 170 2 100666 17885 ` *HEADER,FORTR,FM359 *FILES1,FORTR,FM359,X C*********************************************************************** C***** FORTRAN 77 C***** FM359 XSIGN - (161) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION - SIGN, ISIGN - (TRANSFER 15.3 C***** OF SIGN - SIGN OF A2 TIMES ABS(A1) ) (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 22 ZPROG = 'FM359' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 161 WRITE (NUVI,16101) 16101 FORMAT(1H , // 2X,36HXSIGN - (161) INTRINSIC FUNCTIONS-- //12X, 1 30HSIGN, ISIGN (TRANSFER OF SIGN)// 2 2X,19HSUBSET REF. - 15.3 ) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF SIGN C***** WRITE(NUVI, 16102) 16102 FORMAT (/ 8X, 12HTEST OF SIGN) CT001* TEST 1 BOTH VALUES ZERO IVTNUM = 1 RFBVS = 0.0 RFAVS = SIGN(RFBVS, RFBVS) IF (RFAVS + 0.00005) 20010, 10010, 40010 40010 IF (RFAVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0011 CONTINUE CT002* TEST 2 FIRST VALUE POSITIVE, SECOND ZERO IVTNUM = 2 RFBVS = 1.5 RFDVS = 0.0 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS - 1.4999) 20020, 10020, 40020 40020 IF (RFAVS - 1.5001) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 1.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0021 CONTINUE CT003* TEST 3 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 3 RFBVS = -1.5 RFDVS = 0.0 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS - 1.4999) 20030, 10030, 40030 40030 IF (RFAVS - 1.5001) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 1.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0031 CONTINUE CT004* TEST 4 FIRST VALUE ZERO, SECOND POSITIVE IVTNUM = 4 RFBVS = 0.0 RFDVS = 2.5 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS + 0.00005) 20040, 10040, 40040 40040 IF (RFAVS - 0.00005) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0041 CONTINUE CT005* TEST 5 BOTH VALUES POSITIVE IVTNUM = 5 RFBVS = 1.5 RFDVS = 2.5 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS - 1.4999) 20050, 10050, 40050 40050 IF (RFAVS - 1.5001) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE NEGATIVE, SECOND POSITIVE IVTNUM = 6 RFBVS = -1.5 RFDVS = 2.5 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS - 1.4999) 20060, 10060, 40060 40060 IF (RFAVS - 1.5001) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 1.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0061 CONTINUE CT007* TEST 7 FIRST VALUE ZERO, SECOND NEGATIVE IVTNUM = 7 RFBVS = 0.0 RFDVS = -2.5 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS + 0.00005) 20070, 10070, 40070 40070 IF (RFAVS - 0.00005) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0071 CONTINUE CT008* TEST 8 BOTH VALUES NEGATIVE IVTNUM = 8 RFBVS = -1.5 RFDVS = -2.5 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS + 1.5001) 20080, 10080, 40080 40080 IF (RFAVS + 1.4999) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -1.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0081 CONTINUE CT009* TEST 9 FIRST VALUE POSITIVE, SECOND NEGATIVE IVTNUM = 9 RFBVS = 1.5 RFDVS = -2.5 RFAVS = SIGN(RFBVS, RFDVS) IF (RFAVS + 1.5001) 20090, 10090, 40090 40090 IF (RFAVS + 1.4999) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -1.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0091 CONTINUE CT010* TEST 10 BOTH VALUES ZERO, 1ST ZERO PRECEDED BY A MINUS SIGN IVTNUM = 10 RFDVS = 0.0 RFEVS = 0.0 RFAVS = SIGN(-RFDVS, RFEVS) IF (RFAVS + 0.0005) 20100, 10100, 40100 40100 IF (RFAVS - 0.00005) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0101 CONTINUE CT011* TEST 11 ARITHMETIC EXPRESSIONS PRESENTED TO SIGN IVTNUM = 11 RFDVS = 1.5 RFEVS = 2.0 RFAVS = SIGN(RFDVS + RFEVS, RFDVS - RFEVS) IF (RFAVS + 3.5002) 20110, 10110, 40110 40110 IF (RFAVS + 3.4998) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = -3.5 WRITE (NUVI, 80012) IVTNUM, RFAVS, RVCORR 0111 CONTINUE C***** C***** TEST OF ISIGN C***** WRITE(NUVI, 16104) 16104 FORMAT (/ 8X, 13HTEST OF ISIGN) C***** CT012* TEST 12 BOTH VALUES ZERO IVTNUM = 12 IFBVI = 0 IFDVI = 0 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 0) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0121 CONTINUE CT013* TEST 13 FIRST VALUE POSITIVE, SECOND ZERO IVTNUM = 13 IFBVI = 2 IFDVI = 0 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 2) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0131 CONTINUE CT014* TEST 14 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 14 IFBVI = -2 IFDVI = 0 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 2) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0141 CONTINUE CT015* TEST 15 FIRST VALUE ZERO, SECOND POSITIVE IVTNUM = 15 IFBVI = 0 IFDVI = 5 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 0) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0151 CONTINUE CT016* TEST 16 BOTH VALUES POSITIVE IVTNUM = 16 IFBVI = 2 IFDVI = 5 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 2) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0161 CONTINUE CT017* TEST 17 FIRST VALUE NEGATIVE, SECOND POSITIVE IVTNUM = 17 IFBVI = -2 IFDVI = 5 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 2) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0171 CONTINUE CT018* TEST 18 FIRST VALUE ZERO, SECOND NEGATIVE IVTNUM = 18 IFBVI = 0 IFDVI = -5 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI - 0) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0181 CONTINUE CT019* TEST 19 BOTH VALUES NEGATIVE IVTNUM = 19 IFBVI = -2 IFDVI = -5 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI + 2) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0191 CONTINUE CT020* TEST 20 FIRST VALUE POSITIVE, SECOND NEGATIVE IVTNUM = 20 IFBVI = 2 IFDVI = -5 IFAVI = ISIGN(IFBVI, IFDVI) IF (IFAVI + 2) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0201 CONTINUE CT021* TEST 21 BOTH VALUES ZERO, 1ST ZERO PRECEDED BY A MINUS SIGN IVTNUM = 21 IFDVI = 0 IFEVI = 0 IFAVI = ISIGN(-IFDVI, IFEVI) IF (IFAVI - 0) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0211 CONTINUE CT022* TEST 22 ARITHMETIC EXPRESSIONS PRESENTED TO ISIGN IVTNUM = 22 IFDVI = 2 IFEVI = 3 IFAVI = ISIGN(IFDVI + IFEVI, IFDVI - IFEVI) IF (IFAVI + 5) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, IFAVI, IVCORR 0221 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 161 STOP END *END-OF,FM359 FM360.f 481036269 170 2 100666 14244 ` *HEADER,FORTR,FM360 *FILES1,FORTR,FM360,X C*********************************************************************** C***** FORTRAN 77 C***** FM360 XDIM - (163) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION DIM AND IDIM--POSITIVE 15.3 C***** DIFFERENCE, WHICH IS DEFINED AS A1 - MIN(A1,A2) (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 14 ZPROG = 'FM360' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 163 WRITE (NUVI,16301) 16301 FORMAT(1H , //,2X,35HXDIM - (163) INTRINSIC FUNCTIONS-- //12X, 1 31HDIM, IDIM (POSITIVE DIFFERENCE)// 2 2X,18HSUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF DIM C***** WRITE(NUVI, 16304) 16304 FORMAT (/ 8X, 11HTEST OF DIM) CT001* TEST 1 BOTH VALUES EQUAL IVTNUM = 1 RGBVS = 2.5 RGDVS = 2.5 RGAVS = DIM(RGBVS, RGDVS) IF (RGAVS + .00005) 20010, 10010, 40010 40010 IF (RGAVS - .00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0011 CONTINUE CT002* TEST 2 FIRST VALUE LESS THAN SECOND IVTNUM = 2 RGBVS = 2.5 RGDVS = 5.5 RGAVS = DIM(RGBVS, RGDVS) IF (RGAVS + .00005) 20020, 10020, 40020 40020 IF (RGAVS - .00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0021 CONTINUE CT003* TEST 3 FIRST VALUE GREATER THAN SECOND IVTNUM = 3 RGBVS = 5.5 RGDVS = 2.5 RGAVS = DIM(RGBVS, RGDVS) IF (RGAVS - 2.9998) 20030, 10030, 40030 40030 IF (RGAVS - 3.0002) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0031 CONTINUE CT004* TEST 4 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 4 RGBVS = -2.5 RGDVS = -2.5 RGAVS = DIM(RGBVS, RGDVS) IF (RGAVS + .00005) 20040, 10040, 40040 40040 IF (RGAVS - .00005) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0041 CONTINUE CT005* TEST 5 FIRST VALUE GREATER THAN SECOND, BOTH NEGATIVE IVTNUM = 5 RGBVS = -2.5 RGDVS = -5.5 RGAVS = DIM(RGBVS, RGDVS) IF (RGAVS - 2.9998) 20050, 10050, 40050 40050 IF (RGAVS - 3.0002) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE LESS THAN SECOND, BOTH NEGATIVE IVTNUM = 6 RGBVS = -5.5 RGDVS = -2.5 RGAVS = DIM(RGBVS, RGDVS) IF (RGAVS + .00005) 20060, 10060, 40060 40060 IF (RGAVS - .00005) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0061 CONTINUE CT007* TEST 7 EXPRESSIONS PRESENTED TO DIM IVTNUM = 7 RGDVS = 2.5 RGEVS = 1.25 RGAVS = DIM(RGDVS / RGEVS, RGDVS * RGEVS) IF (RGAVS + .00005) 20070, 10070, 40070 40070 IF (RGAVS - .00005) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RGAVS, RVCORR 0071 CONTINUE C***** C***** TEST OF IDIM C***** WRITE(NUVI, 16302) 16302 FORMAT (/ 08X, 12HTEST OF IDIM) CT008* TEST 8 BOTH VALUES EQUAL IVTNUM = 8 IGBVI = 2 IGDVI = 2 IGAVI = IDIM(IGBVI, IGDVI) IF (IGAVI - 0) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0081 CONTINUE CT009* TEST 9 FIRST VALUE LESS THAN SECOND IVTNUM = 9 IGBVI = 2 IGDVI = 5 IGAVI = IDIM(IGBVI, IGDVI) IF (IGAVI - 0) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0091 CONTINUE CT010* TEST 10 FIRST VALUE GREATER THAN SECOND IVTNUM = 10 IGBVI = 5 IGDVI = 2 IGAVI = IDIM(IGBVI, IGDVI) IF (IGAVI - 3) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0101 CONTINUE CT011* TEST 11 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 11 IGBVI = -2 IGDVI = -2 IGAVI = IDIM(IGBVI, IGDVI) IF (IGAVI - 0) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0111 CONTINUE CT012* TEST 12 FIRST VALUE GREATER THAN SECOND, BOTH NEGATIVE IVTNUM = 12 IGBVI = -2 IGDVI = -5 IGAVI = IDIM(IGBVI, IGDVI) IF (IGAVI - 3) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0121 CONTINUE CT013* TEST 13 FIRST VALUE LESS THAN SECOND, BOTH NEGATIVE IVTNUM = 13 IGBVI = -5 IGDVI = -2 IGAVI = IDIM(IGBVI, IGDVI) IF (IGAVI - 0) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0131 CONTINUE CT014* TEST 14 ARITHMETIC EXPRESSIONS PRESENTED TO IDIM IVTNUM = 14 IGDVI = 2 IGEVI = 1.25 IGAVI = IDIM(IGDVI / IGEVI, IGDVI * IGEVI) IF (IGAVI - 0) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IGAVI, IVCORR 0141 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** 16303 FORMAT(2X, F7.2) 16305 FORMAT(3X, I5) C***** C***** END OF TEST SEGMENT 163 STOP END *END-OF,FM360 FM361.f 481036274 170 2 100666 30714 ` *HEADER,FORTR,FM361 *FILES1,FORTR,FM361,X C*********************************************************************** C***** FORTRAN 77 C***** FM361 XMAX - (165) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST OF INTRINSIC FUNCTIONS AMAX0,AMAX1,MAX0,MAX1 15.3 C***** CHOOSING LARGEST VALUE (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 48 ZPROG = 'FM361' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 165 WRITE (NUVI,16501) 16501 FORMAT (1H , // 2X,36HXMAX - (165) INTRINSIC FUNCTIONS-- //13X, 1 26HAMAX0, AMAX1, MAX0, MAX1 /13X, 2 24H(CHOOSING LARGEST VALUE)//2X, 3 18HSUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF AMAX0 C***** WRITE(NUVI, 16502) 16502 FORMAT (/ 8X, 13HTEST OF AMAX0) CT001* TEST 1 BOTH ZEROES IVTNUM = 1 IHBVI = 0 IHDVI = 0 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS + 0.00005) 20010, 10010, 40010 40010 IF (RHAVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0011 CONTINUE CT002* TEST 2 ONE NON-ZERO, ONE ZERO IVTNUM = 2 IHBVI = 6 IHDVI = 0 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS - 5.9997) 20020, 10020, 40020 40020 IF (RHAVS - 6.0003) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 6.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0021 CONTINUE CT003* TEST 3 BOTH VALUES EQUAL IVTNUM = 3 IHBVI = 7 IHDVI = 7 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS - 6.9996) 20030, 10030, 40030 40030 IF (RHAVS - 7.0004) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 7.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0031 CONTINUE CT004* TEST 4 UNEQUAL VALUES, BOTH POSITIVE IVTNUM = 4 IHBVI = 7 IHDVI = 5 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS - 6.9996) 20040, 10040, 40040 40040 IF (RHAVS - 7.0004) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 7.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0041 CONTINUE CT005* TEST 5 ONE NEGATIVE, ONE ZERO IVTNUM = 5 IHBVI = -6 IHDVI = 0 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS + 0.00005) 20050, 10050, 40050 40050 IF (RHAVS - 0.00005) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0051 CONTINUE CT006* TEST 6 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 6 IHBVI = -7 IHDVI = -7 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS + 7.0004) 20060, 10060, 40060 40060 IF (RHAVS + 6.9996) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -7.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0061 CONTINUE CT007* TEST 7 BOTH VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 7 IHBVI = -7 IHDVI = -5 RHAVS = AMAX0(IHBVI,IHDVI) IF (RHAVS + 5.0003) 20070, 10070, 40070 40070 IF (RHAVS + 4.9997) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = -5.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0071 CONTINUE CT008* TEST 8 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY A MINUS SIGN IVTNUM = 8 IHDVI = 6 IHEVI = 0 RHAVS = AMAX0(IHDVI, -IHEVI) IF (RHAVS - 5.9997) 20080, 10080, 40080 40080 IF (RHAVS - 6.0003) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 6.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0081 CONTINUE CT009* TEST 9 EXPRESSIONS PRESENTED TO FUNCTION IVTNUM = 9 IHDVI = 3 IHEVI = 4 RHAVS = AMAX0(IHDVI + IHEVI, -IHEVI - IHDVI) IF (RHAVS - 6.9996) 20090, 10090, 40090 40090 IF (RHAVS - 7.0004) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 7.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0091 CONTINUE CT010* TEST 10 3 ARGUMENTS IVTNUM = 10 IHBVI = 0 IHCVI = 1 IHDVI = 3 RHAVS = AMAX0(IHBVI, IHCVI, IHDVI) IF (RHAVS - 2.9998) 20100, 10100, 40100 40100 IF (RHAVS - 3.0002) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0101 CONTINUE CT011* TEST 11 4 ARGUMENTS IVTNUM = 11 IHBVI = 0 IHCVI = 1 IHDVI = 4 RHAVS = AMAX0(IHDVI, -IHBVI, IHCVI, IHBVI) IF (RHAVS - 3.9998) 20110, 10110, 40110 40110 IF (RHAVS - 4.0002) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 4.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0111 CONTINUE CT012* TEST 12 5 ARGUMENTS IVTNUM = 12 IHDVI = 4.0 IHEVI = 5.0 RHAVS = AMAX0(IHDVI, -IHDVI, -IHEVI, +IHDVI, IHEVI) IF (RHAVS - 4.9997) 20120, 10120, 40120 40120 IF (RHAVS - 5.0003) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 5.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0121 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** TEST OF AMAX1 C***** WRITE(NUVI, 16504) 16504 FORMAT (/ 8X, 13HTEST OF AMAX1) CT013* TEST 13 BOTH VALUES ZERO IVTNUM = 13 RHBVS = 0.0 RHDVS = 0.0 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS + 0.00005) 20130, 10130, 40130 40130 IF (RHAVS - 0.00005) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0131 CONTINUE CT014* TEST 14 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 14 RHBVS = 5.625 RHDVS = 0.0 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS - 5.6247) 20140, 10140, 40140 40140 IF (RHAVS - 5.6253) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 5.625 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0141 CONTINUE CT015* TEST 15 BOTH VALUES EQUAL IVTNUM = 15 RHBVS = 6.5 RHDVS = 6.5 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS - 6.4996) 20150, 10150, 40150 40150 IF (RHAVS - 6.5004) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 6.5 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0151 CONTINUE CT016* TEST 16 VALUES NOT EQUAL IVTNUM = 16 RHBVS = 7.125 RHDVS = 5.125 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS - 7.1246) 20160, 10160, 40160 40160 IF (RHAVS - 7.1254) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = 7.125 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0161 CONTINUE CT017* TEST 17 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 17 RHBVS = -5.625 RHDVS = 0.0 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS + 0.00005) 20170, 10170, 40170 40170 IF (RHAVS - 0.00005) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0171 CONTINUE CT018* TEST 18 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 18 RHBVS = -6.5 RHDVS = -6.5 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS + 6.5004) 20180, 10180, 40180 40180 IF (RHAVS + 6.4996) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = -6.5 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0181 CONTINUE CT019* TEST 19 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 19 RHBVS = -7.125 RHDVS = -5.125 RHAVS = AMAX1(RHBVS, RHDVS) IF (RHAVS + 5.1253) 20190, 10190, 40190 40190 IF (RHAVS + 5.1247) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 RVCORR = -5.125 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0191 CONTINUE CT020* TEST 20 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 20 RHDVS = 5.625 RHEVS = 0.0 RHAVS = AMAX1(RHDVS, -RHEVS) IF (RHAVS - 5.6247) 20200, 10200, 40200 40200 IF (RHAVS - 5.6253) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 RVCORR = 5.625 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0201 CONTINUE CT021* TEST 21 EXPRESSIONS PRESENTED TO FUNCTION IVTNUM = 21 RHDVS = 3.5 RHEVS = 4.0 RHAVS = AMAX1(RHDVS + RHEVS, -RHEVS - RHDVS) IF (RHAVS - 7.4996) 20210, 10210, 40210 40210 IF (RHAVS - 7.5004) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 RVCORR = 7.5 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0211 CONTINUE CT022* TEST 22 3 ARGUMENTS IVTNUM = 22 RHBVS = 0.0 RHCVS = 1.0 RHDVS = 0.5 RHAVS = AMAX1(RHBVS, RHCVS, RHDVS) IF (RHAVS - 0.99995) 20220, 10220, 40220 40220 IF (RHAVS - 1.0001) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0221 CONTINUE CT023* TEST 23 4 ARGUMENTS IVTNUM = 23 RHBVS = 1.5 RHCVS = 3.4 RHDVS = 3.5 RHAVS = AMAX1(-RHDVS, RHCVS, RHBVS, RHDVS) IF (RHAVS - 3.4998) 20230, 10230, 40230 40230 IF (RHAVS - 3.5002) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 RVCORR = 3.5 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0231 CONTINUE CT024* TEST 24 5 ARGUMENTS IVTNUM = 24 RHDVS = 3.5 RHEVS = 4.5 RHAVS = AMAX1(RHDVS, -RHDVS, -RHEVS, +RHDVS, RHEVS) IF (RHAVS - 4.4997) 20240, 10240, 40240 40240 IF (RHAVS - 4.5003) 10240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 RVCORR = 4.5 WRITE (NUVI, 80012) IVTNUM, RHAVS, RVCORR 0241 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** TEST OF MAX0 C***** WRITE(NUVI, 16505) 16505 FORMAT (/ 8X, 12HTEST OF MAX0) C***** CT025* TEST 25 BOTH VALUES ZERO IVTNUM = 25 IHBVI = 0 IHDVI = 0 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI - 0) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0251 CONTINUE CT026* TEST 26 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 26 IHBVI = 6 IHDVI = 0 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI - 6) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0261 CONTINUE CT027* TEST 27 BOTH VALUES EQUAL IVTNUM = 27 IHBVI = 7 IHDVI = 7 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI - 7) 20270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0271 CONTINUE CT028* TEST 28 VALUES NOT EQUAL IVTNUM = 28 IHBVI = 7 IHDVI = 5 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI - 7) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0281 CONTINUE CT029* TEST 29 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 29 IHBVI = -6 IHDVI = 0 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI - 0) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0291 CONTINUE CT030* TEST 30 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 30 IHBVI = -7 IHDVI = -7 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI + 7) 20300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0301 CONTINUE CT031* TEST 31 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 31 IHBVI = -7 IHDVI = -5 IHAVI = MAX0(IHBVI, IHDVI) IF (IHAVI + 5) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0311 CONTINUE CT032* TEST 32 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 32 IHDVI = 6 IHEVI = 0 IHAVI = MAX0(IHDVI, -IHEVI) IF (IHAVI - 6) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0321 CONTINUE CT033* TEST 33 EXPRESSIONS PRESENTED TO FUNCTION IVTNUM = 33 IHDVI = 3 IHEVI = 4 IHAVI = MAX0(IHDVI + IHEVI, -IHEVI - IHDVI) IF (IHAVI - 7) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0331 CONTINUE CT034* TEST 34 3 ARGUMENTS IVTNUM = 34 IHBVI = 0 IHCVI = 3 IHDVI = -4 IHAVI = MAX0(IHDVI, IHBVI, IHCVI) IF (IHAVI - 3) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0341 CONTINUE CT035* TEST 35 4 ARGUMENTS IVTNUM = 35 IHBVI = -1 IHCVI = 0 IHDVI = 4 IHAVI = MAX0(IHDVI, IHCVI, IHBVI, IHDVI) IF (IHAVI - 4) 20350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0351 CONTINUE CT036* TEST 36 5 ARGUMENTS IVTNUM = 36 IHDVI = 4 IHEVI = 5 IHAVI = MAX0(IHDVI, -IHDVI, -IHEVI, +IHDVI, IHEVI) IF (IHAVI - 5) 20360, 10360, 20360 10360 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0361 20360 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0361 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** TEST OF MAX1 C***** WRITE(NUVI, 16507) 16507 FORMAT (/ 8X, 12HTEST OF MAX1) CT037* TEST 37 BOTH VALUES EQUAL IVTNUM = 37 RHBVS = 0.0 RHDVS = 0.0 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI - 0) 20370, 10370, 20370 10370 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0371 20370 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0371 CONTINUE CT038* TEST 38 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 38 RHBVS = 5.625 RHDVS = 0.0 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI - 5) 20380, 10380, 20380 10380 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0381 20380 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0381 CONTINUE CT039* TEST 39 BOTH VALUES EQUAL IVTNUM = 39 RHBVS = 6.5 RHDVS = 6.5 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI - 6) 20390, 10390, 20390 10390 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0391 20390 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0391 CONTINUE CT040* TEST 40 VALUES NOT EQUAL IVTNUM = 40 RHBVS = 7.125 RHDVS = 5.125 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI - 7) 20400, 10400, 20400 10400 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0401 20400 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0401 CONTINUE CT041* TEST 41 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 41 RHBVS = -5.625 RHDVS = 0.0 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI - 0) 20410, 10410, 20410 10410 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0411 20410 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0411 CONTINUE CT042* TEST 42 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 42 RHBVS = - 6.5 RHDVS = - 6.5 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI + 6) 20420, 10420, 20420 10420 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0421 20420 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0421 CONTINUE CT043* TEST 43 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 43 RHBVS = -7.125 RHDVS = -5.125 IHAVI = MAX1(RHBVS, RHDVS) IF (IHAVI + 5) 20430, 10430, 20430 10430 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0431 20430 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0431 CONTINUE CT044* TEST 44 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY A MINUS SIGN IVTNUM = 44 RHDVS = 5.625 RHEVS = 0.0 IHAVI = MAX1(RHDVS, -RHEVS) IF (IHAVI - 5) 20440, 10440, 20440 10440 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0441 20440 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0441 CONTINUE CT045* TEST 45 EXPRESSIONS PRESENTED TO FUNCTION IVTNUM = 45 RHDVS = 3.5 RHEVS = 4.0 IHAVI = MAX1(RHDVS + RHEVS, -RHEVS - RHDVS) IF (IHAVI - 7) 20450, 10450, 20450 10450 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0451 20450 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0451 CONTINUE CT046* TEST 46 3 ARGUMENTS IVTNUM = 46 RHBVS = 0.0 RHCVS = 4.0 RHDVS = 0.0 IHAVI = MAX1(RHBVS, -RHCVS, RHDVS) IF (IHAVI - 0) 20460, 10460, 20460 10460 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0461 20460 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0461 CONTINUE CT047* TEST 47 4 ARGUMENTS IVTNUM = 47 RHBVS = 3.49 RHCVS = 0.0 RHDVS = 3.5 IHAVI = MAX1(RHDVS, RHBVS, -RHBVS, RHCVS) IF (IHAVI - 3) 20470, 10470, 20470 10470 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0471 20470 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0471 CONTINUE CT048* TEST 48 5 ARGUMENTS IVTNUM = 48 RHDVS = 3.5 RHEVS = 4.5 IHAVI = MAX1(RHDVS, -RHDVS, -RHEVS, +RHDVS, RHEVS) IF (IHAVI - 4) 20480, 10480, 20480 10480 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0481 20480 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (NUVI, 80010) IVTNUM, IHAVI, IVCORR 0481 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 165 STOP END *END-OF,FM361 FM362.f 481036280 170 2 100666 30268 ` *HEADER,FORTR,FM362 *FILES1,FORTR,FM362,X C*********************************************************************** C***** FORTRAN 77 C***** FM362 XMIN - (167) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTIONS AMIN0,AMIN1,MIN0,MIN1 15.3 C***** CHOOSING SMALLEST VALUE. (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 47 ZPROG = 'FM362' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 167 WRITE (NUVI,16700) 16700 FORMAT (1H , // 2X,36HXMIN - (167) INTRINSIC FUNCTIONS-- //13X, 1 24HAMIN0, AMIN1, MIN0, MIN1/ 13X, 2 25H(CHOOSING SMALLEST VALUE)//2X, 3 18HSUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF AMIN0 C***** WRITE(NUVI, 16702) 16702 FORMAT (/ 8X, 13HTEST OF AMIN0) CT001* TEST 1 BOTH VALUES ZERO IVTNUM = 1 IIBVI = 0 IIDVI = 0 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS + 0.00005) 20010, 10010, 40010 40010 IF (RIAVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0011 CONTINUE CT002* TEST 2 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 2 IIBVI = 6 IIDVI = 0 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS + 0.00005) 20020, 10020, 40020 40020 IF (RIAVS - 0.00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0021 CONTINUE CT003* TEST 3 BOTH VALUES EQUAL IVTNUM = 3 IIBVI = 7 IIDVI = 7 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS - 6.9996) 20030, 10030, 40030 40030 IF (RIAVS - 7.0004) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 7.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0031 CONTINUE CT004* TEST 4 VALUES NOT EQUAL IVTNUM = 4 IIBVI = 7 IIDVI = 5 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS - 4.9997) 20040, 10040, 40040 40040 IF (RIAVS - 5.0003) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 5.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0041 CONTINUE CT005* TEST 5 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 5 IIBVI = -6 IIDVI = 0 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS + 6.0003) 20050, 10050, 40050 40050 IF (RIAVS + 5.9997) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = -6.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0051 CONTINUE CT006* TEST 6 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 6 IIBVI = -7 IIDVI = -7 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS + 7.0004) 20060, 10060, 40060 40060 IF (RIAVS + 6.9996) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -7.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0061 CONTINUE CT007* TEST 7 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 7 IIBVI = -7 IIDVI = -5 RIAVS = AMIN0(IIBVI, IIDVI) IF (RIAVS + 7.0004) 20070, 10070, 40070 40070 IF (RIAVS + 6.9996) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = -7.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0071 CONTINUE CT008* TEST 8 FIRST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 8 IIDVI = 6 IIEVI = 0 RIAVS = AMIN0(IIDVI, -IIEVI) IF (RIAVS + 0.00005) 20080, 10080, 40080 40080 IF (RIAVS - 0.00005) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0081 CONTINUE CT009* TEST 9 3 ARGUMENTS IVTNUM = 9 IIBVI = 0 IICVI = 9 IIDVI = 8 RIAVS = AMIN0(IIBVI, IICVI, IIDVI) IF (RIAVS + 0.00005) 20090, 10090, 40090 40090 IF (RIAVS - 0.00005) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0091 CONTINUE CT010* TEST 10 4 ARGUMENTS IVTNUM = 10 IIBVI = 34 IICVI = 8 IIDVI = 4 RIAVS = AMIN0(IIDVI, IIBVI, IICVI, IIDVI) IF (RIAVS - 3.9998) 20100, 10100, 40100 40100 IF (RIAVS - 4.0002) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 4.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0101 CONTINUE CT011* TEST 11 5 ARGUMENTS IVTNUM = 11 IIDVI = 4.0 IIEVI = 5.0 RIAVS = AMIN0(IIDVI, -IIDVI, -IIEVI, +IIDVI, IIEVI) IF (RIAVS + 5.0003) 20110, 10110, 40110 40110 IF (RIAVS + 4.9997) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = -5.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0111 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** TEST OF AMIN1 C***** WRITE(NUVI, 16704) 16704 FORMAT (/ 8X, 13HTEST OF AMIN1) CT012* TEST 12 BOTH VALUES ZERO IVTNUM = 12 RIBVS = 0.0 RIDVS = 0.0 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS + 0.00005) 20120, 10120, 40120 40120 IF (RIAVS - 0.00005) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0121 CONTINUE CT013* TEST 13 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 13 RIBVS = 5.625 RIDVS = 0.0 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS + 0.00005) 20130, 10130, 40130 40130 IF (RIAVS - 0.00005) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0131 CONTINUE CT014* TEST 14 BOTH VALUES EQUAL IVTNUM = 14 RIBVS = 6.5 RIDVS = 6.5 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS - 6.4996) 20140, 10140, 40140 40140 IF (RIAVS - 6.5004) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 6.5 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0141 CONTINUE CT015* TEST 15 VALUES NOT EQUAL IVTNUM = 15 RIBVS = 7.125 RIDVS = 5.125 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS - 5.1247) 20150, 10150, 40150 40150 IF (RIAVS - 5.1253) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 5.125 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0151 CONTINUE CT016* TEST 16 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 16 RIBVS = -5.625 RIDVS = 0.0 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS + 5.6253) 20160, 10160, 40160 40160 IF (RIAVS + 5.6247) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = -5.625 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0161 CONTINUE CT017* TEST 17 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 17 RIBVS = -6.5 RIDVS = -6.5 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS + 6.5004) 20170, 10170, 40170 40170 IF (RIAVS + 6.4996) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = -6.5 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0171 CONTINUE CT018* TEST 18 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 18 RIBVS = -7.125 RIDVS = -5.125 RIAVS = AMIN1(RIBVS, RIDVS) IF (RIAVS + 7.1254) 20180, 10180, 40180 40180 IF (RIAVS + 7.1246) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = -7.125 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0181 CONTINUE CT019* TEST 19 FIRST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 19 RIDVS = 5.625 RIEVS = 0.0 RIAVS = AMIN1(RIDVS, -RIEVS) IF (RIAVS + 0.00005) 20190, 10190, 40190 40190 IF (RIAVS - 0.00005) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0191 CONTINUE CT020* TEST 20 EXPRESSION AS ARGUMENT IVTNUM = 20 RIDVS = 3.5 RIEVS = 4.0 RIAVS = AMIN1(RIDVS + RIEVS, -RIEVS - RIDVS) IF (RIAVS + 7.5004) 20200, 10200, 40200 40200 IF (RIAVS + 7.4996) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 RVCORR = -7.5 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0201 CONTINUE CT021* TEST 21 3 ARGUMENTS IVTNUM = 21 RIBVS = 0.0 RICVS = 1.0 RIDVS = 10.9 RIAVS = AMIN1(RIDVS, RICVS, RIBVS) IF (RIAVS + 0.00005) 20210, 10210, 40210 40210 IF (RIAVS - 0.00005) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0211 CONTINUE CT022* TEST 22 4 ARGUMENTS IVTNUM = 22 RIBVS = -9.0 RICVS = 10.0 RIDVS = 3.5 RIAVS = AMIN1(RIDVS, RICVS, -RIBVS, RIDVS) IF (RIAVS - 3.4998) 20220, 10220, 40220 40220 IF (RIAVS - 3.5002) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 RVCORR = 3.5 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0221 CONTINUE CT023* TEST 23 5 ARGUMENTS IVTNUM = 23 RIDVS = 3.5 RIEVS = 4.5 RIAVS = AMIN1(RIDVS, -RIDVS, -RIEVS, +RIDVS, RIEVS) IF (RIAVS + 4.5003) 20230, 10230, 40230 40230 IF (RIAVS + 4.4997) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 RVCORR = -4.5 WRITE (NUVI, 80012) IVTNUM, RIAVS, RVCORR 0231 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** TEST OF MIN0 C***** WRITE(NUVI, 16705) 16705 FORMAT (/ 8X, 12HTEST OF MIN0) CT024* TEST 24 BOTH VALUES ZERO IVTNUM = 24 IIBVI = 0 IIDVI = 0 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI - 0) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0241 CONTINUE CT025* TEST 25 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 25 IIBVI = 6 IIDVI = 0 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI - 0) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0251 CONTINUE CT026* TEST 26 BOTH VALUES EQUAL IVTNUM = 26 IIBVI = 7 IIDVI = 7 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI - 7) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0261 CONTINUE CT027* TEST 27 VALUES NOT EQUAL IVTNUM = 27 IIBVI = 7 IIDVI = 5 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI - 5) 20270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0271 CONTINUE CT028* TEST 28 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 28 IIBVI = -6 IIDVI = 0 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI + 6) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0281 CONTINUE CT029* TEST 29 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 29 IIBVI = -7 IIDVI = -7 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI + 7) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0291 CONTINUE CT030* TEST 30 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 30 IIBVI = -7 IIDVI = -5 IIAVI = MIN0(IIBVI, IIDVI) IF (IIAVI + 7) 20300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0301 CONTINUE CT031* TEST 31 FIRST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 31 IIDVI = 6 IIEVI = 0 IIAVI = MIN0(IIDVI, -IIEVI) IF (IIAVI - 0) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0311 CONTINUE CT032* TEST 32 EXPRESSION PRESENTED TO FUNCTION IVTNUM = 32 IIDVI = 3 IIEVI = 4 IIAVI = MIN0(IIDVI + IIEVI, -IIEVI - IIDVI) IF (IIAVI + 7) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0321 CONTINUE CT033* TEST 33 3 ARGUMENTS IVTNUM = 33 IIBVI = 0 IICVI = 10 IIDVI = -11 IIAVI = MIN0(IICVI, IIBVI, -IIDVI) IF (IIAVI - 0) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0331 CONTINUE CT034* TEST 34 4 ARGUMENTS IVTNUM = 34 IIAVI = 10 IIBVI = -4 IICVI = 8 IIDVI = 4 IIAVI = MIN0(IIAVI, -IIBVI, IICVI, IIDVI) IF (IIAVI - 4) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0341 CONTINUE CT035* TEST 35 5 ARGUMENTS IVTNUM = 35 IIDVI = 4 IIEVI = 5 IIAVI = MIN0(IIDVI, -IIDVI, -IIEVI, +IIDVI, IIEVI) IF (IIAVI + 5) 20350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0351 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** TEST OF MIN1 C***** WRITE(NUVI, 16707) 16707 FORMAT (/ 8X, 12HTEST OF MIN1) CT036* TEST 36 BOTH VALUES ZERO IVTNUM = 36 RIBVS = 0.0 RIDVS = 0.0 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI - 0) 20360, 10360, 20360 10360 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0361 20360 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0361 CONTINUE CT037* TEST 37 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 37 RIBVS = 5.625 RIDVS = 0.0 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI - 0) 20370, 10370, 20370 10370 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0371 20370 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0371 CONTINUE CT038* TEST 38 BOTH VALUES EQUAL IVTNUM = 38 RIBVS = 6.5 RIDVS = 6.5 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI - 6) 20380, 10380, 20380 10380 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0381 20380 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0381 CONTINUE CT039* TEST 39 VALUES NOT EQUAL IVTNUM = 39 RIBVS = 7.125 RIDVS = 5.125 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI - 5) 20390, 10390, 20390 10390 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0391 20390 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0391 CONTINUE CT040* TEST 40 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 40 RIBVS = -5.625 RIDVS = 0.0 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI + 5) 20400, 10400, 20400 10400 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0401 20400 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0401 CONTINUE CT041* TEST 41 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 41 RIBVS = -6.5 RIDVS = -6.5 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI + 6) 20410, 10410, 20410 10410 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0411 20410 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0411 CONTINUE CT042* TEST 42 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 42 RIBVS = -7.125 RIDVS = -5.125 IIAVI = MIN1(RIBVS, RIDVS) IF (IIAVI + 7) 20420, 10420, 20420 10420 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0421 20420 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0421 CONTINUE CT043* TEST 43 FIRST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 43 RIDVS = 5.625 RIEVS = 0.0 IIAVI = MIN1(RIDVS, -RIEVS) IF (IIAVI - 0) 20430, 10430, 20430 10430 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0431 20430 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0431 CONTINUE CT044* TEST 44 EXPRESSION PRESENTED TO FUNCTION IVTNUM = 44 RIDVS = 3.5 RIEVS = 4.0 IIAVI = MIN1(RIDVS + RIEVS, -RIEVS - RIDVS) IF (IIAVI + 7) 20440, 10440, 20440 10440 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0441 20440 IVFAIL = IVFAIL + 1 IVCORR = -7 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0441 CONTINUE CT045* TEST 45 3 ARGUMENTS IVTNUM = 45 RIBVS = 0.0 RICVS = 1.0 RIDVS = 2.0 IIAVI = MIN1(RIBVS, RICVS, RIDVS) IF (IIAVI - 0) 20450, 10450, 20450 10450 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0451 20450 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0451 CONTINUE CT046* TEST 46 4 ARGUMENTS IVTNUM = 46 RIAVS = -3.5 RIBVS = 12.0 RICVS = 3.6 RIDVS = 3.5 IIAVI = MIN1(-RIAVS, RIBVS, RICVS, RIDVS) IF (IIAVI - 3) 20460, 10460, 20460 10460 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0461 20460 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0461 CONTINUE CT047* TEST 47 5 ARGUMENTS IVTNUM = 47 RIDVS = 3.5 RIEVS = 4.5 IIAVI = MIN1(RIDVS, -RIDVS, -RIEVS, +RIDVS, RIEVS) IF (IIAVI + 4) 20470, 10470, 20470 10470 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0471 20470 IVFAIL = IVFAIL + 1 IVCORR = -4 WRITE (NUVI, 80010) IVTNUM, IIAVI, IVCORR 0471 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 167 STOP END *END-OF,FM362 FM363.f 481036284 170 2 100666 13687 ` *HEADER,FORTR,FM363 *FILES1,FORTR,FM363,X C*********************************************************************** C***** FORTRAN 77 C***** FM363 X66MX - (171) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST THAT ALL INTRINSIC FUNCTIONS WOULD ACCEPT 15.3 C***** ANY EXPRESSION OF THE TYPE SPECIFIED IN THE (TABLE 5) C***** INTRINSIC FUNCTION TABLE - ANS REFS - 15.10 C***** C***** GENERAL COMMENTS C***** SEGMENTS XINT, XREAL, XAINT, XABS, XAMOD, C***** XSIGN, XDIM, XMAX, XMIN ASSUMED WORKING C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 14 ZPROG = 'FM363' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 171 WRITTEN WRITE (NUVI,17101) 17101 FORMAT(1H ,// 2X,42HX66MX - (171) SUBSET INTRINSIC FUNCTIONS--// 1 10X,25HIN ARITHMETIC EXPRESSIONS 2 //2X, 27H SUBSET REF. - 15.10, 6.1.4) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF INTRINSIC FUNCTIONS IN EXPRESSIONS C***** CT001* TEST 1 IVTNUM = 1 RJBVS = 5.2 IJAVI = INT(RJBVS) + 3 IF (IJAVI - 8) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 8 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0011 CONTINUE CT002* TEST 2 IVTNUM = 2 RJBVS = 4.8 IJAVI = IFIX(RJBVS) - 2 IF (IJAVI - 2) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 RJBVS = 2.8 IJAVI = 50 * NINT(RJBVS) IF (IJAVI - 150) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 IVCORR = 150 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 IJBVI = -4 IJAVI = IABS(IJBVI) / (-4) IF (IJAVI + 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 IJBVI = 7 IJDVI = 4 IJAVI = MOD(IJBVI, IJDVI) ** 2 IF (IJAVI - 9) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 IVCORR = 9 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 IJBVI = -3 IJDVI = 1 IJAVI = 2 ** ISIGN(IJBVI, IJDVI) IF (IJAVI - 8) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 IVCORR = 8 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 IJBVI = 5 IJDVI = 2 IJEVI = -2 IJAVI = IDIM(IJBVI, IJDVI) * 2 + MAX0(IJEVI, IJDVI) - 7 IF (IJAVI - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 IJBVI = 2 IJDVI = 3 RJBVS = 2.2 RJDVS = 4.8 RJEVS = -2.2 RJFVS = -3.8 IJAVI = MIN0(IJBVI, IJDVI) * 2 - MAX1(RJBVS, RJDVS) / 2 1 + MIN1(RJEVS, RJFVS) + 5 IF (IJAVI - 4) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (NUVI, 80010) IVTNUM, IJAVI, IVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 IJBVI = 2 RJAVS = FLOAT(IJBVI) + 3.5 IF (RJAVS - 5.4997) 20090, 10090, 40090 40090 IF (RJAVS - 5.5003) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 5.5 WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 IJBVI = 2 RJAVS = REAL(IJBVI) * 3.0 IF (RJAVS - 5.9997) 20100, 10100, 40100 40100 IF (RJAVS - 6.0003) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 6.0 WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 0101 CONTINUE CT011* TEST 11 IVTNUM = 11 RJBVS = 4.5 RJAVS = AINT(RJBVS) ** 0.5 IF (RJAVS - 1.9999) 20110, 10110, 40110 40110 IF (RJAVS - 2.0001) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 2.0 WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 0111 CONTINUE CT012* TEST 12 IVTNUM = 12 RJBVS = 2.8 RJDVS = 2.2 RJAVS = 1.5 * ANINT(RJBVS) + 6.6 / ABS(RJDVS) IF (RJAVS - 7.4996 ) 20120, 10120, 40120 40120 IF (RJAVS - 7.5004 ) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 7.5 WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 RJBVS = 4.5 RJDVS = 2.2 IJBVI = -5 IJDVI = 5 RJAVS = (AMOD(RJBVS, RJDVS) + 1.4) * (SIGN(IJBVI, IJDVI) - 3.0) IF (RJAVS - 2.9998) 20130, 10130, 40130 40130 IF (RJAVS - 3.0002) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 0131 CONTINUE CT014* TEST 14 IVTNUM = 14 RJBVS = 6.2 RJDVS = 5.2 IJBVI = 2 IJDVI = 3 RJEVS = 2.0 RJFVS = 3.0 RJAVS = (DIM(RJBVS, RJDVS) * AMAX0(IJBVI, IJDVI)) ** 1 (AMIN0(IJBVI, IJDVI) - AMIN1(RJEVS, RJFVS)) IF (RJAVS - 0.99995) 20140, 10140, 40140 40140 IF (RJAVS - 1.0001) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE (NUVI, 80012) IVTNUM, RJAVS, RVCORR 0141 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 171 STOP END *END-OF,FM363 FM364.f 481036289 170 2 100666 14770 ` *HEADER,FORTR,FM364 *FILES1,FORTR,FM364,X C*********************************************************************** C***** FORTRAN 77 C***** FM364 XRMNX - (172) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TESTS THE USE OF MIXED MODE ARITHMETIC 15.10 C***** EXPRESSIONS CONTAINING REFERENCES TO THE 15.3 C***** INTRINSIC FUNCTIONS 6.1.4 C***** C***** GENERAL COMMENTS C***** SEGMENTS TESTING XINT, XREAL, XAINT, XABS, XAMOD, C***** XSIGN, XDIM, XMAX, XMIN ASSUMED WORKING C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** O U T P U T T A P E ASSIGNMENT STATEMENT. NO INPUT TAPE. NUVI = I02 IVTOTL = 14 ZPROG = 'FM364' C***** CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** HEADER FOR SEGMENT 172 WRITTEN WRITE (NUVI,17201) 17201 FORMAT(/41H XRMNX - (172) SUBSET INTRINSIC FUNCTIONS/ 1 15X,25HIN MIXED MODE EXPRESSIONS //, 2 33H SUBSET REF. - 15.10, 15.3, 6.1.4) C***** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** CT001* TEST 1 IVTNUM = 1 RKBVS = 3.2 RKDVS = 3.8 RKAVS = 3.5 + INT(RKBVS) + IFIX(RKDVS) RKCVS = RKAVS - 9.5 IF (RKCVS + .00005) 20010, 10010, 40010 40010 IF (RKCVS - .00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0011 CONTINUE CT002* TEST 2 IVTNUM = 2 IKBVI = 3 IKDVI = 6 RKAVS = FLOAT(IKBVI) - 3 + REAL(IKDVI) RKCVS = RKAVS - 6.0 IF (RKCVS + .00005) 20020, 10020, 40020 40020 IF (RKCVS - .00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 IKAVI = 3 RKBVS = 5.25 RKAVS = ANINT(RKBVS) * IKAVI RKCVS = RKAVS - 15.0 IF (RKCVS + .00005) 20030, 10030, 40030 40030 IF (RKCVS - .00005) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 RKBVS = 5.25 RKAVS = AINT(RKBVS) * IKAVI RKCVS = RKAVS - 15.0 IF (RKCVS + .00005) 20040, 10040, 40040 40040 IF (RKCVS - .00005) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 RKBVS = -5.5 RKAVS = ABS(RKBVS) / 2 RKCVS = RKAVS - 2.75 IF (RKCVS + .00005) 20050, 10050, 40050 40050 IF (RKCVS - .00005) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 RKDVS = 5.0 IKBVI = -5 RKAVS = RKDVS / IABS(IKBVI) RKCVS = RKAVS - 1.0 IF (RKCVS + .00005) 20060, 10060, 40060 40060 IF (RKCVS - .00005) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 RKDVS = -2.0 IKAVI = -2 IKBVI = 5 IKCVI = 2 RKAVS = RKDVS / (IABS(IKAVI) * MOD(IKBVI, IKCVI)) RKCVS = RKAVS + 1.0 IF (RKCVS + .00005) 20070, 10070, 40070 40070 IF (RKCVS - .00005) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 IKAVI = -2 IKBVI = 2 RKAVS = 3 * ISIGN(IKAVI, IKBVI) RKCVS = RKAVS - 6.0 IF (RKCVS + .00005) 20080, 10080, 40080 40080 IF (RKCVS - .00005) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 RKBVS = 5.25 RKDVS = 3.25 RKEVS = 2.25 RKAVS = AMOD(RKBVS, RKDVS) * NINT(RKEVS) RKCVS = RKAVS - 4.0 IF (RKCVS + .00005) 20090, 10090, 40090 40090 IF (RKCVS - .00005) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 IKAVI = 2 RKDVS = -4.5 RKBVS = 1.0 RKAVS = (IKAVI + SIGN(RKDVS, RKBVS)) * 1.5 RKCVS = RKAVS - 9.75 IF (RKCVS + .00005) 20100, 10100, 40100 40100 IF (RKCVS - .00005) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0101 CONTINUE CT011* TEST 11 RKDVS = 6.0 IKAVI = 5 IKBVI = 2 IKCVI = 1 RKAVS = (IDIM(IKAVI, IKBVI) / RKDVS) ** MAX0(IKCVI, IKBVI) RKCVS = RKAVS - 0.25 IF (RKCVS + .00005) 20110, 10110, 40110 40110 IF (RKCVS - .00005) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0111 CONTINUE CT012* TEST 12 IVTNUM = 12 IKAVI = 12 RKBVS = 5.5 RKDVS = 3.25 IKBVI = 2 IKCVI = 3 RKAVS = 2 * DIM(RKBVS, RKDVS) + AMAX0(IKBVI, IKCVI) / IKAVI RKCVS = RKAVS - 4.75 IF (RKCVS + .00005) 20120, 10120, 40120 40120 IF (RKCVS - .00005) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 IKAVI = 5 RKBVS = 4.5 RKDVS = 3.5 IKBVI = 2 IKCVI = 3 RKAVS = (AMAX1(RKBVS, RKDVS) * MIN0(IKBVI, IKCVI)) + (IKAVI - 1 ANINT(RKDVS)) RKCVS = RKAVS - 10.0 IF (RKCVS + .00005) 20130, 10130, 40130 40130 IF (RKCVS - .00005) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0131 CONTINUE CT014* TEST 14 IVTNUM = 14 IKAVI = 2 RKBVS = 4.5 RKDVS = 3.5 RKEVS = 2.5 RKFVS = 1.5 IKBVI = 5 IKCVI = 2 RKAVS = (FLOAT(MAX1(RKBVS, RKDVS)) ** (AMIN1(RKEVS, RKDVS) - 1 IKAVI) + AMIN0(IKBVI, IKCVI)) / MIN1(RKFVS, RKEVS) RKCVS = RKAVS - 4.0 IF (RKCVS + .00005) 20140, 10140, 40140 40140 IF (RKCVS - .00005) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RKCVS, RVCORR 0141 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 172 STOP END *END-OF,FM364 FM368.f 481036292 170 2 100666 13053 ` *HEADER,FORTR,FM368 *FILES1,FORTR,FM368,X C*********************************************************************** C***** FORTRAN 77 C***** FM368 C***** XSQRT - (175) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION SQRT 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 13 ZPROG = 'FM368' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 175 WRITE(NUVI,17500) 17500 FORMAT(1H , / 35H XSQRT - (175) INTRINSIC FUNCTIONS// 1 20H SQRT (SQUARE ROOT)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 FIXED POINT OF FUNCTION IVTNUM = 1 BVS = 0.0 AVS = SQRT(BVS) IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 FIXED POINT OF FUNCTION IVTNUM = 2 AVS = SQRT(1.0) IF (AVS - 0.99995E+00) 20020, 10020, 40020 40020 IF (AVS - 0.10001E+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 AVS = SQRT(2.0) IF (AVS - 0.14141E+01) 20030, 10030, 40030 40030 IF (AVS - 0.14143E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 1.41421356237310 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 AVS = SQRT(4.0) IF (AVS - 0.19999E+01) 20040, 10040, 40040 40040 IF (AVS - 0.20001E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 2.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 AVS = SQRT(15.0) IF (AVS - 0.38727E+01) 20050, 10050, 40050 40050 IF (AVS - 0.38732E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 3.87298334620742 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 AVS = SQRT(31.0) IF (AVS - 0.55674E+01) 20060, 10060, 40060 40060 IF (AVS - 0.55681E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 5.56776436283002 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 BVS = 2.0/4.0 AVS = SQRT(BVS) IF (AVS - 0.70707E+00) 20070, 10070, 40070 40070 IF (AVS - 0.70715E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.70710678118655 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 BVS = 25.0 AVS = SQRT(BVS/100.0) IF (AVS - 0.49997E+00) 20080, 10080, 40080 40080 IF (AVS - 0.50003E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.50000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 BVS = 0.0875 AVS = SQRT(BVS * 10.0) IF (AVS - 0.93536E+00) 20090, 10090, 40090 40090 IF (AVS - 0.93546E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.93541434669349 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 AVS = SQRT(31.0/32.0) IF (AVS - 0.98420E+00) 20100, 10100, 40100 40100 IF (AVS - 0.98430E+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.98425098425148 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 11 AVS = SQRT(1.6E-35) IF (AVS - 0.39998E-17) 20110, 10110, 40110 40110 IF (AVS - 0.40002E-17) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.40000000000000E-17 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 12 AVS = SQRT(1.0E+35) IF (AVS - 0.31621E+18) 20120, 10120, 40120 40120 IF (AVS - 0.31625E+18) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.31622776601684E+18 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 BVS = SQRT(1.6) AVS = SQRT(0.625) * BVS IF (AVS - 0.99995E+00) 20130, 10130, 40130 40130 IF (AVS - 0.10001E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 1.0000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 175 STOP END *END-OF,FM368 FM369.f 481036296 170 2 100666 15913 ` *HEADER,FORTR,FM369 *FILES1,FORTR,FM369,X C*********************************************************************** C***** FORTRAN 77 C***** FM369 C***** XEXP - (178) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION EXP 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 19 ZPROG = 'FM369' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 178 WRITE(NUVI,17800) 17800 FORMAT(1H , / 34H XEXP - (178) INTRINSIC FUNCTIONS// 1 19H EXP (EXPONENTIAL)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ZERO SINCE EXP(0.0) = 1 IVTNUM = 1 BVS = 0.0 AVS = EXP(BVS) IF (AVS - 0.99995E+00) 20010, 10010, 40010 40010 IF (AVS - 0.10001E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.10000000000000E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 ONE SINCE EXP(1.0) = E IVTNUM = 2 AVS = EXP(1.0) IF (AVS - 0.27181E+01) 20020, 10020, 40020 40020 IF (AVS - 0.27185E+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.27182818284590E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE C***** TESTS 3 THRU 5 - POSITIVE VALUES CT003* TEST 3 IVTNUM = 3 AVS = EXP(2.0) IF (AVS - 0.73886E+01) 20030, 10030, 40030 40030 IF (AVS - 0.73895E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.73890560989307E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 AVS = EXP(5.125) IF (AVS - 0.16816E+03) 20040, 10040, 40040 40040 IF (AVS - 0.16819E+03) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.16817414165185E+03 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 AVS = EXP(15.0) IF (AVS - 0.32688E+07) 20050, 10050, 40050 40050 IF (AVS - 0.32692E+07) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.32690173724721E+07 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 BVS = 20.5 AVS = EXP(BVS) IF (AVS - 0.79986E+09) 20060, 10060, 40060 40060 IF (AVS - 0.79995E+09) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.79990217747551E+09 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE C***** TESTS 7 THRU 10 - EXPRESSION PRESENTED TO EXP CT007* TEST 7 IVTNUM = 7 BVS = 4.5 AVS = EXP(BVS - 7.5) IF (AVS - 0.49784E-01) 20070, 10070, 40070 40070 IF (AVS - 0.49790E-01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.49787068367864E-01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 BVS = 0.25 AVS = EXP(BVS - 5.0) IF (AVS - 0.86512E-02) 20080, 10080, 40080 40080 IF (AVS - 0.86522E-02) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.86516952031206E-02 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 AVS = EXP(0.5 * (-20.0)) IF (AVS - 0.45397E-04) 20090, 10090, 40090 40090 IF (AVS - 0.45403E-04) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.45399929762485E-04 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 BVS = 30.5 AVS = EXP(BVS * (-0.5)) IF (AVS - 0.23822E-06) 20100, 10100, 40100 40100 IF (AVS - 0.23825E-06) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.23823696675018E-06 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE C***** TESTS 11 THRU 14 - VALUES CLOSE TO ONE CT011* TEST 11 IVTNUM = 11 AVS = EXP(0.9921875) IF (AVS - 0.26970E+01) 20110, 10110, 40110 40110 IF (AVS - 0.26973E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.26971279914439E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 IVTNUM = 12 BVS = 0.9990234375 AVS = EXP(BVS) IF (AVS - 0.27155E+01) 20120, 10120, 40120 40120 IF (AVS - 0.27158E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.27156285521169E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE C***** C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** CT013* TEST 13 IVTNUM = 13 AVS = EXP(1.00390625) IF (AVS - 0.27287E+01) 20130, 10130, 40130 40130 IF (AVS - 0.27291E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.27289208827261E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 IVTNUM = 14 BVS = 1.001953125 AVS = EXP(BVS) IF (AVS - 0.27234E+01) 20140, 10140, 40140 40140 IF (AVS - 0.27238E+01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 0.27235961607435E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE C***** TESTS 15 THRU 19 - VALUES CLOSE TO 1/E CT015* TEST 15 IVTNUM = 15 BVS = 128.0 AVS = EXP(44. / BVS) IF (AVS - 0.14101E+01) 20150, 10150, 40150 40150 IF (AVS - 0.14103E+01) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 0.14102260349257E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE CT016* TEST 16 IVTNUM = 16 BVS = 128. AVS = EXP(45. / BVS) IF (AVS - 0.14212E+01) 20160, 10160, 40160 40160 IF (AVS - 0.14214E+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = 0.14212865748007E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0161 CONTINUE CT017* TEST 17 IVTNUM = 17 BVS = 128. AVS = EXP(46. / BVS) IF (AVS - 0.14323E+01) 20170, 10170, 40170 40170 IF (AVS - 0.14325E+01) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = 0.14324338635651E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0171 CONTINUE CT018* TEST 18 IVTNUM = 18 BVS = 128. AVS = EXP(47. / BVS) IF (AVS - 0.14436E+01) 20180, 10180, 40180 40180 IF (AVS - 0.14438E+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = 0.14436685815988E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0181 CONTINUE CT019* TEST 19 IVTNUM = 19 BVS = 128. AVS = EXP(48. / BVS) IF (AVS - 0.14549E+01) 20190, 10190, 40190 40190 IF (AVS - 0.14551E+01) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 RVCORR = 0.14549914146182E+01 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0191 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 178 STOP END *END-OF,FM369 FM370.f 481036300 170 2 100666 14522 ` *HEADER,FORTR,FM370 *FILES1,FORTR,FM370,X C*********************************************************************** C***** FORTRAN 77 C***** FM370 C***** XALOG - (181) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION ALOG 15.3 C***** TABLE 5 C***** C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 16 ZPROG = 'FM370' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** HEADER FOR SEGMENT 181 WRITE(NUVI,18100) 18100 FORMAT(1H , / 35H XALOG - (181) INTRINSIC FUNCTIONS// 1 26H ALOG (NATURAL LOGARITHM)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ONE, SINCE LN(1.0) = 0.0 IVTNUM = 1 BVS = 1.0 AVS = ALOG(BVS) IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 VALUES CLOSE TO E IVTNUM = 2 AVS = ALOG(2.6875) IF (AVS - 0.98856E+00) 20020, 10020, 40020 40020 IF (AVS - 0.98866E+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.98861139345378 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 AVS = ALOG(5.125) IF (AVS - 0.16340E+01) 20030, 10030, 40030 40030 IF (AVS - 0.16342E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 1.63413052502447 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 AVS = ALOG(10.0) IF (AVS - 0.23025E+01) 20040, 10040, 40040 40040 IF (AVS - 0.23027E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 2.30258509299405 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 AVS = ALOG(100.0) IF (AVS - 0.46049E+01) 20050, 10050, 40050 40050 IF (AVS - 0.46054E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 4.60517018598809 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 BVS = 1.0 AVS = ALOG(BVS / 4.0) IF (AVS + 0.13864E+01) 20060, 10060, 40060 40060 IF (AVS + 0.13862E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -1.38629436111989 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 BVS = 1.0 CVS = 8.0 AVS = ALOG(3.0 * BVS / CVS) IF (AVS + 0.98088E+00) 20070, 10070, 40070 40070 IF (AVS + 0.98078E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = -0.98082925301173 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 AVS = ALOG(50.0 / 100.0) IF (AVS + 0.69318E+00) 20080, 10080, 40080 40080 IF (AVS + 0.69311E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -0.69314718055995 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 BVS = 68.75 AVS = ALOG(BVS * 0.01) IF (AVS + 0.37471E+00) 20090, 10090, 40090 40090 IF (AVS + 0.37467E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -0.37469344944141 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 VALUES CLOSE TO ONE IVTNUM = 10 AVS = ALOG(0.96875) IF (AVS + 0.31750E-01) 20100, 10100, 40100 40100 IF (AVS + 0.31747E-01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = -0.03174869831458 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 IVTNUM = 11 BVS = 1.015625 AVS = ALOG(BVS) IF (AVS - 0.15503E-01) 20110, 10110, 40110 40110 IF (AVS - 0.15505E-01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.01550418653597 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 VALUES CLOSE TO ZERO IVTNUM = 12 BVS = 128.0 AVS = ALOG(1.0 / BVS) IF (AVS + 0.48523E+01) 20120, 10120, 40120 40120 IF (AVS + 0.48518E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = -4.85203026391962 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 BVS = 128.0 AVS = ALOG(1.0 / (BVS * 4.0)) IF (AVS + 0.62386E+01) 20130, 10130, 40130 40130 IF (AVS + 0.62380E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = -6.23832462503951 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 14 BVS = 1.0E+37 AVS = ALOG(BVS) IF (AVS - 0.85191E+01) 20140, 10140, 40140 40140 IF (AVS - 0.85200E+02) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 85.19564844077969 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE CT015* TEST 15 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 15 BVS = 1.0E-37 AVS = ALOG(BVS) IF (AVS + 0.85200E+02) 20150, 10150, 40150 40150 IF (AVS + 0.85191E+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = -85.19564844077969 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE CT016* TEST 16 IVTNUM = 16 AVS = ALOG(8.0) + ALOG(0.125) IF (AVS + 0.50000E-04) 20160, 10160, 40160 40160 IF (AVS - 0.50000E-04) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = 0.0000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0161 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 181 STOP END *END-OF,FM370 FM371.f 481036304 170 2 100666 15179 ` *HEADER,FORTR,FM371 *FILES1,FORTR,FM371,X C*********************************************************************** C***** FORTRAN 77 C***** FM371 C***** XALG10 - (184) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION ALOG10 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 16 ZPROG = 'FM371' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 184 WRITE(NUVI,18400) 18400 FORMAT(1H , / 36H XALG10 - (184) INTRINSIC FUNCTIONS// 1 27H ALOG10 (COMMON LOGARITHM)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ONE, SINCE LN(1.0) = 0.0 IVTNUM = 1 BVS = 1.0 AVS = ALOG10(BVS) IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 A VALUE CLOSE TO TEN IVTNUM = 2 AVS = ALOG10(9.875) IF (AVS - 0.99448E+00) 20020, 10020, 40020 40020 IF (AVS - 0.99459E+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.99453710429850 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 THE VALUE 10.0 IVTNUM = 3 AVS = ALOG10(10.0) IF (AVS - 0.99995E+00) 20030, 10030, 40030 40030 IF (AVS - 0.10001E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 THE VALUE 20.5 IVTNUM = 4 AVS = ALOG10(20.5) IF (AVS - 0.13116E+01) 20040, 10040, 40040 40040 IF (AVS - 0.13119E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 1.31175386105575 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 THE VALUE 99.0 IVTNUM = 5 AVS = ALOG10(99.0) IF (AVS - 0.19955E+01) 20050, 10050, 40050 40050 IF (AVS - 0.19958E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.99563519459755 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 VARIABLES WITHIN AN EXPRESSION IVTNUM = 6 BVS = 1.0 CVS = 8.0 AVS = ALOG10(3.0 * BVS / CVS) IF (AVS + 0.42599E+00) 20060, 10060, 40060 40060 IF (AVS + 0.42594E+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -0.42596873227228 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 VARIABLES WITHIN AN EXPRESSION IVTNUM = 7 BVS = 1.0 CVS = 8.0 AVS = ALOG10(5.0 * BVS / CVS) IF (AVS + 0.20413E+00) 20070, 10070, 40070 40070 IF (AVS + 0.20411E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = -0.20411998265592 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 AN EXPRESSION SUPPLIED TO ALOG10 IVTNUM = 8 AVS = ALOG10(75.0 / 100.0) IF (AVS + 0.12495E+00) 20080, 10080, 40080 40080 IF (AVS + 0.12493E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -0.12493873660830 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 VARIABLES WITHIN AN EXPRESSION IVTNUM = 9 BVS = 1.0 CVS = 8.0 AVS = ALOG10(7.0 * BVS / CVS) IF (AVS + 0.57995E-01) 20090, 10090, 40090 40090 IF (AVS + 0.57989E-01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -0.05799194697769 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 A VALUE CLOSE TO ONE IVTNUM = 10 AVS = ALOG10(0.9921875) IF (AVS + 0.34065E-02) 20100, 10100, 40100 40100 IF (AVS + 0.34060E-02) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = -0.0034062486919115 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 A VALUE CLOSE TO ONE IVTNUM = 11 BVS = 1.0009765625 AVS = ALOG10(BVS) IF (AVS - 0.42388E-03) 20110, 10110, 40110 40110 IF (AVS - 0.42393E-03) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.00042390875196115 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 A VALUE CLOSE TO ZERO IVTNUM = 12 BVS = 256.0 AVS = ALOG10(1.0 / BVS) IF (AVS + 0.24084E+01) 20120, 10120, 40120 40120 IF (AVS + 0.24081E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = -2.40823996531185 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 A VALUE CLOSE TO ZERO IVTNUM = 13 BVS = 128.0 AVS = ALOG10(1.0 / (BVS * 8.0)) IF (AVS + 0.30105E+01) 20130, 10130, 40130 40130 IF (AVS + 0.30101E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = -3.01029995663981 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 14 BVS = 2.0E+35 AVS = ALOG10(BVS) IF (AVS - 0.35299E+02) 20140, 10140, 40140 40140 IF (AVS - 0.35303E+02) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 35.30102999566398 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE CT015* TEST 15 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 15 BVS = 2.0E-35 AVS = ALOG10(BVS) IF (AVS + 0.34701E+02) 20150, 10150, 40150 40150 IF (AVS + 0.34697E+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = -34.69897000433602 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE CT016* TEST 16 THE FUNCTION APPLIED TWICE IVTNUM = 16 AVS = ALOG10(20.0) - ALOG10(2.0) IF (AVS - 0.99995E+00) 20160, 10160, 40160 40160 IF (AVS - 0.10001E+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = 1.0000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0161 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 184 STOP END *END-OF,FM371 FM372.f 481036307 170 2 100666 16140 ` *HEADER,FORTR,FM372 *FILES1,FORTR,FM372,X C*********************************************************************** C***** FORTRAN 77 C***** FM372 C***** XSIN - (186) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION SIN 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 18 ZPROG = 'FM372' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 186 WRITE(NUVI,18600) 18600 FORMAT(1H ,33H XSIN - (186) INTRINSIC FUNCTIONS// 1 12H SIN (SINE)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVS = 3.1415926535897932384626434 C***** CT001* TEST 1 ZERO (0.0), SINCE SIN(0)=0 IVTNUM = 1 BVS = 0.0 AVS = SIN(BVS) IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 PI IVTNUM = 2 AVS = SIN(PIVS) IF (AVS + 0.50000E-04) 20020, 10020, 40020 40020 IF (AVS - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 PI - 1/8 IVTNUM = 3 BVS = 3.0165926535 AVS = SIN(BVS) IF (AVS - 0.12466E+00) 20030, 10030, 40030 40030 IF (AVS - 0.12468E+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.12467473338523 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 PI - 1/16 IVTNUM = 4 AVS = SIN(3.2040926535) IF (AVS + 0.62463E-01) 20040, 10040, 40040 40040 IF (AVS + 0.62456E-01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = -0.06245931784238 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 2*PI IVTNUM = 5 BVS = PIVS * 2.0 AVS = SIN(BVS) IF (AVS + 0.50000E-04) 20050, 10050, 40050 40050 IF (AVS - 0.50000E-04) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 2*PI - 1/128 IVTNUM = 6 BVS = (2.0 * PIVS) - 1.0 / 128.0 AVS = SIN(BVS) IF (AVS + 0.78129E-02) 20060, 10060, 40060 40060 IF (AVS + 0.78120E-02) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -0.00781242052738 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 THE VALUE 2.0 IVTNUM = 7 BVS = 2.0 AVS = SIN(BVS) IF (AVS - 0.90925E+00) 20070, 10070, 40070 40070 IF (AVS - 0.90935E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.90929742682568 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 THE VALUE -2.0 IVTNUM = 8 BVS = -2.0 AVS = SIN(BVS) IF (AVS + 0.90935E+00) 20080, 10080, 40080 40080 IF (AVS + 0.90925E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -0.90929742682568 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 09 A LARGE VALUE TO TEST ARGUMENT REDUCTION IVTNUM = 09 AVS = SIN(100.0) IF (AVS + 0.50639E+00) 20090, 10090, 40090 40090 IF (AVS + 0.50634E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -0.50636564110976 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 A VERY LARGE VALUE IVTNUM = 10 AVS = SIN(-1000.0) IF (AVS + 0.82692E+00) 20100, 10100, 40100 40100 IF (AVS + 0.82683E+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = -0.82687954053200 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 PI/2 IVTNUM = 11 AVS = SIN(1.5707963268) IF (AVS - 0.99995E+00) 20110, 10110, 40110 40110 IF (AVS - 0.10001E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 PI/2 - 1/32 IVTNUM = 12 BVS = 1.5395463268 AVS = SIN(BVS) IF (AVS - 0.99946E+00) 20120, 10120, 40120 40120 IF (AVS - 0.99957E+00) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.99951175848514 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 PI/2 - 1/64 IVTNUM = 13 AVS = SIN(1.5864213268) IF (AVS - 0.99982E+00) 20130, 10130, 40130 40130 IF (AVS - 0.99993E+00) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.99987793217101 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 3*PI/2 IVTNUM = 14 BVS = 3.0 * PIVS / 2.0 AVS = SIN(BVS) IF (AVS + 0.10001E+01) 20140, 10140, 40140 40140 IF (AVS + 0.99995E+00) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = -1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE CT015* TEST 15 3*PI/2 - 1/16 IVTNUM = 15 BVS = (3.0 * PIVS / 2.0) - 1.0 / 16.0 AVS = SIN(BVS) IF (AVS + 0.99810E+00) 20150, 10150, 40150 40150 IF (AVS + 0.99799E+00) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = -0.99804751070010 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE CT016* TEST 16 3*PI/2 - 1/512 IVTNUM = 16 BVS = (3.0 * PIVS / 2.0) + 1.0 / 512.0 AVS = SIN(BVS) IF (AVS + 0.10001E+01) 20160, 10160, 40160 40160 IF (AVS + 0.99994E+00) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = -0.99999809265197 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0161 CONTINUE CT017* TEST 17 ARGUMENT OF LOW MAGNITUDE IVTNUM = 17 BVS = PIVS * 1.0E-37 AVS = SIN(BVS) IF (AVS + 0.50000E-04) 20170, 10170, 40170 40170 IF (AVS - 0.50000E-04) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = 3.14159265358979E-37 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0171 CONTINUE CT018* TEST 18 THE FUNCTION APPLIED TWICE IVTNUM = 18 AVS = SIN(PIVS / 4.0) * SIN(3.0 * PIVS / 4.0) IF (AVS - 0.49997E+00) 20180, 10180, 40180 40180 IF (AVS - 0.50003E+00) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = 0.50000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0181 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 186 STOP END *END-OF,FM372 FM373.f 481036311 170 2 100666 16643 ` *HEADER,FORTR,FM373 *FILES1,FORTR,FM373,X C*********************************************************************** C***** FORTRAN 77 C***** FM373 C***** XCOS - (189) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION COS 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 19 ZPROG = 'FM373' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 189 WRITE(NUVI,18900) 18900 FORMAT(1H /33H XCOS - (189) INTRINSIC FUNCTIONS// 1 14H COS (COSINE)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVS = 3.1415926535897932384626434 C***** CT001* TEST 1 ZERO (0.0), SINCE COS(0)=1 IVTNUM = 1 BVS = 0.0 AVS = COS(BVS) IF (AVS - 0.99995E+00) 20010, 10010, 40010 40010 IF (AVS - 0.10001E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 VALUES NEAR PI IVTNUM = 2 AVS = COS(PIVS) IF (AVS + 0.10001E+01) 20020, 10020, 40020 40020 IF (AVS + 0.99995E+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = -1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 PI - 1/16 IVTNUM = 3 BVS = 3.0790926536 AVS = COS(BVS) IF (AVS + 0.99810E+00) 20030, 10030, 40030 40030 IF (AVS + 0.99799E+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = -0.99804751070010 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 PI + 1/32 IVTNUM = 4 AVS = COS(3.1728426535) IF (AVS + 0.99957E+00) 20040, 10040, 40040 40040 IF (AVS + 0.99946E+00) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = -0.99951175848514 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 VALUES NEAR 2*PI IVTNUM = 5 BVS = PIVS * 2.0 AVS = COS(BVS) IF (AVS - 0.99995E+00) 20050, 10050, 40050 40050 IF (AVS - 0.10001E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 VALUES NEAR 2*PI IVTNUM = 6 BVS = (2.0 * PIVS) - 1.0 / 64.0 AVS = COS(BVS) IF (AVS - 0.99982E+00) 20060, 10060, 40060 40060 IF (AVS - 0.99993E+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.99987793217101 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 VALUES NEAR 2*PI IVTNUM = 7 BVS = (2.0 * PIVS) + 1.0 / 128.0 AVS = COS(BVS) IF (AVS - 0.99992E+00) 20070, 10070, 40070 40070 IF (AVS - 0.10001E+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.99996948257710 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 AN EXPRESSION PRESENTED TO COS IVTNUM = 8 BVS = 350.0 AVS = COS(BVS / 100.0) IF (AVS + 0.93651E+00) 20080, 10080, 40080 40080 IF (AVS + 0.93641E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -0.93645668729080 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 A NEGATIVE ARGUMENT IVTNUM = 9 BVS = -1.5 AVS = COS(BVS) IF (AVS - 0.70733E-01) 20090, 10090, 40090 40090 IF (AVS - 0.70741E-01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.07073720166770 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 TEST LARGE VALUES FOR ARGUMENT REDUCTION IVTNUM = 10 AVS = COS(200.0) IF (AVS - 0.48716E+00) 20100, 10100, 40100 40100 IF (AVS - 0.48722E+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.48718767500701 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 TEST LARGE VALUES FOR ARGUMENT REDUCTION IVTNUM = 11 AVS = COS(-31416.0) IF (AVS - 0.99725E+00) 20110, 10110, 40110 40110 IF (AVS - 0.99736E+00) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.99730272627420 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 TEST VALUES NEAR PI/2 IVTNUM = 12 AVS = COS(1.5707963268) IF (AVS + 0.50000E-04) 20120, 10120, 40120 40120 IF (AVS - 0.50000E-04) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 (PI / 2) - 1/32 IVTNUM = 13 BVS = (1.5395463267) AVS = COS(BVS) IF (AVS - 0.31243E-01) 20130, 10130, 40130 40130 IF (AVS - 0.31247E-01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.03124491398533 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 (PI / 2) + 1/16 IVTNUM = 14 AVS = COS(1.6332963267) IF (AVS + 0.62463E-01) 20140, 10140, 40140 40140 IF (AVS + 0.62456E-01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = -0.06245931784238 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE CT015* TEST 15 TEST VALUES NEAR 3*PI/2 IVTNUM = 15 BVS = 3.0 * PIVS / 2.0 AVS = COS(BVS) IF (AVS + 0.50000E-04) 20150, 10150, 40150 40150 IF (AVS - 0.50000E-04) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE CT016* TEST 16 TEST VALUES NEAR 3*PI/2 IVTNUM = 16 BVS = (3.0 * PIVS / 2.0) - 1.0 / 16.0 AVS = COS(BVS) IF (AVS + 0.62463E-01) 20160, 10160, 40160 40160 IF (AVS + 0.62456E-01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = -0.06245931784238 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0161 CONTINUE CT017* TEST 17 TEST VALUES NEAR 3*PI/2 IVTNUM = 17 BVS = (3.0 * PIVS / 2.0) + 1.0 / 512.0 AVS = COS(BVS) IF (AVS - 0.19530E-02) 20170, 10170, 40170 40170 IF (AVS - 0.19533E-02) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = 0.00195312375824 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0171 CONTINUE CT018* TEST 18 ARGUMENT OF LOW MAGNITUDE IVTNUM = 18 BVS = -3.141593E-35 AVS = COS(BVS) IF (AVS - 0.99995E+00) 20180, 10180, 40180 40180 IF (AVS - 0.10001E+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0181 CONTINUE CT019* TEST 19 THE FUNCTION APPLIED TWICE IVTNUM = 19 AVS = COS(PIVS / 4.0) * COS(3.0 * PIVS / 4.0) IF (AVS + 0.50003E+00) 20190, 10190, 40190 40190 IF (AVS + 0.49997E+00) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 RVCORR = -0.50000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0191 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 189 STOP END *END-OF,FM373 FM374.f 481036315 170 2 100666 14095 ` *HEADER,FORTR,FM374 *FILES1,FORTR,FM374,X C*********************************************************************** C***** FORTRAN 77 C***** FM374 C***** XTAN - (191) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION TAN 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 14 ZPROG = 'FM374' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 191 WRITE(NUVI,19100) 19100 FORMAT(1H , / 34H XTAN - (191) INTRINSIC FUNCTIONS// 1 17H TAN (TANGENT)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVS = 3.1415926535897932384626434 C***** CT001* TEST 1 ZERO (0.0), SINCE TAN(0) = 0 IVTNUM = 1 BVS = 0.0 AVS = TAN(BVS) IF (AVS + 0.00005) 20010, 10010, 40010 40010 IF (AVS - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 2*PI IVTNUM = 2 BVS = 6.2831853071 AVS = TAN(BVS) IF (AVS + 0.00005) 20020, 10020, 40020 40020 IF (AVS - 0.00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 3*PI IVTNUM = 3 BVS = 9.424777960 AVS = TAN(BVS) IF (AVS + 0.00005) 20030, 10030, 40030 40030 IF (AVS - 0.00005) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 PI/4 IVTNUM = 4 AVS = TAN(PIVS / 4.0) IF (AVS - 0.99995) 20040, 10040, 40040 40040 IF (AVS - 1.0001) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 5*PI/4 IVTNUM = 5 BVS = 5.0 * PIVS / 4.0 AVS = TAN(BVS) IF (AVS - 0.99995) 20050, 10050, 40050 40050 IF (AVS - 1.0001) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 A NEGATIVE VALUE IVTNUM = 6 BVS = -2.0 / 1.0 AVS = TAN(BVS) IF (AVS - 2.1849) 20060, 10060, 40060 40060 IF (AVS - 2.1852) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 2.18503986326151 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 A POSITIVE VALUE IVTNUM = 7 BVS = 350.0 / 100.0 AVS = TAN(BVS) IF (AVS - 0.37456) 20070, 10070, 40070 40070 IF (AVS - 0.37461) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.37458564015859 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 (PI / 2) - 1/8 IVTNUM = 8 BVS = 1.4457963267 AVS = TAN(BVS) IF (AVS - 7.9578) 20080, 10080, 40080 40080 IF (AVS - 7.9587) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 7.95828986586701 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 (PI / 2) + 1/256 IVTNUM = 9 BVS = 1.5747025767 AVS = TAN(BVS) IF (AVS + 256.02) 20090, 10090, 40090 40090 IF (AVS + 255.98) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -255.99869791534212 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 3*PI/2 - 1/1024 IVTNUM = 10 AVS = TAN((3.0 * PIVS / 2.0) - 1.0 / 1024.0) IF (AVS - 1023.9) 20100, 10100, 40100 40100 IF (AVS - 1024.1) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 1023.99967447914597 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 3*PI/2 + 1/64 IVTNUM = 11 BVS = (3.0 * PIVS / 2.0) + 1.0 / 64.0 AVS = TAN(BVS) IF (AVS + 63.998) 20110, 10110, 40110 40110 IF (AVS + 63.991) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = -63.99479158189365 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 LARGE ARGUMENT TO TEST ARGUMENT REDUCTION IVTNUM = 12 AVS = TAN(2000.0) IF (AVS + 2.5312) 20120, 10120, 40120 40120 IF (AVS + 2.5308) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = -2.53099832809334 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 ARGUMENT OF LOW MAGNITUDE IVTNUM = 13 BVS = PIVS * 1.0E-35 AVS = TAN(BVS) IF (AVS - 3.1414E-35) 20130, 10130, 40130 40130 IF (AVS - 3.1418E-35) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 3.14159265358979E-35 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 THE FUNCTION APPLIED TWICE IVTNUM = 14 AVS = TAN(PIVS / 6.0) * TAN(PIVS / 6.0) IF (AVS - 0.33331) 20140, 10140, 40140 40140 IF (AVS - 0.33335) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 0.33333333333333 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 191 STOP END *END-OF,FM374 FM375.f 481036318 170 2 100666 13225 ` *HEADER,FORTR,FM375 *FILES1,FORTR,FM375,X C*********************************************************************** C***** FORTRAN 77 C***** FM375 C***** XASIN - (193) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION ASIN, ACOS 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM375' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 193 WRITE(NUVI,19300) 19300 FORMAT(1H , / 35H XASIN - (193) INTRINSIC FUNCTIONS// 1 34H ASIN, ACOS (ARCSIN, ARCCOSINE) // 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI,19301) 19301 FORMAT(1H0,8X,12HTEST OF ASIN) C***** CT001* TEST 1 -1 TO CHECK PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 1 BVS = -1.0 AVS = ASIN(BVS) IF (AVS + 0.15709E+01) 20010, 10010, 40010 40010 IF (AVS + 0.15707E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = -1.57079632679490 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 +1 TO CHECK PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 2 AVS = ASIN(1.0) IF (AVS - 0.15707E+01) 20020, 10020, 40020 40020 IF (AVS - 0.15709E+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 1.57079632679490 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 THE VALUE -SQRT(0.5) IVTNUM = 3 BVS = -SQRT(2.0) / 2.0 AVS = ASIN(BVS) IF (AVS + 0.78544E+00) 20030, 10030, 40030 40030 IF (AVS + 0.78535E+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = -0.78539816339745 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 THE VALUE 0.5 IVTNUM = 4 AVS = ASIN(1.0 / 2.0) IF (AVS - 0.52357E+00) 20040, 10040, 40040 40040 IF (AVS - 0.52363E+00) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.52359877559830 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 5 AVS = ASIN(-1.0E-33) IF (AVS + 0.10001E-32) 20050, 10050, 40050 40050 IF (AVS + 0.99995E-33) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = -1.00000000000000E-33 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE C***** WRITE(NUVI,19307) 19307 FORMAT(1H0,8X,12HTEST OF ACOS) C***** CT006* TEST 6 -1 TO TEST PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 6 BVS = -1.0 AVS = ACOS(BVS) IF (AVS - 0.31414E+01) 20060, 10060, 40060 40060 IF (AVS - 0.31418E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 3.14159265358980 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 AVS = ACOS(1.0) IF (AVS + 0.50000E-04) 20070, 10070, 40070 40070 IF (AVS - 0.50000E-04) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 BVS = -SQRT(2.0) / 2.0 AVS = ACOS(BVS) IF (AVS - 0.23560E+01) 20080, 10080, 40080 40080 IF (AVS - 0.23564E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 2.35619449019234 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 AVS = ACOS(1.0 / 2.0) IF (AVS - 0.10471E+01) 20090, 10090, 40090 40090 IF (AVS - 0.10473E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 1.04719755119660 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 10 AVS = ACOS(-1.0E-33) IF (AVS - 0.15707E+01) 20100, 10100, 40100 40100 IF (AVS - 0.15709E+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 1.57079632679490 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 COMPARISON OF ASIN AND ACOS TO TEST RELATIONSHIP IVTNUM = 11 BVS = ASIN(SQRT(3.0) / 3.0) CVS = ACOS(SQRT(3.0) / 3.0) AVS = (BVS + CVS) * 2.0 IF (AVS - 0.31414E+01) 20110, 10110, 40110 40110 IF (AVS - 0.31418E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 3.14159265358979 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 COMPARISON OF ASIN AND ACOS TO TEST RELATIONSHIP IVTNUM = 12 AVS = (ASIN(+0.25) + ACOS(+0.25)) * 2.0 IF (AVS - 0.31414E+01) 20120, 10120, 40120 40120 IF (AVS - 0.31418E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 3.14159265358979 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 193 STOP END *END-OF,FM375 FM376.f 481036321 170 2 100666 13995 ` *HEADER,FORTR,FM376 *FILES1,FORTR,FM376,X C*********************************************************************** C***** FORTRAN 77 C***** FM376 C***** XATAN - (195) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION ATAN, ATAN2 15.3 C***** INTRINSIC FUNCTION SQRT ASSUMED WORKING TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 13 ZPROG = 'FM376' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 195 WRITE(NUVI,19500) 19500 FORMAT(1H , / 35H XATAN - (195) INTRINSIC FUNCTIONS// 1 28H ATAN, ATAN2 (ARCTANGENT)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI,19501) C***** 19501 FORMAT(/ 8X, 12HTEST OF ATAN) C***** CT001* TEST 1 TEST LARGE VALUES TO TEST SINGULARITY IVTNUM = 1 BVS = 500.0 AVS = ATAN(BVS) IF (AVS - 0.15687E+01) 20010, 10010, 40010 40010 IF (AVS - 0.15689E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 1.56879632946156 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 TEST LARGE VALUES TO TEST SINGULARITY IVTNUM = 2 AVS = ATAN(-1000.0) IF (AVS + 0.15699E+01) 20020, 10020, 40020 40020 IF (AVS + 0.15697E+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = -1.56979632712823 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 AN EXPRESSION PRESENTED TO ATAN IVTNUM = 3 AVS = ATAN(100.0 / 100.0) IF (AVS - 0.78535E+00) 20030, 10030, 40030 40030 IF (AVS - 0.78544E+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.78539816339745 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 A VARIABLE PRESENTED TO ATAN IVTNUM = 4 BVS = -SQRT(3.0) AVS = ATAN(BVS) IF (AVS + 0.10473E+01) 20040, 10040, 40040 40040 IF (AVS + 0.10471E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = -1.04719755119660 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 5 AVS = ATAN(1.0E-16) IF (AVS - 0.99995E-16) 20050, 10050, 40050 40050 IF (AVS - 0.10001E-15) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000E-16 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 6 AVS = ATAN(-2.0E+34) IF (AVS + 0.15709E+01) 20060, 10060, 40060 40060 IF (AVS + 0.15707E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -1.57079632679490 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE C***** WRITE(NUVI,19508) 19508 FORMAT(/ 08X, 13HTEST OF ATAN2) CT007* TEST 7 TEST ATAN2 FOR (0,POSITIVE) IVTNUM = 7 BVS = 10.0 / 10.0 CVS = 0.0 AVS = ATAN2(CVS, BVS) IF (AVS + 0.50000E-04) 20070, 10070, 40070 40070 IF (AVS - 0.50000E-04) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 TEST ATAN2 FOR (0, NEGATIVE) IVTNUM = 8 BVS = 0.0 CVS = -25.0 / 2.0 AVS = ATAN2(BVS, CVS) IF (AVS - 0.31414E+01) 20080, 10080, 40080 40080 IF (AVS - 0.31418E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 3.14159265358979 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 AN EXPRESSION PRESENTED TO ATAN2 IVTNUM = 9 BVS = 1.0 CVS = BVS + BVS AVS = ATAN2(BVS * 2.0, CVS) IF (AVS - 0.78535E+00) 20090, 10090, 40090 40090 IF (AVS - 0.78544E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.78539816339745 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 TEST ATAN2(X,Y) FOR X NEAR ZERO IVTNUM = 10 BVS = ASIN(0.6) CVS = ACOS(0.8) AVS = ATAN2(BVS, CVS) IF (AVS - 0.78535E+00) 20100, 10100, 40100 40100 IF (AVS - 0.78544E+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.78539816339745 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 WHERE ATAN2(X,Y) IS ZERO FOR Y IVTNUM = 11 AVS = ATAN2(1.2, 0.0) IF (AVS - 0.15707E+01) 20110, 10110, 40110 40110 IF (AVS - 0.15709E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 1.57079632679490 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 WHERE ATAN2(X,Y) IS ZERO FOR Y IVTNUM = 12 BVS = -2.5 CVS = 0.0 AVS = ATAN2(BVS, CVS) IF (AVS + 0.15709E+01) 20120, 10120, 40120 40120 IF (AVS + 0.15707E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = -1.57079632679490 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 COMPARISON OF ATAN WITH ATAN2 IVTNUM = 13 AVS = (ATAN(SQRT(3.0) / 3.0) * 2.0) 1 + ATAN2(-SQRT(3.0) / 2.0, 1.0 / 2.0) IF (AVS + 0.50000E-04) 20130, 10130, 40130 40130 IF (AVS - 0.50000E-04) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 195 STOP END *END-OF,FM376 FM377.f 481036325 170 2 100666 14894 ` *HEADER,FORTR,FM377 *FILES1,FORTR,FM377,X C*********************************************************************** C***** FORTRAN 77 C***** FM377 C***** XSINH - (197) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION SINH, COSH 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 15 ZPROG = 'FM377' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 197 WRITE(NUVI,19700) 19700 FORMAT(1H , / 35H XSINH - (197) INTRINSIC FUNCTIONS// 1 41H SINH, COSH (HYPERBOLIC SINE, COSINE)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI,19701) 19701 FORMAT(/ 8X, 12HTEST OF SINH) C***** CT001* TEST 1 TEST AT ZERO (0.0) IVTNUM = 1 BVS = 0.0 AVS = SINH(BVS) IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 TEST ARGUMENTS CLOSE TO 1.0 IVTNUM = 2 AVS = SINH(15.0 / 16.0) IF (AVS - 0.10809E+01) 20020, 10020, 40020 40020 IF (AVS - 0.10811E+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 1.08099191569306 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 TEST AT 1.0 IVTNUM = 3 BVS = 1.0 AVS = SINH(BVS) IF (AVS - 0.11751E+01) 20030, 10030, 40030 40030 IF (AVS - 0.11753E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 1.17520119364380 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 TEST ARGUMENTS CLOSE TO 1.0 IVTNUM = 4 AVS = SINH(33.0 / 32.0) IF (AVS - 0.12239E+01) 20040, 10040, 40040 40040 IF (AVS - 0.12241E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 1.22400418778664 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 TEST AT 2.0 IVTNUM = 5 BVS = 2.0 AVS = SINH(BVS) IF (AVS - 0.36266E+01) 20050, 10050, 40050 40050 IF (AVS - 0.36271E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 3.62686040784702 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 A NEGATIVE ARGUMENT IVTNUM = 6 AVS = SINH(-2.0) IF (AVS + 0.36271E+01) 20060, 10060, 40060 40060 IF (AVS + 0.36266E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -3.62686040784702 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 7 AVS = SINH(1.0E-34) IF (AVS - 0.99995E-34) 20070, 10070, 40070 40070 IF (AVS - 0.10001E-33) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000E-34 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** WRITE(NUVI,19709) 19709 FORMAT(/ 8X, 12HTEST OF COSH) C***** CT008* TEST 8 ZERO (0.0) IVTNUM = 8 BVS = 0.0 AVS = COSH(BVS) IF (AVS - 0.99995E+00) 20080, 10080, 40080 40080 IF (AVS - 0.10001E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 VALUES CLOSE TO 1.0 IVTNUM = 9 AVS = COSH(15.0 / 16.0) IF (AVS - 0.14725E+01) 20090, 10090, 40090 40090 IF (AVS - 0.14727E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 1.47259754236986 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 TEST AT 1.0 IVTNUM = 10 BVS = 1.0 AVS = COSH(BVS) IF (AVS - 0.15430E+01) 20100, 10100, 40100 40100 IF (AVS - 0.15432E+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 1.54308063481524 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 TEST ARGUMENTS CLOSE TO 1.0 IVTNUM = 11 AVS = COSH(33.0 / 32.0) IF (AVS - 0.15804E+01) 20110, 10110, 40110 40110 IF (AVS - 0.15807E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 1.58056516845059 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 TEST AT 2.0 IVTNUM = 12 BVS = 2.0 AVS = COSH(BVS) IF (AVS - 0.37620E+01) 20120, 10120, 40120 40120 IF (AVS - 0.37624E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 3.76219569108363 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0121 CONTINUE CT013* TEST 13 A NEGATIVE ARGUMENT IVTNUM = 13 AVS = COSH(-2.0) IF (AVS - 0.37620E+01) 20130, 10130, 40130 40130 IF (AVS - 0.37624E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 3.76219569108363 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0131 CONTINUE CT014* TEST 14 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 14 AVS = COSH(-1.0E-34) IF (AVS - 0.99995E+00) 20140, 10140, 40140 40140 IF (AVS - 0.10001E+01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000E+00 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0141 CONTINUE CT015* TEST 15 POSITIVE VALUES SUPPLIED AS ARGUMENTS C***** TO BOTH FUNCTIONS IN AN EXPRESSION IVTNUM = 15 AVS = SINH(3.25) + COSH(3.25) IF (AVS - 0.25789E+02) 20150, 10150, 40150 40150 IF (AVS - 0.25792E+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 25.79033991719306 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 197 STOP END *END-OF,FM377 FM378.f 481036328 170 2 100666 11768 ` *HEADER,FORTR,FM378 *FILES1,FORTR,FM378,X C*********************************************************************** C***** FORTRAN 77 C***** FM378 C***** XTANH - (199) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST INTRINSIC FUNCTION TANH 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 9 ZPROG = 'FM378' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 199 WRITE(NUVI,19900) 19900 FORMAT(1H , / 35H XTANH - (199) INTRINSIC FUNCTIONS// 1 28H TANH (HYPERBOLIC TANGENT)// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST AT ZERO (0.0) IVTNUM = 1 BVS = 0.0 AVS = TANH(BVS) IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 A NEGATIVE ARGUMENT IVTNUM = 2 AVS = TANH(-2.5) IF (AVS + 0.98667E+00) 20020, 10020, 40020 40020 IF (AVS + 0.98656E+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = -0.98661429815143 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 A VARIABLE SUPPLIED AS AN ARGUMENT IVTNUM = 3 BVS = 4.75 AVS = TANH(BVS) IF (AVS - 0.99980E+00) 20030, 10030, 40030 40030 IF (AVS - 0.99990E+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.99985030754498 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 A POSITIVE REAL NUMBER SUPPLIED AS AN ARGUMENT IVTNUM = 4 AVS = TANH(15.125) IF (AVS - 0.99995E+00) 20040, 10040, 40040 40040 IF (AVS - 0.10001E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.99999999999985 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 TEST WITH LARGE VALUES IVTNUM = 5 BVS = 10.0 ** 2 AVS = TANH(BVS) IF (AVS - 0.99995E+00) 20050, 10050, 40050 40050 IF (AVS - 0.10001E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 TEST WITH LARGE VALUES IVTNUM = 6 BVS = -100.0 * 10.0 AVS = TANH(BVS) IF (AVS + 0.10001E+01) 20060, 10060, 40060 40060 IF (AVS + 0.99995E+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = -1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 7 BVS = 3.0E+36 AVS = TANH(BVS) IF (AVS - 0.99995E+00) 20070, 10070, 40070 40070 IF (AVS - 0.10001E+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 8 BVS = -1.0E-15 AVS = TANH(BVS) IF (AVS + 0.10001E-14) 20080, 10080, 40080 40080 IF (AVS + 0.99995E-15) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = -1.00000000000000E-15 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 THE FUNCTION APPLIED TWICE IVTNUM = 9 AVS = TANH(0.5) * TANH(0.75) IF (AVS - 0.29349E+00) 20090, 10090, 40090 40090 IF (AVS - 0.29353E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.293513228313886 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 199 STOP END *END-OF,FM378 FM379.f 481036332 170 2 100666 12704 ` *HEADER,FORTR,FM379 *FILES1,FORTR,FM379,X C*********************************************************************** C***** FORTRAN 77 C***** FM379 C***** XRFOR - (201) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REF C***** TEST TRIGONOMETRIC FORMULAE 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 10 ZPROG = 'FM379' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 201 WRITE(NUVI,20101) 20101 FORMAT(1H , / 35H XRFOR - (201) INTRINSIC FUNCTIONS// 1 24H TRIGONOMETRIC FORMULAE// 2 20H SUBSET REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVS = 3.1415926535897932384626434 C***** CT001* TEST 1 LN(EXP(X)) = 1 IVTNUM = 1 BVS = 17.5 AVS = ALOG(EXP(1.75)) - BVS / 10.0 IF (AVS + 0.50000E-04) 20010, 10010, 40010 40010 IF (AVS - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 SIN**2 + COS**2 = 1 IVTNUM = 2 BVS = 10.0 / 4.0 CVS = SIN(BVS) ** 2 DVS = COS(BVS) ** 2 AVS = CVS + DVS - 1.0 IF (AVS + 0.50000E-04) 20020, 10020, 40020 40020 IF (AVS - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 SIN(2X) = 2*SIN(X)*COS(X) IVTNUM = 3 BVS = 8.5 CVS = BVS * (-0.5) AVS = (SIN(-4.25) * COS(CVS)) * 2.0 - SIN(-8.5) IF (AVS + 0.50000E-04) 20030, 10030, 40030 40030 IF (AVS - 0.50000E-04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 ARCSIN(X) = ARCCOS(1-X**2) IVTNUM = 4 AVS = ASIN(-0.875) + ACOS(SQRT(1.0 - (0.875) ** 2)) IF (AVS + 0.50000E-04) 20040, 10040, 40040 40040 IF (AVS - 0.50000E-04) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 TAN(X)**2 - 1 = -COS(2X)/COS(X)**2 IVTNUM = 5 BVS = 7.0 AVS = COS(1.75) / COS(BVS / 8.0) ** 2 + TAN(0.875) ** 2 - 1 1 IF (AVS + 0.50000E-04) 20050, 10050, 40050 40050 IF (AVS - 0.50000E-04) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 ATAN(X/Y) = ATAN2(X,Y), Y > 0 IVTNUM = 6 BVS = 12.0 CVS = ATAN2(BVS / 4.0, BVS / 3.0) AVS = CVS - ATAN(0.75) IF (AVS + 0.50000E-04) 20060, 10060, 40060 40060 IF (AVS - 0.50000E-04) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0061 CONTINUE CT007* TEST 7 SQRT(X)**2 = X IVTNUM = 7 AVS = SQRT(9.125) ** 2 - 9.125 IF (AVS + 0.50000E-04) 20070, 10070, 40070 40070 IF (AVS - 0.50000E-04) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0071 CONTINUE CT008* TEST 8 LN(X) = LN(10) * LOG10(X) IVTNUM = 8 BVS = 62.5 / 1000.0 AVS = ALOG10(BVS) * ALOG(10.0) - ALOG(0.0625) IF (AVS + 0.50000E-04) 20080, 10080, 40080 40080 IF (AVS - 0.50000E-04) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0081 CONTINUE CT009* TEST 9 COSH**2 - SINH**2 = 1 IVTNUM = 9 BVS = 0.125 CVS = SINH(2.125) DVS = COSH(2.0 + BVS) AVS = DVS ** 2 - CVS ** 2 - COSH(0.0) IF (AVS + 0.50000E-04) 20090, 10090, 40090 40090 IF (AVS - 0.50000E-04) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 TANH(X) = 1 - 2/(EXP(2X)+1) IVTNUM = 10 BVS = 5.0 CVS = 2.0 DVS = ALOG10(BVS * CVS) - SQRT(4.0) / 1 (EXP(2.0 * (BVS - CVS)) + COS(0.0)) AVS = DVS - TANH(3.0) IF (AVS + 0.50000E-04) 20100, 10100, 40100 40100 IF (AVS - 0.50000E-04) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 201 STOP END *END-OF,FM379 FM401.f 481036337 170 2 100666 35213 ` *HEADER,FORTR,FM401 *FILES1,FORTR,FM401,X PROGRAM FM401 C C C THIS ROUTINE TESTS FOR PROPER EDITING OF LOGICAL DATA BY C THE L EDIT DESCRIPTOR OF THE FORMAT SPECIFICATION. THE L EDIT C DESCRIPTOR IS FIRST TESTED FOR PROPER EDITING ON OUTPUT BY C DIRECTING THE EDITED RESULT TO A PRINT FILE. THE RESULTS MUST C BE VISUALLY CHECKED FOR CORRECTNESS BY EXAMINING THE EXECUTION C REPORT PRODUCED BY THIS ROUTINE. NEXT A NONPRINTER FILE WHICH C IS CONNECTED FOR SEQUENTIAL ACCESS IS CREATED WITH LOGICAL DATA C FIELDS AND THEN REPOSITIONED TO THE FIRST RECORD IN THE FILE. C THE FILE IS THEN READ USING THE SAME EDIT DESCRIPTORS AS WERE C USED TO CREATE THE FILE AND THE INTERNAL DATA REPRESENTATION AS A C RESULT OF READING THE LOGICAL DATA IS CHECKED. C THE FOLLOWING L EDITING TESTS ARE MADE TO SEE THAT C C (1) THE VALUE T OR F IS PRODUCED ON OUTPUT WHEN THE INTERNAL C DATUM IS TRUE AND FALSE RESPECTIVELY, C (2) THE VALUE OF THE INPUT LIST ITEM IS TRUE OR FALSE C WHEN THE INPUT FIELD IS T AND F RESPECTIVELY, C (3) THE VALUES .T, .F, T, F, .TRUE., .FALSE., .T, AND C .F ARE ACCEPTABLE FORMS FOR INPUT DATA FIELDS C (4) THE INPUT VALUES T OR F MAY BE FOLLOWED BY C ADDITIONAL CHARACTERS IN THE FIELD, C (5) THE REPEATABLE EDIT DESCRIPTOR FOR L EDITING FUNCTIONS C CORRECTLY, C (6) THE FIELDS CONTAINING LOGICAL DATA CAN BE WRITTEN C USING ONE L EDIT DESCRIPTOR AND READ USING A DIFFERENT C FORM OF THE L EDIT DESCRIPTOR. C C REFERENCES - C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7, LOGICAL TYPE C SECTION 13.1.1, FORMAT STATEMENT C SECTION 13.5.10, L EDITING C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION LAON15(5), LAON12(2) DIMENSION IDUMP(132) 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C C TEST 001 THROUGH 007 TESTS THE L EDIT DESCRIPTOR FOR PROPER C EDITING OF LOGICAL DATUM ON OUTPUT. TO VALIDATE THESE TESTS C THE EDITED DATUM IS SENT TO A PRINT FILE AND THEREFORE MUST BE C VISUALLY CHECKED FOR CORRECTNESS. ON OUTPUT THE EDITED FIELD C CONSISTS OF W-1 (W IS NUMBER OF POSITIONS IN THE FIELD) BLANKS C FOLLOWED BY A T OR F AS THE VALUE OF THE DATUM IS TRUE OR FALSE C RESPECTIVELY. SEE SECTION 13.5.10 L EDITING. C C 80052 FORMAT (1H ,4X,48HTESTS 001 THROUGH 007 MUST BE VISUALLY VERIFIED. 1) 80054 FORMAT (1H ,56HIMMEDIATELY FOLLOWING THIS NARRATIVE IS A REFERENCE 1 LINE) 80056 FORMAT (1H ,52HOF THE FORM '123456 ...'. THE REFERENCE LINE IS T 1O) 80058 FORMAT (1H ,49HAID IN THE VISUAL VERIFICATION OF THE TESTS. FOR) 80062 FORMAT (1H ,50HTHE OUTPUT TO BE CORRECT THE DATA VALUES DISPLAYED) 80064 FORMAT (1H ,54HIN THE COMPUTED COLUMN MUST MATCH THAT IN THE CORRE 1CT ) 80066 FORMAT (1H ,44HCOLUMN IN BOTH VALUE AND CHARACTER POSITION.) 80072 FORMAT (1H ,26HREFERENCE LINE - ,10H1234567890,5X,10H1234 1567890) WRITE (I02,80052) WRITE (I02,80054) WRITE (I02,80056) WRITE (I02,80058) WRITE (I02,80062) WRITE (I02,80064) WRITE (I02,80066) WRITE (I02,90004) WRITE (I02,80072) C C **** FCVS PROGRAM 401 - TEST 001 **** C C TEST 001 TESTS FOR PROPER EDITING OF THE L EDIT DESCRIPTOR C ON OUTPUT WHERE THE FIELD IS 1 POSITION IN LENGTH, THE C VALUE OF THE DATUM IS TRUE AND THE OUTPUT LIST ITEM IS A C VARIABLE. C IVTNUM = 001 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE LCON01 = .TRUE. 0012 FORMAT (1H ,4X,I5,26X,L1,14X,1HT) WRITE (I02, 0012) IVTNUM, LCON01 GO TO 0021 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM 0021 CONTINUE C C **** FCVS PROGRAM 401 - TEST 002 **** C C TEST 002 IS SIMILAR TO TEST 001 EXCEPT THAT THE OUTPUT LIST C ITEM IS AN ARRAY ELEMENT. C IVTNUM = 002 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE LAON12(2) = .TRUE. 0022 FORMAT (1H ,4X,I5,26X,L1,14X,1HT) WRITE (I02, 0022) IVTNUM, LAON12(2) GO TO 0031 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM 0031 CONTINUE C C **** FCVS PROGRAM 401 - TEST 003 **** C C TEST 003 TESTS TO SEE THAT ON OUTPUT 9 BLANKS PRECEDE THE VALUE C T WHERE THE L EDIT DESCRIPTOR INDICATES THAT THE FIELD OCCUPIES C 10 POSITIONS. THE VALUE OF THE INTERNAL DATUM IS TRUE. C IVTNUM = 003 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE LCON01 = .TRUE. 0032 FORMAT (1H ,4X,I5,17X,L10,5X,10H T) WRITE (I02, 0032) IVTNUM, LCON01 GO TO 0041 30030 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0041 CONTINUE C C **** FCVS PROGRAM 401 - TEST 004 **** C C TEST 004 TESTS TO SEE THAT THE VALUE F IS PRODUCED ON OUTPUT C WHEN THE VALUE OF THE INTERNAL DATUM IS FALSE AND THE L EDITING C FIELD IS 1 POSITION IN LENGTH. C IVTNUM = 004 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE LCON02 = .FALSE. 0042 FORMAT (1H ,4X,I5,26X,L1,14X,1HF) WRITE (I02, 0042) IVTNUM, LCON02 GO TO 0051 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM 0051 CONTINUE C C **** FCVS PROGRAM 401 - TEST 005 **** C C TEST 005 VERIFIES THAT ON OUTPUT 9 BLANKS PRECEDE THE VALUE F C WHERE THE L EDIT DESCRIPTOR IS L10 (FIELD OCCUPIES 10 POSITIONS). C THE VALUE OF THE INTERNAL DATUM IS FALSE. C IVTNUM = 005 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE LCON02 = .FALSE. 0052 FORMAT (1H ,4X,I5,17X,L10,5X,10H F) WRITE (I02, 0052) IVTNUM, LCON02 GO TO 0061 30050 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0061 CONTINUE C C **** FCVS PROGRAM 401 - TEST 006 **** C C TEST 006 TESTS THE OPTIONAL REPEAT SPECIFICATION OF THE L C EDIT DESCRIPTOR WHERE THE FIELD OCCUPIES 1 POSITION (EDIT C DESCRIPTOR IS 5L1). C IVTNUM = 006 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE LCON01 = .TRUE. LCON02 = .FALSE. LCON03 = .FALSE. LAON12(1) = .FALSE. LAON12(2) = .TRUE. 0062 FORMAT (1H ,4X,I5,17X,5H ,5L1,5X,10H TFFFT) WRITE (I02, 0062) IVTNUM, LCON01, LCON02, LCON03, LAON12(1), 1LAON12(2) GO TO 0071 30060 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0071 CONTINUE C C *** FCVS PROGRAM 401 - TEST 007 **** C C TEST 007 TESTS THE OPTIONAL REPEAT SPECIFICATION OF THE L C EDIT DESCRIPTOR WHERE THE FIELD OCCUPIES 3 POSITIONS (EDIT C DESCRIPTOR IS 3L3). C IVTNUM = 007 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE LCON01 = .TRUE. LCON02 = .FALSE. LAON12(2) = .TRUE. 0072 FORMAT (1H ,4X,I5,17X,1H ,3L3,5X,10H T F T) WRITE (I02, 0072) IVTNUM, LCON01, LCON02, LAON12(2) GO TO 0081 30070 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0081 CONTINUE C C THE FOLLOWING BLOCK OF SOURCE CODE BEGINNING WITH COMMENT LINE C **** CREATE-FILE SECTION AND ENDING WITH THE COMMENT LINE C **** END-OF-CREATE-FILE SECTION BUILDS A FILE WHICH IS USED IN C TESTING THE L EDIT DESCRIPTOR. THE FILE PROPERTIES ARE C C FILE IDENTIFIER - I08 (X-NUMBER 08) C RECORD SIZE - 80 CHARACTERS C ACCESS METHOD - SEQUENTIAL C RECORD TYPE - FORMATTED C DESIGNATED DEVICE - DISK C TYPE OF DATA - LOGICAL (L FORMAT) C RECORDS IN FILE - 141 C C THE FIRST 20 POSITIONS OF EACH RECORD IN THE FILE UNIQUELY C IDENTIFY THAT RECORD. THE REMAINING POSITONS OF THE RECORD C CONTAIN DATA WHICH IS USED IN TESTING THE L EDIT DESCRIPTOR. C A DESCRIPTION OF EACH FIELD OF THE 20-CHARACTER PREAMBLE FOLLOWS. C C VARIABLE NAME IN PROGRAM CHARACTER POSITIONS C ----------------------- ------------------- C C IPROG (ROUTINE NAME) - 1 THRU 3 C IFILE (LOGICAL/ X-NUMBER) - 4 THRU 5 C ITOTR (RECORDS IN FILE) - 6 THRU 9 C IRLGN (CHARACTERS IN RECORD) - 10 THRU 12 C IRECN (RECORD NUMBER) - 13 THRU 16 C IEOF (9999 IF LAST RECORD) - 17 THRU 20 C C DEFAULT ASSIGNMENT FOR FILE IS I08 = 07 I08 = 07 CX080 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-080 CX081 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-081 IPROG = 401 IFILE = I08 ITOTR = 141 IRLGN = 80 IRECN = 0 IEOF = 0 C C THERE ARE 10 SETS OF 14 RECORDS PER SET PLUS ONE C TRAILER RECORD FOR A TOTAL OF 141 DATA RECORDS IN THE FILE. C ALTHOUGH ONLY 12 RECORDS ARE USED IN TESTING, THE FILE IS MADE C LARGER TO PRECLUDE THE FILE FROM BEING TOTALY STORED IN MEMORY C DURING EXECUTION OF THIS ROUTINE. C C C C **** CREATE-FILE SECTION LCON01 = .TRUE. LCON02 = .FALSE. 70001 FORMAT (I3,I2,I4,I3,2I4,58X,1HT,1HF) 70002 FORMAT (I3,I2,I4,I3,2I4,40X,10H T,10H F) 70003 FORMAT (I3,I2,I4,I3,2I4,47X,6H.TRUE.,7H.FALSE.) 70004 FORMAT (I3,I2,I4,I3,2I4,56X,2H.T,2H.F) 70005 FORMAT (I3,I2,I4,I3,2I4,48X,6H .T,6H .F) 70006 FORMAT (I3,I2,I4,I3,2I4,38X,15HTHIS IS ALLOWED,7HFINALLY) 70007 FORMAT (I3,I2,I4,I3,2I4,48X,6HTRUE ,6HFALSE ) 70008 FORMAT (I3,I2,I4,I3,2I4,40X,10H .TIME. ,10H .FIELD. ) 70009 FORMAT (I3,I2,I4,I3,2I4,07X,53HTHIS IS VERY LARGE FIELD FOR INPUT 1OF LOGICAL VALUES.) 70010 FORMAT (I3,I2,I4,I3,2I4,55X,5HTFTFT) 70011 FORMAT (I3,I2,I4,I3,2I4,44X,16H T T F F) 70012 FORMAT (I3,I2,I4,I3,2I4,55X,L5) 70013 FORMAT (I3,I2,I4,I3,2I4,55X,4X,L1) 70014 FORMAT (I3,I2,I4,I3,2I4,59X,1H ) DO 4012 I=1,10 IRECN = IRECN + 1 WRITE (I08, 70001) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70002) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70004) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70006) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70007) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70008) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70009) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70010) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70011) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IRECN = IRECN + 1 WRITE (I08, 70012) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, LCON01 IRECN = IRECN + 1 WRITE (I08, 70012) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, LCON02 IRECN = IRECN + 1 WRITE (I08, 70013) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, LCON01 4012 CONTINUE IRECN = IRECN + 1 IEOF = 9999 WRITE (I08, 70014) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF ENDFILE I08 REWIND I08 WRITE (I02, 90004) 70015 FORMAT (53H FILE I08 HAS BEEN CREATED AND CONTAINS 141 RECORDS) 70016 FORMAT (1H ,38HINCORRECT NUMBER OF RECORDS IN FILE - , I4 , 8H RE 1CORDS) 70017 FORMAT (1H ,49HWRITTEN BUT 141 RECORDS SHOULD HAVE BEEN WRITTEN.) IF (IRECN - 141) 4013, 4014, 4013 4013 WRITE (I02, 70016) IRECN WRITE (I02, 70017) GO TO 4015 4014 WRITE (I02, 70015) WRITE (I02, 90004) 4015 CONTINUE C C **** END-OF-CREATE-FILE SECTION C C C C TEST 8 AND 9 VERIFY THAT ON INPUT THE VALUE T AND F IS TRUE C AND FALSE RESPECTIVELY. THE FIELD IS ONE POSITION IN LENGTH AND C USES THE EDIT DESCRIPTOR L1. C C LVON01 = .FALSE. LVON02 = .TRUE. 0082 FORMAT (78X,L1,L1) READ (I08, 0082) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT IS FOR TESTS 8 C AND 9 C C C **** FCVS PROGRAM 401 - TEST 008 **** C C C TEST 8 TESTS THE FIELD VALUE T FOR A TRUE CONDITION. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40080 IF (IVCOMP - 1) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 401 - TEST 009 **** C C C TEST 9 TESTS THE VALUE F FOR A FALSE CONDITION C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40090 IF (IVCOMP - 0) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C C THE INPUT FIELD MAY CONSIST OF OPTIONAL BLANKS FOLLOWED BY T OR C F. TEST 10 AND 11 VERIFY THAT THE VALUE T OR F PRECEDED BY BLANKS C ON INPUT IS TRUE OR FALSE RESPECTIVELY. THE EDIT DESCRIPTOR BEING C TESTED IS L10 (INPUT FIELD HAS 10 POSITIONS). C C LVON01 = .FALSE. LVON02 = .TRUE. 0102 FORMAT (60X,L10,L10) READ (I08, 0102) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT IS FOR TESTS 10 C AND 11 C C **** FCVS PROGRAM 401 - TEST 010 **** C C C TEST 10 TESTS A FIELD OF BLANKS FOLLOWED BY A T FOR A TRUE C CONDITION. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40100 IF (IVCOMP - 1) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 401 - TEST 011 **** C C C TEST 11 TESTS A FIELD OF BLANKS FOLLOWED BY A F FOR A FALSE C CONDITION C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40110 IF (IVCOMP - 0) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C C TESTS 12 AND 13 VERIFY THAT THE FIELD CONTENTS .TRUE . OR C .FALSE. ARE ACCEPTABLE INPUT FORMS AND THE VALUE OF THE INTERNAL C DATUM IS TRUE OR FALSE RESPECTIVELY. C C LVON01 = .FALSE. LVON02 = .TRUE. 0122 FORMAT (67X,L6,L7) READ (I08, 0122) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT IS FOR TESTS 12 C AND 13 C C **** FCVS PROGRAM 401 - TEST 012 **** C C C TEST 12 TESTS THE INPUT FIELD CONTENTS .TRUE. FOR A TRUE C CONDITION. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40120 IF (IVCOMP - 1) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 401 - TEST 013 **** C C C TEST 13 TESTS THE INPUT FIELD CONTENTS .FALSE. FOR A FALSE C CONDITION. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40130 IF (IVCOMP - 0) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C C TESTS 14 AND 15 VERIFY THAT VALUE .T OR .F ARE ACCEPTABLE INPUT C FORMS AND THAT THE VALUE OF THE INTERNAL DATUM IS TRUE OR FALSE C RESPECTIVELY. C C LVON01 = .FALSE. LVON02 = .TRUE. 0142 FORMAT (76X,L2,L2) READ (I08, 0142) LVON01, LVON02 C THE ABOVE READ STATEMENT AND ASSOCIATED FORMAT IS FOR TESTS C 14 AND 15 C C C **** FCVS PROGRAM 401 - TEST 014 **** C C TEST 14 TESTS THE INPUT FIELD CONTENTS .T FOR A TRUE CONDITION C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40140 IF (IVCOMP - 1) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 401 - TEST 015 **** C C C TEST 15 TESTS THE INPUT FIELD CONTENTS .F FOR A FALSE CONDITION C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40150 IF (IVCOMP - 0) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C C TEST 16 AND 17 VERIFY THAT VALUE .T OR .F PRECEDED BY BLANKS C ARE ACCEPTABLE INPUT FORMS AND THE VALUE OF THE INTERNAL DATA C AS A RESULT OF THE READ ARE TRUE AND FALSE RESPECTIVELY. C C LVON01 = .FALSE. LVON02 = .TRUE. 0162 FORMAT (68X,L6,L6) READ (I08, 0162) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT ARE FOR TESTS C 16 AND 17. C C C **** FCVS PROGRAM 401 - TEST 016 **** C C TEST 16 TESTS THE INPUT FIELD CONTENTS .T PRECEDED BY 4 BLANKS C FOR A TRUE CONDITION. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40160 IF (IVCOMP - 1) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 401 - TEST 017 **** C C C TEST 17 TESTS THE INPUT FIELD CONTENTS .F PRECEDED BY 4 BLANKS C FOR A FALSE CONDITION. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40170 IF (IVCOMP - 0) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C C THE INPUT FIELD MAY HAVE T OR F FOLLOWED BY ADDITIONAL C CHARACTERS IN THE FIELD. TESTS 18 THROUGH 24 VERIFY THAT T OR F C FOLLOWED BY ADDITIONAL CHARACTERS ARE ACCEPTABLE INPUT FORMS AND C THE VALUE OF THE LOGICAL ENTITIES AS A RESULT OF THE READ ARE TRUE C AND FALSE RESPECTIVELY. C C LVON01 = .FALSE. LVON02 = .TRUE. 0182 FORMAT (58X,L15,L7) READ (I08, 0182) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT ARE FOR TESTS C 18 AND 19. C C **** FCVS PROGRAM 401 - TEST 018 **** C C C TEST 18 TESTS THE INPUT FIELD CONTENTS OF 'THIS IS ALLOWED' C FOR A TRUE CONDITION. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40180 IF (IVCOMP - 1) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 401 - TEST 019 **** C C C TEST 19 TEST THE INPUT FIELD CONTENTS 'FINALLY' FOR A C FALSE CONDITION. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40190 IF (IVCOMP - 0) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 401 - TEST 020 **** C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE LVON01 = .FALSE. LVON02 = .TRUE. 0202 FORMAT (68X,L6,L6) READ (I08, 0202) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENTS ARE FOR TESTS C 20 AND 21. C C TEST 20 TESTS THE INPUT FIELD CONTENTS OF 'TRUE ' (T FOLLOWED C BY CHARACTERS WHICH INCLUDE SPACES) FOR A TRUE CONDITION. C IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40200 IF (IVCOMP - 1) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 401 - TEST 021 **** C C C TEST 21 TESTS THE INPUT FIELD CONTENTS OF 'FALSE ' C (F FOLLOWED BY CHARACTERS WHICH INCLUDE SPACES) FOR A FALSE C CONDITION. C C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40210 IF (IVCOMP - 0) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 401 - TEST 022 **** C C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE LVON01 = .FALSE. LVON02 = .TRUE. 0222 FORMAT (60X,L10,L10) READ (I08, 0222) LVON01, LVON02 C THE ABOVE READ AND ASSOCIATED FORMAT STATEMENT ARE FOR TESTS C 22 AND 23. C C TEST 22 TESTS THE INPUT FIELD CONTENTS OF ' .TIME. ' (.T C FOLLOWED BY CHARACTERS WHICH INCLUDE SPACES AND PERIODS) FOR A C TRUE CONDITION. C IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40220 IF (IVCOMP - 1) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 401 - TEST 023 **** C C C TEST 23 TESTS THE INPUT FIELD CONTENTS OF ' .FIELD. ' (.F C FOLLOWED BY CHARACTERS WHICH INCLUDE SPACES AND PERIODS) FOR A C FALSE CONDITION. C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 1 IF (.NOT. LVON02) IVCOMP = 0 IVCORR = 0 40230 IF (IVCOMP - 0) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 401 - TEST 024 **** C C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE LVON01 = .FALSE. 0242 FORMAT (27X,L53) READ (I08, 0242) LVON01 C C TEST 24 TESTS USE OF A LARGE INPUT FIELD WITH THE CONTENTS C 'THIS IS A VERY LARGE FIELD FOR INPUT OF LOGICAL VALUES. '. THE C EDIT DESCRIPTOR IS L53 AND THE VALUE OF THE INTERNAL DATUM AS A C RESULT OF THE READ SHOULD GIVE A TRUE CONDITION. C IVCOMP = 0 IF (LVON01) IVCOMP = 1 IVCORR = 1 40240 IF (IVCOMP - 1) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 401 - TEST 025 **** C C C TEST 25 TESTS USE OF THE OPTIONAL REPEAT SPECIFICATION WITH C THE L EDIT DESCRIPTOR. THE INPUT FIELD IS 1 POSITION IN LENGTH. C C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE LAON15(1) = .FALSE. LAON15(2) = .TRUE. LAON15(3) = .FALSE. LAON15(4) = .TRUE. LAON15(5) = .FALSE. 0252 FORMAT (75X,5L1) READ (I08, 0252) (LAON15(I), I = 1, 5) IVCOMP = 1 IVCORR = 2310 IF (LAON15(1)) IVCOMP = IVCOMP * 2 IF (.NOT. LAON15(2)) IVCOMP = IVCOMP * 3 IF (LAON15(3)) IVCOMP = IVCOMP * 5 IF (.NOT. LAON15(4)) IVCOMP = IVCOMP * 7 IF (LAON15(5)) IVCOMP = IVCOMP * 11 40250 IF (IVCOMP - 2310) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 401 - TEST 026 **** C C C TEST 26 IS SIMILAR TO TEST 25 EXCEPT THAT EACH INPUT FIELD C CONTAINING LOGICAL DATA IS 4 CHARACTERS IN LENGTH. THE EDIT C DESCRIPTOR IS 4L4. C C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE LAON15(1) = .FALSE. LAON15(2) = .FALSE. LAON15(3) = .TRUE. LAON15(4) = .TRUE. 0262 FORMAT (64X,4L4) READ (I08, 0262) (LAON15(I), I = 1, 4) IVCOMP = 1 IVCORR = 210 IF (LAON15 (1)) IVCOMP = IVCOMP * 2 IF (LAON15(2)) IVCOMP = IVCOMP * 3 IF (.NOT. LAON15(3)) IVCOMP = IVCOMP * 5 IF (.NOT. LAON15(4)) IVCOMP = IVCOMP * 7 40260 IF (IVCOMP - 210) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C C THE PURPOSE OF TESTS 27 THROUGH 29 IS TO VERIFY THAT RECORDS C CAN BE WRITTEN USING ONE EDIT DESCRIPTOR FORM AND READ USING C ANOTHER FORM. C C C C **** FCVS PROGRAM 401 - TEST 027 **** C C C TEST 27 READS A RECORD WITH THE EDIT DESCRIPTORS 4X,L1. THE C RECORD WAS WRITTEN USING THE DESCRIPTOR L5. THE VALUE OF THE C LOGICAL ENTITIES AS A RESULT OF THE READ SHOULD BE TRUE. C C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE LVON01 = .FALSE. 0272 FORMAT (55X,20X,4X,L1) READ (I08, 0272) LVON01 IVCOMP = 0 IVCORR = 1 IF (LVON01) IVCOMP = 1 40270 IF (IVCOMP - 1) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 401 - TEST 028 **** C C TEST 28 READS A RECORD WITH THE EDIT DESCRIPTOR 4X,L1. THE C RECORD WAS WRITTEN USING THE EDIT DESCRIPTOR L5. THIS TEST IS C SIMILAR TO TEST 27 EXCEPT THE VALUE OF THE LOGICAL ENTITIES AS A C RESULT OF THE READ SHOULD BE FALSE. C C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE LVON02 = .TRUE. 0282 FORMAT (55X,20X,4X,L1) READ (I08, 0282) LVON02 IVCOMP = 1 IVCORR = 0 IF (.NOT. LVON02) IVCOMP = 0 40280 IF (IVCOMP - 0) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C **** FCVS PROGRAM 401 - TEST 029 **** C C C TEST 29 READS A RECORD WITH THE EDIT DESCRIPTOR L5. THE C RECORD WAS WRITTEN USING THE EDIT DESCRIPTORS 4X,L1. THE VALUE C OF INTERNAL DATUM AS A RESULT OF THE READ SHOULD BE TRUE. C C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE LVON01 = .FALSE. 0292 FORMAT (55X,20X,L5) READ (I08, 0292) LVON01 IVCOMP = 0 IVCORR = 1 IF (LVON01) IVCOMP = 1 40290 IF (IVCOMP - 1) 20290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C C C C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST C REPORT AND BEFORE THE TEST REPORT SUMMARY. C C ***** BEGIN-FILE-DUMP SECTION ***** C C CDB** C REWIND I08 C ITOTR = 141 C IRNUM = 1 C ILUN = I08 C7701 FORMAT (I3,I2,I4,I3,2I4,60A1) C7702 FORMAT (1H ,I3,I2,I4,I3,2I4,60A1) C7703 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,13H RECORDS - OK) C7704 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,27H RECORDS - THERE SHOULD BE , C 1I3,9H RECORDS.) C DO 7771 IRNUM = 1, ITOTR C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C IF (IEOF .EQ. 9999) GO TO 7772 C7771 CONTINUE C GO TO 7775 C7772 IF (IRNUM - ITOTR) 7774, 7773, 7775 C7773 WRITE (I02, 7703) ILUN, IRNUM C GO TO 7779 C7774 WRITE (I02, 7704) ILUN, IRNUM, ITOTR C GO TO 7779 C7775 DO 7776 I = 1,20 C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C IRNUM = IRNUM + 1 C IF (IEOF .EQ. 9999) GO TO 7777 C7776 CONTINUE C7777 WRITE (I02 , 7704) ILUN, IRNUM, ITOTR C7779 CONTINUE CDE** * END-FILE-DUMP SECTION * C TEST 029 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD C HAVE MADE 29 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR C SEQUENTIAL ACCESS C C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM401) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM401) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM401 FM402.f 481036344 170 2 100666 41474 ` *HEADER,FORTR,FM402 *FILES1,FORTR,FM402,X PROGRAM FM402 C C C C THIS ROUTINE TESTS THE A(W) (W IS SIZE OF FIELD IN CHARACTERS) C EDIT DESCRIPTOR OF THE FORMAT SPECIFICATION BOTH WITH AND WITHOUT C THE OPTIONAL W. THE A EDIT DESCRIPTOR IS USED WITH AN INPUT/ C OUTPUT LIST ITEM OF TYPE CHARACTER. IF A FIELD WIDTH W IS SPECI- C FIED WITH THE A EDIT DESCRIPTOR THE FIELD CONSISTS OF W CHARAC- C TERS. IF A FIELD WIDTH W IS NOT SPECIFIED WITH THE A EDIT DES- C CRIPTOR, THE NUMBER OF CHARACTERS IN THE FIELD IS THE LENGTH OF C THE CHARACTER INPUT/OUTPUT LIST ITEM. THIS ROUTINE FIRST C TESTS FOR PROPER EDITING OF CHARACTER DATA ON OUTPUT BY DIRECTING C THE EDITED RESULT TO A PRINT FILE. RESULTS OF THIS SET OF C TESTS MUST BE VISUALLY CHECKED FOR CORRECTNESS. NEXT AN EXTERNAL C FILE CONNECTED FOR SEQUENTIAL ACCESS IS CREATED WITH CHARACTER C DATA. FINALLY THE FILE IS REWOUND AND READ WITH THE A(W) EDIT C DESCRIPTOR AND CHECKED FOR PROPER EDITING ON INPUT. C C THIS ROUTINE TESTS FOR PROPER EDITING BY C C (1) THE A EDIT DESCRIPTOR WITHOUT THE OPTIONAL W ON BOTH INPUT C AND OUTPUT, C C (2) THE AW EDIT DESCRIPTOR WHEN THE LENGTH OF THE INPUT/OUTPUT C LIST ITEM IS LESS THAN THE WIDTH W, C C (3) THE AW EDIT DESCRIPTOR WHEN THE LENGTH OF THE INPUT/OUTPUT C LIST ITEM IS BOTH EQUAL TO AND GREATER THAN THE WIDTH W, C C (4) THE A EDIT DESCRIPTOR WHEN USED WITH THE OPTIONAL REPEAT C SPECIFICATION. C C REFERENCES - C C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 3.1, FORTRAN CHARACTER SET C SECTION 4.8, CHARACTER TYPE C SECTION 8.4.2, CHARACTER TYPE-STATEMENT C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT C SECTION 13.5.11, A EDITING C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION IDUMP (80) DIMENSION CATN11(46), CATN12(5), CATN31(2,3,2), CATN14(46) CHARACTER CATN11*1, CVTN11*1, CATN12*5, CATN31*1 CHARACTER CVTN12*10, CVTN13*2, CATN14*1, CCTN15*50, CVTN15*50 CHARACTER CVTN01*1 DATA CATN14 /46*' '/ DATA CCTN15 /'ABCDEFG HIJKLMN OPQRSTUVWXYZ 0123456789'/ DATA CATN11 / '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 1'=', '+', '-','*', '/', '(', ')', ',', '.', '''','A', 'B', 'C', 2'D', 'E', 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 3'Q', 'R', 'S','T', 'U', 'V', 'W', 'X', 'Y', 'Z'/ DATA CATN12 /'ABMYZ', '01589', '=+-()','A5+Z.' ,'1''A,4'/ 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C C TEST 001 THROUGH 014 TESTS THE EDIT DESCRIPTOR FOR PROPER C EDITING OF CHARACTER DATA ON OUTPUT. TO VALIDATE THESE TESTS C THE EDITED DATA IS SENT TO A PRINT FILE AND THEREFORE MUST BE C VISUALLY CHECKED FOR CORRECTNESS. ON OUTPUT THE EDITED FIELD C SIZE IS AW WHERE W IS NUMBER OF POSITIONS IN THE FIELD OR C IS THE SIZE OF THE OUTPUT DATUM ITEM. SEE SECTION 13.5.11 A C EDITING C C 80052 FORMAT (1H ,4X,48HTESTS 001 THROUGH 014 MUST BE VISUALLY VERIFIED. 1) 80054 FORMAT (1H ,56HIMMEDIATELY FOLLOWING THIS NARRATIVE IS A REFERENCE 1 LINE) 80056 FORMAT (1H ,52HOF THE FORM '123456 ...'. THE REFERENCE LINE IS T 1O) 80058 FORMAT (1H ,49HAID IN THE VISUAL VERIFICATION OF THE TESTS. FOR) 80062 FORMAT (1H ,50HTHE OUTPUT TO BE CORRECT THE DATA VALUES DISPLAYED 1) 80064 FORMAT (1H ,54HIN THE COMPUTED COLUMN MUST MATCH THAT IN THE CORRE 1CT ) 80066 FORMAT (1H ,44HCOLUMN IN BOTH VALUE AND CHARACTER POSITION.) 80072 FORMAT (1H ,26HREFERENCE LINE - ,10H1234567890,5X,10H1234 1567890) WRITE (I02,80052) WRITE (I02,80054) WRITE (I02,80056) WRITE (I02,80058) WRITE (I02,80062) WRITE (I02,80064) WRITE (I02,80066) WRITE (I02,90004) WRITE (I02,80072) C C **** FCVS PROGRAM 402 - TEST 001 **** C C TEST 001 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR C ON OUTPUT WHERE THE FIELD IS 1 POSITION IN LENGTH, THE C VALUE OF THE DATUM IS LETTERS AND THE OUTPUT LIST ITEM IS A C VARIABLE. C IVTNUM = 001 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE CVTN01 = 'A' 0012 FORMAT (1H ,4X,I5,26X,A,14X,1HA) WRITE (I02, 0012) IVTNUM, CVTN01 GO TO 0021 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM 0021 CONTINUE C C **** FCVS PROGRAM 402 - TEST 002 **** C C TEST 002 IS SIMILAR TO TEST 001 EXCEPT THAT THE OUTPUT LIST C ITEM IS AN ARRAY ELEMENT. C IVTNUM = 002 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE CATN31 (1,2,1) = 'Z' 0022 FORMAT (1H ,4X,I5,26X,A,14X,1HZ) WRITE (I02, 0022) IVTNUM, CATN31 (1,2,1) GO TO 0031 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM 0031 CONTINUE C C *** FCVS PROGRAM 402 - TEST 003 **** C C TEST 003 VERIFIES THAT THE A EDIT DESCRIPTOR (WITHOUT THE C W OPTION) CAN PROPERLY EDIT SPECIAL CHARACTERS ON OUTPUT. THE C SPECIAL CHARACTER / (SLASH) IS USED FOR THIS TEST AND IS STORED C IN AN OUTPUT LIST ITEM 1 POSITION IN LENGTH. C IVTNUM = 003 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE CVTN11 = '/' 0032 FORMAT (1H ,4X,I5,26X,A,14X,1H/) WRITE (I02, 0032) IVTNUM, CVTN11 GO TO 0041 30030 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0041 CONTINUE C C *** FCVS PROGRAM 402 - TEST 004 *** C C TEST 004 IS SIMILAR TO TEST 003 EXCEPT THAT THE DATA BEING C EDITED IS NUMERIC. C IVTNUM = 004 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE CVTN11 = '9' 0042 FORMAT (1H ,4X,I5,26X,A,14X,1H9) WRITE (I02, 0042) IVTNUM, CVTN11 GO TO 0051 30040 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0051 CONTINUE C C *** FCVS PROGRAM 402 - TEST 005 *** C C TEST 005 IS SIMILAR TO TEST 003 EXCEPT THAT IT USES THE SPECIAL C CHARACTER QUOTE. C IVTNUM = 005 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE CVTN11 = '''' 0052 FORMAT (1H ,4X,I5,26X,A,14X,1H') WRITE (I02, 0052) IVTNUM, CVTN11 GO TO 0061 30050 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM C C C TESTS 006 THROUGH TEST 011 TESTS THE A EDIT DESCRIPTOR C WITHOUT THE FIELD WIDTH SPECIFICATION (W OPTION) WHERE THE SIZE C OF THE OUTPUT DATA ITEM IS 05 CHARACTERS IN LENGTH. C C 0061 CONTINUE C C **** FCVS PROGRAM 402 - TEST 006 **** C C TEST 006 TESTS USE OF THE A EDIT DESCRIPTOR WITH LETTERS C IVTNUM = 006 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE CATN12(1) = 'ABMYZ' 0062 FORMAT(1H ,4X,I5,17X,5H ,A,5X,10H ABMYZ) WRITE (I02, 0062) IVTNUM, CATN12(1) GO TO 0071 30060 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0071 CONTINUE C C **** FCVS PROGRAM 402 - TEST 007 **** C C TEST 007 TESTS USE OF THE A EDIT DESCRIPTOR WITH DIGITS C IVTNUM = 007 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE CATN12(2) = '01589' 0072 FORMAT(1H ,4X,I5,17X,5H ,A,5X,10H 01589) WRITE (I02, 0072) IVTNUM, CATN12(2) GO TO 0081 30070 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0081 CONTINUE C C **** FCVS PROGRAM 402 - TEST 008 **** C C TEST 008 TESTS USE OF THE A EDIT DESCRIPTOR WITH SPECIAL C CHARACTERS. C IVTNUM = 008 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE CATN12(3) = '=+-()' 0082 FORMAT(1H ,4X,I5,17X,5H ,A,5X,10H =+-()) WRITE (I02, 0082) IVTNUM, CATN12(3) GO TO 0091 30080 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0091 CONTINUE C C **** FCVS PROGRAM FM402 - TEST 009 **** C C TEST 009 TESTS USE OF THE A EDIT DESCRIPTOR WITH A MIX C OF LETTERS, DIGITS AND SPECIAL CHARACTERS C IVTNUM = 009 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE CATN12(4) = 'A5+.Z' 0092 FORMAT(1H ,4X,I5,17X,5H ,A,5X,10H A5+.Z) WRITE (I02, 0092) IVTNUM, CATN12(4) GO TO 0101 30090 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0101 CONTINUE C C **** FCVS PROGRAM FM402 - TEST 010 **** C C TEST 010 TESTS USE OF THE A EDIT DESCRIPTOR WITH A MIX C OF LETTERS, DIGITS AND SPECIAL CHARACTERS INCLUDING APOSTROPES C IVTNUM = 010 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE CATN12(5) = '1''A,4' 0102 FORMAT(1H ,4X,I5,17X,5H ,A,5X,10H 1'A,4) WRITE (I02, 0102) IVTNUM, CATN12(5) GO TO 0111 30100 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM C 0111 CONTINUE C **** FCVS PROGRAM FM402 - TEST 11 **** C C TEST 011 USES THE A EDIT DESCRIPTOR (WITHOUT THE OPTIONAL C FIELD WIDTH SPECIFIED) WITH THE OPTIONAL REPEAT SPECIFICATION. C EACH OUTPUT LIST ITEM WILL BE ONE CHARACTER IN LENGTH. C IVTNUM = 011 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE 0112 FORMAT (1H ,4X,I5,17X,10A,5X,10H059=+PQUVY) WRITE (I02, 0112) IVTNUM, CATN11(1), CATN11(6), CATN11(10), 1CATN11(11), CATN11(12), CATN11(36), CATN11(37), CATN11(41), 2CATN11(42), CATN11(45) GO TO 0121 30110 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0121 CONTINUE C C **** FCVS PROGRAM FM402 - TEST 12 **** C C TEST 012 IS SIMILAR TO 011 IN THAT THE A DESCRIPTOR IS USED C WITH THE OPTIONAL REPEAT SPECIFICATION E. G., 3A HOWEVER, EACH C OUTPUT LIST ITEM HAS A DIFFERENT NUMBER OF CHARACTERS IN THE ITEM C E. G., THE FIRST I/O LIST ITEM HAS 5 CHARACTERS, THE SECOND C ITEM HAS 2 CHARACTERS AND THE THIRD ITEM HAS 1 CHARACTER. C IVTNUM = 012 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE CVTN13 = 'YZ' CVTN11 = ')' CATN12(2) = '(12AB' 0122 FORMAT (1H ,4X,I5,17X,1H*,3A,1H*,5X,10H*(12ABYZ)*) WRITE (I02, 0122) IVTNUM, CATN12(2), CVTN13, CVTN11 GO TO 0131 30120 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0131 CONTINUE C C **** FCVS PROGRAM FM402 - TEST 13 *** C C TEST 013 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR C (WITH THE FIELD WIDTH SPECIFIED) WHEN THE OUTPUT LIST ITEM C HAS FEWER CHARACTERS THAN SPECIFIED BY THE EDIT DESCRIPTOR. THE C OUTPUT FIELD SHOULD CONSISTS OF BLANKS FOLLOWED BY CHARACTERS C FROM THE INTERNAL REPRESENTATION. C IVTNUM = 013 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE CATN12(1) = 'ABMYZ' 0132 FORMAT (1H ,4X,I5,17X,A10,5X,10H ABMYZ) WRITE (I02, 0132) IVTNUM, CATN12(1) GO TO 0141 30130 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0141 CONTINUE C C **** FCVS PROGRAM FM402 - TEST 14 **** C C TEST 014 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR C (WITH THE FIELD WIDTH SPECIFIED) WHEN THE OUTPUT LIST ITEM C IS GREATER THAN THAT SPECIFIED BY THE EDIT DESCRIPTOR. THE OUTPUT C FIELD SHOULD CONSIST OF THE LEFTMOST CHARACTERS FROM THE INTERNAL C REPRESENTATION. C IVTNUM = 014 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE CVTN12 = '12345ABCDE' 0142 FORMAT (1H ,4X,I5,17X,5H ,A5,5X,10H 12345) WRITE (I02, 0142) IVTNUM, CVTN12 GO TO 0151 30140 IVDELE = IVDELE + 1 WRITE (I02, 80000) IVTNUM 0151 CONTINUE C C THE FOLLOWING BLOCK OF SOURCE CODE BEGINNING WITH COMMENT LINE C **** CREATE-FILE SECTION AND ENDING WITH THE COMMENT LINE C **** END-OF-CREATE-FILE SECTION BUILDS A FILE WHICH IS USED IN C TESTING THE A EDIT DESCRIPTOR. THE FILE PROPERTIES ARE: C C FILE IDENTIFIER - I09 (X-NUMBER 09) C RECORD SIZE - 80 CHARACTERS C ACCESS METHOD - SEQUENTIAL C RECORD TYPE - FORMATTED C DESIGNATED DEVICE - DISK C TYPE OF DATA - CHARACTER (A FORMAT) C RECORDS IN FILE - 143 PLUS THE ENDFILE RECORD C C THE FIRST 20 POSITIONS OF EACH RECORD IN THE FILE UNIQUELY C IDENTIFIES THAT RECORD. THE REMAINING POSITONS OF THE RECORD C CONTAIN DATA WHICH IS USED IN TESTING THE A EDIT DESCRIPTOR. C A DESCRIPTION OF EACH FIELD OF THE 20-CHARACTER PREAMBLE FOLLOWS. C C VARIABLE NAME IN PROGRAM CHARACTER POSITIONS C -------- ---- -- ------- --------- --------- C C IPROG (ROUTINE NAME) - 1 THRU 3 C IFILE (LOGICAL/ X-NUMBER) - 4 THRU 5 C ITOTR (RECORDS IN FILE) - 6 THRU 9 C IRLGN (CHARACTERS IN RECORD) - 10 THRU 12 C IRECN (RECORD NUMBER) - 13 THRU 16 C IEOF (9999 IF LAST RECORD) - 17 THRU 20 C C DEFAULT ASSIGNMENT FOR FILE IS I09 = 07 I09 = 07 CX090 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-090 CX091 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-091 IPROG = 402 IFILE = I09 ITOTR = 143 IRLGN = 80 IRECN = 0 IEOF = 0 C C C ***** CREATE-FILE SECTION ***** C C C **** FCVS PROGRAM 402 - TEST 015 **** C C C TEST 15 WRITES RECORDS USING THE A EDIT DESCRIPTOR WITHOUT THE C OPTIONAL FIELD WIDTH SPECIFICATION. EACH CHARACTER OF THE C FORTRAN SET IS WRITTEN WITH AN A EDIT DESCRIPTOR FROM C THE INTERNAL REPRESENTATION WHICH IS ONE CHARACTER IN LENGTH. C TEN DIFFERENT CHARACTERS ARE WRITTEN IN EACH RECORD UNTIL THE C FULL CHARACTER SET IS EXHAUSTED. THIS SEQUENCE IS REPEATED UNTIL C 50 RECORDS HAVE BEEN WRITTEN (5 RECORDS PER SET AND 10 SETS). C THE RECORDS ARE WRITTEN TO A MASS STORAGE FILE. C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE 70003 FORMAT (I3,I2,I4,I3,2I4,50X,10A) 70004 FORMAT (I3,I2,I4,I3,2I4,54X,6A) IRECN = 0 DO 4023 I=1,10 IRECN = IRECN + 1 WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11 (J), J = 1,10) C CHARACTERS 0 THROUGH 9 ARE CONTAINED IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 11,20) C CHARACTERS =,+,-,*,/,(,),,,. AND ' ARE IN THIS RECORD. IRECN = IRECN + 1 WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 21,30) C CHARACTERS A THROUGH J ARE IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70003) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 31,40) C CHARACTERS K THROUGH T ARE IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70004) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 41,46) C CHARACTERS U THROUGH Z ARE IN THIS RECORD 4023 CONTINUE IVCOMP = IRECN IVCORR = 050 IVON01 = 50 40150 IF (IVON01 - IRECN ) 20150, 10150, 20150 C VALUE IN IVCOMP IS THE NUMBER OF RECORDS WRITTEN 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 402 - TEST 016 **** C C C TEST 16 IS THE SAME AS TEST 15 EXCEPT THAT THE 50 RECORDS C WRITTEN USE THE A EDIT DESCRIPTOR WITH THE OPTIONAL FIELD WIDTH C SPECIFIED. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE 70005 FORMAT (I3,I2,I4,I3,2I4,50X,10A1) 70006 FORMAT (I3,I2,I4,I3,2I4,54X,6A1) IRECN = 50 DO 4024 I=1,10 IRECN = IRECN + 1 WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 1,10) C CHARACTERS 0 THROUGH 9 ARE CONTAINED IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 11,20) C CHARACTERS =,+,-,*,/,(,),,,. AND ' ARE IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 21,30) C CHARACTERS A THROUGH J ARE IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70005) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 31,40) C CHARACTERS K THROUGH T ARE IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70006) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (CATN11(J), J = 41,46) C CHARACTERS U THROUGH Z ARE IN THIS RECORD 4024 CONTINUE IVCOMP = IRECN - 50 IVCORR = 50 IVON01 = 100 40160 IF (IVON01 - IRECN) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 402 - TEST 017 **** C C C TEST 17 WRITES 40 RECORDS CONTAINING CHARACTER DATA WHICH IS C USED FOR LATER TESTS. THE FILE SHOULD CONTAIN 140 RECORDS C FOLLOWING EXECUTION OF THIS TEST. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE 70007 FORMAT (I3,I2,I4,I3,2I4,60HABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 1 ) 70008 FORMAT (I3,I2,I4,I3,2I4,60H=+-*/(),'.ABMYZ01589=+-()A5+Z.1'A,4 1 ) IRECN = 100 DO 4025 I = 1,20 IRECN = IRECN + 1 WRITE (I09, 70007) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF C CHARACTERS 0 THROUGH 9 AND A THROUGH Z ARE IN THIS RECORD IRECN = IRECN + 1 WRITE (I09, 70008) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF C SPECIAL CHARACTERS ARE IN THIS RECORD 4025 CONTINUE IVCOMP = IRECN - 100 IVCORR = 40 IVON01 = 140 40170 IF (IVON01 - IRECN) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 402 - TEST 018 **** C C C TEST 18 WRITES A RECORD WHICH CONTAINS A LONG FIELD (50 CHAR- C ACTERS) USING AN A EDIT DESCRIPTOR WITHOUT THE OPTIONAL FIELD C WIDTH SPECIFICATION. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IRECN = 141 70009 FORMAT (I3,I2,I4,I3,2I4,10X,A) WRITE (I09, 70009) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, CCTN15 IVCOMP = IRECN - 140 IVCORR = 1 IVON01 = 141 40180 IF (IVON01 - IRECN) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 402 - TEST 019 **** C C C TEST 19 WRITES A LONG FIELD (50 CHARACTERS) C USING AN A EDIT DESCRIPTOR WITH THE OPTIONAL FIELD WIDTH C SPECIFICATION. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IRECN = 142 70010 FORMAT (I3,I2,I4,I3,2I4,10X,A50) WRITE (I09, 70010) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, CCTN15 IVCOMP = IRECN - 141 IVCORR = 1 IVON01 = 142 40190 IF (IVON01 - IRECN) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 402 - TEST 020 **** C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IRECN = IRECN + 1 IEOF = 9999 70011 FORMAT (I3,I2,I4,I3,2I4,59X,1H ) WRITE (I09, 70011) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF ENDFILE I09 REWIND I09 WRITE (I02, 90004) 70012 FORMAT (53H FILE I09 HAS BEEN CREATED AND CONTAINS 143 RECORDS) 70013 FORMAT (39H INCORRECT NUMBER OF RECORDS IN FILE - , I5 ,08H RECO 1RDS) 70014 FORMAT (50H WRITTEN BUT 143 RECORDS SHOULD HAVE BEEN WRITTEN.) IF (IRECN - 143) 4020, 4021, 4020 4020 WRITE (I02, 70013) IRECN WRITE (I02, 70014) GO TO 4022 4021 WRITE (I02, 70012) WRITE (I02, 90004) C C **** END-OF-CREATE-FILE SECTION **** C 4022 CONTINUE C C TESTS 20 THROUGH 24 READ 5 OF THE FIRST 50 RECORDS USING THE C A EDIT DESCRIPTOR WITHOUT THE OPTIONAL FIELD WIDTH SPECIFICATION. C EACH CHARACTER IS CHECKED FOR PROPER EDITING. THE FIELDS ARE C WRITTEN AND READ WITH THE SAME A EDIT DESCRIPTOR FORM. THE C RESULTING NUMBER FROM EACH TEST IN IVCOMP AND IVCORR IS C THE NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT OF THE READ. C C C TEST 20 READS AND CHECKS THE CHARACTERS 0 THROUGH 9. THE C VALUE RESULTING FROM THE TEST IN IVCOMP AND IVCORR REFLECTS THE C NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT OF THE READ. C IVCOMP = 0 IVCORR = 10 0202 FORMAT (70X,10A) READ (I09, 0202) (CATN14(J), J = 1,10) DO 0203 I=1,10 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0203 CONTINUE 40200 IF (IVCOMP - 10) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 402 - TEST 021 **** C C C TEST 21 READS AND CHECKS THE CHARACTERS =,+,-,*,/,(,),,,., AND C '. THE NUMBER RESULTING FROM THE TEST IN IVCOMP AND IVCORR C REFLECTS THE NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT OF C THE READ. C C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVCOMP = 0 IVCORR = 10 0212 FORMAT (70X,10A) READ (I09, 0212) (CATN14(J), J = 11,20) DO 0213 I = 11,20 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0213 CONTINUE 40210 IF (IVCOMP - 10) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 402 - TEST 022 **** C C C TEST 22 READS AND CHECKS THE CHARACTERS A THROUGH J. C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVCOMP = 0 IVCORR = 10 0222 FORMAT (70X,10A) READ (I09, 0222) (CATN14(J), J = 21,30) DO 0223 I = 21,30 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0223 CONTINUE 40220 IF (IVCOMP - 10) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 402 - TEST 023 **** C C C TEST 23 READS AND CHECKS THE CHARACTERS K THROUGH T. C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVCOMP = 0 IVCORR = 10 0232 FORMAT (70X,10A) READ (I09, 0232) (CATN14(J), J = 31,40) DO 0233 I = 31,40 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0233 CONTINUE 40230 IF (IVCOMP - 10) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 402 - TEST 024 **** C C C TEST 24 READS AND CHECKS THE CHARACTERS U THROUGH Z. C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVCOMP = 0 IVCORR = 06 0242 FORMAT (74X,6A) READ (I09, 0242) (CATN14(J), J = 41,46) DO 0243 I = 41,46 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0243 CONTINUE 40240 IF (IVCOMP - 6) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C C TESTS 25 THROUGH 29 READ RECORD NUMBERS 56 THROUGH 60 USING C THE A EDIT DESCRIPTOR WITH THE OPTIONAL FIELD WIDTH SPECIFIED. C EACH FIELD IS 1 CHARACTER IN LENGTH AND IS CHECKED FOR PROPER C EDITING. THE FIELDS ARE WRITTEN AND READ WITH THE SAME EDIT C DESCRIPTOR. THE NUMBER RESULTING FROM EACH TEST IN IVCOMP AND C IVCORR IS THE THE NUMBER OF CORRECT CHARACTERS FOUND AS A RESULT C OF THE READ. C C 70020 FORMAT (12X,2I4,59X,A1) REWIND I09 DO 4026 I = 1, 150 READ (I09, 70020, END = 4027) IRECN, IEOF IF (IRECN .EQ. 55) GO TO 4027 4026 CONTINUE 4027 IF (IRECN - 55) 4028, 4029, 4028 C C THE CODE IMMEDIATELY PRECEDING POSITIONS THE FILE TO RECORD C NUMBER 55 FOR TESTS 25 THROUGH 29. C 70021 FORMAT (64H THE INITIAL RECORD FOR TESTS 25 THROUGH 29 COULD NOT 1BE FOUND,) 70022 FORMAT (49H THEREFORE TESTS 25 THROUGH 29 ARE DELETED.) 4028 WRITE (I02, 70021) WRITE (I02, 70022) GO TO 301 4029 CONTINUE DO 4030 I = 1,46 CATN14(I) = ' ' 4030 CONTINUE C C THE ABOVE DO LOOP INITIALIZES THE ARRAY CATN14 TO BLANKS. C C C **** FCVS PROGRAM 402 - TEST 025 **** C C C TEST 25 READS AND CHECKS THE CHARACTERS 0 THROUGH 9. C C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE IVCOMP = 0 IVCORR = 10 0252 FORMAT (70X,10A1) READ (I09, 0252) (CATN14(J), J = 1, 10) DO 0253 I = 1,10 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0253 CONTINUE 40250 IF (IVCOMP - 10) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 402 - TEST 026 **** C C C TEST 26 READS AND CHECKS THE CHARACTERS =,+,-,*,/,(,),,,., AND C '. C C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE IVCOMP = 0 IVCORR = 10 0262 FORMAT (70X,10A1) READ (I09, 0262) (CATN14(J), J = 11, 20) DO 0263 I = 11,20 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0263 CONTINUE 40260 IF (IVCOMP -10) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 402 - TEST 027 **** C C C TEST 27 READS AND CHECKS THE CHARACTERS A THROUGH J. C C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE IVCOMP = 0 IVCORR = 10 0272 FORMAT (70X,10A1) READ (I09, 0272) (CATN14(J), J = 21,30) DO 0273 I = 21,30 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0273 CONTINUE 40270 IF (IVCOMP - 10) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 402 - TEST 028 **** C C C TEST 28 READS AND CHECKS THE CHARACTERS K THROUGH T. C C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE IVCOMP = 0 IVCORR = 10 0282 FORMAT (70X,10A1) READ (I09, 0282) (CATN14(J), J = 31,40) DO 0283 I = 31, 40 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0283 CONTINUE 40280 IF (IVCOMP - 10) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C **** FCVS PROGRAM 402 - TEST 029 **** C C C TEST 29 READS AND CHECKS THE CHARACTERS U THROUGH Z. C C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE IVCOMP = 0 IVCORR = 6 0292 FORMAT (74X,6A1) READ (I09, 0292) (CATN14(J), J = 41,46) DO 0293 I = 41,46 IF (CATN14(I) .EQ. CATN11(I)) IVCOMP = IVCOMP + 1 0293 CONTINUE 40290 IF (IVCOMP - 6) 20290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C C C TESTS 30 THROUGH 32 READ RECORD NUMBERS 101 THROUGH 103. THESE C TESTS TEST FOR PROPER EDITING ON INPUT WHERE THE INPUT FIELD C AND THE INPUT LIST ITEM ARE OF DIFFERENT SIZES. C C 70031 FORMAT (12X,2I4,59X,A1) REWIND I09 DO 4031 I = 1,150 READ (I09, 70031, END = 4032) IRECN, IEOF IF (IRECN .EQ. 100) GO TO 4032 4031 CONTINUE 4032 IF (IRECN - 100) 4033, 4034, 4033 70032 FORMAT (64H THE START RECORD FOR TESTS 30 THROUGH 32 COULD NOT 1BE FOUND,) 70033 FORMAT (49H THEREFORE TESTS 30 THROUGH 32 ARE DELETED.) 4033 WRITE (I02, 70032) WRITE (I02, 70033) GO TO 331 4034 CONTINUE C C **** FCVS PROGRAM 402 - TEST 030 **** C C C TEST 30 TESTS THE A EDIT DESCRIPTOR WITH THE OPTIONAL REPEAT C SPECIFICATION. THE A EDIT DESCRIPTOR DOES NOT HAVE THE OPTIONAL C FIELD WIDTH SPECIFICATION AND THE INPUT LIST ITEMS VARY IN SIZE C FROM 1 TO 10 CHARACTERS. RECORD NUMBER 101 IS READ AND WAS C CREATED IN TEST 17 WITH THE FORMAT STATEMENT C C FORMAT (I3,I2,I4,I3,2I4,60HABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 C 1 ) C C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE IVCOMP = 1 IVCORR = 210 CATN14(1) = ' ' CVTN13 = ' ' CATN12(3) = ' ' CVTN12 = ' ' 0302 FORMAT (20X,4A,42X,A1) READ (I09, 0302, END = 0303) CATN14(1), CVTN13, CATN12(3), CVTN12 0303 IF (CATN14(1) .EQ. 'A') IVCOMP = IVCOMP * 2 IF (CVTN13 .EQ. 'BC') IVCOMP = IVCOMP * 3 IF (CATN12(3) .EQ. 'DEFGH') IVCOMP = IVCOMP * 5 IF (CVTN12 .EQ. 'IJKLMNOPQR') IVCOMP = IVCOMP * 7 40300 IF (IVCOMP - 210) 20300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C C **** FCVS PROGRAM 402 - TEST 031 **** C C C TEST 31 TESTS FOR PROPER EDITING OF THE A EDIT DESCRIPTOR WHEN C THE SPECIFIED WIDTH OF THE DESCRIPTOR IS LESS THAN THE INTERNAL C REPRESENTATION OF THE INPUT LIST ITEM. THE CHARACTERS SHOULD C APPEAR LEFT-JUSTIFIED WITH TRAILING BLANKS IN THE INTERNAL C REPRESENTATION. RECORD NUMBER 102 IS READ AND WAS CREATED C IN TEST 17 WITH THE FORMAT STATEMENT C C FORMAT (I3,I2,I4,I3,2I4,60H=+-*/(),'.ABMYZ01589=+-()A5+Z.1'A,4 C 1 ) C C C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE CVTN12 = '9999999999' IVCOMP = 0 IVCORR = 1 0312 FORMAT (20X,10X,A5,40X) READ (I09, 0312, END = 0313) CVTN12 0313 IF (CVTN12 .EQ. 'ABMYZ ') IVCOMP = 1 40310 IF (IVCOMP - 1) 20310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C **** FCVS PROGRAM 402 - TEST 032 **** C C C TEST 32 TESTS FOR PROPER EDITING OF THE A EDIT C DESCRIPTOR WHEN THE WIDTH OF THE DESCRIPTOR IS GREATER THAN THE C INTERNAL REPRESENTATION OF THE INPUT LIST ITEM. THE RIGHTMOST C CHARACTERS SHOULD BE TAKEN FROM THE INPUT FIELD. RECORD NUMBER C 103 IS EXPECTED TO BE READ. THE RECORD WAS CREATED IN TEST 17 C WITH THE FORMAT STATEMENT C C FORMAT (I3,I2,I4,I3,2I4,60HABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 C 1 ) C C C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE CATN12 (5) = 'AAAAA' IVCOMP = 0 IVCORR = 1 0322 FORMAT (20X,10X,A10,35X) READ (I09, 0322, END = 0323) CATN12 (5) 0323 IF (CATN12(5) .EQ. 'PQRST') IVCOMP = 1 40320 IF (IVCOMP - 1) 20320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C C TESTS 33 AND 34 READ A LONG INPUT FIELD (50 CHARACTERS) AND C CHECK RESULTING INTERNAL REPRESENTATION. THE RECORD IS READ C WITH THE SAME A EDIT DESCRIPTOR AS WAS USED TO WRITE THE RECORD. C C 70034 FORMAT (12X,2I4,60X) REWIND I09 DO 4035 I = 1,150 READ (I09, 70034, END = 4036) IRECN, IEOF IF (IRECN .EQ. 140) GO TO 4036 4035 CONTINUE 4036 IF (IRECN - 140) 4037, 4038, 4037 C THE ABOVE CODE POSITIONS THE FILE TO RECORD NUMBER 140 FOR C TESTS 33 AND 34. C 70035 FORMAT (61H THE START RECORD FOR TESTS 33 AND 34 COULD NOT BE 1FOUND,) 70036 FORMAT (45H THEREFORE TESTS 33 AND 34 ARE DELETED.) 4037 WRITE (I02, 70035) WRITE (I02, 70036) GO TO 351 4038 CONTINUE C C **** FCVS PROGRAM 402 - TEST 033 **** C C C TEST 33 READS A LONG FIELD WITH THE WIDTH SPECIFIED ON THE A C EDIT DESCRIPTOR. RECORD NUMBER 141 IS READ. THE RECORD WAS C CREATED IN TEST 18 AND CONTAINS FIELD DATA OF C C 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 0123456789' C C WITHOUT THE SURROUNDING APOSTROPHES. C C C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE CVTN15 = ' ' IVCOMP = 0 IVCORR = 1 0332 FORMAT (20X,10X,A50) READ (I09, 0332) CVTN15 IF (CVTN15 .EQ. 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 012345678 19') IVCOMP = 1 40330 IF (IVCOMP -1 ) 20330, 10330, 20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C C **** FCVS PROGRAM 402 - TEST 034 **** C C C TEST 34 READS A LONG FIELD USING THE A EDIT DESCRIPTOR C WITHOUT THE OPTIONAL WIDTH SPECIFIED. RECORD NUMBER 142 IS READ. C THE RECORD WAS CREATED IN TEST 19 AND CONTAINS THE FIELD DATA C C 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 0123456789' C C WITHOUT THE SURROUNDING APOSTROPHES. C C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE CVTN15 = ' ' IVCOMP = 0 IVCORR = 1 0342 FORMAT (20X,10X,A) READ (I09, 0342) CVTN15 IF (CVTN15 .EQ. 'ABCDEFG HIJKLMN OPQRSTUVWXYZ 012345678 19') IVCOMP = 1 40340 IF (IVCOMP - 1) 20340, 10340, 20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 CONTINUE C C C C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST C REPORT AND BEFORE THE TEST REPORT SUMMARY. C CDB** BEGIN FILE DUMP CODE C REWIND I09 C IRNUM = 1 C IRLGN = 80 C ILUN = I09 C7701 FORMAT (I3,I2,I4,I3,2I4,60A1) C7702 FORMAT (1H ,I3,I2,I4,I3,2I4,60A1) C7703 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,13H RECORDS - OK) C7704 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,27H RECORDS - THERE SHOULD BE , C 1I3,9H RECORDS.) C DO 7771 IRNUM = 1, ITOTR C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C IF (IEOF .EQ. 9999) GO TO 7772 C7771 CONTINUE C GO TO 7775 C7772 IF (IRNUM - ITOTR) 7774, 7773, 7775 C7773 WRITE (I02, 7703) ILUN, IRNUM C GO TO 7779 C7774 WRITE (I02, 7704) ILUN, IRNUM, ITOTR C GO TO 7779 C7775 DO 7776 I = 1,20 C READ (ILUN, 7701) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C WRITE (I02, 7702) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, C 1 (IDUMP(ICH), ICH = 1,60) C IRNUM = IRNUM + 1 C IF (IEOF .EQ. 9999) GO TO 7777 C7776 CONTINUE C7777 WRITE (I02, 7704) ILUN, IRNUM, ITOTR C7779 CONTINUE CDE** END OF DUMP CODE C C THERE SHOULD BE 34 TESTS IN THIS ROUTINE C C C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM402) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM402) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM402 FM403.f 481036351 170 2 100666 39580 ` *HEADER,FORTR,FM403 *FILES1,FORTR,FM403,XX C*********************************************************************** C***** FORTRAN 77 C***** FM403 FMTRW - (020) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REFS C***** TO TEST SIMPLE FORMAT AND FORMATTED DATA 12.9.5.2 C***** TRANSFER STATEMENTS IN EXTERNAL SEQUENTIAL I/O SO 13.1.1 C***** THAT THESE FEATURES MAY BE USED IN OTHER TEST 12.8.1 C***** PROGRAM SEGMENTS FOR INTEGER, REAL, AND LOGICAL C***** DATA TYPES. C***** RESTRICTIONS OBSERVED 12.8.2 C***** * ALL FORMAT STATEMENTS ARE LABELED 13.1.1 C***** * H DESCRIPTOR ARE NEVER REPEATED 13.2.1 C***** * FOR W.D DESCRIPTORS, D IS ALWAYS SPECIFIED AND C***** W IS EQUAL TO OR GREATER THAN D C***** * FIELD WIDTH IS NEVER ZERO 13.2.1 C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE LIST ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION C***** * ITEMS IN I/O LIST CORRESPOND TO EDIT DESCRIPTORS 13.3 C***** * NEGATIVE OUTPUT VALUES ARE SIGNED 13.5.9 C***** * FIELD WIDTH NEVER EXCEEDED BY OUTPUT 13.5.9 C***** * FOR I EDITING, EXTERNAL INPUT FIELDS ARE 13.5.9.1 C***** INTEGER CONSTANTS C***** GENERAL COMMENTS C***** PLUS SIGNS FOR INPUT FIELDS ARE USUALLY OMITTED 13.5.9 C***** FORMATTED WRITES WITHOUT AN I/O LIST (FORMAT 13.5.2 C***** STATEMENTS TEST H AND X DESCRIPTORS AND SLASH 13.5.3 C***** RECORD DIVIDERS) 13.5.4 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C INPUT DATA TO THIS SEGMENT CONSISTS OF 27 CARD IMAGES IN COL. 1 - 80 COL. 1----------------------------------------------------------61 CARD 1 999 CARD 2 555554444 CARD 3 666 777777 8 CARD 4 333333111112222222255555444444444444 CARD 5 7.7123456.7 CARD 6 8.889.9997.123456 CARD 7 5.44446.5555533.133.133.133.1444.1 CARD 8 5555.15555.1 66666.166666.1 44.22 CARD 9 2.12.12.12.12.1666.3334.3334.3334.333 CARD 10 -0.1E+01+0.22E-01 0.333E+02 0.4444E+03-0.55555E-03+0.666666E+ COL. 62------------77 CARD 10 00+0.9876543E+12 COL. 1----------------------------------------------------------61 CARD 11 TABC CARD 12 FDEFFGHIT*+T1F/).TRUE..FALSE. CARD 13 -9.9-9.9-9.9-9.9 CARD 14 9999999999 CARD 15 .9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9 CARD 16 TFTFTFTFTF CARD 17 99999999 CARD 18 9999999999999999TFFT9.99.99.99.99.9 CARD 19 T F T F CARD 20 3334444.555550 CARD 21 9876.5498.7654E2 9876.54 987.654 86.4786E286.4786 CARD 22 9.8765698.7654E2 9876.54 987.654 86.4786E286.4786 CARD 23 122333544888611222 CARD 24 455666233444966111 CARD 25 788999377555899777 CARD 26 11112 334 559 880 11 CARD 27 6 778 995 441 222 00 C***** C***** S P E C I F I C A T I O N S SEGMENT 020 C***** DIMENSION EP1S(33),CMA1S(5),IAC1I(5),IAC2I(2,7),MCA1I(5) REAL A1S(5),A2S(2,2),A3S(3,3,3),AC1S(25),AC2S(5,6) INTEGER I2I(2,2),I3I(2,2,2),MCA3I(2,3,3) LOGICAL MCA1B(7),A1B(2),A2B(2,2),A3B(2,2,2),AVB,CVB,DVB ,MCBVB C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** I N P U T - O U T P U T ASSIGNMENT STATEMENTS IRVI = I01 NUVI = I02 IVTOTL = 59 ZPROG = 'FM403' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** HEADER FORMAT STATEMENT 2000 FORMAT ( // 2X,37HFMTRW - (020) FORMATTED DATA TRANSFER//2X, 141HSUBSET REFS - 12.9.5.2 13.3 13.5.9 ) WRITE (NUVI,2000) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** CT001* TEST 1 - FORMAT WITH DIGITS 0-9 IN H FIELDS IVTNUM = 1 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70010) 70010 FORMAT (25X,22H 10101010101010101010,9H999999999,8H88888888/27X, 17H7777777,6H666666,5H55555,4H4444,3H333,2H22,1H1) IVINSP = IVINSP + 1 WRITE (I02,70011) 70011 FORMAT(1H ,16X,10HCORRECT: ,22X,29HCORRESPONDING LINE MUST MATCH) WRITE (I02,70012) 70012 FORMAT (25X,' 1010101010101010101099999999988888888', 1 /25X,' 7777777666666555554444333221 ') CT002* TEST 2 - FORMAT CONTAINING ALL LETTERS (A-Z) IN H FIELDS AND C***** A VARIABLE NUMBER OF BLANKS IN H AND X FIELDS IVTNUM = 2 REMRKS = '9 COMPUTED LINES EXPECTED' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70020) 70020 FORMAT(27X,3HAAA,5X,5H ,3HBBB,10X,3HCCC/28X,3HDDD,9X,3HEEE 1,9H ,3HFFF/29X,3HGGG,8X,3HHHH,8H ,3HIII/27X,3H 2,3HJJJ,7H ,3HKKK,7X,3HLLL/31X,3HMMM,6X,3HNNN,6H ,3HOOO/ 3 32X,3HPPP,5H ,3HQQQ,5X,3HRRR/33X,3HSSS,4X,3HTTT,4H ,3HUUU/ 4 27X,1 53H VVV ,3HWWW,3X,3HXXX/37X,3HYYY,3X,3HZZZ) IVINSP = IVINSP + 1 WRITE (I02,70011) WRITE (I02,70021) 70021 FORMAT (27X,'AAA BBB CCC', 1 /27X,' DDD EEE FFF ', 2 /27X,' GGG HHH III ', 3 /27X,' JJJ KKK LLL ', 4 /27X,' MMM NNN OOO ', 5 /27X,' PPP QQQ RRR ', 6 /27X,' SSS TTT UUU ', 7 /27X,' VVV WWW XXX ', 8 /27X,' YYY ZZZ ') CT003* TEST 3 - FORMAT CONTAINING H FIELD WITH ALL POSSIBLE C***** SPECIAL CHARACTERS IVTNUM = 3 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70030) 70030 FORMAT (25X,21H = + - * / ( ) , . ') IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70031) 70031 FORMAT (25X, ' = + - * / ( ) , . ''') C***** FORMAT TO TEST VERTICAL SPACING C***** 12.9.5.2.3 CT004* TEST 4 - FORMAT STATEMENT ENDING WITH ONE SLASH DESCRIPTOR IVTNUM = 4 REMRKS = 'SLASH DESCRIPTOR' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,70040) 70040 FORMAT(15X, 30H FORMAT(14H SKIP 1 LINE 1 /) /) IVINSP = IVINSP + 1 WRITE (I02,70041) 70041 FORMAT(17X,34HONE BLANK LINE SHOULD APPEAR ABOVE) C ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (I02,90002) WRITE (I02,90013) WRITE (I02,90014) CT005* TEST 5 - FORMAT STATEMENT ENDING WITH TWO SLASH DESCRIPTORS IVTNUM = 5 WRITE (I02,80004) IVTNUM WRITE (I02,70050) 70050 FORMAT(15X,32H FORMAT(15H SKIP 2 LINES //) //) IVINSP = IVINSP + 1 WRITE (I02,70051) 70051 FORMAT(17X,35HTWO BLANK LINES SHOULD APPEAR ABOVE) CT006* TEST 6 - FORMAT STATEMENT ENDING WITH THREE SLASH DESCRIPTORS IVTNUM = 6 WRITE (I02,80004) IVTNUM WRITE (I02,70060) 70060 FORMAT(15X,33H FORMAT(16H SKIP 3 LINES ///) ///) IVINSP = IVINSP + 1 WRITE (I02,70061) 70061 FORMAT(17X,37HTHREE BLANK LINES SHOULD APPEAR ABOVE) CT007* TEST 7 - FORMAT STATEMENT CONTAINING IMBEDDED SLASH DESCRIPTORS IVTNUM = 7 REMRKS = 'IMBEDDED SLASHES' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,70070) 70070 FORMAT( 17X,32H1 BLANK LINE SHOULD APPEAR BELOW // 1 17X,33H2 BLANK LINES SHOULD APPEAR BELOW/// 2 17X,33H3 BLANK LINES SHOULD APPEAR BELOW/ 3(/), 3 17X,33H0 BLANK LINES SHOULD APPEAR BELOW/ 4 17X,33HEND IMBEDDED SLASHES TEST ) IVINSP = IVINSP + 1 CT008* TEST 8 - FORMS CONTROL USING '0' FOR DOUBLE SPACING IVTNUM = 8 REMRKS = 'DOUBLE SPACE' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,70080) 70080 FORMAT( 17X,33H1 BLANK LINE SHOULD APPEAR BELOW / 1H0, 1 17X,33HEND DOUBLE SPACE TEST ) IVINSP = IVINSP + 1 CT009* TEST 9 - FORMS CONTROL USING '+' FOR OVERPRINTING IVTNUM = 9 REMRKS = 'OVERPRINT' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,70090) 70090 FORMAT(/17X,27H!FIRST PRINT LINE! OVER,/1H+, 1 17X,50H P R I N T !SECOND PRINT LINE!) IVINSP = IVINSP + 1 CT010* TEST 10 - FORMS CONTROL USING '1' FOR PAGE EJECTION IVTNUM = 10 REMRKS = 'PAGE ADVANCE' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,70100) 70100 FORMAT(/17X,41HTHIS SHOULD BE THE LAST LINE ON THIS PAGE/, 157H1 NEW PAGE: END OF VERTICAL SPACING TESTS) IVINSP = IVINSP + 1 C WRITE PAGE HEADERS WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) C***** FORMATTED DATA TRANSFER I/O STATEMENTS WITH INTEGER 12.8.1 C***** VARIABLES AND ARRAY ELEMENTS IN AN I/O LIST. (THE 12.8.2 C***** NUMBER OF ITEMS IN THE LIST IS VARIABLE.) SOME 13.2.1 C***** FORMAT STATEMENTS CONTAIN REPEATED FIELDS. C***** FORMATS CONTAIN I EDIT DESCRIPTORS. 13.5.9.1 C***** FIELD WIDTHS ARE FROM 1 TO 5 DIGITS. 13.3 C***** INPUT CARD 1 2009 FORMAT (2X,I3) READ (IRVI,2009) JACVI C***** INPUT CARD 2 2010 FORMAT (1X,I5,1X,I4) READ (IRVI,2010) KBCVI, IAC1I(1) C***** INPUT CARD 3 2011 FORMAT (2X,I3,2X,3I2,2X,I1) READ (IRVI,2011) IAC2I(1,2), LCCVI, IAC1I(5), IHDVI, MCA3I(1,2,3) C***** INPUT CARD 4 2012 FORMAT (2X,2(I3),1(I5), 4I2 ,5I1,3 I4 ) READ (IRVI,2012) MDCVI, IAC2I(2,2), IAC1I(4), NECVI, IAC1I(3), 1 IAC2I(2,3), IAC2I(2,1), MRRVI, IGDVI, KGVI, IEDVI, IAC2I(1,1) 2 ,IAC1I(2), IAC2I(2,7), MCA3I(2,1,3) CT011* TEST 11 - I CONVERSION IVTNUM = 11 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70110) JACVI 70110 FORMAT (25X,I5) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70111) 70111 FORMAT (25X,5H 999) CT012* TEST 12 - I CONVERSION IVTNUM = 12 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70120) KBCVI, IAC1I(1) 70120 FORMAT (26X,I5,1X,I4) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70121) 70121 FORMAT (26X,10H 5555 4444) CT013* TEST 13 - I CONVERSION IVTNUM = 13 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70130) IAC2I(1,2),LCCVI, IAC1I(5), IHDVI, MCA3I(1,2,3) 70130 FORMAT (27X,I3,2X,3I2,2X,I1) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70131) 70131 FORMAT (27X,14H666 777777 8) CT014* TEST 14 - I CONVERSION IVTNUM = 14 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70140) WRITE (I02,70140) MDCVI, IAC2I(2,2), IAC1I(4), NECVI, IAC1I(3), 1 IAC2I(2,3), IAC2I(2,1), MRRVI, IGDVI, KGVI, IEDVI, IAC2I(1,1) 2 ,IAC1I(2), IAC2I(2,7), MCA3I(2,1,3) 70140 FORMAT (27X,2(I3),1(I5), 4I2 ,5I1,3 I4 ) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70141) 70141 FORMAT (27X,36H333333111112222222255555444444444444) C***** FORMATTED DATA TRANSFER I/O STATEMENTS WITH REAL 12.8.1 C***** VARIABLES AND ARRAY ELEMENTS IN AN I/O LIST.(THE 12.8.2 C***** NUMBER OF ITEMS IN THE LIST IS VARIABLE.) ONLY F 13.5.9.2 C***** EDIT DESCRIPTORS ARE USED IN THE FORMAT 13.5.9.2.1 C***** STATEMENTS. SOME F EDIT DESCRIPTORS ARE REPEATED. 13.3 C***** FIELD WIDTH ALWAYS CONTAINS 1 POSITION FOR DECIMAL PT. C***** FIELD WIDTH IS FROM 1 TO 7 DIGITS. PLACEMENT OF C***** DECIMAL POINT IS VARIABLE. SOME F FIELDS ARE C***** REPEATED C***** INPUT CARD 5 2018 FORMAT (2X,F3.1,F8.1) READ (IRVI,2018) ACVS, CMAVS C***** INPUT CARD 6 2019 FORMAT(2X,F4.2,F5.3,F8.6) READ (IRVI,2019) A1S(2), BCVS, CMBVS C***** INPUT CARD 7 2020 FORMAT (2X,F6.4,F7.5,4F4.1,F5.1) READ (IRVI,2020) HHCVS, CMCVS, GGCVS, FFCVS, A1S(1), AC1S(25), 1 AC2S(4,1) C***** INPUT CARD 8 2021 FORMAT (2X,2(F6.1),2X,2F7.1 ,2X,F5.2) READ (IRVI,2021) AC1S(18), AC1S(7), AC2S(4,4) , AC1S(8), AC1S(10) C***** INPUT CARD 9 2022 FORMAT (2X,5(F3.1),F7.3,3F5.3 ) READ (IRVI,2022) AC2S(3,3) , AC2S(5,1), CCVS, AC1S(12), DCVS, 1 AC1S(13), AC1S(5), A3S(1,1,2), AC2S(3,5) CT015* TEST 15 - F CONVERSION IVTNUM = 15 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70150) ACVS, CMAVS 70150 FORMAT (27X,F3.1,F8.1) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70151) 70151 FORMAT (27X,11H7.7123456.7) CT016* TEST 16 - F CONVERSION IVTNUM = 16 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70160) A1S(2), BCVS, CMBVS 70160 FORMAT(27X,F4.2,F5.3,F8.6) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70161) 70161 FORMAT (27X,17H8.889.9997.123456) CT017* TEST 17 - F CONVERSION IVTNUM = 17 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70170) HHCVS,CMCVS, GGCVS, FFCVS, A1S(1), AC1S(25) 1 ,AC2S(4,1) 70170 FORMAT (27X,F6.4,F7.5,4F4.1,F5.1) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70171) 70171 FORMAT (27X,34H5.44446.5555533.133.133.133.1444.1) CT018* TEST 18 - F CONVERSION IVTNUM = 18 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70180) AC1S(18),AC1S(7), AC2S(4,4) , AC1S(8), AC1S(10) 70180 FORMAT (27X,2(F6.1),2X,2F7.1 ,2X,F5.2) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70181) 70181 FORMAT (27X,35H5555.15555.1 66666.166666.1 44.22 ) CT019* TEST 19 - F CONVERSION IVTNUM = 19 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70190) AC2S(3,3) , AC2S(5,1), CCVS, AC1S(12), DCVS, 1 AC1S(13), AC1S(5), A3S(1,1,2), AC2S(3,5) 70190 FORMAT (27X,5(F3.1),F7.3,3F5.3 ) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70191) 70191 FORMAT (27X,37H2.12.12.12.12.1666.3334.3334.3334.333) C***** FORMATTED DATA TRANSFER I/O STATEMENTS WITH REAL 12.8.1 C***** VARIABLES AND ARRAY ELEMENTS IN AN I/O LIST. 12.8.2 C***** E EDIT DESCRIPTORS ARE USED IN THE FORMAT 13.5.9.2 C***** STATEMENTS. SOME E EDIT DESCRIPTORS ARE REPEATED 13.5.9.2.2 C***** (FIELD WIDTH ALWAYS INCLUDES 6 EXTRA POSITIONS C***** TO PROVIDE FOR SIGN, DECIMAL POINT AND EXPONENT. 13.5.9 C***** PROVISION IS ALWAYS MADE FOR THE DIGIT ZERO 13.5.9.2.1 C***** BEFORE THE DECIMAL POINT) C***** THE NUMBER OF DECIMAL PLACES VARIES FROM 1 C***** TO 7 DIGITS. C***** INPUT CARD 10 2029 FORMAT (E8.1,E9.2,E10.3,E11.4,E12.5,E13.6,E14.7) READ (IRVI,2029) AVS, BVS, EP1S(5), AC2S(1,5), CVS, AC2S(5,4), 1 A3S(2,1,2) CT020* TEST 20 - E CONVERSION IVTNUM = 20 REMRKS = 'LEADING PLUS SIGN/ZERO OPTIONAL' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70200) AVS, BVS 70200 FORMAT (27X,E8.1,2X,E9.2) IVINSP = IVINSP + 1 WRITE (I02,70201) 70201 FORMAT (1H ,16X,10HCORRECT: ,22X,26H2 CORRECT ANSWERS POSSIBLE) WRITE (I02,70202) 70202 FORMAT (27X,19H-0.1E+01 +0.22E-01/ 1 27X,19H-0.1+001 +0.22-001) C ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (I02,90002) WRITE (I02,90013) WRITE (I02,90014) CT021* TEST 21 - E CONVERSION IVTNUM = 21 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70210) EP1S(5), AC2S(1,5) 70210 FORMAT (27X,E10.3,2X,E11.4) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70211) 70211 FORMAT (27X,23H+0.333E+02 +0.4444E+03/ 1 27X,23H+0.333+002 +0.4444+003) CT022* TEST 22 - E CONVERSION IVTNUM = 22 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70220) CVS, AC2S(5,4) 70220 FORMAT (27X,E12.5,2X,E13.6) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70221) 70221 FORMAT (27X,27H-0.55555E-03 +0.666666E+00/ 1 27X,27H-0.55555-003 +0.666666+000) CT023* TEST 23 - E CONVERSION IVTNUM = 23 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70230) A3S(2,1,2) 70230 FORMAT (27X,E14.7) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70231) 70231 FORMAT (27X,14H+0.9876543E+12/ 1 27X,14H+0.9876543+012) C***** FORMATTED DATA TRANSFER I/O STATEMENTS WITH LOGICAL 12.8.2 C***** VARIABLES AND ARRAY ELEMENTS IN AN I/O LIST 13.5.10 C***** SOME L EDIT DESCRIPTORS ARE REPEATED. C***** L EDIT DESCRIPTORS ARE USED IN THE FORMAT STATEMENTS 13.2.1 C***** INPUT CARD 11 2033 FORMAT (L4) READ (IRVI,2033) A2B(2,1) C***** INPUT CARD 12 2034 FORMAT ( 2L4, L3, L2, L3, L6, L7) READ (IRVI,2034) MCA1B(1), MCBVB, A2B(1,1), A3B(1,1,1), CVB, 1 DVB, A3B(1,2,1) CT024* TEST 24 - L CONVERSION IVTNUM = 24 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70240) A2B(2,1), MCA1B(1), MCBVB, A2B(1,1), A3B(1,1,1), 1 CVB, DVB, A3B(1,2,1) 70240 FORMAT (24X, 3(L4), L3, L2, L3, 1 2(L1)) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70241) 70241 FORMAT (27X,19HT F F T T FTF) C***** FORMATTED DATA TRANSFER STATEMENTS WITH ARRAY 12.8.2 C***** NAMES OF SEVERAL TYPES IN AN I/O LIST. THE 12.9.5.2 C***** NUMBER OF ITEMS IN THE LIST IS VARIABLE. SOME 13.2.1 C***** EDIT DESCRIPTORS ARE REPEATED. C***** OPTIONAL COMMA BEFORE AND AFTER A SLASH C***** INPUT CARDS 13, 14 2037 FORMAT(2X,4(F4.1)/5(I2)) READ (IRVI,2037) A2S, MCA1I C***** INPUT CARDS 15, 16 2038 FORMAT(27(F2.1)/5(L1),5L1) READ (IRVI,2038) A3S, A1B, A3B C***** INPUT CARDS 17, 18 2039 FORMAT (2X,2(I2,I2),/,2(2(I2,I2)),2(L1,L1),2(F3.1,F3.1),F3.1) READ (IRVI,2039) I2I, I3I, A2B, CMA1S CT025* TEST 25 THRU 28 - UNSUBSCRIPTED ARRAY NAME IN I/O LISTS WRITE (I02,70250) A2S, MCA1I, A3S, A1B 70250 FORMAT (17H 25 INSPECT/1H ,16X,10HCOMPUTED: /27X,4(F4.1)/ 11H ,16X,10HCORRECT: /27X,16H-9.9-9.9-9.9-9.9/17H 26 INSPECT 2/1H ,16X,10HCOMPUTED: /27X,5(I2)/1H ,16X,10HCORRECT: /27X, 310H9999999999/17H 27 INSPECT,32X,23HLEADING PLUS SIGN/ZERO , 48HOPTIONAL/1H ,16X,10HCOMPUTED: ,22X,25H3 COMPUTED LINES EXPECTED 5/27X,3(3(F4.1))/27X,2(2(F4.1,F4.1)),F4.1/27X,9F4.1/1H ,16X, 610HCORRECT: ,22X,29HEACH RESULT LINE SHOULD EQUAL/ 7 27X,36H 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9/ 8 17H 28 INSPECT/1H ,16X,10HCOMPUTED: /27X,2L1/ 9 1H ,16X,10HCORRECT: /27X,2HTF) IVINSP = IVINSP + 4 C ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (I02,90002) WRITE (I02,90013) WRITE (I02,90014) CT029* TEST 29 THRU 33 - UNSUBSCRIPTED ARRAY NAMES IN I/O LISTS WRITE (I02,70290) A3B, I2I, I3I, A2B, CMA1S 70290 FORMAT (17H 29 INSPECT/1H ,16X,10HCOMPUTED: /27X,8(L1)/1H , 116X,10HCORRECT: /27X,8HTFTFTFTF/17H 30 INSPECT/1H ,16X, 210HCOMPUTED: /27X,4(I2)/1H ,16X,10HCORRECT: /27X,8H99999999/ 317H 31 INSPECT/1H ,16X,10HCOMPUTED: /27X,8(I2)/1H ,16X, 410HCORRECT: /27X,16H9999999999999999/17H 32 INSPECT/1H , 516X,10HCOMPUTED: /27X,4(L1)/1H ,16X,10HCORRECT: /27X,4HTFFT/ 617H 33 INSPECT/1H ,16X,10HCOMPUTED: /27X,5(F3.1)/ 7 1H ,16X,10HCORRECT: ,/, 8 27X,15H9.99.99.99.99.9) IVINSP = IVINSP + 5 CT034* TEST 34 - FORMATTED DATA TRANSFER STATEMENT TO TEST 13.5.10 C***** THAT OPTIONAL BLANKS MAY PRECEDE A LOGICAL INPUT FIELD C***** INPUT CARD 19 70340 FORMAT ( L6, L4, L10, L5) READ (IRVI,70340) AVB, MCA1B(2), A2B(1,2), A3B(2,1,2) IVTNUM = 34 REMRKS = 'LEADING BLANKS ARE REQUIRED' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70341) AVB, MCA1B(2), A2B(1,2), A3B(2,1,2) 70341 FORMAT (27X,L6, L4, L10, L5) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70342) 70342 FORMAT (27X,25H T F T F) CT035* TEST 35 C***** FORMATTED DATA TRANSFER TO TEST F EDIT DESCRIPTORS 13.5.9.2.1 C***** WHERE D IS EQUAL TO ZERO C***** INPUT CARD 20 70350 FORMAT (2X, F3.0, F5.0, F5.5, F1.0) READ (IRVI,70350) AVS, BVS, CVS, DVS IVTNUM = 35 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70351) AVS, BVS 70351 FORMAT (27X,F4.0,4X,F5.0) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70352) 70352 FORMAT (27X,4H333.,4X,5H4444.) CT036* TEST 36 C***** FORMATTED DATA TRANSFER TO TEST F EDIT DESCRIPTORS 13.5.9.2.1 C***** WHERE W EQUALS D+1 AND WHERE D IS EQUAL TO ZERO 13.2.1 IVTNUM = 36 WRITE (I02,80004) IVTNUM WRITE (I02,80020) WRITE (I02,70360) CVS, DVS 70360 FORMAT (27X,F6.5,2X,F2.0) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70361) 70361 FORMAT (27X,10H.55555 0.) CT037* TEST 37 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** I EDIT DESCRIPTORS IVTNUM = 37 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70370) MCA3I(1,2,3) 70370 FORMAT (27X,I3) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70371) 70371 FORMAT (27X,3H 8) CT038* TEST 38 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** I EDIT DESCRIPTORS IVTNUM = 38 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70380) IAC1I(3) 70380 FORMAT (27X,I4) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70381) 70381 FORMAT (27X,4H 22) CT039* TEST 39 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** I EDIT DESCRIPTORS IVTNUM = 39 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70390) NECVI 70390 FORMAT (27X,I5) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70391) 70391 FORMAT (27X,5H 22) C ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (I02,90002) WRITE (I02,90013) WRITE (I02,90014) CT040* TEST 40 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** I EDIT DESCRIPTORS IVTNUM = 40 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70400) IAC1I(3) 70400 FORMAT (27X,I6) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70401) 70401 FORMAT (27X,6H 22) CT041* TEST 41 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** I EDIT DESCRIPTORS IVTNUM = 41 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70410) IAC2I(2,3) 70410 FORMAT (27X,I7) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70411) 70411 FORMAT (27X,7H 22) CT042* TEST 42 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** F EDIT DESCRIPTORS IVTNUM = 42 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70420) ACVS 70420 FORMAT (27X,F5.1) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70421) 70421 FORMAT (27X,5H 7.7) CT043* TEST 43 CT043* TEST 43 - FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** F EDIT DESCRIPTORS IVTNUM = 43 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70430) A1S(2) 70430 FORMAT (27X,F7.2) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70431) 70431 FORMAT (27X,7H 8.88) CT044* TEST 44 - FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** F EDIT DESCRIPTORS IVTNUM = 44 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70440) BCVS 70440 FORMAT (27X,F9.3) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70441) 70441 FORMAT (27X,9H 9.999) CT045* TEST 45 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** F EDIT DESCRIPTORS IVTNUM = 45 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70450) HHCVS 70450 FORMAT (27X,F11.4) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70451) 70451 FORMAT (27X,11H 5.4444) CT046* TEST 46 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** F EDIT DESCRIPTORS IVTNUM = 46 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70460) CMCVS 70460 FORMAT (27X,F13.5) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70461) 70461 FORMAT (27X,13H 6.55555) CT047* TEST 47 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** F EDIT DESCRIPTORS IVTNUM = 47 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70470) CMBVS 70470 FORMAT (27X,F15.6) IVINSP = IVINSP + 1 WRITE (I02,80022) WRITE (I02,70471) 70471 FORMAT (27X,15H 7.123456) CT048* TEST 48 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** E EDIT DESCRIPTORS IVTNUM = 48 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70480) DCVS 70480 FORMAT (27X,E10.2) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70481) 70481 FORMAT (27X,10H 0.21E+01/ 1 27X,10H 0.21+001) CT049* TEST 49 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** E EDIT DESCRIPTORS IVTNUM = 49 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70490) AC1S(25) 70490 FORMAT (27X,E12.3) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70491) 70491 FORMAT (27X,12H 0.331E+02/ 1 27X,12H 0.331+002) C ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (I02,90002) WRITE (I02,90013) WRITE (I02,90014) CT050* TEST 50 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** E EDIT DESCRIPTORS IVTNUM = 50 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70500) AC2S(4,1) 70500 FORMAT (27X,E14.4) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70501) 70501 FORMAT (27X,14H 0.4441E+03/ 1 27X,14H 0.4441+003) CT051* TEST 51 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** E EDIT DESCRIPTORS IVTNUM = 51 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70510) AC1S(7) 70510 FORMAT (27X,E16.5) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70511) 70511 FORMAT (27X,16H 0.55551E+04/ 1 27X,16H 0.55551+004) CT052* TEST 52 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** E EDIT DESCRIPTORS IVTNUM = 52 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70520) AC1S(8) 70520 FORMAT (27X,E18.6) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70521) 70521 FORMAT (27X,18H 0.666661E+05/ 1 27X,18H 0.666661+005) CT053* TEST 53 C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH FOR THE C***** E EDIT DESCRIPTORS IVTNUM = 53 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70530) CMAVS 70530 FORMAT (27X,E20.7) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70531) 70531 FORMAT (27X,20H 0.1234567E+06/ 1 27X,20H 0.1234567+006) CT054* TEST 54 C***** SCALE FACTOR APPLIED TO F AND E EDIT DESCRIPTORS C***** ON READ, BUT NOT ON WRITE C***** INPUT CARD 21 2050 FORMAT(2PF8.3,-2PE9.4,F9.4,0PF9.4,9X,-2PE9.4,F9.4) READ(IRVI,2050)EP1S(16),EP1S(17),EP1S(18), EP1S(19), 1 EP1S(20),EP1S(22) IVTNUM = 54 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70540) EP1S(16),EP1S(17),EP1S(18) 70540 FORMAT (27X,F12.4, E12.4, F12.2) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70541) 70541 FORMAT (27X,36H 98.7654 0.9877E+04 987654.00/ 1 27X,36H 0.9877+004 ) CT055* TEST 55 C***** SCALE FACTOR APPLIED TO F AND E EDIT DESCRIPTORS C***** ON READ, BUT NOT ON WRITE IVTNUM = 55 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70550) EP1S(19),EP1S(20),EP1S(22) 70550 FORMAT( 27X,F12.3, E12.4,F12.3 ) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70551) 70551 FORMAT (27X,36H 987.654 0.8648E+04 8647.860/ 1 27X,36H 0.8648+004 ) CT056* TEST 56 C***** SCALE FACTOR APPLIED TO F AND E EDIT DESCRIPTORS C***** ON WRITE, BUT, NOT ON READ C***** INPUT CARD 22 2053 FORMAT(F8.2,E9.4,F9.2,F9.3,9X,E9.4,F9.4) READ(IRVI,2053) AC1S(1),AC1S(2),AC1S(3),AC1S(4), 1 AC1S(20),AC1S(23) IVTNUM = 56 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70560) AC1S(1),AC1S(2),AC1S(3) 70560 FORMAT (27X,2PF12.2, -2PE12.4,F12.4) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70561) 70561 FORMAT (27X,36H 987.66 0.0099E+06 98.7654/ 1 27X,36H 0.0099+006 ) CT057* TEST 57 - SCALE FACTOR APPLIED TO F AND E EDIT DESCRIPTORS C***** ON WRITE, BUT, NOT ON READ IVTNUM = 57 WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE (I02,70570) AC1S(4), AC1S(20),AC1S(23) 70570 FORMAT (27X,1PE12.2, -2PE12.4, 2PF12.2 ) IVINSP = IVINSP + 1 WRITE (I02,70201) WRITE (I02,70571) 70571 FORMAT (27X,36H 9.88E+02 0.0086E+06 8647.86/ 1 27X,36H 9.88+002 0.0086+006 ) CT058* TEST 58 - I/O FORMAT RESCAN C***** INPUT CARDS 23, 24, 25 2055 FORMAT( I1,I2,I3) READ(IRVI,2055) I2I,IAC1I IVTNUM = 58 REMRKS = '3 COMPUTED LINES EXPECTED' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE(I02,70580) I2I(1,1),I2I(2,1),I2I(1,2),I2I(2,2),IAC1I 70580 FORMAT (27X,I4,I5,I6) IVINSP = IVINSP + 1 WRITE (I02,70011) WRITE (I02,70581) 70581 FORMAT (27X,15H 1 22 333/ 1 27X,15H 4 55 666/ 2 27X,15H 7 88 999) C ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (I02,90002) WRITE (I02,90013) WRITE (I02,90014) C***** INPUT CARDS 26, 27 2058 FORMAT(I4, 2(I1,1X,I2)) READ( IRVI,2058) I2I, IAC1I CT059* TEST 59 - I/O FORMAT RESCAN IVTNUM = 59 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (I02,80004) IVTNUM, REMRKS WRITE (I02,80020) WRITE( I02,70590) I2I(2,1),I2I(2,2),IAC1I(2),IAC1I(4) 70590 FORMAT (27X,I4,3H **,1(27X,I4,3H '',(I4,3H (())) IVINSP = IVINSP + 1 WRITE (I02,70011) WRITE (I02,70591) 70591 FORMAT(27X,7H 2 **,30X,11H4 '' 6 ((,/ 1 27X,7H 8 '') CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 020 STOP END *END-OF,FM403 FM404.f 481036355 170 2 100666 13208 ` *HEADER,FORTR,FM404 *FILES1,FORTR,FM404,XX C*********************************************************************** C***** FORTRAN 77 C***** FM404 AFMTS - (022) C***** C*********************************************************************** C***** GENERAL PURPOSE SUBSET REFS C***** TO TEST SIMPLE FORMAT AND FORMATTED DATA 12.9.5.2 C***** TRANSFER STATEMENTS IN EXTERNAL SEQUENTIAL I/O SO 13.1.1 C***** THAT THESE FEATURES MAY BE USED IN OTHER TEST 12.8.1 C***** PROGRAM SEGMENTS FOR CHARACTER DATA TYPES. 4.8 C***** C***** RESTRICTIONS OBSERVED C***** * ALL FORMAT STATEMENTS ARE LABELED 12.8.2 C***** * H AND X DESCRIPTORS ARE NEVER REPEATED 13.1.1 C***** * FIELD WIDTH IS NEVER ZERO 13.5.11 C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE LIST ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION. C***** * ITEMS IN I/O LIST CORRESPOND TO FORMAT DESCRIPTORS 13.3 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C INPUT DATA TO THIS SEG. CONSISTS OF 6 DATA CARD IMAGES IN COLS. 1 - 55 COL. 1--------------------------------------------47 CARD 1 QRSTMNOPIJKLYZ127890ABCD3456EFGHUVWX/(),.' =+-* CARD 2 AABABCABCDABCDEABCDEFWXYZWXYZWXYZWXYZWXYZWXYZ CARD 3 112123123412345123456 CARD 4 GGGGHHHHIIIIJJJJ CARD 5 ----LLLL CARD 6 ....NNNN C***** C***** S P E C I F I C A T I O N S SEGMENT 022 C***** CHARACTER*1 A1VK CHARACTER*2 A2VK CHARACTER*3 A3VK CHARACTER*4 A4VK, A41K(6), A43K(2,2,3) CHARACTER*5 A5VK CHARACTER*6 A6VK C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 IVTOTL = 5 ZPROG = 'FM404' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 22 WRITE (NUVI,02200) 02200 FORMAT(1H , /1X,38H AFMTS - (022) FORMATTED DATA TRANSFER// 1 1X,19H USING A-CONVERSION//1X, 2 38H SUBSET REFS - 12.9.5.2 13.3 13.5.11) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TESTS THAT ALL FORTRAN (SUBSET) CHARACTERS MAY BE READ. 3.1 C***** C***** INPUT CARD 1 READ(IRVI, 02201) A43K(1,1,1), A43K(1,1,2), A43K(1,1,3), 1 A43K(1,2,1), A43K(1,2,2), A43K(1,2,3), A43K(2,1,1), 2 A43K(2,1,2), A43K(2,1,3), A6VK, A5VK 02201 FORMAT(9A4, A6, A5) CT001* TEST 1 IVTNUM = 1 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE(NUVI, 70010) A43K(1,2,3), A43K(2,1,2), A43K(1,1,3), 1 A43K(1,1,2), A43K(1,1,1), A43K(2,1,3), A43K(1,2,1), 2 A43K(2,1,1), A43K(1,2,2), A5VK, A6VK 70010 FORMAT(26X,9A4/25X,A5,A6) IVINSP = IVINSP + 1 WRITE (NUVI, 70011) 70011 FORMAT(1H ,16X,10HCORRECT: ,22X,32HCORRESPONDING LINE(S) MUST M 1ATCH) WRITE (NUVI, 70012) 70012 FORMAT(26X, 36HABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890/ 1 26X,10H=+-*/(),.') C***** C***** AW CONVERSION IS USED IN THE FORMAT STATEMENTS. 3.5.11 C***** SOME FORMAT DESCRIPTORS ARE REPEATED. C***** THE FOLLOWING THREE CASES ARE USED FOR BOTH INPUT AND OUTPUT. C***** INPUT FIELD WIDTH = CHARACTER VARIABLE LENGTH C***** INPUT FIELD WIDTH < CHARACTER VARIABLE LENGTH C***** INPUT FIELD WIDTH > CHARACTER VARIABLE LENGTH C***** C***** INPUT CARD 2 READ(IRVI, 02203) A41K(1), A41K(2), A41K(3), A41K(4), A41K(5), 1 A41K(6), A1VK, A2VK, A3VK, A4VK, A5VK, A6VK 02203 FORMAT(A1, A2, 1A3, A4, A5, 1(A6), A4, 2A4, 3(A4)) CT002* TEST 2 IVTNUM = 2 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE(NUVI, 70020) A41K(1), A41K(2), A41K(3), A41K(4), A41K(5), 1 A41K(6), A6VK, A5VK, A4VK, A3VK, A2VK, A1VK 70020 FORMAT(26X,A4,A4,4A4/26X,A6,A5,A4,A3,A2,A1) IVINSP = IVINSP + 1 WRITE (NUVI, 70011) WRITE (NUVI, 70022) 70022 FORMAT(26X,24HA AB ABC ABCDBCDECDEF/ 1 26X,21HWXYZ WXYZ WXYZXYZYZZ) C***** CT003* TEST 3 IVTNUM = 3 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE(NUVI, 70030) A41K(1), A41K(2), A41K(3), A41K(4), A41K(5), 1 A41K(6), A1VK, A2VK, A3VK, A4VK, A5VK, A6VK 70030 FORMAT(26X,A1,A2,A3,A4,A5,A6/23X,4(A4),A4,A4) IVINSP = IVINSP + 1 WRITE (NUVI, 70011) WRITE (NUVI, 70032) 70032 FORMAT(26X,21HAABABCABCD BCDE CDEF/ 1 26X,21HZ YZ XYZWXYZWXYZWXYZ) C***** C***** A CONVERSION IS USED IN THE FORMAT STATEMENTS. 3.5.11 C***** SOME FORMAT DESCRIPTORS ARE REPEATED. C***** READ WITH A-EDIT DESCRIPTOR, A STRING, FOLLOWED BY ANOTHER C***** FIELD TO SHOW THAT THE POINTER PICKS UP THE NEXT FIELD C***** FOLLOWING THE COUNT OF THE LENGTH OF THE DECLARED VARIABLE. C***** C***** INPUT CARD 3 READ(IRVI, 02206) A1VK, A2VK, A3VK, A4VK, A5VK, A6VK 02206 FORMAT(A, 2A, 3(A)) CT004* TEST 4 IVTNUM = 4 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE(NUVI, 70040) A1VK, A2VK, A3VK, A4VK, A5VK, A6VK 70040 FORMAT(26X,6A) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70042) 70042 FORMAT(26X,21H112123123412345123456) C***** C***** TEST THAT A SLASH ON INPUT CAUSES THE UNPROCESSED CHARACTERS C***** TO BE SKIPPED. 13.5.4 C***** ALSO TEST THAT AN APOSTROPHE MAY BE USED INSTEAD OF AN 13.5.1 C***** H-EDIT DESCRIPTOR. 13.5.2 C***** C***** INPUT CARD 4 READ(IRVI, 02208) A41K(2), A41K(1), A41K(4), A41K(3) 02208 FORMAT(4A4) C***** INPUT CARDS 5-6 READ(IRVI, 02209) A41K(2), A41K(4), A41K(3) 02209 FORMAT(A4 / 2A4) CT005* TEST 5 IVTNUM = 5 REMRKS = '2 IDENTICAL COMPUTED LINES ' WRITE (NUVI, 80004) IVTNUM, REMRKS REMRKS = 'EXPECTED ' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) WRITE(NUVI, 70050) A41K(2), A41K(1), A41K(4), A41K(3) 70050 FORMAT(26X,'----HHHH....NNNN'/26X,3(A4),A4) IVINSP = IVINSP + 1 WRITE (NUVI, 70011) WRITE (NUVI, 70052) 70052 FORMAT (26X,16H----HHHH....NNNN) C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 022 STOP END *END-OF,FM404 FM405.f 481036359 170 2 100666 17867 ` *HEADER,FORTR,FM405 *FILES1,FORTR,FM405,X C*********************************************************************** C***** FORTRAN 77 C***** FM405 C***** INTER1 - (390) C***** C*********************************************************************** C***** TESTING OF INTERNAL FILES - SUBSET REF C***** USING READ 12.2.5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 390 C***** LOGICAL AVB, BVB, CVB CHARACTER A1VK*1, A4VK*4, B1VK*1, B4VK*4, A38VK*38, B381K(4)*38 CHARACTER A5VK*5, A8VK*8, B5VK*5, B8VK*8 CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** EVS = 0.001 C***** NUVI = I02 IVTOTL=15 ZPROG='FM405' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** A38VK = '2.1 TEST 3 23.45E2 .TRUE. F ' B381K(1) = ' 23 23.345 T ENDS ' B381K(2) = ' 23.456 F 98 YOURS PROGRAMS ' B381K(3) = ' 13.1234 13.1234E0 1312.34 ' B381K(4) = ' 5.2345 56 5.2345 T TRUE 5.2345' C***** C***** HEADER FOR SEGMENT 390 C***** WRITE(NUVI,39000) 39000 FORMAT(/2X,44H INTER1 - (390) INTERNAL FILES -- USING READ 1 //21H SUBSET REF. - 12.2.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C****** C************************************************************* CT001* TEST 1 CHARACTER VARIABLE, INTEGER IVTNUM=1 READ(A38VK,39001) IVI 39001 FORMAT(8X,I2) KVI = 3 IVCOMP=0 IF (IVI .EQ. KVI) IVCOMP=1 IF (IVCOMP-1) 20010,10010,20010 10010 IVPASS=IVPASS + 1 WRITE (NUVI,80002) IVTNUM GO TO 0011 20010 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80024) IVI WRITE (NUVI,80026) KVI 0011 CONTINUE C***** CT002* TEST 2 REAL, FW.D IVTNUM=2 READ(A38VK,39004) AVS 39004 FORMAT(F3.1) BVS = 2.1 IVCOMP=0 IF (AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS) IVCOMP=1 IF (IVCOMP-1) 20020,10020,20020 10020 IVPASS=IVPASS + 1 WRITE(NUVI,80002)IVTNUM GO TO 0021 20020 IVFAIL=IVFAIL+1 WRITE(NUVI,80008) IVTNUM WRITE (NUVI,80028) AVS WRITE (NUVI,80030) BVS 0021 CONTINUE CT003* TEST 3 REAL, EW.D IVTNUM=3 READ(A38VK,39006) AVS 39006 FORMAT(11X,E7.2) BVS = 23.45E2 IVCOMP=0 IF (AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS) IVCOMP=1 IF (IVCOMP-1) 20030,10030,20030 10030 IVPASS=IVPASS + 1 WRITE(NUVI,80002)IVTNUM GO TO 0031 20030 IVFAIL=IVFAIL + 1 WRITE(NUVI,80008)IVTNUM WRITE (NUVI,80028) AVS WRITE (NUVI,80030) BVS 0031 CONTINUE CT004* TEST 4 SAME REAL, EW.DEN IVTNUM=4 IVCOMP=0 READ(A38VK,39008) CVS 39008 FORMAT(10X,E8.2E2) IF (CVS .LT. BVS + EVS .AND. CVS .GT. BVS - EVS) IVCOMP=1 IF (IVCOMP-1) 20040,10040,20040 10040 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM GO TO 0041 20040 IVFAIL=IVFAIL + 1 WRITE(NUVI,80008)IVTNUM WRITE (NUVI,80028) CVS WRITE (NUVI,80030) BVS 0041 CONTINUE CT005* TEST 5 LOGICAL, WITH PERIODS IVTNUM=5 READ(A38VK,39010) AVB 39010 FORMAT(19X,L6) IVCOMP=0 IF (AVB) IVCOMP=1 IF (IVCOMP-1) 20050,10050,20050 10050 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0051 20050 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM 70050 FORMAT (1H ,16X,10HCOMPUTED: ,L1, 1 /17X,10HCORRECT: ,1HT) WRITE (NUVI,70050) AVB 0051 CONTINUE CT006* TEST 6 LOGICAL, WITHOUT PERIODS IVTNUM=6 READ(A38VK,39012) CVB 39012 FORMAT(25X,L3) IVCOMP=0 IF (.NOT. CVB) IVCOMP=1 IF (IVCOMP-1) 20060,10060,20060 10060 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0061 20060 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70060 FORMAT (1H ,16X,10HCOMPUTED: ,L1) WRITE (NUVI,70060) CVB 70061 FORMAT (1H ,16X,10HCORRECT: ,1HF) WRITE (NUVI,70061) 0061 CONTINUE CT007* TEST 7 CHARACTER, A IVTNUM=7 READ(A38VK,39014) A1VK 39014 FORMAT(9X,A1) B1VK = '3' IVCOMP=0 IF (A1VK .EQ. B1VK) IVCOMP=1 IF (IVCOMP-1) 20070,10070,20070 10070 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0071 20070 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A1VK WRITE (NUVI,80022) B1VK 0071 CONTINUE CT008* TEST 8 CHARACTER, AW IVTNUM=8 READ(A38VK,39016) A4VK 39016 FORMAT(4X,A4) B4VK = 'TEST' IVCOMP=0 IF (A4VK .EQ. B4VK) IVCOMP=1 IF (IVCOMP-1) 20080,10080,20080 10080 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0081 20080 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK WRITE (NUVI,80022) B4VK 0081 CONTINUE CT009* TEST 9 CHARACTER, EXTRA BLANKS IVTNUM = 9 READ(A38VK,39018) A4VK 39018 FORMAT(11X,A7) B4VK = '45E2' IVCOMP=0 IF (A4VK .EQ. B4VK) IVCOMP=1 IF (IVCOMP-1) 20090,10090,20090 10090 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0091 20090 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK WRITE (NUVI,80022) B4VK 0091 CONTINUE CT010* TEST 10 CHARACTER, NO PADDING IVTNUM = 10 READ(A38VK,39020) A4VK 39020 FORMAT(A3) IVCOMP=0 B4VK = '2.1 ' IF (A4VK .EQ. B4VK) IVCOMP=1 IF (IVCOMP-1) 20100,10100,20100 10100 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0101 20100 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK WRITE (NUVI,80022) B4VK 0101 CONTINUE CT011* TEST 11 CHECK TO SEE IF SECOND VARIABLE C***** START READING JUST AFTER FIRST VARIABLE IVTNUM = 11 READ(A38VK,39022) A4VK, A1VK 39022 FORMAT(1X,A,A) B4VK = '.1 T' B1VK = 'E' IVCOMP=0 IF (A4VK .EQ. B4VK .AND. A1VK .EQ. B1VK) IVCOMP=1 IF (IVCOMP-1) 20110,10110,20110 10110 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0111 20110 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK,A1VK WRITE (NUVI,80022) B4VK,B1VK 0111 CONTINUE CT012* TEST 12 MIXED TYPES, ARRAY ELEMENT IVTNUM = 12 READ(B381K(1),39024) IVI, AVS, AVB, A4VK 39024 FORMAT(I5,1X,F8.3,1X,L5,1X,A4) KVI = 23 BVS = 23.345 B4VK = 'ENDS' IF (IVI .EQ. KVI .AND. 1 AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS .AND. 2 AVB .AND. 3 A4VK .EQ. B4VK) GOTO 39026 IVFAIL=IVFAIL + 1 70120 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE(NUVI,70120)IVTNUM 70121 FORMAT (1H ,16X,10HCOMPUTED: ,I5,2X,F10.5,2X,L1,2X,A4) WRITE (NUVI,70121) IVI,AVS,AVB,A4VK 70122 FORMAT (1H ,16X,10HCORRECT: , 1 5H 23,2X,10H 23.34500,2X,1HT,2X,4HENDS) WRITE (NUVI,70122) GOTO 39027 39026 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM 39027 CONTINUE CT013* TEST 13 MIXED TYPES, ARRAY ELEMENT C***** WITH RUN TIME EXPRESSION AS SUBSCRIPT IVTNUM = 13 KVI = 1 READ(B381K(KVI*2),39028) AVS, AVB, IVI, A5VK, A8VK 39028 FORMAT(F7.3,1X,L5,1X,I5,1X,A5,1X,A8) BVS = 23.456 KVI = 98 B5VK = 'YOURS' B8VK = 'PROGRAMS' IF (AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS .AND. 1 .NOT. AVB .AND. 2 IVI .EQ. KVI .AND. 3 A5VK .EQ. B5VK .AND. 4 A8VK .EQ. B8VK) GOTO 39030 IVFAIL=IVFAIL+1 70130 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE (NUVI,70130) IVTNUM 70131 FORMAT (1H ,16X,10HCOMPUTED: , 1 F7.3,2X,L1,2X,I5,2X,A5,2X,A8) WRITE (NUVI,70131) AVS,AVB,IVI,A5VK,A8VK 70132 FORMAT (1H ,16X,10HCORRECT: , 1 7H 23.456,2X,1HF,2X,5H 98,2X,5HYOURS,2X,8HPROGRAMS) WRITE (NUVI,70132) GOTO 39031 39030 IVPASS=IVPASS + 1 WRITE(NUVI,80002) IVTNUM 39031 CONTINUE CT014* TEST 14 MIXED TYPES, ALSO BN AND BZ C***** IVTNUM = 14 READ(B381K(4),39032) AVS, IVI, BVS, AVB, A4VK, CVS 39032 FORMAT(F9.4,1X,I4,1X,BN,F9.4,1X,L1,1X,A4,1X,BZ,F6.4) DVS = 5.2345 KVI = 56 BVB = .TRUE. B4VK = 'TRUE' IF (AVS .LT. DVS + EVS .AND. AVS .GT. DVS - EVS .AND. 1 IVI .EQ. KVI .AND. 2 BVS .LT. DVS + EVS .AND. BVS .GT. DVS - EVS .AND. 3 AVB .AND. 4 A4VK .EQ. B4VK .AND. 5 CVS .LT. DVS + EVS .AND. CVS .GT. DVS - EVS) GOTO 39034 IVFAIL=IVFAIL + 1 70140 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE(NUVI,70140) IVTNUM 70141 FORMAT (1H ,16X,10HCOMPUTED: , 1 F9.4,2X,I4,2X,F9.4,2X,L1,2X,A4,2X,F9.4) WRITE (NUVI,70141) AVS,IVI,BVS,AVB,A4VK,CVS 70142 FORMAT (1H ,16X,10HCORRECT: , 2 9H 5.2345,2X,4H 56,2X,9H 5.2345,2X,1HT,2X,4HTRUE, 3 2X,9H 5.2345) WRITE (NUVI,70142) GOTO 39035 39034 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM 39035 CONTINUE CT015* TEST 15 REAL VARIABLES WITH SCALING FACTOR IVTNUM = 15 READ(B381K(3),39036) AVS, BVS, CVS 39036 FORMAT(F9.5, 1X, E9.3, 1X, 2PF7.4) DVS = 13.1234 IF (AVS .LT. DVS + EVS .AND. AVS .GT. DVS - EVS .AND. 1 BVS .LT. DVS + EVS .AND. BVS .GT. DVS - EVS .AND. 2 CVS .LT. DVS + EVS .AND. CVS .GT. DVS - EVS) GOTO 39038 IVFAIL=IVFAIL + 1 70150 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HREAL DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE(NUVI,70150) IVTNUM 70151 FORMAT (1H ,16X,10HCOMPUTED: ,F9.4,2X,F9.3,2X,F7.4) WRITE (NUVI,70151) AVS,BVS,CVS 70152 FORMAT (1H ,16X,10HCORRECT: , 1 9H 13.1234,2X,9H 13.123,2X,7H13.1234) WRITE (NUVI,70152) GOTO 39039 39038 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM 39039 CONTINUE C***** C***** END OF TEST SEGMENT 390 CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *END-OF,FM405 FM406.f 481036363 170 2 100666 18358 ` *HEADER,FORTR,FM406 *FILES1,FORTR,FM406,X C*********************************************************************** C***** FORTRAN 77 C***** FM406 C***** INTER2 - (391) C***** C*********************************************************************** C***** TESTING OF INTERNAL FILES - SUBSET REF C***** USING WRITE 12.2.5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 391 C***** LOGICAL AVB CHARACTER A4VK*4, A5VK*5, A10VK*10, A38VK*38 CHARACTER CVCORR*38, AVCORR(8)*38 C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM406' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** C***** HEADER FOR SEGMENT 391 C***** WRITE(NUVI,39100) 39100 FORMAT(1H ,/ 45H INTER2 - (391) INTERNAL FILES -- USING WRITE 1 //21H SUBSET REF. - 12.2.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** WRITE (NUVI, 39199) 39199 FORMAT (1H ,48X,31HNOTE 1: OPTIONAL LEADING ZERO / 1 1H ,48X,31H MAY BE BLANK FOR ABSOLUTE / 2 1H ,48X,31H VALUE < 1 / 3 1H ,48X,31HNOTE 2: LEADING PLUS SIGN IS / 4 1H ,48X,31H OPTIONAL / 5 1H ,48X,31HNOTE 3: E EXPONENT MAY BE E+ / 6 1H ,48X,31H OR +0 BEFORE VALUE ) CT001* TEST 1 CHARACTER VARIABLE, INTEGER IVTNUM = 1 A10VK = 'XXXXXXXXXX' KVI = 3 WRITE(A10VK,39101) KVI 39101 FORMAT(I2) IVCOMP = 0 AVCORR(1) = ' 3 ' AVCORR(2) = '+3 ' DO 40011 I = 1, 2 IF (A10VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40011, 10010, 40011 40011 CONTINUE GO TO 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 CVCORR = ' 3 ' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A10VK WRITE (NUVI, 80022) CVCORR 0011 CONTINUE CT002* TEST 2 REAL, FW.D IVTNUM = 2 A10VK = 'XXXXXXXXXX' AVS = 2.1 WRITE(A10VK,39103) AVS 39103 FORMAT(F3.1) IVCOMP = 0 IF (A10VK.EQ.'2.1 ') IVCOMP = 1 IF (IVCOMP - 1) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 CVCORR = '2.1 ' WRITE (NUVI, 80018) IVTNUM, A10VK, CVCORR 0021 CONTINUE CT003* TEST 3 CHECK FOR MISSING SIGN IVTNUM = 3 A10VK = 'XXXXXXXXXX' AVS = -0.0001 WRITE(A10VK,39104) AVS 39104 FORMAT(F4.1) IVCOMP = 0 AVCORR(1) = ' 0.0 ' AVCORR(2) = ' .0 ' AVCORR(3) = '+0.0 ' AVCORR(4) = ' +.0 ' DO 40031 I = 1, 4 IF (A10VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40031, 10030, 40031 40031 CONTINUE GO TO 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 CVCORR = ' 0.0 ' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A10VK WRITE (NUVI, 80022) CVCORR 0031 CONTINUE CT004* TEST 4 CONVERSION ERROR IVTNUM = 4 A10VK = 'XXXXXXXXXX' AVS = 231.75 WRITE(A10VK,39105) AVS 39105 FORMAT(F4.2) IVCOMP = 0 IF (A10VK.EQ.'**** ') IVCOMP = 1 IF (IVCOMP - 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 CVCORR = '**** ' WRITE (NUVI, 80018) IVTNUM, A10VK, CVCORR 0041 CONTINUE CT005* TEST 5 REAL, EW.D IVTNUM = 5 A10VK = 'XXXXXXXXXX' AVS = 23.45E2 WRITE(A10VK,39106) AVS 39106 FORMAT(1X,E9.4) IVCOMP = 0 AVCORR(1) = ' .2345E+04' AVCORR(2) = ' .2345+004' DO 40051 I = 1, 2 IF (A10VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40051, 10050, 40051 40051 CONTINUE GO TO 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 CVCORR = ' .2345E+04' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A10VK WRITE (NUVI, 80022) CVCORR 0051 CONTINUE CT006* TEST 6 REAL, EW.DEN IVTNUM = 6 A10VK = 'XXXXXXXXXX' WRITE(A10VK,39107) AVS 39107 FORMAT(1X,E8.4E1) IVCOMP = 0 AVCORR(1) = ' .2345E+4 ' AVCORR(2) = ' .2345+04 ' DO 40061 I = 1, 2 IF (A10VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40061, 10060, 40061 40061 CONTINUE GO TO 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 CVCORR = ' .2345E+4 ' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A10VK WRITE (NUVI, 80022) CVCORR 0061 CONTINUE CT007* TEST 7 LOGICAL IVTNUM = 7 A10VK = 'XXXXXXXXXX' AVB = .TRUE. WRITE(A10VK,39108) AVB 39108 FORMAT(L6) IVCOMP = 0 IF (A10VK.EQ.' T ') IVCOMP = 1 IF (IVCOMP - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 CVCORR = ' T ' WRITE (NUVI, 80018) IVTNUM, A10VK, CVCORR 0071 CONTINUE CT008* TEST 8 CHARACTER, AW IVTNUM = 8 A10VK = 'XXXXXXXXXX' A4VK = 'TEST' WRITE(A10VK,39109) A4VK 39109 FORMAT(A4) IVCOMP = 0 IF (A10VK.EQ.'TEST ') IVCOMP = 1 IF (IVCOMP - 1) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 CVCORR = 'TEST ' WRITE (NUVI, 80018) IVTNUM, A10VK, CVCORR 0081 CONTINUE CT009* TEST 9 BLANK RECORD IVTNUM = 9 A10VK = 'XXXXXXXXXX' WRITE(A10VK,39110) 39110 FORMAT() IVCOMP = 0 IF (A10VK.EQ.' ') IVCOMP = 1 IF (IVCOMP - 1) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 CVCORR = ' ' WRITE (NUVI, 80018) IVTNUM, A10VK, CVCORR 0091 CONTINUE CT010* TEST 10 MIXED TYPES IVTNUM = 10 A38VK = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' KVI = 23 AVS = 23.345 AVB = .TRUE. A4VK = 'ENDS' WRITE(A38VK,39111) KVI, AVS, AVB, A4VK 39111 FORMAT(I5,1X,F8.3,1X,L5,1X,A4) IVCOMP = 0 AVCORR(1) = ' 23 23.345 T ENDS ' AVCORR(2) = ' +23 +23.345 T ENDS ' AVCORR(3) = ' 23 +23.345 T ENDS ' AVCORR(4) = ' +23 23.345 T ENDS ' DO 40101 I = 1, 4 IF (A38VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40101, 10100, 40101 40101 CONTINUE GO TO 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 CVCORR = ' 23 23.345 T ENDS ' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A38VK WRITE (NUVI, 80022) CVCORR 0101 CONTINUE CT011* TEST 11 MIXED TYPES, WITH C***** CHARACTER AND HOLLERITH STRINGS IVTNUM = 11 A38VK = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' AVS = 23.456 AVB = .FALSE. KVI = 98 A5VK = 'YOURS' WRITE(A38VK,39112) AVS, AVB, KVI, A5VK 39112 FORMAT(F7.3,1X,L5,1X,I5,1X,A5,1X,'PROGRAMS',1X,3HONE) IVCOMP = 0 AVCORR(1) = ' 23.456 F 98 YOURS PROGRAMS ONE' AVCORR(2) = '+23.456 F +98 YOURS PROGRAMS ONE' AVCORR(3) = ' 23.456 F +98 YOURS PROGRAMS ONE' AVCORR(4) = '+23.456 F 98 YOURS PROGRAMS ONE' DO 40111 I = 1, 4 IF (A38VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40111, 10110, 40111 40111 CONTINUE GO TO 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 CVCORR = ' 23.456 F 98 YOURS PROGRAMS ONE' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A38VK WRITE (NUVI, 80022) CVCORR 0111 CONTINUE CT012* TEST 12 MIXED TYPES, WITH EXPRESSION IVTNUM = 12 A38VK = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' AVS = 5.2345 BVS = 1.2345 AVB = .TRUE. WRITE(A38VK,39113) AVS, 5, BVS*2, AVB, 'TWO' 39113 FORMAT(F9.4,1X,I4,1X,3HBVS,1X,F9.4,1X,L1,1X,A3) IVCOMP = 0 AVCORR(1) = ' 5.2345 5 BVS 2.4690 T TWO ' AVCORR(2) = ' 5.2345 5 BVS +2.4690 T TWO ' AVCORR(3) = ' 5.2345 +5 BVS 2.4690 T TWO ' AVCORR(4) = ' 5.2345 +5 BVS +2.4690 T TWO ' AVCORR(5) = ' +5.2345 5 BVS 2.4690 T TWO ' AVCORR(6) = ' +5.2345 5 BVS +2.4690 T TWO ' AVCORR(7) = ' +5.2345 +5 BVS 2.4690 T TWO ' AVCORR(8) = ' +5.2345 +5 BVS +2.4690 T TWO ' DO 40121 I = 1, 8 IF (A38VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40121, 10120, 40121 40121 CONTINUE GO TO 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 CVCORR = ' 5.2345 5 BVS 2.4690 T TWO ' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A38VK WRITE (NUVI, 80022) CVCORR 0121 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 391 STOP END *END-OF,FM406 FM407.f 481036367 170 2 100666 15881 ` *HEADER,FORTR,FM407 *FILES1,FORTR,FM407 C*********************************************************************** C***** FORTRAN 77 C***** FM407 C***** DIRAF1 - (410) C***** THIS PROGRAM CALLS SUBROUTINE SN408 C*********************************************************************** C***** TESTING OF DIRECT ACCESS FILES SUBSET REF C***** UNFORMATED RECORDS ONLY 12.10.1 C***** C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 410 DIMENSION L1I(10), K1I(10), M1I(10), F1S(10), G1S(10) CHARACTER*4 A4VK, B4VK, A41K(10), B41K(10) LOGICAL AVB, BVB, C1B(10), D1B(10) C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** DIRECT, UNFORMATTED FILE. C***** C I10 CONTAINS THE UNIT NUMBER FOR A DIRECT, UNFORMATTED FILE. I10 = 24 CX100 REPLACED BY FEXEC X-100 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I10 = NN OVERRIDES THE DEFAULT I10 = 24. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A DIRECT, C***** UNFORMATTED FILE. C***** C***** NUVI = I02 IVTOTL = 4 ZPROG = 'FM407' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** FILE NUMBER ASSIGNMENT IUVI = I10 C***** C***** HEADER FOR SEGMENT 410 WRITE(NUVI,41000) 41000 FORMAT(1H ,/ 46H DIRAF1 - (410) DIRECT ACCESS UNFORMATTED FILE// 1 22H SUBSET REF. - 12.10.1) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE (NUVI, 41099) 41099 FORMAT (1H ,48X,31HEACH TEST READS 10 RECORDS AND / 1 1H ,48X,31HEACH RECORD IS CHECKED, I.E., / 2 1H ,48X,31HTHERE ARE 10 SUBTESTS MADE FOR / 3 1H ,48X,31HEACH TEST ) C***** CALL SN408(L1I,K1I,M1I,F1S,G1S,C1B,D1B,A41K,B41K) C***** OPEN(IUVI, ACCESS='DIRECT',RECL=132) C***** WRITE 10 RECORDS IN SEQUENCE, REC = 1 TO 10 DO 41001 IVI = 1, 10 AVS = F1S (IVI) A4VK = A41K (IVI) AVB = C1B (IVI) WRITE(IUVI, REC= IVI) IVI, AVS, A4VK, AVB 41001 CONTINUE CT001* TEST 1 READ RECORDS 1 TO 10 IN SEQUENCE IVTNUM = 1 IVCOMP = 0 DO 41002 IVI = 1, 10 READ(IUVI, REC = IVI) KVI, BVS, B4VK, BVB IF (IVI .NE. KVI) GOTO 20010 IF (B4VK .NE. A41K(IVI)) GOTO 20010 IF ((BVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. BVB .AND. C1B(IVI))) GOTO 20010 IF (BVS .NE. F1S(IVI)) GO TO 20010 GO TO 41002 20010 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, IVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, IVI, F1S(IVI), 1 A41K(IVI), C1B(IVI) 70010 FORMAT (1H ,2X,I3,4X,13H FAIL ON REC ,I2) 70020 FORMAT (1H ,16X,10HCOMPUTED: ,I2,1X,F5.2,1X,A4,1X,L1/ 1 1H ,16X,10HCORRECT: ,I2,1X,F5.2,1X,A4,1X,L1) 41002 CONTINUE IF (IVCOMP - 0) 0011, 10010, 0011 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0011 CONTINUE CT002* TEST 2 READ RECORDS NOT IN SEQUENCE OF RECORD NUMBER IVTNUM = 2 IVCOMP = 0 DO 41013 IVI = 1, 10 JVI = L1I(IVI) READ(IUVI, REC = JVI) KVI, BVS, B4VK, BVB IF (KVI .NE. JVI) GOTO 20020 IF (B4VK .NE. A41K(JVI)) GOTO 20020 IF ((BVB .AND. .NOT. C1B(JVI)) .OR. 1 (.NOT. BVB .AND. C1B(JVI))) GOTO 20020 IF (BVS .NE. F1S(JVI)) GOTO 20020 GO TO 41013 20020 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, JVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, JVI, F1S(JVI), 1 A41K(JVI), C1B(JVI) 41013 CONTINUE IF (IVCOMP - 0) 0021, 10020, 0021 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0021 CONTINUE C***** WRITE RECORDS NOT IN SEQUENCE OF RECORD NUMBER 41014 DO 41015 IVI = 1, 10 JVI = K1I (IVI) AVS = G1S (JVI) A4VK = B41K (JVI) AVB = D1B (JVI) WRITE(IUVI, REC= JVI) AVB, A4VK, JVI, AVS 41015 CONTINUE CT003* TEST 3 READ RECORDS IN SEQUENCE OF RECORD NUMBER IVTNUM = 3 IVCOMP = 0 DO 41016 IVI = 1, 10 READ(IUVI, REC = IVI) BVB, B4VK, JVI, BVS IF (JVI .NE. IVI) GOTO 20030 IF (B4VK .NE. B41K(IVI)) GOTO 20030 IF ((BVB .AND. .NOT. D1B(IVI)) .OR. 1 (.NOT. BVB .AND. D1B(IVI))) GOTO 20030 IF (BVS .NE. G1S(JVI)) GOTO 20030 GO TO 41016 20030 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, IVI WRITE (NUVI, 70020) JVI, BVS, B4VK, BVB, IVI, G1S(IVI), 1 B41K(IVI), D1B(IVI) 41016 CONTINUE IF (IVCOMP -0) 0031, 10030, 0031 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0031 CONTINUE CT004* TEST 4 READ RECORDS IN A DIFFERENT ORDER SEQUENCE IVTNUM = 4 IVCOMP = 0 DO 41018 IVI = 1, 10 JVI = M1I(IVI) READ(IUVI, REC = JVI) BVB, B4VK, KVI, BVS IF (KVI .NE. JVI) GOTO 20040 IF (B4VK .NE. B41K(JVI)) GOTO 20040 IF ((BVB .AND. .NOT. D1B(JVI)) .OR. 1 (.NOT. BVB .AND. D1B(JVI))) GOTO 20040 IF (BVS .NE. G1S(JVI)) GOTO 20040 GO TO 41018 20040 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, JVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, JVI, G1S(JVI), 1 B41K(JVI), D1B(JVI) 41018 CONTINUE IF (IVCOMP - 0) 0041, 10040, 0041 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0041 CONTINUE C***** C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION ***** AND ***** END-FILE-DUMP C SECTION ***** IS USED TO DUMP THE DATA FILE USED BY THIS C ROUTINE. THIS CODE IS OPTIONAL CODE AND IS ONLY USED IF THERE C IS A NEED TO PRINT THE CONTENT OF THE RECORDS FOR THE FILE. C THE CODE CAN BE SELECTED BY THE EXECUTIVE ROUTINE TO BE INCLUDED C IN THE COMPILED PROGRAM FOR EXECUTION BY USING THE *OPT1 C EXECUTIVE ROUTINE CONTROL CARD. IF THE *OPT1 CONTROL CARD IS C NOT SPECIFIED THE DEFAULT WILL BE TO AUTOMATICALLY CHANGE C THIS CODE TO PROGRAM COMMENTS. IF THIS CODE IS SELECTED THE C ROUTINE WILL DUMP THE CONTENTS OF THE FILE TO THE PRINTER FILE C FOLLOWING THE TEST REPORT AND BEFORE THE TEST REPORT SUMMARY. C CDB** *** BEGIN-FILE-DUMP SECTION *** C ITOTR = 10 C ILUN = I10 C IRLGN = 132 C IRNUM = 1 C7701 FORMAT (132A1) C7702 FORMAT (1X,132A1) C DO 7771 IRNUM = 1, ITOTR C READ (ILUN, REC = IRNUM) (IDUMP(ICH), ICH = 1, IRLGN) C WRITE (I02,7702) (IDUMP(ICH), ICH = 1, IRLGN) C7771 CONTINUE C7772 CONTINUE CDE** *** END-FILE-DUMP SECTION *** C**** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 410 STOP END *HEADER,FORTR,FM407,SUBRTN,FM408 C********************************************************************** C***** FORTRAN 77 C***** FM408 C***** SN408 DAQ - (805) C***** THIS SUBROUTINE IS CALLED BY FM407 C********************************************************************** SUBROUTINE SN408(LW1I, KW1I, MW1I, FW1S, GW1S, CW1B, DW1B, 1 A4W1K, B4W1K) C***** C***** SUBROUTINE USED WITH SEGMENT FM408 TO SUPPLY VALUES C***** TO ARRAYS THRU THE DUMMY ARGUMENT LIST C***** DIMENSION LT1I(10),LW1I(10),KT1I(10),KW1I(10),MT1I(10),MW1I(10) REAL FT1S(10),FW1S(10),GT1S(10),GW1S(10) LOGICAL CT1B(10),CW1B(10),DT1B(10),DW1B(10) CHARACTER*4 A4T1K(10),A4W1K(10),B4T1K(10),B4W1K(10) C***** DATA LT1I /2, 4, 1, 3, 10, 8, 9, 6, 7 ,5/ DATA KT1I /9, 10, 1, 3, 2, 5, 8, 4, 7, 6/ DATA MT1I /10, 1, 3, 4, 7, 6, 8, 5, 2, 9/ DATA FT1S /1.0, 2.0, 3.0, 4.0, 5.0, 6.5, 7.1, 8.2, 9.9, 10.0/ DATA GT1S /2.34, 2.3,1.9, 2.3, 9.9, 1.1, 8.8, 7.6, 2.3, 10.1/ DATA A4T1K / 'AAAA', 'BBBB', 'CCCC', 'DDDD', 'EDFG', 'JLKD' 1 , 'CDFE', 'LKJH', 'JHGF', 'LLLL'/ DATA B4T1K / 'HDFK', 'LKJH', 'ASDF', 'LKJH', 'XMNC', 'ALXM' 1 , 'IEOW', 'IERU', 'DJNC', 'DJAL'/ DATA CT1B /.TRUE., .FALSE., .TRUE., .TRUE., .TRUE., .FALSE., 1 .FALSE., .TRUE., .TRUE., .FALSE./ DATA DT1B /.FALSE., .FALSE., .FALSE., .TRUE., .FALSE., .FALSE., 1 .TRUE., .TRUE., .FALSE., .TRUE./ C***** DO 1 IVI = 1, 10 LW1I(IVI) = LT1I(IVI) KW1I(IVI) = KT1I(IVI) MW1I(IVI) = MT1I(IVI) FW1S(IVI) = FT1S(IVI) GW1S(IVI) = GT1S(IVI) CW1B(IVI) = CT1B(IVI) DW1B(IVI) = DT1B(IVI) A4W1K(IVI) = A4T1K(IVI) B4W1K(IVI) = B4T1K(IVI) 1 CONTINUE C***** RETURN END *END-OF,FM407 FM411.f 481036373 170 2 100666 46813 ` *HEADER,FORTR,FM411 *FILES1,FORTR,FM411,X PROGRAM FM411 C C C C THIS ROUTINE TESTS FOR PROPER PROCESSING OF UNFORMATTED RECORDS C WITH A FILE CONNECTED FOR SEQUENTIAL ACCESS. UNFORMATTED RECORDS C MAY BE READ OR WRITTEN ONLY BY UNFORMATTED INPUT/OUTPUT STATE- C MENTS. THIS ROUTINE TESTS SEVERAL SYNTACTICAL VARIATIONS OF THE C UNFORMATTED READ AND WRITE STATEMENTS AS WELL AS THE FILE C POSITIONING STATEMENTS BACKSPACE, ENDFILE AND REWIND. IN C ADDITION UNFORMATTED RECORDS MAY HAVE BOTH CHARACTER AND C NONCHARACTER DATA. THIS DATA IS TRANSFERRED WITHOUT EDITING C BETWEEN THE CURRENT RECORD AND ENTITIES SPECIFIED BY THE INPUT/ C OUTPUT LIST ITEMS. THIS ROUTINE BOTH READS AND WRITES C RECORDS CONTAINING DATA OF LOGICAL, REAL AND INTEGER TYPE WITH C I/O LIST ITEMS REPRESENTED AS VARIABLE NAMES, ARRAY ELEMENT C NAMES AND ARRAY NAMES. THIS ROUTINE DOES NOT TEST DATA OF TYPE C CHARACTER. C ROUTINE FM413 TESTS USE OF UNFORMATTED RECORDS WITH A FILE C CONNECTED FOR DIRECT ACCESS. C C THIS ROUTINE TESTS C C (1) THE STATEMENT CONSTRUCTS C C A. WRITE (U) VARIABLE-NAME,... C B. WRITE (U) ARRAY-ELEMENT-NAME,... C C. WRITE (U) ARRAY-NAME,... C D. WRITE (U) - NO OUTPUT LIST C E. WRITE (U) IMPLIED-DO-LIST C F. READ (U) VARIABLE-NAME,... C G. READ (U) ARRAY-ELEMENT-NAME,... C H. READ (U) ARRAY-NAME,... C I. READ (U,END=S) - NO INPUT LIST C J. READ (U,END=S) VARIABLE-NAME C K. READ (U) IMPLIED-DO-LIST C C (2) USE OF A READ STATEMENT WHERE THE NUMBER OF VALUES C IN THE INPUT LIST IS LESS THAN OR EQUAL TO THE C NUMBER OF VALUES IN THE RECORD. C C (3) USE OF THE BACKSPACE, REWIND AND ENDFILE STATEMENT C ON A FILE CONTAINING UNFORMATTED RECORDS. C C (4) USE OF A REWIND STATEMENT ON A FILE THAT IS CONNECTED C BUT DOES NOT EXIST. C C (5) USE OF AN ENDFILE STATEMENT TO CREATE A FILE THAT C DOES NOT EXIST C C REFERENCES - C C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1977 C C SECTION 4.1, DATA TYPES C SECTION 12.1.2, UNFORMATTED RECORDS C SECTION 12.2.1, FILE EXISTENCE C SECTION 12.2.4, FILE ACCESS C SECTION 12.2.4.1, SEQUENTIAL ACCESS C SECTION 12.3.3, UNIT SPECIFIER AND IDENTIFIER C SECTION 12.7.2, END-OF-FILE SPECIFIER C SECTION 12.8, READ, WRITE AND PRINT STATEMENTS C SECTION 12.8.1, CONTROL INFORMATION LIST C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.8.2.1, INPUT LIST ITEMS C SECTION 12.8.2.2, OUTPUT LIST ITEMS C SECTION 12.8.2.3, IMPLIED-DO LIST C SECTION 12.9.5.1, UNFORMATTED DATA TRANSFER C SECTION 12.10.4, FILE POSITIONING STATEMENTS C SECTION 12.10.4.1 BACKSPACE STATEMENT C SECTION 12.10.4.2, ENDFILE STATEMENT C SECTION 12.10.4.3, REWIND STATEMENT C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C LOGICAL LAON11, LAON21, LAON31, LCONT1, LCONF2, LVONT1, LVONF2 LOGICAL LAON12, LAON22, LAON32, LCONT3, LCONF4, LVONT3, LVONF4 LOGICAL LCONT5, LCONF6, LCONT7, LCONF8, LVONT5, LVONF6, LVONT7 LOGICAL LVONF8 DIMENSION IDUMP(80) DIMENSION IAON11(8), IAON21(2,4), IAON31(2,2,2) DIMENSION IAON12(8), IAON22(2,4), IAON32(2,2,2) DIMENSION RAON11(8), RAON21(2,4), RAON31(2,2,2) DIMENSION RAON12(8), RAON22(2,4), RAON32(2,2,2) DIMENSION LAON11(8), LAON21(2,4), LAON31(2,2,2) DIMENSION LAON12(8), LAON22(2,4), LAON32(2,2,2) DATA IAON11 /11, -11, 777, -777, 512, -512, -32767, 32767/ DATA IAON21 /11, -11, 777, -777, 512, -512, -32767, 32767/ DATA IAON31 /11, -11, 777, -777, 512, -512, -32767, 32767/ DATA LAON11 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 1 .TRUE., .FALSE./ DATA LAON21 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 1 .TRUE., .FALSE./ DATA LAON31 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 1 .TRUE., .FALSE./ DATA RAON11 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./ DATA RAON21 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./ DATA RAON31 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./ ICON21 = 11 ICON22 = -11 ICON31 = +777 ICON32 = -777 ICON33 = 512 ICON34 = -512 ICON55 = -32767 ICON56 = 32767 RCON21 = 11. RCON22 = -11. RCON31 = +7.77 RCON32 = -7.77 RCON33 = .512 RCON34 = -.512 RCON55 = -32767. RCON56 = 32767. LCONT1 = .TRUE. LCONF2 = .FALSE. LCONT3 = .TRUE. LCONF4 = .FALSE. LCONT5 = .TRUE. LCONF6 = .FALSE. LCONT7 = .TRUE. LCONF8 = .FALSE. C C THE FILE USED IN THIS ROUTINE HAS THE FOLLOWING PROPERTIES C C FILE IDENTIFIER - I04 (X-NUMBER 04) C RECORD SIZE - 80 C ACCESS METHOD - SEQUENTIAL C RECORD TYPE - UNFORMATTED C DESIGNATED DEVICE - DISK C TYPE OF DATA - INTEGER, REAL AND LOGICAL C RECORDS IN FILE - 142 PLUS ENDFILE RECORD C C THE FIRST 6 FIELDS OF EACH RECORD IN THE FILE UNIQUELY IDENT- C IFIES THAT RECORD. THE REMAINING FIELDS OF THE RECORD CONTAIN C DATA WHICH ARE USED IN TESTING. A DESCRIPTION OF EACH FIELD C OF THE PREAMBLE FOLLOWS. C C VARIABLE NAME IN PROGRAM FIELD NUMBER C ------------------------ ------------ C C IPROG (ROUTINE NAME) - 1 C IFILE (LOGICAL/X-NUMBER) - 2 C ITOTR (RECORDS IN FILE) - 3 C IRLGN (LENGTH OF RECORD) - 4 C IRECN (RECORD NUMBER) - 5 C IEOF (9999 IF LAST RECORD) - 6 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C I04 = 8 C I04 CONTAINS THE LOGICAL UNIT NUMBER FOR A SEQUENTIAL ACCESS FILE CX040 THIS CARD IS REPLACED BY CONTENTS OF X-040 CARD CX041 THIS CARD IS REPLACED BY CONTENTS OF X-041 CARD IPROG = 411 IFILE = I04 ITOTR = 142 IRLGN = 80 IRECN = 0 IEOF = 0 C C **** FCVS PROGRAM 411 - TEST 001 **** C C C TEST 001 USES THE REWIND STATEMENT ON A FILE THAT IS CONNECTED C BUT DOES NOT EXIST. THERE SHOULD BE NO EFFECT ON THE FILE WHEN C THIS STATEMENT IS EXECUTED. CONNECTION OF THE FILE TO A UNIT C IS ASSUMED TO BE DONE BY PRECONNECTION. C C SEE SECTION 12.10.4.3, REWIND STATEMENT C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCORR = 1 IVCOMP = 0 REWIND I04 IVCOMP = 1 40010 IF (IVCOMP - 1) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 411 - TEST 002 **** C C C TEST 002 USES THE ENDFILE STATEMENT TO CREATE A FILE THAT IS C CONNECTED BUT DOES NOT EXIST. NO RECORDS HAVE BEEN WRITTEN TO C THE FILE BEFORE THE ENDFILE STATEMENT IS EXECUTED. AS IN THE C PRECEDING TEST, IT IS ASSUMED THAT CONNECTION OF THE FILE TO A C UNIT IS DONE BY PRECONNECTION. C C SEE SECTIONS 12.2.1, FILE EXISTENCE C 12.10.4.2, ENDFILE STATEMENT C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCORR = 1 IVCOMP = 0 ENDFILE I04 REWIND I04 READ (I04, END = 0023) IVON01 C C TO TEST CREATION OF A FILE VIA A ENDFILE STATEMENT THE FILE C IS REWOUND AND READ. AN END-OF-FILE CONDITION IS EXPECTED TO C OCCUR ON THE FIRST READ SINCE THE ONLY RECORD WRITTEN TO THE C FILE WAS THE ENDFILE RECORD. C IVCOMP = 0 GO TO 40020 0023 IVCOMP = 1 40020 IF (IVCOMP - 1) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C C TESTS 003 THROUGH 019 USE A PRECONNECTED FILE FOR SEQUENTIAL C ACCESS TO WRITE 141 RECORDS TO THE FILE. THESE TESTS TEST USE OF C THE ALLOWABLE FORMS OF THE WRITE STATEMENT ON A FILE CONNECTED C FOR SEQUENTIAL ACCESS. THE WRITE STATEMENT IS USED WITH C THE I/O LIST ITEM AS A VARIABLE, ARRAY ELEMENT AND AN ARRAY. C THE PURPOSE OF TESTS 003 THROUGH 019 IS TO CHECK THE COMPILER'S C ABILITY TO HANDLE THE VARIOUS STATEMENT CONSTRUCTS OF THE C WRITE STATEMENT. LATER TESTS WITHIN THIS ROUINE READ AND C CHECK THE RECORDS WHICH ARE CREATED. C THE VALUE IN IVCORR FOR TESTS 002 THROUGH 013 IS THE RECORD C NUMBER FOR THE RECORD. C C C C **** FCVS PROGRAM 411 - TEST 003 **** C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE REWIND I04 C REPOSITION TO BEGINNING OF FILE C C TEST 003 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS A VARIABLE OF INTEGER TYPE. C IRECN = 01 IVCORR = 01 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 IVCOMP = IRECN 40030 IF (IVCOMP - 01) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 411 - TEST 004 **** C C C TEST 004 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS A VARIABLE OF REAL TYPE. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IRECN = 02 IVCORR = 02 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RCON21, RCON22, RCON31, RCON32, RCON33, RCON34, RCON55, RCON56 IVCOMP = IRECN 40040 IF (IVCOMP - 02) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 411 - TEST 005 **** C C C TEST 005 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS A VARIABLE OF LOGICAL TYPE. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IRECN = 03 IVCORR = 03 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LCONT1, LCONF2, LCONT3, LCONF4, LCONT5, LCONF6, LCONT7, LCONF8 IVCOMP = IRECN 40050 IF (IVCOMP - 03) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 411 - TEST 006 **** C C C TEST 006 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IRECN = 04 IVCORR = 04 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON11(1), IAON11(2), IAON21(1,2), IAON21(2,2), IAON31(1,1,2), 2 IAON31(2,1,2), IAON11(7), IAON11(8) IVCOMP = IRECN 40060 IF (IVCOMP - 04) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 411 - TEST 007 **** C C C TEST 007 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY ELEMENT OF REAL TYPE. ONE, TWO AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IRECN = 05 IVCORR = 05 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON11(1), RAON11(2), RAON21(1,2), RAON21(2,2), RAON31(1,1,2), 2RAON31(2,1,2), RAON11(7), RAON11 (8) IVCOMP = IRECN 40070 IF (IVCOMP - 05) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 411 - TEST 008 **** C C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IRECN = 06 IVCORR = 06 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON11(1), LAON11(2), LAON21(1,2), LAON21(2,2), LAON31(1,1,2), 2 LAON31(2,1,2), LAON11(7), LAON11(8) IVCOMP = IRECN 40080 IF (IVCOMP - 06) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 411 - TEST 009 **** C C C TEST 009 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY OF INTEGER TYPE. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IRECN = 07 IVCORR = 07 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON31 IVCOMP = IRECN 40090 IF (IVCOMP - 07) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 411 - TEST 010 **** C C C TEST 010 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY OF REAL TYPE. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IRECN = 08 IVCORR = 08 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON31 IVCOMP = IRECN 40100 IF (IVCOMP - 08) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 411 - TEST 011 **** C C C TEST 011 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY OF LOGICAL TYPE. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IRECN = 09 IVCORR = 09 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON31 IVCOMP = IRECN 40110 IF (IVCOMP - 09) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 411 - TEST 012 **** C C C TEST 012 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE C ELEMENT SEQUENCE OF ARRAY IAON31. THE SEQUENCE OF VALUES WRITTEN C IN THE RECORD ARE 11, 512, 777, -32767, -11, -512, -777, 32767. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IRECN = 10 IVCORR = 10 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((IAON31 (J,K,I), I=1,2), K=1,2), J=1,2) IVCOMP = IRECN 40120 IF (IVCOMP - 10) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 411 - TEST 013 **** C C C TEST 013 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE FIELD VALUES C (IN FIELD POSITION ORDER) WRITTEN IN THE RECORD ARE 11., -11., C 7.77, -7.77, .512, -.512, -32767., 32767. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IRECN = 11 IVCORR = 11 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((RAON31 (J,K,I), J=1,2), K=1,2), I=1,2) IVCOMP = IRECN 40130 IF (IVCOMP - 11) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 411 - TEST 014 **** C C C TEST 014 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER (AN ORDER C DIFFERENT THAN TEST 012 ABOVE) VIS-A-VIS THE C ELEMENT SEQUENCE OF ARRAY LAON31. THE SEQUENCE OF VALUES WRITTEN C IN THE RECORD ARE .TRUE., .TRUE., .FALSE., .FALSE., .TRUE., .TRUE. C .FALSE, .FALSE. C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IRECN = 12 IVCORR = 12 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((LAON31 (J,K,I), K=1,2), J=1,2), I=1,2) IVCOMP = IRECN 40140 IF (IVCOMP - 12) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 411 - TEST 015 **** C C C TEST 015 USES A WRITE STATEMENT WITHOUT ANY OUTPUT LIST ITEMS. C THE OUTPUT LIST ITEMS ARE OPTIONAL. C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. C C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS C 12.8, READ, WRITE AND PRINT STATEMENTS C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IRECN = 13 IVCORR = 13 WRITE (I04) IVCOMP = IRECN 40150 IF (IVCOMP - 13) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 411 - TEST 016 **** C C C TEST 016 IS SIMILAR TO THE PREVIOUS TEST EXCEPT THE WRITE C STATEMENT CONTAINS OUTPUT LIST ITEMS. ONE HUNDRED RECORDS ARE C WRITTEN. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IRECN = 13 DO 4132 I = 1,100 IRECN = IRECN + 1 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 4132 CONTINUE IVCORR = 100 IVCOMP = IRECN - 13 40160 IF (IVCOMP - 100) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C C THE NEXT THREE TESTS TEST USE OF THE BACKSPACE AND ENDFILE C STATEMENTS C C C C **** FCVS PROGRAM 411 - TEST 017 **** C C TEST 017 USES AN ENDFILE STATEMENT TO WRITE AN ENDFILE C RECORD TO A FILE WITH UNFORMATTED RECORDS. AFTER EXECUTION C OF THIS STATEMENT THE FILE SHOULD BE POSITION AFTER THE ENDFILE C RECORD. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCORR = 1 IVCOMP = 0 0172 ENDFILE I04 IVCOMP = 1 40170 IF (IVCOMP - 1) 20170, 10170, 20170 C 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 411 - TEST 018 **** C C C TEST 018 USES THE BACKSPACE STATEMENT TO REPOSITION THE FILE C BEFORE THE ENDFILE RECORD. C C SEE SECTIONS 12.10.4.1, BACKSPACE STATEMENT C 12.10.4.2, ENDFILE STATEMENT C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCORR = 1 IVCOMP = 0 BACKSPACE I04 IVCOMP = 1 40180 IF (IVCOMP - 1) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 411 - TEST 019 **** C C C TEST 019 IS A CONTINUATION OF THE ENDFILE AND BACKSPACE TESTS C (TWO PREVIOUS TESTS). THIS TEST CONTINUES WRITTING RECORDS TO THE C FILE OVER THE ENDFILE RECORD PREVIOUSLY WRITTEN IN TEST 017. C TWENTY EIGHT RECORDS ARE WRITTEN TO THE FILE FOLLOWED BY AN C ENDFILE. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = 0 IRECN = 113 DO 4112 I = 1,28 IRECN = IRECN + 1 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 IVCOMP = IVCOMP + 1 4112 CONTINUE IVCORR = 29 IEOF = 9999 IRECN = IRECN + 1 WRITE (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF IVCOMP = IVCOMP + 1 ENDFILE I04 C C THERE SHOULD BE A TOTAL OF 142 RECORDS PLUS AN ENDFILE RECORD C IN THE FILE AFTER EXECUTION OF THIS TEST. C 40190 IF (IVCOMP - 29) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C C THE NEXT SERIES OF TESTS READ AND CHECK THE RECORDS CREATED IN C TESTS 03 THROUGH 019. EACH OF THE TESTS IN THIS SET IS CHECKING C TWO THINGS. FIRST, THAT THE READ STATEMENT CONSTRUCT IS ACCEPTED C BY THE COMPILER AND SECOND THAT THE RECORDS CREATED IN TESTS 003 C THROUGH 019 AND READ IN THESE TESTS CAN GIVE PREDICTIBLE VALUES. C THE READ STATEMENT IS USED WITH THE I/O LIST ITEMS AS A VARIABLE, C AN ARRAY ELEMENT AND AN ARRAY. C C C C **** FCVS PROGRAM 411 - TEST 020 **** C C C TEST 020 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C VARIABLE OF INTEGER TYPE. C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE REWIND I04 C REPOSITION THE FILE TO THE FIRST RECORD IVON22 = 0 IVON56 = 0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 3 IF (IVON56 .EQ. 32767) IVCOMP = IVCOMP * 5 40200 IF (IVCOMP - 30) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 411 - TEST 021 **** C C C TEST 021 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C VARIABLE OF REAL TYPE. C C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE RVON22 = 0.0 RVON31 = 0.0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RVON21, RVON22, RVON31, RVON32, RVON33, RVON34, RVON55, RVON56 IF (IRECN .EQ. 02) IVCOMP = IVCOMP * 2 IF (RVON22 .EQ. -11.) IVCOMP = IVCOMP * 3 IF (RVON31 .EQ. 7.77) IVCOMP = IVCOMP * 5 40210 IF (IVCOMP - 30) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 411 - TEST 022 **** C C C TEST 022 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C VARIABLE OF LOGICAL TYPE. C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE LVONT1 = .FALSE. LVONF6 = .TRUE. IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LVONT1, LVONF2, LVONT3, LVONF4, LVONT5, LVONF6, LVONT7, LVONF8 IF (IRECN .EQ. 03) IVCOMP = IVCOMP * 2 IF (.NOT. LVONF6) IVCOMP = IVCOMP * 3 IF (LVONT1) IVCOMP = IVCOMP * 5 40220 IF (IVCOMP - 30) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 411 - TEST 023 **** C C C TEST 023 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO, AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IAON12(2) = 0 IAON12(8) = 0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON12(1), IAON12(2), IAON22(1,2), IAON22(2,2), IAON32(1,1,2), 2 IAON32(2,1,2), IAON12(7), IAON12(8) IF (IRECN .EQ. 04) IVCOMP = IVCOMP * 2 IF (IAON12(2) .EQ. -11) IVCOMP = IVCOMP * 3 IF (IAON12(8) .EQ. 32767) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40230 IF (IVCOMP - 30) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 411 - TEST 024 **** C C C TEST 024 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY ELEMENT OF REAL TYPE. ONE, TWO, AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE RAON22(2,2) = 0.0 RAON32(1,1,2) = 0.0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON12(1), RAON12(2), RAON22(1,2), RAON22(2,2), RAON32(1,1,2), 2 RAON32(2,1,2), RAON12(7), RAON12(8) IF (IRECN .EQ. 05) IVCOMP = IVCOMP * 2 IF (RAON22(2,2) .EQ. -7.77) IVCOMP = IVCOMP * 3 IF (RAON32(1,1,2) .EQ. .512 ) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40240 IF (IVCOMP - 30) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 411 - TEST 025 **** C C C TEST 025 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO, AND THREE C DIMENSION ARRAYS ARE USED. C C C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE LAON12(1) = .FALSE. LAON32(2,1,2) = .TRUE. IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON12(1), LAON12(2), LAON22(1,2), LAON22(2,2), LAON32(1,1,2), 2 LAON32(2,1,2), LAON12(7), LAON12(8) IF (IRECN .EQ. 06) IVCOMP = IVCOMP * 2 IF (LAON12(1)) IVCOMP = IVCOMP * 3 IF (.NOT. LAON32(2,1,2)) IVCOMP = IVCOMP * 5 40250 IF (IVCOMP - 30) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 411 - TEST 026 **** C C C TEST 026 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY OF INTEGER TYPE. C C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE IAON32(2,1,1) = 0 IAON32(2,2,2) = 0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON32 IF (IRECN .EQ. 07) IVCOMP = IVCOMP * 2 IF (IAON32(2,1,1) .EQ. -11) IVCOMP = IVCOMP * 3 IF (IAON32(2,2,2) .EQ. 32767) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40260 IF (IVCOMP - 30) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 411 - TEST 027 **** C C C TEST 027 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY OF REAL TYPE. C C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE RAON32(2,1,1) = 0.0 RAON32(2,2,2) = 0.0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON32 IF (IRECN .EQ. 08) IVCOMP = IVCOMP * 2 IF (RAON32(2,1,1) .EQ. -11.) IVCOMP = IVCOMP * 3 IF (RAON32(2,2,2) .EQ. 32767.) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40270 IF (IVCOMP - 30) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 411 - TEST 028 **** C C C TEST 028 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY OF LOGICAL TYPE. C C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE LAON32(1,1,1) = .FALSE. LAON32(2,2,2) = .TRUE. IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON32 IF (IRECN .EQ. 09) IVCOMP = IVCOMP * 2 IF (LAON32(1,1,1)) IVCOMP = IVCOMP * 3 IF (.NOT. LAON32(2,2,2)) IVCOMP = IVCOMP * 5 40280 IF (IVCOMP - 30) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C **** FCVS PROGRAM 411 - TEST 029 **** C C C TEST 029 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. THE STORAGE VALUES IN C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD C OF THE FILE. THIS RECORD IS RECORD NUMBER 10 AND WAS CREATED IN C TEST 012 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN C ARRAY IAON32 AND SUBSCRIPT VALUE AFTER THE READ IS C C VALUE 11 777 512 -32767 -11 -777 -512 32767 C FIELD POS 1 3 2 4 5 7 6 8 C IAON32 1 2 3 4 5 6 7 8 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,2 C C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE IAON32(2,1,1) = 0 IAON32(2,2,1) = 0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((IAON32 (J,K,I), K=1,2), J=1,2), I=1,2) IF (IRECN .EQ. 10) IVCOMP = IVCOMP * 2 IF (IAON32(2,1,1) .EQ. 777) IVCOMP = IVCOMP * 3 IF (IAON32(2,2,1) .EQ. -32767) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40290 IF (IVCOMP - 30) 20290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C C **** FCVS PROGRAM 411 - TEST 030 **** C C C TEST 030 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE STORAGE VALUES IN C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A C SEQUENCE THE SAME AS FOUND IN THE RECORD OF THE FILE. THIS REC- C ORD IS RECORD NUMBER 011 AND WAS CREATED IN TEST 013 ABOVE. C THE FIELD VALUE, FIELD POSITION, POSITION WITHIN ARRAY RAON32 AND C SUBSCRIPT VALUE AFTER THE THE READ IS C C VALUE 11. -11. 7.77 -7.77 .512 -.512 -32767. 32767. C FIELD POS 1 2 3 4 5 6 7 8 C RAON32 1 2 3 4 5 6 7 8 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,2 C C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE RAON32(1,2,1) = 0.0 RAON32(1,2,2) = 0.0 IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((RAON32 (J,K,I), J=1,2), K=1,2), I=1,2) IF (IRECN .EQ. 11) IVCOMP = IVCOMP * 2 IF (RAON32(1,2,1) .EQ. 7.77) IVCOMP = IVCOMP * 3 IF (RAON32(1,2,2) .EQ. -32767.) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40300 IF (IVCOMP - 30) 20300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C C **** FCVS PROGRAM 411 - TEST 031 **** C C C TEST 031 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. THE STORAGE VALUES IN C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD C OF THE FILE. THIS RECORD IS RECORD NUMBER 12 AND WAS CREATED IN C TEST 014 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN C ARRAY LAON32 AND SUBSCRIPT VALUE AFTER THE READ IS C C VALUE T T F F T T F F C FIELD POS 1 5 3 7 2 6 4 8 C LAON32 1 2 3 4 5 6 7 8 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,2 C C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE LAON32(1,2,1) = .TRUE. LAON32(2,1,1) = .FALSE. IVCORR = 30 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((LAON32 (J,K,I), I=1,2), K=1,2), J=1,2) IF (IRECN .EQ. 12) IVCOMP = IVCOMP * 2 IF ( .NOT. LAON32(1,2,1)) IVCOMP = IVCOMP * 3 IF (LAON32(2,1,1)) IVCOMP = IVCOMP * 5 40310 IF (IVCOMP - 30) 20310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C **** FCVS PROGRAM 411 - TEST 032 **** C C C TEST 032 USES A READ STATEMENT WITHOUT ANY INPUT LIST ITEMS C (INPUT LIST ITEMS ARE OPTIONAL FOR THE READ STATEMENT). THIS C RECORD WAS WRITTEN IN TEST 15 AND SHOULD BE RECORD NUMBER 13. C THE PURPOSE OF THIS TEST IS TO SEE THAT THE STATEMENT CONSTRUCT C IS ACCEPTABLE TO THE COMPILER. C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. C C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS C 12.8, READ, WRITE AND PRINT STATEMENTS C C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE IRECN = 13 IVCORR = 13 READ (I04) IVCOMP = IRECN 40320 IF (IVCOMP - 13) 20320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C **** FCVS PROGRAM 411 - TEST 033 **** C C C TEST 033 USES A READ STATEMENT IN WHICH THE NUMBER OF VALUES C REQUIRED BY THE INPUT LIST IS LESS THAN THE NUMBER OF VALUES IN C THE RECORD. THIS TEST READS RECORD NUMBER 14 WHICH WAS CREATED C IN TEST 016. C C SEE SECTION 12.9.5.1, UNFORMATED DATA TRANSFER C C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE IVON21 = 0 IVON22 = 0 IVON31 = 0 IVCORR = 0 IVCOMP = 1 READ (I04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON21, IVON22, IVON31 IF (IRECN .EQ. 14) IVCOMP = IVCOMP * 2 IF (IVON21 .EQ. 11) IVCOMP = IVCOMP * 3 IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 5 40330 IF (IVCOMP - 30) 20330, 10330, 20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C C C THE FOLLOWING TWO TESTS USE THE READ STATEMENT WITH THE C END SPECIFIER. C C C C **** FCVS PROGRAM 411 - TEST 034 **** C C C TEST 034 USES THE READ STATEMENT WITHOUT ANY I/O LIST ITEMS. C THE FILE IS READ UNTIL AN END-OF-FILE CONDITION OCCURS. C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE REWIND I04 C IVCOMP = 1 IVON01 = 0 IVCORR = 6 DO 0342 I=1,150 READ (I04, END = 0343) IVON01 = IVON01 + 1 IF (IVON01 .GT. 150) GO TO 40340 0342 CONTINUE GO TO 40340 0343 IVCOMP = IVCOMP * 2 IF (IVON01 .EQ. 142) IVCOMP = IVCOMP * 3 40340 IF (IVCOMP - 6) 20340, 10340, 20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 CONTINUE C C **** FCVS PROGRAM 411 - TEST 035 **** C C C TEST 035 USES THE READ STATEMENT WITH INPUT LIST ITEMS. C THE FILE IS READ UNTIL AN END-OF-FILE CONDITION OCCURS. C C IVTNUM = 35 IF (ICZERO) 30350, 0350, 30350 0350 CONTINUE REWIND I04 IVCOMP = 1 IVCORR = 6 IVON01 = 0 IRECCK = 0 DO 0352 I = 1,150 IRECCK = IRECCK + 1 IF (IRECCK .EQ. 13) GO TO 0353 C TEST 015 WROTE A RECORD WITHOUT ANY I/O LIST ITEMS THEREFORE C THE RECORD IS READ WITHOUT ANY I/O LIST ITEMS. READ (I04, END = 0354) IPROG, IFILE, ITOTR, IRLGN, IRECN,IEOF GO TO 0355 0353 READ (I04) IVON01 = IVON01 + 1 0355 IF (IRECN .EQ. IRECCK) IVON01 = IVON01 + 1 0352 CONTINUE GO TO 40350 0354 IVCOMP = IVCOMP * 2 IF (IVON01 .EQ. 142) IVCOMP = IVCOMP * 3 40350 IF (IVCOMP - 6) 20350, 10350, 20350 30350 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10350, 0361, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0361 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0361 CONTINUE C C C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST C REPORT AND BEFORE THE TEST REPORT SUMMARY. CDB** BEGIN FILE DUMP CODE C REWIND I04 C ITOTR = 142 C ILUN = I04 C IRLGN = 80 C IRNUM = 1 C7701 FORMAT (80A1) C7702 FORMAT (1X,80A1) C7703 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,13H RECORDS - OK) C7704 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,27H RECORDS - THERE SHOULD BE ,I C 13,9H RECORDS.) C DO 7771 IRNUM = 1, ITOTR C READ (ILUN, END = 7772) (IDUMP(ICH), ICH = 1, IRLGN) C WRITE (I02,7702) (IDUMP(ICH), ICH = 1, IRLGN) C7771 CONTINUE C7772 CONTINUE CDE** END OF DUMP CODE C TEST 035 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD C HAVE MADE 35 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR C SEQUENTIAL ACCESS C C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM411) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM411) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM411 FM413.f 481036382 170 2 100666 46339 ` *HEADER,FORTR,FM413 *FILES1,FORTR,FM413,X PROGRAM FM413 C C C C THIS ROUTINE TESTS FOR PROPER PROCESSING OF UNFORMATTED RECORDS C IN FILES CONNECTED FOR DIRECT ACCESS. FOR THE SUBSET LANGUAGE A C FILE CONNECTED FOR DIRECT ACCESS MUST HAVE UNFORMATTED RECORDS C THIS ROUTINE FIRST TESTS SEVERAL SYNTACTICAL VARIATIONS OF THE C READ AND WRITE STATEMENTS USED IN CREATING AND ACCESSING C RECORDS OF THE FILE. THE OPEN STATEMENT IS USED TO CONNECT C THE FILE TO A UNIT AND ESTABLISH ITS CONNECTION FOR DIRECT C ACCESS. THE FIRST SERIES OF TESTS CREATE AND ACCESS THE C RECORDS OF THE FILE IN RECORD NUMBER SEQUENCE AND THE LAST C SERIES OF TESTS CREATE AND ACCESS RECORDS OF THE FILE IN RANDOM C ORDER. C C UNFORMATTED RECORDS MAY HAVE BOTH CHARACTER AND NONCHARACTER C DATA AND THIS DATA IS TRANSFERRED WITHOUT EDITING BETWEEN THE C CURRENT RECORD AND THE ENTITIES SPECIFIED BY THE INPUT/OUTPUT C LIST. THIS ROUTINE BOTH READS AND WRITES RECORDS CONTAINING C THE DATA TYPES OF INTEGER ,REAL AND LOGICAL WITH I/O LIST ITEMS C REPRESENTED AS VARIABLE NAMES, ARRAY ELEMENT NAMES AND ARRAY C NAMES. THIS ROUTINE DOES NOT TEST DATA OF TYPE CHARACTER. C C ROUTINE FM411 TESTS USE OF UNFORMATTED RECORDS C WITH A FILE CONNECTED FOR SEQUENTIAL ACCESS. C C THIS ROUTINE TESTS C C (1) THE STATEMENT CONSTRUCTS C C A. WRITE (U,REC=RN) VARIABLE-NAME,... C B. WRITE (U,REC=RN) ARRAY-ELEMENT-NAME,... C C. WRITE (U,REC=RN) ARRAY-NAME,... C D. WRITE (U,REC=RN) - NO OUTPUT LIST C E. WRITE (U,REC=RN) IMPLIED-DO-LIST C F. READ (U,REC=RN) VARIABLE-NAME,... C G. READ (U,REC=RN) ARRAY-ELEMENT-NAME,... C H. READ (U,REC=RN) ARRAY-NAME,... C I. READ (U,REC=RN) - NO INPUT LIST C J. READ (U,REC=RN) IMPLIED-DO-LIST C C (2) USE OF A READ STATEMENT WHERE THE NUMBER OF VALUES C IN THE INPUT LIST IS LESS THAN OR EQUAL TO THE C NUMBER OF VALUES IN THE RECORD. C (3) USE OF THE STATEMENT C OPEN (U,ACCESS='DIRECT',RECL=RL) C FOR CONNECTING A FILE TO THE UNIT. C C (4) THAT THE RECORDS OF A DIRECT ACCESS FILE NEED NOT BE C BE CREATED AND READ IN ORDER OF THEIR RECORD NUMBERS. C C (5) THAT THE VALUES OF THE RECORD MAY BE CHANGED WHEN C THE RECORD IS REWRITTEN. C REFERENCES - C C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1977 C C SECTION 4.1, DATA TYPES C SECTION 12.1.2, UNFORMATTED RECORD C SECTION 12.2.4, FILE ACCESS C SECTION 12.2.4.2, DIRECT ACCESS C SECTION 12.3.3, UNIT SPECIFIER AND IDENTIFIER C SECTION 12.7.2, END-OF-FILE SPECIFIER C SECTION 12.8, READ, WRITE AND PRINT STATEMENTS C SECTION 12.8.1, CONTROL INFORMATION LIST C SECTION 12.8.2, INPUT/OUTPUT LIST C SECTION 12.8.2.1, INPUT LIST ITEMS C SECTION 12.8.2.2, OUTPUT LIST ITEMS C SECTION 12.8.2.3, IMPLIED-DO LIST C SECTION 12.9.5.1, UNFORMATTED DATA TRANSFER C SECTION 12.10.1, OPEN STATEMENT C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C LOGICAL LAON11, LAON21, LAON31, LCONT1, LCONF2, LVONT1, LVONF2 LOGICAL LAON12, LAON22, LAON32, LCONT3, LCONF4, LVONT3, LVONF4 LOGICAL LCONT5, LCONF6, LCONT7, LCONF8, LVONT5, LVONF6, LVONT7 LOGICAL LVONF8 DIMENSION IDUMP(80) DIMENSION IAON11(8), IAON21(2,4), IAON31(2,2,2) DIMENSION IAON12(8), IAON22(2,4), IAON32(2,2,2) DIMENSION RAON11(8), RAON21(2,4), RAON31(2,2,2) DIMENSION RAON12(8), RAON22(2,4), RAON32(2,2,2) DIMENSION LAON11(8), LAON21(2,4), LAON31(2,2,2) DIMENSION LAON12(8), LAON22(2,4), LAON32(2,2,2) DATA IAON11 /11, -11, 777, -777, 512, -512, -32767, 32767/ DATA IAON21 /11, -11, 777, -777, 512, -512, -32767, 32767/ DATA IAON31 /11, -11, 777, -777, 512, -512, -32767, 32767/ DATA LAON11 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 1 .TRUE., .FALSE./ DATA LAON21 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 1 .TRUE., .FALSE./ DATA LAON31 /.TRUE., .FALSE., .TRUE., .FALSE., .TRUE., .FALSE., 1 .TRUE., .FALSE./ DATA RAON11 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./ DATA RAON21 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./ DATA RAON31 /11., -11., 7.77, -7.77,.512, -.512, -32767., 32767./ ICON21 = 11 ICON22 = -11 ICON31 = +777 ICON32 = -777 ICON33 = 512 ICON34 = -512 ICON55 = -32767 ICON56 = 32767 RCON21 = 11. RCON22 = -11. RCON31 = +7.77 RCON32 = -7.77 RCON33 = .512 RCON34 = -.512 RCON55 = -32767. RCON56 = 32767. LCONT1 = .TRUE. LCONF2 = .FALSE. LCONT3 = .TRUE. LCONF4 = .FALSE. LCONT5 = .TRUE. LCONF6 = .FALSE. LCONT7 = .TRUE. LCONF8 = .FALSE. C C THE FILE USED IN THIS ROUTINE HAS THE FOLLOWING PROPERTIES C C FILE IDENTIFIER - I10 (X-NUMBER 10) C RECORD SIZE - 80 C ACCESS METHOD - DIRECT C RECORD TYPE - UNFORMATTED C DESIGNATED DEVICE - DISK C TYPE OF DATA - INTEGER, REAL AND LOGICAL C RECORDS IN FILE - 214 C C THE FIRST 6 FIELDS OF EACH RECORD IN THE FILE UNIQUELY IDENT- C IFIES THAT RECORD. THE REMAINING FIELDS OF THE RECORD CONTAIN C DATA WHICH ARE USED IN TESTING. A DESCRIPTION OF EACH FIELD C OF THE PREAMBLE FOLLOWS. C C VARIABLE NAME IN PROGRAM FIELD NUMBER C ------------------------ ------------ C C IPROG (ROUTINE NAME) - 1 C IFILE (LOGICAL/X-NUMBER) - 2 C ITOTR (RECORDS IN FILE) - 3 C IRLGN (LENGTH OF RECORD) - 4 C IRECN (RECORD NUMBER) - 5 C IEOF (9999 IF LAST RECORD) - 6 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C I10 = 9 C I10 CONTAINS THE LOGICAL UNIT NUMBER FOR A DIRECT ACCESS FILE C WITH UNFORMATTED RECORDS CX100 THE CARD IS REPLACED BY CONTENTS OF X-100 CARD CX101 THE CARD IS REPLACED BY CONTENTS OF X-101 CARD IPROG = 413 IFILE = I10 ITOTR = 214 IRLGN = 80 IRECN = 0 IEOF = 0 C C C C TESTS 001 THROUGH 013 OPEN A FILE CONNECTED FOR DIRECT ACCESS C AND WRITE 12 RECORDS INTO THE FILE. THESE TESTS TEST USE OF THE C ALLOWABLE FORMS OF THE OPEN AND WRITE STATEMENTS ON A FILE C CONNECTED FOR DIRECT ACCESS. THE WRITE STATEMENT IS USED WITH C THE I/O LIST ITEM AS A VARIABLE, ARRAY ELEMENT AND AN ARRAY. C THE PURPOSE OF TESTS 001 THROUGH 013 IS TO CHECK THE COMPILER'S C ABILITY TO HANDLE THE VARIOUS STATEMENT CONSTRUCTS OF THE OPEN C AND WRITE STATEMENTS. LATER TESTS WITHIN THIS ROUTINE READ C AND CHECK THE RECORDS WHICH WERE CREATED. C THE VALUE IN IVCORR FOR TESTS 002 THROUGH 013 IS THE RECORD C NUMBER USED TO WRITE THE RECORD. C C C C **** FCVS PROGRAM 413 - TEST 001 **** C C C TEST 001 USES THE OPEN STATEMENT TO CONNECT A FILE FOR DIRECT C ACCESS. THIS IS THE FIRST ROUTINE TO USE AN OPEN STATEMENT. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCORR = 1 IVCOMP = 0 OPEN ( I10, ACCESS = 'DIRECT', RECL = 80 ) IVCOMP = 1 40010 IF (IVCOMP - 1) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 413 - TEST 002 **** C C C TEST 002 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS A VARIABLE OF INTEGER TYPE. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IRECN = 01 IVCORR = 01 WRITE (I10,REC=01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 IVCOMP = IRECN 40020 IF (IVCOMP - 01) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 413 - TEST 003 **** C C C TEST 003 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS A VARIABLE OF REAL TYPE. C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IRECN = 02 IVCORR = 02 WRITE (I10,REC=02) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RCON21, RCON22, RCON31, RCON32, RCON33, RCON34, RCON55, RCON56 IVCOMP = IRECN 40030 IF (IVCOMP - 02) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 413 - TEST 004 **** C C C TEST 004 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS A VARIABLE OF LOGICAL TYPE. C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IRECN = 03 IVCORR = 03 WRITE (I10,REC=03) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LCONT1, LCONF2, LCONT3, LCONF4, LCONT5, LCONF6, LCONT7, LCONF8 IVCOMP = IRECN 40040 IF (IVCOMP - 03) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C **** FCVS PROGRAM 413 - TEST 005 **** C C C TEST 005 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IRECN = 04 IVCORR = 04 WRITE (I10,REC=04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON11(1), IAON11(2), IAON21(1,2), IAON21(2,2), IAON31(1,1,2), 2 IAON31(2,1,2), IAON11(7), IAON11(8) IVCOMP = IRECN 40050 IF (IVCOMP - 04) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 413 - TEST 006 **** C C C TEST 006 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY ELEMENT OF REAL TYPE. ONE, TWO AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IRECN = 05 IVCORR = 05 WRITE (I10,REC=05) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON11(1), RAON11(2), RAON21(1,2), RAON21(2,2), RAON31(1,1,2), 2 RAON31(2,1,2), RAON11(7), RAON11(8) IVCOMP = IRECN 40060 IF (IVCOMP - 05) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 413 - TEST 007 **** C C C TEST 007 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IRECN = 06 IVCORR = 06 WRITE (I10,REC=06) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON11(1), LAON11(2), LAON21(1,2), LAON21(2,2), LAON31(1,1,2), 2 LAON31(2,1,2), LAON11(7), LAON11(8) IVCOMP = IRECN 40070 IF (IVCOMP - 06) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 413 - TEST 008 **** C C C TEST 008 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY OF INTEGER TYPE. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IRECN = 07 IVCORR = 07 WRITE (I10,REC=07) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON31 IVCOMP = IRECN 40080 IF (IVCOMP - 07) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C **** FCVS PROGRAM 413 - TEST 009 **** C C C TEST 009 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY OF REAL TYPE. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IRECN = 08 IVCORR = 08 WRITE (I10,REC=08) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON31 IVCOMP = IRECN 40090 IF (IVCOMP - 08) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 413 - TEST 010 **** C C C TEST 010 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN ARRAY OF LOGICAL TYPE. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IRECN = 09 IVCORR = 09 WRITE (I10,REC=09) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON31 IVCOMP = IRECN 40100 IF (IVCOMP - 09) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 413 - TEST 011 **** C C C TEST 011 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE C ELEMENT SEQUENCE OF ARRAY IAON31. THE SEQUENCE OF VALUES WRITTEN C IN THE RECORD ARE 11, 512, 777, -32767, -11, -512, -777, 32767. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IRECN = 10 IVCORR = 10 WRITE (I10,REC=10) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((IAON31 (J,K,I), I=1,2), K=1,2), J=1,2) IVCOMP = IRECN 40110 IF (IVCOMP - 10) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 413 - TEST 012 **** C C C TEST 012 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE FIELD VALUES C (IN FIELD POSITION ORDER) WRITTEN IN THE RECORD ARE 11., -11., C 7.77, -7.77, .512, -.512, -32767., 32767. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IRECN = 11 IVCORR = 11 WRITE (I10,REC=11) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((RAON31 (J,K,I), J=1,2), K=1,2), I=1,2) IVCOMP = IRECN 40120 IF (IVCOMP - 11) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 413 - TEST 013 **** C C C TEST 013 USES A WRITE STATEMENT WHERE THE OUTPUT LIST ITEM C IS AN IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. C THE FIELD VALUES ARE WRITTEN IN MIXED ORDER VIS-A-VIS THE C ELEMENT SEQUENCE OF ARRAY LAON31. THE SEQUENCE OF VALUES WRITTEN C IN THE RECORD ARE .TRUE., .TRUE., .FALSE., .FALSE., .TRUE., .TRUE. C .FALSE, .FALSE. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IRECN = 12 IVCORR = 12 WRITE (I10,REC=12) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((LAON31 (J,K,I), K=1,2), J=1,2), I=1,2) IVCOMP = IRECN 40130 IF (IVCOMP - 12) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C C TESTS 14 AND 15 TEST THE WRITE WITHOUT OUTPUT LIST ITEMS. C C C C C **** FCVS PROGRAM 413 - TEST 014 **** C C C TEST 014 USES A WRITE STATEMENT WITHOUT ANY OUTPUT LIST ITEMS. C THE OUTPUT LIST ITEMS ARE OPTIONAL AND THIS TEST USES THIS FORM C TO ESTABLISH A RECORD NUMBER FOR A RECORD IN THE FILE. C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. C C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS C 12.2.4.2 (5) AND (6), DIRECT ACCESS C 12.8, READ, WRITE AND PRINT STATEMENTS C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IRECN = 13 IVCORR = 13 WRITE (I10,REC=13) IVCOMP = IRECN 40140 IF (IVCOMP - 13) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C **** FCVS PROGRAM 413 - TEST 015 **** C C C TEST 015 IS SIMILAR TO TEST 014 ABOVE EXCEPT THE RN OF THE C RECORD SPECIFIER (REC = RN) IS AN INTEGER VARIABLE. C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IRECN = 14 IVCORR = 14 IREC = 14 WRITE (I10,REC = IREC) IVCOMP = IRECN 40150 IF (IVCOMP - 14) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C C TESTS 16 AND 17 VERIFY THAT RECORDS MAY BE CREATED IN C OTHER THAN SEQUENTIAL ORDER. ALSO THAT A VARIABLE MAY BY USED C AS THE OPERAND OF THE REC SPECIFIER FOR A WRITE STATEMENT. C C C C **** FCVS PROGRAM 413 - TEST 016 **** C C C TEST 016 TESTS USE OF THE REC SPECIFIER WHERE THE OPERAND C IS A VARIABLE. THIS TEST IS SIMILAR TO TEST 15 EXCEPT THE WRITE C STATEMENT CONTAINS OUTPUT LIST ITEMS. ONE HUNDRED RECORDS ARE C WRITTEN BY INCREMENTING THE VARIABLE BY 2 FOR EACH WRITE. TEST C 032 READS THE RECORDS WRITTEN BY THIS METHOD. C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IRECN = 13 IREC = 13 DO 4132 I = 1,100 IREC = IREC + 2 IRECN = IRECN + 2 WRITE (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 4132 CONTINUE IVCORR = 100 IVCOMP = IREC - 113 40160 IF (IVCOMP - 100) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C **** FCVS PROGRAM 413 - TEST 017 **** C C C TEST 17 IS SIMILAR TO TEST 16 EXCEPT THE RECORD IS C WRITTEN IN REVERSE ORDER OF RECORD NUMBER. ONE HUNDERD RECORDS C ARE WRITTEN AND THE VARIABLE OF THE REC SPECIFIER IS DECREMENTED C BY TWO FOR EACH WRITE. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IRECN = 216 IREC = 216 IVCOMP = 0 DO 4133 I=1,100 IREC = IREC - 2 IRECN = IRECN - 2 WRITE (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON21, ICON22, ICON31, ICON32, ICON33, ICON34, ICON55, ICON56 IVCOMP = IVCOMP + 1 4133 CONTINUE IVCORR = 100 40170 IF (IVCOMP - 100) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C C TESTS 018 THROUGH 030 READ AND CHECK THE RECORDS CREATED IN C TESTS 002 THROUGH 014. EACH OF THE TESTS IN THIS SET IS CHECKING C TWO THINGS. FIRST, THAT THE READ STATEMENT CONSTRUCT IS ACCEPTED C BY THE COMPILER AND SECOND THAT THE RECORDS CREATED IN TESTS 002 C THROUGH 013 AND READ IN THESE TESTS CAN GIVE PREDICTIBLE VALUES. C THE READ STATEMENT IS USED WITH THE I/O LIST ITEM AS A VARIABLE, C AN ARRAY ELEMENT AND AN ARRAY. C C C C **** FCVS PROGRAM 413 - TEST 018 **** C C C TEST 018 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C VARIABLE OF INTEGER TYPE. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVON22 = 0 IVON56 = 0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 3 IF (IVON56 .EQ. 32767) IVCOMP = IVCOMP * 5 40180 IF (IVCOMP - 30) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 413 - TEST 019 **** C C C TEST 019 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C VARIABLE OF REAL TYPE. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE RVON22 = 0.0 RVON31 = 0.0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 02) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RVON21, RVON22, RVON31, RVON32, RVON33, RVON34, RVON55, RVON56 IF (IRECN .EQ. 02) IVCOMP = IVCOMP * 2 IF (RVON22 .EQ. -11.) IVCOMP = IVCOMP * 3 IF (RVON31 .EQ. 7.77) IVCOMP = IVCOMP * 5 40190 IF (IVCOMP - 30) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 413 - TEST 020 **** C C C TEST 020 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C VARIABLE OF LOGICAL TYPE. C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE LVONT1 = .FALSE. LVONF6 = .TRUE. IVCORR = 30 IVCOMP = 1 READ (I10, REC = 03) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LVONT1, LVONF2, LVONT3, LVONF4, LVONT5, LVONF6, LVONT7, LVONF8 IF (IRECN .EQ. 03) IVCOMP = IVCOMP * 2 IF (.NOT. LVONF6) IVCOMP = IVCOMP * 3 IF (LVONT1) IVCOMP = IVCOMP * 5 40200 IF (IVCOMP - 30) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C **** FCVS PROGRAM 413 - TEST 021 **** C C C TEST 021 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY ELEMENT OF INTEGER TYPE. ONE, TWO, AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IAON12(2) = 0 IAON12(8) = 0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 04) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON12(1), IAON12(2), IAON22(1,2), IAON22(2,2), IAON32(1,1,2), 2 IAON32(2,1,2), IAON12(7), IAON12(8) IF (IRECN .EQ. 04) IVCOMP = IVCOMP * 2 IF (IAON12(2) .EQ. -11) IVCOMP = IVCOMP * 3 IF (IAON12(8) .EQ. 32767) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40210 IF (IVCOMP - 30) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 413 - TEST 022 **** C C C TEST 022 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY ELEMENT OF REAL TYPE. ONE, TWO, AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE RAON22(2,2) = 0.0 RAON32(1,1,2) = 0.0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 05) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON12(1), RAON12(2), RAON22(1,2), RAON22(2,2), RAON32(1,1,2), 2 RAON32(2,1,2), RAON12(7), RAON12(8) IF (IRECN .EQ. 05) IVCOMP = IVCOMP * 2 IF (RAON22(2,2) .EQ. -7.77) IVCOMP = IVCOMP * 3 IF (RAON32(1,1,2) .EQ. .512 ) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40220 IF (IVCOMP - 30) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 413 - TEST 023 **** C C C TEST 023 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY ELEMENT OF LOGICAL TYPE. ONE, TWO, AND THREE C DIMENSION ARRAYS ARE USED. C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE LAON12(1) = .FALSE. LAON32(2,1,2) = .TRUE. IVCORR = 30 IVCOMP = 1 READ (I10, REC = 06) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON12(1), LAON12(2), LAON22(1,2), LAON22(2,2), LAON32(1,1,2), 2 LAON32(2,1,2), LAON12(7), LAON12(8) IF (IRECN .EQ. 06) IVCOMP = IVCOMP * 2 IF (LAON12(1)) IVCOMP = IVCOMP * 3 IF (.NOT. LAON32(2,1,2)) IVCOMP = IVCOMP * 5 40230 IF (IVCOMP - 30) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 413 - TEST 024 **** C C C TEST 024 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY OF INTEGER TYPE. C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IAON32(2,1,1) = 0 IAON32(2,2,2) = 0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 07) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IAON32 IF (IRECN .EQ. 07) IVCOMP = IVCOMP * 2 IF (IAON32(2,1,1) .EQ. -11) IVCOMP = IVCOMP * 3 IF (IAON32(2,2,2) .EQ. 32767) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40240 IF (IVCOMP - 30) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 413 - TEST 025 **** C C C TEST 025 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY OF REAL TYPE. C C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE RAON32(2,1,1) = 0.0 RAON32(2,2,2) = 0.0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 08) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 RAON32 IF (IRECN .EQ. 08) IVCOMP = IVCOMP * 2 IF (RAON32(2,1,1) .EQ. -11.) IVCOMP = IVCOMP * 3 IF (RAON32(2,2,2) .EQ. 32767.) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40250 IF (IVCOMP - 30) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 413 - TEST 026 **** C C C TEST 026 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C ARRAY OF LOGICAL TYPE. C C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE LAON32(1,1,1) = .FALSE. LAON32(2,2,2) = .TRUE. IVCORR = 30 IVCOMP = 1 READ (I10, REC = 09) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 LAON32 IF (IRECN .EQ. 09) IVCOMP = IVCOMP * 2 IF (LAON32(1,1,1)) IVCOMP = IVCOMP * 3 IF (.NOT. LAON32(2,2,2)) IVCOMP = IVCOMP * 5 40260 IF (IVCOMP - 30) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 413 - TEST 027 **** C C C TEST 027 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C IMPLIED-DO WITH AN ITEM OF INTEGER TYPE. THE STORAGE VALUES IN C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD C OF THE FILE. THIS RECORD IS RECORD NUMBER 10 AND WAS CREATED IN C TEST 012 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN C ARRAY IAON32 AND SUBSCRIPT VALUE AFTER THE READ IS C C VALUE 11 777 512 -32767 -11 -777 -512 32767 C FIELD POS 1 3 2 4 5 7 6 8 C IAON32 1 2 3 4 5 6 7 8 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,2 C C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE IAON32(2,1,1) = 0 IAON32(2,2,1) = 0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 10) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((IAON32 (J,K,I), K=1,2), J=1,2), I=1,2) IF (IRECN .EQ. 10) IVCOMP = IVCOMP * 2 IF (IAON32(2,1,1) .EQ. 777) IVCOMP = IVCOMP * 3 IF (IAON32(2,2,1) .EQ. -32767) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40270 IF (IVCOMP - 30) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 413 - TEST 028 **** C C C TEST 028 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C IMPLIED-DO WITH AN ITEM OF REAL TYPE. THE STORAGE VALUES IN C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A C SEQUENCE THE SAME AS FOUND IN THE RECORD OF THE FILE. THIS REC- C ORD IS RECORD NUMBER 011 AND WAS CREATED IN TEST 013 ABOVE. C THE FIELD VALUE, FIELD POSITION, POSITION WITHIN ARRAY RAON32 AND C SUBSCRIPT VALUE AFTER THE THE READ IS C C VALUE 11. -11. 7.77 -7.77 .512 -.512 -32767. 32767. C FIELD POS 1 2 3 4 5 6 7 8 C RAON32 1 2 3 4 5 6 7 8 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,2 C C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE RAON32(1,2,1) = 0.0 RAON32(1,2,2) = 0.0 IVCORR = 30 IVCOMP = 1 READ (I10, REC = 11) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((RAON32 (J,K,I), J=1,2), K=1,2), I=1,2) IF (IRECN .EQ. 11) IVCOMP = IVCOMP * 2 IF (RAON32(1,2,1) .EQ. 7.77) IVCOMP = IVCOMP * 3 IF (RAON32(1,2,2) .EQ. -32767.) IVCOMP = IVCOMP * 5 C C THE ABOVE 3 IF STATEMENTS CHECK THE RECORD NUMBER, A NEGATIVE C FIELD VALUE AND A POSITIVE FIELD VALUE. C 40280 IF (IVCOMP - 30) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C **** FCVS PROGRAM 413 - TEST 029 **** C C C TEST 029 USES A READ STATEMENT WHERE THE INPUT LIST ITEM IS A C IMPLIED-DO WITH AN ITEM OF LOGICAL TYPE. THE STORAGE VALUES IN C THE ARRAY (BY THE IMPLIED-DO DURING THE READ) SHOULD RESULT IN A C DIFFERENT STORAGE SEQUENCE IN THE ARRAY THAN FOUND IN THE RECORD C OF THE FILE. THIS RECORD IS RECORD NUMBER 12 AND WAS CREATED IN C TEST 014 ABOVE. THE FIELD VALUE, FIELD POSITION, POSITION WITHIN C ARRAY LAON32 AND SUBSCRIPT VALUE AFTER THE READ IS C C VALUE T T F F T T F F C FIELD POS 1 5 3 7 2 6 4 8 C LAON32 1 2 3 4 5 6 7 8 C SUBSCRIPT 1,1,1 2,1,1 1,2,1 2,2,1 1,1,2 2,1,2 1,2,2 2,2,2 C C IVTNUM = 29 IF (ICZERO) 30290, 0290, 30290 0290 CONTINUE LAON32(1,2,1) = .TRUE. LAON32(2,1,1) = .FALSE. IVCORR = 30 IVCOMP = 1 READ (I10, REC = 12) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 (((LAON32 (J,K,I), I=1,2), K=1,2), J=1,2) IF (IRECN .EQ. 12) IVCOMP = IVCOMP * 2 IF ( .NOT. LAON32(1,2,1)) IVCOMP = IVCOMP * 3 IF (LAON32(2,1,1)) IVCOMP = IVCOMP * 5 40290 IF (IVCOMP - 30) 20290, 10290, 20290 30290 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10290, 0301, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C C **** FCVS PROGRAM 413 - TEST 030 **** C C C TEST 030 USES A READ STATEMENT WITHOUT ANY INPUT LIST ITEMS C (INPUT LIST ITEMS ARE OPTIONAL FOR THE READ STATEMENT). THIS C RECORD WAS WRITTEN IN TEST 14 AND SHOULD BE RECORD NUMBER 13. C THE PURPOSE OF THIS TEST IS TO SEE THAT THE STATEMENT CONSTRUCT C IS ACCEPTABLE TO THE COMPILER. C ALSO THE LENGTH OF AN UNFORMATTED RECORD MAY BE ZERO. C C SEE SECTIONS 12.1.2, UNFORMATTED RECORDS C 12.8, READ, WRITE AND PRINT STATEMENTS C C IVTNUM = 30 IF (ICZERO) 30300, 0300, 30300 0300 CONTINUE IRECN = 13 IVCORR = 13 READ (I10, REC = 13) IVCOMP = IRECN 40300 IF (IVCOMP - 13) 20300, 10300, 20300 30300 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10300, 0311, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C C **** FCVS PROGRAM 413 - TEST 031 **** C C C TEST 031 USES A READ STATEMENT IN WHICH THE NUMBER OF VALUES C REQUIRED BY THE INPUT LIST IS LESS THAN THE NUMBER OF VALUES IN C THE RECORD. C C SEE SECTION 12.9.5.1, UNFORMATED DATA TRANSFER C C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE IVON21 = 0 IVON22 = 0 IVON31 = 0 IVCORR = 0 IVCOMP = 1 READ (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON21, IVON22, IVON31 IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 IF (IVON21 .EQ. 11) IVCOMP = IVCOMP * 3 IF (IVON22 .EQ. -11) IVCOMP = IVCOMP * 5 40310 IF (IVCOMP - 30) 20310, 10310, 20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C C TEST 032 AND 033 VERIFIES THAT RECORDS MAY BE READ IN ANY ORDER C ALSO THAT A VARIABLE MAY BE USED AS THE OPERAND OF THE REC SPEC- C IFIER FOR A READ STATEMENT. C C SEE SECTION 2.2.4.2(1) , DIRECT ACCESS C C C C **** FCVS PROGRAM 413 - TEST 032 **** C C C TEST 032 READS THE RECORDS WRITTEN IN TEST 16. EVERY OTHER C RECORD IS READ FOR A TOTAL OF 100 RECORDS (THE REC SPECIFIER C VARIABLE IS INCREMENTED BY 2). C C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE IRECCK = 13 IRECN = 0 IREC = 13 IVCOMP = 0 DO 4134 I = 1,100 IREC = IREC + 2 IRECCK = IRECCK + 2 READ (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 IF (IRECN .EQ. IRECCK) IVCOMP = IVCOMP + 1 4134 CONTINUE IVCORR = 100 40320 IF (IVCOMP - 100) 20320, 10320, 20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C **** FCVS PROGRAM 413 - TEST 033 **** C C C TEST 033 READS THE RECORDS WRITTEN IN TEST 17. THIS TEST IS C SIMILAR TO TEST 32 ABOVE EXCEPT THE FILE IS READ IN REVERSE C RECORD NUMBER ORDER. C C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE IRECCK = 216 IRECN = 0 IVCOMP = 0 IREC = 216 DO 4135 I = 1,100 IREC = IREC - 2 IRECCK = IRECCK - 2 READ (I10, REC = IREC) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON21, IVON22, IVON31, IVON32, IVON33, IVON34, IVON55, IVON56 IF (IRECN .EQ. IRECCK) IVCOMP = IVCOMP + 1 4135 CONTINUE IVCORR = 100 40330 IF (IVCOMP - 100) 20330, 10330, 20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C C **** FCVS PROGRAM 413 - TEST 034 **** C C C TEST 034 VERIFIES THAT THE VALUES OF A RECORD MAY BE CHANGED C WHEN THE RECORD IS REWRITTEN. RECORD NUMBER 01 IS USED FOR C TESTING. THE RECORD WAS WRITTEN IN TEST 02 AND READ IN TEST 18. C A RECORD CANNOT BE DELETED FROM THE FILE BUT IT CAN BE REWRITTEN. C C SEE SECTION 12.2.4.2 (5), DIRECT ACCESS C C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE IRECN = 01 WRITE (I10, REC = 01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 ICON31, ICON32, ICON21, ICON22, ICON55, ICON56, ICON33, ICON34 READ (I10, REC=01) IPROG, IFILE, ITOTR, IRLGN, IRECN, IEOF, 1 IVON61, IVON62, IVON63, IVON64, IVON65,IVON66, IVON67, IVON68 IVCORR = 210 IVCOMP = 1 IF (IRECN .EQ. 01) IVCOMP = IVCOMP * 2 IF (IVON61 .EQ. 777) IVCOMP = IVCOMP * 3 IF (IVON62 .EQ. -777) IVCOMP = IVCOMP * 5 IF (IVON66 .EQ. 32767) IVCOMP = IVCOMP * 7 40340 IF (IVCOMP - 210) 20340, 10340, 20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 CONTINUE C C C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION AND ***** END-FILE-DUMP SECTION C MAY OR MAY NOT APPEAR AS COMMENTS IN THE SOURCE PROGRAM. C THIS CODE IS OPTIONAL AND BY DEFAULT IT IS AUTOMATICALLY COMMENTED C OUT BY THE EXECUTIVE ROUTINE. A DUMP OF THE FILE USED BY THIS C ROUTINE IS PROVIDED BY USING THE *OPT1 EXECUTIVE ROUTINE CONTROL C CARD. IF THE OPTIONAL CODE IS SELECTED THE ROUTINE WILL DUMP C THE CONTENTS OF THE FILE TO THE PRINT FILE FOLLOWING THE TEST C REPORT AND BEFORE THE TEST REPORT SUMMARY. C CDB** BEGIN FILE DUMP CODE C ITOTR = 214 C ILUN = I10 C IRLGN = 80 C IRNUM = 1 C7701 FORMAT (80A1) C7702 FORMAT (1X,80A1) C7703 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,13H RECORDS - OK) C7704 FORMAT (10X,5HFILE ,I2,5H HAS ,I3,27H RECORDS - THERE SHOULD BE ,I C 13,9H RECORDS.) C DO 7771 IRNUM = 1, ITOTR C READ (ILUN, REC = IRNUM) (IDUMP(ICH), ICH = 1, IRLGN) C WRITE (I02, 7702) (IDUMP(ICH), ICH = 1, IRLGN) C7771 CONTINUE CDE** END OF DUMP CODE C TEST 034 IS THE LAST TEST IN THIS PROGRAM. THE ROUTINE SHOULD C HAVE MADE 34 EXPLICIT TESTS AND PROCESSED ONE FILE CONNECTED FOR C DIRECT ACCESS C C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM413) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM413) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END *END-OF,FM413 FM500.f 481036388 170 2 100666 29102 ` *HEADER,FORTR,FM500 *FILES1,FORTR,FM500 C*********************************************************************** C***** FORTRAN 77 C***** FM500 C***** BLKD1 - (260) C***** THIS PROGRAM USES SN501 AND AN502 C*********************************************************************** C***** TESTING OF BLOCK DATA SUBPROGRAMS FEATURES ANS REF C***** IMPLICIT, PARAMETER, EXTERNAL, AND SAVE 16 C***** THIS SEGMENT USES BLOCK DATA PROGRAM C***** AN502 AND SUBROUTINE SN501 C***** C***** S P E C I F I C A T I O N S SEGMENT 260 EXTERNAL AN502 C***** DECLARATION OF VARIABLES IN COMMON BLOCKS C***** PARAMETER (KPI = 2, LPI = 10) C***** INTEGER FXVI C***** REAL JX1S C***** DOUBLE PRECISION AX1D, BX4D C***** DIMENSION BX4D(KPI, KPI, KPI, KPI) C***** COMPLEX AXVC, BX1C, CZ5C C***** LOGICAL AXVB, BZ1B, CX6B(2,2,2,2,2,2) C***** CHARACTER*1 A1XVK, B1X1K, C1X7K C***** CHARACTER*2 D2Z1K C***** CHARACTER*4 E4XVK, G4X2K C***** CHARACTER*(LPI) I10XVK C***** C***** COMMON /BLK1/ IXVI, FXVI, KX1I(2), HX2I(2,2), MX2I(2,2) C***** COMMON /BLK2/ AXVS, BXVS, JX1S(2), CX2S(2,2), DZ3S(2,2,2), EZVS C***** COMMON /BLK3/ RXVD, AX1D(2), BX4D C***** COMMON /BLK4/ AXVC, BX1C(2), CZ5C(2,2,2,2,2) C***** COMMON /BLK5/ AXVB, BZ1B(2), CX6B C***** COMMON /BLK6/ A1XVK, B1X1K(2), C1X7K(2,2,2,2,2,2,2), C***** S2XVK, D2Z1K(2), E4XVK, G4X2K(2,2), I10XVK C***** CALL SN501 STOP C***** END OF TEST SEGMENT 260 END *HEADER,FORTR,FM500,SUBRTN,FM501 C*********************************************************************** C***** FORTRAN 77 C***** FM501 SN501 - (251) C***** THIS SUBROUTINE IS CALLED BY PROGRAM FM500 C*********************************************************************** C***** C***** GENERAL PURPOSE C***** THIS SEGMENT IS TO BE RUN WITH TEST SEGMENT 250 C***** THIS SEGMENT CONTAINS A SUBROUTINE THAT CHECKS TO SEE IF C***** IF THE BLOCK DATA PROGRAM CORRECTLY INITIALIZED THE MANY C***** VARIABLES C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** SUBROUTINE SN501 C***** IMPLICIT INTEGER (H) IMPLICIT DOUBLE PRECISION (R) IMPLICIT CHARACTER*2 (S) C***** DECLARATION OF VARIABLES IN COMMON BLOCKS PARAMETER (KPI = 2, LPI = 10) INTEGER FXVI REAL JX1S DOUBLE PRECISION AX1D, BX4D, DVCORR DIMENSION BX4D(KPI, KPI, KPI, KPI) COMPLEX AXVC, BX1C, CZ5C LOGICAL AXVB, BZ1B, CX6B(2,2,2,2,2,2) CHARACTER*1 A1XVK, B1X1K, C1X7K, CVNC01 CHARACTER*2 D2Z1K, CVNC02 CHARACTER*4 E4XVK, G4X2K, CVNC04 CHARACTER*(LPI) I10XVK, CVNC10 C***** COMMON /BLK1/ IXVI, FXVI, KX1I(2), HX2I(2,2), MX2I(2,2) COMMON /BLK2/ AXVS, BXVS, JX1S(2), CX2S(2,2), DZ3S(2,2,2), EZVS COMMON /BLK3/ RXVD, AX1D(2), BX4D COMMON /BLK4/ AXVC, BX1C(2), CZ5C(2,2,2,2,2) COMMON /BLK5/ AXVB, BZ1B(2), CX6B COMMON /BLK6/ A1XVK, B1X1K(2), C1X7K(2,2,2,2,2,2,2), 1 S2XVK, D2Z1K(2), E4XVK, G4X2K(2,2), I10XVK C***** SAVE/BLK6/ C***** EQUIVALENCE (NYVI, EZVS) C***** LOCAL DECLARATIONS DOUBLE PRECISION AVD COMPLEX AVC C***** O U T P U T T A P E ASSIGNMENT STATEMENT. NO INPUT TAPE. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NWVI = I02 IVTOTL = 37 ZPROG='FM500' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NWVI,26000) 26000 FORMAT( / 40H BLKD1 - (260) BLOCK DATA SUBPROGRAMS --/ 1 37H IMPLICIT, PARAMETER, EXTERNAL, SAVE// 2 15H ANS REF. - 16) C***** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C**** TO DELETE A TEST USED CODE SHOWN IN TEST 1 C**** REPLACE THE DELETE COMMENT WITH DELETE CODE CT001* TEST 1 INTEGER VARIABLE IVTNUM=1 WRITE (NWVI,70140) IVCORR=5 40010 IF (IXVI - 5) 20010,10010,20010 10010 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0011 20010 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80024) IXVI WRITE (NWVI,80026) IVCORR 0011 CONTINUE CT002* TEST 2 INTEGER DECLARE VARIABLE IVTNUM = 2 IVCORR=6 IF (FXVI - 6) 20020,10020,20020 10020 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0021 20020 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80024) FXVI WRITE (NWVI,80026) IVCORR 0021 CONTINUE CT003* TEST 3 INTEGER ARRAY IVTNUM = 3 IVCORR=8 IF (KX1I(2) - 8) 20030,10030,20030 10030 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0031 20030 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80024) KX1I(2) WRITE (NWVI,80026) IVCORR 0031 CONTINUE CT004* TEST 4 IMPLICIT INTEGER ARRAY IVTNUM = 4 IVCORR=1 IF (HX2I(1,2) - 1) 20040,10040,20040 10040 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0041 20040 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80024) HX2I(1,2) WRITE (NWVI,80026) IVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 IVCORR=5 IF (HX2I(2,2) - 5) 20050,10050,20050 10050 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0051 20050 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80024) HX2I(2,2) WRITE (NWVI,80026) IVCORR 0051 CONTINUE CT006* TEST 6 DO INITIALIZE INTEGER ARRAY IVTNUM = 6 IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM DO 70101 KVI = 1, 2 IVI = MX2I(KVI, KVI) - 4 WRITE (NWVI, 70100) IVI 70101 CONTINUE CT007* TEST 7 REAL VARIABLE IVTNUM = 7 RVCORR=5.3 RVCOMP=0.0 RVCOMP=AXVS - 5.3 IF (RVCOMP + .00005) 20070,10070,40070 40070 IF (RVCOMP - .00005) 10070,10070,20070 10070 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0071 20070 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80028) AXVS WRITE (NWVI,80030) RVCORR 0071 CONTINUE CT008* TEST 8 EXTENDED PRECISION REAL IVTNUM = 8 AVS = BXVS - 1.23456789012345 RVCOMP=1.23456789012345 IF (AVS + .00005) 20080,10080,40080 40080 IF (AVS - .00005) 10080,10080,20080 10080 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0081 20080 IVFAIL=IVFAIL+1 WRITE (NWVI,80004) IVTNUM 70080 FORMAT (1H ,16X,10HCOMPUTED: ,E20.14) WRITE (NWVI,70080) BXVS 70081 FORMAT (1H ,16X,10HCORRECT: ,E20.14) WRITE (NWVI, 70081) RVCOMP 0081 CONTINUE CT009* TEST 9 DECLARED REAL ARRAY IVTNUM = 9 RVCORR=2.45 RVCOMP=2.0 RVCOMP=(JX1S(1) - 2.45) IF (RVCOMP + .00005) 20090,10090,40090 40090 IF (RVCOMP - .00005) 10090,10090,20090 10090 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0091 20090 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80028) JX1S(1) WRITE (NWVI,80030) RVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 RVCORR=4.58 RVCOMP=2.0 RVCOMP=(JX1S(2) - 4.58) 40100 IF (RVCOMP + .00005) 20100,10100,40101 40101 IF (RVCOMP - .00005) 10100,10100,20100 10100 IVPASS=IVPASS+1 WRITE (NWVI,80002) GO TO 0100 20100 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80028) JX1S(2) WRITE (NWVI,80030) RVCORR 0100 CONTINUE CT011* TEST 11 REAL ARRAY - NAME ONLY IVTNUM = 11 IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM DO 70103 KVI = 1, 2 AVS = CX2S(KVI, KVI) - 1.2 WRITE (NWVI, 70102) AVS 70103 CONTINUE CT012* TEST 12 EQUIVALENCED REAL ARRAY IVTNUM = 12 IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM DO 70104 KVI=1,2 AVS = DZ3S(KVI, KVI, KVI) - 1.1 WRITE (NWVI, 70102) AVS 70104 CONTINUE CT013* TEST 13 REAL VARIABLE - EQUIVALENCED INTEGER IVTNUM = 13 IVCORR=34 IVI = NYVI - 34 40130 IF (IVI - 0) 20130,10130,20130 10130 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0131 20130 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80028) NYVI WRITE (NWVI,80026) IVCORR 0131 CONTINUE CT014* TEST 14 DOUBLE PRECISION ARRAY IVTNUM = 14 KVI=1 AVD = AX1D(KVI) - 1.456D3 DVCORR=1.456D3 IF (AVD + .0000000005) 20140,40141,40140 40140 IF (AVD - .0000000005) 40141,40141,20140 40141 KVI=2 AVD = AX1D(KVI) - 1.456D3 IF (AVD + .0000000005) 20140,10140,40142 40142 IF (AVD - .0000000005) 10140,10140,20140 10140 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0141 20140 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI, 80033) AX1D(KVI) WRITE (NWVI,80035) DVCORR 0141 CONTINUE CT015* TEST 15 DIMENSION DOUBLE PRECISION ARRAY IVTNUM = 15 AVD = BX4D(1,2,1,1) - 34.9D8 IF (AVD + .0000000005) 20150,10150,40150 40150 IF (AVD - .0000000005) 10150,10150,20150 10150 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0151 20150 IVFAIL=IVFAIL+1 DVCORR=34.9D8 WRITE (NWVI,80008) IVTNUM WRITE (NWVI, 80033) BX4D(1,2,1,1) WRITE (NWVI,80035) DVCORR 0151 CONTINUE CT016* TEST 16 IVTNUM = 16 DVCORR=0.00 AVD = BX4D(1,2,1,2) - 2.123D0 IF (AVD + .0000000005) 20160,10160,40160 40160 IF (AVD - .0000000005) 10160,10160,20160 10160 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0161 20160 IVFAIL=IVFAIL+1 DVCORR=2.123D0 WRITE (NWVI,80008) IVTNUM WRITE (NWVI, 80033) BX4D(1,2,1,2) WRITE (NWVI,80035) DVCORR 0161 CONTINUE CT017* TEST 17 IVTNUM = 17 DVCORR=0.00 AVD = BX4D(2,1,1,2) - 873.84D-1 IF (AVD + .0000000005) 20170,10170,40170 40170 IF (AVD - .0000000005) 10170,10170,20170 10170 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0171 20170 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM DVCORR=873.84D-1 WRITE (NWVI, 80033) BX4D(2,1,1,2) WRITE (NWVI,80035) DVCORR 0171 CONTINUE CT018* TEST 18 COMPLEX VARIABLE IVTNUM = 18 AVC = AXVC - (1.5, 2.3) IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM WRITE (NWVI,70107) AVC CT019* TEST 19 COMPLEX ARRAY IVTNUM = 19 AVC = BX1C(1) - (1.1, 1.2) IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM WRITE (NWVI, 70107) AVC CT020* TEST 20 IVTNUM = 20 AVC = BX1C(2) - (3.2, 2.3) IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM WRITE (NWVI, 70107) AVC CT021* TEST 21 COMPLEX ARRAY - EQUIVALENCE IVTNUM = 21 AVC = CZ5C(1,1,1,2,1) - (1.2, 2.1) IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM WRITE (NWVI, 70107) AVC CT022* TEST 22 IVTNUM = 22 AVC = CZ5C(1,2,1,1,2) - (45.3, 2.1) IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM WRITE (NWVI, 70107) AVC CT023* TEST 23 IVTNUM = 23 AVC = CZ5C(2,1,1,1,2) - (309.89, 102.1) IVINSP=IVINSP+1 WRITE (NWVI,80004) IVTNUM WRITE (NWVI, 70107) AVC CT024* TEST 24 LOGICAL VARIABLE IVTNUM = 24 IVCOMP=0 IF (AXVB) IVCOMP=1 40240 IF (IVCOMP-1) 20240,10240,20240 10240 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0241 20240 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM 0241 CONTINUE CT025* TEST 25 LOGICAL ARRAY - EQUIVALENCE IVTNUM = 25 IVCOMP=0 IF (.NOT. BZ1B(2)) IVCOMP=1 40250 IF (IVCOMP-1) 20250,10250,20250 10250 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0251 20250 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM 0251 CONTINUE CT026* TEST 26 DECLARED LOGICAL ARRAY IVTNUM = 26 IVCOMP=0 IF (CX6B(1,1,1,2,2,1)) IVCOMP=1 40260 IF (IVCOMP-1) 20260,10260,20260 10260 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0261 20260 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM 0261 CONTINUE CT027* TEST 27 1 CHARACTER VARIABLE IVTNUM = 27 CVNC01='A' IVCOMP=0 IF (A1XVK .EQ. 'A') IVCOMP=1 40270 IF (IVCOMP-1) 20270,10270,20270 10270 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0271 20270 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) A1XVK WRITE (NWVI,80022) CVNC01 0271 CONTINUE CT028* TEST 28 1 CHARACTER ARRAY IVTNUM = 28 CVNC01='K' IVCOMP=0 IF (B1X1K(1) .EQ. 'K') IVCOMP=1 40280 IF (IVCOMP-1) 20280,10280,20280 10280 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0281 20280 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) B1X1K(1) WRITE (NWVI,80022) CVNC01 0281 CONTINUE CT029* TEST 29 IVTNUM = 29 CVNC01='K' IVCOMP=0 IF (B1X1K(2) .EQ. 'K') IVCOMP=1 IF (IVCOMP-1) 20290,10290,20290 10290 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0291 20290 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) B1X1K(2) WRITE (NWVI,80022) CVNC01 0291 CONTINUE CT030* TEST 30 7 DIMENSION 1 CHARACTER ARRAY IVTNUM = 30 CVNC01='X' IVCOMP=0 KVI=1 IF (C1X7K(KVI,KVI,KVI,KVI,KVI,KVI,KVI) .EQ. 'X') IVCOMP=1 40300 IF(IVCOMP-1) 20300,40301,20300 40301 KVI=2 IVCOMP=0 IF (C1X7K(KVI,KVI,KVI,KVI,KVI,KVI,KVI) .EQ. 'X') IVCOMP=1 40302 IF (IVCOMP-1) 20300,40303,20300 40303 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0301 20300 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) C1X7K(KVI,KVI,KVI,KVI,KVI,KVI,KVI) WRITE (NWVI,80022) CVNC01 0301 CONTINUE CT031* TEST 31 IMPLICIT 2 CHARACTER VARIABLE IVTNUM = 31 CVNC02='.,' IVCOMP=0 IF (S2XVK .EQ. '.,') IVCOMP=1 40310 IF (IVCOMP-1) 20310,10310,20310 10310 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0311 20310 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) S2XVK WRITE (NWVI,80022) CVNC02 0311 CONTINUE CT032* TEST 32 2 CHARACTER ARRAY - EQUIVALENCED IVTNUM = 32 CVNC02='TE' IVCOMP=0 IF (D2Z1K(1) .EQ. 'TE') IVCOMP=1 40320 IF (IVCOMP-1) 20320,10320,20320 10320 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0321 20320 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) D2Z1K(1) WRITE (NWVI,80022) CVNC02 0321 CONTINUE CT033* TEST 33 IVTNUM = 33 CVNC02='ST' IVCOMP=0 IF (D2Z1K(2) .EQ. 'ST') IVCOMP=1 40330 IF (IVCOMP-1) 20330,10330,20330 10330 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0331 20330 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) D2Z1K(2) WRITE (NWVI,80022) CVNC02 0331 CONTINUE CT034* TEST 34 DECLARED 4 CHARACTER VARIABLE IVTNUM = 34 CVNC04='ZXCV' IVCOMP=0 IF (E4XVK .EQ. 'ZXCV') IVCOMP=1 40340 IF (IVCOMP-1) 20340,10340,20340 10340 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0341 20340 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) E4XVK WRITE (NWVI,80022) CVNC04 0341 CONTINUE CT035* TEST 35 DECLARED 4 CHARACTER ARRAY IVTNUM = 35 CVNC02='SO' IVCOMP=0 IF (G4X2K(1,1) .EQ. 'SO') IVCOMP=1 40350 IF (IVCOMP-1) 20350,10350,20350 10350 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0351 20350 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) G4X2K(1,1) WRITE (NWVI,80022) CVNC02 0351 CONTINUE CT036* TEST 36 IVTNUM = 36 CVNC02='OS' IVCOMP=0 IF (G4X2K(2,1) .EQ. 'OS') IVCOMP=1 40360 IF (IVCOMP-1) 20360,10360,20360 10360 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0361 20360 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) G4X2K(2,1) WRITE (NWVI,80022) CVNC02 0361 CONTINUE CT037* TEST 37 CHARACTER VARIABLE - PARAMTER LENGTH IVTNUM = 37 CVNC10='FINAL TEST' IVCOMP=0 IF (I10XVK .EQ. 'FINAL TEST') IVCOMP=1 40370 IF (IVCOMP-1) 20370, 10370, 20370 10370 IVPASS=IVPASS+1 WRITE (NWVI,80002) IVTNUM GO TO 0371 20370 IVFAIL=IVFAIL+1 WRITE (NWVI,80008) IVTNUM WRITE (NWVI,80020) I10XVK WRITE (NWVI,80022) CVNC10 0371 CONTINUE C***** 70100 FORMAT(1H ,26X,I5) 70102 FORMAT(1H ,26X,F7.2) 70106 FORMAT(1H ,26X,F7.2) 70107 FORMAT(1H ,26X,1H(,F7.2,2H, ,F7.2,1H),4X,14HSHOULD BE ZERO) 70140 FORMAT (/49X,28HALL VISUAL ANSWERS SHOULD BE 1 /49X,27HZERO FOR TEST SEGMENT TO BE 2 /49X,10HSUCCESSFUL) CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** RETURN END *HEADER,FORTR,FM500,SUBRTN,FM502 C*********************************************************************** C***** FORTRAN 77 C***** FM502 AN502 C***** THIS BLOCK DATA SUBPROGRAM IS USED BY MIAN PROGRAM FM500 C*********************************************************************** C***** C***** GENERAL PURPOSE C***** THIS SEGMENT CONTAINS A BLOCK DATA SUBPROGRAM THAT IS C***** TO BE RUN WITH SEGMENT FM500 C***** THIS SEGMENT WILL USE IMPLICIT, PARAMETER, EXTERNAL C***** AND SAVE STATEMENTS WITHIN IT. C***** BLOCK DATA AN502 C***** IMPLICIT INTEGER (H) IMPLICIT DOUBLE PRECISION (R) IMPLICIT CHARACTER*2 (S) C***** SAVE/BLK6/ C***** DECLARATION OF VARIABLES IN COMMON BLOCKS PARAMETER (KPI = 2, LPI = 10) INTEGER FXVI REAL JX1S DOUBLE PRECISION AX1D, BX4D DIMENSION BX4D(KPI, KPI, KPI, KPI) COMPLEX AXVC, BX1C, CZ5C LOGICAL AXVB, BZ1B, CX6B(2,2,2,2,2,2) CHARACTER*1 A1XVK, B1X1K, C1X7K CHARACTER*2 D2Z1K CHARACTER*4 E4XVK, G4X2K CHARACTER*(LPI) I10XVK C***** COMMON /BLK1/ IXVI, FXVI, KX1I(2), HX2I(2,2), MX2I(2,2) COMMON /BLK2/ AXVS, BXVS, JX1S(2), CX2S(2,2), DZ3S(2,2,2), EZVS COMMON /BLK3/ RXVD, AX1D(2), BX4D COMMON /BLK4/ AXVC, BX1C(2), CZ5C(2,2,2,2,2) COMMON /BLK5/ AXVB, BZ1B(2), CX6B COMMON /BLK6/ A1XVK, B1X1K(2), C1X7K(2,2,2,2,2,2,2), 1 S2XVK, D2Z1K(2), E4XVK, G4X2K(2,2), I10XVK C***** DECLARATION OF VARIABLES FOR EQUIVALENCE STATEMENTS DIMENSION AY3S(2,2,2) COMPLEX AY5C (2,2,2,2,2) LOGICAL AY1B(2) CHARACTER*2 A2Y1K(2) CHARACTER*1 APK PARAMETER (IPI = 5, APS = 5.3, JPI = 2, APK = 'X', MPI = 128) C***** EQUIVALENCE (AY3S, DZ3S) EQUIVALENCE (NYVI, EZVS) EQUIVALENCE (AY5C, CZ5C) EQUIVALENCE (AY1B, BZ1B) EQUIVALENCE (A2Y1K, D2Z1K) C***** DATA IXVI, FXVI, KX1I(2), HX2I(1,2), HX2I(2,2), 1 ((MX2I(IVI, JVI), IVI=1,2), JVI=1,2) /IPI, 6, 8, 1, 5, 4*4/ DATA AXVS, BXVS, JX1S(1), JX1S(2), CX2S /APS, 1.23456789012345, 1 2.45, 4.58, 4*1.2/ DATA AY3S / 8*1.1/ DATA NYVI /34/ DATA AX1D, BX4D(1,2,1,1), BX4D(1,2,1,2), BX4D(2,1,1,2) 1 /JPI*1.456D3, 34.9D8, 2.123D0, 873.84D-1/ DATA AXVC /(1.5, 2.3)/ DATA AY5C(1,1,1,2,1), AY5C(1,2,1,1,2), AY5C(2,1,1,1,2) 1 /(1.2, 2.1), (45.3, 2.1), (309.89, 102.1)/ DATA BX1C(1), BX1C(2), AXVB /(1.1, 1.2), (3.2, 2.3), .TRUE./ DATA AY1B(2), CX6B(1,1,1,2,2,1) /.FALSE., .TRUE./ DATA A1XVK, C1X7K, S2XVK, A2Y1K(1), A2Y1K(2), E4XVK, G4X2K(1,1), 1 G4X2K(2,1), I10XVK, (B1X1K(IVI), IVI=1,2) 2 /'A', MPI*APK, '.,', 'TE', 'ST', 'ZXCV', 'SO', 'OS', 3 'FINAL TEST', 2*'K'/ C***** END *END-OF,FM500 FM503.f 481036392 170 2 100666 14469 ` *HEADER,FORTR,FM503 *FILES1,FORTR,FM503 C*********************************************************************** C***** FORTRAN 77 C***** FM503 C***** BLKD2 - (261) C***** THIS PROGRAM USES FM504 (UNNAMED BLOCK DATA SUBPROGRAM C***** AND SUBROUTINE SN505 C*********************************************************************** C***** TESTING OF BLOCK DATA SUBPROGRAMS ANS REF C***** DATA INTERNAL FORMS 16 C***** THIS SEGMENT USES SEGMENTS 702 AND 703, BLOCK DATA PROGRAM C***** FM504 AND SUBROUTINE SN505 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 261 C***** C***** DECLARATION OF VARIABLES IN COMMON BLOCKS C***** DOUBLE PRECISION AXVD, DVCORR C***** COMPLEX AXVC, ZVCORR C***** LOGICAL AXVB C***** CHARACTER*6 A6XVK, B6XVK, CVCORR C***** C***** COMMON /BLK9/ AXVS, BXVS, IXVI, AXVD, AXVC, AXVB C***** COMMON /BLK7/ A6XVK, B6XVK C***** C***** CALL SN505 STOP C***** C***** END OF TEST SEGMENT 261 END *HEADER,FORTR,FM503,SUBRTN,FM504 C*********************************************************************** C***** FORTRAN 77 C***** FM504 BDS2 (UNNAMED) - (702) C***** THIS BLOCK DATA SUBPROGRAM IS USED BY FM503 C*********************************************************************** C***** C***** GENERAL PURPOSE C***** THIS SEGMENT CONTAINS A BLOCK DATA SUBPROGRAM THAT IS C***** TO BE RUN WITH TEST SEGMENT 261 C***** THIS SEGMENT WILL TEST INTERNAL DATA FORMS, AS WELL C***** AS THE USE OF UNNAMED BLOCK DATA PROGRAM C***** BLOCK DATA C***** C***** DECLARATION OF VARIABLES IN COMMON BLOCKS DOUBLE PRECISION AXVD COMPLEX AXVC LOGICAL AXVB CHARACTER*6 A6XVK, B6XVK C***** COMMON /BLK9/ AXVS, BXVS, IXVI, AXVD, AXVC, AXVB COMMON /BLK7/ A6XVK, B6XVK DATA AXVS, BXVS, IXVI, AXVD, AXVC, AXVB /34.25E-1, 43.23, 21, 1 1.23456, (234.23, 34.9), .TRUE./ DATA A6XVK, B6XVK /'ABCDE', 'FGHIJK'/ C***** END *HEADER,FORTR,FM503,SUBRTN,FM505 C*********************************************************************** C***** FORTRAN 77 C***** FM505 BLKD2Q - (703) C***** THIS SUBROUTINE IS CALLED BY FM503 C*********************************************************************** C***** C***** GENERAL PURPOSE C***** THIS SEGMENT IS TO BE RUN WITH TEST SEGMENT 261 C***** THIS SEGMENT CONTAINS A SUBROUTINE THAT CHECKS TO SEE IF C***** IF THE BLOCK DATA PROGRAM CORRECTLY INITIALIZED THE MANY C***** VARIABLES C***** SUBROUTINE SN505 C***** C***** C***** DECLARATION OF VARIABLES IN COMMON BLOCKS DOUBLE PRECISION AXVD, DVCORR COMPLEX AXVC, ZVCORR LOGICAL AXVB CHARACTER*6 A6XVK, B6XVK, CVCORR C***** COMMON /BLK9/ AXVS, BXVS, IXVI, AXVD, AXVC, AXVB COMMON /BLK7/ A6XVK, B6XVK C***** LOCAL DECLARATION DOUBLE PRECISION AVD COMPLEX AVC REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 8 ZPROG = 'FM503' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** WRITE(NUVI,26100) 26100 FORMAT( 1H , / 39H BLKD2 - (261) BLOCK DATA SUBPROGRAM --// 1 21H DATA INTERNAL FORMS// 2 15H ANS REF. - 16) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 REAL VARIABLE - EXPONENT FORM IVTNUM = 1 AVS = AXVS IF (AVS - 0.34248E+01) 20010, 10010, 40010 40010 IF (AVS - 0.34252E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 34.25E-1 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0011 CONTINUE CT002* TEST 2 REAL VARIABLE - NON EXPONENT FORM IVTNUM = 2 AVS = BXVS IF (AVS - 0.43227E+02) 20020, 10020, 40020 40020 IF (AVS - 0.43233E+02) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 43.23 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 INTEGER VARIABLE IVTNUM = 3 IVI = IXVI IF (IVI - 21) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 IVCORR = 21 WRITE (NUVI, 80010) IVTNUM, IVI, IVCORR 0031 CONTINUE CT004* TEST 4 DOUBLE PRECISION VARIABLE IVTNUM = 4 AVD = AXVD IF (AVD - 0.12345D+01) 20040, 10040, 40040 40040 IF (AVD - 0.12347D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 1.23456D+0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 COMPLEX VARIABLE IVTNUM = 5 AVC = AXVC IF (R2E(1) - 0.23421E+03) 20050, 40052, 40051 40051 IF (R2E(1) - 0.23425E+03) 40052, 40052, 20050 40052 IF (R2E(2) - 0.34898E+02) 20050, 10050, 40050 40050 IF (R2E(2) - 0.34902E+02) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (234.23, 34.9) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0051 CONTINUE CT006* TEST 6 LOGICAL VARIABLE IVTNUM = 6 IVI = 0 IF (AXVB) IVI = 1 IF (IVI - 1) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 LVCORR = 1 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVI WRITE (NUVI, 80026) LVCORR 0061 CONTINUE CT007* TEST 7 6 CHARACTER VARIABLE - INIT WITH 5 CHARACTERS IVTNUM = 7 IVI = 0 IF (A6XVK.EQ.'ABCDE ') IVI = 1 IF (IVI - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 CVCORR = 'ABCDE ' WRITE (NUVI, 80018) IVTNUM, A6XVK, CVCORR 0071 CONTINUE CT008* TEST 8 6 CHARACTER VARIABLE - INIT WITH 6 CHARACTERS IVTNUM = 8 IVI = 0 IF (B6XVK.EQ.'FGHIJK') IVI = 1 IF (IVI - 1) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 CVCORR = 'FGHIJK' WRITE (NUVI, 80018) IVTNUM, B6XVK, CVCORR 0081 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END *END-OF,FM503 FM506.f 481036396 170 2 100666 13159 ` *HEADER,FORTR,FM506 *FILES1,FORTR,FM506 C*********************************************************************** C***** FORTRAN 77 C***** FM506 C***** BLKD3 - (262) C***** USES BLOCK DATA SUBPROGRAM AN507 AND SUBROUTINE SN508 C*********************************************************************** C***** TESTING OF BLOCK DATA SUBPROGRAMS ANS REF C***** VARYING CHARACTER VARIABLE LENGTHS 16 C***** THIS SEGMENT USES SEGMENTS 704 AND 705, BLOCK DATA PROGRAM C***** AN507 AND SUBROUTINE SN508 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 262 C***** C***** CHARACTER*3 C3XVK, F3XVK C***** CHARACTER*2 D2XVK C***** CHARACTER*5 E5XVK C***** COMMON /BLK8/ C3XVK, D2XVK, E5XVK, F3XVK C***** NUVI = 4 C***** CALL SN508(NUVI) C***** C***** END OF TEST SEGMENT 262 STOP END *HEADER,FORTR,FM506,SUBRTN,FM507 C*********************************************************************** C***** FORTRAN 77 C***** FM507 BDS3 - (704) C***** BLOCK DATA SUBPROGRAM AN507 USED BY FM506 C*********************************************************************** C***** C***** GENERAL PURPOSE C***** THIS SEGMENT CONTAINS A BLOCK DATA SUBPROGRAM THAT IS C***** TO BE RUN WITH TEST SEGMENT FM506 (262) C***** THIS SEGMENT WILL TEST CHARACTER VARIABLES WITH VARYING C***** LENGHTS IN COMMON AREAS C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** BLOCK DATA AN507 C***** CHARACTER*3 C3XVK, F3XVK CHARACTER*2 D2XVK CHARACTER*5 E5XVK COMMON /BLK8/ C3XVK, D2XVK, E5XVK, F3XVK DATA C3XVK, D2XVK, E5XVK, F3XVK /'123', 'GH', 'LONGS', 'END'/ C***** END *HEADER,FORTR,FM506,SUBRTN,FM508 C*********************************************************************** C***** FORTRAN 77 C***** FM508 BLKD3Q - (705) C***** THIS SUBROUTINE IS CALLED BY FM506 C*********************************************************************** C***** C***** GENERAL PURPOSE C***** THIS SEGMENT IS TO BE RUN WITH TEST SEGMENT 262 C***** THIS SEGMENT CONTAINS A SUBROUTINE THAT CHECKS TO SEE IF C***** IF THE BLOCK DATA PROGRAM CORRECTLY INITIALIZED CHARACTER C***** VARIABLES INTERMIXED WITH DIFFERENT LENGTHS C***** SUBROUTINE SN508 (NWVI) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** CHARACTER*3 C3XVK, F3XVK CHARACTER*2 D2XVK CHARACTER*5 E5XVK, CVCORR COMMON /BLK8/ C3XVK, D2XVK, E5XVK, F3XVK CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 4 ZPROG = 'FM506' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,26200) 26200 FORMAT( 1H , / 39H BLKD3 - (262) BLOCK DATA SUBPROGRAM --// 1 36H VARYING CHARACTER VARIABLE LENGTHS// 2 15H ANS REF. - 16) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 3 CHARACTER VARIABLE IVTNUM = 1 IVCOMP = 0 IF (C3XVK.EQ.'123') IVCOMP = 1 IF (IVCOMP - 1) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 CVCORR = '123' WRITE (NUVI, 80018) IVTNUM, C3XVK, CVCORR 0011 CONTINUE CT002* TEST 2 2 CHARACTER VARIABLE IVTNUM = 2 IVCOMP = 0 IF (D2XVK.EQ.'GH') IVCOMP = 1 IF (IVCOMP - 1) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 CVCORR = 'GH' WRITE (NUVI, 80018) IVTNUM, D2XVK, CVCORR 0021 CONTINUE CT003* TEST 3 5 CHARACTER VARIABLE IVTNUM = 3 IVCOMP = 0 IF (E5XVK.EQ.'LONGS') IVCOMP = 1 IF (IVCOMP - 1) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 CVCORR = 'LONGS' WRITE (NUVI, 80018) IVTNUM, E5XVK, CVCORR 0031 CONTINUE CT004* TEST 4 3 CHARACTER VARIABLE IVTNUM = 4 IVCOMP = 0 IF (F3XVK.EQ.'END') IVCOMP = 1 IF (IVCOMP - 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 CVCORR = 'END' WRITE (NUVI, 80018) IVTNUM, F3XVK, CVCORR 0041 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END *END-OF,FM506 FM509.f 481036399 170 2 100666 19281 ` *HEADER,FORTR,FM509 *FILES1,FORTR,FM509 PROGRAM FM509 C C THIS ROUTINE TESTS SUBROUTINE SUBPROGRAMS AND ANS REF. C FUNCTION SUBPROGRAMS WITH MULTIPLE ENTRIES. 15.6.1 C THIS ROUTINE ALSO TESTS THE USE OF SYMBOLIC 15.7, 15.7.1 C NAMES OF CONSTANTS, SUBSTRINGS NAMES, AND 15.9.2 C ARRAY ELEMENT SUBSTRINGS AS ARGUMENTS. 15.9.3.2 C 15.9.3.3 C THIS ROUTINE USES THE SUBROUTINE SUBPROGRAMS SN510, C SN511, AND SN512, AND THE FUNCTION SUBPROGRAM RF513. C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C INTEGER I2N001(2,2) CHARACTER CVCOMP*12,CVCORR*12,CVN001*30 CHARACTER C1N001(6)*10 PARAMETER (IPN001=31) COMMON IVC001, IVC002, IVC003 EXTERNAL RF513 DATA I2N001 /1, 3, 5, 7/ DATA CVN001 /'REDORANGEYELLOWGREENBLUEVIOLET'/ DATA C1N001 /'FIRST-AID:','SECONDRATE','THIRD-TERM', 1 'FOURTH-DAY','FIFTHROUND','SIXTHMONTH'/ C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG = 'FM509' IVTOTL = 16 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C CT001* TEST 001 **** FCVS PROGRAM 509 **** C SUBROUTINE WITH MULTIPLE ENTRIES C IVTNUM = 1 IVCOMP = 0 IVCORR = 25 CALL SN510(3,IVN001) CALL EN851(IVN001,IVCOMP) 40010 IF (IVCOMP - 25) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 509 **** C ENTRY WITH ONE ARGUMENT C IVTNUM = 2 IVCOMP = 0 IVCORR = 137 IVN001 = 37 CALL EN852(IVN001) IVCOMP = IVN001 40020 IF (IVCOMP - 137) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 509 **** C ENTRY WITH TWO ARGUMENT C IVTNUM = 3 IVCOMP = 0 IVCORR = -51 CALL EN853(-9,IVCOMP) 40030 IF (IVCOMP + 51) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 509 **** C ENTRY WITH THREE ARGUMENTS C IVTNUM = 4 IVCOMP = 0 IVCORR = -71 CALL EN854(275,147,IVCOMP) 40040 IF (IVCOMP + 71) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 509 **** C ENTRY WITH FOUR ARGUMENTS C IVTNUM = 5 IVCOMP = 0 IVCORR = 567 CALL EN855(12,-15,63,IVCOMP) 40050 IF (IVCOMP - 567) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 509 **** C ENTRY WITH ARRAY AS DUMMY ARGUMENT C IVTNUM = 6 IVCOMP = 0 IVCORR = 16 IVN001 = 2 CALL EN856(IVN001,I2N001,IVCOMP) 40060 IF (IVCOMP - 16) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 509 **** C ENTRY WITH PROCEDURE AS DUMMY ARGUMENT C IVTNUM = 7 RVCOMP = 0.0 RVCORR = 2.25 CALL EN857(1.5,RVCOMP,RF513) IF (RVCOMP - 0.22498E+01) 20070, 10070, 40070 40070 IF (RVCOMP - 0.22502E+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0071 CONTINUE C CT008* TEST 008 **** FCVS PROGRAM 509 **** C ENTRY WITH ASTERISK AS DUMMY ARGUMENT C IVTNUM = 8 IVCOMP = 0 IVCORR = 19 IVN001 = 2 CALL EN858(IVN001,*0082,*0083) 0082 IVCOMP = 5 GO TO 0084 0083 IVCOMP = 19 0084 CONTINUE 40080 IF (IVCOMP - 19) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C TESTS 9 AND 10 TEST ENTRY WITHOUT ARGUMENTS C CT009* TEST 009 **** FCVS PROGRAM 509 **** C IVTNUM = 9 IVCOMP = 0 IVCORR = 88 IVC002 = 65 IVC003 = 23 CALL EN859( ) IVCOMP = IVC001 40090 IF (IVCOMP - 88) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 509 **** C IVTNUM = 10 IVCOMP = 0 IVCORR = -13 IVC001 = 4 IVC002 = -17 CALL EN860 IVCOMP = IVC003 40100 IF (IVCOMP + 13) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 509 **** C FUNCTION SUBPROGRAM WITH MULTIPLE ENTRIES C IVTNUM = 11 RVCOMP = 0.0 RVCORR = 3.675E-3 RVN001 = RF513(3.5E-2) RVCOMP = EF852(RVN001) IF (RVCOMP - 0.36748E-02) 20110, 10110, 40110 40110 IF (RVCOMP - 0.36752E-02) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 509 **** C SYMBOLIC NAME OF A CONSTANT AS AN ACTUAL ARGUMENT C IVTNUM = 12 IVCOMP = 0 IVCORR = 34 CALL SN510(IPN001,IVCOMP) 40120 IF (IVCOMP - 34) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C TESTS 13 AND 14 TEST THE USE OF A SUBSTRING AS AN ACTUAL ARGUMENT C WHICH IS ASSOCIATED WITH A DUMMY ARGUMENT THAT IS A VARIABLE C C CT013* TEST 013 **** FCVS PROGRAM 509 **** C IVTNUM = 13 CVCOMP = ' ' CVCORR = 'COLOR=YELLOW ' CALL SN511(CVN001(10:15),CVCOMP) IVCOMP = 0 IF (CVCOMP.EQ.'COLOR=YELLOW ') IVCOMP = 1 40130 IF (IVCOMP - 1) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 509 **** C IVTNUM = 14 CVCOMP = ' ' CVCORR = 'COLOR=VIOLET ' CALL SN511(CVN001(25:30),CVCOMP) IVCOMP = 0 IF (CVCOMP.EQ.'COLOR=VIOLET ') IVCOMP = 1 40140 IF (IVCOMP - 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0141 CONTINUE C C TESTS 15 AND 16 TEST THE USE OF AN ARRAY ELEMENT SUBSTRING AS AN C ACTUAL ARGUMENT WHICH IS ASSOCIATED WITH A DUMMY ARGUMENT THAT C IS AN ARRAY C C CT015* TEST 015 **** FCVS PROGRAM 509 **** C IVTNUM = 15 CVCOMP = ' ' CVCORR = 'RST-AID: ' CALL SN512(C1N001(1)(3:10),CVCOMP) IVCOMP = 0 IF (CVCOMP.EQ.'RST-AID: ') IVCOMP = 1 40150 IF (IVCOMP - 1) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0151 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 509 **** C IVTNUM = 16 CVCOMP = ' ' CVCORR = 'IFTHROUN ' CALL SN512(C1N001(5)(2:9),CVCOMP) IVCOMP = 0 IF (CVCOMP.EQ.'IFTHROUN ') IVCOMP = 1 40160 IF (IVCOMP - 1) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0161 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM509) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM509) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *HEADER,FORTR,FM509,SUBRTN,FM510 C C THIS ROUTINE IS TO BE RUN WITH ROUTINE 509. C C THIS SUBROUTINE IS CALLED IN THE MAIN PROGRAM TO TEST IF C MULTIPLE ENTRIES ARE PERMITTED IN A SUBROUTINE SUBPROGRAM. C SUBROUTINE SN510(IVD001,IVD002) INTEGER I2D001(2,2) COMMON IVC001, IVC002, IVC003 DO 70010 IVN001 = 1, 3 IVD001 = IVD001 + 1 70010 CONTINUE IVD002 = IVD001 RETURN ENTRY EN851(IVD003,IVD004) IVD004 = 3*IVD003 + 7 RETURN ENTRY EN852(IVD005) IVD005 = IVD005 + 100 RETURN ENTRY EN853(IVD006,IVD007) IVD007 = 5*(IVD006 + 2) - 16 RETURN ENTRY EN854(IVD008,IVD009,IVD010) IVD010 = 4*(IVD008 - 2*IVD009) + 5 RETURN ENTRY EN855(IVD011, IVD012, IVD013, IVD014) IVD014 = IVD013*(2*IVD011 + IVD012) RETURN ENTRY EN856(IVD015,I2D001,IVD016) IVD016 = 0 DO 70020 IVN001 = 1, IVD015 DO 70020 IVN002 = 1, IVD015 70020 IVD016 = IVD016 + I2D001(IVN001,IVN002) RETURN ENTRY EN857(RVD017,RVD018,RFD001) RVD018 = RFD001(RVD017) RETURN ENTRY EN858(IVD019,*,*) RETURN IVD019 ENTRY EN859( ) IVC001 = IVC002 + IVC003 RETURN ENTRY EN860 IVC003 = IVC001 + IVC002 RETURN END C *HEADER,FORTR,FM509,SUBRTN,FM511 C C THIS ROUTINE IS TO BE RUN WITH ROUTINE 509. C C THIS SUBROUTINE IS CALLED IN THE MAIN PROGRAM TO TEST THE USE C OF A SUBSTRING NAME AS AN ACTUAL ARGUMENT WHICH IS C ASSOCIATED WITH A DUMMY ARGUMENT THAT IS A VARIBLE C SUBROUTINE SN511(CVD001,CVD002) CHARACTER CVD001*6, CVD002*12 CVD002 = 'COLOR='//CVD001 RETURN END *HEADER,FORTR,FM509,SUBRTN,FM512 C C THIS ROUTINE IS TO BE RUN WIHT ROUTINE 509. C C THIS SUBROUTINE IS CALLED IN THE MAIN PROGRAM TO TEST THE USE OF C AN ARRAY ELEMENT SUBSTRING AS AN ACTUAL ARGUMENT WHICH C IS ASSOCIATED WITH A DUMMY ARGUMENT THAT IS AN ARRAY. C SUBROUTINE SN512(C1D001,CVD001) CHARACTER C1D001(6)*8,CVD001*8 CVD001 = C1D001(1) RETURN END *HEADER,FORTR,FM509,SUBRTN,FM513 C C THIS FUNCTION IS TO BE RUN WITH ROUTINE 509. C C THIS FUNCTION IS REFERENCED IN THE MAIN PROGRAM TO TEST IF C MULTIPLE ENTRIES ARE PERMITTED IN A FUNCTION SUBPROGRAM. C FUNCTION RF513(RVD001) RF513 = RVD001**2 RETURN ENTRY EF852(RVD002) EF852 = 3*RVD002 RETURN END *END-OF,FM509 FM514.f 481036402 170 2 100666 10122 ` *HEADER,FORTR,FM514 *FILES1,FORTR,FM514 PROGRAM FM514 C C THIS ROUTINE TESTS SUBROUTINE STATEMENT WITH ANS REF. C ASTERISK DUMMY ARGUMENTS AND TEST ALTERNATE 15.6.1 C RETURN SPECIFIER AS AN ACTUAL ARGUMENT. 15.9.3.5 C 15.6.2.3 C THIS ROUTINE USES SUBROUTINE SUBPROGRAMS SN515 AND C SN516. C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG = 'FM514' IVTOTL = 2 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C CT001* TEST 001 **** FCVS PROGRAM 514 **** C TEST 001 TEST SUBROUTINE STATEMENT WITH ASTERISK DUMMY ARGUMENTS C IVTNUM = 1 IVCOMP = 0 IVCORR = 3 IVN001 = 1 0012 CALL SN515(IVN001,*0013,*0014) IVCOMP = 10 0013 CONTINUE IVCOMP = IVCOMP + IVN001 IVN001 = 2 GO TO 0012 0014 CONTINUE IVCOMP = IVCOMP + IVN001 40010 IF (IVCOMP - 3) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 514 **** C TEST 002 TESTS THE USE OF AN ALTERNATE RETURN SPECIFIER C AS AN ACTUAL ARGUMENT C IVTNUM = 2 IVCOMP = 0 IVCORR = 0 CALL SN516(5,IVN001,*0024) 0022 IVCOMP = IVCOMP - IVN001 GO TO 0025 0023 CONTINUE IVCOMP = IVCOMP - IVN001 CALL SN516(4,IVN001,*0022) IVCOMP = IVCOMP + IVN001 0024 CONTINUE IVCOMP = IVCOMP + IVN001 CALL SN516(3,IVN001,*0023) IVCOMP = IVCOMP + IVN001 0025 CONTINUE 40020 IF (IVCOMP - 0) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM514) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM514) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *HEADER,FORTR,FM514,SUBRTN,FM515 C C THIS ROUTINE IS TO BE RUN WITH ROUTINE 514 C C THIS SUBROUTINE IS USED TO TEST SUBROUTINE STATEMENT WITH C ASTERISK DUMMY ARGUMENTS C SUBROUTINE SN515(IVD001,*,*) RETURN IVD001 END *HEADER,FORTR,FM514,SUBRTN,FM516 C THIS ROUTINE IS TO BE RUN WITH ROUTINE 514. C C THIS SUBROUTINE IS CALLED TO TEST THE USE OF AN ALTERNATE C RETURN SPECIFIER AS AN ACTUAL ARGUMENT C SUBROUTINE SN516(IVD001,IVD002,*) IVD002 = IVD001**2 RETURN 1 END *END-OF,FM514 FM517.f 481036405 170 2 100666 11912 ` *HEADER,FORTR,FM517 *FILES1,FORTR,FM517 PROGRAM FM517 C C THIS PROGRAM TESTS THE RETURN STATEMENT ANS REF. C RETURN E 15.8.1 C IN SUBROUTINE SUBPROGRAMS. E IS AN ARITHMETIC 15.8.3 C EXPRESSION WHOSE VALUE INDICATES WHERE CONTROL C WILL BE RETURNED TO. C C THIS ROUTINE USES SUBROUTINE SUBPROGRAMS SN518 C AND SN519 C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG = 'FM517' IVTOTL = 5 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C TESTS 1 AND 2 TEST RETURN CONTROL PROCESSING IN THE EXECUTION C OF A SUBROUTINE SUBPROGRAM WHICH PROVIDES ALTERNATE RETURN C CT001* TEST 001 **** FCVS PROGRAM 517 **** C IVTNUM = 1 IVCOMP = 0 IVCORR = 3 IVN001 = 2 CALL SN518(IVN001,*0012,*0013) IVCOMP = 1 GO TO 0014 0012 CONTINUE IVCOMP = 2 GO TO 0014 0013 CONTINUE IVCOMP = 3 0014 CONTINUE 40010 IF (IVCOMP - 3) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 517 **** C IVTNUM = 2 IVCOMP = 0 IVCORR = 5 CALL SN519(7,*0022,*0023) IVCOMP = 1 GO TO 0024 0022 CONTINUE IVCOMP = 3 GO TO 0024 0023 CONTINUE IVCOMP = 5 0024 CONTINUE 40020 IF (IVCOMP - 5) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 517 **** C TEST 003 TESTS THE "RETURN E" STATEMENT WHERE E HAS VALUE C LESS THAN ONE C IVTNUM = 3 IVCOMP = 0 IVCORR = -2 CALL SN518(-3,*0032,*0033) IVCOMP = -2 GO TO 0034 0032 CONTINUE IVCOMP = -4 GO TO 0034 0033 CONTINUE IVCOMP = -6 0034 CONTINUE 40030 IF (IVCOMP + 2) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 517 **** C TEST 004 TESTS THE "RETURN E" STATEMENT WHERE E HAS VALUE C GREATER THAN THE NUMBER OF ASTERISKS IN A SUBROUTINE STATEMENT C IVTNUM = 4 IVCOMP = 0 IVCORR = 7 CALL SN518(3,*0042,*0043) IVCOMP = 7 GO TO 0044 0042 CONTINUE IVCOMP = 9 GO TO 0044 0043 CONTINUE IVCOMP = 11 0044 CONTINUE 40040 IF (IVCOMP - 7) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 517 **** C TEST 005 TESTS THE "RETURN E" STATEMENT WHERE E HAS VALUE C GREATER THAN THE NUMBER OF ASTERISKS IN AN ENTRY STATEMENT C IVTNUM = 5 IVCOMP = 0 IVCORR = -10 CALL EN872(9,*0052,*0053) IVCOMP = -10 GO TO 0054 0052 CONTINUE IVCOMP = 3 GO TO 0054 0053 CONTINUE IVCOMP = 11 0054 CONTINUE 40050 IF (IVCOMP + 10) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM517) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM517) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *HEADER,FORTR,FM517,SUBRTN,FM518 C C THIS ROUTINE IS TO BE RUN WITH ROUTINE 517 C C THIS SUBROUTINE TESTS THE USE OF THE "RETURN E" STATEMENT C WHERE E IS AN INTEGER VARIABLE C SUBROUTINE SN518(IVD001,*,*) RETURN IVD001 END *HEADER,FORTR,FM517,SUBRTN,FM519 C C THIS ROUTINE IS TO BE RUN WITH ROUTINE 517 C C THIS SUBROUTINE TESTS THE USE OF THE "RETURN E" STATEMENT C WHERE E IS AN INTEGER EXPRESSION C SUBROUTINE SN519(IVD001,*,*) RETURN (IVD001 - 2*(IVD001/2) + 1) ENTRY EN872(IVD002,*,*) RETURN (IVD002 - 3) END *END-OF,FM517 FM520.f 481036411 170 2 100666 21016 ` *HEADER,FORTR,FM520 *FILES1,FORTR,FM520,X PROGRAM FM520 C C TESTING PARAMETER STATEMENT C C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C PARAMETER(IPN001=5+5,IPN002=8-3,IPN003=1*5) PARAMETER(RPN001=5.1+4.9,RPN002=8.7-3.7,RPN003=2.0*2.5) C C TEST 1 - 7 TEST INTEGER ARITHMETIC EXPRESSION USING C ONLY SYMBOLIC NAMES OF ARITHMETIC CONSTANTS C S06AF-2P 4.A C C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM520' IVTOTL = 30 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C CT001* TEST 001 **** FCVS PROGRAM 520 **** C C IVTNUM = 1 IVCOMP=+IPN001 IVCORR=+10 40010 IF (IVCOMP - 10) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 520 **** C C IVTNUM = 2 IVCOMP=-IPN001 IVCORR=-10 40020 IF (IVCOMP + 10) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 520 **** C C IVTNUM = 3 IVCOMP=IPN001+IPN002 IVCORR=15 40030 IF (IVCOMP - 15) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 520 **** C C IVTNUM = 4 IVCOMP=IPN001-IPN002 IVCORR=5 40040 IF (IVCOMP - 5) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 520 **** C C IVTNUM = 5 IVCOMP=IPN001*IPN002 IVCORR=50 40050 IF (IVCOMP - 50) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 520 **** C C IVTNUM = 6 IVCOMP=IPN001/IPN002 IVCORR=2 40060 IF (IVCOMP - 2) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 520 **** C C IVTNUM = 7 IVCOMP=IPN001**IPN002 IVCORR=100000 40070 IF (IVCOMP - 100000) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C C TEST 8 - 14 TEST REAL ARITHMETIC EXPRESSION USING C ONLY SYMBOLIC NAMES OF ARITHMETIC CONSTANTS C S06AF-2P 4.A C CT008* TEST 008 **** FCVS PROGRAM 520 **** C C IVTNUM = 8 RVCOMP=+RPN001 RVCORR=+10.0 IF (RVCOMP - 0.99995E+01) 20080, 10080, 40080 40080 IF (RVCOMP - 0.10001E+02) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0091 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 520 **** C C IVTNUM = 9 RVCOMP=-RPN001 RVCORR=-10.0 IF (RVCOMP + 0.10001E+02) 20090, 10090, 40090 40090 IF (RVCOMP + 0.99995E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0101 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 520 **** C IVTNUM = 10 RVCOMP=RPN001+RPN002 RVCORR=15.0 IF (RVCOMP - 0.14999E+02) 20100, 10100, 40100 40100 IF (RVCOMP - 0.15001E+02) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0111 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 520 **** C C IVTNUM = 11 RVCOMP=RPN001-RPN002 RVCORR=5.0 IF (RVCOMP - 0.49997E+01) 20110, 10110, 40110 40110 IF (RVCOMP - 0.50003E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0121 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 520 **** C C IVTNUM = 12 RVCOMP=RPN001*RPN002 RVCORR=50.0 IF (RVCOMP - 0.49997E+02) 20120, 10120, 40120 40120 IF (RVCOMP - 0.50003E+02) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0131 CONTINUE C CT013* TEST 013 **** FCVS PROGRAM 520 **** C IVTNUM = 13 RVCOMP=RPN001/RPN002 RVCORR=2.0 IF (RVCOMP - 0.19999E+01) 20130, 10130, 40130 40130 IF (RVCOMP - 0.20001E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 520 **** C IVTNUM = 14 RVCOMP=RPN001**RPN002 RVCORR=100000.0 IF (RVCOMP - 0.99995E+05) 20140, 10140, 40140 40140 IF (RVCOMP - 0.10001E+06) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0151 CONTINUE C C C TEST 15 - 18 REPEATS TEST 1 - 7 USING MORE THAN ONE OPERATOR C S06AF-2P 4.C C CT015* TEST 015 **** FCVS PROGRAM 520 **** C C IVTNUM = 15 IVCOMP=IPN001+IPN001-IPN002 IVCORR=15 40150 IF (IVCOMP - 15) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 520 **** C IVTNUM = 16 IVCOMP=IPN001+IPN001-IPN002*IPN002 IVCORR=-5 40160 IF (IVCOMP + 5) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 520 **** C C IVTNUM = 17 IVCOMP=IPN001+IPN001-IPN002*IPN002/IPN003 IVCORR=15 40170 IF (IVCOMP - 15) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C CT018* TEST 018 **** FCVS PROGRAM 520 **** C IVTNUM = 18 IVCOMP=IPN001+IPN001**IPN002-IPN002*IPN002/IPN003 IVCORR=100005 40180 IF (IVCOMP - 100005) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C C TEST 19 - 22 REPEATS TEST 8 - 14 USING MORE THAN ONE OPERATOR C S06AF-2P 4.C C CT019* TEST 019 **** FCVS PROGRAM 520 **** C IVTNUM = 19 RVCOMP=RPN001+RPN001-RPN002 RVCORR=15.0 IF (RVCOMP - 0.14999E+02) 20190, 10190, 40190 40190 IF (RVCOMP - 0.15001E+02) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0201 CONTINUE C CT020* TEST 020 **** FCVS PROGRAM 520 **** C IVTNUM = 20 RVCOMP=RPN001+RPN001-RPN002*RPN002 RVCORR=-5.0 IF (RVCOMP + 0.50003E+01) 20200, 10200, 40200 40200 IF (RVCOMP + 0.49997E+01) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0211 CONTINUE C CT021* TEST 021 **** FCVS PROGRAM 520 **** C IVTNUM = 21 RVCOMP=RPN001+RPN001-RPN002*RPN002/RPN003 RVCORR=15.0 IF (RVCOMP - 0.14999E+02) 20210, 10210, 40210 40210 IF (RVCOMP - 0.15001E+02) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0221 CONTINUE C CT022* TEST 022 **** FCVS PROGRAM 520 **** C IVTNUM = 22 RVCOMP=RPN001+RPN001**RPN002-RPN002*RPN002/RPN003 RVCORR=100005.0 IF (RVCOMP - 0.10000E+06) 20220, 10220, 40220 40220 IF (RVCOMP - 0.10001E+06) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0231 CONTINUE C C C TEST 23 - 26 REPEATS TEST 15 - 18 USING PARENTHESES C S06AF-2P 4.D C C C CT023* TEST 023 **** FCVS PROGRAM 520 **** C IVTNUM = 23 IVCOMP=IPN001+(IPN001-IPN002) IVCORR=15 40230 IF (IVCOMP - 15) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C CT024* TEST 024 **** FCVS PROGRAM 520 **** C IVTNUM = 24 IVCOMP=((IPN001+IPN001)-IPN002)*IPN002 IVCORR=75 40240 IF (IVCOMP - 75) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C CT025* TEST 025 **** FCVS PROGRAM 520 **** C IVTNUM = 25 IVCOMP=(IPN001+IPN001)-IPN002*(IPN002/IPN003) IVCORR=15 40250 IF (IVCOMP - 15) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C CT026* TEST 026 **** FCVS PROGRAM 520 **** C IVTNUM = 26 IVCOMP=(IPN001+IPN001)**2-((IPN002*IPN002)/IPN003) IVCORR=395 40260 IF (IVCOMP - 395) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C TEST 27 - 30 REPEATS TEST 19 - 22 USING PARENTHESES C S06AF-2P 4.D C CT027* TEST 027 **** FCVS PROGRAM 520 **** C IVTNUM = 27 RVCOMP=RPN001+(RPN001-RPN002) RVCORR=15.0 IF (RVCOMP - 0.14999E+02) 20270, 10270, 40270 40270 IF (RVCOMP - 0.15001E+02) 10270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0281 CONTINUE C CT028* TEST 028 **** FCVS PROGRAM 520 **** C IVTNUM = 28 RVCOMP=((RPN001+RPN001)-RPN002)*RPN002 RVCORR=75.0 IF (RVCOMP - 0.74996E+02) 20280, 10280, 40280 40280 IF (RVCOMP - 0.75004E+02) 10280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0291 CONTINUE C CT029* TEST 029 **** FCVS PROGRAM 520 **** C IVTNUM = 29 RVCOMP=(RPN001+RPN001)-RPN002*(RPN002/RPN003) RVCORR=15.0 IF (RVCOMP - 0.14999E+02) 20290, 10290, 40290 40290 IF (RVCOMP - 0.15001E+02) 10290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0301 CONTINUE C CT030* TEST 030 **** FCVS PROGRAM 520 **** C C IVTNUM = 30 RVCOMP=(RPN001+RPN001)**3.0-((RPN002*RPN002)/RPN003) RVCORR=7995.0 IF (RVCOMP - 0.79946E+04) 20300, 10300, 40300 40300 IF (RVCOMP - 0.79954E+04) 10300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0311 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM520) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM520) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *END-OF,FM520 FM700.f 481036416 170 2 100666 21101 ` *HEADER,FORTR,FM700 *FILES1,FORTR,FM700,X PROGRAM FM700 C C THIS PROGRAM TESTS THE DATA STATEMENT WITH ANS REF. C VARIABLE NAMES, ARRAY NAMES, ARRAY ELEMENT 9.1 C NAMES, SUBSTRING NAMES, AND IMPLIED-DO LISTS. 9.2 C 9.3 C SYMBOLIC NAMES OF CONSTANTS ARE PERMITTED IN THE C CLIST OF THE DATA STATEMENT. IF NECESSARY, C THE CLIST CONSTANT IS CONVERTED TO THE TYPE C OF THE NLIST ENTITY ACCORDING TO THE RULES C FOR ARITHMETIC CONVERSION. C C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C INTEGER I2N001(2,3), I2N002(7), I2N003(3,7) INTEGER I2N004(3,10), I2N005(4,5), I2N006(6,8) CHARACTER CVCOMP*25, CVCORR*25, CPN001*5 CHARACTER CVN001*25, CVN002*5, C1N001(3)*5 CHARACTER C2N001(3,4)*4, CVN003*17 REAL R2E001(2), R2N001(5,3) DOUBLE PRECISION DVCOMP, DVCORR, DVN001, D1N001(9), DPN001 COMPLEX ZVCOMP, ZVCORR, ZVN001, Z1N001(10) PARAMETER (IPN001=-14, CPN001='SEVEN', IPN002=5, DPN001=0.1948D+3) EQUIVALENCE (ZVCOMP, R2E001) DATA IVN001, C1N001, I2N001(2,1), CVN001(11:22) 1 /-137, 'FIRST', 'SECND', 'THIRD', 65, 'ELEVENTWELVE'/ DATA (I2N001(1,I), I=1,3) /-47, 198, -217/ DATA IVN002, CVN002 /IPN001, CPN001/ DATA I2N002, (I2N003(I,7), I=1,3), C2N001, CVN003(13:16) 1 /3*19, 7*-4, 13*'SAME'/ DATA IVN003, IVN004, RVN001, ZVN001, DVN001, DVN002 1 /-0.473E+3, 239.2D-1, 71, (71, -27), 6, 9.1534E-2/ DATA (I2N004(2,J), J=1,10) /9,8,7,6,5,4,3,2,1,0/ DATA ((R2N001(I,J), J=1,3), I=3,5) 1 /3.1, 3.2, 3.3, 4.1, 4.2, 4.3, 5.1, 5.2, 5.3/ DATA (Z1N001(I), I=3,7) /IPN002*(7.3, -2.28)/ DATA (D1N001(I), I=1,9,2) /IPN002*DPN001/ DATA (I2N005(I,I+1),I=1,4) / 91, -82, 73, -64/ DATA ((I2N006(2*I,I*J-1), I=2,3), J=1,3,2) /41, 62, 45, 68/ C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG = 'FM700' IVTOTL = 23 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C C C TESTS 1 THRU 5 TEST DATA STATEMENT WITH VARIABLE NAMES, C ARRAY NAMES, ARRAY ELEMENT NAMES, SUBSTRING NAMES, AND IMPLIED- C DO LISTS. C CT001* TEST 001 **** FCVS PROGRAM 700 ***** C VARIABLE NAME C IVTNUM = 1 IVCOMP = 0 IVCORR = -137 IVCOMP = IVN001 40010 IF (IVCOMP + 137) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 700 ***** C ARRAY NAME C IVTNUM = 2 CVCOMP = ' ' CVCORR = 'SECND' CVCOMP = C1N001(2) IVCOMP = 0 IF (CVCOMP.EQ.'SECND') IVCOMP = 1 40020 IF (IVCOMP - 1) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02, 80018) IVTNUM, CVCOMP, CVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 700 ***** C ARRAY ELEMENT NAME C IVTNUM = 3 IVCOMP = 0 IVCORR = 65 IVCOMP = I2N001(2,1) 40030 IF (IVCOMP - 65) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 700 ***** C SUBSTRING NAME C IVTNUM = 4 CVCOMP = ' ' CVCORR = 'ELEVENTWELVE' CVCOMP = CVN001(11:22) IVCOMP = 0 IF (CVCOMP.EQ.'ELEVENTWELVE') IVCOMP = 1 40040 IF (IVCOMP - 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02, 80018) IVTNUM, CVCOMP, CVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 700 ***** C IMPLIED-DO LIST C IVTNUM = 5 IVCOMP = 0 IVCORR = -217 IVCOMP = I2N001(1,3) 40050 IF (IVCOMP + 217) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 700 ***** C CLIST CONTAINS A SYMBOLIC NAME OF AN INTEGER CONSTANT C IVTNUM = 6 IVCOMP = 0 IVCORR = -14 IVCOMP = IVN002 40060 IF (IVCOMP + 14) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 700 ***** C CLIST CONTAINS A SYMBOLIC NAME OF A CHARACTER CONSTANT C IVTNUM = 7 CVCOMP = ' ' CVCORR = 'SEVEN' CVCOMP = CVN002 IVCOMP = 0 IF (CVCOMP.EQ.'SEVEN') IVCOMP = 1 40070 IF (IVCOMP - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02, 80018) IVTNUM, CVCOMP, CVCORR 0071 CONTINUE C C TESTS 8 THRU 11 TEST COMBINATIONS OF SUBSTRING NAMES AND C ARRAY NAMES AND THE R*C FORMAT OF THE CLIST C CT008* TEST 008 **** FCVS PROGRAM 700 ***** C IVTNUM = 8 IVCOMP = 0 IVCORR = 23 IVCOMP = I2N002(3) - I2N002(4) 40080 IF (IVCOMP - 23) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 700 ***** C IVTNUM = 9 IVCOMP = 0 IVCORR = -4 DO 0092 I = 1, 3 IF (I2N003(I,7) + 4) 0093, 0092, 0093 0092 CONTINUE 0093 IVCOMP = I2N003(3,7) 40090 IF (IVCOMP + 4) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 700 ***** C IVTNUM = 10 CVCOMP = ' ' CVCORR = 'SAME' DO 0102 I = 1, 3 DO 0102 J = 1, 4 IF (C2N001(I,J).NE.'SAME') GO TO 0103 0102 CONTINUE 0103 CVCOMP = C2N001(3,4) IVCOMP = 0 IF (CVCOMP.EQ.'SAME') IVCOMP = 1 40100 IF (IVCOMP - 1) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02, 80018) IVTNUM, CVCOMP, CVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 700 ***** C IVTNUM = 11 CVCOMP = ' ' CVCORR = 'SAME' CVCOMP = CVN003(13:16) IVCOMP = 0 IF (CVCOMP.EQ.'SAME') IVCOMP = 1 40110 IF (IVCOMP - 1) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02, 80018) IVTNUM, CVCOMP, CVCORR 0111 CONTINUE C C TESTS 12 THRU 17 TEST ARITHMETIC CONVERSION OF CLIST C CONSTANTS TO THE TYPE OF THE CORRESPONDING NLIST ENTITIES C CT012* TEST 012 **** FCVS PROGRAM 700 ***** C REAL TO INTEGER C IVTNUM = 12 IVCOMP = 0 IVCORR = -473 IVCOMP = IVN003 40120 IF (IVCOMP + 473) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C CT013* TEST 013 **** FCVS PROGRAM 700 ***** C DOUBLE PRECISION TO INTEGER C IVTNUM = 13 IVCOMP = 0 IVCORR = 23 IVCOMP = IVN004 40130 IF (IVCOMP - 23) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 700 ***** C INTEGER TO REAL C IVTNUM = 14 RVCOMP = 0.0 RVCORR = 71.0 RVCOMP = RVN001 IF (RVCOMP - 0.70996E+02) 20140, 10140, 40140 40140 IF (RVCOMP - 0.71004E+02) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02, 80012) IVTNUM, RVCOMP, RVCORR 0141 CONTINUE C CT015* TEST 015 **** FCVS PROGRAM 700 ***** C COMPLEX C IVTNUM = 15 ZVCOMP = (0.0, 0.0) ZVCORR = (71.0, -27.0) ZVCOMP = ZVN001 IF (R2E001(1) - 0.70996E+02) 20150, 40152, 40151 40151 IF (R2E001(1) - 0.71004E+02) 40152, 40152, 20150 40152 IF (R2E001(2) + 0.27002E+02) 20150, 10150, 40150 40150 IF (R2E001(2) + 0.26998E+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02, 80045) IVTNUM, ZVCOMP, ZVCORR 0151 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 700 ***** C INTEGER TO DOUBLE PRECISION C IVTNUM = 16 DVCOMP = 0.0D0 DVCORR = 6.0D0 DVCOMP = DVN001 IF (DVCOMP - 0.5999999997D+01) 20160, 10160, 40160 40160 IF (DVCOMP - 0.6000000003D+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02, 80031) IVTNUM, DVCOMP, DVCORR 0161 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 700 ***** C REAL TO DOUBLE PRECISION C IVTNUM = 17 DVCOMP = 0.0D0 DVCORR = 9.1534D-2 DVCOMP = DVN002 IF (DVCOMP - 0.91529D-01) 20170, 10170, 40170 40170 IF (DVCOMP - 0.91539D-01) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 WRITE (I02, 80031) IVTNUM, DVCOMP, DVCORR 0171 CONTINUE C C TESTS 18 THRU 21 TEST DIFFERENT DATA TYPES USING THE IMPLIED-DO C CT018* TEST 018 **** FCVS PROGRAM 700 ***** C INTEGER C IVTNUM = 18 IVCOMP = 0 IVCORR = 3 IVCOMP = I2N004(2,7) 40180 IF (IVCOMP - 3) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C CT019* TEST 019 **** FCVS PROGRAM 700 ***** C REAL C IVTNUM = 19 RVCOMP = 0.0 RVCORR = 4.1 RVCOMP = R2N001(4,1) IF (RVCOMP - 0.40998E+01) 20190, 10190, 40190 40190 IF (RVCOMP - 0.41002E+01) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 WRITE (I02, 80012) IVTNUM, RVCOMP, RVCORR 0191 CONTINUE C CT020* TEST 020 **** FCVS PROGRAM 700 ***** C COMPLEX C IVTNUM = 20 ZVCOMP = (0.0, 0.0) ZVCORR = (7.3, -2.28) ZVCOMP = Z1N001(7) IF (R2E001(1) - 0.72996E+01) 20200, 40202, 40201 40201 IF (R2E001(1) - 0.73004E+01) 40202, 40202, 20200 40202 IF (R2E001(2) + 0.22802E+01) 20200, 10200, 40200 40200 IF (R2E001(2) + 0.22798E+01) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 WRITE (I02, 80045) IVTNUM, ZVCOMP, ZVCORR 0201 CONTINUE C CT021* TEST 021 **** FCVS PROGRAM 700 ***** C DOUBLE PRECISION C IVTNUM = 21 DVCOMP = 0.0D0 DVCORR = 0.1948D+3 DVCOMP = D1N001(9) IF (DVCOMP - 0.1947999999D+03) 20210, 10210, 40210 40210 IF (DVCOMP - 0.1948000001D+03) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 WRITE (I02, 80031) IVTNUM, DVCOMP, DVCORR 0211 CONTINUE C C TESTS 22 AND 23 TEST THAT EACH SUBSCRIPT EXPRESSION C IN AN IMPLIED-DO LIST MAY CONTAIN IMPLIED-DO-VARIABLES OF C THE LIST THAT HAS THE SUBSCRIPT EXPRESSION WITHIN ITS RANGE. C CT022* TEST 022 **** FCVS PROGRAM 700 ***** C IVTNUM = 22 IVCOMP = 0 IVCORR = 155 IVCOMP = I2N005(3,4) - I2N005(2,3) 40220 IF (IVCOMP - 155) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C CT023* TEST 023 **** FCVS PROGRAM 700 ***** C IVTNUM = 23 IVCOMP = 0 IVCORR = 130 IVCOMP = I2N006(6,2) + I2N006(6,8) 40230 IF (IVCOMP - 130) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 WRITE (I02, 80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM700) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM700) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *END-OF,FM700 FM701.f 481036421 170 2 100666 30043 ` *HEADER,FORTR,FM701 *FILES1,FORTR,FM701 PROGRAM FM701 C C THIS ROUTINE TESTS ARRAY DECLARATORS WHERE DIMENSION ANS REF. C BOUND EXPRESSIONS MAY CONTAIN CONSTANTS, 5.1.1.2 C SYMBOLIC NAMES OF CONSTANTS, OR VARIABLES 5.1.1 C OF TYPE INTEGER. C C THIS ROUTINE USES ROUTINES 602 THROUGH 609 AS SUBROUTINES. C C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C INTEGER I2D001(3,5), I2D002(2,4), I2D003(5,2) PARAMETER (IPN001=1, IPN002=-1, IPN003=4) DIMENSION I2N004(IPN001:2,3), I2N005(2,-1:IPN001), 1 I2N006(IPN002:IPN001,1:IPN003) DIMENSION I2N007(+5:7,+1:2), I2N008(0:2,2), I2N009(1:3,-1:1), 1 I2N010(4,2), I2N011(2*2+1:7,1:2) DIMENSION I2N012(1:+2,2:+4), I2N013(-2:0,2), I2D014(1:3,-3:-1), 1 I2N015(1:2*2+1,1:2), I2N016(2,6/3-1:2*5-7) CHARACTER*4 CVCOMP, CVCORR CHARACTER*4 C2N001(0:5,1:6), C2D002(2,1:3), C2N003(-2:1,3:10), 1 C2D004(1:2,5:7), C1N005(+1:6),C3D006(1:2,2,5:7) DATA I2D001 / 12*0, -47, 2*0 / DATA I2D002 / 6*0, 5, 0 / DATA I2D003 / 6, 8*0, -11 / DATA I2N004 / -4, 5*4 / DATA I2N005 / -5, 5*5 / DATA I2N006 / 6*6, -6, 5*6 / DATA I2N007 / 3*7, -7, 2*7 / DATA I2N008 / -8, 5*8 / DATA I2N009 / 2*9, -9, 6*9 / DATA I2N010 / -10, 7*10 / DATA I2N011 / 3*11, -11, 2*11 / DATA I2N012 / 7, 5*-7 / DATA I2N013 / 8, 5*-8 / DATA I2D014 / 9, 8*-9 / DATA I2N015 / 9*-10, 10 / DATA I2N016 / 11, 4*-11, -10 / DATA C2N001 / 'C001', 35*' ' / DATA C2D002 / 5*' ', 'C002' / DATA C2N003 / 'C003', 31*' ' / DATA C2D004 / 'C004', 5*' ' / DATA C1N005 / 'C005', 5*' ' / DATA C3D006 / 'C006', 11*' ' / C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM701' IVTOTL = 35 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C C TESTS 1-3 - LOWER AND/OR UPPER BOUNDS ARE ARITHMETIC EXPRESSIONS C OF TYPE INTEGER, USING VARIABLES C C CT001* TEST 001 **** FCVS PROGRAM 701 **** C C TEST 001 LOWER BOUND C IVTNUM = 1 IVCORR = -47 CALL SN702(1,1,2,6,I2D001,I2D002,I2D003,IVCOMP) 40010 IF (IVCOMP + 47) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 701 **** C C TEST 002 UPPER BOUND C IVTNUM = 2 IVCORR = 5 CALL SN702(2,1,2,6,I2D001,I2D002,I2D003,IVCOMP) 40020 IF (IVCOMP - 5) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 701 **** C C TEST 003 BOTH LOWER AND UPPER BOUNDS C IVTNUM = 3 IVCORR = 17 CALL SN702(3,1,2,6,I2D001,I2D002,I2D003,IVCOMP) 40030 IF (IVCOMP - 17) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C TESTS 4-6 - LOWER AND/OR UPPER BOUNDS ARE SYMBOLIC NAMES C OF INTEGER CONSTANTS C C CT004* TEST 004 **** FCVS PROGRAM 701 **** C C TEST 004 LOWER BOUND C IVTNUM = 4 IVCOMP = 0 IVCORR = -4 IVCOMP = I2N004(1,1) 40040 IF (IVCOMP + 4) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 701 **** C C TEST 005 UPPER BOUND C IVTNUM = 5 IVCOMP = 0 IVCORR = -5 IVCOMP = I2N005(1,-1) 40050 IF (IVCOMP + 5) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 701 **** C C TEST 006 BOTH UPPER AND LOWER BOUNDS C IVTNUM = 6 IVCOMP = 0 IVCORR = -6 IVCOMP = I2N006(-1,3) 40060 IF (IVCOMP + 6) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 701 **** C C TEST 007 LOWER BOUND POSITIVE C IVTNUM = 7 IVCOMP = 0 IVCORR = -7 IVCOMP = I2N007(5,2) 40070 IF (IVCOMP + 7) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C CT008* TEST 008 **** FCVS PROGRAM 701 **** C C TEST 008 LOWER BOUND ZERO C IVTNUM = 8 IVCOMP = 0 IVCORR = -8 IVCOMP = I2N008(0,1) 40080 IF (IVCOMP + 8) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 701 **** C C TEST 009 LOWER BOUND NEGATIVE C IVTNUM = 9 IVCOMP = 0 IVCORR = -9 IVCOMP = I2N009(3,-1) 40090 IF (IVCOMP + 9) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 701 **** C C TEST 010 LOWER BOUND OMITTED C IVTNUM = 10 IVCOMP = 0 IVCORR = -10 IVCOMP = I2N010(1,1) 40100 IF (IVCOMP + 10) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 701 **** C C TEST 011 LOWER BOUND IS AN INTEGER EXPRESSION C IVTNUM = 11 IVCOMP = 0 IVCORR = -11 IVCOMP = I2N011(5,2) 40110 IF (IVCOMP + 11) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 701 **** C C TEST 012 UPPER BOUND POSITIVE C IVTNUM = 12 IVCOMP = 0 IVCORR = 7 IVCOMP = I2N012(1,2) 40120 IF (IVCOMP - 7) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C CT013* TEST 013 **** FCVS PROGRAM 701 **** C C TEST 013 UPPER BOUND ZERO C IVTNUM = 13 IVCOMP = 0 IVCORR = 8 IVCOMP = I2N013(-2,1) 40130 IF (IVCOMP - 8) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 701 **** C C TEST 014 UPPER BOUND NEGATIVE C IVTNUM = 14 IVCOMP = 0 IVCORR = 9 IVCOMP = I2D014(1,-3) 40140 IF (IVCOMP - 9) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C CT015* TEST 015 **** FCVS PROGRAM 701 **** C C TEST 015 UPPER BOUND IS INTEGER EXPRESSION C IVTNUM = 15 IVCOMP = 0 IVCORR = 10 IVCOMP = I2N015(5,2) 40150 IF (IVCOMP - 10) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 701 **** C C TEST 016 UPPER BOUNDS ARE INTEGER EXPRESSIONS C IVTNUM = 16 IVCOMP = 0 IVCORR = -110 IVCOMP = I2N016(1,1)*I2N016(2,3) 40160 IF (IVCOMP + 110) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 701 **** C C TEST 017 ZERO AS A DIMENSION C IVTNUM = 17 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C001' CVCOMP = C2N001(0,1) IF (CVCOMP .EQ. 'C001') IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0171 CONTINUE C CT018* TEST 018 **** FCVS PROGRAM 701 **** C C TEST 018 UPPER DIMENSION UNDEFINED IN THE SUBROUTINE C IVTNUM = 18 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C002' CALL SN703(1,1,2,C2D002,C2D004,CVCOMP) IF (CVCOMP .EQ. 'C002') IVCOMP = 1 IF (IVCOMP - 1) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0181 CONTINUE C CT019* TEST 019 **** FCVS PROGRAM 701 **** C C TEST 019 NEGATIVE DIMENSION C IVTNUM = 19 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C003' CVCOMP = C2N003(-2,3) IF (CVCOMP .EQ. 'C003') IVCOMP = 1 IF (IVCOMP - 1) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0191 CONTINUE C CT020* TEST 020 **** FCVS PROGRAM 701 **** C C TEST 020 VARIABLE DIMENSION C IVTNUM = 20 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C004' CALL SN703(2,1,2,C2D002,C2D004,CVCOMP) IF (CVCOMP .EQ. 'C004') IVCOMP = 1 IF (IVCOMP - 1) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0201 CONTINUE C CT021* TEST 021 **** FCVS PROGRAM 701 **** C C TEST 021 POSITIVE DIMENSION C IVTNUM = 21 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C005' CVCOMP = C1N005(1) IF (CVCOMP .EQ. 'C005') IVCOMP = 1 IF (IVCOMP - 1) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0211 CONTINUE C C TESTS 22-25 - MIXED DIMENSION BOUNDS WITH VARIABLE NUMBER OF C ELEMENTS IN EACH DIMENSION C C CT022* TEST 022 **** FCVS PROGRAM 701 **** C C IVTNUM = 22 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C006' CALL SN704(1,1,2,5,C3D006,CVCOMP) IF (CVCOMP .EQ. 'C006') IVCOMP = 1 IF (IVCOMP - 1) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0221 CONTINUE C CT023* TEST 023 **** FCVS PROGRAM 701 **** C C IVTNUM = 23 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'IJKL' CALL SN704(2,1,2,6,C3D006,CVCOMP) IF (CVCOMP .EQ. 'IJKL') IVCOMP = 1 IF (IVCOMP - 1) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0231 CONTINUE C CT024* TEST 024 **** FCVS PROGRAM 701 **** C C IVTNUM = 24 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'EFGH' CALL SN704(3,1,1,5,C3D006,CVCOMP) IF (CVCOMP .EQ. 'EFGH') IVCOMP = 1 IF (IVCOMP - 1) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0241 CONTINUE C CT025* TEST 025 **** FCVS PROGRAM 701 **** C C IVTNUM = 25 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'ABCD' CALL SN704(4,2,2,6,C3D006,CVCOMP) IF (CVCOMP .EQ. 'ABCD') IVCOMP = 1 IF (IVCOMP - 1) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0251 CONTINUE C C TESTS 26-28 - LOWER BOUND IS AN EXPRESSION INVOLVING C ARITHMETIC OPERATORS C C CT026* TEST 026 **** FCVS PROGRAM 701 **** C C IVTNUM = 26 IVCORR = -47 CALL SN705(1,2,-1,1,I2D001,I2D002,I2D003,IVCOMP) 40260 IF (IVCOMP + 47) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C CT027* TEST 027 **** FCVS PROGRAM 701 **** C C IVTNUM = 27 IVCORR = 5 CALL SN705(2,2,-1,1,I2D001,I2D002,I2D003,IVCOMP) 40270 IF (IVCOMP - 5) 20270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C CT028* TEST 028 **** FCVS PROGRAM 701 **** C C IVTNUM = 28 IVCORR = 17 CALL SN705(3,2,-1,1,I2D001,I2D002,I2D003,IVCOMP) 40280 IF (IVCOMP - 17) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C TESTS 29-31 - UPPER BOUND IS AN EXPRESSION INVOLVING C ARITHMETIC OPERATORS C C CT029* TEST 029 **** FCVS PROGRAM 701 **** C C IVTNUM = 29 IVCORR = -47 CALL SN706(1,4,0,3,I2D001,I2D002,I2D003,IVCOMP) 40290 IF (IVCOMP + 47) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C CT030* TEST 030 **** FCVS PROGRAM 701 **** C C IVTNUM = 30 IVCORR = 5 CALL SN706(2,4,0,3,I2D001,I2D002,I2D003,IVCOMP) 40300 IF (IVCOMP - 5) 20300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C CT031* TEST 031 **** FCVS PROGRAM 701 **** C C IVTNUM = 31 IVCORR = 17 CALL SN706(3,4,0,3,I2D001,I2D002,I2D003,IVCOMP) 40310 IF (IVCOMP - 17) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C CT032* TEST 032 **** FCVS PROGRAM 701 **** C C TEST 032 "/" IN LOWER BOUND C IVTNUM = 32 IVCORR = -47 CALL SN707(1,3,2,I2D001,I2D002,IVCOMP) 40320 IF (IVCOMP + 47) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C CT033* TEST 033 **** FCVS PROGRAM 701 **** C C TEST 033 "**" IN UPPER BOUND C IVTNUM = 33 IVCORR = 5 CALL SN707(2,3,2,I2D001,I2D002,IVCOMP) 40330 IF (IVCOMP - 5) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C TESTS 34-35 - UPPER AND LOWER BOUNDS WITH ARITHMETIC OPERATORS C IN EXPRESSION C C CT034* TEST 034 **** FCVS PROGRAM 701 **** C C IVTNUM = 34 IVCORR = -47 CALL SN708(3,-2,2,I2D001,IVCOMP) 40340 IF (IVCOMP + 47) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C CT035* TEST 035 **** FCVS PROGRAM 701 **** C C IVTNUM = 35 IVCORR = 9 CALL SN709(-1,-2,1,I2D014,IVCOMP) 40350 IF (IVCOMP - 9) 20350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM701) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM701) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *HEADER,FORTR,FM701,SUBRTN,FM702 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS DIMENSION BOUND EXPRESSIONS C CONTAINING VARIABLES OF TYPE INTEGER. C SUBROUTINE SN702(IVD001,IVD002,IVD003,IVD004,I2D001,I2D002,I2D003, 1 IVD005) C DIMENSION I2D001(IVD002:3,1:5), I2D002(2,1:2*IVD003), 1 I2D003(IVD004/3 - 1 : IVD002 + 4, 1:2) C IF (IVD001 - 2) 70010, 70020, 70030 70010 IVD005 = I2D001(1,5) RETURN 70020 IVD005 = I2D002(1,4) RETURN 70030 IVD005 = I2D003(1,1) - I2D003(5,2) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM703 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ASSUMED-SIZE ARRAY DECLARATORS C AND ADJUSTABLE ARRAY DECLARATORS. C SUBROUTINE SN703(IVD001,IVD002,IVD003,C2D001,C2D002,CVD001) C CHARACTER*4 CVD001, C2D001(2,1:*), C2D002(IVD002:IVD003,5:7) C IF (IVD001 - 1) 70010, 70010, 70020 70010 CVD001 = C2D001(2,3) RETURN 70020 CVD001 = C2D002(1,5) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM704 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ADJUSTABLE ARRAY DECLARATORS. C SUBROUTINE SN704(IVD001,IVD002,IVD003,IVD004,C3D001,CVD001) C CHARACTER*4 CVD001, C3D001(IVD002:IVD003,2,IVD004:7) C IF (IVD001 - 2) 70010, 70020, 70030 70010 CVD001 = C3D001(1,1,5) RETURN 70020 C3D001(1,2,6) = 'IJKL' CVD001 = C3D001(1,2,6) RETURN 70030 IF (IVD001 - 3) 70040, 70040, 70050 70040 C3D001(1,1,5) = 'EFGH' CVD001 = C3D001(1,1,5) RETURN 70050 C3D001(2,2,6) = 'ABCD' CVD001 = C3D001(2,2,6) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM705 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE THE LOWER BOUNDS C CONTAIN ARITHMETIC EXPRESSIONS OF TYPE C INTEGER. C SUBROUTINE SN705(IVD001,IVD002,IVD003,IVD004,I2D001,I2D002,I2D003, 1 IVD005) C DIMENSION I2D001(IVD002-1:3,1:5),I2D002(IVD003+2:2,1:4), 1 I2D003(2*IVD004-1:5,2) C IF (IVD001 - 2) 70010, 70020, 70030 70010 IVD005 = I2D001(1,5) RETURN 70020 IVD005 = I2D002(1,4) RETURN 70030 IVD005 = I2D003(1,1) - I2D003(5,2) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM706 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE THE UPPER BOUNDS C CONTAIN ARITHMETIC EXPRESSIONS OF TYPE C INTEGER. C SUBROUTINE SN706(IVD001,IVD002,IVD003,IVD004,I2D001,I2D002,I2D003, 1 IVD005) C DIMENSION I2D001(1:IVD002-1,1:5),I2D002(1:IVD003+2,1:4), 1 I2D003(1:2*IVD004-1,2) C IF (IVD001 - 2) 70010, 70020, 70030 70010 IVD005 = I2D001(1,5) RETURN 70020 IVD005 = I2D002(1,4) RETURN 70030 IVD005 = I2D003(1,1) - I2D003(5,2) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM707 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE BOUND EXPRESSIONS C MAY CONTAIN DIVISION OPERATORS OR C EXPONENTIATION OPERATORS. C SUBROUTINE SN707(IVD001,IVD002,IVD003,I2D001,I2D002,IVD004) C DIMENSION I2D001(IVD002/3:3,1:5),I2D002(1:2,1:IVD003**2) C IF (IVD001 - 1) 70010, 70010, 70020 70010 IVD004 = I2D001(1,5) RETURN 70020 IVD004 = I2D002(1,4) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM708 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE BOTH THE LOWER C AND UPPER BOUNDS CONTAIN ARITHMETIC C EXPRESSIONS OF TYPE INTEGER. C SUBROUTINE SN708(IVD001,IVD002,IVD003,I2D001,IVD004) C DIMENSION I2D001(IVD001/3:IVD001,IVD002+3 : 4*(2*IVD003-1)/3 + 1) C IVD004 = I2D001(1,5) RETURN END *HEADER,FORTR,FM701,SUBRTN,FM709 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE THE BOUND C EXPRESSIONS CONTAIN SYMBOLIC NAMES C OF CONSTANTS OR VARIABLES OF TYPE C INTEGER. C SUBROUTINE SN709(IVD001,IVD002,IVD003,I2D001,IVD005) C PARAMETER (IPN001=-3) DIMENSION I2D001(IPN001+4:(2*IVD003 + 1),IPN001:(1-IVD001)/IVD002) C IVD005 = I2D001(1,-3) RETURN END *END-OF,FM701 FM710.f 481036426 170 2 100666 18738 ` *HEADER,FORTR,FM710 *FILES1,FORTR,FM710,X PROGRAM FM710 C C THIS ROUTINE TESTS SUBSCRIPT EXPRESSIONS AND ANS REF. C CHARACTER SUBSTRINGS. 5.4.2, 5.4.3 C 5.7.1, 5.7.2 C C THIS ROUTINE ASSUMES THE INTRINSIC FUNCTIONS C INT AND IABS ARE WORKING. C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C DIMENSION I2N001(2,3), I2N002(3,5), I1N003(-1:8), I2N004(10,4) CHARACTER*10 CVCOMP, CVCORR, CVN001, C2N001(2,4) DATA I2N001 /1,2,3,4,5,6/ DATA I2N002 /11,21,31,12,22,32,13,23,33,14,24,34,15,25,35/ DATA I1N003 /1,2,3,4,5,6,7,8,9,10/ DATA I2N004 / 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1 4,-2, 6,-3, 8,-4,10,-5, 2,-1, 2 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 3 -10,-9,-8,-7,-6,-5,-4,-3,-2,-1 / DATA C2N001 /'11FIRSTELE','21SECONDXX','12THIRDXYZ','22FOURTHWW', 1 '13FIFTHABC','23SIXTHIJK','14SEVENTHH','24EIGHTHUV'/ C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM710' IVTOTL = 19 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C C TESTS 1-2 - SUBSCRIPT EXPRESSION TO IDENTIFY VARIOUS C ARRAY ELEMENTS C C CT001* TEST 001 **** FCVS PROGRAM 710 **** C C TEST 001 ARRAY ELEMENT REFERENCE C IVTNUM = 1 IVCOMP = 0 IVCORR = 34 IVCOMP = I2N002(I2N001(1,2),I2N001(2,3)/2 + 1) 40010 IF (IVCOMP - 34) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 710 **** C C TEST 002 FUNCTION REFERENCE C IVTNUM = 2 RVD001 = 2.64 IVCOMP = 0 IVCORR = 25 IVCOMP = I2N002(INT(RVD001), 19 - IABS(-7)*2) 40020 IF (IVCOMP - 25) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C TESTS 3-7 - TEST SUBSCRIPT VALUE IN IDENTIFYING C ARRAY ELEMENTS C CT003* TEST 003 **** FCVS PROGRAM 710 **** C C TEST 003 RANGE C IVTNUM = 3 WRITE (I02, 80004) IVTNUM WRITE (I02, 80020) WRITE (I02, 70030) (I1N003(IVN001), IVN001=5,8) 70030 FORMAT (1H ,26X,4I4) IVINSP = IVINSP + 1 WRITE (I02, 80022) WRITE (I02, 70031) 70031 FORMAT (1H ,26X,16H 7 8 9 10) C CT004* TEST 004 **** FCVS PROGRAM 710 **** C C TEST 004 SINGLE ELEMENT C IVTNUM = 4 IVCOMP = 0 IVCORR = 4 IVCOMP = I1N003(2) 40040 IF (IVCOMP - 4) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 710 **** C C TEST 005 EXPRESSION C IVTNUM = 5 IVN001 = -3 IVCOMP = 0 IVCORR = 1 IVCOMP = I1N003((IVN001+5)*3 - 7) 40050 IF (IVCOMP - 1) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 710 **** C C TEST 006 31ST ELEMENT IN 2 DIMENSIONAL, 40 ELEMENT ARRAY C IVTNUM = 6 IVCOMP = 0 IVCORR = -10 IVCOMP = I2N004(1,4) 40060 IF (IVCOMP + 10) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 710 **** C C TEST 007 4TH ELEMENT OF FIRST ARRAY EQUAL TO C 11TH ELEMENT OF SECOND ARRAY C IVTNUM = 7 IVCOMP = 0 IVCORR = 1 IF (I1N003(2).EQ.I2N004(1,2)) IVCOMP = 1 40070 IF (IVCOMP - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C TESTS 8-15 - CHARACTER SUBSTRING NAME C C CT008* TEST 008 **** FCVS PROGRAM 710 **** C C TEST 008 USING LEFT AND RIGHT POSITION OF SUBSTRING C IVTNUM = 8 CVCOMP = ' ' IVCOMP = 0 CVN001 = 'THIS IS IT' CVCORR = 'HIS ' CVCOMP = CVN001(2:4) IF (CVCOMP .EQ. 'HIS ') IVCOMP = 1 IF (IVCOMP - 1) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 710 **** C C TEST 009 LEFT POSITION OMITTED, VALUE OF 1 ASSUMED C IVTNUM = 9 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'THIS ' CVCOMP = CVN001(:4) IF (CVCOMP .EQ. 'THIS ') IVCOMP = 1 IF (IVCOMP - 1) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 710 **** C C TEST 010 RIGHT POSITION OMITTED, RIGHT-HAND END OF STRING ASSUMED C IVTNUM = 10 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'S IS IT ' CVCOMP = CVN001(4:) IF (CVCOMP .EQ. 'S IS IT ') IVCOMP = 1 IF (IVCOMP - 1) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 710 **** C C TEST 011 EXTRACT SUBSTRING FROM ARRAY C IVTNUM = 11 CVCOMP = ' ' IVCOMP = 0 CVCORR = '12THIR ' CVCOMP = C2N001(1,2)(1:6) IF (CVCOMP .EQ. '12THIR ') IVCOMP = 1 IF (IVCOMP - 1) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 710 **** C C TEST 012 ENTIRE SUBSTRING C IVTNUM = 12 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'THIS IS IT' CVCOMP = CVN001(:) IF (CVCOMP .EQ. 'THIS IS IT') IVCOMP = 1 IF (IVCOMP - 1) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0121 CONTINUE C CT013* TEST 013 **** FCVS PROGRAM 710 **** C C TEST 013 ENTIRE SUBSTRING FROM ARRAY C IVTNUM = 13 CVCOMP = ' ' IVCOMP = 0 CVCORR = '23SIXTHIJK' CVCOMP = C2N001(2,3)(:) IF (CVCOMP .EQ. '23SIXTHIJK') IVCOMP = 1 IF (IVCOMP - 1) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 710 **** C C RIGHT POSITION OMITTED USING ARRAY C IVTNUM = 14 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'EVENTHH ' CVCOMP = C2N001(1,4)(4:) IF (CVCOMP .EQ. 'EVENTHH ') IVCOMP = 1 IF (IVCOMP - 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0141 CONTINUE C CT015* TEST 015 **** FCVS PROGRAM 710 **** C C LEFT POSITION OMITTED C IVTNUM = 15 CVCOMP = ' ' IVCOMP = 0 CVCORR = '24EI ' CVCOMP = C2N001(2,4)(:4) IF (CVCOMP .EQ. '24EI ') IVCOMP = 1 IF (IVCOMP - 1) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0151 CONTINUE C C TESTS 16-19 - SUBSTRING EXPRESSION C C CT016* TEST 016 **** FCVS PROGRAM 710 **** C C TEST 016 ARITHMETIC EXPRESSION C IVTNUM = 16 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'HIS IS IT ' CVCOMP = CVN001(2:5*2) IF (CVCOMP .EQ. 'HIS IS IT ') IVCOMP = 1 IF (IVCOMP - 1) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0161 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 710 **** C C TEST 017 SUBSTRING EXPRESSION IN AN ASSIGNMENT STATEMENT C IVTNUM = 17 IVN001 = 5 IVN002 = 8 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'THISLIKEIT' CVN001(IVN001:IVN002) = 'LIKE' CVCOMP = CVN001 IF (CVCOMP .EQ. 'THISLIKEIT') IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0171 CONTINUE C CT018* TEST 018 **** FCVS PROGRAM 710 **** C C TEST 018 SUBSTRING EXPRESSION CONTAINING ARRAY ELEMENT REFERENCE C IVTNUM = 18 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'HISLIKE ' CVCOMP = CVN001(I2N001(2,1):I2N002(3,5)-27) IF (CVCOMP .EQ. 'HISLIKE ') IVCOMP = 1 IF (IVCOMP - 1) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0181 CONTINUE C CT019* TEST 019 **** FCVS PROGRAM 710 **** C C TEST 019 SUBSTRING EXPRESSION CONTAINING FUNCTION REFERENCES C IVTNUM = 19 RVD001 = 1.475 IVN001 = 1 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'IFTHABC ' CVCOMP = C2N001(1,3)(INT(RVD001)+3 : (IVN001*5 + 7)/IABS(-6) + 8) IF (CVCOMP .EQ. 'IFTHABC ') IVCOMP = 1 IF (IVCOMP - 1) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0191 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM710) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM710) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *END-OF,FM710 FM711.f 481036431 170 2 100666 12543 ` *HEADER,FORTR,FM711 *FILES1,FORTR,FM711 PROGRAM FM711 C C THIS ROUTINE TESTS ADJUSTABLE ARRAYS AND ADJUSTABLE ANS REF. C DIMENSIONS, AND THE USE OF ARRAY 5.5.1 C NAMES. 5.6 C C THIS ROUTINE USES ROUTINES 712-714 AS SUBROUTINES. C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C INTEGER I2D001(3,5) CHARACTER CVCOMP*20,CVCORR*20,C1N001(3)*5,C1N002(4)*5,CVN001*10 COMMON ICC001, ICC002 DATA I2D001 / 11,21,31,12,22,32,13,23,33,14,24,34,15,25,35 / DATA C1N001 / '-3412', ' 108', '+9792' / DATA C1N002 / '(10HI', '/O TE', 'ST: ,', ' A10)' / C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM711' IVTOTL = 5 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** ICC001 = 3 ICC002 = 4 C C TESTS 1-2 - TEST ADJUSTABLE ARRAYS WHERE THE LOWER AND/OR UPPER C BOUNDS ARE ARGUMENTS OF A SUBROUTINE OR IN COMMON. C C CT001* TEST 001 **** FCVS PROGRAM 711 **** C IVTNUM = 1 IVCOMP = 0 IVCORR = 24 CALL SN712(3,5,I2D001,IVCOMP) 40010 IF (IVCOMP - 24) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 711 **** C IVTNUM = 2 IVCOMP = 0 IVCORR = 113 CALL SN713(1,I2D001,IVCOMP) 40020 IF (IVCOMP - 113) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 711 **** C C TEST THE ABILITY TO USE AN ARRAY ELEMENT NAME C AS A UNIT IDENTIFIER FOR AN INTERNAL FILE C IN AN INPUT/OUTPUT STATEMENT C IVTNUM = 3 IVCOMP = 0 IVCORR = 9792 READ (UNIT=C1N001(3),FMT=70010) IVCOMP 70010 FORMAT (I5) 40030 IF (IVCOMP - 9792) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 711 **** C TEST THE ABILITY TO USE AN ARRAY NAME C AS A FORMAT IDENTIFIER IN AN INPUT/OUTPUT C STATEMENT C IVTNUM = 4 CVCOMP = ' ' CVCORR = 'I/O TEST: THIS IS IT' CVN001 = 'THIS IS IT' WRITE (UNIT=CVCOMP, FMT=C1N002) CVN001 IVCOMP = 0 IF (CVCOMP .EQ. 'I/O TEST: THIS IS IT') IVCOMP = 1 IF (IVCOMP - 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 711 **** C TEST THE ABILITY TO USE AN ARRAY NAME C IN A SAVE STATMENT C IVTNUM = 5 IVCOMP = 0 IVCORR = 174 CALL SN714(1,IVD001) CALL SN714(2,IVCOMP) 40050 IF (IVCOMP - 174) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM711) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM711) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *HEADER,FORTR,FM711,SUBRTN,FM712 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 711. C C THIS SUBROUTINE TESTS ADJUSTABLE ARRAYS AND ADJUSTABLE C DIMENSIONS WHERE THE UPPER BOUND C IS A DUMMY ARGUMENT. C SUBROUTINE SN712(IVD001,IVD002,I2D001,IVD003) INTEGER I2D001(1:IVD001,1:IVD002) IVD003 = I2D001(2,4) RETURN END *HEADER,FORTR,FM711,SUBRTN,FM713 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 711. C C THIS SUBROUTINE TESTS ADJUSTABLE ARRAYS AND ADJUSTABLE C DIMENSIONS WHERE THE LOWER AND C UPPER BOUND MAY BE A DUMMY ARGUMENT C AND/OR IN COMMON. C SUBROUTINE SN713(IVD001,I2D001,IVD002) COMMON ICC001, ICC002 INTEGER I2D001(IVD001:ICC001,2:ICC002) I2D001(3,4) = 113 IVD002 = I2D001(3,4) RETURN END *HEADER,FORTR,FM711,SUBRTN,FM714 C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 711. C C THIS SUBROUTINE TESTS THE USE OF ARRAY NAMES IN A C SAVE STATEMENT. C SUBROUTINE SN714(IVD001, IVD002) INTEGER I2N001(2,2) SAVE I2N001 IF (IVD001.GT.1) GO TO 70010 I2N001(1,1) = -12 I2N001(1,2) = 137 I2N001(2,1) = 69 I2N001(2,2) = 102 70010 IVD002 = I2N001(1,2)+I2N001(2,2)/17-(2*I2N001(1,1)-I2N001(2,1))/3 RETURN END *END-OF,FM711 FM715.f 481036436 170 2 100666 28400 ` *HEADER,FORTR,FM715 *FILES1,FORTR,FM715 PROGRAM FM715 C C THIS ROUTINE TESTS CHARACTER EXPRESSIONS ANS REF. C AND CONCATENATION OPERATIONS USING 6.2, 6.2.1, C ASSIGNMENT STATEMENTS AND RELATIONAL 6.2.2, 6.2.2.2, C EXPRESSIONS. 6.6.5 C C THIS ROUTINE USES ROUTINES CF716-CF717 AS FUNCTION SUBPROGRAMS. C C THE FUNCTION LEN IS ASSUMED WORKING. C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C CHARACTER CVCOMP*65, CVCORR*65, CPN001*5, CPN002*10 CHARACTER CVN001*7, CVN002*35, C2N001(2,2)*6, CF716*10 CHARACTER*(*) CPN003 CHARACTER*2 CVN003, CVN004, CVD005, CF717 PARAMETER (CPN001='PQRST', CPN002='EXPRESSION') PARAMETER (CPN003='NOW IS THE TIME FOR ALL GOOD MEN') DATA CVN001 / 'ONE+TWO' / DATA CVN002 / 'THIS-IS-A-LONG-CHARACTER-STRING' / DATA C2N001 / 'ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX' / C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM715' IVTOTL = 34 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C C TESTS 1-12 - CHARACTER EXPRESSIONS C C CT001* TEST 001 **** FCVS PROGRAM 715 **** C C CHARACTER CONSTANT IN AN ASSIGNMENT STATEMENT C IVTNUM = 1 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'CONSTANT' CVCOMP = 'CONSTANT' IF (CVCOMP .EQ. 'CONSTANT') IVCOMP = 1 IF (IVCOMP - 1) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 715 **** C C CHARACTER CONSTANT IN AN IF STATEMENT C IVTNUM = 2 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'RELATIONAL' IF (CVCOMP.EQ.'RELATIONAL') IVCOMP = 1 40020 IF (IVCOMP - 1) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 715 **** C C SYMBOLIC NAME OF A CHARACTER CONSTANT IN AN ASSIGNMENT STATEMENT C IVTNUM = 3 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'PQRST' CVCOMP = CPN001 IF (CVCOMP .EQ. 'PQRST') IVCOMP = 1 IF (IVCOMP - 1) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 715 **** C C SYMBOLIC NAME OF A CHARACTER CONSTANT IN AN IF STATEMENT C IVTNUM = 4 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'EXPRESSION' IF (CVCOMP.EQ.CPN002) IVCOMP = 1 40040 IF (IVCOMP - 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 715 **** C C CHARACTER VARIABLE IN AN ASSIGNMENT STATEMENT C IVTNUM = 5 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'ONE+TWO' CVCOMP = CVN001 IF (CVCOMP .EQ. 'ONE+TWO') IVCOMP = 1 IF (IVCOMP - 1) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 715 **** C C CHARACTER VARIABLE IN AN IF STATEMENT C IVTNUM = 6 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'THIS-IS-A-LONG-CHARACTER-STRING' IF (CVCOMP.EQ.CVN002) IVCOMP = 1 40060 IF (IVCOMP - 1) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 715 **** C C CHARACTER ARRAY ELEMENT REFERENCE IN AN ASSIGNMENT STATEMENT C IVTNUM = 7 CVCOMP = ' ' CVCORR = 'GHIJKL' IVCOMP = 0 CVCOMP = C2N001(2,1) IF (CVCOMP .EQ. 'GHIJKL') IVCOMP = 1 IF (IVCOMP - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0071 CONTINUE C CT008* TEST 008 **** FCVS PROGRAM 715 **** C C CHARACTER ARRAY ELEMENT REFERENCE IN AN IF STATEMENT C IVTNUM = 8 CVCOMP = ' ' IVCOMP = 0 IVCORR = 1 CVCOMP = 'MNOPQR' IF (CVCOMP.EQ.C2N001(1,2)) IVCOMP = 1 40080 IF (IVCOMP - 1) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 715 **** C C SUBSTRING REFERENCE IN AN ASSIGNMENT STATEMENT C IVTNUM = 9 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'CTER-STRIN' CVCOMP = CVN002(21:30) IF (CVCOMP .EQ. 'CTER-STRIN') IVCOMP = 1 IF (IVCOMP - 1) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 715 **** C C SUBSTRING REFERENCE IN AN IF STATEMENT C IVTNUM = 10 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'A-LONG-CHA' IF (CVCOMP.EQ.CVN002(9:18)) IVCOMP = 1 40100 IF (IVCOMP - 1) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 715 **** C C CHARACTER FUNCTION REFERENCE IN AN ASSIGNMENT STATEMENT C IVTNUM = 11 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'FIRST AID' CVCOMP = CF716(1) IF (CVCOMP .EQ. 'FIRST AID') IVCOMP = 1 IF (IVCOMP - 1) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 715 **** C C CHARACTER FUNCTION REFERENCE IN AN IF STATEMENT C IVTNUM = 12 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'SECONDRATE' IF (CVCOMP.EQ.CF716(2)) IVCOMP = 1 40120 IF (IVCOMP - 1) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C TESTS 13-30 CONCATENATION OPERATIONS C C CT013* TEST 013 **** FCVS PROGRAM 715 **** C C CONCATENATE TWO CHARACTER CONSTANTS IN AN ASSIGNMENT STATEMENT C IVTNUM = 13 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'ABCUVWXYZ' CVCOMP = 'ABC'//'UVWXYZ' IF (CVCOMP .EQ. 'ABCUVWXYZ') IVCOMP = 1 IF (IVCOMP - 1) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 715 **** C C CONCATENATE TWO CHARACTER CONSTANTS IN AN IF STATEMENT C IVTNUM = 14 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'THIS-IS-IT' IF (CVCOMP .EQ.'THIS-I'//'S-IT') IVCOMP = 1 40140 IF (IVCOMP - 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C CT015* TEST 015 **** FCVS PROGRAM 715 **** C C CONCATENATE A SYMBOLIC NAME OF A CHARACTER CONSTANT WITH A LITERAL C STRING IN AN ASSIGNMENT STATEMENT C IVTNUM = 15 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'PQRSTUVWXYZ' CVCOMP = CPN001//'UVWXYZ' IF (CVCOMP .EQ. 'PQRSTUVWXYZ') IVCOMP = 1 IF (IVCOMP - 1) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0151 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 715 **** C C CONCATENATE A SYMBOLIC NAME OF A CHARACTER CONSTANT WITH A LITERAL C STRING IN AN IF STATEMENT C IVTNUM = 16 CVCOMP = ' ' IVCOMP = 0 IVCORR = 1 CVCOMP = 'USEFUL-EXPRESSION' IF (CVCOMP.EQ.'USEFUL-'//CPN002) IVCOMP = 1 40160 IF (IVCOMP - 1) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER VARIABLE WITH A LITERAL STRING IN AN C ASSIGNMENT STATEMENT C IVTNUM = 17 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'ONE+TWO+THREE' CVCOMP = CVN001//'+THREE' IF (CVCOMP .EQ. 'ONE+TWO+THREE') IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0171 CONTINUE C CT018* TEST 018 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER VARIABLE WITH A LITERAL STRING IN AN C IF STATEMENT C IVTNUM = 18 CVCOMP = ' ' IVCOMP = 0 IVCORR = 1 CVCOMP = 'ZERO+ONE+TWO' IF (CVCOMP.EQ.'ZERO+'//CVN001) IVCOMP = 1 40180 IF (IVCOMP - 1) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C CT019* TEST 019 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER ARRAY ELEMENT WITH A LITERAL STRING IN AN C ASSIGNMENT STATEMENT C IVTNUM = 19 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'STUVWXYZ-END' CVCOMP = C2N001(2,2)//'YZ-END' IF (CVCOMP .EQ. 'STUVWXYZ-END') IVCOMP = 1 IF (IVCOMP - 1) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0191 CONTINUE C CT020* TEST 020 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER ARRAY ELEMENT WITH A LITERAL STRING IN AN C IF STATEMENT C IVTNUM = 20 CVCOMP = ' ' IVCOMP = 0 IVCORR = 1 CVCOMP = 'BEGIN-ABCDEF' IF (CVCOMP.EQ.'BEGIN-'//C2N001(1,1)) IVCOMP = 1 40200 IF (IVCOMP - 1) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C CT021* TEST 021 **** FCVS PROGRAM 715 **** C C CONCATENATE SPECIAL CHARACTERS IN AN ASSIGNMENT STATEMENT C IVTNUM = 21 CVCOMP = ' ' IVCOMP = 0 CVCORR = '=+-*/(),.$'':' CVCOMP = '=+-*/('//'),.$'':' IF (CVCOMP .EQ. '=+-*/(),.$'':') IVCOMP = 1 IF (IVCOMP - 1) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0211 CONTINUE C CT022* TEST 022 **** FCVS PROGRAM 715 **** C C CONCATENATE SPECIAL CHARACTERS IN AN IF STATEMENT C IVTNUM = 22 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = '$X=(A/B+C):(-''D'')' IF (CVCOMP.EQ.'$X=(A/'//'B+C):(-''D'')') IVCOMP = 1 40220 IF (IVCOMP - 1) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C TESTS 23-24 - TESTS THE INTRINSIC FUNCTION LEN(E) WHERE THE C ARGUMENT IS A CHARACTER EXPRESSION C C CT023* TEST 023 **** FCVS PROGRAM 715 **** C C IVTNUM = 23 IVCOMP = 0 IVCORR = 15 IVCOMP = LEN(CVN001//'EIGHTEEN') 40230 IF (IVCOMP - 15) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C CT024* TEST 024 **** FCVS PROGRAM 715 **** C C IVTNUM = 24 IVCOMP = 0 IVCORR = 30 IVCOMP = LEN('THIS-IS-A-LITERAL-STRING'//C2N001(1,2)) 40240 IF (IVCOMP - 30) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C CT025* TEST 025 **** FCVS PROGRAM 715 **** C C CONCATENATE A SUBSTRING WITH A LITERAL STRING IN AN ASSIGNMENT C STATEMENT C IVTNUM = 25 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'IS-A-LONG-ARRAY' CVCOMP = CVN002(6:15)//'ARRAY' IF (CVCOMP .EQ. 'IS-A-LONG-ARRAY') IVCOMP = 1 IF (IVCOMP - 1) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0251 CONTINUE C CT026* TEST 026 **** FCVS PROGRAM 715 **** C C CONCATENATE A SUBSTRING WITH A LITERAL STRING IN AN IF C STATEMENT C IVTNUM = 26 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'A-LONG-CHARTER-PLANE' IF (CVCOMP.EQ.CVN002(9:19)//'TER-PLANE') IVCOMP = 1 40260 IF (IVCOMP - 1) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C CT027* TEST 027 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER FUNCTION REFERENCE WITH A LITERAL STRING C IVTNUM = 27 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'THIRDCLASSMAIL' CVCOMP = CF716(3)//'MAIL' IF (CVCOMP .EQ. 'THIRDCLASSMAIL') IVCOMP = 1 IF (IVCOMP - 1) 20270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0271 CONTINUE C CT028* TEST 028 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER ARRAY ELEMENT WITH A CHARACTER FUNCTION RE C IVTNUM = 28 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'MNOPQRFIRST AID' CVCOMP = C2N001(1,2)//CF716(1) IF (CVCOMP .EQ. 'MNOPQRFIRST AID') IVCOMP = 1 IF (IVCOMP - 1) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0281 CONTINUE C CT029* TEST 029 **** FCVS PROGRAM 715 **** C C CONCATENATE A CHARACTER SUBSTRING WITH A CHARACTER FUNCTION REFERE C IVTNUM = 29 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'G-CHARACSECONDRATE' CVCOMP = CVN002(14:21)//CF716(2) IF (CVCOMP .EQ. 'G-CHARACSECONDRATE') IVCOMP = 1 IF (IVCOMP - 1) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0291 CONTINUE C CT030* TEST 030 **** FCVS PROGRAM 715 **** C C CONCATENATIONS ON BOTH SIDES OF ".EQ." IN AN IF STATEMENT C IVTNUM = 30 IVCOMP = 0 IVCORR = 1 CVN002 = 'STTHIRDCLASS' IF (CPN001//CF716(3).EQ.C2N001(1,2)(4:6)//CVN002) IVCOMP = 1 40300 IF (IVCOMP - 1) 20300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C CT031* TEST 031 **** FCVS PROGRAM 715 **** C C CONCATENATE A LITERAL WITH A SYMBOLIC NAME OF A CHARACTER CONSTANT C LENGTH IS SPECIFIED BY AN ASTERISK WITH A LITERAL C IVTNUM = 31 IVCOMP = 0 CVCOMP = ' ' IVCORR = 1 CVCOMP = 'NOW IS THE TIME FOR ALL GOOD MENTO COME TO THE AID OF TH 1EIR PARTY' IF (CVCOMP.EQ.CPN003//'TO COME TO THE AID OF THEIR PARTY') 1 IVCOMP = 1 40310 IF (IVCOMP - 1) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C CT032* TEST 032 **** FCVS PROGRAM 715 **** C C CHARACTER EXPRESSION CONCATENATED WITH CHARACTER PRIMARY C IVTNUM = 32 IVCOMP = 0 CVCOMP = ' ' CVCORR = ' ' IVCORR = 1 CVCOMP = ('ONE'//'TWO')//'THREE' CVCORR = 'ONE'//'TWO'//'THREE' IF (CVCOMP.EQ.CVCORR) IVCOMP = 1 40320 IF (IVCOMP - 1) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C TESTS 33-34 - EVALUATION OF CHARACTER EXPRESSIONS C (PROCESSOR NEEDS TO EVALUATE ONLY AS MUCH OF THE CHARACTER C EXPRESSION AS IS REQUIRED BY THE CONTEXT IN WHICH THE C EXPRESSION APPEARS) C C CT033* TEST 033 **** FCVS PROGRAM 715 **** C C IVTNUM = 33 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'AB' CVN003 = 'ABC' CVCOMP = CVN003 IF (CVCOMP .EQ. 'AB') IVCOMP = 1 IF (IVCOMP - 1) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0331 CONTINUE C CT034* TEST 034 **** FCVS PROGRAM 715 **** C C IVTNUM = 34 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'LO' CVN004 = 'LONG' CVD005 = 'SHORT' CVN003 = CVN004//CF717(CVD005) CVCOMP = CVN003 IF (CVCOMP .EQ. 'LO') IVCOMP = 1 IF (IVCOMP - 1) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0341 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM715) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM715) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *HEADER,FORTR,FM715,SUBRTN,FM716 C THIS FUNCTION SUBPROGRAM IS TO BE RUN WITH ROUTINE 715. C C THIS FUNCTION SUBPROGRAM IS USED TO TEST CHARACTER FUNCTION C REFERENCES IN CHARACTER EXPRESSIONS C CHARACTER*10 FUNCTION CF716(IVD001) IF (IVD001 - 2) 70010, 70020, 70030 70010 CF716 = 'FIRST AID' RETURN 70020 CF716 = 'SECONDRATE' RETURN 70030 CF716 = 'THIRDCLASS' RETURN END *HEADER,FORTR,FM715,SUBRTN,FM717 C THIS FUNCTION SUBPROGRAM IS TO BE RUN WITH ROUTINE 715. C C THIS FUNCTION SUBPROGRAM IS USED TO TEST CHARACTER FUNCTION C REFERENCES IN CHARACTER EXPRESSIONS C CHARACTER*(*) FUNCTION CF717(CVD001) CHARACTER*(*) CVD001 CF717 = CVD001 RETURN END *END-OF,FM715 FM718.f 481036441 170 2 100666 21716 ` *HEADER,FORTR,FM718 *FILES1,FORTR,FM718,X PROGRAM FM718 C C THIS ROUTINE TESTS LOGICAL EXPRESSIONS AND ANS REF. C USE OF THE LOGICAL OPERATORS .NOT., .AND., .OR., 6.4, 6.4.2, C .EQV., AND .NEQV. 6.4.3, 6.4.4 C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C LOGICAL LPN001, LPN002, LPN003, LPN004 LOGICAL LVCOMP, LVCORR, LVN001 PARAMETER (LPN001 = .TRUE., LPN002 = .FALSE., 1 LPN003 = .TRUE., LPN004 = .FALSE.) C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM718' IVTOTL = 29 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C CT001* TEST 001 **** FCVS PROGRAM 718 **** C C LOGICAL EXPRESSION CONTAINING SYMBOLIC NAME OF A LOGICAL CONSTANT C IVTNUM = 1 LVCORR = .TRUE. LVCOMP = LPN001 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0011 CONTINUE C C TESTS 2-3 - TEST LOGICAL EXPRESSIONS INVOLVING .NOT. C C CT002* TEST 002 **** FCVS PROGRAM 718 **** C C IVTNUM = 2 LVCORR = .TRUE. LVCOMP = .NOT..FALSE. IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 718 **** C C IVTNUM = 3 IVCORR = 1 IVCOMP = 0 IF (.NOT. LPN002) IVCOMP = 1 40030 IF (IVCOMP - 1) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C TESTS 4-5 - TEST LOGICAL EXPRESSIONS INVOLVING .AND. C C CT004* TEST 004 **** FCVS PROGRAM 718 **** C C IVTNUM = 4 LVCORR = .TRUE. LVCOMP = .TRUE..AND.LPN003 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 718 **** C C IVTNUM = 5 IVCORR = 1 IVCOMP = 0 IF (LPN003.AND..TRUE.) IVCOMP = 1 40050 IF (IVCOMP - 1) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C TESTS 6-7 - TEST LOGICAL EXPRESSIONS INVOLVING .OR. C C CT006* TEST 006 **** FCVS PROGRAM 718 **** C C IVTNUM = 6 LVCORR = .TRUE. LVCOMP = .TRUE..OR.LPN004 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 718 **** C C IVTNUM = 7 IVCORR = 1 IVCOMP = 0 IF (LPN001.OR..FALSE.) IVCOMP = 1 40070 IF (IVCOMP - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C TESTS 8-9 - TEST LOGICAL EXPRESSIONS INVOLVING .EQV. C C CT008* TEST 008 **** FCVS PROGRAM 718 **** C C IVTNUM = 8 LVCORR = .TRUE. LVCOMP = .FALSE..EQV.LPN002 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 718 **** C C IVTNUM = 9 IVCORR = 1 IVCOMP = 0 IF (LPN003.EQV..TRUE.) IVCOMP = 1 40090 IF (IVCOMP - 1) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C TESTS 10-11 - TEST LOGICAL EXPRESSIONS INVOLVING .NEQV. C C CT010* TEST 010 **** FCVS PROGRAM 718 **** C C IVTNUM = 10 LVCORR = .TRUE. LVCOMP = .FALSE..NEQV.LPN001 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 718 **** C C IVTNUM = 11 IVCORR = 1 IVCOMP = 0 IF (LPN003.NEQV..FALSE.) IVCOMP = 1 40110 IF (IVCOMP - 1) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C TESTS 12-17 - TEST LOGICAL EXPRESSIONS INVOLVING VARIOUS COMBINA- C TIONS OF LOGICAL OPERATORS AND ALSO TEST PRECEDENCE AMONG THE C LOGICAL OPERATORS WITH OR WITHOUT PARENTHESES C C CT012* TEST 012 **** FCVS PROGRAM 718 **** C C IVTNUM = 12 LVCORR = .TRUE. LVN001 = .TRUE. LVCOMP = LVN001.EQV.LPN002.AND..TRUE..NEQV.LPN003 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C CT013* TEST 013 **** FCVS PROGRAM 718 **** C C IVTNUM = 13 LVCORR = .FALSE. LVCOMP = (.TRUE..EQV..FALSE.).AND.(LVN001.NEQV.LPN003) IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 718 **** C C IVTNUM = 14 LVCORR = .TRUE. LVN001 = .FALSE. LVCOMP = LVN001.EQV.LPN002.AND..NOT.LPN001.OR..FALSE. IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C CT015* TEST 015 **** FCVS PROGRAM 718 **** C C IVTNUM = 15 LVCORR = .FALSE. LVCOMP = (LVN001.EQV.LPN002).AND.(.NOT.LPN001.OR..FALSE.) IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 718 **** C C IVTNUM = 16 LVCORR = .TRUE. LVCOMP = LPN001.EQV.LVN001.OR..NOT.LPN003.NEQV..TRUE. IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 718 **** C C IVTNUM = 17 LVCORR = .TRUE. LVCOMP = LPN001.AND.(LVN001.OR..NOT.(LPN002.EQV.(LPN003.NEQV. 1 LPN004))) IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C TESTS 18-21 - TEST LOGICAL EXPRESSIONS INVOLOVING .EQV. C C CT018* TEST 018 **** FCVS PROGRAM 718 **** C C IVTNUM = 18 LVCORR = .TRUE. LVCOMP = LPN001.EQV.LPN003 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C CT019* TEST 019 **** FCVS PROGRAM 718 **** C C IVTNUM = 19 LVCORR = .FALSE. LVCOMP = LPN001.EQV.LPN002 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C CT020* TEST 020 **** FCVS PROGRAM 718 **** C C IVTNUM = 20 LVCORR = .FALSE. LVCOMP = LPN002.EQV.LPN003 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C CT021* TEST 021 **** FCVS PROGRAM 718 **** C C IVTNUM = 21 LVCORR = .TRUE. LVCOMP = LPN002.EQV.LPN004 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C TESTS 22-25 - TEST LOGICAL EXPRESSIONS INVOLVING .NEQV. C C CT022* TEST 022 **** FCVS PROGRAM 718 **** C C IVTNUM = 22 LVCORR = .FALSE. LVCOMP = LPN001.NEQV.LPN003 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C CT023* TEST 023 **** FCVS PROGRAM 718 **** C C IVTNUM = 23 LVCORR = .TRUE. LVCOMP = LPN001.NEQV.LPN002 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C CT024* TEST 024 **** FCVS PROGRAM 718 **** C C IVTNUM = 24 LVCORR = .TRUE. LVCOMP = LPN002.NEQV.LPN003 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C CT025* TEST 025 **** FCVS PROGRAM 718 **** C C IVTNUM = 25 LVCORR = .FALSE. LVCOMP = LPN002.NEQV.LPN004 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C TESTS 26-29 TEST LOGICAL CONSTANT EXPRESSIONS USING SYMBOLIC NAMES C OF LOGICAL CONSTANTS C C CT026* TEST 026 **** FCVS PROGRAM 718 **** C C IVTNUM = 26 LVCORR = .FALSE. LVCOMP = LPN001.EQV.LPN002.NEQV.LPN004 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C CT027* TEST 027 **** FCVS PROGRAM 718 **** C C IVTNUM = 27 LVCORR = .TRUE. LVCOMP = LPN003.NEQV.LPN001.AND.LPN002 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C CT028* TEST 028 **** FCVS PROGRAM 718 **** C C IVTNUM = 28 LVCORR = .FALSE. LVCOMP = (LPN003.NEQV.LPN001).AND.LPN002 IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 0) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C CT029* TEST 029 **** FCVS PROGRAM 718 **** C C IVTNUM = 29 LVCORR = .TRUE. LVCOMP = .NOT.(LPN002.EQV.LPN004.AND.LPN001.OR.LPN003) IVCOMP = 0 IF (LVCOMP) IVCOMP = 1 IF (IVCOMP - 1) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM718) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM718) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *END-OF,FM718 FM719.f 481036446 170 2 100666 17134 ` *HEADER,FORTR,FM719 *FILES1,FORTR,FM719 PROGRAM FM719 C C THIS ROUTINE TESTS DO STATEMENTS USING REAL, ANS REF. C DOUBLE PRECISION, OR MIXED TYPE DO-VARIABLES. 11.10 C ALSO TESTED ARE ACTIVE AND INACTIVE 11.10.2 C DO LOOPS. 11.10.3 C C THIS ROUTINE USES FUNCTION SUBPROGRAM IF720 AND C SUBROUTINE SUBPROGRAM SN721. C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** C DOUBLE PRECISION DVCOMP, DVCORR, DVN001 C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG = 'FM719' IVTOTL = 14 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C CT001* TEST 001 **** FCVS PROGRAM 719 **** C REAL DO-VARIABLE C IVTNUM = 1 RVCOMP = 0.0 RVCORR = 3.0 DO 0010 RVN001 = 1.1, 2.4, 0.5 RVCOMP = RVCOMP + 1.0 0010 CONTINUE IF (RVCOMP - 0.29998E+01) 20010, 10010, 40010 40010 IF (RVCOMP - 0.30002E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 719 **** C DOUBLE PRECISION DO-VARIABLE C IVTNUM = 2 DVCOMP = 0.0D0 DVCORR = 6.0D0 DO 0020 DVN001 = 1.0D-2, 12.0D-2, 2.0D-2 DVCOMP = DVCOMP + 1.0D0 0020 CONTINUE IF (DVCOMP - 0.5999999997D+01) 20020, 10020, 40020 40020 IF (DVCOMP - 0.6000000003D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0021 CONTINUE C C TESTS 3 THRU 10 TEST ACTIVE AND INACTIVE DO-LOOPS C C C CT003* TEST 003 **** FCVS PROGRAM 719 **** C RETURN IS FROM A FUNCTION BACK TO LOOP C IVTNUM = 3 IVCOMP = 0 IVCORR = 9 DO 0032 IVN001 = 1, 3 IVCOMP = IVCOMP + IF720(IVN001) 0032 CONTINUE 40030 IF (IVCOMP - 9) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 719 **** C RETURN IS FROM A SUBROUTINE TO A STATEMENT OUTSIDE LOOP C IVTNUM = 4 IVCOMP = 0 IVCORR = -59 IVN002 = 0 DO 0042 IVN001 = 1, 5 CALL SN721(IVN002,*0043) 0042 CONTINUE 0043 IVCOMP = IVN002 - 60 40040 IF (IVCOMP + 59) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 719 **** C RETURN IS FROM A SUBROUTINE TO A STATEMENT INSIDE LOOP C IVTNUM = 5 IVCOMP = 0 IVCORR = 1 IVN002 = 1 DO 0053 IVN001 = 1, 8 CALL SN721(IVN002,*0052) GO TO 20050 0052 IVN002 = IVN002 - 1 0053 CONTINUE IVCOMP = IVN002 40050 IF (IVCOMP - 1) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT OUTSIDE LOOP C IVTNUM = 6 IVCOMP = 0 IVCORR = -34 IVN002 = -17 DO 0062 IVN001 = 1, 4 CALL EN721(IVN002,*0063) 0062 CONTINUE 0063 IVCOMP = IVN002 40060 IF (IVCOMP + 34) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT INSIDE LOOP C IVTNUM = 7 IVCOMP = 0 IVCORR = 63 IVN002 = 7 DO 0073 IVN001 = 1, 3 CALL EN721(IVN002,*0072) GO TO 20070 0072 IVN002 = IVN002 + 1 0073 CONTINUE IVCOMP = IVN002 40070 IF (IVCOMP - 63) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C CT008* TEST 008 **** FCVS PROGRAM 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT OUTSIDE INNER LOOP OF A C NESTED DO-LOOP C IVTNUM = 8 IVCOMP = 0 IVCORR = 3 IVN003 = 0 DO 0084 IVN001 = 1, 3 IVN003 = IVN003 + 1 DO 0082 IVN002 = IVN001, 4 CALL EN722(1,*0083,*0084) 0082 CONTINUE 0083 IVCOMP = IVN003 0084 CONTINUE 40080 IF (IVCOMP - 3) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT INSIDE INNER LOOP OF A C NESTED DO-LOOP C IVTNUM = 9 IVCOMP = 0 IVCORR = 12 IVN003 = 0 DO 0095 IVN001 = 1, 3 IVN003 = IVN003 + 1 DO 0093 IVN002 = IVN001, IVN001 + 1 CALL EN722(2,*0094,*0092) IVN004 = 10 0092 IVN004 = IVN002*IVN003 0093 CONTINUE 0094 IVCOMP = IVN004 0095 CONTINUE 40090 IF (IVCOMP - 12) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT EITHER INSIDE OR OUTSIDE C INNER LOOP OF A NESTED DO-LOOP C IVTNUM = 10 IVCOMP = 0 IVCORR = 9 IVN003 = 0 IVN004 = 0 DO 0105 IVN001 = 1, 3 IVN003 = IVN003 + 1 IVN005 = (3 + (-1)**IVN001)/2 DO 0103 IVN002 = IVN001, IVN001 + 1 CALL EN722(IVN005,*0104,*0102) IVN004 = 10 0102 IVN004 = IVN004 + IVN002 + IVN003 0103 CONTINUE 0104 IVCOMP = IVN004 0105 CONTINUE 40100 IF (IVCOMP - 9) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C TESTS 11 THRU 14 TEST DO STATEMENTS WITH MIXED INTEGER, REAL, C AND DOUBLE PRECISION. C C C CT011* TEST 011 **** FCVS PROGRAM 719 **** C IVTNUM = 11 IVCOMP = 0 IVCORR = 30 DO 0112 IVN001 = 6.7, 0.9325D+1 IVCOMP = IVCOMP + IVN001 0112 CONTINUE 40110 IF (IVCOMP - 30) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 719 **** C IVTNUM = 12 IVCOMP = 0 IVCORR = -26 DVN001 = 3.54D0 DO 0122 IVN001 = -5.3, 2*(DVN001 - 8), -1.46 IVCOMP = IVCOMP + IVN001 0122 CONTINUE 40120 IF (IVCOMP + 26) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C CT013* TEST 013 **** FCVS PROGRAM 719 **** C IVTNUM = 13 RVCOMP = 0.0 RVCORR = 4.84E-6 IVN001 = 1 DVN001 = 2.0D-7 DO 0132 RVN001 = (IVN001 + .12)*1.0E-6, DVN001*(6 + 0.7), 6.0E-8 RVCOMP = RVCOMP + RVN001 0132 CONTINUE IF (RVCOMP - 0.48397E-05) 20130, 10130, 40130 40130 IF (RVCOMP - 0.48403E-05) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 719 **** C IVTNUM = 14 DVCOMP = 0.0D0 DVCORR = 1.8D3 IVN001 = 1 DO 0142 DVN001 = 2.25E+2, 300*(1.65 + IVN001), 150 DVCOMP = DVCOMP + DVN001 0142 CONTINUE IF (DVCOMP - 0.1799999999D+04) 20140, 10140, 40140 40140 IF (DVCOMP - 0.1800000001D+04) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0141 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM719) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM719) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *HEADER,FORTR,FM719,SUBRTN,FM720 C THIS FUNCTION IS TO BE RUN WITH ROUTINE 719. C C THIS FUNCTION IS REFERENCED IN THE RANGE OF A DO-LOOP TO TEST C LOOP CONTROL PROCESSING. FUNCTION IF720(IVN001) IF720 = 2*IVN001 - 1 RETURN END *HEADER,FORTR,FM719,SUBRTN,FM721 C THIS ROUTINE IS TO BE RUN WITH ROUTINE 719. C C THIS SUBROUTINE IS CALLED IN THE RANGE OF A DO-LOOP TO TEST C ALTERNATE RETURN CONTROL. SUBROUTINE SN721(IVN001,*) IVN001 = IVN001 + 1 RETURN 1 ENTRY EN721(IVN002,*) IVN002 = 2*IVN002 RETURN 1 ENTRY EN722(IVN003,*,*) RETURN IVN003 END *END-OF,FM719 FM722.f 481036450 170 2 100666 18029 ` *HEADER,FORTR,FM722 *FILES1,FORTR,FM722 PROGRAM FM722 C C ************************************************************* C THE FULL LANGUAGE SET ALLOWS DATA TYPES TO BE DECLARED DOUBLE C PRECISION AND COMPLEX. C (FSTC TEST/PROGRAM IDENTIFICATION S04AF-2P) C ************************************************************* C REFERENCES. C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4 DATA TYPES AND CONSTANTS C PARAGRAPHS: C C 4.1 C 4.1.2 C C SECTION 8 SPECIFICATION STATEMENTS C PARAGRAPHS: C 8.4.1 C 8.6 C C TEST DATA TYPES DOUBLE PRECISION AND COMPLEX USING: C C TYP V [,V1] C C TYP = DOUBLE PRECISION OR COMPLEX C V = VARIABLE NAME, ARRAY NAME, ARRAY DECLARATOR, C SYMBOLIC NAME OF A CONSTANT, FUNCTION NAME, C OR DUMMY PROCEDURE NAME C C FM722 USES FUNCTIONS DF723, ZF724 AND SUBROUTINE SN725 C **************************************************************** C CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L) IMPLICIT CHARACTER*27 (C) C CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** DOUBLE PRECISION NVCOMP,DF723 COMPLEX ICP001,I2N002(2),ZF724 REAL R2NN02(2) EQUIVALENCE (ZVCOMP,R2NN02) PARAMETER (DPN001=5.834D6,IPN001=2,DCN004=1.456D3) PARAMETER (ICP001=(3.2, 2.3)) DIMENSION D2N001(IPN001) EXTERNAL DF723,ZF724 COMMON /BVN001/ DVC006 DATA D2N001(1),D2N001(2) / IPN001*DCN004 / DATA I2N002(1),I2N002(2) / IPN001*(3.2, 2.3) / DSN001(DVN003,DVN004) = DVN003 + DVN004 DSN006(DVN007,DVN008) = (DSN001(DVN007,DVN007) + DVN008) ZSN001(RVN001,RVN002) = CMPLX(RVN001,RVN002) + 1CMPLX(RVN002,RVN002) C C CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** ZPROG='FM722' IVTOTL = 12 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C CT001* TEST 001 **** FCVS PROGRAM 722 **** C C TEST 001 IS DESIGNED TO TEST A DOUBLE PRECISION CONSTANT C VALUE SET WITH PARAMETER STATEMENT C IVTNUM = 1 DVCOMP=0.0D0 DVCOMP=DPN001 DVCORR=5.834D6 IF (DPN001 - 5.833999997D6) 20010,10010,40010 40010 IF (DPN001 - 5.834000003D6) 10010,10010,20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 722 **** C C TEST 002 IS DESIGNED TO TEST A DOUBLE PRECISION VARIABLE C IVTNUM = 2 DVCOMP=0.0D0 NVCOMP=.1212345D2 DVCOMP=NVCOMP DVCORR=.1212345D2 IF (NVCOMP - .1212344999D2) 20020,40021,40020 40020 IF (NVCOMP - .1212345001D2) 40021,40021,20020 40021 DVCOMP = DVCOMP + .1212345D2 DVCORR=.2424690D2 IF (DVCOMP - .2424689998D2) 20020,10020,40022 40022 IF (DVCOMP - .2424690002D2) 10020,10020,20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0021 CONTINUE C CT003* TEST 003 **** FCVS PROGRAM 722 **** C C TEST 003 A DOUBLE PRECISION ARRAY C IVTNUM = 3 DVCOMP=0.0D0 DVCORR=2.912D3 DVCOMP=D2N001(1) + D2N001(2) IF (DVCOMP - 2.911999998D3) 20030,10030,40030 40030 IF (DVCOMP - 2.912000002D3) 10030,10030,20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0031 CONTINUE C CT004* TEST 004 **** FCVS PROGRAM 722 **** C C TEST 004 IS DESIGNED TO TEST A DOUBLE PRECISION FUNCTION C DF723 C IVTNUM = 4 DVCOMP=0.0D0 DVN009=.1211D2 DVCOMP=DF723(DVN009) DVCORR=1.001211D4 IF (DVCOMP - 1.001210999D4) 20040,10040,40040 40040 IF (DVCOMP - 1.001211001D4) 10040,10040,20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0041 CONTINUE C CT005* TEST 005 **** FCVS PROGRAM 722 **** C C TEST 005 IS DESIGNED TO TEST A DOUBLE PRECISION DUMMY C PROCEDURE (DF723 USED AS DUMMY ARGUMENT FOR SUBROUTINE C FS528 C IVTNUM = 5 DVCOMP=0.0D0 DVCORR=1200000.0D-2 DVN009=0.0D0 DVN009=10D2 CALL SN725(DF723,DVN009) DVCOMP=DVC006 IF (DVCOMP - .1199999999D5) 20050,10050,40050 40050 IF (DVCOMP - .1200000001D5) 10050,10050,20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0051 CONTINUE C CT006* TEST 006 **** FCVS PROGRAM 722 **** C C TEST 006 DOUBLE PRECISION FUNCTION NAME USING C STATEMENT FUNCTION STATEMENT C IVTNUM = 6 DVCOMP=0.0D0 DVCORR=20D2 DVN009=10D2 DVN010=10D2 DVCOMP=DSN001(DVN009,DVN010) IF (DVCOMP - 19.99999999D2) 20060,10060,40060 40060 IF (DVCOMP - 20.00000001D2) 10060,10060,20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0061 CONTINUE C CT007* TEST 007 **** FCVS PROGRAM 722 **** C C TEST 007 DOUBLE PRECISION FUNCTION NAME USED IN C A STATEMENT FUNCTION STATEMENT AS A DUMMY ARGUMENT C IVTNUM = 7 DVCOMP=0.0D0 DVCORR=30D2 DVN009=10D2 DVN010=10D2 DVCOMP=DSN006(DVN009,DVN010) IF (DVCOMP - 29.99999998D2) 20070,10070,40070 40070 IF (DVCOMP - 30.00000002D2) 10070,10070,20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0071 CONTINUE C C THE FOLLOWING GROUP OF TESTS ARE DESIGNED TO C TEST COMPLEX DATA TYPES C C CT008* TEST 008 **** FCVS PROGRAM 722 **** C C TEST 008 DATA TYPE CAN BE A COMPLEX VARIABLE C IVTNUM = 8 ZVCOMP=(0.0, 0.0) ZVCORR=(1.0, 1.0) ZVN001=(6.5, 2.2) ZVN002=(5.5, 1.2) ZVCOMP=ZVN001-ZVN002 IF (R2NN02(1) - 0.9995) 20080,40081,40080 40080 IF (R2NN02(1) - 1.0001) 40081,40081,20080 40081 IF (R2NN02(2) - 0.9995) 20080,10080,40082 40082 IF (R2NN02(2) - 1.0001) 10080,10080,20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80045) IVTNUM, ZVCOMP, ZVCORR 0081 CONTINUE C CT009* TEST 009 **** FCVS PROGRAM 722 **** C C TEST 009 COMPLEX CONSTANT C IVTNUM = 9 ZVCOMP=(0.0, 0.0) ZVCORR=(6.4, 4.6) ZVCOMP=ICP001+ICP001 IF (R2NN02(1) - 6.3996) 20090,10090,40090 40090 IF (R2NN02(1) - 6.4004) 40091,40091,20090 40091 IF (R2NN02(2) - 4.5997) 20090,10090,40092 40092 IF (R2NN02(2) - 4.6003) 10090,10090,20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80045) IVTNUM, ZVCOMP, ZVCORR 0091 CONTINUE C CT010* TEST 010 **** FCVS PROGRAM 722 **** C C TEST 010 COMPLEX ARRAY C IVTNUM = 10 ZVCOMP=(0.0, 0.0) ZVCORR=(6.4, 4.6) ZVCOMP=I2N002(1)+I2N002(2) IF (R2NN02(1) - 6.3996) 20100,10100,40100 40100 IF (R2NN02(1) - 6.4004) 40101,40101,20100 40101 IF (R2NN02(2) - 4.5997) 20100,10100,40102 40102 IF (R2NN02(2) - 4.6003) 10100,10100,20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80045) IVTNUM, ZVCOMP, ZVCORR 0101 CONTINUE C CT011* TEST 011 **** FCVS PROGRAM 722 **** C C TEST 011 COMPLEX FUNCTION NAME (USING STATEMENT FUNCTION) C FUNCTION NAME CAN BE COMPLEX C IVTNUM = 11 ZVCORR=(3.0, 4.0) ZVCOMP=(0.0, 0.0) RVN004=1.0 RVN005=2.0 ZVCOMP=(ZSN001(RVN004,RVN005)) IF (R2NN02(1) - 2.9998) 20110,10110,40110 40110 IF (R2NN02(1) - 3.0002) 40111,40111,20110 40111 IF (R2NN02(2) - 3.9998) 20110,10110,40112 40112 IF (R2NN02(2) - 4.0002) 10110,10110,20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80045) IVTNUM, ZVCOMP, ZVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 722 **** C C TEST 012 TEST COMPLEX FUNCTION NAME IN A FUNCTION SUBPROGRAM C IVTNUM = 12 ZVCORR=(3.0, 4.0) ZVCOMP=(0.0, 0.0) RVN004=1.0 RVN005=2.0 ZVCOMP=ZF724(RVN004,RVN005) IF (R2NN02(1) - 2.9998) 20120,10120,40120 40120 IF (R2NN02(1) - 3.0002) 40121,40121,20120 40121 IF (R2NN02(2) - 3.9998) 20120,10120,40122 40122 IF (R2NN02(2) - 4.0002) 10120,10120,20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80045) IVTNUM, ZVCOMP, ZVCORR 0121 CONTINUE C CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** 90001 FORMAT (1H ,56X,5HFM722) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM722) CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** END *HEADER,FORTR,FM722,SUBRTN,FM723 DOUBLE PRECISION FUNCTION DF723(DVN008) C THIS FUNCTION IS USED BY PROGRAM FM722 TO TEST C DOUBLE PRECISION FUNCTIONS IMPLICIT DOUBLE PRECISION (D) DF723=DVN008 + 100D2 RETURN END *HEADER,FORTR,FM722,SUBRTN,FM724 COMPLEX FUNCTION ZF724(RVN006,RVN007) C THIS FUNCTION IS USED BY PROGRAM FM722 TO TEST C COMPLEX FUNCTION NAME IMPLICIT COMPLEX (Z) ZF724= CMPLX(RVN006,RVN007) + CMPLX(RVN007,RVN007) RETURN END *HEADER,FORTR,FM722,SUBRTN,FM725 SUBROUTINE SN725(DTINT, DVN008) C THIS ROUTINE IS USED BY PROGRAM FM722 C TO TEST A DOUBLE PRECISION FUNCTION NAME USED AS AN C ACTUAL ARGUMENT IMPLICIT DOUBLE PRECISION (D) COMMON /BVN001/ DVC006 DVC006=DTINT(DVN008) + 10D2 RETURN END *END-OF,FM722 FM800.f 481036454 170 2 100666 13447 ` *HEADER,FORTR,FM800 *FILES1,FORTR,FM800,X C*********************************************************************** C***** FORTRAN 77 C***** FM800 YIDINT - (151) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION IDINT -- 15.3 C***** TRUNCATION (SIGN OF A * LARGEST INTEGER LE ABS(A) ) (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** S P E C I F I C A T I O N S SEGMENT 151 C***** DOUBLE PRECISION DLAVD, DLBVD C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM800' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 151 WRITTEN WRITE (NUVI,15101) 15101 FORMAT (1H , // 1X,35HYIDINT - (151) INTRINSIC FUNCTION--//17X, 1 23HIDINT (TYPE CONVERSION)//17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 DLBVD = 0.0D0 ILAVI = IDINT(DLBVD) IF (ILAVI - 0) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0011 CONTINUE CT002* TEST 2 A VALUE IN (0,1) IVTNUM = 2 DLBVD = 3.57D-1 ILAVI = IDINT(DLBVD) IF (ILAVI - 0) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0021 CONTINUE CT003* TEST 3 THE VALUE ONE IVTNUM = 3 DLBVD = 1.00001D0 ILAVI = IDINT(DLBVD) IF (ILAVI - 1) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0031 CONTINUE CT004* TEST 4 A INTEGRAL VALUE OTHER THAN O, 1 IVTNUM = 4 DLBVD = 6.00001D0 ILAVI = IDINT(DLBVD) IF (ILAVI - 6) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 IVCORR = 6 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0041 CONTINUE CT005* TEST 5 A VALUE IN (X,X+1) IVTNUM = 5 DLBVD = 0.375D1 ILAVI = IDINT(DLBVD) IF (ILAVI - 3) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0051 CONTINUE CT006* TEST 6 A NEGATIVE VALUE WITH MAGNITUDE IN (0,1) IVTNUM = 6 DLBVD = -0.375D0 ILAVI = IDINT(DLBVD) IF (ILAVI - 0) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0061 CONTINUE CT007* TEST 7 THE VALUE -1 IVTNUM = 7 DLBVD = -0.100001D1 ILAVI = IDINT(DLBVD) IF (ILAVI + 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0071 CONTINUE CT008* TEST 8 A NEGATIVE INTEGRAL VALUE IVTNUM = 8 DLBVD = -6.00001D0 ILAVI = IDINT(DLBVD) IF (ILAVI + 6) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0081 CONTINUE CT009* TEST 9 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+1) IVTNUM = 9 DLBVD = -0.375D1 ILAVI = IDINT(DLBVD) IF (ILAVI + 3) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 IVCORR = -3 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0091 CONTINUE CT010* TEST 10 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 10 DLAVD = 0.0D0 ILAVI = IDINT(-DLAVD) IF (ILAVI + 0) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0101 CONTINUE CT011* TEST 11 AN ARITHMETIC EXPRESSION PRESENTED TO IDINT IVTNUM = 11 DLAVD = 0.375D1 DLBVD = 3.5D0 ILAVI = (IDINT(DLAVD + DLBVD * 0.5D1)) IF (ILAVI - 21) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 IVCORR = 21 WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0111 CONTINUE CT012* TEST 12 COMPARE AUTOMATIC TYPE CONVERSION TO EXPLICIT IVTNUM = 12 DLAVD = 3.5D0 ILAVI = IDINT(DLAVD ** 2.5) ILBVI = DLAVD ** 2.5 IF (ILAVI - ILBVI) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 IVCORR = ILBVI WRITE (NUVI, 80010) IVTNUM, ILAVI, IVCORR 0121 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 151 STOP END *END-OF,FM800 FM801.f 481036459 170 2 100666 29712 ` *HEADER,FORTR,FM801 *FILES1,FORTR,FM801,X C*********************************************************************** C***** FORTRAN 77 C***** FM801 YDINT - (155) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTIONS DINT, DNINT, IDNINT 15.3 C***** TRUNCATION (SIGN OF A * LARGEST INTEGER LE ABS(A) ) (TABLE 5) C***** C***** GENERAL COMMENTS C***** FLOAT FUNCTION ASSUMED WORKING C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 155 DOUBLE PRECISION DNAVD, DNBVD, DNDVD C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 45 ZPROG = 'FM801' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 155 WRITE (NUVI,15501) 15501 FORMAT (1H , // 1X,35HYDINT - (155) INTRINSIC FUNCTIONS--//16X, 1 38HDINT, DNINT, IDNINT (TYPE CONVERSION) // 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF DINT C***** WRITE(NUVI, 15502) 15502 FORMAT(// 8X, 12HTEST OF DINT) CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 DNBVD = 0.0D0 DNAVD = DINT(DNBVD) IF (DNAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DNAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0011 CONTINUE CT002* TEST 2 A VALUE IN (0,1) IVTNUM = 2 DNBVD = 0.375D0 DNAVD = DINT(DNBVD) IF (DNAVD + 5.0D-10) 20020, 10020, 40020 40020 IF (DNAVD - 5.0D-10) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0021 CONTINUE CT003* TEST 3 THE VALUE 1 IVTNUM = 3 DNBVD = FLOAT(1) DNAVD = DINT(DNBVD) IF (DNAVD - 0.9999999995D0) 20030, 10030, 40030 40030 IF (DNAVD - 1.000000001D0) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0031 CONTINUE CT004* TEST 4 AN INTEGRAL VALUE OTHER THAN 0, 1 IVTNUM = 4 DNBVD = FLOAT(6) DNAVD = DINT(DNBVD) IF (DNAVD - 5.999999997D0) 20040, 10040, 40040 40040 IF (DNAVD - 6.000000003D0) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 6.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0041 CONTINUE CT005* TEST 5 A VALUE IN (X,X+1) IVTNUM = 5 DNBVD = 0.375D1 DNAVD = DINT(DNBVD) IF (DNAVD - 2.999999998D0) 20050, 10050, 40050 40050 IF (DNAVD - 3.000000002D0) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.3D1 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0051 CONTINUE CT006* TEST 6 A NEGATIVE VALUE WITH MAGNITUDE IN (0,1) IVTNUM = 6 DNBVD = -0.375D0 DNAVD = DINT(DNBVD) IF (DNAVD + 5.0D-10) 20060, 10060, 40060 40060 IF (DNAVD - 5.0D-10) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0061 CONTINUE CT007* TEST 7 THE VALUE -1 IVTNUM = 7 DNBVD = FLOAT(-1) DNAVD = DINT(DNBVD) IF (DNAVD + 1.000000001D0) 20070, 10070, 40070 40070 IF (DNAVD + 0.9999999995D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = -1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0071 CONTINUE CT008* TEST 8 A NEGATIVE INTEGRAL VALUE IVTNUM = 8 DNBVD = FLOAT(-6) DNAVD = DINT(DNBVD) IF (DNAVD + 6.000000003D0) 20080, 10080, 40080 40080 IF (DNAVD + 5.999999997D0) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = -6.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0081 CONTINUE CT009* TEST 9 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+1) IVTNUM = 9 DNBVD = -0.375D1 DNAVD = DINT(DNBVD) IF (DNAVD + 3.000000002D0) 20090, 10090, 40090 40090 IF (DNAVD + 2.999999998D0) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = -0.3D1 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0091 CONTINUE CT010* TEST 10 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 10 DNBVD = 0.0D0 DNAVD = DINT(-DNBVD) IF (DNAVD + 5.0D-10) 20100, 10100, 40100 40100 IF (DNAVD - 5.0D-10) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0101 CONTINUE CT011* TEST 11 AN ARITHMETIC EXPRESSION PRESENTED TO FUNCTION IVTNUM = 11 DNBVD = 0.375D1 DNAVD = DINT(DNBVD/0.375D0) IF (DNAVD - 0.9999999995D1) 20110, 10110, 40110 40110 IF (DNAVD - 1.000000001D1) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 1.0D1 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0111 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TEST OF DNINT C***** WRITE(NUVI, 15504) 15504 FORMAT( // 8X, 13HTEST OF DNINT) CT012* TEST 12 THE VALUE ZERO IVTNUM = 12 DNBVD = 0.0D0 DNAVD = DNINT(DNBVD) IF (DNAVD + 5.0D-10) 20120, 10120, 40120 40120 IF (DNAVD - 5.0D-10) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0121 CONTINUE CT013* TEST 13 A VALUE IN (0,.5) IVTNUM = 13 DNBVD = 0.25D0 DNAVD = DNINT(DNBVD) IF (DNAVD + 5.0D-10) 20130, 10130, 40130 40130 IF (DNAVD - 5.0D-10) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0131 CONTINUE CT014* TEST 14 THE VALUE 0.5 IVTNUM = 14 DNBVD = FLOAT(1) / FLOAT(2) DNAVD = DNINT(DNBVD) IF (DNAVD - 0.9999999995D0) 20140, 10140, 40140 40140 IF (DNAVD - 1.000000001D0) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0141 CONTINUE CT015* TEST 15 A VALUE IN (.5,1) IVTNUM = 15 DNBVD = 0.75D0 DNAVD = DNINT(DNBVD) IF (DNAVD - 0.9999999995D0) 20150, 10150, 40150 40150 IF (DNAVD - 1.000000001D0) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0151 CONTINUE CT016* TEST 16 AN INTEGRAL VALUE OTHER THAN 0, 1 IVTNUM = 16 DNBVD = FLOAT(5) DNAVD = DNINT(DNBVD) IF (DNAVD - 4.999999997D0) 20160, 10160, 40160 40160 IF (DNAVD - 5.000000003D0) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 5.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0161 CONTINUE CT017* TEST 17 A VALUE IN (X,X+.5) IVTNUM = 17 DNBVD = 10.46875D0 DNAVD = DNINT(DNBVD) IF (DNAVD - 9.999999995D0) 20170, 10170, 40170 40170 IF (DNAVD - 10.00000001D0) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = 10.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0171 CONTINUE CT018* TEST 18 A VALUE WITH FRACTIONAL COMPONENT 0.5 IVTNUM = 18 DNBVD = FLOAT(15) + FLOAT(1) / FLOAT(2) DNAVD = DNINT(DNBVD) IF (DNAVD - 15.99999999D0) 20180, 10180, 40180 40180 IF (DNAVD - 16.00000001D0) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 16.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0181 CONTINUE CT019* TEST 19 A VALUE IN (X+.5,X+1) IVTNUM = 19 DNBVD = 27.96875D0 DNAVD = DNINT(DNBVD) IF (DNAVD - 27.99999998D0) 20190, 10190, 40190 40190 IF (DNAVD - 28.00000002D0) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 DVCORR = 28.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0191 CONTINUE CT020* TEST 20 A NEGATIVE VALUE WITH MAGNITUDE IN (0,.5) IVTNUM = 20 DNBVD = -0.25D0 DNAVD = DNINT(DNBVD) IF (DNAVD + 5.0D-10) 20200, 10200, 40200 40200 IF (DNAVD - 5.0D-10) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0201 CONTINUE CT021* TEST 21 THE VALUE -0.5 IVTNUM = 21 DNBVD = -FLOAT(1) / FLOAT(2) DNAVD = DNINT(DNBVD) IF (DNAVD + 1.000000001D0) 20210, 10210, 40210 40210 IF (DNAVD + 0.9999999995D0) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 DVCORR = -1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0211 CONTINUE CT022* TEST 22 A NEGATIVE VALUE WITH MAGNITUDE IN (.5,1) IVTNUM = 22 DNBVD = -0.75D0 DNAVD = DNINT(DNBVD) IF (DNAVD + 1.000000001D0) 20220, 10220, 40220 40220 IF (DNAVD + 0.9999999995D0) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 DVCORR = -1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0221 CONTINUE CT023* TEST 23 A NEGATIVE INTEGRAL VALUE IVTNUM = 23 DNBVD = -FLOAT(5) DNAVD = DNINT(DNBVD) IF (DNAVD + 5.000000003D0) 20230, 10230, 40230 40230 IF (DNAVD + 4.999999997D0) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 DVCORR = -5.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0231 CONTINUE CT024* TEST 24 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+.5) IVTNUM = 24 DNBVD = -10.46875D0 DNAVD = DNINT(DNBVD) IF (DNAVD + 10.00000001D0) 20240, 10240, 40240 40240 IF (DNAVD + 9.999999995D0) 10240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 DVCORR = -10.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0241 CONTINUE CT025* TEST 25 A NEGATIVE VALUE WITH FRACTIONAL COMPONENT 0.5 IVTNUM = 25 DNBVD = FLOAT(-15) - FLOAT(1) / FLOAT(2) DNAVD = DNINT(DNBVD) IF (DNAVD + 16.00000001D0) 20250, 10250, 40250 40250 IF (DNAVD + 15.99999999D0) 10250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 DVCORR = -16.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0251 CONTINUE CT026* TEST 26 A NEGATIVE VALUE WITH MAGNITUDE IN (X+.5,X+1) IVTNUM = 26 DNBVD = -27.96875D0 DNAVD = DNINT(DNBVD) IF (DNAVD + 28.00000002D0) 20260, 10260, 40260 40260 IF (DNAVD + 27.99999998D0) 10260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 DVCORR = -28.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0261 CONTINUE CT027* TEST 27 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 27 DNBVD = 0.0D0 DNAVD = DNINT(-DNBVD) IF (DNAVD + 5.0D-10) 20270, 10270, 40270 40270 IF (DNAVD - 5.0D-10) 10270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0271 CONTINUE CT028* TEST 28 AN ARITHMETIC EXPRESSION PRESENTED TO FUNCTION IVTNUM = 28 DNBVD = 8.00D0 DNDVD = 7.25D0 DNAVD = DNINT(DNBVD - DNDVD) IF (DNAVD - 0.9999999995D0) 20280, 10280, 40280 40280 IF (DNAVD - 1.000000001D0) 10280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DNAVD, DVCORR 0281 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TEST OF IDNINT C***** C***** WRITE(NUVI, 15506) 15506 FORMAT( // 8X, 14HTEST OF IDNINT) CT029* TEST 29 THE VALUE ZERO IVTNUM = 29 DNBVD = 0.0D0 INAVI = IDNINT(DNBVD) IF (INAVI - 0) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0291 CONTINUE CT030* TEST 30 A VALUE IN (0.,5) IVTNUM = 30 DNBVD = 0.25D0 INAVI = IDNINT(DNBVD) IF (INAVI - 0) 20300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0301 CONTINUE CT031* TEST 31 THE VALUE 0.5 IVTNUM = 31 DNBVD = FLOAT(1) / FLOAT(2) INAVI = IDNINT(DNBVD) IF (INAVI - 1) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0311 CONTINUE CT032* TEST 32 A VALUE IN (.5,1) IVTNUM = 32 DNBVD = 0.75D0 INAVI = IDNINT(DNBVD) IF (INAVI - 1) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0321 CONTINUE CT033* TEST 33 AN INTEGRAL VALUE OTHER THAN 0, 1 IVTNUM = 33 DNBVD = FLOAT(5) INAVI = IDNINT(DNBVD) IF (INAVI - 5) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0331 CONTINUE CT034* TEST 34 A VALUE IN (X,X+.5) IVTNUM = 34 DNBVD = 10.46875D0 INAVI = IDNINT(DNBVD) IF (INAVI - 10) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 IVCORR = 10 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0341 CONTINUE CT035* TEST 35 A VALUE WITH FRACTIONAL COMPONENT 0.5 IVTNUM = 35 DNBVD = FLOAT(15) + FLOAT(1) / FLOAT(2) INAVI = IDNINT(DNBVD) IF (INAVI - 16) 20350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 IVCORR = 16 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0351 CONTINUE CT036* TEST 36 A VALUE IN (X+.5,X+1) IVTNUM = 36 DNBVD = 27.96875D0 INAVI = IDNINT(DNBVD) IF (INAVI - 28) 20360, 10360, 20360 10360 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0361 20360 IVFAIL = IVFAIL + 1 IVCORR = 28 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0361 CONTINUE CT037* TEST 37 A NEGATIVE VALUE WITH MAGNITUDE IN (0,.5) IVTNUM = 37 DNBVD = -0.25D0 INAVI = IDNINT(DNBVD) IF (INAVI - 0) 20370, 10370, 20370 10370 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0371 20370 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0371 CONTINUE CT038* TEST 38 THE VALUE -0.5 IVTNUM = 38 DNBVD = -FLOAT(1) / FLOAT(2) INAVI = IDNINT(DNBVD) IF (INAVI + 1) 20380, 10380, 20380 10380 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0381 20380 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0381 CONTINUE CT039* TEST 39 A NEGATIVE VALUE WITH MAGNITUDE IN (.5,1) IVTNUM = 39 DNBVD = -0.75D0 INAVI = IDNINT(DNBVD) IF (INAVI + 1) 20390, 10390, 20390 10390 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0391 20390 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0391 CONTINUE CT040* TEST 40 A NEGATIVE INTEGRAL VALUE IVTNUM = 40 DNBVD = -FLOAT(5) INAVI = IDNINT(DNBVD) IF (INAVI + 5) 20400, 10400, 20400 10400 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0401 20400 IVFAIL = IVFAIL + 1 IVCORR = -5 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0401 CONTINUE CT041* TEST 41 A NEGATIVE VALUE WITH MAGNITUDE IN (X,X+.5) IVTNUM = 41 DNBVD = -10.46875D0 INAVI = IDNINT(DNBVD) IF (INAVI + 10) 20410, 10410, 20410 10410 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0411 20410 IVFAIL = IVFAIL + 1 IVCORR = -10 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0411 CONTINUE CT042* TEST 42 A NEGATIVE VALUE WITH FRACTIONAL COMPONENT 0.5 IVTNUM = 42 DNBVD = FLOAT(-15) - FLOAT(1) /FLOAT(2) INAVI = IDNINT(DNBVD) IF (INAVI + 16) 20420, 10420, 20420 10420 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0421 20420 IVFAIL = IVFAIL + 1 IVCORR = -16 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0421 CONTINUE CT043* TEST 43 A NEGATIVE VALUE WITH MAGNITUDE IN (X+.5,X+1) IVTNUM = 43 DNBVD = -27.96875D0 INAVI = IDNINT(DNBVD) IF (INAVI + 28) 20430, 10430, 20430 10430 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0431 20430 IVFAIL = IVFAIL + 1 IVCORR = -28 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0431 CONTINUE CT044* TEST 44 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 44 DNBVD = 0.0D0 INAVI = IDNINT(-DNBVD) IF (INAVI - 0) 20440, 10440, 20440 10440 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0441 20440 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0441 CONTINUE CT045* TEST 45 AN ARITHMETIC EXPRESSION PRESENTED TO FUNCTION IVTNUM = 45 DNBVD = 8.00D0 DNDVD = 7.25D0 INAVI = IDNINT(DNBVD - DNDVD) IF (INAVI - 1) 20450, 10450, 20450 10450 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0451 20450 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, INAVI, IVCORR 0451 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 155 STOP END *END-OF,FM801 FM802.f 481036463 170 2 100666 11385 ` *HEADER,FORTR,FM802 *FILES1,FORTR,FM802,X C*********************************************************************** C***** FORTRAN 77 C***** FM802 YDABS - (157) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DABS (ABSOLUTE VALUE OF 15.3 C***** A DOUBLE PRECISION ARGUMENT) (TABLE 5) CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 157 DOUBLE PRECISION DOAVD, DOBVD, DODVD, DOEVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 6 ZPROG = 'FM802' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 157 WRITTEN WRITE (NUVI,15701) 15701 FORMAT (1H //1X,34HYDABS - (157) INTRINSIC FUNCTION--//16X, 1 23HDABS (ABSOLUTE VALUE ) // 2X, 2 15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 DOBVD = 0.0D0 DOAVD = DABS(DOBVD) IF (DOAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DOAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE(NUVI, 80031) IVTNUM, DOAVD, DVCORR 0011 CONTINUE CT002* TEST 2 ZERO PREFIXED WITH A MINUS SIGN IVTNUM = 2 DOBVD = 0.0D0 DOAVD = DABS(-DOBVD) IF (DOAVD + 5.0D-10) 20020, 10020, 40020 40020 IF (DOAVD - 5.0D-10) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D1 WRITE(NUVI, 80031) IVTNUM, DOAVD, DVCORR 0021 CONTINUE CT003* TEST 3 A POSITIVE NON-INTEGRAL VALUE IVTNUM = 3 DOBVD = 0.35875D2 DOAVD = DABS(DOBVD) IF (DOAVD - 0.3587499998D2) 20030, 10030, 40030 40030 IF (DOAVD - 0.3587500002D2) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.35875D2 WRITE(NUVI, 80031) IVTNUM, DOAVD, DVCORR 0031 CONTINUE CT004* TEST 4 A NEGATIVE NON-INTEGRAL VALUE IVTNUM = 4 DOBVD = -0.35875D2 DOAVD = DABS(DOBVD) IF (DOAVD - 0.3587499998D2) 20040, 10040, 40040 40040 IF (DOAVD - 0.3587500002D2) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.35875D2 WRITE(NUVI, 80031) IVTNUM, DOAVD, DVCORR 0041 CONTINUE CT005* TEST 5 A POSITIVE INTEGRAL VALUE IVTNUM = 5 DOBVD = 7.0D1 DOAVD = DABS(DOBVD) IF (DOAVD - 6.999999996D1) 20050, 10050, 40050 40050 IF (DOAVD - 7.000000004D1) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 7.0D1 WRITE(NUVI, 80031) IVTNUM, DOAVD, DVCORR 0051 CONTINUE CT006* TEST 6 ARITHMETIC EXPRESSION PRESENTED TO FUNCTION IVTNUM = 6 DODVD = 2.625D0 DOEVD = 3.0D0 DOAVD = DABS((-DODVD) - DOEVD ** 3) IF (DOAVD - 29.62499998D0) 20060, 10060, 40060 40060 IF (DOAVD - 29.62500002D0) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 29.625D0 WRITE(NUVI, 80031) IVTNUM, DOAVD, DVCORR 0061 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 157 STOP END *END-OF,FM802 FM803.f 481036466 170 2 100666 12505 ` *HEADER,FORTR,FM803 *FILES1,FORTR,FM803,X C*********************************************************************** C***** FORTRAN 77 C***** FM803 YCABS - (158) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION CABS (ABSOLUTE VALUE OF 15.3 C***** A COMPLEX ARGUMENT) (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 158 COMPLEX CPAVC C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 9 ZPROG = 'FM803' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 158 WRITTEN WRITE (NUVI,15801) 15801 FORMAT (1H , //1X,34HYCABS - (158) INTRINSIC FUNCTION--//16X, 1 21HCABS (ABSOLUTE VALUE)//2X, 2 15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 COMPLEX VALUE ZERO (0,0) IVTNUM = 1 RPAVS = CABS((0.0, 0.0)) IF (RPAVS + .00005) 20010, 10010, 40010 40010 IF (RPAVS - .00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RPAVS, RVCORR 0011 CONTINUE CT002* TEST 2 COMPLEX VALUE HAVING ONLY REAL COMPONENT IVTNUM = 2 RPAVS = CABS((3.0, 0.0)) IF (RPAVS - 2.9998) 20020, 10020, 40020 40020 IF (RPAVS - 3.0002) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0021 CONTINUE CT003* TEST 3 COMPLEX VALUE HAVING ONLY IMAGINARY COMPONENT IVTNUM = 3 RPAVS = CABS((0.0, 3.0)) IF (RPAVS - 2.9998) 20030, 10030, 40030 40030 IF (RPAVS - 3.0002) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0031 CONTINUE CT004* TEST 4 ARBITRARY COMPLEX VALUE IVTNUM = 4 RPAVS = CABS((3.0, 4.0)) IF (RPAVS - 4.9997) 20040, 10040, 40040 40040 IF (RPAVS - 5.0003) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 5.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0041 CONTINUE CT005* TEST 5 NEGATIVE REAL COMPONENT, NO IMAGINARY COMPONENT IVTNUM = 5 RPAVS = CABS((-3.0, 0.0)) IF (RPAVS - 2.9998) 20050, 10050, 40050 40050 IF (RPAVS - 3.0002) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0051 CONTINUE CT006* TEST 6 NO REAL COMPONENT, NEGATIVE IMAGINARY COMPONENT IVTNUM = 6 RPAVS = CABS((0.0, -3.0)) IF (RPAVS - 2.9998) 20060, 10060, 40060 40060 IF (RPAVS - 3.0002) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 3.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0061 CONTINUE CT007* TEST 7 ARBITRARY COMPLEX VALUE WITH NEGATIVE COMPONENTS IVTNUM = 7 RPAVS = CABS((-3.0, -4.0)) IF (RPAVS - 4.9997) 20070, 10070, 40070 40070 IF (RPAVS - 5.0003) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 5.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0071 CONTINUE CT008* TEST 8 COMPLEX VALUE ZERO PRECEDED BY MINUS SIGN IVTNUM = 8 CPAVC = (0.0, 0.0) RPAVS = CABS(-CPAVC) IF (RPAVS + 0.00005) 20080, 10080, 40080 40080 IF (RPAVS - 0.00005) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0081 CONTINUE CT009* TEST 9 COMPLEX EXPRESSION PRESENTED AS ARGUMENT IVTNUM = 9 CPAVC = (3.0, 4.0) RPAVS = CABS(CPAVC - (3.0, 4.0)) IF (RPAVS + 0.00005) 20090, 10090, 40090 40090 IF (RPAVS - 0.00005) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE(NUVI, 80012) IVTNUM, RPAVS, RVCORR 0091 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 158 STOP END *END-OF,FM803 FM804.f 481036469 170 2 100666 14080 ` *HEADER,FORTR,FM804 *FILES1,FORTR,FM804,X C*********************************************************************** C***** FORTRAN 77 C***** FM804 YDMOD - (160) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TO TEST INTRINSIC FUNCTION - DMOD - 15.3 C***** (REMAINDERING -TYPE DOUBLE PRECISION) (TABLE 5) CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 160 C***** DOUBLE PRECISION DQAVD, DQBVD, DQDVD, DQEVD, DQFVD C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 11 ZPROG = 'FM804' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 160 WRITE (NUVI, 16001) 16001 FORMAT( 1H , //35H YDMOD - (160) INTRINSIC FUNCTION--// 1 16X,19HDMOD (REMAINDERING) // 2 19H ANS REF. - 15.3 ) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 FIRST VALUE ZERO, SECOND NON-ZERO IVTNUM = 1 DQBVD = 0.0D0 DQDVD = 4.5D0 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DQAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0011 CONTINUE CT002* TEST 2 BOTH VALUES EQUAL IVTNUM = 2 DQBVD = 0.35D1 DQDVD = 0.35D1 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 5.0D-10) 20020, 10020, 40020 40020 IF (DQAVD - 5.0D-10) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0021 CONTINUE CT003* TEST 3 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 3 DQBVD = -0.10D2 DQDVD = -0.3D1 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 1.000000001D0) 20030, 10030, 40030 40030 IF (DQAVD + 0.9999999995D0) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = -1.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0031 CONTINUE CT004* TEST 4 FIRST MAGNITUDE LARGER, MULTIPLE OF SECOND IVTNUM = 4 DQDVD = 1.5D0 DQBVD = 1.5D0 + DQDVD + 1.5D0 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 5.0D-10) 20040, 10040, 40040 40040 IF (DQAVD - 5.0D-10) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0041 CONTINUE CT005* TEST 5 FIRST MAGNITUDE LARGER, NOT MULTIPLE OF SECOND IVTNUM = 5 DQBVD = 7.625D0 DQDVD = 2.125D0 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD - 1.249999999D0) 20050, 10050, 40050 40050 IF (DQAVD - 1.250000001D0) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 1.25D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE ZERO, SECOND NEGATIVE IVTNUM = 6 DQBVD = 0.0D0 DQDVD = -0.45D1 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 5.0D-10) 20060, 10060, 40060 40060 IF (DQAVD - 5.0D-10) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0061 CONTINUE CT007* TEST 7 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 7 DQBVD = -3.5D1 DQDVD = -3.5D1 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 5.0D-10) 20070, 10070, 40070 40070 IF (DQAVD - 5.0D-10) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0071 CONTINUE CT008* TEST 8 FIRST MAGNITUDE LARGER, MULIPLES, BOTH NEGATIVE IVTNUM = 8 DQDVD = 3.5D0 DQBVD = -(3.5D0 + DQDVD + 3.5D0) DQAVD = DMOD(DQBVD, -DQDVD) IF (DQAVD + 5.0D-10) 20080, 10080, 40080 40080 IF (DQAVD - 5.0D-10) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0081 CONTINUE CT009* TEST 9 FIRST VALUE POSITIVE, SECOND NEGATIVE, MULTIPLE IVTNUM = 9 DQBVD = 10.5D0 DQDVD = -3.5D0 DQAVD = DMOD(DQBVD, DQDVD) IF (DQAVD + 5.0D-10) 20090, 10090, 40090 40090 IF (DQAVD - 5.0D-10) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0091 CONTINUE CT010* TEST 10 FIRST VALUE ZERO PRECEDED BY MINUS SIGN IVTNUM = 10 DQDVD = 0.0D0 DQEVD = 4.5D0 DQAVD = DMOD(-DQDVD, DQEVD) IF (DQAVD + 5.0D-10) 20100, 10100, 40100 40100 IF (DQAVD - 5.0D-10) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0101 CONTINUE CT011* TEST 11 PAIR OF ARITHMETIC EXPRESSIONS USED AS ARGUMENT IVTNUM = 11 DQDVD = 0.7625D1 DQEVD = 0.2125D1 DQFVD = 0.2D1 DQAVD = DMOD(DQDVD - DQFVD, DQEVD + DQFVD) IF (DQAVD - 0.1499999999D1) 20110, 10110, 40110 40110 IF (DQAVD - 0.1500000001D1) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.15D1 WRITE (NUVI, 80031) IVTNUM, DQAVD, DVCORR 0111 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 160 STOP END *END-OF,FM804 FM805.f 481036474 170 2 100666 18605 ` *HEADER,FORTR,FM805 *FILES1,FORTR,FM805,X C*********************************************************************** C***** FORTRAN 77 C***** FM805 YDDIM - (164) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DDIM AND PROD--POSITIVE 15.3 C***** DIFFERENCE AND DOUBLE PRECISION PRODUCT, RESP. (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 164 DOUBLE PRECISION DSAVD, DSBVD, DSDVD, DSEVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 18 ZPROG = 'FM805' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 164 WRITE (NUVI,16401) 16401 FORMAT (1H ,// 1X,36HYDDIM - (164) INTRINSIC FUNCTIONS-- //16X, 1 26HDDIM (POSITIVE DIFFERENCE)/,16X, 2 20HDPROD (D.P. PRODUCT)// 3 2X,15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF DDIM C***** WRITE(NUVI, 16402) 16402 FORMAT(/ 8X, 12HTEST OF DDIM) CT001* TEST 1 BOTH VALUES EQUAL IVTNUM = 1 DSBVD = 0.25D0 DSDVD = 0.25D0 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DSAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0011 CONTINUE CT002* TEST 2 BOTH VALUES EQUAL, INTEGRAL VALUES IVTNUM = 2 DSBVD = 2.0D0 DSDVD = 2.0D0 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20020, 10020, 40020 40020 IF (DSAVD - 5.0D-10) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0021 CONTINUE CT003* TEST 3 FIRST VALUE LESS THAN SECOND IVTNUM = 3 DSBVD = 0.25D1 DSDVD = 0.55D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20030, 10030, 40030 40030 IF (DSAVD - 5.0D-10) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0031 CONTINUE CT004* TEST 4 FIRST VALUE GREATER THAN SECOND IVTNUM = 4 DSBVD = 0.55D1 DSDVD = 0.25D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD - 2.999999998D0) 20040, 10040, 40040 40040 IF (DSAVD - 3.000000002D0) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 3.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0041 CONTINUE CT005* TEST 5 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 5 DSBVD = -0.25D1 DSDVD = -0.25D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD + 5.0D-10) 20050, 10050, 40050 40050 IF (DSAVD - 5.0D-10) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE GREATER THAN SECOND, BOTH NEGATIVE IVTNUM = 6 DSBVD = -0.25D1 DSDVD = -0.55D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD - 2.999999998D0) 20060, 10060, 40060 40060 IF (DSAVD - 3.000000002D0) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 3.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0061 CONTINUE CT007* TEST 7 FIRST VALUE POSITIVE, SECOND NEGATIVE IVTNUM = 7 DSBVD = 0.55D1 DSDVD = -0.25D1 DSAVD = DDIM(DSBVD, DSDVD) IF (DSAVD - 7.999999996D0) 20070, 10070, 40070 40070 IF (DSAVD - 8.000000004D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 8.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0071 CONTINUE CT008* TEST 8 ARITHMETIC EXPRESSION PRESENTED TO DDIM IVTNUM = 8 DSDVD = 0.25D1 DSEVD = 0.125D1 DSAVD = DDIM(DSDVD / DSEVD, DSDVD * DSEVD) IF (DSAVD + 5.0D-10) 20080, 10080, 40080 40080 IF (DSAVD - 5.0D-10) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DSAVD, DVCORR 0081 CONTINUE C***** C***** TEST OF DPROD C***** WRITE(NUVI, 16404) REMRKS = '+ OR - 0.00005' 16404 FORMAT(// 8X, 13HTEST OF DPROD) CT009* TEST 9 PAIR OF VALUES, ONE OF WHICH IS ZERO IVTNUM = 9 RSAVS = 0.0 RSBVS = 2.0 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 5.0D-5) 20090, 10090, 40090 40090 IF (DSAVD - 5.0D-5) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0091 CONTINUE CT010* TEST 10 PAIR OF VALUES, ONE OF WHICH IS ONE IVTNUM = 10 RSAVS = 1.0 RSBVS = 2.0 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 1.9999D0) 20100, 10100, 40100 40100 IF (DSAVD - 2.0001D0) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 2.0D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0101 CONTINUE CT011* TEST 11 PAIR OF NON-ZERO VALUES IVTNUM = 11 RSAVS = 3.333333 RSBVS = 2.3948094 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 7.9823D0) 20110, 10110, 40110 40110 IF (DSAVD - 7.9831D0) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 7.982697202D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0111 CONTINUE CT012* TEST 12 ONE POSITIVE, ONE NEGATIVE IVTNUM = 12 RSAVS = 0.123456 RSBVS = -2.98765 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 3.6887D-1) 20120, 10120, 40120 40120 IF (DSAVD + 3.6882D-1) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -3.688433184D-1 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0121 CONTINUE CT013* TEST 13 ONE VALUE ONE(1), ONE NEGATIVE IVTNUM = 13 RSAVS = 1.0834001 RSBVS = -2.034985 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 2.2049D0) 20130, 10130, 40130 40130 IF (DSAVD + 2.2045D0) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = -2.204702953D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0131 CONTINUE CT014* TEST 14 PAIR OF NEGATIVE VALUES IVTNUM = 14 RSAVS = -3.077734 RSBVS = -2.348343 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 7.2272D0) 20140, 10140, 40140 40140 IF (DSAVD - 7.2280D0) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 7.227575095D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0141 CONTINUE CT015* TEST 15 ONE POSITIVE VALUE, ONE NEGATIVE VALUE IVTNUM = 15 RSAVS = 3.3333324 RSBVS = -2.343953 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD + 7.8136D0) 20150, 10150, 40150 40150 IF (DSAVD + 7.8127D0) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = -7.813174479D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0151 CONTINUE CT016* TEST 16 ARITHMETIC EXPRESSION PRESENTED TO DPROD IVTNUM = 16 RSAVS = 1.555674 RSBVS = 2.00012 DSAVD = DPROD(RSAVS - RSBVS, RSAVS + RSBVS) IF (DSAVD + 1.5805D0) 20160, 10160, 40160 40160 IF (DSAVD + 1.5802D0) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = -1.580358420D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0161 CONTINUE CT017* TEST 17 DPROD FORMS THE ARGUMENTS TO DDIM IVTNUM = 17 DSAVD = DDIM(DPROD(0.4, 2.0), DPROD(3.0, 0.1)) IF (DSAVD - 0.49997D0) 20170, 10170, 40170 40170 IF (DSAVD - 0.50003D0) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = 0.5D0 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0171 CONTINUE CT018* TEST 18 ARGUMENTS WITH HIGH AND LOW MAGNITUDES IVTNUM = 18 RSAVS = 1.23456E-33 RSBVS = 1.23456E+34 DSAVD = DPROD(RSAVS, RSBVS) IF (DSAVD - 1.5240D1) 20180, 10180, 40180 40180 IF (DSAVD - 1.5242D1) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 1.524138394D1 WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 80033) DSAVD WRITE (NUVI, 80035) DVCORR, REMRKS 0181 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 164 STOP END *END-OF,FM805 FM806.f 481036477 170 2 100666 14750 ` *HEADER,FORTR,FM806 *FILES1,FORTR,FM806,X C*********************************************************************** C***** FORTRAN 77 C***** FM806 YDMAX1 - (166) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST OF INTRINSIC FUNCTION -- 15.3 C***** DMAX1 -- CHOOSING LARGEST VALUE (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** S P E C I F I C A T I O N S SEGMENT 166 DOUBLE PRECISION DTAVD, DTBVD, DTCVD, DTDVD, DTEVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM806' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE (NUVI,16601) 16601 FORMAT (1H , // 1X,36HYDMAX1 - (166) INTRINSIC FUNCTION-- //17X, 1 31HDMAX1 (CHOOSING LARGEST VALUE)//2X, 2 15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 BOTH ZEROES IVTNUM = 1 DTBVD = 0.0D0 DTDVD = 0.0D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DTAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0011 CONTINUE CT002* TEST 2 ONE NON-ZERO, ONE ZERO IVTNUM = 2 DTBVD = 5.625D0 DTDVD = 0.0D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD - 5.624999997D0) 20020, 10020, 40020 40020 IF (DTAVD - 5.625000003D0) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 5.625D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0021 CONTINUE CT003* TEST 3 BOTH VALUES EQUAL IVTNUM = 3 DTBVD = 6.5D0 DTDVD = 6.5D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD - 6.499999996D0) 20030, 10030, 40030 40030 IF (DTAVD - 6.500000004D0) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 6.5D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0031 CONTINUE CT004* TEST 4 VALUES NOT EQUAL IVTNUM = 4 DTBVD = 7.125D0 DTDVD = 5.125D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD - 7.124999996D0) 20040, 10040, 40040 40040 IF (DTAVD - 7.125000004D0) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 7.125D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0041 CONTINUE CT005* TEST 5 ONE VALUE ZERO, ONE NEGATIVE IVTNUM = 5 DTBVD = -5.625D0 DTDVD = 0.0D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD + 5.0D-10) 20050, 10050, 40050 40050 IF (DTAVD - 5.0D-10) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0051 CONTINUE CT006* TEST 6 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 6 DTBVD = -6.5D0 DTDVD = -6.5D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD + 6.500000004D0) 20060, 10060, 40060 40060 IF (DTAVD + 6.499999996D0) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -6.5D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0061 CONTINUE CT007* TEST 7 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 7 DTBVD = -7.125D0 DTDVD = -5.125D0 DTAVD = DMAX1(DTBVD, DTDVD) IF (DTAVD + 5.125000003D0) 20070, 10070, 40070 40070 IF (DTAVD + 5.124999997D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = -5.125D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0071 CONTINUE CT008* TEST 8 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 8 DTDVD = 5.625D0 DTEVD = 0.0D0 DTAVD = DMAX1(DTDVD, -DTEVD) IF (DTAVD - 5.624999997D0) 20080, 10080, 40080 40080 IF (DTAVD - 5.625000003D0) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 5.625D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0081 CONTINUE CT009* TEST 9 ARITHMETIC EXPRESSIONS PRESENTED TO FUNCTION IVTNUM = 9 DTDVD = 3.5D0 DTEVD = 4.0D0 DTAVD = DMAX1(DTDVD + DTEVD, -DTEVD - DTDVD) IF (DTAVD - 7.499999996D0) 20090, 10090, 40090 40090 IF (DTAVD - 7.500000004D0) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 7.5D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0091 CONTINUE CT010* TEST 10 3 ARGUMENTS IVTNUM = 10 DTBVD = 0.0D0 DTCVD = -1.99D0 DTAVD = DMAX1(DTCVD, DTBVD, -DTCVD) IF (DTAVD - 1.98999999D0) 20100, 10100, 40100 40100 IF (DTAVD - 1.99000001D0) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 1.99D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0101 CONTINUE CT011* TEST 11 4 ARGUMENTS IVTNUM = 11 C***** ARGUMENTS OF HIGH AND LOW MAGNITUDES DTAVD = 1.0D-34 DTBVD = -1.0D-34 DTCVD = 1.0D+34 DTAVD = DMAX1(DTAVD, DTBVD, DTCVD, -DTCVD) IF (DTAVD - 0.9999999995D34) 20110, 10110, 40110 40110 IF (DTAVD - 1.000000001D34) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 1.0D+34 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0111 CONTINUE CT012* TEST 12 5 ARGUMENTS IVTNUM = 12 DTDVD = 3.5D0 DTEVD = 4.5D0 DTAVD = DMAX1(DTDVD, -DTDVD, -DTEVD, +DTDVD, DTEVD) IF (DTAVD - 4.499999997D0) 20120, 10120, 40120 40120 IF (DTAVD - 4.500000003D0) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 4.5D0 WRITE (NUVI, 80031) IVTNUM, DTAVD, DVCORR 0121 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 166 STOP END *END-OF,FM806 FM807.f 481036481 170 2 100666 14749 ` *HEADER,FORTR,FM807 *FILES1,FORTR,FM807,X C*********************************************************************** C***** FORTRAN 77 C***** FM807 YDMIN1 - (168) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST OF INTRINSIC FUNCTION -- 15.3 C***** DMIN1 -- CHOOSING SMALLEST VALUE (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** S P E C I F I C A T I O N S SEGMENT 168 DOUBLE PRECISION DUAVD, DUBVD, DUCVD, DUDVD, DUEVD, DVCORR CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM807' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** WRITE (NUVI,16801) 16801 FORMAT (1H , // 1X,36HYDMIN1 - (168) INTRINSIC FUNCTION-- //17X, 1 33HDMIN1 (CHOOSING SMALLEST VALUE) //2X, 2 15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 BOTH VALUES EQUAL IVTNUM = 1 DUBVD = 0.0D0 DUDVD = 0.0D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD + 5.0D-10) 20010, 10010, 40010 40010 IF (DUAVD - 5.0D-10) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0011 CONTINUE CT002* TEST 2 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 2 DUBVD = 5.625D0 DUDVD = 0.0D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD + 5.0D-10) 20020, 10020, 40020 40020 IF (DUAVD - 5.0D-10) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0021 CONTINUE CT003* TEST 3 BOTH VALUES EQUAL IVTNUM = 3 DUBVD = 6.5D0 DUDVD = 6.5D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD - 6.499999996D0) 20030, 10030, 40030 40030 IF (DUAVD - 6.500000004D0) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 6.5D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0031 CONTINUE CT004* TEST 4 VALUES NOT EQUAL IVTNUM = 4 DUBVD = 7.125D0 DUDVD = 5.125D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD - 5.124999997D0) 20040, 10040, 40040 40040 IF (DUAVD - 5.125000003D0) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 5.125D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0041 CONTINUE CT005* TEST 5 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 5 DUBVD = -5.625D0 DUDVD = 0.0D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD + 5.625000003D0) 20050, 10050, 40050 40050 IF (DUAVD + 5.624999997D0) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = -5.625D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0051 CONTINUE CT006* TEST 6 BOTH VALUES EQUAL, BOTH NEGATIVE IVTNUM = 6 DUBVD = -6.5D0 DUDVD = -6.5D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD + 6.500000004D0) 20060, 10060, 40060 40060 IF (DUAVD + 6.499999996D0) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -6.5D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0061 CONTINUE CT007* TEST 7 VALUES NOT EQUAL, BOTH NEGATIVE IVTNUM = 7 DUBVD = -7.125D0 DUDVD = -5.125D0 DUAVD = DMIN1(DUBVD, DUDVD) IF (DUAVD + 7.125000004D0) 20070, 10070, 40070 40070 IF (DUAVD + 7.124999996D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = -7.125D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0071 CONTINUE CT008* TEST 8 1ST VALUE NON-ZERO, 2ND ZERO PRECEDED BY MINUS SIGN IVTNUM = 8 DUDVD = 5.625D0 DUEVD = 0.0D0 DUAVD = DMIN1(DUDVD, -DUEVD) IF (DUAVD + 5.0D-10) 20080, 10080, 40080 40080 IF (DUAVD - 5.0D-10) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0081 CONTINUE CT009* TEST 9 ARITHMETIC EXPRESSIONS PRESENTED TO FUNCTION IVTNUM = 9 DUDVD = 3.5D0 DUEVD = 4.0D0 DUAVD = DMIN1(DUDVD + DUEVD, -DUEVD - DUDVD) IF (DUAVD + 7.500000004D0) 20090, 10090, 40090 40090 IF (DUAVD + 7.499999996D0) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = -7.5D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0091 CONTINUE CT010* TEST 10 3 ARGUMENTS IVTNUM = 10 DUBVD = 0.0D0 DUCVD = 1.0D0 DUDVD = 2.0D0 DUAVD = DMIN1(DUBVD, DUCVD, DUDVD) IF (DUAVD + 5.0D-10) 20100, 10100, 40100 40100 IF (DUAVD - 5.0D-10) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0101 CONTINUE CT011* TEST 11 4 ARGUMENTS IVTNUM = 11 C***** ARGUMENTS OF HIGH AND LOW MAGNITUDES DUAVD = 1.0D+14 DUBVD = -1.0D+14 DUCVD = 1.0D-14 DUAVD = DMIN1(DUAVD, DUBVD, DUCVD, -DUCVD) IF (DUAVD + 1.000000001D14) 20110, 10110, 40110 40110 IF (DUAVD + 0.9999999995D14) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = -1.0D14 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0111 CONTINUE CT012* TEST 12 5 ARGUMENTS IVTNUM = 12 DUDVD = 3.5D0 DUEVD = 4.5D0 DUAVD = DMIN1(DUDVD, -DUDVD, -DUEVD, +DUDVD, DUEVD) IF (DUAVD + 4.500000003D0) 20120, 10120, 40120 40120 IF (DUAVD + 4.499999997D0) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -4.5D0 WRITE (NUVI, 80031) IVTNUM, DUAVD, DVCORR 0121 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 168 STOP END *END-OF,FM807 FM808.f 481036484 170 2 100666 12246 ` *HEADER,FORTR,FM808 *FILES1,FORTR,FM808,X C*********************************************************************** C***** FORTRAN 77 C***** FM808 YDBLE - (169) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DBLE (EXPRESS S.P. ARGUMENT 15.3 C***** IN DOUBLE PRECISION FORM ) (TABLE 5) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 169 DOUBLE PRECISION DVAVD, DVBVD, DVCORR, DVAVD1 C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 8 ZPROG = 'FM808' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE (NUVI,16901) 16901 FORMAT(1H ,//1X,34HYDBLE - (169) INTRINSIC FUNCTION--// 1 16X,22HDBLE (TYPE CONVERSION)// 2X, 2 15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 THE VALUE ZERO IVTNUM = 1 RVAVS = 0.0 DVAVD = DBLE(RVAVS) IF (DVAVD + 5.0D-5) 20010, 10010, 40010 40010 IF (DVAVD - 5.0D-5) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0011 CONTINUE CT002* TEST 2 A D.P. CONSTANT WITH 6 SIGNIFICANT DIGITS IVTNUM = 2 RVAVS = 0.015625 DVAVD = DBLE(RVAVS) IF (DVAVD - 1.5624D-2) 20020, 10020, 40020 40020 IF (DVAVD - 1.5626D-2) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 1.5625D-2 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0021 CONTINUE CT003* TEST 3 A NEGATIVE INTEGRAL VALUE IVTNUM = 3 RVAVS = -321.0 DVAVD = DBLE(RVAVS) IF (DVAVD + 3.2102D2) 20030, 10030, 40030 40030 IF (DVAVD + 3.2098D2) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = -3.210D2 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0031 CONTINUE CT004* TEST 4 A NEGATIVE D.P. CONSTANT WITH 6 SIGNIFICANT DIGITS IVTNUM = 4 RVAVS = -0.015625 DVAVD = DBLE(RVAVS) IF (DVAVD + 1.5626D-2) 20040, 10040, 40040 40040 IF (DVAVD + 1.5624D-2) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = -0.015625D0 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0041 CONTINUE CT005* TEST 5 THE VALUE ZERO PRECEDED BY A MINUS SIGN IVTNUM = 5 RVAVS = 0.0 DVAVD = DBLE(-RVAVS) IF (DVAVD + 5.0D-5) 20050, 10050, 40050 40050 IF (DVAVD - 5.0D-5) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = -0.0D0 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0051 CONTINUE CT006* TEST 6 A POSITIVE INTEGRAL VALUE IVTNUM = 6 RVAVS = 321.0 DVAVD = DBLE(RVAVS) IF (DVAVD - 3.2098D2) 20060, 10060, 40060 40060 IF (DVAVD - 3.2102D2) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 3.21D2 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0061 CONTINUE CT007* TEST 7 AN ARITHMETIC EXPRESSION IS USED AS ARGUMENT IVTNUM = 7 RVAVS = 6.25 RVBVS = 2.5 DVAVD = DBLE(RVBVS ** 2) IF (DVAVD - 6.2496D0) 20070, 10070, 40070 40070 IF (DVAVD - 6.2504D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 6.25D0 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0071 CONTINUE CT008* TEST 8 COMPARE AUTOMATIC TYPE CONVERSION TO EXPLICIT IVTNUM = 8 RVBVS = 2.5 DVBVD = RVBVS ** 3 DVAVD = DBLE(RVBVS ** 3) IF (DVAVD - 1.5624D1) 20080, 10080, 40080 40080 IF (DVAVD - 1.5626D1) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 1.5625D1 WRITE (NUVI, 80031) IVTNUM, DVAVD, DVCORR 0081 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 169 STOP END *END-OF,FM808 FM809.f 481036489 170 2 100666 23021 ` *HEADER,FORTR,FM809 *FILES1,FORTR,FM809,X C*********************************************************************** C***** FORTRAN 77 C***** FM809 YCONJG - (170) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION CMPLX (CONVERT TO COMPLEX), 15.3 C***** AIMAG (IMAGINARY PART), AND CONJG (CONJUGATE) (TABLE 5) C***** C***** S P E C I F I C A T I O N S SEGMENT 170 CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** COMPLEX CWAVC, CWBVC, CWDVC, CWEVC, ZVCORR REAL R2E(2) EQUIVALENCE (CWAVC,R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 25 ZPROG = 'FM809' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 170 WRITTEN WRITE (NUVI,17001) 17001 FORMAT(1H , //1X,35HYCONJG - (170) INTRINSIC FUNCTION--//17X, 1 27HCMPLX (CONVERT TO COMPLEX),/17X, 2 19HAIMAG (IMAG. PART),/17X, 3 17HCONJG (CONJUGATE)//,2X, 4 15HANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST OF CMPLX C***** WRITE(NUVI, 17002) 17002 FORMAT(/ 8X, 13HTEST OF CMPLX) CT001* TEST 1 PAIR OF ZEROES IVTNUM = 1 RWBVS = 0.0 RWDVS = 0.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) + 0.00005) 20010, 40012, 40011 40011 IF (R2E(1) - 0.00005) 40012, 40012, 20010 40012 IF (R2E(2) + 0.00005) 20010, 10010, 40010 40010 IF (R2E(2) - 0.00005) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (0.0 , 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0011 CONTINUE CT002* TEST 2 FIRST VALUE NON-ZERO, SECOND ZERO IVTNUM = 2 RWBVS = 3.0 RWDVS = 0.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) - 2.9998) 20020, 40022, 40021 40021 IF (R2E(1) - 3.0002) 40022, 40022, 20020 40022 IF (R2E(2) + 0.00005) 20020, 10020, 40020 40020 IF (R2E(2) - 0.00005) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 ZVCORR = (3.0 , 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0021 CONTINUE CT003* TEST 3 FIRST VALUE ZERO, SECOND NON-ZERO IVTNUM = 3 RWBVS = 0.0 RWDVS = 4.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) + 0.00005) 20030, 40032, 40031 40031 IF (R2E(1) - 0.00005) 40032, 40032, 20030 40032 IF (R2E(2) - 3.9998) 20030, 10030, 40030 40030 IF (R2E(2) - 4.0002) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 ZVCORR = (0.0 , 4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0031 CONTINUE CT004* TEST 4 PAIR OF NON-ZERO VALUES IVTNUM = 4 RWBVS = 3.0 RWDVS = 4.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) - 2.9998) 20040, 40042, 40041 40041 IF (R2E(1) - 3.0002) 40042, 40042, 20040 40042 IF (R2E(2) - 3.9998) 20040, 10040, 40040 40040 IF (R2E(2) - 4.0002) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 ZVCORR = (3.0 , 4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0041 CONTINUE CT005* TEST 5 FIRST VALUE NEGATIVE, SECOND ZERO IVTNUM = 5 RWBVS = -3.0 RWDVS = 0.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) + 3.0002) 20050, 40052, 40051 40051 IF (R2E(1) + 2.9998) 40052, 40052, 20050 40052 IF (R2E(2) + 0.00005) 20050, 10050, 40050 40050 IF (R2E(2) - 0.00005) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (-3.0, 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0051 CONTINUE CT006* TEST 6 FIRST VALUE ZERO, SECOND NEGATIVE IVTNUM = 6 RWBVS = 0.0 RWDVS = -4.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) + 0.00005) 20060, 40062, 40061 40061 IF (R2E(1) - 0.00005) 40062, 40062, 20060 40062 IF (R2E(2) + 4.0002) 20060, 10060, 40060 40060 IF (R2E(2) + 3.9998) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (0.0, -4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0061 CONTINUE CT007* TEST 7 PAIR OF NEGATIVE VALUES IVTNUM = 7 RWBVS = -3.0 RWDVS = -4.0 CWAVC = CMPLX(RWBVS, RWDVS) IF (R2E(1) + 3.0002) 20070, 40072, 40071 40071 IF (R2E(1) + 2.9998) 40072, 40072, 20070 40072 IF (R2E(2) + 4.0002) 20070, 10070, 40070 40070 IF (R2E(2) + 3.9998) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (-3.0, -4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0071 CONTINUE CT008* TEST 8 FIRST VALUE PRECEDED BY A MINUS SIGN IVTNUM = 8 RWAVS = 3.0 RWBVS = 0.0 CWAVC = CMPLX(-RWAVS, RWBVS) IF (R2E(1) + 3.0002) 20080, 40082, 40081 40081 IF (R2E(1) + 2.9998) 40082, 40082, 20080 40082 IF (R2E(2) + 0.00005) 20080, 10080, 40080 40080 IF (R2E(2) - 0.00005) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (-3.0, 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0081 CONTINUE CT009* TEST 9 ONE ARGUMENT A CONSTANT, OTHER A VARIABLE IVTNUM = 9 RWAVS = 4.0 CWAVC = CMPLX(0.0, RWAVS) IF (R2E(1) + 0.00005) 20090, 40092, 40091 40091 IF (R2E(1) - 0.00005) 40092, 40092, 20090 40092 IF (R2E(2) - 3.9998) 20090, 10090, 40090 40090 IF (R2E(2) - 4.0002) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = (0.0, 4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0091 CONTINUE CT010* TEST 10 PAIR OF ARITHMETIC EXPRESSIONS USED AS ARGUMENT IVTNUM = 10 RWAVS = 1.5 RWBVS = 2.0 RWCVS = 3.5 CWAVC = CMPLX((RWCVS + RWAVS)/ RWBVS, (RWCVS - RWAVS) / RWBVS) IF (R2E(1) - 2.4998) 20100, 40102, 40101 40101 IF (R2E(1) - 2.5002) 40102, 40102, 20100 40102 IF (R2E(2) - 0.99995) 20100, 10100, 40100 40100 IF (R2E(2) - 1.0001) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 ZVCORR = (2.5, 1.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0101 CONTINUE C***** WRITE(NUVI, 90002) WRITE(NUVI, 90013) WRITE(NUVI, 90014) C***** C***** TEST OF AIMAG C***** WRITE(NUVI, 17004) 17004 FORMAT(/ 8X, 13HTEST OF AIMAG) CT011* TEST 11 THE COMPLEX VALUE ZERO (0,0) IVTNUM = 11 RWAVS = AIMAG((0.0, 0.0)) IF (RWAVS + 0.00005) 20110, 10110, 40110 40110 IF (RWAVS - 0.00005) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0111 CONTINUE CT012* TEST 12 COMPLEX VALUE HAVING ONLY A REAL COMPONENT IVTNUM = 12 RWAVS = AIMAG((3.0, 0.0)) IF (RWAVS + 0.00005) 20120, 10120, 40120 40120 IF (RWAVS - 0.00005) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0121 CONTINUE CT013* TEST 13 ARBITRARY COMPLEX VALUE IVTNUM = 13 RWAVS = AIMAG((3.0, 4.0)) IF (RWAVS - 3.9998) 20130, 10130, 40130 40130 IF (RWAVS - 4.0002) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 RVCORR = 4.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0131 CONTINUE CT014* TEST 14 IMAGINARY COMPONENT A ZERO PRECEDED BY MINUS SIGN IVTNUM = 14 RWAVS = AIMAG((-3.0, -0.0)) IF (RWAVS + 0.00005) 20140, 10140, 40140 40140 IF (RWAVS - 0.00005) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0141 CONTINUE CT015* TEST 15 ARBITRARY COMPLEX VALUE WITH NEGATIVE COMPONENTS IVTNUM = 15 RWAVS = AIMAG((-3.0, -4.0)) IF (RWAVS + 4.0002) 20150, 10150, 40150 40150 IF (RWAVS + 3.9998) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = -4.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0151 CONTINUE CT016* TEST 16 COMPLEX VALUE ZERO (0,0) PRECEDED BY MINUS SIGN IVTNUM = 16 CWDVC = (0.0, 0.0) RWAVS = AIMAG(-CWDVC) IF (RWAVS + 0.00005) 20160, 10160, 40160 40160 IF (RWAVS - 0.00005) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 RVCORR = 0.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0161 CONTINUE CT017* TEST 17 ARGUMENT IS A COMPLEX EXPRESSION IVTNUM = 17 CWDVC = (3.5, 4.5) CWEVC = (4.0, 5.0) RWAVS = AIMAG(CWDVC - CWEVC) IF (RWAVS + 0.50003) 20170, 10170, 40170 40170 IF (RWAVS + 0.49997) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 RVCORR = -0.5 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0171 CONTINUE CT018* TEST 18 CONJG FORMS ARGUMENT TO AIMAG IVTNUM = 18 CWDVC = (3.0, 4.0) RWAVS = AIMAG(CONJG(CWDVC)) IF (RWAVS + 4.0002) 20180, 10180, 40180 40180 IF (RWAVS + 3.9998) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = -4.0 WRITE (NUVI, 80012) IVTNUM, RWAVS, RVCORR 0181 CONTINUE C***** WRITE(NUVI, 90002) WRITE(NUVI, 90013) WRITE(NUVI, 90014) C***** C***** TEST OF CONJG C***** WRITE (NUVI,17006) 17006 FORMAT (/ 8X, 13HTEST OF CONJG) CT019* TEST 19 COMPLEX VALUE ZERO (0,0) IVTNUM = 19 CWAVC = CONJG((0.0, 0.0)) IF (R2E(1) + 0.00005) 20190, 40192, 40191 40191 IF (R2E(1) - 0.00005) 40192, 40192, 20190 40192 IF (R2E(2) + 0.00005) 20190, 10190, 40190 40190 IF (R2E(2) - 0.00005) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 ZVCORR = (0.0, 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0191 CONTINUE CT020* TEST 20 COMPLEX VALUE HAVING ONLY REAL COMPONENT IVTNUM = 20 CWAVC = CONJG((3.0, 0.0)) IF (R2E(1) - 2.9998) 20200, 40202, 40201 40201 IF (R2E(1) - 3.0002) 40202, 40202, 20200 40202 IF (R2E(2) + 0.00005) 20200, 10200, 40200 40200 IF (R2E(2) - 0.00005) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 ZVCORR = (3.0, 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0201 CONTINUE CT021* TEST 21 ARBITRARY COMPLEX VALUE IVTNUM = 21 CWAVC = CONJG((3.0, 4.0)) IF (R2E(1) - 2.9998) 20210, 40212, 40211 40211 IF (R2E(1) - 3.0002) 40212, 40212, 20210 40212 IF (R2E(2) + 4.0002) 20210, 10210, 40210 40210 IF (R2E(2) + 3.9998) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 ZVCORR = (3.0, -4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0211 CONTINUE CWBVC = (3.0, -4.0) CT022* TEST 22 SECOND ARGUMENT IS A ZERO PRECEDED BY MINUS SIGN IVTNUM = 22 CWAVC = CONJG((-3.0, -0.0)) IF (R2E(1) + 3.0002) 20220, 40222, 40221 40221 IF (R2E(1) + 2.9998) 40222, 40222, 20220 40222 IF (R2E(2) + 0.00005) 20220, 10220, 40220 40220 IF (R2E(2) - 0.00005) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 ZVCORR = (-3.0, 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0221 CONTINUE CT023* TEST 23 ABITRARY COMPLEX VALUE WITH NEGATIVE COMPONENTS IVTNUM = 23 CWAVC = CONJG((-3.0, -4.0)) IF (R2E(1) + 3.0002) 20230, 40232, 40231 40231 IF (R2E(1) + 2.9998) 40232, 40232, 20230 40232 IF (R2E(2) - 3.9998) 20230, 10230, 40230 40230 IF (R2E(2) - 4.0002) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 ZVCORR = (-3.0, 4.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0231 CONTINUE CWBVC = (-3.0, 4.0) CT024* TEST 24 COMPLEX ZERO PRECEDED BY A MINUS SIGN IVTNUM = 24 CWDVC = (0.0, 0.0) CWAVC = CONJG(-CWDVC) IF (R2E(1) + 0.00005) 20240, 40242, 40241 40241 IF (R2E(1) - 0.00005) 40242, 40242, 20240 40242 IF (R2E(2) + 0.00005) 20240, 10240, 40240 40240 IF (R2E(2) - 0.00005) 10240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 ZVCORR = (0.0, 0.0) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0241 CONTINUE CT025* TEST 25 COMPLEX EXPRESSION PRESENTED AS ARGUMENT IVTNUM = 25 CWDVC = (3.5, 4.5) CWEVC = (4.0, 5.0) CWAVC = CONJG(CWDVC - CWEVC) IF (R2E(1) + 0.50003) 20250, 40252, 40251 40251 IF (R2E(1) + 0.49997) 40252, 40252, 20250 40252 IF (R2E(2) - 0.49997) 20250, 10250, 40250 40250 IF (R2E(2) - 0.50003) 10250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 ZVCORR = (-0.5, 0.5) WRITE (NUVI, 80045) IVTNUM, CWAVC, ZVCORR 0251 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 170 STOP END *END-OF,FM809 FM810.f 481036504 170 2 100666 13579 ` *HEADER,FORTR,FM810 *FILES1,FORTR,FM810,X C*********************************************************************** C***** FORTRAN 77 C***** FM810 YDMMX - (173) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TESTS THE USE OF INTEGER, REAL, DOUBLE PRECISION, 15.3 C***** AND MIXED MODE EXPRESSIONS CONTAINING REFERENCES TO 15.10 C***** THE INTRINSIC FUNCTIONS OF THE FULL LANGUAGE 6.1.4 C***** C***** GENERAL COMMENTS C***** SEGMENTS TESTING XINT, XREAL, XAINT, XABS, XAMOD, C***** XSIGN, XDIM, XMAX, XMIN, YIDINT, YSNGL C***** YDINT, YDABS, YCABS, YDMOD, YDSIGN, C***** YDMAX1, YDMIN1, YDBLE, YCONJG ASSUMED WORKING CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 173 DOUBLE PRECISION DXAVD,DXBVD,DXDVD,DXEVD,DXFVD,DXGVD,DVCORR CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 10 ZPROG = 'FM810' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** C***** HEADER FOR SEGMENT 173 WRITTEN WRITE (NUVI,17301) 17301 FORMAT(1H , //1X, 35HYDMMX - (173) INTRINSIC FUNCTIONS--// 1 16X, 22HINTEGER, REAL AND D.P./, 2 16X, 26HAND MIXED MODE EXPRESSIONS// 3 2X, 29HANS REF. - 15.3, 15.10, 6.1.4) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 IVTNUM = 1 DXBVD = 3.5D0 IXAVI = IDINT(DXBVD) + 2 IF (IXAVI - 5) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, IXAVI, IVCORR 0011 CONTINUE CT002* TEST 2 IVTNUM = 2 DXBVD = 5.25D0 RXAVS = SNGL(DXBVD) * 3.0 IF (RXAVS - 15.749) 20020, 10020, 40020 40020 IF (RXAVS - 15.751) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 15.75 WRITE (NUVI, 80012) IVTNUM, RXAVS, RVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 DXBVD = 3.2D0 DXAVD = DINT(DXBVD) ** 2.0 IF (DXAVD - 8.999999995D0) 20030, 10030, 40030 40030 IF (DXAVD - 9.000000005D0) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 9.0D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 DXBVD = 3.2D0 DXAVD = DNINT(DXBVD) + 2.5 IF (DXAVD - 5.499999997D0) 20040, 10040, 40040 40040 IF (DXAVD - 5.500000003D0) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 5.5D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 DXBVD = 3.5D0 RXAVS = IDINT(DXBVD) * 2.5 IF (RXAVS - 7.4996) 20050, 10050, 40050 40050 IF (RXAVS - 7.5004) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 7.5 WRITE (NUVI, 80012) IVTNUM, RXAVS, RVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 DXBVD = -2.5D0 DXAVD = DABS(DXBVD) * 2 IF (DXAVD - 4.999999997D0) 20060, 10060, 40060 40060 IF (DXAVD - 5.000000003D0) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 5.0D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 DXBVD = 5.0D0 DXDVD = 2.0D0 DXEVD = 3.0D0 DXFVD = -1.0D0 DXAVD = DMOD(DXBVD, DXDVD) * 3 + DSIGN(DXEVD, DXFVD) IF (DXAVD + 5.0D-10) 20070, 10070, 40070 40070 IF (DXAVD - 5.0D-10) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.0D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 DXBVD = 1.5D1 DXDVD = 0.5D1 RXBVS = 5.0 RXDVS = 2.0 DXAVD = DDIM(DXBVD, DXDVD) / DPROD(RXBVS, RXDVS) IF (DXAVD - 0.9999999995D0) 20080, 10080, 40080 40080 IF (DXAVD - 1.000000001D0) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 DXBVD = 5.5D0 DXDVD = 2.5D0 DXEVD = 1.0D0 RXBVS = 1.0 DXAVD = (10 - DMAX1(DXBVD, DXDVD)) * (DMIN1(DXEVD, DXDVD) 1 + DBLE(RXBVS)) IF (DXAVD - 8.999999995D0) 20090, 10090, 40090 40090 IF (DXAVD - 9.000000005D0) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 9.0D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 DXBVD = 0.635D2 RXBVS = 5.0 DXDVD = 5.7D0 DXEVD = -6.0D0 DXFVD = 1.0D0 DXGVD = 3.0D0 DXAVD = (IDINT(DXBVD) + 1.0) / (7 - DBLE(RXBVS)) - 1 (DINT(DXDVD) + 5 + 5.5) * (DSIGN(DXEVD, DXFVD) / 2 SNGL(DXGVD)) IF (DXAVD - 0.9999999995D0) 20100, 10100, 40100 40100 IF (DXAVD - 1.000000001D0) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DXAVD, DVCORR 0101 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 173 STOP END *END-OF,FM810 FM811.f 481036513 170 2 100666 14773 ` *HEADER,FORTR,FM811 *FILES1,FORTR,FM811,X C*********************************************************************** C***** FORTRAN 77 C***** FM811 YCMMX - (174) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TESTS THE USE OF INTEGER, REAL, DOUBLE PRECISION, 15.10 C***** AND COMPLEX EXPRESSIONS CONTAINING REFERENCE (TABLE 5) C***** TO THE INTRINSIC FUNCTIONS OF THE FULL LANGUAGE 6.1.4 C***** C***** GENERAL COMMENTS C***** SEGMENTS TESTING XINT, XREAL, XAINT, XABS, XAMOD, C***** XSIGN, XDIM, XMAX, XMIN, YIDINT, YSNGL C***** YDINT, YDABS, YCABS, YDMOD, YDSIGN, C***** YDMAX1, YDMIN1, YDBLE, YCONJG ASSUMED WORKING C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 174 DOUBLE PRECISION DYAVD, DYBVD, DYDVD, DVCORR COMPLEX CYAVC, CYDVC, ZVCORR REAL R2E(2) EQUIVALENCE (CYAVC,R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 10 ZPROG = 'FM811' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 174 WRITTEN WRITE (NUVI,17401) 17401 FORMAT( 1H , //1X, 35HYCMMX - (174) INTRINSIC FUNCTIONS--// 1 16X, 19HINTEGER, REAL, D.P./ 2 16X, 37HAND COMPLEX IN MIXED MODE EXPRESSIONS// 3 2X, 16HANS REF. - 15.10) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 IDINT IVTNUM = 1 DYBVD = 5.2D0 CYAVC = IDINT(DYBVD) + (1.0, 2.0) IF (R2E(1) - 5.9997) 20010, 40012, 40011 40011 IF (R2E(1) - 6.0003) 40012, 40012, 20010 40012 IF (R2E(2) - 1.9999) 20010, 10010, 40010 40010 IF (R2E(2) - 2.0001) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (6.0, 2.0) WRITE (NUVI, 80045) IVTNUM, CYAVC, ZVCORR 0011 CONTINUE CT002* TEST 2 SNGL IVTNUM = 2 DYAVD = 5.5D0 CYAVC = SNGL(DYAVD) - (3.0, 4.0) IF (R2E(1) - 2.4998) 20020, 40022, 40021 40021 IF (R2E(1) - 2.5002) 40022, 40022, 20020 40022 IF (R2E(2) + 4.0002) 20020, 10020, 40020 40020 IF (R2E(2) + 3.9998) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 ZVCORR = (2.5, -4.0) WRITE (NUVI, 80045) IVTNUM, CYAVC, ZVCORR 0021 CONTINUE CT003* TEST 3 SNGL, DINT, DNINT, CABS IVTNUM = 3 DYBVD = 5.8D0 RYAVS = SNGL(DINT(DYBVD) + DNINT(DYBVD)) * CABS((3.0, 4.0)) IF (RYAVS - 54.997) 20030, 10030, 40030 40030 IF (RYAVS - 55.003) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = 55.0 WRITE (NUVI, 80012) IVTNUM, RYAVS, RVCORR 0031 CONTINUE CT004* TEST 4 IDNINT, AIMAG IVTNUM = 4 CYDVC = (3.0, 4.0) DYBVD = 5.8D0 CYAVC = ((IDNINT(DYBVD) - CYDVC)) * AIMAG((4.0, 3.0)) IF (R2E(1) - 8.9995) 20040, 40042, 40041 40041 IF (R2E(1) - 9.0005) 40042, 40042, 20040 40042 IF (R2E(2) + 12.001) 20040, 10040, 40040 40040 IF (R2E(2) + 11.999) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 ZVCORR = (9.0, -12.0) WRITE (NUVI, 80045) IVTNUM, CYAVC, ZVCORR 0041 CONTINUE CT005* TEST 5 CABS, CMPLX IVTNUM = 5 IYAVI = 5 RYAVS = CABS(CMPLX(3.0, 4.0)) / IYAVI IF (RYAVS - 0.99995) 20050, 10050, 40050 40050 IF (RYAVS - 1.0001) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 1.0 WRITE (NUVI, 80012) IVTNUM, RYAVS, RVCORR 0051 CONTINUE CT006* TEST 6 CONJG, SNGL, DMOD IVTNUM = 6 DYBVD = 5.0D0 DYDVD = 3.0D0 CYAVC = CONJG((3.0, 4.0)) * SNGL(DMOD(DYBVD, DYDVD)) IF (R2E(1) - 5.9997) 20060, 40062, 40061 40061 IF (R2E(1) - 6.0003) 40062, 40062, 20060 40062 IF (R2E(2) + 8.0004) 20060, 10060, 40060 40060 IF (R2E(2) + 7.9996) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (6.0, -8.0) WRITE (NUVI, 80045) IVTNUM, CYAVC, ZVCORR 0061 CONTINUE CT007* TEST 7 DSIGN, AIMAG, CONJG IVTNUM = 7 CYDVC = (-3.0, -4.0) DYBVD = 4.0D0 DYDVD = 1.0D0 DYAVD = DSIGN(DYBVD, DYDVD) / AIMAG(CONJG(CYDVC)) IF (DYAVD - 0.9999999995D0) 20070, 10070, 40070 40070 IF (DYAVD - 1.000000001D0) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, DYAVD, DVCORR 0071 CONTINUE CT008* TEST 8 DPROD, CABS, AIMAG, SNGL, DDIM IVTNUM = 8 CYDVC = (3.0, 4.0) DYBVD = -7.0D0 DYDVD = 3.0D0 DYAVD = DPROD(CABS(CYDVC + (-3.0, 3.0)), 1 AIMAG(CYDVC) + (SNGL(DDIM(DYBVD, DYDVD)))) IF (DYAVD - 27.99999998D0) 20080, 10080, 40080 40080 IF (DYAVD - 28.00000002D0) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 28.0D0 WRITE (NUVI, 80031) IVTNUM, DYAVD, DVCORR 0081 CONTINUE CT009* TEST 9 AMAX1, CABS, AIMAG IVTNUM = 9 CYDVC = (3.0, 4.0) DYAVD = AMAX1(CABS(CYDVC), AIMAG(CYDVC * CYDVC)) IF (DYAVD - 23.99999998D0) 20090, 10090, 40090 40090 IF (DYAVD - 24.00000002D0) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 24.0D0 WRITE (NUVI, 80031) IVTNUM, DYAVD, DVCORR 0091 CONTINUE CT010* TEST 10 AIMAG, ABS, AMIN0 IVTNUM = 10 CYDVC = (3.0, -3.) IYBVI = 4 IYDVI = -3 CYAVC = ((3.0, 4.0) + AIMAG((3.0, 4.0))) * 1 (ABS(AMIN0(IYBVI, IYDVI)) - CYDVC) IF (R2E(1) + 12.001) 20100, 40102, 40101 40101 IF (R2E(1) + 11.999) 40102, 40102, 20100 40102 IF (R2E(2) - 20.999) 20100, 10100, 40100 40100 IF (R2E(2) - 21.001) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 ZVCORR = (-12.0, 21.0) WRITE (NUVI, 80045) IVTNUM, CYAVC, ZVCORR 0101 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 174 STOP END *END-OF,FM811 FM812.f 481036517 170 2 100666 14803 ` *HEADER,FORTR,FM812 *FILES1,FORTR,FM812,X C*********************************************************************** C***** FORTRAN 77 C***** FM812 C***** YDSQRT - (176) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DSQRT 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** S P E C I F I C A T I O N S SEGMENT 176 DOUBLE PRECISION AVD, BVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 13 ZPROG = 'FM812' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 176 WRITE(NUVI,17600) 17600 FORMAT(1H , / 36H YDSQRT - (176) INTRINSIC FUNCTIONS// 1 38H DSQRT (DOUBLE PRECISION SQUARE ROOT)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 FIXED POINT OF FUNCTION IVTNUM = 1 BVD = 0.0D0 AVD = DSQRT(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 FIXED POINT OF FUNCTION IVTNUM = 2 AVD = DSQRT(1.0D0) IF (AVD - 0.9999999995D+00) 20020, 10020, 40020 40020 IF (AVD - 0.1000000001D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 CONSTANT OF VALUE 2.0D0 IVTNUM = 3 AVD = DSQRT(2.0D0) IF (AVD - 0.1414213561D+01) 20030, 10030, 40030 40030 IF (AVD - 0.1414213563D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 1.4142135623730950488D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 CONSTANT OF VALUE 4.0D0 IVTNUM = 4 AVD = DSQRT(4.0D0) IF (AVD - 0.1999999999D+01) 20040, 10040, 40040 40040 IF (AVD - 0.2000000001D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 2.0000000000000000000D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 CONSTANT OF VALUE 15.0D0 IVTNUM = 5 AVD = DSQRT(15.0D0) IF (AVD - 0.3872983344D+01) 20050, 10050, 40050 40050 IF (AVD - 0.3872983348D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 3.8729833462074168852D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 CONSTANT OF VALUE 31.0D0 IVTNUM = 6 AVD = DSQRT(31.0D0) IF (AVD - 0.5567764360D+01) 20060, 10060, 40060 40060 IF (AVD - 0.5567764366D+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 5.5677643628300219221D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 VARIABLE PRESENTED TO DSQRT IVTNUM = 7 BVD = 2.0D0 / 4.0D0 AVD = DSQRT(BVD) IF (AVD - 0.7071067808D+00) 20070, 10070, 40070 40070 IF (AVD - 0.7071067816D+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.70710678118654752440D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 EXPRESSION PRESENTED TO DSQRT IVTNUM = 8 BVD = 25.0D0 AVD = DSQRT(BVD / 100.0D0) IF (AVD - 0.4999999997D+00) 20080, 10080, 40080 40080 IF (AVD - 0.5000000003D+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.50000000000000000000D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 EXPRESSION PRESENTED TO DSQRT IVTNUM = 9 BVD = 0.0875D0 AVD = DSQRT(BVD * 10.0D0) IF (AVD - 0.9354143462D+00) 20090, 10090, 40090 40090 IF (AVD - 0.9354143472D+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.93541434669348534640D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 AN EXPRESSION WITH VALUE CLOSE TO ONE IVTNUM = 10 AVD = DSQRT(31.0D0 / 32.0D0) IF (AVD - 0.9842509837D+00) 20100, 10100, 40100 40100 IF (AVD - 0.9842509848D+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.98425098425147637746D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 11 AVD = DSQRT(1.6D-35) IF (AVD - 0.3999999998D-17) 20110, 10110, 40110 40110 IF (AVD - 0.4000000002D-17) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.40000000000000000000D-17 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 12 AVD = DSQRT(1.0D+35) IF (AVD - 0.3162277658D+18) 20120, 10120, 40120 40120 IF (AVD - 0.3162277662D+18) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 0.31622776601683793320D+18 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 THE FUNCTION APPLIED TWICE IVTNUM = 13 BVD = DSQRT(1.6D0) AVD = DSQRT(0.625D0) * BVD IF (AVD - 0.9999999995D+00) 20130, 10130, 40130 40130 IF (AVD - 0.1000000001D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 176 STOP END *END-OF,FM812 FM813.f 481036520 170 2 100666 16728 ` *HEADER,FORTR,FM813 *FILES1,FORTR,FM813,X C*********************************************************************** C***** FORTRAN 77 C***** FM813 C***** YCSQRT - (177) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION CSQRT 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C F I C A T I O N S SEGMENT 177 COMPLEX AVC, BVC, CVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 13 ZPROG = 'FM813' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 177 WRITE(NUVI,17700) 17700 FORMAT(1H , / 36H YCSQRT - (177) INTRINSIC FUNCTIONS// 1 29H CSQRT (COMPLEX SQUARE ROOT)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ZERO IVTNUM = 1 BVC = (0.0, 0.0) AVC = CSQRT(BVC) IF (R2E(1) + 0.50000E-04) 20010, 40012, 40011 40011 IF (R2E(1) - 0.50000E-04) 40012, 40012, 20010 40012 IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010 40010 IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0011 CONTINUE CT002* TEST 2 POSITIVE REAL NUMBERS IVTNUM = 2 BVC = (4.0, 4.0) AVC = CSQRT(BVC - (0.0, 4.0)) IF (R2E(1) - 0.19999E+01) 20020, 40022, 40021 40021 IF (R2E(1) - 0.20001E+01) 40022, 40022, 20020 40022 IF (R2E(2) + 0.50000E-04) 20020, 10020, 40020 40020 IF (R2E(2) - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 ZVCORR = (2.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0021 CONTINUE CT003* TEST 3 POSITIVE REAL NUMBERS IVTNUM = 3 BVC = (4.0, 4.0) CVC = (4.0, -4.0) AVC = CSQRT(BVC + CVC) IF (R2E(1) - 0.28282E+01) 20030, 40032, 40031 40031 IF (R2E(1) - 0.28286E+01) 40032, 40032, 20030 40032 IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030 40030 IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 ZVCORR = (2.8284271247462, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0031 CONTINUE CT004* TEST 4 POSITIVE REAL NUMBERS IVTNUM = 4 BVC = (4.0, 0.0) CVC = BVC + (5.0, 0.0) AVC = CSQRT(CVC) IF (R2E(1) - 0.29998E+01) 20040, 40042, 40041 40041 IF (R2E(1) - 0.30002E+01) 40042, 40042, 20040 40042 IF (R2E(2) + 0.50000E-04) 20040, 10040, 40040 40040 IF (R2E(2) - 0.50000E-04) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 ZVCORR = (3.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0041 CONTINUE CT005* TEST 5 NEGATIVE REAL NUMBERS IVTNUM = 5 BVC = (-1.0, 0.0) AVC = CSQRT(BVC) IF (R2E(1) + 0.50000E-04) 20050, 40052, 40051 40051 IF (R2E(1) - 0.50000E-04) 40052, 40052, 20050 40052 IF (R2E(2) - 0.99995E+00) 20050, 10050, 40050 40050 IF (R2E(2) - 0.10001E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 1.0000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0051 CONTINUE CT006* TEST 6 NEGATIVE REAL NUMBERS IVTNUM = 6 AVC = CSQRT((-5.0, 0.0)) IF (R2E(1) + 0.50000E-04) 20060, 40062, 40061 40061 IF (R2E(1) - 0.50000E-04) 40062, 40062, 20060 40062 IF (R2E(2) - 0.22359E+01) 20060, 10060, 40060 40060 IF (R2E(2) - 0.22362E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 2.2360679774998) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0061 CONTINUE CT007* TEST 7 NEGATIVE REAL NUMBERS IVTNUM = 7 BVC = (-25.0, 0.0) AVC = CSQRT(BVC) IF (R2E(1) + 0.50000E-04) 20070, 40072, 40071 40071 IF (R2E(1) - 0.50000E-04) 40072, 40072, 20070 40072 IF (R2E(2) - 0.49997E+01) 20070, 10070, 40070 40070 IF (R2E(2) - 0.50003E+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 5.0000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CT008* TEST 8 VARIABLES SUPPLIED WITHIN AN EXPRESSION IVTNUM = 8 BVC = (0.203125,0.0) CVC = (0.0, 1.3125) AVC = CSQRT(BVC + CVC) IF (R2E(1) - 0.87495E+00) 20080, 40082, 40081 40081 IF (R2E(1) - 0.87505E+00) 40082, 40082, 20080 40082 IF (R2E(2) - 0.74996E+00) 20080, 10080, 40080 40080 IF (R2E(2) - 0.75004E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (0.87500000000000, 0.75000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 VARIABLES SUPPLIED WITHIN AN EXPRESSION IVTNUM = 9 BVC = (1.0,0.0) AVC = CSQRT(BVC - (0.38671875, 0.515625)) IF (R2E(1) - 0.84094E+00) 20090, 40092, 40091 40091 IF (R2E(1) - 0.84103E+00) 40092, 40092, 20090 40092 IF (R2E(2) + 0.30658E+00) 20090, 10090, 40090 40090 IF (R2E(2) + 0.30654E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = (0.84098742159541, -0.30655928183909) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0091 CONTINUE CT010* TEST 10 VARIABLES SUPPLIED WITHIN AN EXPRESSION IVTNUM = 10 BVC = (-0.375, 0.5) AVC = CSQRT(BVC + BVC) IF (R2E(1) - 0.49997E+00) 20100, 40102, 40101 40101 IF (R2E(1) - 0.50003E+00) 40102, 40102, 20100 40102 IF (R2E(2) - 0.99995E+00) 20100, 10100, 40100 40100 IF (R2E(2) - 0.10001E+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 ZVCORR = (0.50000000000000, 1.0000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0101 CONTINUE CT011* TEST 11 PURELY IMAGINARY NUMBERS IVTNUM = 11 AVC = CSQRT((0.0, 2.0)) IF (R2E(1) - 0.99995E+00) 20110, 40112, 40111 40111 IF (R2E(1) - 0.10001E+01) 40112, 40112, 20110 40112 IF (R2E(2) - 0.99995E+00) 20110, 10110, 40110 40110 IF (R2E(2) - 0.10001E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 ZVCORR = (1.00000000000000, 1.0000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0111 CONTINUE CT012* TEST 12 PURELY IMAGINARY NUMBERS IVTNUM = 12 AVC = CSQRT((0.0, -8.0)) IF (R2E(1) - 0.19999E+01) 20120, 40122, 40121 40121 IF (R2E(1) - 0.20001E+01) 40122, 40122, 20120 40122 IF (R2E(2) + 0.20001E+01) 20120, 10120, 40120 40120 IF (R2E(2) + 0.19999E+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 ZVCORR = (2.00000000000000, -2.0000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0121 CONTINUE CT013* TEST 13 (-0.5,SQRT(3)/2) IVTNUM = 13 BVC = (-0.5, -0.8660254038) CVC = CSQRT(CSQRT(BVC)) AVC = CVC - BVC * (0.0, 1.0) IF (R2E(1) + 0.50000E-04) 20130, 40132, 40131 40131 IF (R2E(1) - 0.50000E-04) 40132, 40132, 20130 40132 IF (R2E(2) + 0.50000E-04) 20130, 10130, 40130 40130 IF (R2E(2) - 0.50000E-04) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0131 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 177 STOP END *END-OF,FM813 FM814.f 481036524 170 2 100666 17044 ` *HEADER,FORTR,FM814 *FILES1,FORTR,FM814,X C*********************************************************************** C***** FORTRAN 77 C***** FM814 C***** YDEXP - (179) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DEXP 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 179 DOUBLE PRECISION AVD, BVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 19 ZPROG = 'FM814' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 179 WRITE(NUVI,17900) 17900 FORMAT(1H , / 35H YDEXP - (179) INTRINSIC FUNCTIONS// 1 37H DEXP (DOUBLE PRECISION EXPONENTIAL)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ZERO, SINCE EXP(0) = 1 IVTNUM = 1 BVD = 0.0D0 AVD = DEXP(BVD) IF (AVD - 0.9999999995D+00) 20010, 10010, 40010 40010 IF (AVD - 0.1000000001D+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.10000000000000000000D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 ONE, SINCE EXP(1) = E IVTNUM = 2 AVD = DEXP(1.0D0) IF (AVD - 0.2718281827D+01) 20020, 10020, 40020 40020 IF (AVD - 0.2718281830D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.27182818284590452354D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 AVD = DEXP(2.0D0) IF (AVD - 0.7389056095D+01) 20030, 10030, 40030 40030 IF (AVD - 0.7389056103D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.73890560989306502272D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 AVD = DEXP(5.125D0) IF (AVD - 0.1681741415D+03) 20040, 10040, 40040 40040 IF (AVD - 0.1681741418D+03) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.16817414165184545127D+03 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 AVD = DEXP(15.0D0) IF (AVD - 0.3269017370D+07) 20050, 10050, 40050 40050 IF (AVD - 0.3269017374D+07) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.32690173724721106393D+07 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 BVD = 20.5D0 AVD = DEXP(BVD) IF (AVD - 0.7999021770D+09) 20060, 10060, 40060 40060 IF (AVD - 0.7999021779D+09) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.79990217747550540670D+09 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 BVD = 4.5D0 AVD = DEXP(BVD - 7.5D0) IF (AVD - 0.4978706834D-01) 20070, 10070, 40070 40070 IF (AVD - 0.4978706840D-01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.49787068367863942979D-01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 BVD = 0.25D0 AVD = DEXP(BVD - 5.0D0) IF (AVD - 0.8651695198D-02) 20080, 10080, 40080 40080 IF (AVD - 0.8651695208D-02) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.86516952031206341771D-02 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 AVD = DEXP(0.5D0 * (-20.0D0)) IF (AVD - 0.4539992974D-04) 20090, 10090, 40090 40090 IF (AVD - 0.4539992979D-04) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.45399929762484851536D-04 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 BVD = 30.5D0 AVD = DEXP(BVD / (-2.0D0)) IF (AVD - 0.2382369666D-06) 20100, 10100, 40100 40100 IF (AVD - 0.2382369669D-06) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.23823696675018179180D-06 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 VALUES CLOSE TO 1.0 IVTNUM = 11 AVD = DEXP(0.9921875D0) IF (AVD - 0.2697127990D+01) 20110, 10110, 40110 40110 IF (AVD - 0.2697127993D+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.26971279914439187908D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 IVTNUM = 12 BVD = 0.9990234375D0 AVD = DEXP(BVD) IF (AVD - 0.2715628550D+01) 20120, 10120, 40120 40120 IF (AVD - 0.2715628554D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 0.27156285521168930956D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 AVD = DEXP(1.00390625D0) IF (AVD - 0.2728920881D+01) 20130, 10130, 40130 40130 IF (AVD - 0.2728920884D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 0.27289208827260750401D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 IVTNUM = 14 BVD = 1.001953125D0 AVD = DEXP(BVD) IF (AVD - 0.2723596159D+01) 20140, 10140, 40140 40140 IF (AVD - 0.2723596162D+01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 0.27235961607434952125D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE CT015* TEST 15 VALUES CLOSE TO 1/E IVTNUM = 15 BVD = 128.0D0 AVD = DEXP(44.0D0 / BVD) IF (AVD - 0.1410226034D+01) 20150, 10150, 40150 40150 IF (AVD - 0.1410226036D+01) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = 0.14102260349257107057D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0151 CONTINUE CT016* TEST 16 IVTNUM = 16 BVD = 128.0D0 AVD = DEXP(45.0D0 / BVD) IF (AVD - 0.1421286574D+01) 20160, 10160, 40160 40160 IF (AVD - 0.1421286576D+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 0.14212865748006967556D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE CT017* TEST 17 IVTNUM = 17 BVD = 128.0D0 AVD = DEXP(46.0D0 / BVD) IF (AVD - 0.1432433862D+01) 20170, 10170, 40170 40170 IF (AVD - 0.1432433865D+01) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = 0.14324338635650781150D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0171 CONTINUE CT018* TEST 18 IVTNUM = 18 BVD = 128.0D0 AVD = DEXP(47.0D0 / BVD) IF (AVD - 0.1443668580D+01) 20180, 10180, 40180 40180 IF (AVD - 0.1443668583D+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 0.14436685815988268628D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0181 CONTINUE CT019* TEST 19 IVTNUM = 19 BVD = 128.0D0 AVD = DEXP(48.0D0 / BVD) IF (AVD - 0.1454991413D+01) 20190, 10190, 40190 40190 IF (AVD - 0.1454991416D+01) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 DVCORR = 0.14549914146182013361D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0191 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 179 STOP END *END-OF,FM814 FM815.f 481036528 170 2 100666 14100 ` *HEADER,FORTR,FM815 *FILES1,FORTR,FM815,X C*********************************************************************** C***** FORTRAN 77 C***** FM815 C***** YCEXP - (180) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION CEXP 15.3 C***** INTRINSIC FUNCTIONS AIMAG AND CABS ASSUMED WORKING TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 180 COMPLEX AVC, BVC, CVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 9 ZPROG = 'FM815' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 180 WRITE(NUVI,18000) 18000 FORMAT(1H , / 35H YCEXP - (180) INTRINSIC FUNCTIONS// 1 28H CEXP (COMPLEX EXPONENTIAL)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ZERO IVTNUM = 1 BVC = (0.0, 0.0) AVC = CEXP(BVC) IF (R2E(1) - 0.99995E+00) 20010, 40012, 40011 40011 IF (R2E(1) - 0.10001E+01) 40012, 40012, 20010 40012 IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010 40010 IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (1.0000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0011 CONTINUE CT002* TEST 2 PURELY REAL NUMBERS -- RESULT AGREES WITH EXP IVTNUM = 2 AVC = CEXP((1.0, 0.0)) IF (R2E(1) - 0.27181E+01) 20020, 40022, 40021 40021 IF (R2E(1) - 0.27185E+01) 40022, 40022, 20020 40022 IF (R2E(2) + 0.50000E-04) 20020, 10020, 40020 40020 IF (R2E(2) - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 ZVCORR = (2.7182818284590, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0021 CONTINUE CT003* TEST 3 PURELY REAL NUMBERS -- RESULT AGREES WITH EXP IVTNUM = 3 BVC = (-3.0, 0.0) AVC = CEXP(BVC) IF (R2E(1) - 0.49784E-01) 20030, 40032, 40031 40031 IF (R2E(1) - 0.49790E-01) 40032, 40032, 20030 40032 IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030 40030 IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 ZVCORR = (0.04978706836785, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0031 CONTINUE C***** TESTS 4 AND 5 - PURELY IMAGINARY NUMBERS--RESULT LIES C***** ON UNIT CIRCLE CT004* TEST 4 (0,PI) IVTNUM = 4 BVC = (0.0, 3.1415926536) AVC = CEXP(BVC * (1.0, 0.0)) IF (R2E(1) + 0.10001E+01) 20040, 40042, 40041 40041 IF (R2E(1) + 0.99995E+00) 40042, 40042, 20040 40042 IF (R2E(2) + 0.50000E-04) 20040, 10040, 40040 40040 IF (R2E(2) - 0.50000E-04) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 ZVCORR = (-1.0000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0041 CONTINUE CT005* TEST 5 (0,-PI/2) IVTNUM = 5 BVC = (0.0, -3.1415926536) AVC = CEXP(BVC / (2.0, 0.0)) IF (R2E(1) + 0.50000E-04) 20050, 40052, 40051 40051 IF (R2E(1) - 0.50000E-04) 40052, 40052, 20050 40052 IF (R2E(2) + 0.10001E+01) 20050, 10050, 40050 40050 IF (R2E(2) + 0.99995E+00) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, -1.0000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0051 CONTINUE CT006* TEST 6 (2.5,PI/4) IVTNUM = 6 AVC = CEXP((1.0, 2.0)) IF (R2E(1) + 0.11313E+01) 20060, 40062, 40061 40061 IF (R2E(1) + 0.11311E+01) 40062, 40062, 20060 40062 IF (R2E(2) - 0.24716E+01) 20060, 10060, 40060 40060 IF (R2E(2) - 0.24719E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (-1.1312043837568, 2.4717266720048) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0061 CONTINUE CT007* TEST 7 A VARIABLE SUPPLIED TO CEXP IVTNUM = 7 BVC = (-1.75, 4.625) AVC = CEXP(BVC) IF (R2E(1) + 0.15168E-01) 20070, 40072, 40071 40071 IF (R2E(1) + 0.15165E-01) 40072, 40072, 20070 40072 IF (R2E(2) + 0.17312E+00) 20070, 10070, 40070 40070 IF (R2E(2) + 0.17310E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (-0.01516660638013, -0.17311082425206) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CT008* TEST 8 POSITIVE REAL, NEGATIVE IMAGINARY ARGUMENT IVTNUM = 8 AVC = CEXP((5.5, -1.015625)) IF (R2E(1) - 0.12896E+03) 20080, 40082, 40081 40081 IF (R2E(1) - 0.12898E+03) 40082, 40082, 20080 40082 IF (R2E(2) + 0.20796E+03) 20080, 10080, 40080 40080 IF (R2E(2) + 0.20793E+03) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (128.97440219594, -207.94168724284) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 THE FUNCTION TOGETHER WITH AIMAG AND CABS IVTNUM = 9 BVC = (10.0, 3.1415926536) CVC = CEXP(BVC / (4.0, 0.0)) AVS = (AIMAG(CVC) / CABS(CVC)) ** 2 IF (AVS - 0.49997E+00) 20090, 10090, 40090 40090 IF (AVS - 0.50003E+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 0.5000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 180 STOP END *END-OF,FM815 FM816.f 481036532 170 2 100666 15829 ` *HEADER,FORTR,FM816 *FILES1,FORTR,FM816,X C*********************************************************************** C***** FORTRAN 77 C***** FM816 C***** YDLOG - (182) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DLOG 15.3 C***** TABLE 5 CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 182 DOUBLE PRECISION AVD, BVD, CVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 16 ZPROG = 'FM816' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 182 WRITE(NUVI,18200) 18200 FORMAT(1H , / 35H YDLOG - (182) INTRINSIC FUNCTIONS// 1 43H DLOG (DOUBLE PRECISION NATURAL LOGARITHM)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ONE, SINCE LN(1.0) = 0.0 IVTNUM = 1 BVD = 1.0D0 AVD = DLOG(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 VALUE CLOSE TO E IVTNUM = 2 AVD = DLOG(2.6875D0) IF (AVD - 0.9886113929D+00) 20020, 10020, 40020 40020 IF (AVD - 0.9886113940D+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.98861139345378118580D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 AVD = DLOG(5.125D0) IF (AVD - 0.1634130524D+01) 20030, 10030, 40030 40030 IF (AVD - 0.1634130526D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 1.6341305250244718756D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 AVD = DLOG(10.0D0) IF (AVD - 0.2302585091D+01) 20040, 10040, 40040 40040 IF (AVD - 0.2302585095D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 2.3025850929940456840D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 AVD = DLOG(100.0D0) IF (AVD - 0.4605170183D+01) 20050, 10050, 40050 40050 IF (AVD - 0.4605170189D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 4.6051701859880913680D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 BVD = 1.0D0 AVD = DLOG(BVD / 4.D0) IF (AVD + 0.1386294362D+01) 20060, 10060, 40060 40060 IF (AVD + 0.1386294360D+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -1.3862943611198906188D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 BVD = 1.0D0 CVD = 8.0D0 AVD = DLOG(3.0D0 * BVD / CVD) IF (AVD + 0.9808292535D+00) 20070, 10070, 40070 40070 IF (AVD + 0.9808292525D+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = -0.98082925301172623686D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 AVD = DLOG(50.0D0 / 100.0D0) IF (AVD + 0.6931471809D+00) 20080, 10080, 40080 40080 IF (AVD + 0.6931471802D+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = -0.69314718055994530942D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 BVD = 68.75D0 AVD = DLOG(BVD * 0.01D0) IF (AVD + 0.3746934497D+00) 20090, 10090, 40090 40090 IF (AVD + 0.3746934492D+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = -0.37469344944141069361D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 VALUES CLOSE TO ONE IVTNUM = 10 AVD = DLOG(0.96875D0) IF (AVD + 0.3174869833D-01) 20100, 10100, 40100 40100 IF (AVD + 0.3174869829D-01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = -0.031748698314580301157D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 IVTNUM = 11 BVD = 1.015625D0 AVD = DLOG(BVD) IF (AVD - 0.1550418652D-01) 20110, 10110, 40110 40110 IF (AVD - 0.1550418655D-01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.015504186535965254150D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 VALUES CLOSE TO ZERO IVTNUM = 12 BVD = 128.0D0 AVD = DLOG(1.0D0 / BVD) IF (AVD + 0.4852030267D+01) 20120, 10120, 40120 40120 IF (AVD + 0.4852030261D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -4.8520302639196171659D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 BVD = 128.0D0 AVD = DLOG(1.0D0 / (BVD * 4.0D0)) IF (AVD + 0.6238324629D+01) 20130, 10130, 40130 40130 IF (AVD + 0.6238324622D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = -6.2383246250395077848D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 14 BVD = 1.0D+37 AVD = DLOG(BVD) IF (AVD - 0.8519564839D+02) 20140, 10140, 40140 40140 IF (AVD - 0.8519564849D+02) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 85.195648440779690309D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE CT015* TEST 15 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 15 BVD = 1.0D-37 AVD = DLOG(BVD) IF (AVD + 0.8519564849D+02) 20150, 10150, 40150 40150 IF (AVD + 0.8519564840D+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = -85.195648440779690309D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0151 CONTINUE CT016* TEST 16 IVTNUM = 16 AVD = DLOG(8.0D0) + DLOG(0.125D0) IF (AVD + 0.5000000000D-09) 20160, 10160, 40160 40160 IF (AVD - 0.5000000000D-09) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 182 STOP END *END-OF,FM816 FM817.f 481036536 170 2 100666 15293 ` *HEADER,FORTR,FM817 *FILES1,FORTR,FM817,X C*********************************************************************** C***** FORTRAN 77 C***** FM817 C***** YCLOG - (183) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION CLOG 15.3 C***** INTRINSIC FUNCTIONS AIMAG AND CMPLX ASSUMED WORKING TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 183 COMPLEX AVC, BVC, CVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 11 ZPROG = 'FM817' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 183 WRITE(NUVI,18300) 18300 FORMAT(1H , / 35H YCLOG - (183) INTRINSIC FUNCTIONS// 1 34H CLOG (COMPLEX NATURAL LOGARITHM)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVS = 3.1415926535897932384626434 C***** TESTS 1 THRU 3 - POSITIVE REAL NUMBERS--CLOG, ALOG AGREE ON C***** REAL LINE CT001* TEST 1 IVTNUM = 1 AVC = CLOG((1.0, 0.0)) IF (R2E(1) + 0.50000E-04) 20010, 40012, 40011 40011 IF (R2E(1) - 0.50000E-04) 40012, 40012, 20010 40012 IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010 40010 IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0011 CONTINUE CT002* TEST 2 IVTNUM = 2 AVC = CLOG((5.125, 0.0)) IF (R2E(1) - 0.16340E+01) 20020, 40022, 40021 40021 IF (R2E(1) - 0.16343E+01) 40022, 40022, 20020 40022 IF (R2E(2) + 0.50000E-04) 20020, 10020, 40020 40020 IF (R2E(2) - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 ZVCORR = (1.6341305250245, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 AVC = CLOG((100.0, 0.0)) IF (R2E(1) - 0.46049E+01) 20030, 40032, 40031 40031 IF (R2E(1) - 0.46054E+01) 40032, 40032, 20030 40032 IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030 40030 IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 ZVCORR = (4.6051701859881, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0031 CONTINUE CT004* TEST 4 AN EXPRESSION PRESENTED TO CLOG IVTNUM = 4 AVC = CLOG((2.6875, 0.0) * (-1.0, 0.0)) IF (R2E(1) - 0.98856E+00) 20040, 40042, 40041 40041 IF (R2E(1) - 0.98866E+00) 40042, 40042, 20040 40042 IF (R2E(2) - 0.31414E+01) 20040, 10040, 40040 40040 IF (R2E(2) - 0.31418E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 ZVCORR = (0.98861139345378, 3.1415926535898) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0041 CONTINUE C***** TESTS 5 AND 6 - NEGATIVE REAL NUMBERS--CHECK RIGHT BRANCH AT C***** ENDPOINTS CT005* TEST 5 IVTNUM = 5 BVC = (-2.5, 0.0) AVC = CLOG(BVC + BVC) IF (R2E(1) - 0.16093E+01) 20050, 40052, 40051 40051 IF (R2E(1) - 0.16096E+01) 40052, 40052, 20050 40052 IF (R2E(2) - 0.31414E+01) 20050, 10050, 40050 40050 IF (R2E(2) - 0.31418E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (1.6094379124341, 3.1415926535898) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 BVC = (-10.0, 0.0) + (-10.25, 0.0) AVC = CLOG(BVC) IF (R2E(1) - 0.30080E+01) 20060, 40062, 40061 40061 IF (R2E(1) - 0.30083E+01) 40062, 40062, 20060 40062 IF (R2E(2) - 0.31414E+01) 20060, 10060, 40060 40060 IF (R2E(2) - 0.31418E+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (3.0081547935525, 3.1415926535898) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0061 CONTINUE CT007* TEST 7 POSITIVE REAL, POSITIVE IMAGINARY ARGUMENTS IVTNUM = 7 BVC = (2.0, 1.5) AVC = CLOG(BVC) IF (R2E(1) - 0.91624E+00) 20070, 40072, 40071 40071 IF (R2E(1) - 0.91634E+00) 40072, 40072, 20070 40072 IF (R2E(2) - 0.64346E+00) 20070, 10070, 40070 40070 IF (R2E(2) - 0.64354E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (0.91629073187416, 0.64350110879328) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CT008* TEST 8 NEGATIVE REAL, POSITIVE IMAGINARY ARGUMENTS IVTNUM = 8 BVC = (-2.75, 1.375) AVC = CLOG(BVC) IF (R2E(1) - 0.11231E+01) 20080, 40082, 40081 40081 IF (R2E(1) - 0.11233E+01) 40082, 40082, 20080 40082 IF (R2E(2) - 0.26778E+01) 20080, 10080, 40080 40080 IF (R2E(2) - 0.26781E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (1.1231726873356, 2.6779450445890) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 NEGATIVE REAL, NEGATIVE IMAGINARY ARGUMENTS IVTNUM = 9 BVC = (-10.0, -10.0) AVC = CLOG(BVC) IF (R2E(1) - 0.26490E+01) 20090, 40092, 40091 40091 IF (R2E(1) - 0.26493E+01) 40092, 40092, 20090 40092 IF (R2E(2) + 0.23564E+01) 20090, 10090, 40090 40090 IF (R2E(2) + 0.23560E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = (2.6491586832740, -2.3561944901923) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0091 CONTINUE CT010* TEST 10 CLOG USED TOGETHER WITH AIMAG IVTNUM = 10 AVS = (AIMAG(CLOG((3.0, 1.75))) + AIMAG(CLOG((-3.0, 1.75)))) 1 - PIVS IF (AVS + 0.50000E-04) 20100, 10100, 40100 40100 IF (AVS - 0.50000E-04) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.00000000000000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0101 CONTINUE CT011* TEST 11 CLOG USED TOGETHER WITH CMPLX AND AIMAG IVTNUM = 11 BVC = CLOG((4.5, -3.75)) CVC = CLOG((-4.5, -3.75)) AVC = (BVC - CMPLX(0.0, AIMAG(BVC))) - 1 (CVC - CMPLX(0.0, AIMAG(CVC))) IF (R2E(1) + 0.50000E-04) 20110, 40112, 40111 40111 IF (R2E(1) - 0.50000E-04) 40112, 40112, 20110 40112 IF (R2E(2) + 0.50000E-04) 20110, 10110, 40110 40110 IF (R2E(2) - 0.50000E-04) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0111 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 183 STOP END *END-OF,FM817 FM818.f 481036541 170 2 100666 16489 ` *HEADER,FORTR,FM818 *FILES1,FORTR,FM818,X C*********************************************************************** C***** FORTRAN 77 C***** FM818 C***** YDLG10 - (185) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DLOG10 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** S P E C I F I C A T I O N S SEGMENT 185 DOUBLE PRECISION AVD, BVD, CVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 16 ZPROG = 'FM818' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 185 WRITE(NUVI,18500) 18500 FORMAT(1H , / 36H YDLG10 - (185) INTRINSIC FUNCTIONS// 1 44H DLOG10 (DOUBLE PRECISION COMMON LOGARITHM)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 ONE, SINCE LN(1.0) = 0.0 IVTNUM = 1 BVD = 1.0D0 AVD = DLOG10(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 A VALUE CLOSE TO 10 IVTNUM = 2 AVD = DLOG10(9.875D0) IF (AVD - 0.9945371038D+00) 20020, 10020, 40020 40020 IF (AVD - 0.9945371048D+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.99453710429849784235D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 THE VALUE 10.D0 IVTNUM = 3 AVD = DLOG10(10.0D0) IF (AVD - 0.9999999995D+00) 20030, 10030, 40030 40030 IF (AVD - 0.1000000001D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 THE VALUE 20.5D0 IVTNUM = 4 AVD = DLOG10(20.5D0) IF (AVD - 0.1311753860D+01) 20040, 10040, 40040 40040 IF (AVD - 0.1311753862D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 1.3117538610557542993D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 THE VALUE 99.0D0 IVTNUM = 5 AVD = DLOG10(99.0D0) IF (AVD - 0.1995635193D+01) 20050, 10050, 40050 40050 IF (AVD - 0.1995635196D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 1.9956351945975499153D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 VARIABLE WITHIN AN EXPRESSION IVTNUM = 6 BVD = 1.0D0 CVD = 8.0D0 AVD = DLOG10(3.0D0 * BVD / CVD) IF (AVD + 0.4259687325D+00) 20060, 10060, 40060 40060 IF (AVD + 0.4259687320D+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -0.42596873227228114835D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 VARIABLE WITHIN AN EXPRESSION IVTNUM = 7 BVD = 1.0D0 CVD = 8.0D0 AVD = DLOG10(5.0D0 * BVD / CVD) IF (AVD + 0.2041199828D+00) 20070, 10070, 40070 40070 IF (AVD + 0.2041199825D+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = -0.20411998265592478085D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 AN EXPRESSION SUPPLIED TO DLOG10 IVTNUM = 8 AVD = DLOG10(75.D0 / 100.0D0) IF (AVD + 0.1249387367D+00) 20080, 10080, 40080 40080 IF (AVD + 0.1249387365D+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = -0.12493873660829995313D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 VARIABLE WITHIN AN EXPRESSION IVTNUM = 9 BVD = 1.0D0 CVD = 8.0D0 AVD = DLOG10(7.0D0 * BVD / CVD) IF (AVD + 0.5799194701D-01) 20090, 10090, 40090 40090 IF (AVD + 0.5799194694D-01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = -0.057991946977686754929D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 A VALUE CLOSE TO ONE IVTNUM = 10 AVD = DLOG10(0.9921875D0) IF (AVD + 0.3406248694D-02) 20100, 10100, 40100 40100 IF (AVD + 0.3406248690D-02) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = -0.0034062486919115022492D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 A VALUE CLOSE TO ONE IVTNUM = 11 BVD = 1.0009765625 AVD = DLOG10(BVD) IF (AVD - 0.4239087517D-03) 20110, 10110, 40110 40110 IF (AVD - 0.4239087522D-03) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.00042390875196115194455D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 A VALUE CLOSE TO ZERO IVTNUM = 12 BVD = 256.0D0 AVD = DLOG10(1.0D0 / BVD) IF (AVD + 0.2408239967D+01) 20120, 10120, 40120 40120 IF (AVD + 0.2408239964D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -2.4082399653118495617D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 A VALUE CLOSE TO ZERO IVTNUM = 13 BVD = 128.0D0 AVD = DLOG10(1.0D0 / (BVD * 8D0)) IF (AVD + 0.3010299959D+01) 20130, 10130, 40130 40130 IF (AVD + 0.3010299955D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = -3.0102999566398119521D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 14 BVD = 2.0D+35 AVD = DLOG10(BVD) IF (AVD - 0.3530102997D+01) 20140, 10140, 40140 40140 IF (AVD - 0.3530103002D+02) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 35.301029995663981195D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE CT015* TEST 15 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 15 BVD = 2.0D-35 AVD = DLOG10(BVD) IF (AVD + 0.3469897003D+02) 20150, 10150, 40150 40150 IF (AVD + 0.3469896998D+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = -34.698970004336018805D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0151 CONTINUE CT016* TEST 16 THE FUNCTION APPIED TWICE IVTNUM = 16 AVD = DLOG10(20.0D0) - DLOG10(2.0D0) IF (AVD - 0.9999999995D+00) 20160, 10160, 40160 40160 IF (AVD - 0.1000000001D+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 185 STOP END *END-OF,FM818 FM819.f 481036546 170 2 100666 18140 ` *HEADER,FORTR,FM819 *FILES1,FORTR,FM819,X C*********************************************************************** C***** FORTRAN 77 C***** FM819 C***** YDSIN - (187) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DSIN 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** S P E C I F I C A T I O N S SEGMENT 187 DOUBLE PRECISION AVD, BVD, PIVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 19 ZPROG = 'FM819' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 187 WRITE(NUVI,18700) 18700 FORMAT(1H /34H YDSIN - (187) INTRINSIC FUNCTIONS// 1 32H DSIN - (DOUBLE PRECISION SINE)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVD = 3.1415926535897932384626434D0 C***** CT001* TEST 1 ZERO (0.0) SINCE SIN(0)=0 IVTNUM = 1 BVD = 0.0D0 AVD = DSIN(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 PI IVTNUM = 2 AVD = DSIN(PIVD) IF (AVD + 0.5000000000D-09) 20020, 10020, 40020 40020 IF (AVD - 0.5000000000D-09) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 PI - 1/8 IVTNUM = 3 BVD = 3.01659265358979323846D0 AVD = DSIN(BVD) IF (AVD - 0.1246747333D+00) 20030, 10030, 40030 40030 IF (AVD - 0.1246747335D+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.12467473338522768996D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 PI - 1/16 IVTNUM = 4 AVD = DSIN(3.204092653589793238D0) IF (AVD + 0.6245931788D-01) 20040, 10040, 40040 40040 IF (AVD + 0.6245931781D-01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = -0.062459317842380198585D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 2*PI IVTNUM = 5 BVD = PIVD * 2.0D0 AVD = DSIN(BVD) IF (AVD + 0.5000000000D-09) 20050, 10050, 40050 40050 IF (AVD - 0.5000000000D-09) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 2*PI - 1/128 IVTNUM = 6 BVD = (2.0D0 * PIVD) - 1.0D0 / 128.0D0 AVD = DSIN(BVD) IF (AVD + 0.7812420532D-02) 20060, 10060, 40060 40060 IF (AVD + 0.7812420523D-02) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -0.0078124205273828310472D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 2*PI - 1/256 IVTNUM = 7 BVD = (2.0D0 * PIVD) + 1.0D0 / 256.0D0 AVD = DSIN(BVD) IF (AVD - 0.3906240064D-02) 20070, 10070, 40070 40070 IF (AVD - 0.3906240068D-02) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.0039062400659001165547D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 AN EXPRESSION SUPPLIED TO DSIN IVTNUM = 8 BVD = 2000.0D0 AVD = DSIN(BVD / 10.0D2) IF (AVD - 0.9092974263D+00) 20080, 10080, 40080 40080 IF (AVD - 0.9092974273D+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.90929742682568169540D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 THE VALUE -2.0D0 IVTNUM = 9 BVD = -2.0D0 AVD = DSIN(BVD) IF (AVD + 0.9092974273D+00) 20090, 10090, 40090 40090 IF (AVD + 0.9092974263D+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = -0.90929742682568169540D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 A LARGE VALUE TO TEST ARGUMENT REDUCTION IVTNUM = 10 AVD = DSIN(100.0D0) IF (AVD + 0.5063656414D+00) 20100, 10100, 40100 40100 IF (AVD + 0.5063656408D+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = -0.50636564110975879366D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 A VERY LARGE VALUE IVTNUM = 11 AVD = DSIN(-1000.0D0) IF (AVD + 0.8268795410D+00) 20110, 10110, 40110 40110 IF (AVD + 0.8268795401D+00) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = -0.82687954053200256026D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 PI/2 IVTNUM = 12 AVD = DSIN(1.57079632679489661923D0) IF (AVD - 0.9999999995D+00) 20120, 10120, 40120 40120 IF (AVD - 0.1000000001D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 (PI / 2) - 1/32 IVTNUM = 13 BVD = 1.53954632679489661923D0 AVD = DSIN(BVD) IF (AVD - 0.9995117579D+00) 20130, 10130, 40130 40130 IF (AVD - 0.9995117590D+00) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 0.99951175848513636924D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 (PI / 2) + 1/64 IVTNUM = 14 BVD = 1.58642132679489661923D0 AVD = DSIN(BVD) IF (AVD - 0.9998779316D+00) 20140, 10140, 40140 40140 IF (AVD - 0.9998779327D+00) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 0.99987793217100665474D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE CT015* TEST 15 3*PI/2 IVTNUM = 15 BVD = 3.0D0 * PIVD / 2.0D0 AVD = DSIN(BVD) IF (AVD + 0.1000000001D+01) 20150, 10150, 40150 40150 IF (AVD + 0.9999999995D+00) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = -1.000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0151 CONTINUE CT016* TEST 16 3*PI/2 - 1/16 IVTNUM = 16 BVD = (3.0D0 * PIVD / 2.0D0) - 1.0D0 / 16.0D0 AVD = DSIN(BVD) IF (AVD + 0.9980475112D+00) 20160, 10160, 40160 40160 IF (AVD + 0.9980475102D+00) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = -0.99804751070009914963D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE CT017* TEST 17 3*PI - 1/512 IVTNUM = 17 BVD = (3.0D0 * PIVD / 2.0D0) + 1.0D0 / 512.0D0 AVD = DSIN(BVD) IF (AVD + 0.9999980932D+00) 20170, 10170, 40170 40170 IF (AVD + 0.9999980921D+00) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = -0.99999809265197351722D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0171 CONTINUE CT018* TEST 18 ARGUMENT OF LOW MAGNITUDE IVTNUM = 18 BVD = PIVD * 1.0D-17 AVD = DSIN(BVD) IF (AVD - 0.3141592652D-16) 20180, 10180, 40180 40180 IF (AVD - 0.3141592655D-16) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 3.1415926535897932385D-17 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0181 CONTINUE CT019* TEST 19 THE FUNCTION APPLIED TWICE IVTNUM = 19 AVD = DSIN(PIVD / 4.0D0) * DSIN(3.0D0 * PIVD / 4.0D0) IF (AVD - 0.4999999997D+00) 20190, 10190, 40190 40190 IF (AVD - 0.5000000003D+00) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 DVCORR = 0.50000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0191 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 187 STOP END *END-OF,FM819 FM820.f 481036551 170 2 100666 20550 ` *HEADER,FORTR,FM820 *FILES1,FORTR,FM820,X C*********************************************************************** C***** FORTRAN 77 C***** FM820 C***** YCSIN - (188) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION CSIN 15.3 C***** INTRINSIC FUNCTION CABS ASSUMED WORKING TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 188 COMPLEX AVC, BVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 19 ZPROG = 'FM820' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 188 WRITE(NUVI,18800) 18800 FORMAT(1H /35H YCSIN - (188) INTRINSIC FUNCTIONS// 1 36H CSIN, CCOS (COMPLEX SINE, COSINE)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI, 18801) 18801 FORMAT(/ 8X, 12HTEST OF CSIN) C***** CT001* TEST 1 TEST AT ZERO (0.0, 0.0) IVTNUM = 1 AVC = CSIN(( 0.0, 0.0)) IF (R2E(1) + 0.50000E-04) 20010, 40012, 40011 40011 IF (R2E(1) - 0.50000E-04) 40012, 40012, 20010 40012 IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010 40010 IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0011 CONTINUE CT002* TEST 2 TEST SIN ON THE REAL LINE, CSIN SAME AS SIN IVTNUM = 2 AVC = CSIN(( 2.0, 0.0)) IF (R2E(1) - 0.90925E+00) 20020, 40022, 40021 40021 IF (R2E(1) - 0.90935E+00) 40022, 40022, 20020 40022 IF (R2E(2) + 0.50000E-04) 20020, 10020, 40020 40020 IF (R2E(2) - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 ZVCORR = (0.90929742682568, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0021 CONTINUE CT003* TEST 3 TEST SIN ON THE REAL LINE, CSIN SAME AS SIN IVTNUM = 3 AVC = CSIN(( -1000.0, 0.0)) IF (R2E(1) + 0.82692E+00) 20030, 40032, 40031 40031 IF (R2E(1) + 0.82683E+00) 40032, 40032, 20030 40032 IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030 40030 IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 ZVCORR = (-0.82687954053200, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0031 CONTINUE CT004* TEST 4 EXPRESSION PRESENTED TO CSIN IVTNUM = 4 AVC = CSIN(( 150.0, 350.0) / (100.0, 0.0)) IF (R2E(1) - 0.16530E+02) 20040, 40042, 40041 40041 IF (R2E(1) - 0.16533E+02) 40042, 40042, 20040 40042 IF (R2E(2) - 0.11701E+01) 20040, 10040, 40040 40040 IF (R2E(2) - 0.11703E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 ZVCORR = (16.531309523248, 1.1701791625591) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0041 CONTINUE CT005* TEST 5 VARIABLE PRESENTED TO CSIN IVTNUM = 5 BVC = ( 4.75, 2.50) - (9.50, 1.25) AVC = CSIN(BVC) IF (R2E(1) - 0.18870E+01) 20050, 40052, 40051 40051 IF (R2E(1) - 0.18872E+01) 40052, 40052, 20050 40052 IF (R2E(2) - 0.60232E-01) 20050, 10050, 40050 40050 IF (R2E(2) - 0.60239E-01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (1.8870883629759, 0.060235606171638) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0051 CONTINUE CT006* TEST 6 VARIABLE PRESENTED TO CSIN IVTNUM = 6 BVC = ( 0.125, 2.0) * (10.0, 0.0) AVC = CSIN(BVC) IF (R2E(1) - 0.23019E+09) 20060, 40062, 40061 40061 IF (R2E(1) - 0.23022E+09) 40062, 40062, 20060 40062 IF (R2E(2) - 0.76487E+08) 20060, 10060, 40060 40060 IF (R2E(2) - 0.76496E+08) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (230207154.14527, 76491717.784289) WRITE (NUVI, 80145) IVTNUM, AVC, ZVCORR 80145 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED: , 1 1H(,E12.5,2H, ,E12.5,1H)/,1H ,16X,10HCORRECT: , 2 1H(,E12.5,2H, ,E12.5,1H)) 0061 CONTINUE CT007* TEST 7 TEST WHERE REAL IS ZERO IVTNUM = 7 BVC = ( 0.0, 1.0) AVC = CSIN(BVC) IF (R2E(1) + 0.50000E-04) 20070, 40072, 40071 40071 IF (R2E(1) - 0.50000E-04) 40072, 40072, 20070 40072 IF (R2E(2) - 0.11751E+01) 20070, 10070, 40070 40070 IF (R2E(2) - 0.11753E+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, 1.1752011936438) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CT008* TEST 8 TEST WHERE REAL IS ZERO IVTNUM = 8 BVC = ( 0.0, -4.75) AVC = CSIN(BVC) IF (R2E(1) + 0.50000E-04) 20080, 40082, 40081 40081 IF (R2E(1) - 0.50000E-04) 40082, 40082, 20080 40082 IF (R2E(2) + 0.57791E+02) 20080, 10080, 40080 40080 IF (R2E(2) + 0.57785E+02) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, -57.787816415992) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 TEST WHERE REAL IS ZERO IVTNUM = 9 AVC = CSIN(( 0.0, -10.0)) IF (R2E(1) + 0.50000E-04) 20090, 40092, 40091 40091 IF (R2E(1) - 0.50000E-04) 40092, 40092, 20090 40092 IF (R2E(2) + 0.11014E+05) 20090, 10090, 40090 40090 IF (R2E(2) + 0.11012E+05) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = (0.00000000000000, -11013.232874703) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0091 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** WRITE(NUVI, 18811) 18811 FORMAT(/ 08X, 12HTEST OF CCOS) CT010* TEST 10 TEST FOR ZERO (0.0, 0.0) IVTNUM = 10 AVC = CCOS(( 0.0, 0.0)) IF (R2E(1) - 0.99995E+00) 20100, 40102, 40101 40101 IF (R2E(1) - 0.10001E+01) 40102, 40102, 20100 40102 IF (R2E(2) + 0.50000E-04) 20100, 10100, 40100 40100 IF (R2E(2) - 0.50000E-04) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 ZVCORR = (1.00000000000000, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0101 CONTINUE CT011* TEST 11 TEST WITH ZERO IMAGINARY, CCOS = COS IVTNUM = 11 AVC = CCOS((3.5, 1.0) - (0.0, 1.0)) IF (R2E(1) + 0.93651E+00) 20110, 40112, 40111 40111 IF (R2E(1) + 0.93641E+00) 40112, 40112, 20110 40112 IF (R2E(2) + 0.50000E-04) 20110, 10110, 40110 40110 IF (R2E(2) - 0.50000E-04) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 ZVCORR = (-0.93645668729080, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0111 CONTINUE CT012* TEST 12 EXPRESSION PRESENTED TO CCOS IVTNUM = 12 AVC = CCOS(( 3.1416, 0.0) * (-10000.0, 0.0)) IF (R2E(1) - 0.99725E+00) 20120, 40122, 40121 40121 IF (R2E(1) - 0.99736E+00) 40122, 40122, 20120 40122 IF (R2E(2) + 0.50000E-04) 20120, 10120, 40120 40120 IF (R2E(2) - 0.50000E-04) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 ZVCORR = (0.99730272627420, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0121 CONTINUE CT013* TEST 13 EXPRESSION PRESENTED TO CCOS IVTNUM = 13 AVC = CCOS(( 3.5, 5.5) - (2.0, 2.0)) IF (R2E(1) - 0.11722E+01) 20130, 40132, 40131 40131 IF (R2E(1) - 0.11724E+01) 40132, 40132, 20130 40132 IF (R2E(2) + 0.16502E+02) 20130, 10130, 40130 40130 IF (R2E(2) + 0.16500E+02) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 ZVCORR = (1.1723152409601, -16.501187784675) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0131 CONTINUE CT014* TEST 14 VARIABLE WITHIN AN EXPRESSION IVTNUM = 14 BVC = ( 4.75, 1.25) AVC = CCOS(BVC - (9.50, 0.0)) IF (R2E(1) - 0.71005E-01) 20140, 40142, 40141 40141 IF (R2E(1) - 0.71013E-01) 40142, 40142, 20140 40142 IF (R2E(2) + 0.16009E+01) 20140, 10140, 40140 40140 IF (R2E(2) + 0.16007E+01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 ZVCORR = (0.071008803346314, -1.6007861854666) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0141 CONTINUE CT015* TEST 15 VARIABLE WITHIN AN EXPRESSION IVTNUM = 15 BVC = ( 1.00, 10.0) AVC = CCOS(BVC + ( 0.25, 10.0)) IF (R2E(1) - 0.76487E+08) 20150, 40152, 40151 40151 IF (R2E(1) - 0.76496E+08) 40152, 40152, 20150 40152 IF (R2E(2) + 0.23022E+09) 20150, 10150, 40150 40150 IF (R2E(2) + 0.23019E+09) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 ZVCORR = (76491717.784289, -230207154.14527) WRITE (NUVI, 80145) IVTNUM, AVC, ZVCORR 0151 CONTINUE CT016* TEST 16 TEST WITH ZERO REAL PART IVTNUM = 16 BVC = ( 0.0, 1.0) AVC = CCOS(BVC) IF (R2E(1) - 0.15430E+01) 20160, 40162, 40161 40161 IF (R2E(1) - 0.15432E+01) 40162, 40162, 20160 40162 IF (R2E(2) + 0.50000E-04) 20160, 10160, 40160 40160 IF (R2E(2) - 0.50000E-04) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 ZVCORR = (1.5430806348152, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0161 CONTINUE CT017* TEST 17 TEST WITH ZERO REAL PART IVTNUM = 17 BVC = ( 0.0, -4.75) AVC = CCOS(BVC) IF (R2E(1) - 0.57793E+02) 20170, 40172, 40171 40171 IF (R2E(1) - 0.57800E+02) 40172, 40172, 20170 40172 IF (R2E(2) + 0.50000E-04) 20170, 10170, 40170 40170 IF (R2E(2) - 0.50000E-04) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 ZVCORR = (57.796468111195, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0171 CONTINUE CT018* TEST 18 TEST WITH ZERO REAL PART IVTNUM = 18 AVC = CCOS(( 0.0, -10.0)) IF (R2E(1) - 0.11012E+05) 20180, 40182, 40181 40181 IF (R2E(1) - 0.11014E+05) 40182, 40182, 20180 40182 IF (R2E(2) + 0.50000E-04) 20180, 10180, 40180 40180 IF (R2E(2) - 0.50000E-04) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 ZVCORR = (11013.232920103, 0.00000000000000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0181 CONTINUE CT019* TEST 19 THE FUNCTION TOGETHER WITH CSIN AND CABS IVTNUM = 19 DVS = (CABS(CCOS((-2.25, 0.0))) ** 2) + 1 (CABS(CSIN((-2.25, 0.0))) ** 2) IF (DVS - 0.99995E+00) 20190, 10190, 40190 40190 IF (DVS - 0.10001E+01) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 RVCORR = 1.00000000000000 WRITE (NUVI, 80012) IVTNUM, DVS, RVCORR 0191 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 188 STOP END *END-OF,FM820 FM821.f 481036556 170 2 100666 18143 ` *HEADER,FORTR,FM821 *FILES1,FORTR,FM821,X C*********************************************************************** C***** FORTRAN 77 C***** FM821 C***** YDCOS - (190) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DCOS 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 190 DOUBLE PRECISION AVD, BVD, PIVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 19 ZPROG = 'FM821' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 190 WRITE(NUVI,19000) 19000 FORMAT(1H /34H YDCOS - (190) INTRINSIC FUNCTIONS// 1 32H DCOS (DOUBLE PRECISION COSINE)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVD = 3.1415926535897932384626434D0 C***** CT001* TEST 1 ZERO (0.0), SINCE COS(0)=1 IVTNUM = 1 BVD = 0.0D0 AVD = DCOS(BVD) IF (AVD - 0.9999999995D+00) 20010, 10010, 40010 40010 IF (AVD - 0.1000000001D+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 VALUES NEAR PI IVTNUM = 2 AVD = DCOS(PIVD) IF (AVD + 0.1000000001D+01) 20020, 10020, 40020 40020 IF (AVD + 0.9999999995D+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = -1.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 PI - 1/16 IVTNUM = 3 BVD = 3.07909265358979323846D0 AVD = DCOS(BVD) IF (AVD + 0.9980475112D+00) 20030, 10030, 40030 40030 IF (AVD + 0.9980475102D+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = -0.99804751070009914963D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 PI + 1/32 IVTNUM = 4 AVD = DCOS(3.17284265358979323846D0) IF (AVD + 0.9995117590D+00) 20040, 10040, 40040 40040 IF (AVD + 0.9995117580D+00) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = -0.99951175848513636924D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 VALUES NEAR 2*PI IVTNUM = 5 BVD = PIVD * 2.0D0 AVD = DCOS(BVD) IF (AVD - 0.9999999995D+00) 20050, 10050, 40050 40050 IF (AVD - 0.1000000001D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 VALUES NEAR 2*PI IVTNUM = 6 BVD = (2.0D0 * PIVD) - 1.0D0 / 64.0D0 AVD = DCOS(BVD) IF (AVD - 0.9998779316D+00) 20060, 10060, 40060 40060 IF (AVD - 0.9998779327D+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.99987793217100665474D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 VALUES NEAR 2*PI IVTNUM = 7 BVD = (2.0D0 * PIVD) + 1.0D0 / 128.0D0 AVD = DCOS(BVD) IF (AVD - 0.9999694820D+00) 20070, 10070, 40070 40070 IF (AVD - 0.9999694831D+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.99996948257709511331D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 AN EXPRESSION PRESENTED TO DCOS IVTNUM = 8 BVD = 350.0D1 AVD = DCOS(BVD / 100.0D1) IF (AVD + 0.9364566878D+00) 20080, 10080, 40080 40080 IF (AVD + 0.9364566868D+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = -0.93645668729079633770D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 A NEGATIVE ARGUMENT IVTNUM = 9 BVD = -1.5D0 AVD = DCOS(BVD) IF (AVD - 0.7073720163D-01) 20090, 10090, 40090 40090 IF (AVD - 0.7073720171D-01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.070737201667702910088D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 LARGE VALUES TO CHECK ARGUMENT REDUCTION IVTNUM = 10 AVD = DCOS(200.0D0) IF (AVD - 0.4871876747D+00) 20100, 10100, 40100 40100 IF (AVD - 0.4871876753D+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.48718767500700591035D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 LARGE VALUES TO CHECK ARGUMENT REDUCTION IVTNUM = 11 AVD = DCOS(-31416.0D0) IF (AVD - 0.9973027257D+00) 20110, 10110, 40110 40110 IF (AVD - 0.9973027268D+00) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.99730272627420107808D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 VALUES NEAR PI/2 IVTNUM = 12 AVD = DCOS(1.57079632679489661923D0) IF (AVD + 0.5000000000D-09) 20120, 10120, 40120 40120 IF (AVD - 0.5000000000D-09) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 (PI / 2) - 1/32 IVTNUM = 13 BVD = (1.53954632679489661923D0) AVD = DCOS(BVD) IF (AVD - 0.3124491397D-01) 20130, 10130, 40130 40130 IF (AVD - 0.3124491400D-01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 0.031244913985326078739D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 (PI / 2) + 1/16 IVTNUM = 14 AVD = DCOS(1.63329632679489661923D0) IF (AVD + 0.6245931788D-01) 20140, 10140, 40140 40140 IF (AVD + 0.6245931781D-01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = -0.062459317842380198585D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE CT015* TEST 15 VALUES NEAR 3*PI/2 IVTNUM = 15 BVD = 3.0D0 * PIVD / 2.0D0 AVD = DCOS(BVD) IF (AVD + 0.5000000000D-09) 20150, 10150, 40150 40150 IF (AVD - 0.5000000000D-09) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0151 CONTINUE CT016* TEST 16 VALUES NEAR 3*PI/2 IVTNUM = 16 BVD = (3.0D0 * PIVD / 2.0D0) + 1.0D0 / 16.0D0 AVD = DCOS(BVD) IF (AVD - 0.6245931781D-01) 20160, 10160, 40160 40160 IF (AVD - 0.6245931788D-01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 0.062459317842380198585D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE CT017* TEST 17 VALUES NEAR 3*PI/2 IVTNUM = 17 BVD = (3.0D0 * PIVD / 2.0D0) - 1.0D0 / 512.0D0 AVD = DCOS(BVD) IF (AVD + 0.1953123760D-02) 20170, 10170, 40170 40170 IF (AVD + 0.1953123757D-02) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = -0.0019531237582368040269D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0171 CONTINUE CT018* TEST 18 ARGUMENT OF LOW MAGNITUDE IVTNUM = 18 BVD = -3.1415926535898D-35 AVD = DCOS(BVD) IF (AVD - 0.9999999995D+00) 20180, 10180, 40180 40180 IF (AVD - 0.1000000001D+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0181 CONTINUE CT019* TEST 19 THE FUNCTION APPLIED TWICE IVTNUM = 19 AVD = DCOS(PIVD / 4.0D0) * DCOS(3.0D0 * PIVD / 4.0D0) IF (AVD + 0.5000000003D+00) 20190, 10190, 40190 40190 IF (AVD + 0.4999999997D+00) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 DVCORR = -0.5000000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0191 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 190 STOP END *END-OF,FM821 FM822.f 481036560 170 2 100666 15678 ` *HEADER,FORTR,FM822 *FILES1,FORTR,FM822,X C*********************************************************************** C***** FORTRAN 77 C***** FM822 C***** YDTAN - (192) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DTAN 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 192 DOUBLE PRECISION AVD, BVD, PIVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 14 ZPROG = 'FM822' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 192 WRITE(NUVI,19200) 19200 FORMAT(1H , / 35H YDTAN - (192) INTRINSIC FUNCTIONS// 1 34H DTAN (DOUBLE PRECISION TANGENT)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVD = 3.1415926535897932384626434D0 C***** CT001* TEST 1 ZERO (0.0), SINCE TAN(0) = 0. IVTNUM = 1 BVD = 0.0D0 AVD = DTAN(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 2*PI IVTNUM = 2 BVD = 6.28318530717958647692D0 AVD = DTAN(BVD) IF (AVD + 0.5000000000D-09) 20020, 10020, 40020 40020 IF (AVD - 0.5000000000D-09) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 3*PI IVTNUM = 3 BVD = 9.42477796076937971538D0 AVD = DTAN(BVD) IF (AVD + 0.5000000000D-09) 20030, 10030, 40030 40030 IF (AVD - 0.5000000000D-09) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 PI/4 IVTNUM = 4 AVD = DTAN(PIVD / 4.0D0) IF (AVD - 0.9999999995D+00) 20040, 10040, 40040 40040 IF (AVD - 0.1000000001D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 5*PI/4 IVTNUM = 5 BVD = 5.0D0 * PIVD / 4.0D0 AVD = DTAN(BVD) IF (AVD - 0.9999999995D+00) 20050, 10050, 40050 40050 IF (AVD - 0.1000000001D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 1.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 A NEGATIVE VALUE IVTNUM = 6 BVD = -2.0D0 / 1.0D0 AVD = DTAN(BVD) IF (AVD - 0.2185039862D+01) 20060, 10060, 40060 40060 IF (AVD - 0.2185039865D+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 2.1850398632615189916D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 A POSITIVE VALUE IVTNUM = 7 BVD = 350.0D0 / 100.0D0 AVD = DTAN(BVD) IF (AVD - 0.3745856399D+00) 20070, 10070, 40070 40070 IF (AVD - 0.3745856404D+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.37458564015859466633D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 (PI / 2) - 1/8 IVTNUM = 8 BVD = 1.44579632679489661923D0 AVD = DTAN(BVD) IF (AVD - 0.7958289861D+01) 20080, 10080, 40080 40080 IF (AVD - 0.7958289870D+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 7.9582898658670111779D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 (PI / 2) + 1/256 IVTNUM = 9 BVD = 1.57470257679489661923D0 AVD = DTAN(BVD) IF (AVD + 0.2559986981D+03) 20090, 10090, 40090 40090 IF (AVD + 0.2559986977D+03) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = -255.99869791534211708D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 3*PI/2 - 1/1024 IVTNUM = 10 AVD = DTAN((3.0D0 * PIVD / 2.0D0) - 1.0D0 / 1024.0D0) IF (AVD - 0.1023999674D+04) 20100, 10100, 40100 40100 IF (AVD - 0.1023999675D+04) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 1023.9996744791459706D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 3*PI + 1/64 IVTNUM = 11 BVD = (3.0D0 * PIVD / 2.0D0) + 1.0D0 / 64.0D0 AVD = DTAN(BVD) IF (AVD + 0.6399479162D+02) 20110, 10110, 40110 40110 IF (AVD + 0.6399479155D+02) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = -63.994791581893645218D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 LARGE VALUE TO TEST ARGUMENT REDUCTION IVTNUM = 12 AVD = DTAN(2000.0D0) IF (AVD + 0.2530998330D+01) 20120, 10120, 40120 40120 IF (AVD + 0.2530998326D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -2.5309983280933409104D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 ARGUMENT OF LOW MAGNITUDE IVTNUM = 13 BVD = PIVD * 1.0D-15 AVD = DTAN(BVD) IF (AVD - 0.3141592652D-14) 20130, 10130, 40130 40130 IF (AVD - 0.3141592655D-14) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 3.1415926535897932385D-15 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 THE FUNCTION APPLIED TWICE IVTNUM = 14 AVD = DTAN(PIVD / 6.0D0) * DTAN(PIVD / 6.0D0) IF (AVD - 0.3333333331D+00) 20140, 10140, 40140 40140 IF (AVD - 0.3333333335D+00) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 0.33333333333333333333D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 192 STOP END *END-OF,FM822 FM823.f 481036563 170 2 100666 14666 ` *HEADER,FORTR,FM823 *FILES1,FORTR,FM823,X C*********************************************************************** C***** FORTRAN 77 C***** FM823 C***** YDASIN - (194) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DASIN, DACOS 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 194 DOUBLE PRECISION AVD, BVD, CVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM823' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 194 WRITE(NUVI,19400) 19400 FORMAT(1H , / 36H YDASIN - (194) INTRINSIC FUNCTIONS// 1 52H DASIN, DACOS (DOUBLE PRECISION ARCSINE, ARCCOSINE)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI,19401) 19401 FORMAT(1H0,8X,13HTEST OF DASIN) C***** CT001* TEST 1 -1.0D0 FOR PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 1 BVD = -1.0D0 AVD = DASIN(BVD) IF (AVD + 0.1570796328D+01) 20010, 10010, 40010 40010 IF (AVD + 0.1570796326D+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = -1.5707963267948966192D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 +1.0D0 FOR PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 2 AVD = DASIN(1.0D0) IF (AVD - 0.1570796326D+01) 20020, 10020, 40020 40020 IF (AVD - 0.1570796328D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 1.5707963267948966192D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 THE VALUE -DSQRT(0.5D0) IVTNUM = 3 BVD = -(DSQRT(2.0D0) / 2.0D0) AVD = DASIN(BVD) IF (AVD + 0.7853981638D+00) 20030, 10030, 40030 40030 IF (AVD + 0.7853981630D+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = -0.78539816339744830962D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 THE VALUE 0.5D0 IVTNUM = 4 AVD = DASIN(1.0D0 / 2.0D0) IF (AVD - 0.5235987753D+00) 20040, 10040, 40040 40040 IF (AVD - 0.5235987759D+00) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.52359877559829887308D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 5 AVD = DASIN(-1.0D-13) IF (AVD + 0.1000000001D-12) 20050, 10050, 40050 40050 IF (AVD + 0.9999999995D-13) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = -1.0000000000000000000D-13 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE C***** WRITE(NUVI,19407) 19407 FORMAT(1H0,8X,13HTEST OF DACOS) C***** CT006* TEST 6 -1.0D0 FOR PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 6 BVD = -1.0D0 AVD = DACOS(BVD) IF (AVD - 0.3141592652D+01) 20060, 10060, 40060 40060 IF (AVD - 0.3141592655D+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 3.1415926535897932384D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 +1.0D0 TO TEST PRINCIPAL VALUE AT ENDPOINTS IVTNUM = 7 AVD = DACOS(1.0D0) IF (AVD + 0.5000000000D-09) 20070, 10070, 40070 40070 IF (AVD - 0.5000000000D-09) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 THE VALUE -DSQRT(0.5D0) IVTNUM = 8 BVD = -(DSQRT(2.0D0) / 2.0D0) AVD = DACOS(BVD) IF (AVD - 0.2356194489D+01) 20080, 10080, 40080 40080 IF (AVD - 0.2356194492D+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 2.3561944901923449288D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 THE VALUE 0.5D0 IVTNUM = 9 AVD = DACOS(1.0D0 / 2.0D0) IF (AVD - 0.1047197550D+01) 20090, 10090, 40090 40090 IF (AVD - 0.1047197552D+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 1.0471975511965977461D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 10 AVD = DACOS(-1.0D-33) IF (AVD - 0.1570796326D+01) 20100, 10100, 40100 40100 IF (AVD - 0.1570796328D+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 1.5707963267948966192D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 COMPARISON OF DASIN AND DACOS FOR RIGHT RELATIONSHIP IVTNUM = 11 BVD = DASIN(DSQRT(3.0D0) / 3.0D0) CVD = DACOS(DSQRT(3.0D0) / 3.0D0) AVD = (BVD + CVD) * 2.0D0 IF (AVD - 0.3141592652D+01) 20110, 10110, 40110 40110 IF (AVD - 0.3141592655D+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 3.1415926535897932384D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 COMPARISON OF DASIN AND DACOS TO TEST RELATIONSHIP IVTNUM = 12 AVD = (DASIN(+0.25D0) + DACOS(+0.25D0)) * 2.0D0 IF (AVD - 0.3141592652D+01) 20120, 10120, 40120 40120 IF (AVD - 0.3141592655D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 3.1415926535897932384D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 194 STOP END *END-OF,FM823 FM824.f 481036567 170 2 100666 15318 ` *HEADER,FORTR,FM824 *FILES1,FORTR,FM824,X C*********************************************************************** C***** FORTRAN 77 C***** FM824 C***** YDATAN - (196) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DATAN, DATAN2 15.3 C***** INTRINSIC FUNCTION DSQRT ASSUMED WORKING TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 196 DOUBLE PRECISION AVD, BVD, CVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 13 ZPROG = 'FM824' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 196 WRITE(NUVI,19600) 19600 FORMAT(1H , / 36H YDATAN - (196) INTRINSIC FUNCTIONS// 1 45H DATAN, DATAN2 (DOUBLE PRECISION ARCTANGENT)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI,19601) 19601 FORMAT(/ 8X, 13HTEST OF DATAN) C***** CT001* TEST 1 LARGE ARGUMENT VALUES TO TEST SINGULARITY IVTNUM = 1 BVD = 500.0D0 AVD = DATAN(BVD) IF (AVD - 0.1568796328D+01) 20010, 10010, 40010 40010 IF (AVD - 0.1568796331D+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 1.5687963294632946155D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 LARGE ARGUMENT VALUES TO TEST SINGULARITY IVTNUM = 2 AVD = DATAN(-1000.0D0) IF (AVD + 0.1569796328D+01) 20020, 10020, 40020 40020 IF (AVD + 0.1569796326D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = -1.5697963271282297525D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 AN EXPRESSION PRESENTED TO DATAN IVTNUM = 3 AVD = DATAN(100.0D0 / 100.0D0) IF (AVD - 0.7853981630D+00) 20030, 10030, 40030 40030 IF (AVD - 0.7853981638D+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.78539816339744830962D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 THE FUNCTION DSQRT EVALUATED AND PRESENTED C***** AS AN ARGUMENT IVTNUM = 4 BVD = -DSQRT(3.0D0) AVD = DATAN(BVD) IF (AVD + 0.1047197552D+01) 20040, 10040, 40040 40040 IF (AVD + 0.1047197550D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = -1.0471975511965977461D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 5 AVD = DATAN(1.0D-16) IF (AVD - 0.9999999995D-16) 20050, 10050, 40050 40050 IF (AVD - 0.1000000001D-15) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D-16 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 6 AVD = DATAN(-2.0D+34) IF (AVD + 0.1570796328D+01) 20060, 10060, 40060 40060 IF (AVD + 0.1570796326D+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -1.5707963267948966192D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE C***** WRITE(NUVI,19608) 19608 FORMAT(/ 08X, 14HTEST OF DATAN2) CT007* TEST 7 TEST (0,POSITIVE) TO TEST DISCONTINUITY IVTNUM = 7 BVD = 10.0D0 / 10.0D0 CVD = 0.0D0 AVD = DATAN2(CVD, BVD) IF (AVD + 0.5000000000D-09) 20070, 10070, 40070 40070 IF (AVD - 0.5000000000D-09) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 TEST (0,NEGATIVE) TO TEST DISCONTINUITY IVTNUM = 8 BVD = 0.0D0 CVD = -25.0D0 / 2.0D0 AVD = DATAN2(BVD, CVD) IF (AVD - 0.3141592652D+01) 20080, 10080, 40080 40080 IF (AVD - 0.3141592655D+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 3.1415926535897932384D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 AN EXPRESSION PRESENTED TO DATAN2 IVTNUM = 9 BVD = 1.0D0 CVD = BVD + BVD AVD = DATAN2(BVD * 2.0D0, CVD) IF (AVD - 0.7853981630D+00) 20090, 10090, 40090 40090 IF (AVD - 0.7853981638D+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.78539816339744830962D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 ARGUMENTS WHERE (X,Y) X IS NEAR ZERO IVTNUM = 10 BVD = DASIN(0.6D0) CVD = DACOS(0.8D0) AVD = DATAN2(BVD, CVD) IF (AVD - 0.7853981630D+00) 20100, 10100, 40100 40100 IF (AVD - 0.7853981638D+00) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.78539816339744830962D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 WHERE ARGUMENT (X,Y) Y IS NEAR ZERO IVTNUM = 11 AVD = DATAN2(1.2D0, 0.0D0) IF (AVD - 0.1570796326D+01) 20110, 10110, 40110 40110 IF (AVD - 0.1570796328D+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 1.5707963267948966192D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 WHERE ARGUMENT (X,Y) Y IS NEAR ZERO IVTNUM = 12 BVD = -2.5D0 CVD = 0.0D0 AVD = DATAN2(BVD, CVD) IF (AVD + 0.1570796328D+01) 20120, 10120, 40120 40120 IF (AVD + 0.1570796326D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = -1.5707963267948966192D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 COMPARISON OF DATAN AND DATAN2 IVTNUM = 13 AVD = (DATAN(DSQRT(3.0D0) / 3.0D0) * 2.0D0) + 1 DATAN2(-DSQRT(3.0D0) / 2.0D0, 1.0D0 / 2.0D0) IF (AVD + 0.5000000000D-09) 20130, 10130, 40130 40130 IF (AVD - 0.5000000000D-09) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 196 STOP END *END-OF,FM824 FM825.f 481036573 170 2 100666 16796 ` *HEADER,FORTR,FM825 *FILES1,FORTR,FM825,X C*********************************************************************** C***** FORTRAN 77 C***** FM825 C***** YDSINH - (198) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DSINH, DCOSH 15.3 C***** TABLE 5 CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 198 DOUBLE PRECISION AVD, BVD, CVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 16 ZPROG = 'FM825' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 198 WRITE(NUVI,19800) 19800 FORMAT(1H , / 36H YDSINH - (198) INTRINSIC FUNCTIONS// 1 57H DSINH, DCOSH (DOUBLE PRECISION HYPERBOLIC SINE, COSINE)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** WRITE(NUVI,19801) 19801 FORMAT(/ 8X, 13HTEST OF DSINH) C***** CT001* TEST 1 TEST AT ZERO (0.0D0) IVTNUM = 1 BVD = 0.0D0 AVD = DSINH(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 TEST ARGUMENTS CLOSE TO 1.0D0 IVTNUM = 2 AVD = DSINH(15.0D0 / 16.0D0) IF (AVD - 0.1080991915D+01) 20020, 10020, 40020 40020 IF (AVD - 0.1080991917D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 1.0809919156930639401D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 TEST AT 1.0D0 IVTNUM = 3 BVD = 1.0D0 AVD = DSINH(BVD) IF (AVD - 0.1175201193D+01) 20030, 10030, 40030 40030 IF (AVD - 0.1175201195D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 1.1752011936438014569D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 TEST ARGUMENTS CLOSE TO 1.0D0 IVTNUM = 4 AVD = DSINH(33.0D0 / 32.0D0) IF (AVD - 0.1224004187D+01) 20040, 10040, 40040 40040 IF (AVD - 0.1224004189D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 1.2240041877866398138D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 TEST AT 2.0D0 IVTNUM = 5 BVD = 2.0D0 AVD = DSINH(BVD) IF (AVD - 0.3626860406D+01) 20050, 10050, 40050 40050 IF (AVD - 0.3626860410D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 3.6268604078470187677D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 A NEGATIVE ARGUMENT IVTNUM = 6 AVD = DSINH(-2.0D0) IF (AVD + 0.3626860410D+01) 20060, 10060, 40060 40060 IF (AVD + 0.3626860406D+01) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -3.6268604078470187677D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 7 AVD = DSINH(1.0D-14) IF (AVD - 0.9999999995D-14) 20070, 10070, 40070 40070 IF (AVD - 0.1000000001D-13) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D-14 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** WRITE(NUVI,19809) 19809 FORMAT(/ 08X, 13HTEST OF DCOSH) C***** CT008* TEST 8 TEST AT ZERO (0.0D0) IVTNUM = 8 BVD = 0.0D0 AVD = DCOSH(BVD) IF (AVD - 0.9999999995D+00) 20080, 10080, 40080 40080 IF (AVD - 0.1000000001D+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 VALUES CLOSE TO 1.0D0 IVTNUM = 9 AVD = DCOSH(15.0D0 / 16.0D0) IF (AVD - 0.1472597541D+01) 20090, 10090, 40090 40090 IF (AVD - 0.1472597543D+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 1.4725975423698629333D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 TEST ARGUMENTS CLOSE TO 1.0D0 IVTNUM = 10 BVD = 1.0D0 AVD = DCOSH(BVD) IF (AVD - 0.1543080634D+01) 20100, 10100, 40100 40100 IF (AVD - 0.1543080636D+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 1.5430806348152437785D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 TEST ARGUMENTS CLOSE TO 1.0D0 IVTNUM = 11 AVD = DCOSH(33.0D0 / 32.0D0) IF (AVD - 0.1580565167D+01) 20110, 10110, 40110 40110 IF (AVD - 0.1580565170D+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 1.5805651684505867982D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0111 CONTINUE CT012* TEST 12 TEST AT 2.0D0 IVTNUM = 12 BVD = 2.0D0 AVD = DCOSH(BVD) IF (AVD - 0.3762195689D+01) 20120, 10120, 40120 40120 IF (AVD - 0.3762195693D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 3.7621956910836314596D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0121 CONTINUE CT013* TEST 13 A NEGATIVE ARGUMENT IVTNUM = 13 AVD = DCOSH(-2.0D0) IF (AVD - 0.3762195689D+01) 20130, 10130, 40130 40130 IF (AVD - 0.3762195693D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 3.7621956910836314596D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0131 CONTINUE CT014* TEST 14 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 14 AVD = DCOSH(-1.0D-14) IF (AVD - 0.9999999995D+00) 20140, 10140, 40140 40140 IF (AVD - 0.1000000001D+01) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0141 CONTINUE CT015* TEST 15 NEGATIVE VALUES SUPPLIED AS ARGUMENTS C***** TO BOTH FUNCTIONS IN AN EXPRESSION IVTNUM = 15 BVD = DSINH(-3.145D0) ** 2 CVD = DCOSH(-3.145D0) ** 2 AVD = CVD - BVD IF (AVD - 0.9999999990D+00) 20150, 10150, 40150 40150 IF (AVD - 0.1000000001D+01) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0151 CONTINUE CT016* TEST 16 POSITIVE VALUES SUPPLIED AS ARGUMENTS C***** TO BOTH FUNCTIONS IN AN EXPRESSION IVTNUM = 16 AVD = DSINH(3.25D0) + DCOSH(3.25D0) IF (AVD - 0.2579033990D+02) 20160, 10160, 40160 40160 IF (AVD - 0.2579033993D+02) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 25.790339917193062089D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 198 STOP END *END-OF,FM825 FM826.f 481036577 170 2 100666 12936 ` *HEADER,FORTR,FM826 *FILES1,FORTR,FM826,X C*********************************************************************** C***** FORTRAN 77 C***** FM826 C***** YDTANH - (200) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INTRINSIC FUNCTION DTANH 15.3 C***** TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 200 DOUBLE PRECISION AVD, BVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 9 ZPROG = 'FM826' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 200 WRITE(NUVI,20000) 20000 FORMAT(1H , / 36H YDTANH - (200) INTRINSIC FUNCTIONS// 1 46H DTANH (DOUBLE PRECISION HYPERBOLIC TANGENT)// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST AT ZERO (0.0) IVTNUM = 1 BVD = 0.0D0 AVD = DTANH(BVD) IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 A NEGATIVE ARGUMENT IVTNUM = 2 AVD = DTANH(-2.5D0) IF (AVD + 0.9866142987D+00) 20020, 10020, 40020 40020 IF (AVD + 0.9866142976D+00) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = -0.98661429815143028888D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 A VARIABLE SUPPLIED AS AN ARGUMENT IVTNUM = 3 BVD = 4.75D0 AVD = DTANH(BVD) IF (AVD - 0.9998503070D+00) 20030, 10030, 40030 40030 IF (AVD - 0.9998503081D+00) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.99985030754497877538D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 A POSITIVE REAL NUMBER SUPPLIED AS AN ARGUMENT IVTNUM = 4 AVD = DTANH(15.125D0) IF (AVD - 0.9999999995D+00) 20040, 10040, 40040 40040 IF (AVD - 0.1000000001D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.99999999999985424552D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 TEST WITH LARGE VALUES IVTNUM = 5 BVD = 10.0D0 ** 2 AVD = DTANH(BVD) IF (AVD - 0.9999999995D+00) 20050, 10050, 40050 40050 IF (AVD - 0.1000000001D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 TEST WITH LARGE VALUES IVTNUM = 6 BVD = -100.0D0 * 10.0D0 AVD = DTANH(BVD) IF (AVD + 0.1000000001D+01) 20060, 10060, 40060 40060 IF (AVD + 0.9999999995D+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 AN ARGUMENT OF HIGH MAGNITUDE IVTNUM = 7 BVD = 3.0D+36 AVD = DTANH(BVD) IF (AVD - 0.9999999995D+00) 20070, 10070, 40070 40070 IF (AVD - 0.1000000001D+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 1.0000000000000000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 AN ARGUMENT OF LOW MAGNITUDE IVTNUM = 8 BVD = -1.0D-15 AVD = DTANH(BVD) IF (AVD + 0.1000000001D-14) 20080, 10080, 40080 40080 IF (AVD + 0.9999999995D-15) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = -1.0000000000000000000D-15 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 THE FUNCTION APPLIED TWICE IVTNUM = 9 AVD = DTANH(0.5D0) * DTANH(0.75D0) IF (AVD - 0.2935132281D+00) 20090, 10090, 40090 40090 IF (AVD - 0.2935132285D+00) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.293513228313886504621D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 200 STOP END *END-OF,FM826 FM827.f 481036580 170 2 100666 13885 ` *HEADER,FORTR,FM827 *FILES1,FORTR,FM827,X C*********************************************************************** C***** FORTRAN 77 C***** FM827 C***** YDFOR - (202) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST DOUBLE PRECISION TRIGONOMETRIC FORMULA 15.3 C***** TABLE 5 CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 202 DOUBLE PRECISION AVD, BVD, CVD, DVD, PIVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 10 ZPROG = 'FM827' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 202 WRITE(NUVI,20200) 20200 FORMAT(1H , / 35H YDFOR - (202) INTRINSIC FUNCTIONS// 1 41H DOUBLE PRECISION TRIGONOMETRIC FORMULAE// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVD = 3.1415926535897932384626434D0 C***** CT001* TEST 1 LN(EXP(X)) = X IVTNUM = 1 BVD = 17.5D0 AVD = DLOG(DEXP(1.75D0)) - BVD / 10.0D0 IF (AVD + 0.5000000000D-09) 20010, 10010, 40010 40010 IF (AVD - 0.5000000000D-09) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 SIN**2 + COS**2 = 1 IVTNUM = 2 BVD = 10.0D0 / 4.0D0 CVD = DSIN(BVD) ** 2 DVD = DCOS(BVD) ** 2 AVD = CVD + DVD - 1.0D0 IF (AVD + 0.5000000000D-09) 20020, 10020, 40020 40020 IF (AVD - 0.5000000000D-09) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 SIN(2X) = 2*SIN(X)*COS(X) IVTNUM = 3 BVD = 8.5D0 CVD = BVD * (-0.5D0) AVD = (DSIN(-4.25D0) * DCOS(CVD)) * 2.0D0 - DSIN(-8.5D0) IF (AVD + 0.5000000000D-09) 20030, 10030, 40030 40030 IF (AVD - 0.5000000000D-09) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 ARCSIN(X) = ARCCOS(1 - X**2) IVTNUM = 4 AVD = DASIN(-0.875D0) + DACOS(DSQRT(1.0D0 - (0.875D0) ** 2)) IF (AVD + 0.5000000000D-09) 20040, 10040, 40040 40040 IF (AVD - 0.5000000000D-09) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 TAN(X)**2 - 1 = -COS(2X)/COS(X)**2 IVTNUM = 5 BVD = 7.0D0 AVD = DCOS(1.75D0) / DCOS(BVD / 8.0D0) ** 2 1 + DTAN(0.875D0) ** 2 - 1.0D0 IF (AVD + 0.5000000000D-09) 20050, 10050, 40050 40050 IF (AVD - 0.5000000000D-09) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 ATAN(X/Y) = ATAN2(X,Y), Y>0 IVTNUM = 6 BVD = 12.0D0 CVD = DATAN2(BVD / 4.0D0, BVD / 3.0D0) AVD = CVD - DATAN(0.75D0) IF (AVD + 0.5000000000D-09) 20060, 10060, 40060 40060 IF (AVD - 0.5000000000D-09) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 SQRT(X)**2 = X IVTNUM = 7 AVD = DSQRT(9.125D0) ** 2 - 9.125D0 IF (AVD + 0.5000000000D-09) 20070, 10070, 40070 40070 IF (AVD - 0.5000000000D-09) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 LN(X) = LN(10) * LOG10(X) IVTNUM = 8 BVD = 62.5D0 / 1000.0D0 AVD = DLOG10(BVD) * DLOG(10.0D0) - DLOG(0.0625D0) IF (AVD + 0.5000000000D-09) 20080, 10080, 40080 40080 IF (AVD - 0.5000000000D-09) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 COSH**2 - SINH**2 = 1 IVTNUM = 9 BVD = 0.125D0 CVD = DSINH(2.125D0) DVD = DCOSH(2.0D0 + BVD) AVD = DVD ** 2 - CVD ** 2 - DCOSH(0.0D0) IF (AVD + 0.5000000000D-09) 20090, 10090, 40090 40090 IF (AVD - 0.5000000000D-09) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0091 CONTINUE CT010* TEST 10 TANH(X) = 1 - 2/(EXP(2X)+1) IVTNUM = 10 BVD = 5.0D0 CVD = 2.0D0 DVD = DLOG10(BVD * CVD) - DSQRT(4.0D0) / 1 (DEXP(2.0D0 * (BVD - CVD)) + DCOS(0.0D0)) AVD = DVD - DTANH(3.0D0) IF (AVD + 0.5000000000D-09) 20100, 10100, 40100 40100 IF (AVD - 0.5000000000D-09) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 0.0D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 202 STOP END *END-OF,FM827 FM828.f 481036584 170 2 100666 14207 ` *HEADER,FORTR,FM828 *FILES1,FORTR,FM828,X C*********************************************************************** C***** FORTRAN 77 C***** FM828 C***** YCFOR - (203) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST COMPLEX TRIGONOMETRIC FORMULAE 15.3 C***** TABLE 5 CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 203 COMPLEX AVC, BVC, CVC, DVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 9 ZPROG = 'FM828' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 203 WRITE(NUVI,20300) 20300 FORMAT(1H , / 35H YCFOR - (203) INTRINSIC FUNCTIONS// 1 32H COMPLEX TRIGONOMETRIC FORMULAE// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** PIVS = 3.1415926535897932384626434 C***** CT001* TEST 1 SQRT(Z)**2 = Z IVTNUM = 1 BVC = (1.0, 0.0) + (0.0, -2.5) AVC = CSQRT((1.0, -2.5)) ** 2 - BVC IF (R2E(1) + 0.50000E-04) 20010, 40012, 40011 40011 IF (R2E(1) - 0.50000E-04) 40012, 40012, 20010 40012 IF (R2E(2) + 0.50000E-04) 20010, 10010, 40010 40010 IF (R2E(2) - 0.50000E-04) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 ZVCORR = (0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0011 CONTINUE CT002* TEST 2 ANGLE SUBTENDED BY SQRT(Z) IS 1/2 ANGLE SUBTENDED BY Z IVTNUM = 2 BVC = CSQRT((2.0, 3.25)) CVS = AIMAG(BVC) DVS = CABS((BVC + CONJG(BVC)) / (2.0, 0.0)) AVS = ATAN2(3.0 + 0.25, 1.0 * 2.0) - 2.0 * ATAN2(CVS, DVS) IF (AVS + 0.50000E-04) 20020, 10020, 40020 40020 IF (AVS - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 EXP(LOG(Z)) = Z IVTNUM = 3 BVC = (0.0, 0.0) - (1.5, 0.75) AVC = CEXP(CLOG(BVC)) + (1.5, 0.75) IF (R2E(1) + 0.50000E-04) 20030, 40032, 40031 40031 IF (R2E(1) - 0.50000E-04) 40032, 40032, 20030 40032 IF (R2E(2) + 0.50000E-04) 20030, 10030, 40030 40030 IF (R2E(2) - 0.50000E-04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 ZVCORR = (0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0031 CONTINUE CT004* TEST 4 ABS(EXP(Z)) = EXP(REAL(Z)) IVTNUM = 4 AVS = CABS(CEXP((-2.5, 1.375))) - EXP(5.0 / (-2.0)) IF (AVS + 0.50000E-04) 20040, 10040, 40040 40040 IF (AVS - 0.50000E-04) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 ANGLE SUBTENDED BY EXP(Z) IS IMAG(Z) MOD 2 PI IVTNUM = 5 BVC = (0.0625, 0.0) CVC = CEXP(BVC + (0.0, 1.125)) DVS = ATAN2(AIMAG(CVC), CABS((CVC + CONJG(CVC)) / (2.0, 0.0))) AVS = DVS - AMOD(AIMAG((0.0625, 1.125)), 2.0 * PIVS) IF (AVS + 0.50000E-04) 20050, 10050, 40050 40050 IF (AVS - 0.50000E-04) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0051 CONTINUE CT006* TEST 6 EXP(IY) = COS(Y) + I SIN(Y) IVTNUM = 6 AVC = CEXP(CMPLX(0.0, 37.5 / 10.0)) 1 - CMPLX(COS(3.75), SIN(2.75 + 1.0)) IF (R2E(1) + 0.50000E-04) 20060, 40062, 40061 40061 IF (R2E(1) - 0.50000E-04) 40062, 40062, 20060 40062 IF (R2E(2) + 0.50000E-04) 20060, 10060, 40060 40060 IF (R2E(2) - 0.50000E-04) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0061 CONTINUE CT007* TEST 7 COS(Z) = 0.5 * (EXP(I*Z) + EXP(-I*Z)) IVTNUM = 7 BVC = CEXP((-1.5, -2.75)) CVC = (BVC + 1 / BVC) / (2.0, 0.0) DVC = (2.75, -1.5) AVC = CVC - CCOS(DVC * (-1.0, 0.0)) IF (R2E(1) + 0.50000E-04) 20070, 40072, 40071 40071 IF (R2E(1) - 0.50000E-04) 40072, 40072, 20070 40072 IF (R2E(2) + 0.50000E-04) 20070, 10070, 40070 40070 IF (R2E(2) - 0.50000E-04) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CT008* TEST 8 ABS(EXP(IY)) = 1.0 IVTNUM = 8 BVC = (3.25, 3.25) CVC = (3.25, 0.0) AVC = CABS(CEXP(BVC - CVC)) - COS(0.0) IF (R2E(1) + 0.50000E-04) 20080, 40082, 40081 40081 IF (R2E(1) - 0.50000E-04) 40082, 40082, 20080 40082 IF (R2E(2) + 0.50000E-04) 20080, 10080, 40080 40080 IF (R2E(2) - 0.50000E-04) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 DEMOIVRE THEOREM FOR N = 3 IVTNUM = 9 BVS = 3.0/2.0 BVC = CMPLX(COS(1.5), SIN(BVS)) ** 3 AVC = BVC - CMPLX(COS(4.5), -SIN(4.5 + PIVS)) IF (R2E(1) + 0.50000E-04) 20090, 40092, 40091 40091 IF (R2E(1) - 0.50000E-04) 40092, 40092, 20090 40092 IF (R2E(2) + 0.50000E-04) 20090, 10090, 40090 40090 IF (R2E(2) - 0.50000E-04) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = (0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0091 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 203 STOP END *END-OF,FM828 FM829.f 481036589 170 2 100666 27051 ` *HEADER,FORTR,FM829 *FILES1,FORTR,FM829,X C*********************************************************************** C***** FORTRAN 77 C***** FM829 C***** YGEN1 - (206) C***** C*********************************************************************** C***** TESTING OF GENERIC FUNCTIONS ANS REF C***** INT, REAL, DBLE, CMPLX 15.3 C***** TABLE 5 CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 206 DOUBLE PRECISION AVD, BVD, CVD, DVCORR COMPLEX AVC, BVC, CVC, ZVCORR REAL R2E(2) EQUIVALENCE (BVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 35 ZPROG = 'FM829' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 206 WRITE(NUVI,20600) 20600 FORMAT( 1H , / 35H YGEN1 - (206) GENERIC FUNCTIONS --// 1 24H INT, REAL, DBLE, CMPLX// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST OF INT C***** WITH INTEGER ARG IVTNUM = 1 LVI = INT(485) IF (LVI - 485) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 485 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0011 CONTINUE CT002* TEST 2 WITH DOUBLE PREC ARG IVTNUM = 2 LVI = INT(1.375D0) IF (LVI - 1) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0021 CONTINUE CT003* TEST 3 WITH COMPLEX ARG IVTNUM = 3 LVI = INT((1.24, 5.67)) IF (LVI - 1) 20030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0031 CONTINUE CT004* TEST 4 TEST OF INT AND IFIX C***** WITH REAL ARGS IVTNUM = 4 LVI = INT(6.0001) + IFIX(-1.750) IF (LVI - 5) 20040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 IVCORR = 5 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0041 CONTINUE CT005* TEST 5 TEST OF INT AND IDINT C***** WITH DOUBLE PREC ARGS IVTNUM = 5 AVD = -1.11D1 LVI = INT(AVD) * IDINT(3.5D0) IF (LVI + 33) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 IVCORR = -33 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0051 CONTINUE CT006* TEST 6 INTEGER, REAL, DOUBLE PRECISION, AND COMPLEX C***** ARGUMENTS IVTNUM = 6 LVI = INT(-327) + INT(6.75) * INT(123) - INT(6.0001D0) 1 / IFIX(13.3) + INT((2.4, 3.5)) + IDINT(-3.375D0) IF (LVI - 410) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 IVCORR = 410 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0061 CONTINUE CT007* TEST 7 TEST OF REAL C***** WITH REAL ARG IVTNUM = 7 AVS = -3.0 BVS = REAL(AVS) IF (BVS + 0.30002E+01) 20070, 10070, 40070 40070 IF (BVS + 0.29998E+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = -3.0 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0071 CONTINUE CT008* TEST 8 WITH DOUBLE PRECISION IVTNUM = 8 AVD = 0.96875D0 BVS = REAL(AVD) IF (BVS - 0.96870E+00) 20080, 10080, 40080 40080 IF (BVS - 0.96880E+00) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.96875 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0081 CONTINUE CT009* TEST 9 WITH COMPLEX IVTNUM = 9 BVS = REAL((2.5, -3.0)) IF (BVS - 0.24998E+01) 20090, 10090, 40090 40090 IF (BVS - 0.25002E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 2.5 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0091 CONTINUE CT010* TEST 10 TEST OF REAL AND FLOAT IVTNUM = 10 BVS = REAL(6) + FLOAT(8) IF (BVS - 0.13999E+02) 20100, 10100, 40100 40100 IF (BVS - 0.14001E+02) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 14.0 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0101 CONTINUE CT011* TEST 11 TEST OF REAL AND SNGL IVTNUM = 11 AVD = 2.5D0 BVS = REAL(AVD) + SNGL(0.35875D2) IF (BVS - 0.38373E+02) 20110, 10110, 40110 40110 IF (BVS - 0.38377E+02) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 38.375 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0111 CONTINUE CT012* TEST 12 TEST OF REAL, FLOAT, AND SNGL IVTNUM = 12 BVS = REAL(13) + FLOAT(9) * SNGL(0.7625D1) - REAL(2.625D0) + 1 REAL(3.5) / REAL((2.0, 4.0)) IF (BVS - 0.80746E+02) 20120, 10120, 40120 40120 IF (BVS - 0.80754E+02) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 RVCORR = 80.75 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0121 CONTINUE CT013* TEST 13 TEST OF DBLE C***** WITH INTEGER ARG IVTNUM = 13 LVI = 9 BVD = DBLE(LVI) IF (BVD - 0.89995D+01) 20130, 10130, 40130 40130 IF (BVD - 0.90005D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 9.0D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0131 CONTINUE CT014* TEST 14 WITH REAL ARG IVTNUM = 14 AVS = 10.5 BVD = DBLE(AVS) IF (BVD - 0.10499D+02) 20140, 10140, 40140 40140 IF (BVD - 0.10501D+02) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = 10.5D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0141 CONTINUE CT015* TEST 15 WITH DOUBLE PREC ARG IVTNUM = 15 AVD = 9.9D0 BVD = DBLE(AVD) IF (BVD - 0.9899999995D+01) 20150, 10150, 40150 40150 IF (BVD - 0.9900000005D+01) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = 9.9D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0151 CONTINUE CT016* TEST 16 WITH COMPLEX ARG IVTNUM = 16 AVC = (2.5, 5.5) BVD = DBLE(AVC) IF (BVD - 0.24998D+01) 20160, 10160, 40160 40160 IF (BVD - 0.25002D+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 2.5D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0161 CONTINUE CT017* TEST 17 TEST OF CMPLX WITH ONE ARG C***** WITH INTEGER ARG IVTNUM = 17 BVC = CMPLX(9) IF (R2E(1) - 0.89995E+01) 20170, 40172, 40171 40171 IF (R2E(1) - 0.90005E+01) 40172, 40172, 20170 40172 IF (R2E(2) + 0.50000E-04) 20170, 10170, 40170 40170 IF (R2E(2) - 0.50000E-04) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 ZVCORR = (9,0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0171 CONTINUE CT018* TEST 18 WITH REAL IVTNUM = 18 BVC = CMPLX(4.093) IF (R2E(1) - 0.40928E+01) 20180, 40182, 40181 40181 IF (R2E(1) - 0.40932E+01) 40182, 40182, 20180 40182 IF (R2E(2) + 0.50000E-04) 20180, 10180, 40180 40180 IF (R2E(2) - 0.50000E-04) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 ZVCORR = (4.093,0.0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0181 CONTINUE CT019* TEST 19 WITH DOUBLE PREC ARG IVTNUM = 19 AVD = 0.375D-3 BVC = CMPLX(AVD) IF (R2E(1) - 0.37498E-03) 20190, 40192, 40191 40191 IF (R2E(1) - 0.37502E-03) 40192, 40192, 20190 40192 IF (R2E(2) + 0.50000E-04) 20190, 10190, 40190 40190 IF (R2E(2) - 0.50000E-04) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 ZVCORR = (0.375E-3, 0.0E0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0191 CONTINUE CT020* TEST 20 WITH COMPLEX IVTNUM = 20 AVC = (4.5, 1.2) BVC = CMPLX(AVC) IF (R2E(1) - 0.44997E+01) 20200, 40202, 40201 40201 IF (R2E(1) - 0.45003E+01) 40202, 40202, 20200 40202 IF (R2E(2) - 0.11999E+01) 20200, 10200, 40200 40200 IF (R2E(2) - 0.12001E+01) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 ZVCORR = (4.5, 1.2) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0201 CONTINUE CT021* TEST 21 TEST OF CMPLX WITH TWO ARGS C***** WITH INTEGER ARGS IVTNUM = 21 BVC = CMPLX(3, 1) IF (R2E(1) - 0.29998E+01) 20210, 40212, 40211 40211 IF (R2E(1) - 0.30002E+01) 40212, 40212, 20210 40212 IF (R2E(2) - 0.99995E+00) 20210, 10210, 40210 40210 IF (R2E(2) - 0.10001E+01) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 ZVCORR = (3.0, 1.0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0211 CONTINUE CT022* TEST 22 WITH REAL ARGS IVTNUM = 22 BVC = CMPLX(8.34, 634.3) IF (R2E(1) - 0.83395E+01) 20220, 40222, 40221 40221 IF (R2E(1) - 0.83405E+01) 40222, 40222, 20220 40222 IF (R2E(2) - 0.63426E+03) 20220, 10220, 40220 40220 IF (R2E(2) - 0.63434E+03) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 ZVCORR = (8.34, 634.3) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0221 CONTINUE CT023* TEST 23 WITH DOUBLE PREC ARGS IVTNUM = 23 AVD = 0.96875D0 BVD = 3.5D-1 BVC = CMPLX(AVD, BVD) IF (R2E(1) - 0.96870E+00) 20230, 40232, 40231 40231 IF (R2E(1) - 0.96880E+00) 40232, 40232, 20230 40232 IF (R2E(2) - 0.34998E+00) 20230, 10230, 40230 40230 IF (R2E(2) - 0.35002E+00) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 ZVCORR = (0.96875, 0.35) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0231 CONTINUE CT024* TEST 24 TEST OF INT AND = C***** WITH REAL EXPR IVTNUM = 24 CVS = 0.0 CVD = 0.0D0 CVC = (0.0,0.0) LVI = 0 AVS = 5.0 IVI = 1.0 * 5.0 + 6.0 KVI = LVI + INT(1.0 * AVS + 6.0) IF (KVI - 11) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 IVCORR = 11 WRITE (NUVI, 80010) IVTNUM, KVI, IVCORR 0241 CONTINUE CT025* TEST 25 WITH DOUBLE PREC EXPR IVTNUM = 25 AVD = 3.48D0 IVI = 3.48D0 * 47.98D0 KVI = LVI + INT(AVD * 47.98D0) IF (KVI - 166) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 IVCORR = 166 WRITE (NUVI, 80010) IVTNUM, KVI, IVCORR 0251 CONTINUE CT026* TEST 26 WITH COMPLEX EXPR IVTNUM = 26 AVC = (3.9, 5.0) IVI = (3.4, 4.5) + (3.9, 5.0) KVI = LVI + INT((3.4, 4.5) + AVC) IF (KVI - 7) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 IVCORR = 7 WRITE (NUVI, 80010) IVTNUM, KVI, IVCORR 0261 CONTINUE CT027* TEST 27 TEST OF REAL AND = C***** WITH INT EXPR IVTNUM = 27 IVI = 20 AVS = 20 + 34 / 20 BVS = CVS + REAL(IVI + 34 / IVI) IF (BVS - 0.20999E+02) 20270, 10270, 40270 40270 IF (BVS - 0.21001E+02) 10270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 RVCORR = 21.0 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0271 CONTINUE CT028* TEST 28 WITH DOUBLE PREC EXPR IVTNUM = 28 JVI = 28 AVD = 0.9834D0 AVS = 3.0748D0 / 0.9834D0 BVS = CVS + REAL(3.0748D0 / AVD) IF (BVS - 0.31265E+01) 20280, 10280, 40280 40280 IF (BVS - 0.31269E+01) 10280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 RVCORR = 3.1267033 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0281 CONTINUE CT029* TEST 29 WITH COMPLEX IVTNUM = 29 JVI = 29 AVC = (1.0, 384.9) AVS = (3.495, 98.734) * (1.0, 384.9) BVS = CVS + REAL((3.495, 98.734) * AVC) IF (BVS + 0.38001E+05) 20290, 10290, 40290 40290 IF (BVS + 0.37997E+05) 10290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 RVCORR = -37999.222 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0291 CONTINUE CT030* TEST 30 TEST OF DBLE AND = C***** WITH INTEGER EXPR IVTNUM = 30 JVI = 30 IVI = 5 AVD = 1 * 5 + 6 BVD = CVD + DBLE(1 * IVI + 6) IF (BVD - 0.10999D+02) 20300, 10300, 40300 40300 IF (BVD - 0.11001D+02) 10300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 DVCORR = .11000000D+02 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0301 CONTINUE CT031* TEST 31 WITH REAL EXPR IVTNUM = 31 JVI = 31 AVS = -4.5 AVD = 1.3 / (-4.5) BVD = CVD + DBLE(1.3 / AVS) IF (BVD + 0.28891D+00) 20310, 10310, 40310 40310 IF (BVD + 0.28887D+00) 10310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 DVCORR = -0.288888888888888889D+00 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0311 CONTINUE CT032* TEST 32 WITH COMPLEX EXPR IVTNUM = 32 JVI = 32 AVC = (3.9, 5.0) AVD = (3.4, 4.5) + (3.9, 5.0) BVD = CVD + DBLE((3.4, 4.5) + AVC) IF (BVD - 0.72996D+01) 20320, 10320, 40320 40320 IF (BVD - 0.73004D+01) 10320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 DVCORR = .73000000D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0321 CONTINUE CT033* TEST 33 TEST OF CMPLX AND = C***** WITH INTEGER EXPR IVTNUM = 33 JVI = 33 IVI = 673 AVC = 394 - 673 BVC = CVC + CMPLX(394 - IVI) IF (R2E(1) + 0.27902E+03) 20330, 40332, 40331 40331 IF (R2E(1) + 0.27898E+03) 40332, 40332, 20330 40332 IF (R2E(2) + 0.50000E-04) 20330, 10330, 40330 40330 IF (R2E(2) - 0.50000E-04) 10330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 ZVCORR = (-279.00000, .00000000) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0331 CONTINUE CT034* TEST 34 WITH REAL EXPR IVTNUM = 34 JVI = 34 AVS = 3.48 AVC = 3.48 * 47.98 BVC = CVC + CMPLX(AVS * 47.98) IF (R2E(1) - 0.16696E+03) 20340, 40342, 40341 40341 IF (R2E(1) - 0.16698E+03) 40342, 40342, 20340 40342 IF (R2E(2) + 0.50000E-04) 20340, 10340, 40340 40340 IF (R2E(2) - 0.50000E-04) 10340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 ZVCORR = (166.97040, .00000000) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0341 CONTINUE CT035* TEST 35 IVTNUM = 35 JVI = 35 AVD = 0.94D1 AVC = 3.0283D3 / 0.94D1 BVC = CVC + CMPLX(3.0283D3 / AVD) IF (R2E(1) - 0.32214E+03) 20350, 40352, 40351 40351 IF (R2E(1) - 0.32218E+03) 40352, 40352, 20350 40352 IF (R2E(2) + 0.50000E-04) 20350, 10350, 40350 40350 IF (R2E(2) - 0.50000E-04) 10350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 ZVCORR = (322.15957, .000000000) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0351 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 206 STOP END *END-OF,FM829 FM830.f 481036593 170 2 100666 13337 ` *HEADER,FORTR,FM830 *FILES1,FORTR,FM830,X C*********************************************************************** C***** FORTRAN 77 C***** FM830 C***** YGEN2 - (207) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST GENERIC FUNCTIONS 15.3 C***** AINT, ANINT, NINT, SQRT, EXP, LOG, LOG10 TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 207 DOUBLE PRECISION AVD, DVCORR COMPLEX AVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 9 ZPROG = 'FM830' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 207 WRITE(NUVI,20700) 20700 FORMAT( 1H , / 35H YGEN2 - (207) GENERIC FUNCTIONS --// 1 42H AINT, ANINT, NINT, SQRT, EXP, LOG, LOG10// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST OF NINT WITH DOUBLE PREC IVTNUM = 1 LVI = NINT(27.96875D0) IF (LVI - 28) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 28 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0011 CONTINUE CT002* TEST 2 TEST OF AINT AND ANINT WITH DOUBLE PREC IVTNUM = 2 AVD = AINT(-1.375D0) + ANINT(-27.96875D0) IF (AVD + 0.2900000002D+02) 20020, 10020, 40020 40020 IF (AVD + 0.2899999998D+02) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = -29.0D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 TEST OF SQRT AND EXP WITH DOUBLE PREC IVTNUM = 3 AVD = SQRT(16.0D0) - EXP(5.125D0) IF (AVD + 0.1641741418D+03) 20030, 10030, 40030 40030 IF (AVD + 0.1641741415D+03) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = -0.16417414165D+03 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 TEST OF LOG AND LOG10 WITH DOUBLE PREC IVTNUM = 4 AVD = LOG(9.5D0) * LOG10(25.25D0) IF (AVD - 0.3156899548D+01) 20040, 10040, 40040 40040 IF (AVD - 0.3156899552D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.31568995498D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 TEST OF AINT, SQRT AND LOG10 IVTNUM = 5 AVD = (AINT(2.75D0) + SQRT(17.125D0)) * LOG10(10.0D0) IF (AVD - 0.6138236337D+01) 20050, 10050, 40050 40050 IF (AVD - 0.6138236343D+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.613823634D+01 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 TEST OF AINT AND NINT WITH DOUBLE PREC IVTNUM = 6 AVD = AINT(72.375D0) * NINT(-4.25D0) IF (AVD + 0.2880000002D+03) 20060, 10060, 40060 40060 IF (AVD + 0.2879999998D+03) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -288.0D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 TEST OF SQRT, EXP AND LOG WITH COMPLEX IVTNUM = 7 AVC = SQRT((-4.0,2.0)) + EXP((2.125,6.75)) * LOG((17.375,2.5)) IF (R2E(1) - 0.21370E+02) 20070, 40072, 40071 40071 IF (R2E(1) - 0.21373E+02) 40072, 40072, 20070 40072 IF (R2E(2) - 0.13922E+02) 20070, 10070, 40070 40070 IF (R2E(2) - 0.13925E+02) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (21.3712104, 13.9235362) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CT008* TEST 8 TEST OF SQRT WITH REAL AND COMPLEX IVTNUM = 8 AVC = SQRT(77.76953) - SQRT((-22.125, 7.0)) IF (R2E(1) - 0.80831E+01) 20080, 40082, 40081 40081 IF (R2E(1) - 0.80840E+01) 40082, 40082, 20080 40082 IF (R2E(2) + 0.47611E+01) 20080, 10080, 40080 40080 IF (R2E(2) + 0.47605E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (8.0835370, -4.7608266) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 TEST OF AINT, NINT, EXP AND LOG C***** WITH REAL AND COMPLEX IVTNUM = 9 AVC = AINT(2.25) * NINT(1.50) + EXP((1.0, 2.0)) - LOG(5.125) IF (R2E(1) - 0.12346E+01) 20090, 40092, 40091 40091 IF (R2E(1) - 0.12348E+01) 40092, 40092, 20090 40092 IF (R2E(2) - 0.24716E+01) 20090, 10090, 40090 40090 IF (R2E(2) - 0.24719E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = (1.234665192, 2.471726672) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0091 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 207 STOP END *END-OF,FM830 FM831.f 481036597 170 2 100666 15116 ` *HEADER,FORTR,FM831 *FILES1,FORTR,FM831,X C*********************************************************************** C***** FORTRAN 77 C***** FM831 C***** YGEN3 - (208) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST GENERIC FUNCTIONS 15.3 C***** ABS, MOD, SIGN, SIN, COS, TAN, SINH, COSH, TANH TABLE 5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 208 DOUBLE PRECISION AVD, CVD, DVD, DVCORR COMPLEX AVC, CVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 12 ZPROG = 'FM831' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 208 WRITE(NUVI,20800) 20800 FORMAT( 1H , / 35H YGEN3 - (208) GENERIC FUNCTIONS --// 1 49H ABS, MOD, SIGN, SIN, COS, TAN, SINH, COSH, TANH// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST OF ABS AND SIGN WITH INTEGERS IVTNUM = 1 LVI = ABS(-25) - SIGN(2, -15) IF (LVI - 27) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 27 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0011 CONTINUE CT002* TEST 2 TEST OF MOD, SIGN AND ABS WITH REALS IVTNUM = 2 AVS = MOD(24.5, 2.5) + SIGN(-1.50, -5.125) - ABS(-63.5) IF (AVS + 0.63004E+02) 20020, 10020, 40020 40020 IF (AVS + 0.62996E+02) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = -63.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 TEST OF SIN AND COS WITH DOUBLE PREC IVTNUM = 3 CVD = 1.125D0 AVD = (SIN(CVD)) ** 2 + (COS(CVD)) ** 2 IF (AVD - 0.9999999995D+00) 20030, 10030, 40030 40030 IF (AVD - 0.1000000001D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 TEST OF TAN AND MOD WITH DOUBLE PREC IVTNUM = 4 AVD = TAN(3.5D0) * MOD(32.5D0, 5.0D0) IF (AVD - 0.9364640999D+00) 20040, 10040, 40040 40040 IF (AVD - 0.9364641009D+00) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.9364641003965D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 TEST OF SINH AND COSH WITH DOUBLE PREC IVTNUM = 5 CVD = 3.25D0 AVD = (SINH(CVD)) ** 2 - (COSH(CVD)) ** 2 IF (AVD + 0.1000000001D+01) 20050, 10050, 40050 40050 IF (AVD + 0.9999999995D+00) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = -1.0D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 TEST OF TANH WITH DOUBLE PREC IVTNUM = 6 AVD = TANH(0.5D0) * TANH(0.75D0) IF (AVD - 0.2935132281D+00) 20060, 10060, 40060 40060 IF (AVD - 0.2935132285D+00) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.29351322831389D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 TEST OF ABS AND SIN WITH DOUBLE PREC IVTNUM = 7 AVD = ABS(4.57812500D0) * SIN(1.125D0) IF (AVD - 0.4130693827D+01) 20070, 10070, 40070 40070 IF (AVD - 0.4130693832D+01) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 4.130693829235D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 TEST OF ABS, MOD AND SIGN C***** WITH INTEGER, REAL AND DOUBLE PREC IVTNUM = 8 LVI = -25 AVS = 32.750 BVS = 1.375 CVD = 0.75D0 DVD = 1.125D0 AVD = ABS(LVI) - (MOD(AVS, BVS) * SIGN(CVD, DVD)) IF (AVD - 0.2415624998D+02) 20080, 10080, 40080 40080 IF (AVD - 0.2415625002D+02) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 24.15625D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0081 CONTINUE CT009* TEST 9 TEST OF ABS WITH COMPLEX IVTNUM = 9 AVS = ABS((-2.125, 5.0)) IF (AVS - 0.54325E+01) 20090, 10090, 40090 40090 IF (AVS - 0.54331E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = 5.4328279 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0091 CONTINUE CT010* TEST 10 TEST OF SIN AND COS WITH COMPLEX IVTNUM = 10 AVC = SIN((2.5, 3.5)) * COS((-4.75, 1.25)) IF (R2E(1) + 0.20512E+02) 20100, 40102, 40101 40101 IF (R2E(1) + 0.20510E+02) 40102, 40102, 20100 40102 IF (R2E(2) + 0.16820E+02) 20100, 10100, 40100 40100 IF (R2E(2) + 0.16817E+02) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 ZVCORR = (-20.5109598, -16.8182771) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0101 CONTINUE CT011* TEST 11 TEST OF SIN, COS AND TAN C***** WITH REAL AND COMPLEX IVTNUM = 11 AVS = 2.0 CVC = (3.125, 1.5) BVS = 3.5 AVC = SIN(AVS) + COS(CVC) + TAN(BVS) IF (R2E(1) + 0.10683E+01) 20110, 40112, 40111 40111 IF (R2E(1) + 0.10681E+01) 40112, 40112, 20110 40112 IF (R2E(2) + 0.35331E-01) 20110, 10110, 40110 40110 IF (R2E(2) + 0.35327E-01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 ZVCORR = (-1.068203, -0.0353288) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0111 CONTINUE CT012* TEST 12 TEST OF ABS, MOD, SIN AND COS C***** WITH INTEGER, REAL AND COMPLEX IVTNUM = 12 AVC = ABS(-2) * MOD(17.250, 3.125) + SIN(3.125) - 1 COS((-0.375, 1.625)) IF (R2E(1) - 0.81218E+00) 20120, 40122, 40121 40121 IF (R2E(1) - 0.81227E+00) 40122, 40122, 20120 40122 IF (R2E(2) + 0.89403E+00) 20120, 10120, 40120 40120 IF (R2E(2) + 0.89393E+00) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 ZVCORR = (0.8122242, -0.893981) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0121 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 208 STOP END *END-OF,FM831 FM832.f 481036602 170 2 100666 19069 ` *HEADER,FORTR,FM832 *FILES1,FORTR,FM832,X C*********************************************************************** C***** FORTRAN 77 C***** FM832 C***** YGEN5 - (210) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST GENERIC FUNCTIONS 15.3 C***** SQRT,EXP,LOG,LOG10,COS,SINH,TANH,ASIN,ATAN,ATAN2 TABLE 5 C***** EACH FUNCTION IS FIRST CALLED WITH A REAL VALUE C***** AND THEN WITH A DOUBLE PRECISION VALUE C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 210 DOUBLE PRECISION AVD, BVD, CVD, DVCORR C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 20 ZPROG = 'FM832' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 210 WRITE(NUVI,21000) 21000 FORMAT( 1H , / 35H YGEN5 - (210) GENERIC FUNCTIONS --// 1 50H SQRT,EXP,LOG,LOG10,COS,SINH,TANH,ASIN,ATAN,ATAN2// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST WITH REAL ARGUMENTS C***** WRITE(NUVI, 21001) 21001 FORMAT (/ 8X, 24HTEST WITH REAL ARGUMENTS) CT001* TEST 1 TEST OF SQRT IVTNUM = 1 AVS = 2.0 BVS = 1.0 AVD = SQRT(AVS*BVS) IF (AVD - 0.14141E+01) 20010, 10010, 40010 40010 IF (AVD - 0.14143E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 RVCORR = 0.14142135381699E+01 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0011 CONTINUE CT002* TEST 2 TEST OF EXP IVTNUM = 2 AVS = 10.0 AVD = EXP(AVS / 10.0) IF (AVD - 0.27181E+01) 20020, 10020, 40020 40020 IF (AVD - 0.27185E+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.27182817459106E+01 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0021 CONTINUE CT003* TEST 3 TEST OF LOG IVTNUM = 3 AVS = 0.1234 BVS = .0000567 AVD = LOG(AVS + BVS) IF (AVD + 0.20920E+01) 20030, 10030, 40030 40030 IF (AVD + 0.20917E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = -0.20918648242950E+01 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0031 CONTINUE CT004* TEST 4 TEST OF LOG10 IVTNUM = 4 AVS = 0.375 BVD = 3.75D0 AVD = LOG10(AVS) IF (AVD + 0.42599E+00) 20040, 10040, 40040 40040 IF (AVD + 0.42594E+00) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = -0.42596873641014E+00 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0041 CONTINUE CT005* TEST 5 TEST OF COS IVTNUM = 5 AVS = .25 AVD = COS(AVS*2) IF (AVD - 0.87753E+00) 20050, 10050, 40050 40050 IF (AVD - 0.87763E+00) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 RVCORR = 0.87758255004883E+00 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0051 CONTINUE CT006* TEST 6 TEST OF SINH IVTNUM = 6 AVD = SINH(AVS+3.0) IF (AVD - 0.12875E+02) 20060, 10060, 40060 40060 IF (AVD - 0.12877E+02) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 RVCORR = 0.12875782966614E+02 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0061 CONTINUE CT007* TEST 7 TEST OF TANH IVTNUM = 7 CVD = 0.5D1 AVD = TANH(AVS*20.0) IF (AVD - 0.99986E+00) 20070, 10070, 40070 40070 IF (AVD - 0.99996E+00) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 RVCORR = 0.99990922212601E+00 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0071 CONTINUE CT008* TEST 8 TEST OF ASIN IVTNUM = 8 AVD = ASIN(AVS*4.0) IF (AVD - 0.15707E+01) 20080, 10080, 40080 40080 IF (AVD - 0.15709E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 RVCORR = 0.15707963705063E+01 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0081 CONTINUE CT009* TEST 9 TEST OF ATAN IVTNUM = 9 AVS = 500.0 AVD = ATAN(-2.0*AVS) IF (AVD + 0.15699E+01) 20090, 10090, 40090 40090 IF (AVD + 0.15697E+01) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 RVCORR = -0.15697963237762E+01 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0091 CONTINUE CT010* TEST 10 TEST OF ATAN2 IVTNUM = 10 AVS = 0.0 BVS = -5.0 AVD = ATAN2(AVS, BVS) IF (AVD - 0.31414E+01) 20100, 10100, 40100 40100 IF (AVD - 0.31418E+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 RVCORR = 0.31415927410126E+01 WRITE (NUVI, 80012) IVTNUM, AVD, RVCORR 0101 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TEST WITH DOUBLE PRECISION ARGUMENTS C***** WRITE (NUVI, 21002) 21002 FORMAT (/ 08X, 36HTEST WITH DOUBLE PRECISION ARGUMENTS) CT011* TEST 11 TEST OF SQRT IVTNUM = 11 AVS = 2.0 BVS = 1.0 BVD = SQRT(DBLE(AVS)) IF (BVD - 0.1414213561D+01) 20110, 10110, 40110 40110 IF (BVD - 0.1414213563D+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 0.14142135623731D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0111 CONTINUE CT012* TEST 12 TEST OF EXP IVTNUM = 12 AVS = 10.0 BVD = EXP(1.0D0) IF (BVD - 0.2718281827D+01) 20120, 10120, 40120 40120 IF (BVD - 0.2718281830D+01) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 0.27182818284590D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0121 CONTINUE CT013* TEST 13 TEST OF LOG IVTNUM = 13 AVS = 0.1234 BVS = .0000567 BVD = LOG(0.1234567D0) IF (BVD + 0.2091864793D+01) 20130, 10130, 40130 40130 IF (BVD + 0.2091864790D+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = -0.20918647916786D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0131 CONTINUE CT014* TEST 14 TEST OF LOG10 IVTNUM = 14 AVS = 0.375 BVD = 3.75D0 BVD = LOG10(BVD / 1.0D1) IF (BVD + 0.4259687325D+00) 20140, 10140, 40140 40140 IF (BVD + 0.4259687320D+00) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 DVCORR = -0.42596873227228D+00 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0141 CONTINUE CT015* TEST 15 TEST OF COS IVTNUM = 15 AVS = .25 BVD = COS(0.5D0) IF (BVD - 0.8775825614D+00) 20150, 10150, 40150 40150 IF (BVD - 0.8775825624D+00) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 DVCORR = 0.87758256189037D+00 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0151 CONTINUE CT016* TEST 16 TEST OF SINH IVTNUM = 16 BVD = SINH(3.25D0) IF (BVD - 0.1287578284D+02) 20160, 10160, 40160 40160 IF (BVD - 0.1287578286D+02) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 0.12875782854681D+02 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0161 CONTINUE CT017* TEST 17 TEST OF TANH IVTNUM = 17 CVD = 0.5D1 BVD = TANH(CVD) IF (BVD - 0.9999092037D+00) 20170, 10170, 40170 40170 IF (BVD - 0.9999092048D+00) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = 0.99990920426260D+00 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0171 CONTINUE CT018* TEST 18 TEST OF ASIN IVTNUM = 18 BVD = ASIN(100.0D0 / 1.0D2) IF (BVD - 0.1570796326D+01) 20180, 10180, 40180 40180 IF (BVD - 0.1570796328D+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 DVCORR = 0.15707963267949D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0181 CONTINUE CT019* TEST 19 TEST OF ATAN IVTNUM = 19 AVS = 500.0 BVD = ATAN(-1.0D3) IF (BVD + 0.1569796328D+01) 20190, 10190, 40190 40190 IF (BVD + 0.1569796326D+01) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 DVCORR = -0.15697963271282D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0191 CONTINUE CT020* TEST 20 TEST OF ATAN2 IVTNUM = 20 AVS = 0.0 BVS = -5.0 BVD = ATAN2(0.0D0, -5.0D0) IF (BVD - 0.3141592652D+01) 20200, 10200, 40200 40200 IF (BVD - 0.3141592655D+01) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 DVCORR = 0.31415926535898D+01 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0201 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 210 STOP END *END-OF,FM832 FM833.f 481036606 170 2 100666 14538 ` *HEADER,FORTR,FM833 *FILES1,FORTR,FM833,X C*********************************************************************** C***** FORTRAN 77 C***** FM833 C***** YGEN6 - (211) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST GENERIC FUNCTIONS 15.3 C***** SPECIFIC AND GENERIC NAME OF SAME FUNCTION WITH TABLE 5 C***** SAME TYPE OF ARGUMENT IN A STATEMENT C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 211 DOUBLE PRECISION AVD, BVD, CVD, DVCORR COMPLEX AVC, BVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 11 ZPROG = 'FM833' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 211 WRITE(NUVI,21100) 21100 FORMAT( 1H , / 35H YGEN6 - (211) GENERIC FUNCTIONS --// 1 59H SPECIFIC AND GENERIC NAME OF SAME FUNCTION IN A STATEMENT// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST OF ISIGN AND SIGN WITH INTEGER IVTNUM = 1 KVI = 5 JVI = -3 LVI = ISIGN(KVI, JVI) - SIGN(KVI, JVI) IF (LVI - 0) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0011 CONTINUE CT002* TEST 2 TEST OF AMAX1 AND MAX WITH REALS IVTNUM = 2 BVS = 2.5 CVS = 3.5 AVS = AMAX1(BVS, CVS) - MAX(BVS, CVS) IF (AVS + 0.50000E-04) 20020, 10020, 40020 40020 IF (AVS - 0.50000E-04) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 RVCORR = 0.0000 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0021 CONTINUE CT003* TEST 3 TEST OF DEXP AND EXP WITH DOUBLE PREC IVTNUM = 3 BVD = 1.0D0 AVD = DEXP(BVD) - EXP(BVD) IF (AVD + 0.5000000000D-09) 20030, 10030, 40030 40030 IF (AVD - 0.5000000000D-09) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 TEST OF DTANH AND TANH WITH DOUBLE PREC IVTNUM = 4 BVD = 0.5D0 AVD = DTANH(BVD) - TANH(BVD) IF (AVD + 0.5000000000D-09) 20040, 10040, 40040 40040 IF (AVD - 0.5000000000D-09) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0041 CONTINUE CT005* TEST 5 TEST OF DASIN AND ASIN WITH DOUBLE PREC IVTNUM = 5 BVD = -1.0D0 AVD = DASIN(BVD) - ASIN(BVD) IF (AVD + 0.5000000000D-09) 20050, 10050, 40050 40050 IF (AVD - 0.5000000000D-09) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 TEST OF DNINT AND ANINT WITH DOUBLE PREC IVTNUM = 6 BVD = 2.75D0 AVD = DNINT(BVD) - ANINT(BVD) IF (AVD + 0.5000000000D-09) 20060, 10060, 40060 40060 IF (AVD - 0.5000000000D-09) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 TEST OF DMOD AND MOD WITH DOUBLE PREC IVTNUM = 7 BVD = 6.0D0 CVD = 3.0D0 AVD = DMOD(BVD, CVD) - MOD(BVD, CVD) IF (AVD + 0.5000000000D-09) 20070, 10070, 40070 40070 IF (AVD - 0.5000000000D-09) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 0.00000000D+00 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0071 CONTINUE CT008* TEST 8 TEST OF CABS AND ABS WITH COMPLEX IVTNUM = 8 BVC = (4.0, 3.0) AVC = CABS(BVC) - ABS(BVC) IF (R2E(1) + 0.50000E-04) 20080, 40082, 40081 40081 IF (R2E(1) - 0.50000E-04) 40082, 40082, 20080 40082 IF (R2E(2) + 0.50000E-04) 20080, 10080, 40080 40080 IF (R2E(2) - 0.50000E-04) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = ( 0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0081 CONTINUE CT009* TEST 9 TEST OF CSQRT AND SQRT WITH COMPLEX IVTNUM = 9 BVC = (3.0, 4.0) AVC = CSQRT(BVC) - SQRT(BVC) IF (R2E(1) + 0.50000E-04) 20090, 40092, 40091 40091 IF (R2E(1) - 0.50000E-04) 40092, 40092, 20090 40092 IF (R2E(2) + 0.50000E-04) 20090, 10090, 40090 40090 IF (R2E(2) - 0.50000E-04) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 ZVCORR = ( 0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0091 CONTINUE CT010* TEST 10 TEST OF CLOG AND LOG WITH COMPLEX IVTNUM = 10 BVC = (1.0, 0.0) AVC = CLOG(BVC) - LOG(BVC) IF (R2E(1) + 0.50000E-04) 20100, 40102, 40101 40101 IF (R2E(1) - 0.50000E-04) 40102, 40102, 20100 40102 IF (R2E(2) + 0.50000E-04) 20100, 10100, 40100 40100 IF (R2E(2) - 0.50000E-04) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 ZVCORR = ( 0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0101 CONTINUE CT011* TEST 11 TEST OF CSIN AND SIN WITH COMPLEX IVTNUM = 11 BVC = (1.5, 3.5) AVC = CSIN(BVC) - SIN(BVC) IF (R2E(1) + 0.50000E-04) 20110, 40112, 40111 40111 IF (R2E(1) - 0.50000E-04) 40112, 40112, 20110 40112 IF (R2E(2) + 0.50000E-04) 20110, 10110, 40110 40110 IF (R2E(2) - 0.50000E-04) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 ZVCORR = ( 0.0000, 0.0000) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0111 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 211 STOP END *END-OF,FM833 FM834.f 481036610 170 2 100666 11950 ` *HEADER,FORTR,FM834 *FILES1,FORTR,FM834,X C*********************************************************************** C***** FORTRAN 77 C***** FM834 C***** YGEN7 - (212) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST GENERIC FUNCTIONS 15.3 C***** USES GENERIC FUNCTIONS AS ARGUMENTS TO TABLE 5 C***** OTHER GENERIC FUNCTIONS C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 212 DOUBLE PRECISION AVD, DVCORR COMPLEX AVC, ZVCORR REAL R2E(2) EQUIVALENCE (AVC, R2E) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 7 ZPROG = 'FM834' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 212 WRITE(NUVI,21200) 21200 FORMAT( 1H , / 35H YGEN7 - (212) GENERIC FUNCTIONS --// 1 33H AS ARGUMENTS TO OTHER FUNCTIONS// 2 17H ANS REF. - 15.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 TEST OF ABS AND MIN WITH INTEGERS C***** IVTNUM = 1 LVI = 2 - ABS( MIN( -3, -8)) IF (LVI + 6) 20010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0011 CONTINUE CT002* TEST 2 TEST OF MOD AND SIGN WITH INTEGERS IVTNUM = 2 LVI = 25 * MOD( SIGN( 14, -2), 3) IF (LVI + 50) 20020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 IVCORR = -50 WRITE (NUVI, 80010) IVTNUM, LVI, IVCORR 0021 CONTINUE CT003* TEST 3 TEST OF COS AND SQRT WITH REALS IVTNUM = 3 AVS = 2.0 * COS( 1.25 + SQRT( 3.50)) IF (AVS + 0.19997E+01) 20030, 10030, 40030 40030 IF (AVS + 0.19994E+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 RVCORR = -1.9995689 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0031 CONTINUE CT004* TEST 4 TEST OF MAX, LOG AND LOG10 WITH REALS IVTNUM = 4 AVS = MAX( LOG( 274.125), 4.5 * LOG10( 121.75)) IF (AVS - 0.93841E+01) 20040, 10040, 40040 40040 IF (AVS - 0.93851E+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 RVCORR = 9.3846103 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0041 CONTINUE CT005* TEST 5 TEST OF EXP AND MOD WITH DOUBLE PREC IVTNUM = 5 AVD = 1.0D0 - EXP(5.25D0 + MOD(76.0D0, 2.5D0)) IF (AVD + 0.5170128250D+03) 20050, 10050, 40050 40050 IF (AVD + 0.5170128244D+03) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = -517.01282466834D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 TEST OF SINH, ABS, TAN AND ATAN IVTNUM = 6 AVD = SINH( ABS( TAN( 3.25D0) - ATAN( 1.1D-1)) - 0.01D0) IF (AVD + 0.9274631705D-02) 20060, 10060, 40060 40060 IF (AVD + 0.9274631695D-02) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = -0.92746316996764D-2 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0061 CONTINUE CT007* TEST 7 TEST OF EXP WITH COMPLEX AND COS WITH REAL IVTNUM = 7 AVC = EXP( CMPLX(3.5, COS(0.925))) * CMPLX(1.0, 1.50) IF (R2E(1) + 0.82578E+00) 20070, 40072, 40071 40071 IF (R2E(1) + 0.82569E+00) 40072, 40072, 20070 40072 IF (R2E(2) - 0.59691E+02) 20070, 10070, 40070 40070 IF (R2E(2) - 0.59697E+02) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (-0.8257397, 59.6940191) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0071 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 212 STOP END *END-OF,FM834 FM900.f 481036615 170 2 100666 32148 ` *HEADER,FORTR,FM900 *FILES1,FORTR,FM900,XX C*********************************************************************** C***** FORTRAN 77 C***** FM900 FMTRWF - (021) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REFS C***** TO TEST SIMPLE FORMAT AND FORMATTED DATA 12.9.5.2 C***** TRANSFER STATEMENTS IN EXTERNAL SEQUENTIAL I/O SO 13.1.1 C***** THAT THESE FEATURES MAY BE USED IN OTHER TEST 12.8.1 C***** PROGRAM SEGMENTS FOR DOUBLE PRECISION AND COMPLEX C***** DATA TYPES. C***** RESTRICTIONS OBSERVED 12.8.2 C***** * ALL FORMAT STATEMENTS ARE LABELED 13.1.1 C***** * H AND X DESCRIPTORS ARE NEVER REPEATED 13.2.1 C***** * FOR W.D DESCRIPTORS, D IS ALWAYS SPECIFIED AND C***** W IS EQUAL TO OR GREATER THAN D C***** * FIELD WIDTH IS NEVER ZERO 13.2.1 C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE LIST ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION C***** * ITEMS IN I/O LIST CORRESPOND TO EDIT DESCRIPTORS 13.3 C***** * NEGATIVE OUTPUT VALUES ARE SIGNED 13.5.9 C***** * FIELD WIDTH NEVER EXCEEDED BY OUTPUT 13.5.9 C***** GENERAL COMMENTS C***** PLUS SIGNS FOR INPUT FIELDS ARE USUALLY OMITTED 13.5.9 C***** FORMATTED WRITES WITHOUT AN I/O LIST (FORMAT 13.5.2 C***** STATEMENTS TEST H AND X DESCRIPTORS AND SLASH 13.5.3 C***** RECORD DIVIDERS) 13.5.4 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C INPUT DATA TO THIS SEGMENT CONSISTS OF 17 CARD IMAGES IN COL. 1 - 80 COL. 1----------------------------------------------------------61 CARD 1 1.05.522.066.633.123455.0789 CARD 2 123.00456.88 0.123E+01 +0.987+1 -0.2345+02 -0.6879E+2+0.7E+0 COL 62-----70 CARD 2 3 0.4E+03 COL. 1----------------------------------------------------------61 CARD 3 0.9876543E-04+0.1357913E-04 CARD 4 19.34+0.2468E+02 +.765+287.643.96 0.5407E+0243.96+0.5407E+0 COL. 62-------------78 CARD 4 243.96 0.5407+2 COL. 1----------------------------- ----------------------------61 CARD 5 +0.1D+06 CARD 6 -0.334D-04 -.334-4 +0.7657654D00 0.12345678901D+10 CARD 7 +0.98765432109876D-1+0.98765432109876D-01 .98765432109876 COL. 62-66 CARD 7 -1 COL. 1----------------------------------------------------------61 CARD 8 -.555555542D+03 -0.555555542+3 CARD 9 9.91.19.92.29.93.39.94.49.91.19.92.29.93.39.94.4 CARD 10 9.95.59.96.69.97.79.98.89.95.59.96.69.97.79.98.8 CARD 11 -0.99D+01-0.98D+01-0.97D+01-0.96D+01-0.99D+01 -.98D+01 -.97+ COL. 62-------72 CARD 11 01 -.96+1 CARD 12 +0.99D+01 0.98D+01 +.97D01 +.96D1 CARD 13 +0.99D+01 0.99D+01 0.99D+01+0.99D+01 .99D1 CARD 14 9.95.59.96.69.97.79.98.8 CARD 15 123.45678E2 1234.5678 123.45678 12.345678 1.2345678 .123 COL. 62-66 CARD 15 45678 COL. 1----------------------------------------------------------61 CARD 16 9876.5498.7654E2 9876.54 987.654864786D-486.4786E286.4786 COL. 62---------------80 CARD 16 8657.86D0 9876.54 COL. 1----------------------------------------------------------61 CARD 17 9.8765698.7654E2 9876.54 987.654864786D-386.4786E286.4786 COL. 62---------------80 CARD 17 8657.86D0 9876.54 C***** C***** S P E C I F I C A T I O N S SEGMENT 021 C***** DOUBLE PRECISION DPA1D(5),MCA3D(1,4,2),ZZDVD ,A2D(2,2),A3D(2,2,2) 1,AC1D(10),BC2D(7,4),DPAVD,DPBVD COMPLEX BVC,QAVC,CHAVC,CHBVC,CHCVC,CHDVC 1,LL1C(32),LM2C(8,4),A1C(12),A2C(2,2),B3C(2,2,2),B1C(8) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 IVTOTL = 36 ZPROG = 'FM900' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** HEADER FORMAT STATEMENT WRITE (NUVI,02100) 02100 FORMAT (1H ,/1X,28HFMTRWF - (021) FORMATTED I/O//2X, 1 25HREFS - 12.9.5 13.3 13.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** TESTS 1 THRU 11: C***** FORMATTED READ AND WRITE STATEMENTS WITH COMPLEX 12.8.1 C***** VARIABLES AND ARRAY ELEMENTS IN AN I/O LIST. 12.8.2 C***** E AND F CONVERSION ARE USED IN THE FORMAT 13.5.9.2.1-2 C***** STATEMENTS. SOME FORMAT DESCRIPTORS ARE REPEATED 13.5.9.2.1 C***** 02101 FORMAT (/8X,23HCOMPLEX CONVERSION TEST/) WRITE (NUVI,02101) C***** INPUT CARD 1 02102 FORMAT ( 2(F3.1) , 2(F4.1), 2(F7.4)) READ (IRVI,02102) CHAVC, CHBVC, A1C(2) C***** INPUT CARDS 2, 3 02103 FORMAT ( 2F6.2, 2E10.3, 2E11.4, 2E8.1/ 2E14.7) READ (IRVI,02103) A2C(1,2), B3C(2,2,1), CHCVC, A1C(1), CHDVC C***** INPUT CARD 4 02104 FORMAT (F5.2, E11.4, E10.3, F4.1, 3(F5.2,E11.4)) READ (IRVI,02104) A2C(2,1), BVC, QAVC, LM2C(1,2), LL1C(2) CT001* TEST 1 IVTNUM = 1 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE (NUVI, 70010) CHAVC 70010 FORMAT (26X,F3.1,2X,F3.1) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70011) 70011 FORMAT (26X, 8H1.0 5.5) CT002* TEST 2 IVTNUM = 2 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE (NUVI, 70020) CHBVC 70020 FORMAT (26X,F4.1,2X,F4.1) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70021) 70021 FORMAT (26X,10H22.0 66.6) CT003* TEST 3 IVTNUM = 3 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE (NUVI, 70030) A1C(2) 70030 FORMAT (26X,F7.4,2X,F7.4) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70031) 70031 FORMAT (26X,16H33.1234 55.0789) CT004* TEST 4 IVTNUM = 4 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE (NUVI, 70040) A2C(1,2) 70040 FORMAT (26X,F6.2,2X,F6.2) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70041) 70041 FORMAT (26X,14H123.00 456.88) CT005* TEST 5 IVTNUM = 5 REMRKS = 'LEADING PLUS SIGN/ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM,REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70050) B3C(2,2,1) 70050 FORMAT (26X,E10.3,2X,E10.3) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) 70051 FORMAT (1H ,16X,10HCORRECT: ,22X,26H2 CORRECT ANSWERS POSSIB 1LE) WRITE (NUVI, 70052) 70052 FORMAT (26X,22H+0.123E+01 +0.987E+01/ 1 26X,22H+0.123+001 +0.987+001) CT006* TEST 6 IVTNUM = 6 REMRKS = 'LEADING ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70060) CHCVC 70060 FORMAT (26X,E11.4,2X,E11.4) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) WRITE (NUVI, 70061) 70061 FORMAT (26X,24H-0.2345E+02 -0.6879E+02/ 1 26X,24H-0.2345+002 -0.6879+002) C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADER WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** CT007* TEST 7 IVTNUM = 7 REMRKS = 'LEADING PLUS SIGN/ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70070) A1C(1) 70070 FORMAT (26X,E8.1,2X,E8.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) WRITE (NUVI, 70071) 70071 FORMAT (26X,18H+0.7E+03 +0.4E+03/ 1 26X,18H+0.7+003 +0.4+003) CT008* TEST 8 IVTNUM = 8 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70080) CHDVC 70080 FORMAT (26X,E14.7,2X,E14.7) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) WRITE (NUVI, 70081) 70081 FORMAT (26X,30H+0.9876543E-04 +0.1357913E-04/ 1 26X,30H+0.9876543-004 +0.1357913-004) CT009* TEST 9 IVTNUM = 9 WRITE (NUVI, 70090) IVTNUM 70090 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,31HLEADING PLUS SIGN/ZERO 1OPTIONAL/1H ,48X,21HFOR THE SECOND NUMBER) WRITE (NUVI, 80020) WRITE (NUVI, 70091) A2C(2,1) 70091 FORMAT (26X,F5.2,2X,E11.4) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) WRITE (NUVI, 70092) 70092 FORMAT (26X,18H19.34 +0.2468E+02/ 1 26X,18H19.34 +0.2468+002) CT010* TEST 10 IVTNUM = 10 WRITE (NUVI, 70100) IVTNUM 70100 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,31HLEADING PLUS SIGN/ZERO 1OPTIONAL/1H ,48X,20HFOR THE FIRST NUMBER) WRITE (NUVI, 80020) WRITE (NUVI, 70101) BVC 70101 FORMAT (26X,E10.3,2X,F4.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) WRITE (NUVI, 70102) 70102 FORMAT (26X,16H+0.765E+02 87.6/ 1 26X,16H+0.765+002 87.6) CT011* TEST 11 IVTNUM = 11 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70110) 70110 FORMAT (1H ,16X,9HCOMPUTED:,23X,25H3 COMPUTED LINES EXPECTED) WRITE (NUVI,70111) QAVC, LM2C(1,2), LL1C(2) 70111 FORMAT (3(26X,F7.2,E11.4/)) IVINSP = IVINSP + 1 WRITE (NUVI, 70112) 70112 FORMAT (1H ,16X,10HCORRECT: ,22X,30HEACH RESULT LINE SHOULD 1MATCH /1H ,48X,30HEITHER ONE OF THE 2 POSSIBLE / 2 1H ,48X,13HANSWERS BELOW) WRITE (NUVI, 70113) 70113 FORMAT (26X,18H +43.96+0.5407E+02/ 1 26X,18H +43.96+0.5407+002) C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADER WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 12 THRU 17: C***** FORMATTED READ AND WRITE STATEMENTS WITH 12.8.1 C***** DOUBLE PRECISION VARIABLES IN AN I/O LIST. 12.8.2 C***** D CONVERSION IS USED IN THE FORMAT STATEMENTS. 13.5.9.2.2 C***** SOME D FORMAT DESCRIPTORS ARE REPEATED. (FIELD 13.3 C***** WIDTH ALWAYS INCLUDES 6 EXTRA POSITIONS TO 13.5.9 C***** PROVIDE FOR SIGN, DECIMAL POINT AND EXPONENT 13.5.9.2 C***** AND 1 POSITION FOR OPTIONAL DIGIT ZERO BEFORE C***** THE DECIMAL POINT) C***** 02109 FORMAT (/8X, 17HD CONVERSION TEST/) WRITE (NUVI,02109) C***** INPUT CARD 5 02110 FORMAT ( 2X, D8.1) READ (IRVI,02110) DPAVD C***** INPUT CARDS 6, 7, 8 02111 FORMAT ( 2D10.3, D14.7, D18.11/ 3D21.14/ 2D16.9) READ (IRVI,02111) MCA3D(1,2,2), AC1D(2), BC2D(3,1), AC1D(1), 1 ZZDVD, AC1D(3), DPBVD, MCA3D(1,2,1), BC2D(1,2) CT012* TEST 12 IVTNUM = 12 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI,70120) DPAVD 70120 FORMAT (26X,D8.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) 70121 FORMAT (1H ,16X,10HCORRECT: ,22X,26H3 CORRECT ANSWERS POSSIB 1LE) WRITE (NUVI, 70122) 70122 FORMAT (26X,8H+0.1D+06/26X,8H+0.1E+06/26X,8H+0.1+006) CT013* TEST 13 IVTNUM = 13 REMRKS = 'LEADING ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70130) 70130 FORMAT (1H ,16X,9HCOMPUTED:,23X,25H2 COMPUTED LINES EXPECTED) WRITE (NUVI, 70131) MCA3D(1,2,2), AC1D(2) 70131 FORMAT (26X,D10.3 / 26X,D10.3) IVINSP = IVINSP + 1 WRITE (NUVI, 70132) 70132 FORMAT (1H ,16X,10HCORRECT: ,22X,30HEACH RESULT LINE SHOULD 1MATCH /1H ,48X,30HONE OF THE 3 POSSIBLE ANSWERS / 2 1H ,48X,5HBELOW) WRITE (NUVI, 70133) 70133 FORMAT(26X,10H-0.334D-04/26X,10H-0.334E-04/26X,10H-0.334-004) CT014* TEST 14 IVTNUM = 14 REMRKS = 'LEADING PLUS SIGN/ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70140) BC2D(3,1) 70140 FORMAT (26X,D14.7) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70141) 70141 FORMAT (26X,14H+0.7657654D+00/ 1 26X,14H+0.7657654E+00/ 2 26X,14H+0.7657654+000) CT015* TEST 15 IVTNUM = 15 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70150) AC1D(1) 70150 FORMAT (26X,D18.11) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70151) 70151 FORMAT (26X,18H+0.12345678901D+10/ 1 26X,18H+0.12345678901E+10/ 2 26X,18H+0.12345678901+010) CT016* TEST 16 IVTNUM = 16 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70110) WRITE (NUVI, 70160) ZZDVD,AC1D(3),DPBVD 70160 FORMAT (26X,D21.14 / 26X,D21.14 / 26X,D21.14) IVINSP = IVINSP + 1 WRITE (NUVI, 70132) WRITE (NUVI, 70161) 70161 FORMAT (26X,21H+0.98765432109876D-01/ 1 26X,21H+0.98765432109876E-01/ 2 26X,21H+0.98765432109876-001) CT017* TEST 17 IVTNUM = 17 REMRKS = 'LEADING ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70130) WRITE (NUVI, 70170) MCA3D(1,2,1), BC2D(1,2) 70170 FORMAT (26X,D16.9 /26X,D16.9) IVINSP = IVINSP + 1 WRITE (NUVI, 70132) WRITE (NUVI, 70171) 70171 FORMAT (26X,16H-0.555555542D+03/ 1 26X,16H-0.555555542E+03/ 2 26X,16H-0.555555542+003) C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADER WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 18 THRU 22: C***** FORMATTED READ AND WRITE STATEMENTS WITH ARRAY 12.8.1 C***** NAMES OF ALL TYPES IN AN I/O LIST. THE NUMBER OF 12.8.2 C***** ITEMS IN THE LIST IS VARIABLE. SOME FIELD 13.3 C***** DESCRIPTORS ARE REPEATED. C***** 02114 FORMAT (/8X, 44HTEST UNSUBSCRIPTED ARRAY NAMES IN I/O LISTS /) WRITE (NUVI,02114) C***** INPUT CARDS 9, 10 02115 FORMAT(2X,8(F3.1),8F3.1/8(2(F3.1))) READ (IRVI,02115) B1C,B3C C***** INPUT CARDS 11, 12 02116 FORMAT(4(D9.2),4D9.2/2X,4(D9.2)) READ (IRVI,02116) A3D, A2D C***** INPUT CARDS 13, 14 02117 FORMAT (2X,4(2X),5(D9.2)/4(2(F3.1))) READ (IRVI,02117) DPA1D, A2C CT018* TEST 18 IVTNUM = 18 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 70130) WRITE (NUVI,70180) B1C 70180 FORMAT (26X,8(F3.1) / 26X,8(F3.1)) IVINSP = IVINSP + 1 WRITE (NUVI, 70181) 70181 FORMAT (1H ,16X,10HCORRECT: ,22X,29HEACH RESULT LINE SHOULD 1EQUAL) WRITE (NUVI, 70182) 70182 FORMAT (26X, 24H9.91.19.92.29.93.39.94.4) CT019* TEST 19 IVTNUM = 19 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70130) WRITE (NUVI, 70190) A3D 70190 FORMAT (26X,4(D9.2) / 26X,4(D9.2)) IVINSP = IVINSP + 1 WRITE (NUVI, 70132) WRITE (NUVI, 70191) 70191 FORMAT (26X,36H-0.99D+01-0.98D+01-0.97D+01-0.96D+01/ 1 26X,36H-0.99E+01-0.98E+01-0.97E+01-0.96E+01/ 2 26X,36H-0.99+001-0.98+001-0.97+001-0.96+001) CT020* TEST 20 IVTNUM = 20 REMRKS = 'LEADING PLUS SIGN/ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI,70200) A2D 70200 FORMAT (26X,4(D9.2)) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70201) 70201 FORMAT (26X,36H+0.99D+01+0.98D+01+0.97D+01+0.96D+01/ 1 26X,36H+0.99E+01+0.98E+01+0.97E+01+0.96E+01/ 2 26X,36H+0.99+001+0.98+001+0.97+001+0.96+001) CT021* TEST 21 IVTNUM = 21 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70210) 70210 FORMAT (1H ,16X,9HCOMPUTED:,23X,25H5 COMPUTED LINES EXPECTED) WRITE (NUVI,70211) DPA1D 70211 FORMAT (5(26X,D11.2/)) IVINSP = IVINSP + 1 WRITE (NUVI, 70132) WRITE (NUVI, 70212) 70212 FORMAT (26X,11H +0.99D+01/ 1 26X,11H +0.99E+01/ 2 26X,11H +0.99+001) CT022* TEST 22 IVTNUM = 22 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 70110) WRITE (NUVI,70220) A2C, B3C 70220 FORMAT (26X,8(F3.1) / 26X,8(F3.1) / 26X,8(F3.1)) IVINSP = IVINSP + 1 WRITE (NUVI, 70181) WRITE (NUVI, 70221) 70221 FORMAT (26X,24H9.95.59.96.69.97.79.98.8) C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADER WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 23 THRU 30: C***** FORMATTED WRITES TO TEST THAT LEADING BLANKS 13.5.9 C***** ARE INSERTED IN THE OUTPUT FIELD WHEN THE OUTPUT C***** PRODUCED IS SMALLER THAN THE FIELD WIDTH. (D AND C***** F DESCRIPTORS ARE TESTED.) C***** 02121 FORMAT (/8X, 28HLEADING BLANK INSERTION TEST/) WRITE (NUVI,02121) CT023* TEST 23 IVTNUM = 23 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) 70230 FORMAT (1H ,48X,27HLEADING BLANKS ARE REQUIRED) WRITE (NUVI, 80020) WRITE (NUVI, 70231) AC1D(3) 70231 FORMAT (26X,D9.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70232) 70232 FORMAT (26X,9H +0.1D+00/26X,9H +0.1E+00/26X,9H +0.1+000) CT024* TEST 24 IVTNUM = 24 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70240) ZZDVD 70240 FORMAT (26X,D10.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70241) 70241 FORMAT(26X,10H +0.1D+00/26X,10H +0.1E+00/26X,10H +0.1+000) CT025* TEST 25 IVTNUM = 25 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70250) ZZDVD 70250 FORMAT (26X,D11.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70251) 70251 FORMAT (26X,11H +0.1D+00/ 1 26X,11H +0.1E+00/ 2 26X,11H +0.1+000) CT026* TEST 26 IVTNUM = 26 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70260) ZZDVD 70260 FORMAT (26X,D12.1) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70261) 70261 FORMAT (26X,12H +0.1D+00/ 1 26X,12H +0.1E+00/ 2 26X,12H +0.1+000) CT027* TEST 27 IVTNUM = 27 REMRKS = 'LEADING PLUS OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70270) CHAVC 70270 FORMAT (26X,2(F5.1)) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70271) 70271 FORMAT (26X,10H +1.0 +5.5) CT028* TEST 28 IVTNUM = 28 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70280) B3C(1,1,1) 70280 FORMAT (26X,2(F6.1)) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70281) 70281 FORMAT (26X,12H +9.9 +5.5) C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADER WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** CT029* TEST 29 IVTNUM = 29 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70290) B3C(1,1,1) 70290 FORMAT (26X,2(F7.1)) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70291) 70291 FORMAT (26X,14H +9.9 +5.5) CT030* TEST 30 IVTNUM = 30 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70230) WRITE (NUVI, 80020) WRITE (NUVI, 70300) CHAVC 70300 FORMAT (26X,2(F8.1)) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70301) 70301 FORMAT (26X,16H +1.0 +5.5) C***** TESTS 31 THRU 32: C***** FORMATS WITH G CONVERSIONS USING COMPLEX DATA 13.5.9.2.3 C***** C***** INPUT CARD 15 02123 FORMAT( 3(G11.4), 3G11.4) READ (IRVI,02123) LL1C(1), LL1C(2), LL1C(3) 02124 FORMAT (/8X,17HG CONVERSION TEST/) WRITE (NUVI, 02124) CT031* TEST 31 IVTNUM = 31 REMRKS = 'LEADING PLUS SIGN/ZERO OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 70130) WRITE (NUVI, 70310) LL1C(1), LL1C(2), LL1C(3) 70310 FORMAT (26X,G14.4,4X,2G11.4 / 26X,G14.4,4X,2G11.4) IVINSP = IVINSP + 1 WRITE (NUVI, 70311) 70311 FORMAT(/1H ,16X,10HCORRECT: ,22X,31HCORRESPONDING LINES MUST 1 MATCH ,/1H ,48X,31HEITHER OF THE FOLLOWING TWO , 2 /1H ,48X,31HCORRECT ANSWERS /) WRITE (NUVI, 70312) 70312 FORMAT (26X,36H +0.1235E+05 +1235. +123.5/ 1 26X,36H +12.35 +1.235 +0.1235// 2 26X,36H +0.1235+005 +1235. +123.5/ 3 26X,36H +12.35 +1.235 +0.1235) C***** TESTS 32 THRU 34: C***** ON READ, BUT NOT ON WRITE C***** SCALE FACTOR APPLIED TO F,E,D,G DESCRIPTORS 13.7.5.1 C***** C***** INPUT CARD 16 02126 FORMAT(2PF8.3,-2PE9.4,F9.4,0PG9.4,D9.4,-2PE9.4,F9.4,D9.4,2PG9.4) READ(IRVI,02126)BVC, CHAVC, BC2D(1,4), A1C(1), BC2D(2,1), DPAVD 02127 FORMAT(/8X, 20HSCALE FACTOR ON READ/) WRITE (NUVI, 02127) CT032* TEST 32 IVTNUM = 32 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70320) BVC,CHAVC 70320 FORMAT (26X,F12.4,E12.4,F12.2,F12.3) IVINSP = IVINSP + 1 WRITE (NUVI, 70051) WRITE (NUVI, 70321) 70321 FORMAT (30X,44H+98.7654 +0.9877E+04 +987654.00 +987.654/ 1 30X,44H+98.7654 +0.9877+004 +987654.00 +987.654) CT033* TEST 33 IVTNUM = 33 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70330) BC2D(1,4), A1C(1) 70330 FORMAT (26X,D12.4,E12.4,F12.3) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70331) 70331 FORMAT (26X,36H +0.8648D-02 +0.8648E+04 +8647.860/ 1 26X,36H +0.8648E-02 +0.8648E+04 +8647.860/ 2 26X,36H +0.8648-002 +0.8648+004 +8647.860) CT034* TEST 34 IVTNUM = 34 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70340) BC2D(2,1), DPAVD 70340 FORMAT (26X,D12.4,G16.4) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70341) 70341 FORMAT (26X,24H +0.8658D+04 +98.77/ 1 26X,24H +0.8658E+04 +98.77/ 2 26X,24H +0.8658+004 +98.77) C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADER WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 35 AND 36: C***** SCALE FACTOR APPLIED TO F, E, D, G DESCRIPTORS C***** ON WRITE, BUT, NOT ON READ C***** C***** INPUT CARD 17 02128 FORMAT(F8.2,E9.4,F9.2,G9.3,D9.0,E9.4,F9.4,D9.2,G9.4) READ(IRVI,02128) CHBVC, A2C(2,1), AC1D(4), CHCVC, AC1D(5), DPBVD 02129 FORMAT(/8X, 21HSCALE FACTOR ON WRITE/) WRITE (NUVI, 02129) CT035* TEST 35 IVTNUM = 35 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70350) CHBVC, A2C(2,1), AC1D(4) 70350 FORMAT (26X,2PF12.2,-2PE12.4,F12.4,1PG12.2,D12.4) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70351) 70351 FORMAT (28X,58H +987.66 +0.0099E+06 +98.7654 +9.88E+02 1 +8.6479D+02/28X,58H +987.66 +0.0099E+06 +98.7654 +9.88E+02 2 +8.6479E+02/28X,58H +987.66 +0.0099+006 +98.7654 +9.88+002 3 +8.6479+002) CT036* TEST 36 IVTNUM = 36 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) WRITE(NUVI,70360) CHCVC, AC1D(5), DPBVD 70360 FORMAT (26X,-2PE12.4,2PF12.2,1PD12.4,2PG16.4) IVINSP = IVINSP + 1 WRITE (NUVI, 70121) WRITE (NUVI, 70361) 70361 FORMAT(27X,47H+0.0086E+06 +8647.86 +8.6579D+03 +9877. 1 /27X,47H+0.0086E+06 +8647.86 +8.6579E+03 +9877. 2 /27X,47H+0.0086+006 +8647.86 +8.6579+003 +9877.) CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 21 STOP END *END-OF,FM900 FM901.f 481036619 170 2 100666 13034 ` *HEADER,FORTR,FM901 *FILES1,FORTR,FM901,XX C*********************************************************************** C***** FORTRAN 77 C***** FM901 AFMTF - (023) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REFS C***** TO TEST SIMPLE FORMAT AND FORMATTED DATA 12.9.5.2 C***** TRANSFER STATEMENTS IN EXTERNAL SEQUENTIAL I/O SO 13.1.1 C***** THAT THESE FEATURES MAY BE USED IN OTHER TEST 12.8.1 C***** PROGRAM SEGMENTS FOR CHARACTER DATA TYPES. 4.8 C***** TO TEST READ AND WRITE OF SUBSTRINGS. 5.7 C***** C***** RESTRICTIONS OBSERVED C***** * ALL FORMAT STATEMENTS ARE LABELED 12.8.2 C***** * H AND X DESCRIPTORS ARE NEVER REPEATED 13.1.1 C***** * FIELD WIDTH IS NEVER ZERO 13.5.11 C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE LIST ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION. C***** * ITEMS IN I/O LIST CORRESPOND TO FORMAT DESCRIPTORS 13.3 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C INPUT DATA TO THIS SEG. CONSISTS OF 5 DATA CARD IMAGES IN COLS. 1 - 52 COL. 1-------------------------------------------------52 CARD 1 XYZ123:45$'),.JKLABCDEF67890MNOPQRSTUVW =+-*/(GHI CARD 2 ONEFIVENINEELEVENSEVENTHREE CARD 3 SQUARE THE WORLD IN 40 NIGHTS CARD 4 DAYS 80AROUND CARD 5 TO XXXXX NOT TO XXXX- THAT IS THE QUESTIONXXBE ORBE C***** C***** S P E C I F I C A T I O N S SEGMENT 023 C***** CHARACTER*13 A13VK CHARACTER*27 A27VK CHARACTER*29 A29VK CHARACTER*36 A36VK CHARACTER*43 B43VK C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 IVTOTL = 4 ZPROG = 'FM901' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 23 WRITE (NUVI,02300) 02300 FORMAT(1H , /1X,38H AFMTF - (023) FORMATTED DATA TRANSFER// 1 1X,35H USING A-CONVERSION WITH SUBSTRINGS//1X, 2 31H REFS - 12.9.5.2 13.3 13.5.11) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** TEST THAT DATA MAY BE READ IN A SERIES OF SUBSTRINGS, 5.7 C***** NOT NECESSARILY IN THE ORDER OF POSITION IN THE STRING, 12.8.2 C***** AND CAN BE WRITTEN AS A CHARACTER STRING. 13.5.11 C***** SHOW ALSO THAT THE FULL FORTRAN CHARACTER SET CAN BE READ 3.1 C***** (INCLUDES $ AND :) C***** C***** INPUT CARD 1 READ(IRVI, 02301) A36VK(24:29), A13VK(13:13), A36VK(30:31), 1 A13VK(11:12), A13VK(8:10), A36VK(10:12), A36VK(:6), 2 A36VK(32:), A36VK(13:23), A13VK(1:7), A36VK(7:9) 02301 FORMAT(A6, A1, 2A2, A3, A3, A6, A5, A11, A7, A3) CT001* TEST 1 IVTNUM = 1 REMRKS = '2 SETS OF 2 COMPUTED LINES ' WRITE (NUVI, 80004) IVTNUM, REMRKS REMRKS = 'EXPECTED ' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) WRITE (NUVI, 70010) A36VK(1:6), A36VK(7:9), A36VK(10:12), 1 A36VK(13:23), A36VK(24:29), A36VK(30:31), A36VK(32:36), 2 A36VK, A13VK(:7), A13VK(8:10), A13VK(11:12), A13VK(13:), 3 A13VK 70010 FORMAT (26X,A6,2(A3),A11,A6,A2,A5/26X,A36//26X,A7,A3,A2,A1/ 1 26X,A13) IVINSP = IVINSP + 1 WRITE (NUVI, 70011) 70011 FORMAT(1H ,16X,10HCORRECT: ,22X,32HCORRESPONDING LINE(S) MUST M 1ATCH) WRITE (NUVI, 70012) 70012 FORMAT(26X,36HABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890/ 1 26X,13H =+-*/(),.$':) C***** C***** TEST THAT A CHARACTER VARIABLE CAN BE OUTPUT AS SUBSTRINGS. C***** 13.5.11 C***** INPUT CARD 2 READ(IRVI, 02303) A27VK 02303 FORMAT(A27) CT002* TEST 2 IVTNUM = 2 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE(NUVI, 70020) A27VK(1:3), A27VK(23:27), A27VK(4:7), 1 A27VK(18:22), A27VK(8:11), A27VK(12:17) 70020 FORMAT(26X,A3,A6,A5,A6,A5,A7) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70022) 70022 FORMAT(26X,32HONE THREE FIVE SEVEN NINE ELEVEN) C***** C***** TEST THAT A SUBSTRING CAN BE READ IN, AND PARTIALLY REPLACE C***** A PREVIOUSLY READ CHARACTER STRING. 13.5.11 C***** THIS SHOWS THAT THE LENGTH IS DERIVED FROM THE SUBSTRING, C***** AND NOT THE CHARACTER VARIABLE LENGTH. C***** C***** INPUT CARDS 3-4 READ(IRVI, 02305) A29VK, A29VK(24:29), A29VK(21:22), A29VK(1:6) 02305 FORMAT(A29/A,2A) CT003* TEST 3 IVTNUM = 3 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE(NUVI, 70030) A29VK(1:3), A29VK(4:21), A29VK(22:29) 70030 FORMAT (26X,3(A)) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70032) 70032 FORMAT(25X,30H AROUND THE WORLD IN 80 DAYS ) C***** C***** SPECIFIED FIELD WIDTH IN A A-EDIT DESCRIPTOR C***** IS DIFFERENT FROM SUBSTRING LENGTH C***** C***** INPUT CARD 5 READ(IRVI, 02307) B43VK, B43VK(4:8), B43VK(17:20) 02307 FORMAT(A43, A7, A2) CT004* TEST 4 IVTNUM = 4 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) WRITE (NUVI, 70040) B43VK(:) 70040 FORMAT (26X,A20) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70042) 70042 FORMAT(26X,20HTO BE OR NOT TO BE ) C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 023 STOP END *END-OF,FM901 FM903.f 481036625 170 2 100666 24220 ` *HEADER,FORTR,FM903 *FILES1,FORTR,FM903,XX C*********************************************************************** C***** FORTRAN 77 C***** FM903 IOFMTF - (354) C***** THIS PROGRAM CALLS SUBROUTINE SN904 C*********************************************************************** C***** GENERAL PURPOSE ANS REFS C***** TO TEST ADDITIONAL FEATURES OF READ AND WRITE 12.8 C***** STATEMENTS, FORMATTED RECORDS AND FORMAT STATEMENTS 12.1.1 C***** DOUBLE PRECISION AND COMPLEX DATA TYPES. C***** TO TEST ALL FORMS OF CHARACTER EXPRESSIONS AS 13.1.2 C***** FORMAT SPECIFIERS. C***** RESTRICTIONS OBSERVED C***** * H AND X DESCRIPTORS ARE NEVER REPEATED 13.2.1 C***** * FOR W.D DESCRIPTORS, D IS ALWAYS SPECIFIED AND C***** W IS EQUAL TO OR GREATER THAN D C***** * FIELD WIDTH IS NEVER ZERO C***** * IF AN I/O LIST SPECIFIES AT LEAST ONE ITEM 13.3 C***** AT LEAST ONE REPEATABLE EDIT DESCRIPTOR MUST EXIST C***** IN THE FORMAT SPECIFICATION C***** * ITEMS IN I/O LIST CORRESPOND TO EDIT DESCRIPTORS C***** * NEGATIVE OUTPUT VALUES ARE SIGNED 13.5.9 C***** * AN H EDIT DESCRIPTOR IS NEVER USED ON INPUT 13.5.2 C***** * IN THE INPUT FIELD, FOR THE IW EDIT DESCRIPTOR 13.5.9.1 C***** THE CHARACTER STRING MUST BE AN OPTIONALLY SIGNED C***** INTEGER CONSTANT C***** GENERAL COMMENTS C***** PLUS SIGNS FOR INPUT FIELDS ARE USUALLY OMITTED 13.5.9 C***** C***** CALL SUBROUTINE SN904 (SEGMENT 790) C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C INPUT DATA TO THIS SEGMENT CONSISTS OF 14 CARD IMAGES IN COL. 1 - 56 COL. 1-----------------------------------------------------56 CARD 1 333144446666225555 CARD 2 1234567890 CARD 3 1234567890 CARD 4 1234567890 CARD 5 1234567890 CARD 6 12345 CARD 7 12345123.5123.45D-01 12345D+01 CARD 8 12 345 678 CARD 9 5-1111 3333-5555 7777-9999 CARD 10 12345678901234567890123456781234567890123456789012345678 CARD 11 12345678901234123456789012341234567890123412345678901234 CARD 12 12345678901234123456789012341234567890123456789012345678 CARD 13 12345678901234567890123456781234567890123456789012345678 CARD 14 12345678901234123456789012341234567890123412345678901234 C***** C***** S P E C I F I C A T I O N S SEGMENT 354 C***** INTEGER J1I(6) INTEGER IA1I(8) CHARACTER*11 A11VK CHARACTER*15 C151K(7) CHARACTER*19 A19VK CHARACTER*25 C251K(6) CHARACTER*32 A32VK CHARACTER*52 A52VK CHARACTER*65 A65VK CHARACTER*85 A85VK DOUBLE PRECISION AVD, A1D(4), B4D(2,1,2,2) COMPLEX AVC, BVC, CVC, A2C(2,2) EXTERNAL SN904 C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 IVTOTL = 13 ZPROG = 'FM903' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** HEADER FORMAT STATEMENT WRITE(NUVI, 35400) 35400 FORMAT(1H ,/ 1X, 35HIOFMTF - (354) ADDITIONAL FORMATTED//1X, 1 14HDATA TRANSFERS,//1X, 2 31HANS REF. - 12.9.5.2 13.1 13.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** TEST THAT A FORMAT MAY BE A CHARACTER VARIABLE, 12.4.2(3) C***** A CHARACTER EXPRESSION, A CHARACTER ARRAY, OR A 12.4.2(4) C***** CHARACTER ARRAY ELEMENT. 13.1.2 C***** NOTE THAT THE LENGTH OF THE FORMAT MAY EXCEED THE C***** LENGTH OF AN ARRAY ELEMENT IF THE FORMAT SPECIFIER C***** IS AN ARRAY, BUT NOT IF THE SPECIFIER IS AN ARRAY ELEMENT. WRITE(NUVI, 35401) 35401 FORMAT(/8X, 30HCHARACTER EXPRESSION AS FORMAT/) A19VK = '(I3,I1,I4,I4,I2,I4)' C***** CARD 1 READ(IRVI, A19VK) J1I(3), J1I(1), J1I(4), J1I(6), J1I(2), J1I(5) CT001* TEST 1 - CHARACTER EXPRESSION AS FORMAT IVTNUM = 1 REMRKS = 'LEADING PLUS SIGN OPTIONAL' WRITE (NUVI, 80004) IVTNUM, REMRKS A65VK = '16X,10HCOMPUTED: /26X,I1, 1X, I2, 1X, I3, 1X, I4, 1X, 1I5, 1X, I6' A85VK = '16X,10HCORRECT: ,22X,26H2 CORRECT ANSWERS POSSIBLE/26X 1,26H1 22 333 4444 5555 6666' WRITE(NUVI, '(/1X,' // A65VK // '/1X,' // A85VK // ')') J1I IVINSP = IVINSP + 1 WRITE (NUVI, 70010) 70010 FORMAT (26X,26H1 22 333 4444 +5555 +6666) CT002* TEST 2 - CHARACTER ARRAY AS FORMAT IVTNUM = 2 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) C251K(1) = '(26X, I6, 1X, I5, 1X, I4,' C251K(2) = ' 1X, I3, 1X, I2, 1X, I1 /' C251K(3) = '17X,9HCORRECT: ,22X,26H2 ' C251K(4) = 'CORRECT ANSWERS POSSIBLE/' C251K(5) = '26X,26H 6666 5555 4444 ' C251K(6) = '333 22 1) ' WRITE(NUVI, C251K) (J1I(7-IVI), IVI=1,6) IVINSP = IVINSP + 1 WRITE (NUVI, 70020) 70020 FORMAT (26X,26H +6666 +5555 4444 333 22 1) CT003* TEST 3 - CHARACTER ARRAY ELEMENT AS FORMAT IVTNUM = 3 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) C***** C151K(1) = '(I1,2X,I2)' C151K(3) = '(2X,I3,1X,I4)' C151K(5) = '(I5,T1,I1)' C151K(7) = '(TR4,I2,TL2,I3)' C***** CARDS 2-5 DO 0032 IVI = 1, 7, 2 READ(IRVI, C151K(IVI)) IA1I(IVI), IA1I(IVI+1) 0032 CONTINUE WRITE(NUVI, 70030) IA1I 70030 FORMAT (25X, 8(1X, I5)) IVINSP = IVINSP + 1 WRITE (NUVI, 70031) 70031 FORMAT (1H ,16X,10HCORRECT: ,22X,26H2 CORRECT ANSWERS POSSIBLE) WRITE (NUVI, 70032) 70032 FORMAT(26X, ' 1 45 345 7890 12345 1 56 567'/ 1 26X, ' +1 +45 +345 +7890 12345 +1 +56 +567') C***** C***** TEST ADDITIONAL INTEGER EDITING FEATURES. C***** - IW.M EDITING DESCRIPTOR 13.5.9.1 C***** NOTE THAT IF M IS ZERO AND THE VALUE OF THE INTERNAL C***** DATUM IS ZERO, THE OUTPUT FIELD CONSISTS OF ONLY BLANK C***** CHARACTERS REGARDLESS OF THE SIGN CONTROL IN EFFECT. WRITE(NUVI, 35404) 35404 FORMAT(/8X, 32HINTEGER EDITING AND OUT OF RANGE/) C***** CARD 6 READ(IRVI, 35405) (IA1I(IVI), IVI=1,4) 35405 FORMAT(I6.6, T1, I6.4, TL6, I6.2, TL9, I6.0) CT004* TEST 4 - INTEGER EDITING IVTNUM = 4 WRITE (NUVI, 80004) IVTNUM,REMRKS WRITE (NUVI, 80020) WRITE(NUVI, 70040) (IA1I(IVI), IVI=1,4) 70040 FORMAT(25X, 4(1X, I6)) IVINSP = IVINSP + 1 WRITE (NUVI, 70031) WRITE (NUVI, 70041) 70041 FORMAT(26X, 27H 12345 12345 12345 12345/ 1 26X, 27H+12345 +12345 +12345 +12345) CT005* TEST 5 - OUT OF RANGE IVTNUM = 5 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) JVI = 0 IVI = 12 WRITE (NUVI, 70050) -IVI, IVI, IVI, IVI, IVI, JVI, JVI, JVI 70050 FORMAT (26X, SS, I5.5, S, 1X, I5.5, SS, 1X, I5.3, 1X, I5.1, 1 1X, I5.0, 1X, 1H(, I5.0, 1H), S, 1X, 1H(, I5.0, 1H), 2 SP, 1X, 1H(, I5.0, 1H)) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70051) 70051 FORMAT (26X, 45H***** 00012 012 12 12 ( ) ( ), 1 8H ( )) C ADVANCE TO TOP-OF PAGE AND WRITE HEADERS WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TEST ADDITIONAL DOUBLE PRECISION EDITING FEATURES. 13.5.9.2 C***** - D.P. MAY BE READ, WRITTEN WITH F AND E 13.5.9.2.1 C***** EDIT DESCRIPTOR. 13.5.9.2.2 C***** (D AND G FORMATS ARE TEST IN INTERNAL FILE SEGMENTS C***** 392 AND 393.) C***** - FIELD WIDTH TOO SMALL ON F 13.5.9(4) C***** - EXPONENT WIDTH TOO SMALL ON EW.DE(E) 13.5.9(4) C***** - IF SP AND FIELD TOO SMALL, THE PLUS IS NOT 13.5.9(5) C***** OPTIONAL WRITE(NUVI, 35408) 35408 FORMAT(/8X,41HDOUBLE PRECISION EDITING AND OUT OF RANGE/) C***** CARD 7 READ(IRVI, 35409) B4D 35409 FORMAT(1X, 2F5.2, F10.2, F10.5, TL40, 1X, 2E5.2, E10.2, E10.5E5) CT006* TEST 6 - DOUBLE PRECISION EDITING AND OUT OF RANGE IVTNUM = 6 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (NUVI, 80004) IVTNUM,REMRKS WRITE (NUVI, 80020) B4D(2,1,2,2) = (B4D(2,1,2,2) * 10) ** 12 WRITE(NUVI, 70060) B4D 70060 FORMAT (26X, SP, F6.2, SS, 1X, F5.5, 1X, F6.3, 1X, F6.4, 1 /26X, 3P, E6.0, 0P, 2(5X, E10.5), 5X, E9.5E1) IVINSP = IVINSP + 1 WRITE (NUVI, 70061) 70061 FORMAT(/1H ,16X,10HCORRECT: ,22X,31HCORRESPONDING LINES MUST 1 MATCH ,/1H ,48X,31HEITHER OF THE FOLLOWING TWO , 2 /1H ,48X,31HCORRECT ANSWERS ) WRITE (NUVI, 70062) 70062 FORMAT(26X,26H****** ***** 12.345 1.2345/26X, 1 50H****** .12350E+03 .12345E+02 *********/ 2 /26X,26H****** ***** 12.345 1.2345/26X, 3 50H****** .12350+003 .12345+002 *********) C***** C***** TEST ADDITIONAL COMPLEX EDITING FEATURES. 13.5.9.2.4 C***** - FIELD WIDTH TOO SMALL ON F 13.5.9(4) C***** - EXPONENT WIDTH TOO SMALL ON EW.DE(E) 13.5.9(4) WRITE(NUVI, 35411) 35411 FORMAT(/8X, 32HCOMPLEX EDITING AND OUT OF RANGE/) CT007* TEST 7 - COMPLEX EDITING AND OUT OF RANGE IVTNUM = 7 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) AVC = (25.25, 75.75) BVC = (0.25E+10, 0.75E+10) WRITE(NUVI, 70070) AVC, AVC, BVC, BVC 70070 FORMAT (26X, F7.2, 3X, F6.2, 3X, F5.2, 3X, F4.2, 1 /26X, E8.2E3, 3X, E7.2E2, 2(4X, E6.2E1)) IVINSP = IVINSP + 1 WRITE (NUVI, 70061) WRITE (NUVI, 70071) 70071 FORMAT (26X, 31H 25.25 75.75 25.25 ****/ 1 25X, 39H .25E+010 .75E+10 ****** ******// 2 26X, 31H +25.25 +75.75 25.25 ****/ 3 25X, 39H .25E+010 .75E+10 ****** ******) C***** C***** - TEST BZ, BN EDIT DESCRIPTORS 13.5.8 C***** - TEST T, TL, TR EDIT DESCRIPTORS 13.5.3.1 WRITE(NUVI, 35414) 35414 FORMAT(/8X,36HBZ, BN, T, TL AND TR EDIT DESCRIPTOR/) CT008* TEST 8 - BZ, BN, T, TL, AND TR EDIT DESCRIPTOR IVTNUM = 8 REMRKS = 'LEADING PLUS SIGN OPTIONAL' WRITE (NUVI, 80004) IVTNUM,REMRKS WRITE (NUVI, 80020) C***** CARD 8 READ(IRVI, 70080) AVD, B4D(2,1,1,2), A2C(1,1), AVC 70080 FORMAT(BN, D5.2, BZ, D5.2, TL40, 2F5.2, T1, TR1, TL1, BN, 2F5.1) WRITE(NUVI, 70081) AVD, B4D(2,1,1,2), A2C(1,1), AVC 70081 FORMAT (25X, 2F6.2, (((4(1X, F6.2))))) IVINSP = IVINSP + 1 WRITE (NUVI, 70031) WRITE (NUVI, 70082) 70082 FORMAT(25X, TR26, 14H 123.40 567.80, T25, 13H 12.34506.78, 1 1X, 13H120.34 506.78// 2 25X, TR26, 14H 123.40 567.80, T25, 13H +12.34506.78, 3 1X, 13H120.34 506.78) C***** C***** PASS A CHARACTER CONSTANT, WHICH IS A LEGITIMATE FORMAT C***** SPECIFIER TO A SUBROUTINE. WRITE(NUVI, 35417) 35417 FORMAT(/8X,15HSUBROUTINE CALL/) CT009* TEST 9 - SUBROUTINE CALL IVTNUM = 9 WRITE (NUVI, 80004) IVTNUM,REMRKS C***** CARD 9 A11VK = '(I5, 6(I5))' CALL SN904(A11VK, IRVI, NUVI) IVINSP = IVINSP + 1 C***** C ADVANCE TO TOP-OF PAGE AND WRITE HEADERS WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** - TEST SS AND SP EDIT DESCRIPTORS. 13.5.6 C***** - TEST ALSO THAT A FORMAT SPECIFICATION MAY BE 13.1.2 C***** ALTERED BY A CHARACTER SUBSTRING SUBSTITUTION. 5.7 WRITE(NUVI, 35419) 35419 FORMAT(/8X,25HSS AND SP EDIT DESCRIPTOR/) CT010* TEST 10 - SS AND SP EDIT DESCRIPTORS IVTNUM = 10 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) IVI = 12345 AVS = 25.25 A1D(2) = 5.5D0 A2C(2,1) = (3.0, 4.0) A52VK = '(26X,SP,F5.1,SS,2X,F4.1,SP,(T40,I6,2X,F6.2,SS,F6.1))' WRITE(NUVI, A52VK) A2C(2,1), IVI, AVS, A1D(2), IVI, AVS, A1D(2) IVINSP = IVINSP + 1 WRITE (NUVI, 70101) 70101 FORMAT(/1H ,16X,10HCORRECT: ,22X,31HCORRESPONDING LINES MUST 1 MATCH ) WRITE (NUVI, 70102) 70102 FORMAT(26X,' +3.0 4.0 +12345 +25.25 5.5' 1 /T40,' 12345 25.25 5.5') CT011* TEST 11 - FORMAT ALTERED BY CHARACTER SUBSTRING SUBSTITUTION IVTNUM = 11 WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) A52VK(7:7) = 'S' A52VK(14:15) = 'SP' A52VK(26:26) = 'S' A52VK(45:45) = 'P' WRITE(NUVI, A52VK) A2C(2,1), IVI, AVS, A1D(2), IVI, AVS, A1D(2) IVINSP = IVINSP + 1 WRITE (NUVI, 70101) WRITE (NUVI, 70111) 70111 FORMAT (26X,' 3.0 +4.0 12345 25.25 +5.5' 1 /T40,'+12345 +25.25 +5.5') C***** C***** TEST A COLON EDIT DESCRIPTOR FOLLOWED BY A H-EDIT 13.5.5 C***** DESCRIPTOR TO SHOW THAT THE COLON EDIT DESCRIPTOR C***** TERMINATED IF THERE ARE NO MORE ITEMS IN THE INPUT/OUTPUT LIST WRITE(NUVI, 35422) 35422 FORMAT(/8X,'COLON EDIT DESCRIPTOR'/) CT012* TEST 12 IVTNUM = 12 REMRKS = '2 COMPUTED LINES EXPECTED' WRITE (NUVI, 80004) IVTNUM, REMRKS WRITE (NUVI, 80020) A32VK = 'AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH' WRITE(NUVI, 70120) A32VK, A32VK 70120 FORMAT(26X, A32, :, 'IIIIJJJJ') IVINSP = IVINSP + 1 WRITE (NUVI, 70101) WRITE (NUVI, 70121) 70121 FORMAT(26X, 'AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJ', 1 /26X, 'AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH') C***** C***** TEST THAT FW.D, EW.DE(E) AND GW.DE(E) MAY HAVE MORE DIGITS ON C***** INPUT THAN THE PROCESSOR CAN HANDLE FOR D.P. AND COMPLEX CT013* TEST 13 - LARGE FORMAT SIZE FOR D.P. AND COMPLEX IVTNUM = 13 WRITE (NUVI, 70131) IVTNUM 70131 FORMAT (/1H ,2X,I3,4X,7HINSPECT,32X, 1 'TEST SUCCESSFUL IF PROCESSOR IS '/1H ,48X, 2 'ABLE TO READ INPUT CARDS 10-14 '/1H ,48X, 3 'UNDER F, E, AND G FORMATS WHICH '/1H ,48X, 4 'HAVE MORE DIGITS THAN THE '/1H ,48X, 5 'PROCESSOR CAN HANDLE FOR D. P. '/1H ,48X, 6 'AND COMPLEX') IVINSP = IVINSP + 1 C***** CARDS 10-14 READ(IRVI, 70130) B4D(1,1,1,1), AVD, AVC, A2C(2,2), BVC, 1 (B4D(1,1,IVI,1),IVI=1,2), A1D(1), A2C(1,2), CVC 70130 FORMAT(2F28.14, /2(E14.7E2, G14.14E1), /G14.0E3, E14.14E3, 1 E28.0E1, /2G28.14E2, /2(F14.0, F14.14) ) C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 354 STOP END *HEADER,FORTR,FM903,SUBRTN,FM904 C*********************************************************************** C***** FORTRAN 77 C***** FM904 SN904 - (790) C***** THIS SUBROUTINE IS CALLED BY FM903 C*********************************************************************** C***** GENERAL PURPOSE ANS REFS C***** THIS SUBROUTINE IS CALLED BY IOFMTF (354) C***** IT IS USED PRIMARILY TO TEST THAT A CHARACTER 13.1.2 C***** CONSTANT MAY BE PASSED AS A PARAMETER TO A 15.6.2.3 C***** SUBROUTINE AND USED AS A FORMAT. C***** IT ALSO TESTS THAT A FORMAT MAY BE DEFINED IN A 9.4 C***** DATA STATEMENT. C***** RESTRICTIONS OBSERVED C***** SEE SEGMENT 354 C***** SUBROUTINE SN904(A0WVK, IRWVI, NUWVI) C***** C***** S P E C I F I C A T I O N S SEGMENT 790 C***** CHARACTER*(*) A0WVK CHARACTER*130 A130VK INTEGER I1I(5) C***** C***** TESTS THAT C***** - A FORMAT SPECIFIER MAY BE PASSED AS A CHARACTER 13.1.2 C***** CONSTANT TO A SUBROUTINE. 15.6.2.3 C***** - A FORMAT SPECIFIER MAY BE DEFINED IN A DATA 13.1.2 C***** STATEMENT. 9.4 C***** - AN INPUT LIST MAY CONTAIN AN INTEGER THAT IS USED 12.8.2.3 C***** AS A SUBSCRIPT IN AN IMPLIED DO-LIST. C***** - AN OUTPUT LIST MAY CONTAIN AN EXPRESSION WITH AN 12.8.2.2 C***** INTRINISC FUNCTION. 15.3 C***** DATA A130VK/'(16X,10HCOMPUTED: /26X, 3I5/16X,10HCORRECT: ,22X, 1''2 CORRECT ANSWERS POSSIBLE''/26X,'' 1111 3333-5555''/26X,''+1111 2+3333-5555'')'/ READ(IRWVI, A0WVK) IVI, (I1I(JVI),JVI=1,IVI) WRITE(NUWVI, A130VK) IABS(I1I(1)), MAX0(I1I(2),I1I(5)), I1I(3) C***** RETURN END *END-OF,FM903 FM905.f 481036628 170 2 100666 13001 ` *HEADER,FORTR,FM905 *FILES1,FORTR,FM905,X C*********************************************************************** C***** FORTRAN 77 C***** FM905 C***** LSTDO1 - (371) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST LIST DIRECTED OUTPUT ON 13.6 C***** INTEGER, REAL, LOGICAL, AND CHARACTER DATA TYPES 12.4 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 371 LOGICAL B1B(3), AVB CHARACTER A5VK*5, A9VK*9, A33VK*33, A82VK*82 CHARACTER A51K(4)*5 C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 10 ZPROG = 'FM905' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADING FOR SEGMENT 371 WRITE(NUVI,37100) 37100 FORMAT(1H , /16H LSTDO1 - (371) , 1 43H LIST DIRECTED OUTPUT FOR SUBSET DATA TYPES// 2 22H ANS REF. - 13.6 12.4) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** WRITE (NUVI, 70000) 70000 FORMAT (1H ,48X,31HTHE CORRECT LINE OF EACH TEST / 1 1H ,48X,31HIS HOLLERITH INFORMATION. / 2 1H ,48X,31HCOLUMN SPACING, LINE BREAKS, / 3 1H ,48X,31HAND THE NUMBER OF DECIMAL / 4 1H ,48X,31HPLACES FOR REAL NUMBERS ARE / 5 1H ,48X,31HPROCESSOR DEPENDENT. / 6 1H ,48X,31HEITHER E OR F FORMAT MAY BE / 7 1H ,48X,31HUSED FOR REAL NUMBERS. /) CT001* TEST 1 - INTEGER IVTNUM = 1 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) IVI = 2 WRITE(NUVI, *) IVI IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70011) 70011 FORMAT (1H ,6X,1H2) CT002* TEST 2 - SEVERAL INTEGERS IVTNUM = 2 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) IVI = 1 JVI = 3 KVI = 5 LVI = 7 MVI = 9 WRITE(NUVI, *) IVI, JVI, KVI, LVI, MVI IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70021) 70021 FORMAT (1H ,6X,13H1 3 5 7 9) CT003* TEST 3 - REAL IVTNUM = 3 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVS = 2.5 WRITE(NUVI, *) AVS IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70031) 70031 FORMAT (1H ,6X,3H2.5) CT004* TEST 4 - SEVERAL REALS IVTNUM = 4 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVS = 0.25E-10 BVS = 0.25 CVS = 0.25E+3 DVS = 0.25E+10 WRITE(NUVI, *) AVS, BVS, CVS, DVS IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70041) 70041 FORMAT(1H ,6X,31H0.25E-10 0.25 250.0 0.25E+10) CT005* TEST 5 - IMPLIED-DO TO PRINT ARRAY OF LOGICALS IVTNUM = 5 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) B1B(1) = .TRUE. B1B(2) = .FALSE. B1B(3) = .TRUE. WRITE(NUVI, *) (B1B(IVI), IVI = 1,3) IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70051) 70051 FORMAT(1H ,6X,7HT F T) CT006* TEST 6 - LIST OF CHARACTER VALUES, USING ARRAY NAME IVTNUM = 6 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) A51K(1) = 'ONE ' A51K(2) = 'TWO ' A51K(3) = 'THREE' A51K(4) = 'FOUR ' WRITE(NUVI, *) A51K IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70061) 70061 FORMAT(1H ,6X,20HONE TWO THREEFOUR ) CT007* TEST 7 - MIXED LIST IVTNUM = 7 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) IVI = -3 AVS = 15.25 AVB = .TRUE. A5VK = 'HELLO' WRITE(NUVI,*) IVI, AVS, A5VK, AVB IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70071) 70071 FORMAT(1H ,6X,19H-3 15.25 HELLO T) CT008* TEST 8 - CHARACTER CONSTANT CONTAINING EMBEDDED ' IVTNUM = 8 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) A9VK = '5 O''CLOCK' WRITE(NUVI, *) A9VK IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70081) 70081 FORMAT(1H ,6X,9H5 O'CLOCK) CT009* TEST 9 - CHARACTER CONSTANT SPILLING OVER RECORD BOUNDARY IVTNUM = 9 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) A5VK = 'SHORT' A33VK = 'THIS IS A LONGER CHARACTER STRING' A82VK = '1234567890123456789012345678901234567890123456789012345 167890123456789012' WRITE(NUVI, *) A5VK, A33VK, A82VK IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70091) 70091 FORMAT(1H , 40HSHORT THIS IS A LONGER CHARACTER STRING, 1 40H 123456789012345678901234567890123456789/ 2 1H ,33H012345678901234567890123456789012) CT010* TEST 10 - SEVERAL IDENTICAL VALUES IVTNUM = 10 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) IVI = 5 JVI = 5 KVI = 5 LVI = 5 MVI = 5 WRITE(NUVI, *) IVI, JVI, KVI, LVI, MVI IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70101) 70101 FORMAT(1H ,6X,22H5 5 5 5 5 OR 5*5) CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 371 STOP END *END-OF,FM905 FM906.f 481036634 170 2 100666 22200 ` *HEADER,FORTR,FM906 *FILES1,FORTR,FM906,XX C*********************************************************************** C***** FORTRAN 77 C***** FM906 C***** LSTDI2 - (372) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST LIST DIRECTED INPUT 13.6 C***** DOUBLE PRECISION, COMPLEX DATA TYPES INCLUDED 12.4 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C INPUT DATA TO THIS SEGMENT CONSISTS OF 12 CARD IMAGES IN COL. 1-44 COL. 1-----------------------------------------44 CARD 1 2.5D0 CARD 2 1.5 2.5D0 3.5E0 CARD 3 (3.0,4.0) CARD 4 (1.0,0.0) (0.0,0.0) (0.0,3.0) CARD 5 2, 2.5D0, 2.5D0, T, (3.0,4.0), 'TEST' CARD 6 ( 2.5 , 3.5 ) CARD 7 (1.0 , CARD 8 2.0) CARD 9 , (2.0, 3.0),,6.0D0, 2*, CARD 10 1.0D0 (2.0, 2.0) 3.0D0 (4.0, 4.0) 5.0D0 CARD 11 6.0D0 (7.0, 7.0) / 8.0D0 (9.0, 9.0) 10.0D0 CARD 12 2.0D0 4.0D0 / 6.0D0 8.0D0 10.0D0 C***** C***** S P E C I F I C A T I O N S SEGMENT 372 LOGICAL AVB CHARACTER A4VK*4,CVCORR*4 DOUBLE PRECISION AVD, BVD, CVD, DVCORR DOUBLE PRECISION A1D(4) COMPLEX AVC, BVC, CVC, ZVCORR REAL R2E(6) EQUIVALENCE (AVC,R2E(1)),(BVC,R2E(3)),(CVC,R2E(5)) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 IVTOTL = 28 ZPROG = 'FM906' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADING FOR SEGMENT 372 WRITE(NUVI,37200) 37200 FORMAT(1H , /16H LSTDI2 - (372) , 1 20H LIST DIRECTED INPUT, 2 32H FOR D.P. AND COMPLEX DATA TYPES// 3 22H ANS REF. - 13.6 12.4) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** CT001* TEST 1 - CARD 1 DOUBLE PRECISION IVTNUM = 1 READ(IRVI, *) AVD IF (AVD - 0.2499999998D+01) 20010, 10010, 40010 40010 IF (AVD - 0.2500000002D+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 2.5D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE C***** TESTS 2 THRU 4 - CARD 2 SEVERAL DOUBLE PRECISION CT002* TEST 2 IVTNUM = 2 READ(IRVI, *) AVD, BVD, CVD IF (AVD - 0.1499999999D+01) 20020, 10020, 40020 40020 IF (AVD - 0.1500000001D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 1.5D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 IVTNUM = 3 IF (BVD - 0.2499999998D+01) 20030, 10030, 40030 40030 IF (BVD - 0.2500000002D+01) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 2.5D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0031 CONTINUE CT004* TEST 4 IVTNUM = 4 IF (CVD - 0.3499999998D+01) 20040, 10040, 40040 40040 IF (CVD - 0.3500000002D+01) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 3.5D0 WRITE (NUVI, 80031) IVTNUM, CVD, DVCORR 0041 CONTINUE CT005* TEST 5 - CARD 3 COMPLEX IVTNUM = 5 READ(IRVI, *) AVC IF (R2E(1) - 0.29998E+01) 20050, 40052, 40051 40051 IF (R2E(1) - 0.30002E+01) 40052, 40052, 20050 40052 IF (R2E(2) - 0.39998E+01) 20050, 10050, 40050 40050 IF (R2E(2) - 0.40002E+01) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 ZVCORR = (3.0, 4.0) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0051 CONTINUE C***** TESTS 6 THRU 8 - CARD 4 SEVERAL COMPLEX CT006* TEST 6 IVTNUM = 6 READ(IRVI, *) AVC, BVC, CVC IF (R2E(1) - 0.99995E+00) 20060, 40062, 40061 40061 IF (R2E(1) - 0.10001E+01) 40062, 40062, 20060 40062 IF (R2E(2) + 0.50000E-04) 20060, 10060, 40060 40060 IF (R2E(2) - 0.50000E-04) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 ZVCORR = (1.0, 0.0) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 IF (R2E(3) + 0.50000E-04) 20070, 40072, 40071 40071 IF (R2E(3) - 0.50000E-04) 40072, 40072, 20070 40072 IF (R2E(4) + 0.50000E-04) 20070, 10070, 40070 40070 IF (R2E(4) - 0.50000E-04) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 ZVCORR = (0.0, 0.0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 IF (R2E(5) + 0.50000E-04) 20080, 40082, 40081 40081 IF (R2E(5) - 0.50000E-04) 40082, 40082, 20080 40082 IF (R2E(6) - 0.29998E+01) 20080, 10080, 40080 40080 IF (R2E(6) - 0.30002E+01) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 ZVCORR = (0.0, 3.0) WRITE (NUVI, 80045) IVTNUM, CVC, ZVCORR 0081 CONTINUE C***** TESTS 9 THRU 14 - CARD 5 MIXED LIST CT009* TEST 9 IVTNUM = 9 READ(IRVI, *) IVI, AVD, AVS, AVB, AVC, A4VK IF (IVI - 2) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (NUVI, 80010) IVTNUM, IVI, IVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 IF (AVD - 0.2499999998D+01) 20100, 10100, 40100 40100 IF (AVD - 0.2500000002D+01) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 2.5D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 IVTNUM = 11 IF (AVS - 0.24998E+01) 20110, 10110, 40110 40110 IF (AVS - 0.25002E+01) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 RVCORR = 2.5 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0111 CONTINUE CT012* TEST 12 IVTNUM = 12 IVCOMP = 0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 1) 20120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 LVCORR = 1 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVCOMP WRITE (NUVI, 80026) LVCORR 0121 CONTINUE C***** ADVANCE TO TOP-OF-PAGE AND WRITE HEADERS WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) CT013* TEST 13 IVTNUM = 13 IF (R2E(1) - 0.29998E+01) 20130, 40132, 40131 40131 IF (R2E(1) - 0.30002E+01) 40132, 40132, 20130 40132 IF (R2E(2) - 0.39998E+01) 20130, 10130, 40130 40130 IF (R2E(2) - 0.40002E+01) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 ZVCORR = (3.0, 4.0) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0131 CONTINUE CT014* TEST 14 IVTNUM = 14 IVCOMP = 0 IF (A4VK.EQ.'TEST') IVCOMP = 1 IF (IVCOMP - 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 CVCORR = 'TEST' WRITE (NUVI, 80018) IVTNUM, A4VK, CVCORR 0141 CONTINUE CT015* TEST 15 - CARD 6 COMPLEX CONSTANT W/EMBEDDED BLANKS IVTNUM = 15 READ(IRVI, *) AVC IF (R2E(1) - 0.24998E+01) 20150, 40152, 40151 40151 IF (R2E(1) - 0.25002E+01) 40152, 40152, 20150 40152 IF (R2E(2) - 0.34998E+01) 20150, 10150, 40150 40150 IF (R2E(2) - 0.35002E+01) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 ZVCORR = (2.5, 3.5) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0151 CONTINUE CT016* TEST 16 - CARDS 7-8 COMPLEX WITH EMBEDDED END-OF-RECORD IVTNUM = 16 READ(IRVI, *) AVC IF (R2E(1) - 0.99995E+00) 20160, 40162, 40161 40161 IF (R2E(1) - 0.10001E+01) 40162, 40162, 20160 40162 IF (R2E(2) - 0.19999E+01) 20160, 10160, 40160 40160 IF (R2E(2) - 0.20001E+01) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 ZVCORR = (1.0, 2.0) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0161 CONTINUE C***** TESTS 17 THRU 22 - CARD 9 NULL VALUES CT017* TEST 17 IVTNUM = 17 AVD = 1.0D0 BVC = (4.0, 5.0) CVC = (7.0, 8.0) CVD = 9.0D0 READ(IRVI, *) AVD, AVC, BVC, BVD, CVC, CVD IF (AVD - 0.9999999995D+00) 20170, 10170, 40170 40170 IF (AVD - 0.1000000001D+01) 10170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 DVCORR = 1.0D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0171 CONTINUE CT018* TEST 18 IVTNUM = 18 IF (R2E(1) - 0.19999E+01) 20180, 40182, 40181 40181 IF (R2E(1) - 0.20001E+01) 40182, 40182, 20180 40182 IF (R2E(2) - 0.29998E+01) 20180, 10180, 40180 40180 IF (R2E(2) - 0.30002E+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 ZVCORR = (2.0, 3.0) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0181 CONTINUE CT019* TEST 19 IVTNUM = 19 IF (R2E(3) - 0.39998E+01) 20190, 40192, 40191 40191 IF (R2E(3) - 0.40002E+01) 40192, 40192, 20190 40192 IF (R2E(4) - 0.49997E+01) 20190, 10190, 40190 40190 IF (R2E(4) - 0.50003E+01) 10190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 ZVCORR = (4.0, 5.0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0191 CONTINUE CT020* TEST 20 IVTNUM = 20 IF (BVD - 0.5999999997D+01) 20200, 10200, 40200 40200 IF (BVD - 0.6000000003D+01) 10200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 DVCORR = 6.0D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0201 CONTINUE CT021* TEST 21 IVTNUM = 21 IF (R2E(5) - 0.69996E+01) 20210, 40212, 40211 40211 IF (R2E(5) - 0.70004E+01) 40212, 40212, 20210 40212 IF (R2E(6) - 0.79996E+01) 20210, 10210, 40210 40210 IF (R2E(6) - 0.80004E+01) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 ZVCORR = (7.0, 8.0) WRITE (NUVI, 80045) IVTNUM, CVC, ZVCORR 0211 CONTINUE CT022* TEST 22 IVTNUM = 22 IF (CVD - 0.8999999995D+01) 20220, 10220, 40220 40220 IF (CVD - 0.9000000005D+01) 10220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 DVCORR = 9.0D0 WRITE (NUVI, 80031) IVTNUM, CVD, DVCORR 0221 CONTINUE C***** TESTS 23 THRU 27 - CARDS 10-11 SLASH TERMINATOR CT023* TEST 23 IVTNUM = 23 READ(IRVI, *) AVD, AVC, BVD, BVC, CVD READ(IRVI, *) AVD, AVC, BVD, BVC, CVD IF (AVD - 0.5999999997D+01) 20230, 10230, 40230 40230 IF (AVD - 0.6000000003D+01) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 DVCORR = 6.0D0 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0231 CONTINUE CT024* TEST 24 IVTNUM = 24 IF (R2E(1) - 0.69996E+01) 20240, 40242, 40241 40241 IF (R2E(1) - 0.70004E+01) 40242, 40242, 20240 40242 IF (R2E(2) - 0.69996E+01) 20240, 10240, 40240 40240 IF (R2E(2) - 0.70004E+01) 10240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 ZVCORR = (7.0, 7.0) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0241 CONTINUE CT025* TEST 25 IVTNUM = 25 IF (BVD - 0.2999999998D+01) 20250, 10250, 40250 40250 IF (BVD - 0.3000000002D+01) 10250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 DVCORR = 3.0D0 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0251 CONTINUE CT026* TEST 26 IVTNUM = 26 IF (R2E(3) - 0.39998E+01) 20260, 40262, 40261 40261 IF (R2E(3) - 0.40002E+01) 40262, 40262, 20260 40262 IF (R2E(4) - 0.39998E+01) 20260, 10260, 40260 40260 IF (R2E(4) - 0.40002E+01) 10260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 ZVCORR = (4.0, 4.0) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0261 CONTINUE CT027* TEST 27 IVTNUM = 27 IF (CVD - 0.4999999997D+01) 20270, 10270, 40270 40270 IF (CVD - 0.5000000003D+01) 10270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 DVCORR = 5.0D0 WRITE (NUVI, 80031) IVTNUM, CVD, DVCORR 0271 CONTINUE CT028* TEST 28 IVTNUM = 28 A1D(3) = 3.0D0 READ(IRVI, *) (A1D(IVI), IVI=1,4) IF (A1D(3) - 0.2999999998D+01) 20280, 10280, 40280 40280 IF (A1D(3) - 0.3000000002D+01) 10280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 DVCORR = 3.0D0 WRITE (NUVI, 80031) IVTNUM, A1D(3), DVCORR 0281 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 372 STOP END *END-OF,FM906 FM907.f 481036638 170 2 100666 12105 ` *HEADER,FORTR,FM907 *FILES1,FORTR,FM907,X C*********************************************************************** C***** FORTRAN 77 C***** FM907 C***** LSTDO2 - (373) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST LIST DIRECTED OUTPUT 13.6 C***** DOUBLE PRECISION AND COMPLEX DATA TYPES INCLUDED 12.4 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 373 DOUBLE PRECISION AVD, BVD, CVD COMPLEX AVC, BVC, CVC, DVC CHARACTER A4VK*4 C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 8 ZPROG = 'FM907' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADING FOR SEGMENT 373 WRITE(NUVI,37300) 37300 FORMAT(1H , /16H LSTDO2 - (373) , 1 21H LIST DIRECTED OUTPUT, 2 32H FOR D.P. AND COMPLEX DATA TYPES// 3 22H ANS REF. - 13.6 12.4) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** WRITE (NUVI, 70000) 70000 FORMAT (1H ,48X,31HTHE CORRECT LINE OF EACH TEST / 1 1H ,48X,31HIS HOLLERITH INFORMATION. / 2 1H ,48X,31HCOLUMN SPACING, LINE BREAKS, / 3 1H ,48X,31HAND THE NUMBER OF DECIMAL / 4 1H ,48X,31HPLACES FOR DOUBLE PRECISION / 5 1H ,48X,31HOR COMPLEX NUMBERS ARE / 6 1H ,48X,31HPROCESSOR DEPENDENT. / 7 1H ,48X,31HEITHER E OR F FORMAT MAY BE / 8 1H ,48X,31HUSED FOR DOUBLE PRECISION OR / 9 1H ,48X,31HCOMPLEX NUMBERS. /) CT001* TEST 1 - DOUBLE PRECISION IVTNUM = 1 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVD = 2.5D0 WRITE(NUVI, *) AVD IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70011) 70011 FORMAT (1H ,6X,3H2.5) CT002* TEST 2 - COMPLEX IVTNUM = 2 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVC = (3.0, 4.0) WRITE(NUVI, *) AVC IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70021) 70021 FORMAT(1H ,6X,10H (3.0,4.0)) CT003* TEST 3 - SEVERAL DOUBLE PRECISION IVTNUM = 3 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVD = 2.5D0 BVD = 2.5D-10 CVD = 2.5D+10 WRITE(NUVI, *) AVD, BVD, CVD IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70031) 70031 FORMAT(1H ,6X,21H2.5 2.5D-10 2.5D+10) CT004* TEST 4 - SEVERAL COMPLEX IVTNUM = 4 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVC = (0.0, 1.0) BVC = (8.0, 10.0) CVC = (-5.0, 0.0) DVC = (0.0, 0.0) WRITE(NUVI,*) AVC, BVC, CVC, DVC IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70041) 70041 FORMAT(1H ,6X,48H (0.0,1.0) (8.0,10.0) (-5.0,0.0) (0.0, 10.0)) CT005* TEST 5 - MIXED LIST IVTNUM = 5 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVC = (3.0, 4.0) BVC = (-3.0, -4.0) AVD = 5.0D0 BVD = -5.0D0 WRITE(NUVI,*) AVC, AVD, BVD, BVC IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70051) 70051 FORMAT(1H ,6X,35H (3.0,4.0) 5.0 -5.0 (-3.0,-4.0)) CT006* TEST 6 - MIXED MODE EXPRESSION IVTNUM = 6 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) AVC = (2.0, 3.0) IVI = 3 WRITE(NUVI, *) AVC * IVI IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70061) 70061 FORMAT(1H ,6X,10H (6.0,9.0)) CT007* TEST 7 - MIXED MODE EXPRESSION IVTNUM = 7 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) IVI = 2 AVS = 6.5 WRITE(NUVI, *) AVS / IVI IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70071) 70071 FORMAT(1H ,6X,4H3.25) CT008* TEST 8 - MIXED LIST IVTNUM = 8 WRITE (NUVI, 80004) IVTNUM WRITE (NUVI, 80020) A4VK = 'GOOD' AVS = 2.5 AVC = (4, -6) WRITE(NUVI, *) AVC / 2, .TRUE., AVS ** 3, A4VK // 'BYE', 1 ' FOR NOW' IVINSP = IVINSP + 1 WRITE (NUVI, 80022) WRITE (NUVI, 70081) 70081 FORMAT(1H ,6X,40H (2.0,-3.0) T 15.625 GOODBYE FOR NOW) CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 373 STOP END *END-OF,FM907 FM908.f 481036643 170 2 100666 35071 ` *HEADER,FORTR,FM908 *FILES1,FORTR,FM908,X C*********************************************************************** C***** FORTRAN 77 C***** FM908 C***** INTER3 - (392) C***** C*********************************************************************** C***** TESTING OF INTERNAL FILES - ANS. REF C***** USING READ 12.2.5 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 392 C***** DOUBLE PRECISION AVD, BVD, CVD, DVD, EVD, DVCORR LOGICAL AVB CHARACTER*43 A43VK, D43VK, F43VK, G43VK, K43VK, N43VK CHARACTER A8VK*8, E51VK*51, L53VK*53, I82VK*82 CHARACTER J97VK*97, C431K(2)*43, CVCORR*30 CHARACTER*29 B291K(5), M291K(5), H131K(2)*13 COMPLEX AVC, BVC, CVC, DVC, ZVCORR REAL R2E(8) EQUIVALENCE (R2E(1),AVC),(R2E(3),BVC),(R2E(5),CVC),(R2E(7),DVC) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 54 ZPROG = 'FM908' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 392 C***** WRITE(NUVI,39200) 39200 FORMAT(1H ,/ 44H INTER3 - (392) INTERNAL FILES -- USING READ 1 //19H ANS. REF. - 12.2.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** A43VK = ' 2.1000000D1 23.45600D3 23.450000000D2' D43VK = '34.58673D2 3458.67300 34.58673D2 3458.673 ' F43VK = 'T 10.98THISISIT 3.4945D2 3 ' G43VK = ' 2.343 34.394 ' K43VK = ' 0.934, 34.567 34.65 0.63540D1 ' N43VK = '34 34.98395.83000D2 F.FALSE.13.45300E+2 ' E51VK = ' 348 3.4783E1384.3847D1 T 3.48570 KDFJ D/.' L53VK = ' 0.345 ,3.4345E01,F, 34.85900D-1, 10.000012345678' I82VK = ' 2.34 , 2.456 2.34 , 2.456 0.234E01, 2.456E00 1 0.234E+001, 2.456E-000' J97VK = ' 5.67980, 0.9876 5.67980, 0.9876 05.6798E0 10, 9.8760E-1 5.67980E0000,0.09876E+001' B291K(1) = '34.38457D1 34.38457D1 ' B291K(2) = '34.38457D1 ' B291K(3) = '34.38457D1 34.38457D1 ' B291K(4) = ' ' B291K(5) = '34.38457D1 ' M291K(1) = ' 98 ' M291K(2) = '8.40485D02 ' M291K(3) = ' ' M291K(4) = ' .TRUE. 340.435E-1, 3.494E+1' M291K(5) = '87654321 ' C431K(1) = ' 2.1000000D1 23.45600D3 23.450000000D2' C431K(2) = ' ' H131K(1) = '34.84' H131K(2) = '349.887' CT001* TEST 1 DOUBLE PRECISION FROM VARIABLE IVTNUM = 1 READ(UNIT=A43VK,FMT=39201) AVD 39201 FORMAT(13X,D10.5) IF (AVD - 0.2345599998D+05) 20010, 10010, 40010 40010 IF (AVD - 0.2345600002D+05) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 DVCORR = 23.456D3 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0011 CONTINUE CT002* TEST 2 FROM ELEMENT IVTNUM = 2 READ(UNIT=C431K(1),FMT=39204) AVD 39204 FORMAT(D12.7) IF (AVD - 0.2099999999D+02) 20020, 10020, 40020 40020 IF (AVD - 0.2100000001D+02) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 DVCORR = 2.1D1 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0021 CONTINUE CT003* TEST 3 FROM SUBSTRING IVTNUM = 3 READ(UNIT=A43VK(19:),FMT=39206) AVD 39206 FORMAT(11X,D14.9) IF (AVD - 0.2344999998D+04) 20030, 10030, 40030 40030 IF (AVD - 0.2345000002D+04) 10030, 10030, 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 DVCORR = 23.45D2 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0031 CONTINUE CT004* TEST 4 FROM ARRAY IVTNUM = 4 READ(UNIT=C431K,FMT=39208) CVD 39208 FORMAT(25X,D18.10) IF (CVD - 0.2344999998D+04) 20040, 10040, 40040 40040 IF (CVD - 0.2345000002D+04) 10040, 10040, 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 DVCORR = 23.45D2 WRITE (NUVI, 80031) IVTNUM, CVD, DVCORR 0041 CONTINUE C***** C***** TESTS 5 THRU 9 - LIST FROM ARRAY C***** CT005* TEST 5 IVTNUM = 5 READ(UNIT=B291K,FMT=39210) AVD, BVD, CVD, DVD, EVD 39210 FORMAT(D10.5,1X,D10.5,/,D10.5,/,D10.5,//,D10.5) IF (AVD - 0.3438456998D+03) 20050, 10050, 40050 40050 IF (AVD - 0.3438457002D+03) 10050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 DVCORR = 34.38457D1 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0051 CONTINUE CT006* TEST 6 IVTNUM = 6 IF (BVD - 0.3438456998D+03) 20060, 10060, 40060 40060 IF (BVD - 0.3438457002D+03) 10060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 DVCORR = 34.38457D1 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 IF (CVD - 0.3438456998D+03) 20070, 10070, 40070 40070 IF (CVD - 0.3438457002D+03) 10070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 DVCORR = 34.38457D1 WRITE (NUVI, 80031) IVTNUM, CVD, DVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 IF (DVD - 0.3438456998D+03) 20080, 10080, 40080 40080 IF (DVD - 0.3438457002D+03) 10080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 DVCORR = 34.38457D1 WRITE (NUVI, 80031) IVTNUM, DVD, DVCORR 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 IF (EVD - 0.3438456998D+03) 20090, 10090, 40090 40090 IF (EVD - 0.3438457002D+03) 10090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 DVCORR = 34.38457D1 WRITE (NUVI, 80031) IVTNUM, EVD, DVCORR 0091 CONTINUE C***** C***** TESTS 10 THRU 13 - LIST FROM VARIABLE WITH DIFFERENT FORMATS C***** CT010* TEST 10 IVTNUM = 10 READ(UNIT=D43VK,FMT=39212) AVD, BVD, CVD, DVD 39212 FORMAT(D10.5,1X,F10.5,D11.5,G11.5) IF (AVD - 0.3458672998D+04) 20100, 10100, 40100 40100 IF (AVD - 0.3458673002D+04) 10100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 DVCORR = 34.58673D2 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0101 CONTINUE CT011* TEST 11 IVTNUM = 11 IF (BVD - 0.3458672998D+04) 20110, 10110, 40110 40110 IF (BVD - 0.3458673002D+04) 10110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 DVCORR = 34.58673D2 WRITE (NUVI, 80031) IVTNUM, BVD, DVCORR 0111 CONTINUE CT012* TEST 12 IVTNUM = 12 IF (CVD - 0.3458672998D+04) 20120, 10120, 40120 40120 IF (CVD - 0.3458673002D+04) 10120, 10120, 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 DVCORR = 34.58673D2 WRITE (NUVI, 80031) IVTNUM, CVD, DVCORR 0121 CONTINUE CT013* TEST 13 IVTNUM = 13 IF (DVD - 0.3458672998D+04) 20130, 10130, 40130 40130 IF (DVD - 0.3458673002D+04) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 DVCORR = 34.58673D2 WRITE (NUVI, 80031) IVTNUM, DVD, DVCORR 0131 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 14 THRU 19 - MIXED TYPES C***** CT014* TEST 14 IVTNUM = 14 READ(UNIT=E51VK,FMT=39214) KVI, AVS, AVD, AVB, BVS, A8VK 39214 FORMAT(I4,1X,E9.4,D10.4,1X,L4,1X,F12.5,1X,A8) IF (KVI - 348) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 IVCORR = 348 WRITE (NUVI, 80010) IVTNUM, KVI, IVCORR 0141 CONTINUE CT015* TEST 15 IVTNUM = 15 IF (AVS - 0.34781E+02) 20150, 10150, 40150 40150 IF (AVS - 0.34785E+02) 10150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 RVCORR = 34.783 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0151 CONTINUE CT016* TEST 16 IVTNUM = 16 IF (AVD - 0.3843846998D+04) 20160, 10160, 40160 40160 IF (AVD - 0.3843847002D+04) 10160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 DVCORR = 384.3847D1 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0161 CONTINUE CT017* TEST 17 IVTNUM = 17 IVCOMP = 0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 LVCORR = 1 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVCOMP WRITE (NUVI, 80026) LVCORR 0171 CONTINUE CT018* TEST 18 IVTNUM = 18 IF (BVS - 0.34855E+01) 20180, 10180, 40180 40180 IF (BVS - 0.34859E+01) 10180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 RVCORR = 3.4857 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0181 CONTINUE CT019* TEST 19 IVTNUM = 19 IVCOMP = 0 IF (A8VK.EQ.'KDFJ D/.') IVCOMP = 1 IF (IVCOMP - 1) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 CVCORR = 'KDFJ D/.' WRITE (NUVI, 80018) IVTNUM, A8VK, CVCORR 0191 CONTINUE C***** C***** TESTS 20 THRU 25 - MIXED TYPES WITH TC, TLC, TRC, AND NX C***** CT020* TEST 20 IVTNUM = 20 READ(UNIT=F43VK,FMT=39216) AVB, AVS, A8VK, AVD, BVS, KVI 39216 FORMAT(L1,T5,F5.2,A8,TR2,D8.4,TL8,F6.4,4X,I1) IVCOMP = 0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 1) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 LVCORR = 1 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVCOMP WRITE (NUVI, 80026) LVCORR 0201 CONTINUE CT021* TEST 21 IVTNUM = 21 IF (AVS - 0.10979E+02) 20210, 10210, 40210 40210 IF (AVS - 0.10981E+02) 10210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 RVCORR = 10.98 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0211 CONTINUE CT022* TEST 22 IVTNUM = 22 IVCOMP = 0 IF (A8VK.EQ.'THISISIT') IVCOMP = 1 IF (IVCOMP - 1) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 CVCORR = 'THISISIT' WRITE (NUVI, 80018) IVTNUM, A8VK, CVCORR 0221 CONTINUE CT023* TEST 23 IVTNUM = 23 IF (AVD - 0.3494499998D+03) 20230, 10230, 40230 40230 IF (AVD - 0.3494500002D+03) 10230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 DVCORR = 3.4945D2 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0231 CONTINUE CT024* TEST 24 IVTNUM = 24 IF (BVS - 0.34943E+01) 20240, 10240, 40240 40240 IF (BVS - 0.34947E+01) 10240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 RVCORR = 3.4945 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0241 CONTINUE CT025* TEST 25 IVTNUM = 25 IF (KVI - 3) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 IVCORR = 3 WRITE (NUVI, 80010) IVTNUM, KVI, IVCORR 0251 CONTINUE CT026* TEST 26 COMPLEX FROM VARIABLE IVTNUM = 26 READ(UNIT=G43VK,FMT=39218) AVC 39218 FORMAT(F10.5,1X,F10.5) IF (R2E(1) - 0.23428E+01) 20260, 40262, 40261 40261 IF (R2E(1) - 0.23432E+01) 40262, 40262, 20260 40262 IF (R2E(2) - 0.34392E+02) 20260, 10260, 40260 40260 IF (R2E(2) - 0.34396E+02) 10260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 ZVCORR = (2.343, 34.394) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0261 CONTINUE CT027* TEST 27 COMPLEX FROM ARRAY IVTNUM = 27 READ(UNIT=H131K,FMT=39220) AVC 39220 FORMAT(E12.5,/,E12.5) IF (R2E(1) - 0.34838E+02) 20270, 40272, 40271 40271 IF (R2E(1) - 0.34842E+02) 40272, 40272, 20270 40272 IF (R2E(2) - 0.34987E+03) 20270, 10270, 40270 40270 IF (R2E(2) - 0.34991E+03) 10270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 ZVCORR = (34.84, 349.887) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0271 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 28 THRU 31 - COMPLEX LIST FROM VARIABLE POSITION 1X BEYOND C***** VARIABLE LENGTH CT028* TEST 28 IVTNUM = 28 READ(UNIT=I82VK,FMT=39222) AVC, BVC, CVC, DVC 39222 FORMAT(2(2(G7.5,1X),2X),2(G10.4E2,1X),1X,2(G11.7E4,1X)) IF (R2E(1) - 0.23398E+01) 20280, 40282, 40281 40281 IF (R2E(1) - 0.23402E+01) 40282, 40282, 20280 40282 IF (R2E(2) - 0.24558E+01) 20280, 10280, 40280 40280 IF (R2E(2) - 0.24562E+01) 10280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 ZVCORR = (2.34, 2.456) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0281 CONTINUE CT029* TEST 29 IVTNUM = 29 IF (R2E(3) - 0.23398E+01) 20290, 40292, 40291 40291 IF (R2E(3) - 0.23402E+01) 40292, 40292, 20290 40292 IF (R2E(4) - 0.24558E+01) 20290, 10290, 40290 40290 IF (R2E(4) - 0.24562E+01) 10290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 ZVCORR = (2.34, 2.456) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0291 CONTINUE CT030* TEST 30 IVTNUM = 30 IF (R2E(5) - 0.23398E+01) 20300, 40302, 40301 40301 IF (R2E(5) - 0.23402E+01) 40302, 40302, 20300 40302 IF (R2E(6) - 0.24558E+01) 20300, 10300, 40300 40300 IF (R2E(6) - 0.24562E+01) 10300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 ZVCORR = (2.34, 2.456) WRITE (NUVI, 80045) IVTNUM, CVC, ZVCORR 0301 CONTINUE CT031* TEST 31 IVTNUM = 31 IF (R2E(7) - 0.23398E+01) 20310, 40312, 40311 40311 IF (R2E(7) - 0.23402E+01) 40312, 40312, 20310 40312 IF (R2E(8) - 0.24558E+01) 20310, 10310, 40310 40310 IF (R2E(8) - 0.24562E+01) 10310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 ZVCORR = (2.34, 2.456) WRITE (NUVI, 80045) IVTNUM, DVC, ZVCORR 0311 CONTINUE C***** C***** TESTS 32 THRU 35 - COMPLEX LIST USING EW.D AND EW.DEN C***** CT032* TEST 32 IVTNUM = 32 READ(UNIT=J97VK(1:),FMT=39224) AVC, BVC, CVC, DVC 39224 FORMAT(2(2(E10.5,1X),2X),2(E10.4E2,1X),1X,2(E12.5E4,1X)) IF (R2E(1) - 0.56795E+01) 20320, 40322, 40321 40321 IF (R2E(1) - 0.56801E+01) 40322, 40322, 20320 40322 IF (R2E(2) - 0.98755E+00) 20320, 10320, 40320 40320 IF (R2E(2) - 0.98765E+00) 10320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 ZVCORR = (5.6798, 0.9876) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0321 CONTINUE CT033* TEST 33 IVTNUM = 33 IF (R2E(3) - 0.56795E+01) 20330, 40332, 40331 40331 IF (R2E(3) - 0.56801E+01) 40332, 40332, 20330 40332 IF (R2E(4) - 0.98755E+00) 20330, 10330, 40330 40330 IF (R2E(4) - 0.98765E+00) 10330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 ZVCORR = (5.6798, 0.9876) WRITE (NUVI, 80045) IVTNUM, BVC, ZVCORR 0331 CONTINUE CT034* TEST 34 IVTNUM = 34 IF (R2E(5) - 0.56795E+01) 20340, 40342, 40341 40341 IF (R2E(5) - 0.56801E+01) 40342, 40342, 20340 40342 IF (R2E(6) - 0.98755E+00) 20340, 10340, 40340 40340 IF (R2E(6) - 0.98765E+00) 10340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 ZVCORR = (5.6798, 0.9876) WRITE (NUVI, 80045) IVTNUM, CVC, ZVCORR 0341 CONTINUE CT035* TEST 35 IVTNUM = 35 IF (R2E(7) - 0.56795E+01) 20350, 40352, 40351 40351 IF (R2E(7) - 0.56801E+01) 40352, 40352, 20350 40352 IF (R2E(8) - 0.98755E+00) 20350, 10350, 40350 40350 IF (R2E(8) - 0.98765E+00) 10350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 ZVCORR = (5.6798, 0.9876) WRITE (NUVI, 80045) IVTNUM, DVC, ZVCORR 0351 CONTINUE C***** C***** TESTS 36 THRU 38 - MIXED TYPES FROM VARIABLE C***** CT036* TEST 36 IVTNUM = 36 READ(UNIT=K43VK,FMT=39226) AVC, AVS, AVD 39226 FORMAT(F7.3,1X,F7.3,1X,F10.5,1X,D13.5) IF (R2E(1) - 0.93395E+00) 20360, 40362, 40361 40361 IF (R2E(1) - 0.93405E+00) 40362, 40362, 20360 40362 IF (R2E(2) - 0.34565E+02) 20360, 10360, 40360 40360 IF (R2E(2) - 0.34569E+02) 10360, 10360, 20360 10360 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0361 20360 IVFAIL = IVFAIL + 1 ZVCORR = (0.934, 34.567) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0361 CONTINUE CT037* TEST 37 IVTNUM = 37 IF (AVS - 0.34648E+02) 20370, 10370, 40370 40370 IF (AVS - 0.34652E+02) 10370, 10370, 20370 10370 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0371 20370 IVFAIL = IVFAIL + 1 RVCORR = 34.65 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0371 CONTINUE CT038* TEST 38 IVTNUM = 38 IF (AVD - 0.6353999996D+01) 20380, 10380, 40380 40380 IF (AVD - 0.6354000004D+01) 10380, 10380, 20380 10380 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0381 20380 IVFAIL = IVFAIL + 1 DVCORR = 0.6354D1 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0381 CONTINUE C***** C***** TESTS 39 THRU 43 - MIXED TYPES FROM ARRAY C***** CT039* TEST 39 IVTNUM = 39 READ(UNIT=L53VK,FMT=39228) AVC, AVB, AVD, AVS, A8VK 39228 FORMAT(F9.4,1X,E9.4,1X,L1,1X,D12.5,1X,G9.4,A8) IF (R2E(1) - 0.34498E+00) 20390, 40392, 40391 40391 IF (R2E(1) - 0.34502E+00) 40392, 40392, 20390 40392 IF (R2E(2) - 0.34343E+02) 20390, 10390, 40390 40390 IF (R2E(2) - 0.34347E+02) 10390, 10390, 20390 10390 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0391 20390 IVFAIL = IVFAIL + 1 ZVCORR = (0.345, 34.345) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0391 CONTINUE CT040* TEST 40 IVTNUM = 40 IVCOMP = 0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 0) 20400, 10400, 20400 10400 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0401 20400 IVFAIL = IVFAIL + 1 LVCORR = 0 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVCOMP WRITE (NUVI, 80026) LVCORR 0401 CONTINUE CT041* TEST 41 IVTNUM = 41 IF (AVD - 0.3485899998D+01) 20410, 10410, 40410 40410 IF (AVD - 0.3485900002D+01) 10410, 10410, 20410 10410 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0411 20410 IVFAIL = IVFAIL + 1 DVCORR = 34.859D-1 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0411 CONTINUE CT042* TEST 42 IVTNUM = 42 IF (AVS - 0.99995E+01) 20420, 10420, 40420 40420 IF (AVS - 0.10001E+02) 10420, 10420, 20420 10420 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0421 20420 IVFAIL = IVFAIL + 1 RVCORR = 10.0 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0421 CONTINUE CT043* TEST 43 IVTNUM = 43 IVCOMP = 0 IF (A8VK.EQ.'12345678') IVCOMP = 1 IF (IVCOMP - 1) 20430, 10430, 20430 10430 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0431 20430 IVFAIL = IVFAIL + 1 CVCORR = '12345678' WRITE (NUVI, 80018) IVTNUM, A8VK, CVCORR 0431 CONTINUE C***** WRITE (NUVI, 90002) WRITE (NUVI, 90013) WRITE (NUVI, 90014) C***** C***** TESTS 44 THRU 48 - READ 5 RECORD FROM ARRAY POSITION 1X BEYOND C***** ARRAY ELEMENT C***** CT044* TEST 44 IVTNUM = 44 READ(UNIT=M291K,FMT=39230) KVI, AVD, AVB, AVC, A8VK 39230 FORMAT(I5,/,D10.5,//,1X,L6,1X,2(E10.3,1X),/,A8) IF (KVI - 98) 20440, 10440, 20440 10440 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0441 20440 IVFAIL = IVFAIL + 1 IVCORR = 98 WRITE (NUVI, 80010) IVTNUM, KVI, IVCORR 0441 CONTINUE CT045* TEST 45 IVTNUM = 45 IF (AVD - 0.8404849995D+03) 20450, 10450, 40450 40450 IF (AVD - 0.8404850004D+03) 10450, 10450, 20450 10450 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0451 20450 IVFAIL = IVFAIL + 1 DVCORR = 84.0485D1 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0451 CONTINUE CT046* TEST 46 IVTNUM = 46 IVCOMP = 0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 1) 20460, 10460, 20460 10460 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0461 20460 IVFAIL = IVFAIL + 1 LVCORR = 1 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVCOMP WRITE (NUVI, 80026) LVCORR 0461 CONTINUE CT047* TEST 47 IVTNUM = 47 IF (R2E(1) - 0.34041E+02) 20470, 40472, 40471 40471 IF (R2E(1) - 0.34046E+02) 40472, 40472, 20470 40472 IF (R2E(2) - 0.34938E+02) 20470, 10470, 40470 40470 IF (R2E(2) - 0.34942E+02) 10470, 10470, 20470 10470 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0471 20470 IVFAIL = IVFAIL + 1 ZVCORR = (34.0435, 34.94) WRITE (NUVI, 80045) IVTNUM, AVC, ZVCORR 0471 CONTINUE CT048* TEST 48 IVTNUM = 48 IVCOMP = 0 IF (A8VK.EQ.'87654321') IVCOMP = 1 IF (IVCOMP - 1) 20480, 10480, 20480 10480 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0481 20480 IVFAIL = IVFAIL + 1 CVCORR = '87654321' WRITE (NUVI, 80018) IVTNUM, A8VK, CVCORR 0481 CONTINUE C***** C***** TESTS 49 THRU 54 - MIXED TYPES, NX, AND : C***** CT049* TEST 49 IVTNUM = 49 READ(UNIT=N43VK,FMT=39232)JVI,AVS,AVD,AVB,A8VK,BVS 39232 FORMAT(I2,1X,F6.3,D10.5,L2,A8,E10.5,:,I5,2X,F10.4) IF (JVI - 34) 20490, 10490, 20490 10490 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0491 20490 IVFAIL = IVFAIL + 1 IVCORR = 34 WRITE (NUVI, 80010) IVTNUM, JVI, IVCORR 0491 CONTINUE CT050* TEST 50 IVTNUM = 50 IF (AVS - 0.34981E+02) 20500, 10500, 40500 40500 IF (AVS - 0.34985E+02) 10500, 10500, 20500 10500 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0501 20500 IVFAIL = IVFAIL + 1 RVCORR = 34.983 WRITE (NUVI, 80012) IVTNUM, AVS, RVCORR 0501 CONTINUE CT051* TEST 51 IVTNUM = 51 IF (AVD - 0.9582999995D+04) 20510, 10510, 40510 40510 IF (AVD - 0.9583000005D+04) 10510, 10510, 20510 10510 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0511 20510 IVFAIL = IVFAIL + 1 DVCORR = 95.83D2 WRITE (NUVI, 80031) IVTNUM, AVD, DVCORR 0511 CONTINUE CT052* TEST 52 IVTNUM = 52 IVCOMP = 0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 0) 20520, 10520, 20520 10520 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0521 20520 IVFAIL = IVFAIL + 1 LVCORR = 0 REMRKS = '1 = TRUE ; 0 = FALSE' WRITE (NUVI, 80008) IVTNUM, REMRKS WRITE (NUVI, 80024) IVCOMP WRITE (NUVI, 80026) LVCORR 0521 CONTINUE CT053* TEST 53 IVTNUM = 53 IVCOMP = 0 IF (A8VK.EQ.'.FALSE.1') IVCOMP = 1 IF (IVCOMP - 1) 20530, 10530, 20530 10530 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0531 20530 IVFAIL = IVFAIL + 1 CVCORR = '.FALSE.1' WRITE (NUVI, 80018) IVTNUM, A8VK, CVCORR 0531 CONTINUE CT054* TEST 54 IVTNUM = 54 IF (BVS - 0.34528E+03) 20540, 10540, 40540 40540 IF (BVS - 0.34532E+03) 10540, 10540, 20540 10540 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0541 20540 IVFAIL = IVFAIL + 1 RVCORR = 345.3 WRITE (NUVI, 80012) IVTNUM, BVS, RVCORR 0541 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 392 STOP END *END-OF,FM908 FM909.f 481036649 170 2 100666 35099 ` *HEADER,FORTR,FM909 *FILES1,FORTR,FM909,X C*********************************************************************** C***** FORTRAN 77 C***** FM909 C***** INTER4 - (393) C***** C*********************************************************************** C***** TESTING OF INTERNAL FILES - ANS. REF C***** USING WRITE 12.2.5 C***** C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 393 C***** LOGICAL AVB DOUBLE PRECISION AVD, BVD, CVD, DVD, B1D(5) COMPLEX AVC, BVC, CVC CHARACTER A8VK*8, A97VK*97, CVCORR*97, AVCORR(24)*97 CHARACTER*29 A291K(5) CHARACTER*43 A431K(2) CHARACTER*1 A97E1(97), A97E2(97) EQUIVALENCE (A97VK, A97E1), (A431K, A97E1) EQUIVALENCE (CVCORR, A97E2) C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** NUVI = I02 IVTOTL = 27 ZPROG = 'FM909' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 393 C***** WRITE(NUVI,39300) 39300 FORMAT(1H ,/ 46H INTER4 - (393) INTERNAL FILES -- USING WRITE 1 //19H ANS. REF. - 12.2.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** WRITE (NUVI, 39199) 39199 FORMAT (1H ,48X,31HNOTE 1: FOR NUMERIC VALUES, / 1 1H ,48X,31H OPTIONAL LEADING ZERO MAY BE/ 2 1H ,48X,31H BLANK FOR ABSOLUTE VALUE < 1/ 3 1H ,48X,31HNOTE 2: LEADING PLUS SIGN IS / 4 1H ,48X,31H OPTIONAL FOR NUMERIC VALUES / 5 1H ,48X,31HNOTE 3: E FORMAT EXPONENT MAY / 6 1H ,48X,31H BE E+NN OR +0NN FOR REALS / 7 1H ,48X,31HNOTE 4: D FORMAT EXPONENT MAY / 8 1H ,48X,31H BE D+NN, E+NN, OR +0NN FOR / 9 1H ,48X,31H DOUBLE PRECISION VALUES /) C***** CT001* TEST 1 DOUBLE PRECISION INTO VARIABLE IVTNUM = 1 A97VK = 'XXXXXXXXXXXXXXXXXX' AVD = 23.456D3 WRITE(UNIT=A97VK,FMT=39301) AVD 39301 FORMAT(13X,D10.5) IVCOMP = 0 AVCORR(1) = ' .23456D+05' AVCORR(2) = ' .23456E+05' AVCORR(3) = ' .23456+005' DO 40011 I = 1, 3 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40011, 10010, 40011 40011 CONTINUE GO TO 20010 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 CVCORR = ' .23456D+05' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) 70010 FORMAT(1H ,16X,10HCOMPUTED: ,54A1) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) 70020 FORMAT(1H ,26X,43A1) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) 70030 FORMAT(1H ,16X,10HCORRECT: ,54A1) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 70040 FORMAT(1H ,26X,43A1) 0011 CONTINUE CT002* TEST 2 INTO ARRAY ELEMENT IVTNUM = 2 AVD = 2.1D1 A431K(1) = ' ' A431K(2) = 'WRONG' WRITE(UNIT=A431K(1),FMT=39303) AVD 39303 FORMAT(D12.7) IVCOMP = 0 AVCORR(1) = '.2100000D+02' AVCORR(2) = '.2100000E+02' AVCORR(3) = '.2100000+002' DO 40021 I = 1, 3 IF (A431K(1).EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40021, 10020, 40021 40021 CONTINUE GO TO 20020 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 CVCORR = '.2100000D+02' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A431K(1) WRITE (NUVI, 80022) CVCORR 0021 CONTINUE CT003* TEST 3 CHARACTER SUBSTRING IVTNUM = 3 A97VK = ' SOME WHERE' AVD = 23.45D2 WRITE(UNIT=A97VK(21:),FMT=39305) AVD 39305 FORMAT(11X,D14.9) IVCOMP = 0 AVCORR(1) = ' SOME WHERE .234500000D+04' AVCORR(2) = ' SOME WHERE .234500000E+04' AVCORR(3) = ' SOME WHERE .234500000+004' DO 40031 I = 1, 3 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40031, 10030, 40031 40031 CONTINUE GO TO 20030 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0031 20030 IVFAIL = IVFAIL + 1 CVCORR = ' SOME WHERE .234500000D+04' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0031 CONTINUE C***** TESTS 4 - 5 ARRAY, SINGLE RECORD CT004* TEST 4 IVTNUM = 4 CVD = 23.45D2 A431K(2) = ' ' WRITE(UNIT=A431K,FMT=39306) CVD 39306 FORMAT(24X,D19.10) IVCOMP = 0 AVCORR(1) = ' 0.2345000000D+04' AVCORR(2) = ' 0.2345000000E+04' AVCORR(3) = ' 0.2345000000+004' AVCORR(4) = ' .2345000000D+04' AVCORR(5) = ' .2345000000E+04' AVCORR(6) = ' .2345000000+004' AVCORR(7) = ' +.2345000000D+04' AVCORR(8) = ' +.2345000000E+04' AVCORR(9) = ' +.2345000000+004' AVCORR(10) = ' +0.2345000000D+04' AVCORR(11) = ' +0.2345000000E+04' AVCORR(12) = ' +0.2345000000+004' DO 40041 I = 1, 12 IF (A431K(1).EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40041, 10040, 40041 40041 CONTINUE GO TO 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 CVCORR = ' 0.2345000000D+04' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70050) (A97E1(I), I = 1,43) WRITE (NUVI, 70060) (A97E2(I), I = 1,43) 70050 FORMAT(1H ,16X,10HCOMPUTED: ,43A1) 70060 FORMAT(1H ,16X,10HCORRECT: ,43A1) 0041 CONTINUE CT005* TEST 5 IVTNUM = 5 IVCOMP = 0 IF (A431K(2).EQ.' ') IVCOMP = 1 IF (IVCOMP - 1) 20050, 10050, 20050 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0051 20050 IVFAIL = IVFAIL + 1 CVCORR = ' ' WRITE (NUVI, 80018) IVTNUM, A431K(2), CVCORR 0051 CONTINUE C***** TESTS 6 - 10 ARRAY, 5 RECORDS, ONE BLANK CT006* TEST 6 IVTNUM = 6 B1D(1) = 11D1 B1D(2) = 21D1 B1D(3) = 31D1 B1D(4) = 32D1 B1D(5) = 51D1 WRITE(UNIT=A291K,FMT=39307) (B1D(JVI), JVI=1,5) 39307 FORMAT(E11.6E2/1X,E10.5E2/2X,2(E9.4E2,3X)//4X,E7.2E2) IVCOMP = 0 IF (A291K(1).EQ.'.110000E+03') IVCOMP = 1 IF (IVCOMP - 1) 20060, 10060, 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 CVCORR = '.110000E+03' WRITE (NUVI, 80018) IVTNUM, A291K(1), CVCORR 0061 CONTINUE CT007* TEST 7 IVTNUM = 7 IVCOMP = 0 IF (A291K(2).EQ.' .21000E+03') IVCOMP = 1 IF (IVCOMP - 1) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 CVCORR = ' .21000E+03' WRITE (NUVI, 80018) IVTNUM, A291K(2), CVCORR 0071 CONTINUE CT008* TEST 8 IVTNUM = 8 IVCOMP = 0 IF (A291K(3).EQ.' .3100E+03 .3200E+03') IVCOMP = 1 IF (IVCOMP - 1) 20080, 10080, 20080 10080 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0081 20080 IVFAIL = IVFAIL + 1 CVCORR = ' .3100+003 .3200E+03' WRITE (NUVI, 70070) IVTNUM, A291K(3), CVCORR 70070 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED: , 1 A29,/,1H ,16X,10HCORRECT: ,A29) 0081 CONTINUE CT009* TEST 9 IVTNUM = 9 IVCOMP = 0 IF (A291K(4).EQ.' ') IVCOMP = 1 IF (IVCOMP - 1) 20090, 10090, 20090 10090 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0091 20090 IVFAIL = IVFAIL + 1 CVCORR = ' ' WRITE (NUVI, 80018) IVTNUM, A291K(4), CVCORR 0091 CONTINUE CT010* TEST 10 IVTNUM = 10 IVCOMP = 0 IF (A291K(5).EQ.' .51E+03') IVCOMP = 1 IF (IVCOMP - 1) 20100, 10100, 20100 10100 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0101 20100 IVFAIL = IVFAIL + 1 CVCORR = ' .51E+03' WRITE (NUVI, 80018) IVTNUM, A291K(5), CVCORR 0101 CONTINUE C***** WRITE(NUVI, 90002) WRITE(NUVI, 90013) WRITE(NUVI, 90014) C***** CT011* TEST 11 VARIABLE, MORE THEN ONE FIELD IVTNUM = 11 AVD = 34.58673D2 BVD = 34.58673D2 CVD = 34.58673D2 DVD = 34.58673D2 WRITE(UNIT=A97VK,FMT=39309) AVD, BVD, CVD, DVD 39309 FORMAT(D10.5,1X,F10.5,1X,D11.5,G11.5) IVCOMP = 0 CVCORR = '.34587D+04 3458.67300 0.34587D+04 3458.7' IF (A97VK.EQ.CVCORR) IVCOMP = 1 IF (IVCOMP - 1) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 REMRKS = '54 PERMISSIBLE REPRESENTATIONS' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'SEE NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0111 CONTINUE CT012* TEST 12 GW.D FIELD WITH D.P. IVTNUM = 12 AVD = 314.5673D0 BVD = 14.45673D-1 CVD = 85.7343D6 WRITE(UNIT=A97VK,FMT=39310) AVD, BVD, CVD 39310 FORMAT(G12.5,1X,G14.5E3,1X,G10.5E2) IVCOMP = 0 AVCORR(1) = ' 314.57 1.4457 .85734E+08' AVCORR(2) = ' +314.57 1.4457 .85734E+08' AVCORR(3) = ' 314.57 +1.4457 .85734E+08' AVCORR(4) = ' +314.57 +1.4457 .85734E+08' DO 40121 I = 1, 4 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40121, 10120, 40121 40121 CONTINUE GO TO 20120 10120 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0121 20120 IVFAIL = IVFAIL + 1 CVCORR = ' 314.57 1.4457 .85734E+08' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS. SEE ' WRITE (NUVI, 80050) REMRKS REMRKS = 'NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0121 CONTINUE CT013* TEST 13 DIFFERENT TYPES IN SAME RECORD IVTNUM = 13 KVI = 348 AVS = 34.783 AVD = 384.3847D1 AVB = .TRUE. BVS = 3.4857 A8VK = 'KDFJ D/.' WRITE(UNIT=A97VK,FMT=39311) KVI, AVS, AVD, AVB, BVS, A8VK 39311 FORMAT(I4,1X,E9.4,1X,D10.4,1X,L4,1X,F12.5,1X,A8) IVCOMP = 0 CVCORR = ' 348 .3478E+02 0.3844D+04 T 3.48570 KDFJ D/ 1.' IF (A97VK.EQ.CVCORR) IVCOMP = 1 IF (IVCOMP - 1) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 REMRKS = '72 PERMISSIBLE REPRESENTATIONS' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'SEE NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0131 CONTINUE CT014* TEST 14 POSITIONAL EDITING IVTNUM = 14 AVB = .TRUE. AVS = 10.98 A8VK = 'THISISIT' AVD = 3.4945D2 BVS = 3.4945 KVI = 3 WRITE(UNIT=A97VK,FMT=39312) AVB, AVS, A8VK, AVD, BVS, KVI 39312 FORMAT(L1,T5,F5.2,A8,TR2,E10.4E2,TL10,F6.4,6X,I1) IVCOMP = 0 IF (A97VK.EQ.'T 10.98THISISIT 3.4945E+03 3') 1 IVCOMP = 1 IF (IVCOMP - 1) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 CVCORR = 'T 10.98THISISIT 3.4945E+03 3' WRITE (NUVI, 80008) IVTNUM WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0141 CONTINUE CT015* TEST 15 COLON AND SIGN IVTNUM = 15 AVB = .TRUE. AVS = 98.11 A8VK = 'THISISIT' AVD = 3.4945D2 KVI = 33 WRITE(UNIT=A97VK,FMT=39313) AVB, AVS, A8VK, AVD, KVI 39313 FORMAT(L1,S,F7.2,A8,SP,D11.5,6X,SS,I2,:,F9.3) IVCOMP = 0 AVCORR(1) = 'T 98.11THISISIT+.34945D+03 33' AVCORR(2) = 'T 98.11THISISIT+.34945E+03 33' AVCORR(3) = 'T 98.11THISISIT+.34945+003 33' DO 40151 I = 1, 3 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40151, 10150, 40151 40151 CONTINUE GO TO 20150 10150 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 CVCORR = 'T 98.11THISISIT+.34945D+03 33' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0151 CONTINUE CT016* TEST 16 COMPLEX TYPES INTO VARIABLE IVTNUM = 16 AVC = (2.343, 34.394) WRITE(UNIT=A97VK,FMT=39314) AVC 39314 FORMAT(F10.5,1X,F10.5) IVCOMP = 0 AVCORR(1) = ' 2.34300 34.39400' AVCORR(2) = ' 2.34300 +34.39400' AVCORR(3) = ' +2.34300 34.39400' AVCORR(4) = ' +2.34300 +34.39400' DO 40161 I = 1, 4 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40161, 10160, 40161 40161 CONTINUE GO TO 20160 10160 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 CVCORR = ' +2.34300 +34.39400' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0161 CONTINUE CT017* TEST 17 IVTNUM = 17 AVC = (34.84, 349.887) WRITE(UNIT=A97VK,FMT=39315) AVC 39315 FORMAT(E12.5,1X,E12.5) IVCOMP = 0 IF (A97VK.EQ.' 0.34840E+02 0.34989E+03') IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 CVCORR = ' 0.34840E+02 0.34989E+03' REMRKS = '16 PERMISSIBLE REPRESENTATIONS' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'SEE NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0171 CONTINUE CT018* TEST 18 LIST OF COMPLEX IVTNUM = 18 AVC = (2.34, 2.456) BVC = (2.34, 2.456) CVC = (2.34, 2.456) WRITE(UNIT=A97VK,FMT=39316) AVC, BVC, CVC 39316 FORMAT(2(G9.4,1X),2(G10.4E2,1X),2(G11.5E3,1X)) IVCOMP = 0 AVCORR(1) = '2.340 2.456 2.340 2.456 2.3400 1 2.4560' AVCORR(2) = '2.340 2.456 2.340 +2.456 2.3400 1 2.4560' AVCORR(3) = '2.340 2.456 +2.340 2.456 2.3400 1 2.4560' AVCORR(4) = '2.340 2.456 +2.340 +2.456 2.3400 1 2.4560' DO 40181 I = 1, 4 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40181, 10180, 40181 40181 CONTINUE GO TO 20180 10180 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 CVCORR = '2.340 2.456 2.340 2.456 2.3400 1 2.4560' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0181 CONTINUE CT019* TEST 19 LIST FROM SUBSTRING IVTNUM = 19 AVC = (5.6798, 0.9876) BVC = (5.6798, 0.9876) CVC = (5.6798, 0.9876) WRITE(UNIT=A97VK(1:),FMT=39317) AVC, BVC, CVC 39317 FORMAT(2(E6.2E1,1X),1X,2(E7.2E2,1X),1X,2(E9.2E3,1X)) IVCOMP = 0 AVCORR(1) = '.57E+1 .99E+0 .57E+01 .99E+00 .57E+001 .99E+ 1000' AVCORR(2) = '.57E+1 .99E+0 .57E+01 .99E+00 .57E+001 0.99E+ 1000' AVCORR(3) = '.57E+1 .99E+0 .57E+01 .99E+00 .57E+001 +.99E+ 1000' AVCORR(4) = '.57E+1 .99E+0 .57E+01 .99E+00 0.57E+001 .99E+ 1000' AVCORR(5) = '.57E+1 .99E+0 .57E+01 .99E+00 0.57E+001 0.99E+ 1000' AVCORR(6) = '.57E+1 .99E+0 .57E+01 .99E+00 0.57E+001 +.99E+ 1000' AVCORR(7) = '.57E+1 .99E+0 .57E+01 .99E+00 +.57E+001 .99E+ 1000' AVCORR(8) = '.57E+1 .99E+0 .57E+01 .99E+00 +.57E+001 0.99E+ 1000' AVCORR(9) = '.57E+1 .99E+0 .57E+01 .99E+00 +.57E+001 +.99E+ 1000' DO 40191 I = 1, 9 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40191, 10190, 40191 40191 CONTINUE GO TO 20190 10190 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 CVCORR = '.57E+1 .99E+0 .57E+01 .99E+00 0.57E+001 0.99E+000 1' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0191 CONTINUE CT020* TEST 20 MIXED TYPES IVTNUM = 20 AVC = (0.934, 34.567) AVS = 34.65 AVD = 0.6354D1 WRITE(UNIT=A97VK,FMT=39318) AVC, AVS, AVD 39318 FORMAT(F7.3,1X,F7.3,1X,F10.5,1X,E13.5E2) IVCOMP = 0 IF (A97VK.EQ.' 0.934 34.567 34.65000 0.63540E+01') IVCO 1MP = 1 IF (IVCOMP - 1) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 CVCORR = ' 0.934 34.567 34.65000 0.63540E+01' REMRKS = '32 PERMISSIBLE REPRESENTATIONS' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'SEE NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0201 CONTINUE C***** WRITE(NUVI, 90002) WRITE(NUVI, 90013) WRITE(NUVI, 90014) C***** CT021* TEST 21 MIXED TYPES WITH POSITIONAL EDITING IVTNUM = 21 AVC = (0.345, 34.349) AVB = .FALSE. AVD = 34.859D-1 AVS = 10.0 A8VK = '12345678' WRITE(UNIT=A97VK,FMT=39319) AVC, AVB, AVD, AVS, A8VK 39319 FORMAT(F9.4,1X,E9.4,1X,L1,1X,D12.5,1X,G9.4,A8) IVCOMP = 0 IF (A97VK.EQ.' 0.3450 .3435E+02 F 0.34859D+01 10.00 123 145678') IVCOMP = 1 IF (IVCOMP - 1) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 CVCORR = ' 0.3450 .3435E+02 F 0.34859D+01 10.00 1234567 18' REMRKS = '96 PERMISSIBLE REPRESENTATIONS' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'SEE NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0211 CONTINUE C***** TESTS 22 - 26 MIXED TYPES INTO 5 RECORDS CT022* TEST 22 IVTNUM = 22 KVI = 98 AVD = 84.0489D1 AVB = .TRUE. AVC = (34.0435, 34.94) A8VK = 'THE LAST' WRITE(UNIT=A291K,FMT=39320) KVI, AVD, AVB, AVC, A8VK 39320 FORMAT(I5/E10.5E2//1X,L6,2(1X,E10.3)/A8) IVCOMP = 0 AVCORR(1) = ' 98' AVCORR(2) = ' +98' DO 40221 I = 1, 2 IF (A291K(1).EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40221, 10220, 40221 40221 CONTINUE GO TO 20220 10220 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 CVCORR = ' 98' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 80020) A291K(1) WRITE (NUVI, 80022) CVCORR 0221 CONTINUE CT023* TEST 23 IVTNUM = 23 IVCOMP = 0 IF (A291K(2).EQ.'.84049E+03') IVCOMP = 1 IF (IVCOMP - 1) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 CVCORR = '.84049E+03' WRITE (NUVI, 80018) IVTNUM, A291K(2), CVCORR 0231 CONTINUE CT024* TEST 24 IVTNUM = 24 IVCOMP = 0 IF (A291K(3).EQ.' ') IVCOMP = 1 IF (IVCOMP - 1) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 CVCORR = ' ' WRITE (NUVI, 80018) IVTNUM, A291K(3), CVCORR 0241 CONTINUE CT025* TEST 25 IVTNUM = 25 IVCOMP = 0 IF (A291K(4).EQ.' T 0.340E+02 0.349E+02') IVCOMP = 1 IF (IVCOMP - 1) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 CVCORR = ' T 0.340E+02 0.349E+02' REMRKS = '64 PERMISSIBLE REPRESENTATIONS' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'SEE NOTES ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70080) A291K(4), CVCORR 70080 FORMAT (1H ,16X,10HCOMPUTED: , A29,/ 1 1H ,16X,10HCORRECT: ,A29) 0251 CONTINUE CT026* TEST 26 IVTNUM = 26 IVCOMP = 0 IF (A291K(5).EQ.'THE LAST') IVCOMP = 1 IF (IVCOMP - 1) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 CVCORR = 'THE LAST' WRITE (NUVI, 80018) IVTNUM, A291K(5), CVCORR 0261 CONTINUE CT027* TEST 27 MIXED TYPES WITH SS, SP, NX, AND : IVTNUM = 27 JVI = 34 AVS = 34.983 BVS = 345.3 AVD = 95.83D2 AVB = .FALSE. A8VK = '.FALSE.1' WRITE(UNIT=A97VK,FMT=39321)JVI, AVS, AVD, AVB, A8VK, BVS 39321 FORMAT(S,I2,1X,SP,F7.3,SS,1X,D10.5,L2,1X,A8,1X,E10.5,:,I5,F10.4) IVCOMP = 0 AVCORR(1) = '34 +34.983 .95830D+04 F .FALSE.1 .34530E+03' AVCORR(2) = '34 +34.983 .95830D+04 F .FALSE.1 .34530+003' AVCORR(3) = '34 +34.983 .95830E+04 F .FALSE.1 .34530E+03' AVCORR(4) = '34 +34.983 .95830E+04 F .FALSE.1 .34530+003' AVCORR(5) = '34 +34.983 .95830+004 F .FALSE.1 .34530E+03' AVCORR(6) = '34 +34.983 .95830+004 F .FALSE.1 .34530+003' DO 40271 I = 1, 6 IF (A97VK.EQ.AVCORR(I)) IVCOMP = 1 IF (IVCOMP - 1) 40271, 10270, 40271 40271 CONTINUE GO TO 20270 10270 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 CVCORR = '34 +34.983 .95830D+04 F .FALSE.1 .34530E+03' REMRKS = 'COMPUTED VALUE NOT CONSISTENT' WRITE (NUVI, 80008) IVTNUM, REMRKS REMRKS = 'WITH PERMISSIBLE OPTIONS ABOVE' WRITE (NUVI, 80050) REMRKS WRITE (NUVI, 70010) (A97E1(I), I = 1,54) WRITE (NUVI, 70020) (A97E1(I), I= 55,97) WRITE (NUVI, 70030) (A97E2(I), I = 1,54) WRITE (NUVI, 70040) (A97E2(I), I= 55,97) 0271 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 393 STOP END *END-OF,FM909 FM910.f 481036654 170 2 100666 24170 ` *HEADER,FORTR,FM910 *FILES1,FORTR,FM910 C*********************************************************************** C***** FM910 C***** DIRAF2 - (411) C***** THIS PROGRAM CALLS SUBROUTINE SN911 IN FILE FM911 C*********************************************************************** C***** TESTING OF DIRECT ACCESS FILES ANS REF C***** UNFORMATTED WITH BOTH SEQUENTIAL AND DIRECT 12.5 C***** ACCESS TO THE SAME FILE C***** NAMED FILE AND SCRATCH FILE C***** C***** USES SUBROUTINE SN911 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 910 DIMENSION L1I(10), N1I(15), F1S(10), H1S(15) CHARACTER*4 A4VK, B4VK, D4VK, A41K(10), C41K(15) LOGICAL AVB, BVB, C1B(10), E1B(15) DOUBLE PRECISION AVD, BVD, D1D(10), B1D(15) COMPLEX AVC, BVC, C1C(10), D1C(15) C***** C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CX20 REPLACED BY FEXEC X-20 CONTROL CARD. X-20 IS FOR REPLACING CHARACTER*15 CDIR C THE CHARACTER STATEMENT FOR FILE NAMES ASSOCIATED WITH X-100 C (PROGRAM VARIABLE CDIR) IF NOT VALID FOR THE PROCESSOR. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE C***** UNITS GIVEN ARE NOT CAPABLE OF BEING OPENED AS SPECIFIED. C***** C I10 CONTAINS THE UNIT NUMBER FOR A NAMED DIRECT ACCESS FILE. I10 = 11 CX100 REPLACED BY FEXEC X-100 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I10 = NN OVERRIDES THE DEFAULT I10 = 24. C***** C I11 CONTAINS THE UNIT NUMBER FOR A SCRATCH DIRECT ACCESS FILE. I11 = 10 CX110 REPLACED BY FEXEC X-110 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I11 = NN OVERRIDES THE DEFAULT I11 = 25. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A DIRECT, C***** UNFORMATTED FILE. C***** C CDIR CONTAINS THE FILE NAME FOR UNIT I10. CDIR = 'DIRFILE' C CX201 REPLACED BY FEXEC X-201 CONTROL CARD. CX201 IS FOR SYSTEMS C REQUIRING A DIFFERENT FILE SPECIFIER FOR FILES ASSOCIATED WITH C X-100 THAN THE DEFAULT CDIR = ' DIRFILE'. C***** FILE NUMBER AND NAME ASSIGNMENT NUVI = I02 IMVI = I10 KMVI = I11 IVTOTL = 6 ZPROG = 'FM910' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** HEADER FOR SEGMENT 910 WRITE(NUVI,41100) 41100 FORMAT(1H ,/46H DIRAF2 - (411) DIRECT ACCESS UNFORMATTED FILE// 1 41H WITH OPTION TO OPEN AS A SEQUENTIAL FILE// 2 16H ANS REF. - 12.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** INITIALIZE DATA CALL SN911(L1I,N1I,F1S,H1S,C1B,E1B,D1D,B1D,C1C,D1C,A41K,C41K) MMVI = 0 C***** OPEN(FILE=CDIR, UNIT=IMVI, ACCESS='DIRECT',RECL=132, 1 STATUS='NEW') C***** WRITE DIRECT FILE IN SEQUENTIAL ORDER DO 41101 IVI = 1,10 AVS = F1S (IVI) A4VK = A41K (IVI) AVB = C1B (IVI) AVD = D1D (IVI) AVC = C1C (IVI) WRITE(UNIT=IMVI, REC= IVI) IVI, AVS, A4VK, AVB, AVD, AVC 41101 CONTINUE C***** CHECK TO SEE IF IT CAN BE OPEN SEQUENTIAL INQUIRE(UNIT=IMVI,SEQUENTIAL=D4VK) CLOSE(UNIT=IMVI) IF(D4VK .EQ. 'YES ') GOTO 41103 WRITE(NUVI,41102) 41102 FORMAT(1H ,48X,31HTESTS 2 THRU 6 ARE EXPECTED TO / 1 1H ,48X,31HEXECUTE / 2 1H ,48X,31HTEST 1 IS OPTIONAL AND IS NOT / 3 1H ,48X,31HEXECUTED IF DIRECT ACCESS / 4 1H ,48X,31HFILE CANNOT BE REOPENED AS / 5 1H ,48X,31HA SEQUENTIAL FILE ) GOTO 41119 CT001* TEST 1 READ IT SEQUENTIALY 41103 IVTNUM = 1 IVCOMP = 0 OPEN(FILE=CDIR, UNIT=IMVI, ACCESS='SEQUENTIAL', STATUS='OLD', 1 FORM='UNFORMATTED') REWIND(UNIT=IMVI) DO 41104 IVI = 1, 10 READ(UNIT=IMVI) KVI, BVS, B4VK, BVB, BVD, BVC IF (IVI .NE. KVI) GOTO 20010 IF (BVS .LT. F1S(IVI) .OR. BVS .GT. F1S(IVI)) GOTO 20010 IF (B4VK .NE. A41K(IVI)) GOTO 20010 IF ((BVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. BVB .AND. C1B(IVI))) GOTO 20010 IF (BVD .LT. D1D(IVI) .OR. BVD .GT. D1D(IVI)) GOTO 20010 IF ((REAL(BVC) .LT. REAL(C1C(IVI))) .OR. (REAL(BVC) .GT. 1 REAL(C1C(IVI))) .OR. (AIMAG(BVC) .LT. AIMAG(C1C(IVI))) 2 .OR. (AIMAG(BVC) .GT. AIMAG(C1C(IVI)))) GOTO 20010 GO TO 41104 20010 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, IVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, BVD, BVC, IVI, 1 F1S(IVI), A41K(IVI), C1B(IVI), D1D(IVI), 1 C1C(IVI) 70010 FORMAT (1H ,2X,I3,4X,13H FAIL ON REC ,I2) 70020 FORMAT (1H ,16X,10HCOMPUTED: ,I2,1X,F5.2,1X,A4,1X,L1,1X, 1 D10.3,1X,1H(,F6.3,2H, ,F6.3,1H)/ 1 1H ,16X,10HCORRECT: ,I2,1X,F5.2,1X,A4,1X,L1,1X, 1 D10.3,1X,1H(,F6.3,2H, ,F6.3,1H)) 41104 CONTINUE IF (IVCOMP - 0) 0011, 10010, 0011 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0011 CONTINUE C***** 41118 CLOSE(UNIT=IMVI) CT002* TEST 2 REOPEN AS DIRECT FILE, C***** AND READ IN SEQUENTIAL ORDER 41119 IVTNUM = 2 IVCOMP = 0 C***** OPEN(FILE=CDIR, UNIT=IMVI, ACCESS='DIRECT', STATUS='OLD', 1 RECL=132) DO 41120 IVI = 1, 10 READ(UNIT=IMVI, REC = IVI) KVI, BVS, B4VK, BVB, BVD, BVC IF (IVI .NE. KVI) GOTO 20020 IF (BVS .LT. F1S(IVI) .OR. BVS .GT. F1S(IVI)) GOTO 20020 IF (B4VK .NE. A41K(IVI)) GOTO 20020 IF ((BVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. BVB .AND. C1B(IVI))) GOTO 20020 IF (BVD .LT. D1D(IVI) .OR. BVD .GT. D1D(IVI)) GOTO 20020 IF ((REAL(BVC) .LT. REAL(C1C(IVI))) .OR. (REAL(BVC) .GT. 1 REAL(C1C(IVI))) .OR. (AIMAG(BVC) .LT. AIMAG(C1C(IVI))) 2 .OR. (AIMAG(BVC) .GT. AIMAG(C1C(IVI)))) GOTO 20020 GO TO 41120 20020 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, IVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, BVD, BVC, IVI, 1 F1S(IVI), A41K(IVI), C1B(IVI), D1D(IVI), 1 C1C(IVI) 41120 CONTINUE IF (IVCOMP - 0) 0021, 10020, 0021 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0021 CONTINUE C***** 41121 CLOSE(UNIT=IMVI) CT003* TEST 3 READ IT AS DIRECT C***** FILE IN NONSEQUENTIAL ORDER IVTNUM = 3 IVCOMP = 0 C***** OPEN(FILE=CDIR, UNIT=IMVI, ACCESS='DIRECT', STATUS='OLD', 1 RECL=132) DO 41122 IVI = 1, 10 JVI = L1I(IVI) READ(UNIT=IMVI, REC = JVI) KVI, BVS, B4VK, BVB, BVD, BVC IF (KVI .NE. JVI) GOTO 20030 IF (BVS .LT. F1S(JVI) .OR. BVS .GT. F1S(JVI)) GOTO 20030 IF (B4VK .NE. A41K(JVI)) GOTO 20030 IF ((BVB .AND. .NOT. C1B(JVI)) .OR. 1 (.NOT. BVB .AND. C1B(JVI))) GOTO 20030 IF (BVD .LT. D1D(JVI) .OR. BVD .GT. D1D(JVI)) GOTO 20030 IF ((REAL(BVC) .LT. REAL(C1C(JVI))) .OR. (REAL(BVC) .GT. 1 REAL(C1C(JVI))) .OR. (AIMAG(BVC) .LT. AIMAG(C1C(JVI))) 2 .OR. (AIMAG(BVC) .GT. AIMAG(C1C(JVI)))) GOTO 20030 GO TO 41122 20030 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, JVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, BVD, BVC, JVI, 1 F1S(JVI), A41K(JVI), C1B(JVI), D1D(JVI), 1 C1C(JVI) 41122 CONTINUE IF (IVCOMP - 0) 0031, 10030, 0031 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0031 CONTINUE C***** 41123 OPEN(UNIT=KMVI, ACCESS='DIRECT', RECL=80, STATUS='SCRATCH') C***** CT004* TEST 4 CHECK RECL AND NEXTREC ON SCRATCH FILE IVTNUM = 4 INQUIRE(UNIT=KMVI,RECL=IVI,NEXTREC=KVI) IF (IVI .NE. 80) GOTO 20040 IF (KVI .NE. 1) GOTO 20040 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0041 20040 IVFAIL = IVFAIL + 1 WRITE (NUVI, 70030) IVTNUM WRITE (NUVI, 70040) IVI, KVI 70030 FORMAT (1H ,2X,I3,4X,28H FAIL ON RECL AND/OR NEXTREC) 70040 FORMAT (1H ,16X,16HCOMPUTED: RECL=,I4,10H, NEXTREC=,I4/ 1 1H ,16X,34HCORRECT: RECL= 80, NEXTREC= 1) 0041 CONTINUE C***** C***** WRITE DIRECT ACCESS C***** SCRATCH FILE IN NONSEQUENTIAL ORDER DO 41126 IVI = 1,15 JVI = N1I (IVI) AVS = H1S (JVI) A4VK = C41K (JVI) AVB = E1B (JVI) AVC = D1C(JVI) AVD = B1D(JVI) WRITE(UNIT=KMVI, REC= JVI) AVB, AVC, A4VK, JVI, AVD, AVS 41126 CONTINUE CT005* TEST 5 CHECK DIRECT ACCESS SCRATCH FILE C***** BY READING IT IN NONSEQUENTIAL ORDER IVTNUM = 5 IVCOMP = 0 MMVI = -1 DO 41127 IVI = 15,1,-1 JVI = N1I (IVI) READ(UNIT=KMVI, REC = JVI) BVB, BVC, B4VK, KVI, BVD, BVS IF (KVI .NE. JVI) GOTO 20050 IF (BVS .LT. H1S(JVI) .OR. BVS .GT. H1S(JVI)) GOTO 20050 IF (B4VK .NE. C41K(JVI)) GOTO 20050 IF ((BVB .AND. .NOT. E1B(JVI)) .OR. 1 (.NOT. BVB .AND. E1B(JVI))) GOTO 20050 IF (BVD .LT. B1D(JVI) .OR. BVD .GT. B1D(JVI)) GOTO 20050 IF ((REAL(BVC) .LT. REAL(D1C(JVI))) .OR. (REAL(BVC) .GT. 1 REAL(D1C(JVI))) .OR. (AIMAG(BVC) .LT. AIMAG(D1C(JVI))) 2 .OR. (AIMAG(BVC) .GT. AIMAG(D1C(JVI)))) GOTO 20050 GO TO 41127 20050 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, JVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, BVD, BVC, JVI, 1 H1S(JVI), C41K(JVI), E1B(JVI), B1D(JVI), 1 D1C(JVI) 41127 CONTINUE IF (IVCOMP - 0) 0051, 10050, 0051 10050 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0051 CONTINUE C***** CT006* TEST 6 CHECK RECL AND NEXTREC AFTER READING IVTNUM = 6 INQUIRE(UNIT=KMVI,RECL=IVI,NEXTREC=KVI) IF (IVI .NE. 80) GOTO 20060 IF (KVI .NE. 6) GOTO 20060 10060 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM GO TO 0061 20060 IVFAIL = IVFAIL + 1 WRITE (NUVI, 70050) IVTNUM WRITE (NUVI, 70060) IVI, KVI 70050 FORMAT (1H ,2X,I3,4X,28H FAIL ON RECL AND/OR NEXTREC) 70060 FORMAT (1H ,16X,16HCOMPUTED: RECL=,I4,10H, NEXTREC=,I4/ 1 1H ,16X,34HCORRECT: RECL= 80, NEXTREC= 6) 0061 CONTINUE C***** CLOSE (UNIT=KMVI, STATUS = 'DELETE') C***** C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION ***** AND ***** END-FILE-DUMP C SECTION ***** IS USED TO DUMP THE DATA FILE USED BY THIS C ROUTINE. THIS CODE IS OPTIONAL CODE AND IS ONLY USED IF THERE C IS A NEED TO PRINT THE CONTENT OF THE RECORDS FOR THE FILE. C THE CODE CAN BE SELECTED BY THE EXECUTIVE ROUTINE TO BE INCLUDED C IN THE COMPILED PROGRAM FOR EXECUTION BY USING THE *OPT1 C EXECUTIVE ROUTINE CONTROL CARD. IF THE *OPT1 CONTROL CARD IS C NOT SPECIFIED THE DEFAULT WILL BE TO AUTOMATICALLY CHANGE C THIS CODE TO PROGRAM COMMENTS. IF THIS CODE IS SELECTED THE C ROUTINE WILL DUMP THE CONTENTS OF THE FILE TO THE PRINTER FILE C FOLLOWING THE TEST REPORT AND BEFORE THE TEST REPORT SUMMARY. C CDB** *** BEGIN-FILE-DUMP SECTION *** C ITOTR = 10 C ILUN = I10 C IRLGN = 132 C IRNUM = 1 C7701 FORMAT (132A1) C7702 FORMAT (1X,132A1) C DO 7771 IRNUM = 1, ITOTR C READ (ILUN, REC = IRNUM) (IDUMP(ICH), ICH = 1, IRLGN) C WRITE (I02,7702) (IDUMP(ICH), ICH = 1, IRLGN) C7771 CONTINUE C7772 CONTINUE CDE** *** END-FILE-DUMP SECTION *** C**** C***** C THE FOLLOWING SOURCE CODE BRACKETED BY THE COMMENT LINES C ***** BEGIN-FILE-DUMP SECTION ***** AND ***** END-FILE-DUMP C SECTION ***** IS USED TO DUMP THE DATA FILE USED BY THIS C ROUTINE. THIS CODE IS OPTIONAL CODE AND IS ONLY USED IF THERE C IS A NEED TO PRINT THE CONTENT OF THE RECORDS FOR THE FILE. C THE CODE CAN BE SELECTED BY THE EXECUTIVE ROUTINE TO BE INCLUDED C IN THE COMPILED PROGRAM FOR EXECUTION BY USING THE *OPT1 C EXECUTIVE ROUTINE CONTROL CARD. IF THE *OPT1 CONTROL CARD IS C NOT SPECIFIED THE DEFAULT WILL BE TO AUTOMATICALLY CHANGE C THIS CODE TO PROGRAM COMMENTS. IF THIS CODE IS SELECTED THE C ROUTINE WILL DUMP THE CONTENTS OF THE FILE TO THE PRINTER FILE C FOLLOWING THE TEST REPORT AND BEFORE THE TEST REPORT SUMMARY. C CDB** *** BEGIN-FILE-DUMP SECTION *** C ITOTR = 15 C ILUN = I11 C IRLGN = 80 C IRNUM = 1 C7702 FORMAT (80A1) C7704 FORMAT (1X,80A1) C DO 7773 IRNUM = 1, ITOTR C READ (ILUN, REC = IRNUM) (IDUMP(ICH), ICH = 1, IRLGN) C WRITE (I02,7704) (IDUMP(ICH), ICH = 1, IRLGN) C7773 CONTINUE C7774 CONTINUE CDE** *** END-FILE-DUMP SECTION *** C**** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 910 STOP END *HEADER,FORTR,FM910,SUBRTN,FM911 C********************************************************************** C***** FM911 C***** C***** SN911 EAQ - (806) C***** THIS SUBROUTINE IS CALLED BY FM910 C********************************************************************** SUBROUTINE SN911(LW1I, NW1I, FW1S, HW1S, CW1B, EW1B, DW1D, 1 BW1D,CW1C, DW1C, A4W1K, C4W1K) C***** C***** SUBROUTINE USED WITH SEGMENT DIRAF2 (411) TO SUPPLY VALUES C***** TO ARRAYS THRU THE DUMMY ARGUMENT LIST C***** DIMENSION LW1I(10),LT1I(10),NT1I(15),NW1I(15) REAL FT1S(10),FW1S(10),HT1S(15),HW1S(15) LOGICAL CT1B(10),CW1B(10),ET1B(15),EW1B(15) DOUBLE PRECISION DT1D(10),DW1D(10),BT1D(15),BW1D(15) COMPLEX CW1C(10),CT1C(10),DW1C(15),DT1C(15) CHARACTER*4 A4T1K(10),A4W1K(10),C4T1K(15),C4W1K(15) C***** DATA LT1I /2, 3, 1, 3, 10, 8, 9, 6, 7, 5/ DATA NT1I /5, 7, 3, 9, 4, 11, 8, 13, 14, 12, 6, 10, 2, 15, 1/ DATA FT1S /1.0, 2.0, 3.0, 4.0, 5.0, 6.5, 7.1, 8.2, 9.9, 10.0/ DATA HT1S /2.34, 2.3,1.9, 2.3, 9.9, 1.1, 8.8, 7.6, 2.3, 10.1, 1 3.4, 5.60, 34.9, 3.48, 23.8/ DATA A4T1K / 'AAAA', 'BBBB', 'CCCC', 'DDDD', 'EDFG', 'JLKD' 1 , 'CDFE', 'LKJH', 'JHGF', 'LLLL'/ DATA C4T1K / 'HDFK', 'LKJH', 'ASDF', 'LKJH', 'XMNC', 'ALXM' 1 , 'IEOW', 'IERU', 'DJNC', 'DJAL', 'KDFJ', 'ABCD' 2 , 'ASDF', 'GHJK', 'QWER'/ DATA CT1B /.TRUE., .FALSE., .TRUE., .TRUE., .TRUE., .FALSE., 1 .FALSE., .TRUE., .TRUE., .FALSE./ DATA ET1B /.FALSE., .FALSE., .FALSE., .TRUE., .FALSE., .FALSE., 1 .TRUE., .TRUE., .FALSE., .TRUE., .TRUE., .TRUE., 2 .FALSE., .TRUE., .FALSE./ DATA DT1D /1.23D1, 2.34D1, 3.45D3, 4.56D4, 5.602D0, 34.35D1, 1 2.34D1, 398.0D0, 3.49D-1, 0.99D1/ DATA BT1D /3.45D1, 34.5D0, 34.5D4, 2.93D3, 0.09D-2, 3.4D-1, 1 34.0D1, 85.0D1, 3.968D0, 3.48D1, 39.3D4, 0.09D3, 2 389.098D1, 483.98D0, 3456.0D-4/ DATA CT1C /(1.2, 3.4), (9.8, 34.5), (3.4, 34.9), (9.0, 34.9), 1 (2.3, 3.9), (3.98, 8.9), (3.112, 3.4), (8.0, 1.2), 2 (2.56, 2.1), (3.4, 4.5)/ DATA DT1C /(2.3, 3.9), (3.98, 8.9), (3.112, 3.4), (8.0, 1.2), 1 (2.56, 2.1), (3.4, 4.5), (3.4, 34.9), (9.0, 34.9), 2 (1.2, 3.4), (9.8, 34.5), (3.4, 34.9), (9.0, 34.9), 3 (3.112, 3.4), (8.0, 1.2), (3.112, 3.4)/ C***** DO 1 IVI = 1, 10 LW1I(IVI) = LT1I(IVI) FW1S(IVI) = FT1S(IVI) CW1B(IVI) = CT1B(IVI) DW1D(IVI) = DT1D(IVI) CW1C(IVI) = CT1C(IVI) A4W1K(IVI) = A4T1K(IVI) 1 CONTINUE C***** DO 2 IVI = 1, 15 NW1I(IVI) = NT1I(IVI) HW1S(IVI) = HT1S(IVI) EW1B(IVI) = ET1B(IVI) BW1D(IVI) = BT1D(IVI) DW1C(IVI) = DT1C(IVI) C4W1K(IVI) = C4T1K(IVI) 2 CONTINUE C***** RETURN END *END-OF,FM910 FM912.f 481036660 170 2 100666 32893 ` *HEADER,FORTR,FM912 *FILES1,FORTR,FM912 C*********************************************************************** C***** FORTRAN 77 C***** FM912 C***** DIRAF3 - (412) C***** THIS PROGRAM CALLS SUBROUTINE SN913 IN FILE FM913 C*********************************************************************** C***** TESTING OF DIRECT ACCESS FILES ANS REF C***** FORMATTED, WITH BOTH SEQUENTIAL AND DIRECT 12.5 C***** ACCESS TO THE SAME FILE C***** C***** USES SUBROUTINE SN913 FAQ C***** C***** S P E C I F I C A T I O N S SEGMENT 412 C*********************************************************************** DIMENSION F1S(10), G1S(10) CHARACTER*20 A20VK, B20VK, C20VK, A201K(10), B201K(10) CHARACTER*47 A47VK, B47VK, C47VK CHARACTER*51 A51VK CHARACTER*12 A12VK CHARACTER A120VK*120, B120VK*120, A1VK*1, A4VK*4 CHARACTER*31 REMK,REMK1,REMK2,REMK3,REMK4,REMK5,REMK45 LOGICAL AVB, BVB, CVB, C1B(10), D1B(10) DOUBLE PRECISION AVD, BVD, CVD, DVD, D1D(10), B1D(15) C***** C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CX20 REPLACED BY FEXEC X-20 CONTROL CARD. X-20 IS FOR REPLACING CHARACTER*15 CDIR C THE CHARACTER STATEMENT FOR FILE NAMES ASSOCIATED WITH X-130 C (PROGRAM VARIABLE CDIR) IF NOT VALID FOR THE PROCESSOR. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE C***** UNITS GIVEN ARE NOT CAPABLE OF BEING OPENED AS SPECIFIED. C***** C I13 CONTAINS THE UNIT NUMBER FOR A NAMED DIRECT ACCESS FILE. I13 = 24 CX130 REPLACED BY FEXEC X-130 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I13 = NN OVERRIDES THE DEFAULT I13 = 24. C C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A DIRECT, C***** FORMATTED FILE. C***** C CDIR CONTAINS THE FILE NAME FOR UNIT I13. CDIR = ' DIRFILE' C CX201 REPLACED BY FEXEC X-201 CONTROL CARD. CX201 IS FOR SYSTEMS C REQUIRING A DIFFERENT FILE SPECIFIER FOR FILES ASSOCIATED WITH C X-130 THAN THE DEFAULT CDIR = ' DIRFILE'. C C***** FILE NUMBER AND NAME ASSIGNMENT NUVI = I02 KUVI = I13 IVTOTL = 26 ZPROG = 'FM912' C***** C***** FILE NUMBER AND NAME ASSIGNMENT C***** REMK1='RECORD 1 - ERR PATH TAKEN' REMK2='RECORD 2 - ERR PATH TAKEN' REMK3='RECORD 3 - ERR PATH TAKEN' REMK4='RECORD 4 - ERR PATH TAKEN' REMK5='RECORD 5 - ERR PATH TAKEN' REMK45='RECORD 4 + 5 - ERR PATH TAKEN' CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** WRITE(NUVI,41200) 41200 FORMAT( 1H ,/45H DIRAF3 - (412) DIRECT ACCESS FORMATTED FILE/ 1 42H WITH OPTION TO OPEN AS A SEQUENTIAL FILE/ 2 17H ANS REF. - 12.5) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** PLUS OR MINUS VALUES C***** CVS = 0.0001 CVD = 0.0001D0 C***** C***** INITIALIZE DATA ARRAYS C***** CALL SN913(F1S,G1S,C1B,D1B,D1D,B1D,A201K,B201K) C***** C***** OPEN DIRECT ACCESS FILE - STATUS=NEW C***** OPEN(FILE=CDIR, UNIT=KUVI, ACCESS='DIRECT',RECL=120, 1 FORM='FORMATTED',STATUS='NEW') C***** CT001* TEST 1 - CHECKS RECL AND NEXTREC C***** FOR JUST OPENED DIRECT ACCESS FILE C***** IVTNUM=1 INQUIRE(UNIT=KUVI, RECL=IVI, NEXTREC=KVI) IF (IVI .NE. 120) GO TO 33020 IF (KVI .NE. 1) GO TO 33020 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33030 33020 REMK='ERROR IN INQUIRE' WRITE(NUVI,55010)IVTNUM,REMK 55010 FORMAT(1H ,5HTEST ,I3,1X,5H FAIL,34X,A31) IVFAIL=IVFAIL+1 WRITE(NUVI,55020)IVI,KVI 55020 FORMAT(1H ,/,11X,16HCOMPUTED: RECL=,I6,5X,8HNEXTREC=,I6) WRITE(NUVI,55030) 55030 FORMAT(1H ,10X,22HCORRECT: RECL= 120,5X,14HNEXTREC= 1/) C***** CT002* TEST 2 - WRITES RECORD 1 C***** 33030 IVTNUM=2 IVI = 1 AVS = F1S (IVI) BVS = F1S(IVI + 1) A20VK = A201K (IVI) AVB = C1B (IVI) AVD = D1D (IVI) WRITE(UNIT=KUVI,REC=1,FMT=41204,ERR=33040) IVI, AVS, BVS, AVD, 1 AVB, A20VK 41204 FORMAT(I5, F10.5, E14.6, D14.8, L10, A20, 35X, ' LAST RECORD') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33050 33040 WRITE(NUVI,55010)IVTNUM,REMK1 IVFAIL=IVFAIL+1 C***** CT003* TEST 3 - WRITES RECORD 2 C***** 33050 IVTNUM=3 IVI = IVI + 1 AVS = F1S (IVI) BVS = F1S(IVI + 1) A20VK = A201K (IVI) AVB = C1B (IVI) AVD = D1D (IVI) WRITE(UNIT=KUVI,REC=2,FMT=41205,ERR=33060) BVS, AVD, IVI, AVS, 1 AVB, A20VK 41205 FORMAT(E12.6, D15.7, I4, F11.5, L2, A25, 30X, ' LASTS RECORD') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33070 33060 WRITE(NUVI,55010)IVTNUM,REMK2 IVFAIL=IVFAIL+1 C***** CT004* TEST 4 - WRITES RECORD 3 C***** 33070 IVTNUM=4 IVI = IVI + 1 AVS = F1S (IVI) BVS = F1S(IVI + 1) A20VK = A201K (IVI) AVB = C1B (IVI) AVD = D1D (IVI) WRITE(UNIT=KUVI,REC=3,FMT=41206,ERR=33080) IVI, BVS, AVS, AVD, 1 AVB, A20VK 41206 FORMAT(I5, F10.5, E14.6, D14.8, L10, A20, 30X, 'THE LAST REC') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33090 33080 WRITE(NUVI,55010)IVTNUM,REMK3 IVFAIL=IVFAIL+1 C***** CT005* TEST 5 - WRITES RECORDS 4 AND 5 WITH ONE WRITE C***** 33090 IVTNUM=5 IVI = IVI + 1 AVS = F1S (IVI) BVS = F1S(IVI + 1) A20VK = A201K (IVI) AVB = C1B (IVI) AVD = D1D (IVI) WRITE(UNIT=KUVI,REC=4,FMT=41207,ERR=33100) IVI, AVS, AVD, AVB, 1 A20VK, BVS, BVS, AVD, AVB, IVI, AVS, A20VK 41207 FORMAT(I5, F10.5, D14.8, L10, A20, E14.6, 35X, 'NEXT TO LAST',/ 1 E12.6, D15.7, L2, I4, F11.5, A25, 30X, 'THE END') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33290 33100 WRITE(NUVI,55010)IVTNUM,REMK45 IVFAIL=IVFAIL+1 C***** CT006* TEST 6 - CHECK RECL AND NEXTREC ON OPENED FILE C***** 33290 IVTNUM=6 INQUIRE(UNIT=KUVI, RECL=IVI, NEXTREC=KVI) IF (IVI .NE. 120)GO TO 33300 IF(KVI .NE. 6)GO TO 33300 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33110 33300 REMK='ERROR IN INQUIRE' WRITE(NUVI,55010)IVTNUM,REMK IVFAIL=IVFAIL+1 WRITE(NUVI,55020)IVI,KVI WRITE(NUVI,55040) 55040 FORMAT(1H ,10X,22HCORRECT: RECL= 120,5X,14HNEXTREC= 6/) C***** CT007* TEST 7 - READS RECORD 1 C***** 33110 IVTNUM=7 IVI = 1 READ(UNIT=KUVI,REC=IVI,FMT=41210,ERR=33120) KVI, AVS, BVS, AVD, 1 AVB, A20VK, A47VK 41210 FORMAT(I5, F10.5, E14.6, D14.8, L10, A20, A47) ISWT=1 GO TO 33220 33120 WRITE(NUVI,55010)IVTNUM,REMK1 IVFAIL=IVFAIL+1 C***** CT008* TEST 8 - READS RECORD 2 C***** 33130 IVTNUM=8 IVI = 2 READ(UNIT=KUVI,REC=IVI,FMT=41238,ERR=33140) BVS, AVD, KVI, AVS, 1 AVB, A20VK, A51VK 41238 FORMAT(E12.6, D15.7, I4, F11.5, L2, A25, A51) ISWT=2 GO TO 33230 33140 WRITE(NUVI,55010)IVTNUM,REMK2 IVFAIL=IVFAIL+1 C***** CT009* TEST 9 - READS RECORD 3 C***** 33150 IVTNUM=9 IVI = 3 READ(UNIT=KUVI,REC=IVI,FMT=41210,ERR=33160) LVI, DVS, GVS, BVD, 1 BVB, B20VK, B47VK ISWT=3 GO TO 33240 33160 WRITE(NUVI,55010)IVTNUM,REMK3 IVFAIL=IVFAIL+1 C***** CT010* TEST 10 - READS RECORD 4 C***** 33170 IVTNUM=10 IVI = 4 READ(UNIT=KUVI,REC=IVI,FMT=41241,ERR=33180) NVI, EVS, DVD, CVB, 1 C20VK, FVS, C47VK 41241 FORMAT(I5, F10.5, D14.8, L10, A20, E14.6, A47) ISWT=4 GO TO 33250 33180 WRITE(NUVI,55010)IVTNUM,REMK4 IVFAIL=IVFAIL+1 C***** CT011* TEST 11 - READS RECORD 5 C***** 33190 IVTNUM=11 IVI = 5 JVI = 4 READ(UNIT=KUVI,REC=IVI,FMT=41218,ERR=33200) BVS, AVD, AVB, KVI, 1 AVS, A20VK, A51VK 41218 FORMAT(E12.6, D15.7, L2, I4, F11.5, A25, A51) ISWT=5 GO TO 33260 33200 WRITE(NUVI,55010)IVTNUM,REMK5 IVFAIL=IVFAIL+1 C***** CT012* TEST 12 - OVERWRITES RECORD 3 C***** 33210 IVTNUM=12 IVI = 3 AVS = G1S (IVI) BVS = G1S(IVI + 1) A20VK = B201K (IVI) AVB = D1B (IVI) AVD = B1D (IVI) WRITE(UNIT=KUVI,REC=3,FMT=41251,ERR=33310) IVI, AVS, BVS, AVD, 1 A20VK, AVB 41251 FORMAT(I5, F11.5, E13.6, D14.8, A20, L10, 35X, 'NEW RECORD ') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33320 33310 WRITE(NUVI,55010)IVTNUM,REMK3 IVFAIL=IVFAIL+1 C***** CT013* TEST 13 - OVERWRITES RECORD 5 C***** 33320 IVTNUM=13 IVI = 5 AVS = G1S (IVI) BVS = G1S(IVI - 1) A20VK = B201K (IVI) AVB = D1B (IVI) AVD = B1D (IVI) WRITE(UNIT=KUVI,REC=5,FMT=41252,ERR=33330) AVS, IVI, A20VK, AVD, 1 BVS, AVB 41252 FORMAT(F10.5, I5, A20, D14.8, E14.6, L10, 35X, 'STOP RECORD') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33340 33330 WRITE(NUVI,55010)IVTNUM,REMK5 IVFAIL=IVFAIL+1 C***** C***** CLOSE AND REOPEN DIRECT ACCESS FILE C***** 33340 CLOSE(UNIT=KUVI) OPEN(FILE=CDIR, UNIT=KUVI, ACCESS='DIRECT',STATUS='OLD', 1 FORM='FORMATTED',RECL=120) C***** CT014* TEST 14 - READS RECORD 4 C***** IVTNUM=14 IVI = 4 READ(UNIT=KUVI,REC=IVI,FMT=41241,ERR=33350) NVI, EVS, DVD, CVB, 1 C20VK, FVS, C47VK ISWT=6 GO TO 33250 33350 WRITE(NUVI,55010)IVTNUM,REMK4 IVFAIL=IVFAIL+1 C***** CT015* TEST 15 - READS THE CHANGED RECORD 5 C***** 33360 IVTNUM=15 IVI = 5 READ(UNIT=KUVI,REC=IVI,FMT=41254,ERR=33370) AVS, KVI, A20VK, 1 AVD, BVS, AVB, A47VK 41254 FORMAT(F10.5, I5, A20, D14.8, E14.6, L10, A47) ISWT=7 IF (KVI .NE. IVI) GOTO 41221 IF (AVS .LT. G1S(IVI)-CVS .OR. AVS .GT. G1S(IVI)+CVS) GOTO 41223 IF (BVS.LT.G1S(IVI-1)-CVS .OR. BVS.GT.G1S(IVI-1)+CVS) GOTO 41225 IF (A20VK .NE. B201K(IVI)) GOTO 41229 IF ((AVB .AND. .NOT. D1B(IVI)) .OR. 1 (.NOT. AVB .AND. D1B(IVI))) GOTO 41233 IF (AVD .LT. B1D(IVI)-CVD .OR. AVD .GT. B1D(IVI)+CVD) GOTO 41227 IF (A47VK .NE. 1 ' STOP RECORD') GOTO 41231 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33380 33370 WRITE(NUVI,55010)IVTNUM,REMK5 IVFAIL=IVFAIL+1 C***** CT016* TEST 16 - READS RECORD 2 C***** 33380 IVTNUM=16 IVI = 2 READ(UNIT=KUVI,REC=IVI,FMT=41238,ERR=33390) BVS, AVD, KVI, AVS, 1 AVB, A20VK, A51VK ISWT=8 GO TO 33230 33390 WRITE(NUVI,55010)IVTNUM,REMK2 IVFAIL=IVFAIL+1 C***** CT017* TEST 17 - READS THE CHANGED RECORD 3 C***** 33400 IVTNUM=17 IVI = 3 READ(UNIT=KUVI,REC=3,FMT=41256,ERR=33410) KVI, AVS, BVS, AVD, 1 A20VK, AVB, A47VK 41256 FORMAT(I5, F11.5, E13.6, D14.8, A20, L10, A47) ISWT=9 IF (KVI .NE. IVI) GOTO 41221 IF (AVS .LT. G1S(IVI)-CVS .OR. AVS .GT. G1S(IVI)+CVS) GOTO 41223 IF (BVS.LT.G1S(IVI+1)-CVS .OR. BVS.GT.G1S(IVI+1)+CVS) GOTO 41225 IF (A20VK .NE. B201K(IVI)) GOTO 41229 IF ((AVB .AND. .NOT. D1B(IVI)) .OR. 1 (.NOT. AVB .AND. D1B(IVI))) GOTO 41233 IF (AVD .LT. B1D(IVI)-CVD .OR. AVD .GT. B1D(IVI)+CVD) GOTO 41227 IF (A47VK .NE. 1 ' NEW RECORD ') GOTO 41231 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33420 33410 WRITE(NUVI,55010)IVTNUM,REMK3 IVFAIL=IVFAIL+1 C***** CT018* TEST 18 - READS RECORD 1 C***** 33420 IVTNUM=18 IVI = 1 READ(UNIT=KUVI,REC=IVI,FMT=41210,ERR=33430) KVI, AVS, BVS, AVD, 1 AVB, A20VK, A47VK ISWT=10 GO TO 33220 33430 WRITE(NUVI,55010)IVTNUM,REMK1 IVFAIL=IVFAIL+1 C***** CT019* TEST 19 - OVERWRITES RECORD 4 C***** 33440 IVTNUM=19 41258 IVI = 4 KVI = IVI + 1 AVS = F1S (IVI) BVS = F1S(IVI + 1) EVS = F1S(IVI) + 2.34 AVD = D1D (IVI) WRITE(UNIT=KUVI,REC=4,FMT=41259,ERR=33450) IVI, KVI, AVS, BVS, 1 EVS, AVD 41259 FORMAT(I5, I5.3, F10.5, E14.6, E20.1E4, D14.8) WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33460 33450 WRITE(NUVI,55010)IVTNUM,REMK4 IVFAIL=IVFAIL+1 C***** CT020* TEST 20 - OVERWRITES RECORDS 1, 2, AND 3 C***** 33460 IVTNUM=20 IVI = 1 A1VK = 'A' A4VK = A201K (IVI) (1:4) AVB = C1B (IVI) AVD = D1D (IVI) BVD = D1D (IVI) + 3.234D2 WRITE(UNIT=KUVI,REC=1,FMT=41260,ERR=33470) AVD, BVD, AVB, A1VK, 1 A4VK 41260 FORMAT(G14.8, G20.2E4, L2, A, A4, 'TSAL DROCER',//, 1 10HHOLLERITH , T15, 'ONE', 10X, TL5, 'TWO', TR5, 2 'THREE', :, 'LAST') WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33480 33470 WRITE(NUVI,55010)IVTNUM,REMK1 IVFAIL=IVFAIL+1 C***** CT021* TEST 21 - OVERWRITES RECORD 5 C***** 33480 IVTNUM=21 IVI = 5 BVS = F1S(IVI - 1) AVD = B1D (4) WRITE(UNIT=KUVI,REC=5,FMT=41261,ERR=33490) IVI, BVS, IVI, AVD 41261 FORMAT(SP, I5, S, F10.5, SS, I5, 3PE14.6E2) WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33500 33490 WRITE(NUVI,55010)IVTNUM,REMK5 IVFAIL=IVFAIL+1 C***** C***** CLOSE AND REOPEN DIRECT ACCESS FILE C***** 33500 CLOSE(UNIT=KUVI) OPEN(FILE=CDIR, UNIT=KUVI, ACCESS='DIRECT',STATUS='OLD', 1 FORM='FORMATTED',RECL=120) C***** CT022* TEST 22 - READS RECORD 1 C***** IVTNUM=22 IVI = 1 READ(UNIT=KUVI,REC=IVI,FMT=41262,ERR=33510) AVD, A20VK, AVB, 1 A1VK, A4VK, A12VK 41262 FORMAT(G14.8, A20, L2, A, A4, A12) ISWT=1 IF (AVD .LT. D1D(IVI)-CVD .OR. AVD .GT. D1D(IVI)+CVD) GOTO 41277 IF (A20VK(12:20) .NE. '.34E+0003') GOTO 41279 IF ((A1VK .NE. 'A') .OR. 1 (A4VK .NE. A201K(IVI)(1:4)) .OR. 2 (A12VK .NE. 'TSAL DROCER')) GOTO 41229 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33520 33510 WRITE(NUVI,55010)IVTNUM,REMK1 IVFAIL=IVFAIL+1 C***** RECORD # 4 CT023* TEST 23 - READS RECORD 4 C***** 33520 IVTNUM=23 IVI = 4 READ(UNIT=KUVI,REC=IVI,FMT=41266,ERR=33530) KVI, A20VK, AVS, 1 BVS, B20VK, AVD 41266 FORMAT(I5, A5, F10.5, E14.6, A20, D14.8) ISWT=2 IF (A20VK(3:5) .NE. '005') GOTO 41293 IF ((AVS .LT. F1S(IVI)-CVS .OR. AVS .GT. F1S(IVI)+CVS) .OR. 1 (BVS.LT.F1S(IVI+1)-CVS .OR. BVS.GT.F1S(IVI+1)+CVS) .OR. 2 (B20VK(13:20) .NE. '.6E+0001')) GOTO 41225 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33540 33530 WRITE(NUVI,55010)IVTNUM,REMK4 IVFAIL=IVFAIL+1 C***** CT024* TEST 24 - READS RECORD 2 TESTS FOR BLANK RECORD C***** 33540 IVTNUM=24 B120VK = ' ' IVI = 2 READ(UNIT=KUVI,REC=IVI,FMT=41269,ERR=33550) A120VK 41269 FORMAT(A120) ISWT=3 IF (A120VK .NE. B120VK) GOTO 41281 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33560 33550 WRITE(NUVI,55010)IVTNUM,REMK2 IVFAIL=IVFAIL+1 C***** CT025* TEST 25 - READS RECORD 5 C***** 33560 IVTNUM=25 IVI = 5 READ(UNIT=KUVI,REC=IVI,FMT=41271,ERR=33570) A20VK(1:5), AVS, 1 B20VK, C20VK 41271 FORMAT(A5, F10.5, BZ, A5, BN, A20) ISWT=4 IF (A20VK(1:5) .NE. ' +5') GOTO 41283 IF (B20VK(1:5) .NE. ' 5') GOTO 41285 IF (C20VK(1:14) .NE. ' 625.0000E-03') GOTO 41287 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33580 33570 WRITE(NUVI,55010)IVTNUM,REMK5 IVFAIL=IVFAIL+1 C***** CT026* TEST 26 - READS RECORD 3 C***** 33580 IVTNUM=26 IVI = 3 READ(UNIT=KUVI,REC=IVI,FMT=41275,ERR=33590) A120VK 41275 FORMAT(A120) ISWT=5 IF (A120VK(1:10) .NE. 'HOLLERITH') GOTO 41289 IF (A120VK(11:40) .NE. 1 ' ONE TWO THREE ') GOTO 41291 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33600 33590 WRITE(NUVI,55010)IVTNUM,REMK3 IVFAIL=IVFAIL+1 C***** C***** CLOSE DIRECT ACCESS FILE C***** 33600 CLOSE(UNIT=KUVI,STATUS='DELETE') GO TO 33610 C***** C***** CHECKING RECORD 1 C***** 33220 IF (KVI .NE. IVI) GOTO 41221 IF (AVS .LT. F1S(IVI)-CVS .OR. AVS .GT. F1S(IVI)+CVS) GOTO 41223 IF (BVS.LT.F1S(IVI+1)-CVS .OR. BVS.GT.F1S(IVI+1)+CVS) GOTO 41225 IF (A20VK .NE. A201K(IVI)) GOTO 41229 IF (A47VK .NE. 1 ' LAST RECORD') GOTO 41231 IF ((AVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. AVB .AND. C1B(IVI))) GOTO 41233 IF (AVD .LT. D1D(IVI)-CVD .OR. AVD .GT. D1D(IVI)+CVD) GOTO 41227 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 IF (ISWT .EQ. 10)GO TO 33440 GO TO 33130 41221 WRITE(NUVI,41222)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT 41223 WRITE(NUVI,41224)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT 41225 WRITE(NUVI,41226)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT 41227 WRITE(NUVI,41228)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT 41229 WRITE(NUVI,41230)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT 41231 WRITE(NUVI,41232)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT 41233 WRITE(NUVI,41234)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO (33130,33150,33170,33190,33210,33360,33380,33400, 1 33420,33440)ISWT C***** C***** CHECKING RECORD 2 C***** 33230 IF (KVI .NE. IVI) GOTO 41221 IF (AVS .LT. F1S(IVI)-CVS .OR. AVS .GT. F1S(IVI)+CVS) GOTO 41223 IF (BVS.LT.F1S(IVI+1)-CVS .OR. BVS.GT.F1S(IVI+1)+CVS) GOTO 41225 IF (A20VK .NE. A201K(IVI)) GOTO 41229 IF ((AVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. AVB .AND. C1B(IVI))) GOTO 41233 IF (AVD .LT. D1D(IVI)-CVD .OR. AVD .GT. D1D(IVI)+CVD) GOTO 41227 IF (A51VK .NE. 1 ' LASTS RECORD ')GOTO 41231 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 IF (ISWT .EQ. 8)GO TO 33400 GO TO 33150 C***** C***** CHECKING RECORD 3 C***** 33240 IF (LVI .NE. IVI) GOTO 41221 IF (GVS .LT. F1S(IVI)-CVS .OR. GVS .GT. F1S(IVI)+CVS) GOTO 41223 IF (DVS.LT.F1S(IVI+1)-CVS .OR. DVS.GT.F1S(IVI+1)+CVS) GOTO 41225 IF (B20VK .NE. A201K(IVI)) GOTO 41229 IF ((BVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. BVB .AND. C1B(IVI))) GOTO 41233 IF (BVD .LT. D1D(IVI)-CVD .OR. BVD .GT. D1D(IVI)+CVD) GOTO 41227 IF (B47VK .NE. 1 ' THE LAST REC ') GOTO 41231 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33170 C***** C***** CHECKING RECORD 4 C***** 33250 IF (NVI .NE. IVI) GOTO 41221 IF (EVS .LT. F1S(IVI)-CVS .OR. EVS .GT. F1S(IVI)+CVS) GOTO 41223 IF (FVS.LT.F1S(IVI+1)-CVS .OR. FVS.GT.F1S(IVI+1)+CVS) GOTO 41225 IF (C20VK .NE. A201K(IVI)) GOTO 41229 IF ((CVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. CVB .AND. C1B(IVI))) GOTO 41233 IF (DVD .LT. D1D(IVI)-CVD .OR. DVD .GT. D1D(IVI)+CVD) GOTO 41227 IF (C47VK .NE. 1 ' NEXT TO LAST') GOTO 41231 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 IF (ISWT .EQ. 6)GO TO 33360 GO TO 33190 C***** C***** CHECKING RECORD 5 C***** 33260 IF (KVI .NE. JVI) GOTO 41221 IF (AVS .LT. F1S(JVI)-CVS .OR. AVS .GT. F1S(JVI)+CVS) GOTO 41223 IF (BVS.LT.F1S(JVI+1)-CVS .OR. BVS.GT.F1S(JVI+1)+CVS) GOTO 41225 IF (A20VK .NE. A201K(JVI)) GOTO 41229 IF ((AVB .AND. .NOT. C1B(JVI)) .OR. 1 (.NOT. AVB .AND. C1B(JVI))) GOTO 41233 IF (AVD .LT. D1D(JVI)-CVD .OR. AVD .GT. D1D(JVI)+CVD) GOTO 41227 IF (A51VK .NE. 1 ' THE END ') GOTO 41231 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 33210 C***** C***** C***** 41277 WRITE(NUVI,41278)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41279 WRITE(NUVI,41280)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41281 WRITE(NUVI,41282)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41283 WRITE(NUVI,41284)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41285 WRITE(NUVI,41286)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41287 WRITE(NUVI,41288)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41289 WRITE(NUVI,41290)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41291 WRITE(NUVI,41292)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT 41293 WRITE(NUVI,41294)IVTNUM,IVI IVFAIL=IVFAIL+1 GO TO(33520,33540,33560,33580,33600)ISWT C***** C***** C***** 41222 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 14H - ON I FORMAT) 41224 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 14H - ON F FORMAT) 41226 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 14H - ON E FORMAT) 41228 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 14H - ON D FORMAT) 41230 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 14H - ON A FORMAT) 41232 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 20H - ON X AND ' FORMAT) 41234 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 14H - ON L FORMAT) 41278 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 17H - ON GW.D FORMAT) 41280 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 19H - ON GW.DEN FORMAT) 41282 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 19H - ON BLANK RECORD ) 41284 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 19H - ON SP FORMAT ) 41286 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 21H - ON BZ OR SS FORMAT) 41288 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 19H - ON NP FORMAT ) 41290 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 19H - ON H FORMAT ) 41292 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 23H - ON TR, TLC, T FORMAT) 41294 FORMAT(1H ,5HTEST ,I3,6H FAIL,34X,6HRECORD,I2, 1 19H - ON IN.N FORMAT ) C***** C***** END OF TEST SEGMENT 412 C***** 33610 CONTINUE CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *HEADER,FORTR,FM912,SUBRTN,FM913 C********************************************************************** C***** FORTRAN 77 C***** FM913 C***** SN913 FAQ - (807) C***** THIS SUBROUTINE IS CALLED BY PROGRAM FM912 C********************************************************************** SUBROUTINE SN913(FW1S, GW1S, CW1B, DW1B, DW1D, BW1D, 1 A20W1K, B20W1K) C***** C***** SUBROUTINE USED WITH SEGMENT DIRAF3 (412) TO SUPPLY VALUES C***** TO ARRAYS THRU THE DUMMY ARGUMENT LIST C***** REAL FT1S(5),FW1S(5),GT1S(5),GW1S(5) LOGICAL CT1B(5),CW1B(5),DT1B(5),DW1B(5) DOUBLE PRECISION DT1D(5),DW1D(5),BT1D(5),BW1D(5) CHARACTER*20 A20T1K(5),A20W1K(5),B20T1K(5),B20W1K(5) DATA FT1S /1.0, 2.0, 3.0, 4.0, 5.0/ DATA GT1S /1.2, 2.3, 3.5, 4.45, 45.0/ DATA A20T1K / 'AAAALKJHGFASERTYUIOP', 'KDJFLKJEOITMNV E CJF', 1 'CDFEJHFKLM CNB FHGDC', 'LKJHNHBJMVK,FIJ NVHD', 2 'JHGFKDJJSLDKFJDKJFSL'/ DATA B20T1K / 'AAAALSDEFCASERTYUIOP', 'KDDFFEJEOITMNV E CJF', 1 'CDFEJHFKLM DHGDC', 'L...NHBJMVK,FIJ NVHD', 2 'LKJHDNMVHNEUYHBDGHCJ'/ DATA CT1B /.TRUE., .FALSE., .TRUE., .TRUE., .FALSE./ DATA DT1B /.FALSE., .TRUE., .FALSE., .TRUE., .TRUE./ DATA DT1D /1.23D1, 2.34D1, 3.45D3, 5.602D3, 5.602D0/ DATA BT1D /23.1D1, 34.1D1, 23.45D3, .625D0, 109.384D0/ C***** C***** C***** DO 1 IVI = 1, 5 FW1S(IVI) = FT1S(IVI) GW1S(IVI) = GT1S(IVI) CW1B(IVI) = CT1B(IVI) DW1B(IVI) = DT1B(IVI) DW1D(IVI) = DT1D(IVI) BW1D(IVI) = BT1D(IVI) A20W1K(IVI) = A20T1K(IVI) B20W1K(IVI) = B20T1K(IVI) 1 CONTINUE C***** C***** C***** RETURN END *END-OF,FM912 FM914.f 481036664 170 2 100666 11061 ` *HEADER,FORTR,FM914 *FILES1,FORTR,FM914,X C*********************************************************************** C***** FM914 C***** INQU1 - (430) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY UNIT ON SEQUENTIAL, FORMATTED FILES 12.10.3 C***** C***** THE TESTS IN THIS UNIT ARE ONLY PERFORMED ON A C***** UNIT THAT IS CONNECTED FOR SEQUENTIAL, FORMATTED ACCESS C***** (ANS REF. 12.2.4.1 AND 12.9.5.2) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C*********************************************************************** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** LOGICAL AVB, BVB CHARACTER*10 B10VK, C10VK, E11VK*11, F10VK, H10VK CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C I08 CONTAINS THE UNIT NUMBER FOR A SEQUENTIAL FORMATTED FILE. I08 = 14 CX080 REPLACED BY FEXEC X-080 CONTROL CARD (SEQ. FILE UNIT NUMBER). C SPECIFYING I08 = NN OVERRIDES THE DEFAULT I08 = 14. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** SEQUENTIAL, FORMATTED FILE. C***** NUVI = I02 IMVI = I08 ZPROG = 'FM914' IVTOTL = 1 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43000) 43000 FORMAT(1H , / 30H INQU1 - (430) INQUIRE BY UNIT// 1 45H SEQUENTIAL FORMATTED FILE, CONNECTED BY OPEN// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE C***** OPEN(UNIT=IMVI, ACCESS='SEQUENTIAL', FORM='FORMATTED', 1 BLANK='NULL') C***** CT001* TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(UNIT=IMVI, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 FORMATTED=F10VK, BLANK=H10VK, ERR=20011, IOSTAT=KVI) IF (KVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IMVI) GO TO 20010 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20010 IF (C10VK .NE. 'YES') GO TO 20010 IF (E11VK .NE. 'FORMATTED') GO TO 20010 IF (F10VK .NE. 'YES' ) GO TO 20010 IF (H10VK .NE. 'NULL') GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20011 CONTINUE WRITE (NUVI, 20021) IVTNUM 20021 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20012 20010 CONTINUE WRITE (NUVI, 20020) IVTNUM 20020 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20012 CONTINUE IVFAIL = IVFAIL + 1 WRITE (NUVI, 20030) KVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 F10VK,H10VK 20030 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A9,1H,/1H ,26X,10HFORMATTED=,A3,8H, BLANK=,A4) WRITE (NUVI, 20040) IMVI 20040 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 10HFORMATTED,/1H ,26X,25HFORMATTED=YES, BLANK=NULL) 0011 CONTINUE C***** REWIND IMVI CLOSE(UNIT=IMVI, STATUS='DELETE') CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 914 STOP END *END-OF,FM914 FM915.f 481036667 170 2 100666 14673 ` *HEADER,FORTR,FM915 *FILES1,FORTR,FM915,X C*********************************************************************** C***** FORTRAN 77 C***** FM915 C***** INQU2 - (431) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE ON SEQUENTIAL, UNFORMATTED FILES 12.10.3 C***** C***** THE TESTS IN THIS UNIT ARE ONLY PERFORMED ON A C***** UNIT THAT IS CONNECTED FOR SEQUENTIAL, UNFORMATTED ACCESS C***** (ANS REF. 12.2.4.1 AND 12.9.5.1) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C***** THE SEGMENT TESTS THAT INQUIRE IS PERFORMED CORRECTLY C***** BEFORE READING OR WRITING TO A FILE, AFTER WRITING TO A FILE C***** AND AFTER READING FROM A FILE. C*********************************************************************** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** LOGICAL AVB, BVB CHARACTER*10 B10VK, C10VK, E11VK*11, G10VK C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** SEQUENTIAL, UNFORMATTED FILE. C I05 CONTAINS THE UNIT NUMBER FOR A SEQUENTIAL UNFORMATTED FILE. I05 = 14 CX050 REPLACED BY FEXEC X-050 CONTROL CARD (SEQ. FILE UNIT NUMBER). C SPECIFYING I05 = NN OVERRIDES THE DEFAULT I05 = 14. C***** NUVI = I02 IMVI = I05 ZPROG = 'FM915' IVTOTL = 3 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43100) 43100 FORMAT(1H , / 30H INQU2 - (431) INQUIRE BY UNIT// 1 47H SEQUENTIAL UNFORMATTED FILE, CONNECTED BY OPEN// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE C***** OPEN(UNIT=IMVI, ACCESS='SEQUENTIAL', FORM='UNFORMATTED') CT001* TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(UNIT=IMVI, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 UNFORMATTED=G10VK, ERR=20014, IOSTAT=KVI) C***** IF (KVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IMVI) GO TO 20010 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20010 IF (C10VK. NE. 'YES') GO TO 20010 IF (E11VK .NE. 'UNFORMATTED') GO TO 20010 IF (G10VK .NE. 'YES' ) GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) KVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 G10VK 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20013) IMVI 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 12HUNFORMATTED,/1H ,26X,15HUNFORMATTED=YES) 0011 CONTINUE C***** C***** WRITE TO FILE C***** WRITE(IMVI) JVI CT002* TEST 2 - SECOND INQUIRE (AFTER WRITE) IVTNUM = 2 INQUIRE(UNIT=IMVI, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 UNFORMATTED=G10VK, ERR=20024, IOSTAT=KVI) C***** IF (KVI .NE. 0) GO TO 20020 IF (.NOT. AVB) GO TO 20020 IF (.NOT. BVB) GO TO 20020 IF (JVI .NE. IMVI) GO TO 20020 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20020 IF (C10VK.NE. 'YES') GO TO 20020 IF (E11VK .NE. 'UNFORMATTED') GO TO 20020 IF (G10VK .NE. 'YES' ) GO TO 20020 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0021 20024 CONTINUE WRITE (NUVI, 20025) IVTNUM 20025 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20026 20020 CONTINUE WRITE (NUVI, 20021) IVTNUM 20021 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20026 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20022) KVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 G10VK 20022 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20023) IMVI 20023 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 12HUNFORMATTED,/1H ,26X,15HUNFORMATTED=YES) 0021 CONTINUE C***** C***** REWIND AND READ FILE REWIND IMVI READ(IMVI) JVI REWIND IMVI C***** CT003* TEST 3 - THIRD INQUIRE (AFTER READ) IVTNUM = 3 INQUIRE(UNIT=IMVI, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 UNFORMATTED=G10VK, ERR=20034,IOSTAT=KVI) C***** IF (KVI .NE. 0) GO TO 20030 IF (.NOT. AVB) GO TO 20030 IF (.NOT. BVB) GO TO 20030 IF (JVI .NE. IMVI) GO TO 20030 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20030 IF (C10VK .NE. 'YES') GO TO 20030 IF (E11VK .NE. 'UNFORMATTED') GO TO 20030 IF (G10VK .NE. 'YES' ) GO TO 20030 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0031 20034 CONTINUE WRITE (NUVI, 20035) IVTNUM 20035 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20036 20030 CONTINUE WRITE (NUVI, 20031) IVTNUM 20031 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20036 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20032) KVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 G10VK 20032 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20033) IMVI 20033 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 12HUNFORMATTED,/1H ,26X,15HUNFORMATTED=YES) 0031 CONTINUE CLOSE(UNIT=IMVI, STATUS='DELETE') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMAT1 ********************************** C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE C**** 80031 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1D17.10,/,1H ,16X,10HCORRECT= ,D17.10) 80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31) 80035 FORMAT (1H ,16X,10HCORRECT= ,D17.10,10X,A31) 80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80039 FORMAT (1H ,16X,10HCORRECT= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31) 80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80043 FORMAT (1H ,16X,10HCORRECT= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31) 80045 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT= , 21H(,F12.5,2H, ,F12.5,1H)) CBE** ********************** BBCFMAT1 ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 431 STOP END *END-OF,FM915 FM916.f 481036670 170 2 100666 10424 ` *HEADER,FORTR,FM916 *FILES1,FORTR,FM916,X C*********************************************************************** C***** FORTRAN 77 C***** FM916 C***** INQU3 - (432) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY UNIT ON DIRECT, FORMATTED FILE 12.10.3 C***** C***** THE TESTS IN THE UNIT ARE ONLY PERFORMED ON A C***** UNIT THAT IS CONNECTED FOR FORMATTED, DIRECT ACCESS C***** (ANS REF. 12.2.4.2 AND 12.9.5.2) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** LOGICAL AVB, BVB CHARACTER*10 B10VK, D10VK, E11VK*11, F10VK, H10VK CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** DIRECT, FORMATTED FILE. C***** S C R A T C H D I R E C T A C C E S S U N I T I14 = 14 CX140 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-140 C X-140 I14 = NN WILL OVERRIDE I14 = 14 C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF 40 IS C***** NOT A VALID RECORD LENGTH. MVI = 40 C***** NUVI = I02 IOVI = I14 ZPROG = 'FM916' IVTOTL = 1 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43200) 43200 FORMAT(1H , / 30H INQU3 - (432) INQUIRE BY UNIT// 1 29H DIRECT ACCESS FORMATTED FILE// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE OPEN(UNIT=IOVI, ACCESS='DIRECT', RECL=MVI, FORM='FORMATTED', 1 BLANK='NULL') C***** C***** TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(UNIT=IOVI, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 2 FORM=E11VK, FORMATTED=F10VK, BLANK=H10VK, ERR=20014, 3 IOSTAT=NVI) C***** IF (NVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IOVI) GO TO 20010 IF (B10VK .NE. 'DIRECT') GO TO 20010 IF (D10VK .NE. 'YES') GO TO 20010 IF (KVI .NE. MVI) GO TO 20010 IF (LVI .NE. 1) GO TO 20010 IF (E11VK .NE. 'FORMATTED') GO TO 20010 IF (F10VK .NE. 'YES' ) GO TO 20010 IF (H10VK .NE. 'NULL') GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) NVI,AVB,BVB,JVI,B10VK,D10VK, 1 KVI,LVI,E11VK,F10VK,H10VK 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,9H, DIRECT=,A3,7H, RECL=, 3 I4,1H,/1H ,26X,8HNEXTREC=,I4,7H, FORM=, 4 A9,1H,/1H ,26X,10HFORMATTED=,A3,8H, BLANK=,A4) WRITE (NUVI, 20013) IOVI,MVI 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,32HACCESS=DIRECT, DIRECT=YES, RECL=, 3 I4,1H,/1H ,26X,26HNEXTREC=1, FORM=FORMATTED,/ 4 1H ,26X,25HFORMATTED=YES, BLANK=NULL) 0011 CONTINUE C***** CLOSE(UNIT=IOVI, STATUS='DELETE') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 432 STOP END *END-OF,FM916 FM917.f 481036674 170 2 100666 13908 ` *HEADER,FORTR,FM917 *FILES1,FORTR,FM917,X C*********************************************************************** C***** FORTRAN 77 C***** FM917 C***** INQU4 - (433) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY UNIT ON DIRECT, UNFORMATTED FILE 12.10.3 C***** C***** THE TESTS IN THE UNIT ARE ONLY PERFORMED ON A C***** UNIT THAT IS CONNECTED FOR DIRECT, UNFORMATTED ACCESS C***** (ANS REF. 12.2.4.2 AND 12.9.5.1) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C***** THIS SEGMENT TESTS THAT AN INQUIRE IS PERFORMED CORRECTLY C***** BEFORE READING OR WRITING TO THE FILE, AFTER WRITING TO C***** THE FILE, AND AFTER READING FROM THE FILE. C***** C***** NOTE: C***** AN INQUIRE STATEMENT IS NEEDED TO TEST THE READ AND C***** WRITE OF MORE THAN A SINGLE RECORD AT A TIME, IN ORDER TO C***** DETERMINE THAT THE RECORD NUMBER IS ADVANCED THE CORRECT C***** NUMBER (ONE MORE THAN THE RECORD NUMBER LAST READ OR WRITTEN). C***** THIS TEST WILL BE PERFORMED IN THE SEGMENTS WHICH TEST C***** DIRECT ACCESS FILES - SEGMENT DIRAF3 (412). C*********************************************************************** C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** LOGICAL AVB, BVB CHARACTER*10 B10VK, D10VK, E11VK*11, G10VK C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** DIRECT, UNFORMATTED FILE. C***** C I12 CONTAINS THE UNIT NUMBER FOR A DIRECT, UNFORMATTED FILE. I12 = 14 CX120 REPLACED BY FEXEC X-120 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I12 = NN OVERRIDES THE DEFAULT I12 = 14. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A DIRECT, C***** UNFORMATTED FILE. C***** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF 40 IS C***** NOT A VALID RECORD LENGTH. MVI = 40 C***** NUVI = I02 IOVI = I12 ZPROG = 'FM917' IVTOTL = 3 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43300) 43300 FORMAT(1H , / 30H INQU4 - (433) INQUIRE BY UNIT// 1 31H DIRECT ACCESS UNFORMATTED FILE// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE OPEN(UNIT=IOVI, ACCESS='DIRECT', RECL=MVI, FORM='UNFORMATTED') C***** CT001* TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(UNIT=IOVI, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 2 FORM=E11VK, UNFORMATTED=G10VK, ERR=20014,IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IOVI) GO TO 20010 IF (B10VK .NE. 'DIRECT') GO TO 20010 IF (D10VK .NE. 'YES') GO TO 20010 IF (KVI .NE. MVI) GO TO 20010 IF (LVI .NE. 1) GO TO 20010 IF (E11VK .NE. 'UNFORMATTED') GO TO 20010 IF (G10VK .NE. 'YES' ) GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) IVI,AVB,BVB,JVI,B10VK,D10VK, 1 KVI,LVI,E11VK,G10VK 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,9H, DIRECT=,A3,7H, RECL=, 3 I4,1H,/1H ,26X,8HNEXTREC=,I4,7H, FORM=, 4 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20013) IOVI, MVI 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,32HACCESS=DIRECT, DIRECT=YES, RECL=, 3 I4,1H,/1H ,26X,28HNEXTREC=1, FORM=UNFORMATTED,/ 4 1H ,26X,15HUNFORMATTED=YES) 0011 CONTINUE C***** C***** WRITE A RECORD TO FILE WRITE(IOVI, REC=1) JVI C***** CT002* TEST 2 - SECOND INQUIRE (AFTER WRITE) IVTNUM = 2 C***** THIS INQUIRE ONLY TESTS THE DIRECT, RECL, AND NEXTREC C***** AS THE OTHER SPECIFIERS HAVE BEEN PREVIOUSLY TESTED INQUIRE(UNIT=IOVI, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 1 ERR=20024, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20020 IF (D10VK .NE. 'YES') GO TO 20020 IF (KVI .NE. MVI) GO TO 20020 IF (LVI .NE. 2) GO TO 20020 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0021 20024 CONTINUE WRITE (NUVI, 20025) IVTNUM 20025 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20026 20020 CONTINUE WRITE (NUVI, 20021) IVTNUM 20021 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20026 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20022) IVI,D10VK,KVI,LVI 20022 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,9H, DIRECT=,A3, 1 7H ,RECL=,I4,10H, NEXTREC=,I4) WRITE (NUVI, 20023) MVI 20023 FORMAT (1H ,16X,10HCORRECT: ,22HIOSTAT=0, DIRECT=YES, , 1 5HRECL=,I4,14H, NEXTREC= 2) 0021 CONTINUE C***** C***** READ A RECORD FROM FILE C***** READ(IOVI, REC=1) JVI C***** CT003* TEST 3 - THIRD INQUIRE (AFTER READ) IVTNUM = 3 C***** THIS INQUIRE ONLY TESTS THE DIRECT, RECL, AND NEXTREC C***** AS THE OTHER SPECIFIERS HAVE BEEN PREVIOUSLY TESTED INQUIRE(UNIT=IOVI, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 1 ERR=20034, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20030 IF (D10VK .NE. 'YES') GO TO 20030 IF (KVI .NE. MVI) GO TO 20030 IF (LVI .NE. 2) GO TO 20030 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0031 20034 CONTINUE WRITE (NUVI, 20035) IVTNUM 20035 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20036 20030 CONTINUE WRITE (NUVI, 20031) IVTNUM 20031 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20036 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20032) IVI,D10VK,KVI,LVI 20032 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,9H, DIRECT=,A3, 1 7H ,RECL=,I4,10H, NEXTREC=,I4) WRITE (NUVI, 20023) MVI 20033 FORMAT (1H ,16X,10HCORRECT: ,22HIOSTAT=0, DIRECT=YES, , 1 5HRECL=,I4,14H, NEXTREC= 2) 0031 CONTINUE C***** CLOSE(UNIT=IOVI, STATUS='DELETE') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 433 STOP END *END-OF,FM917 FM918.f 481036677 170 2 100666 9770 ` *HEADER,FORTR,FM918 *FILES1,FORTR,FM918,X C*********************************************************************** C***** FORTRAN 77 C***** FM918 C***** INQU5 - (434) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY UNIT ON A UNIT THAT IS NOT 12.10.3 C***** CONNECTED TO A FILE. C***** C***** THE TESTS IN THIS UNIT ARE ONLY BE PERFORMED ON A C***** UNIT THAT IS NOT CONNECTED TO A FILE. C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND THEN C***** PERFORMS A CLOSE WITH STATUS='DELETE' IN ORDER TO C***** ENSURE THAT THE UNIT IS NOT CONNECTED. (ANS REF 12.10.2) C*********************************************************************** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** LOGICAL AVB, BVB CHARACTER*10 C10VK, D10VK, F10VK, G10VK C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** SEQUENTIAL, FORMATTED FILE. C***** C I15 CONTAINS THE UNIT NUMBER FOR A SEQUENTIAL FORMATTED FILE. I15 = 14 CX150 REPLACED BY FEXEC X-150 CONTROL CARD (SEQ. FILE UNIT NUMBER). C SPECIFYING I15 = NN OVERRIDES THE DEFAULT I15 = 14. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A SEQUENTIAL, C***** FORMATTED FILE. C***** NUVI = I02 IMVI = I15 ZPROG = 'FM918' IVTOTL = 1 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43400) 43400 FORMAT(1H , / 30H INQU5 - (434) INQUIRE BY UNIT// 1 29H UNIT NOT CONNECTED TO A FILE// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE OPEN(UNIT=IMVI, ACCESS='SEQUENTIAL', FORM='FORMATTED') C***** DIS-CONNECT FILE CLOSE(UNIT=IMVI, STATUS='DELETE') C***** CT001* TEST 1 - INQUIRE ON UNIT NOT CONNECTED TO A FILE IVTNUM = 1 INQUIRE(UNIT=IMVI, IOSTAT=IVI, EXIST=AVB, OPENED=BVB, 1 SEQUENTIAL=C10VK, DIRECT=D10VK, FORMATTED=F10VK, 2 UNFORMATTED=G10VK, ERR=20014) C***** IF (.NOT. AVB) GO TO 20010 IF (BVB) GO TO 20010 IF (IVI .NE. 0) GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) IVI,AVB,BVB 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1) WRITE (NUVI, 20013) 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 8HOPENED=F) 0011 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 434 STOP END *END-OF,FM918 FM919.f 481036680 170 2 100666 11013 ` *HEADER,FORTR,FM919 *FILES1,FORTR,FM919,X C*********************************************************************** C***** FORTRAN 77 C***** FM919 C***** INQF1 - (438) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY FILE ON SEQUENTIAL, FORMATTED FILES 12.10.3 C***** C***** THE TESTS IN THIS UNIT ARE ONLY PERFORMED ON A C***** FILE THAT IS CONNECTED FOR SEQUENTIAL, FORMATTED ACCESS C***** (ANS REF. 12.2.4.1 AND 12.9.5.2) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C*********************************************************************** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** LOGICAL AVB, BVB CHARACTER*10 B10VK, C10VK, E11VK*11, F10VK, H10VK C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CX19 REPLACED BY FEXEC X-19 CONTROL CARD. X-19 IS FOR REPLACING CHARACTER*15 CSEQ C THE CHARACTER STATEMENT FOR FILE NAMES ASSOCIATED WITH X-090 C (PROGRAM VARIABLE CSEQ) IF NOT VALID FOR THE PROCESSOR. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** SEQUENTIAL, FORMATTED FILE. C***** I09 = 14 CX090 THIS CARD IS REPLACED BY THE CONTENTS OF CX090 C X-090 I09 = NN WILL OVERRIDE I09 = 14 C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A SEQUENTIAL, C***** FORMATTED FILE. C***** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A SEQUENTIAL, C***** FORMATTED FILE. C***** C CSEQ CONTAINS THE FILE NAME FOR UNIT I09. CSEQ = ' SEQFILE' C CX191 REPLACED BY FEXEC X-191 CONTROL CARD. CX191 IS FOR SYSTEMS C REQUIRING A DIFFERENT FILE SPECIFIER FOR FILES ASSOCIATED WITH C X-090 THAN THE DEFAULT CSEQ = ' SEQFILE'. C***** NUVI = I02 IMVI = I09 ZPROG = 'FM919' IVTOTL = 1 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43800) 43800 FORMAT(1H , / 30H INQF1 - (438) INQUIRE BY FILE// 1 45H SEQUENTIAL FORMATTED FILE, CONNECTED BY OPEN// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE OPEN(FILE=CSEQ, UNIT=IMVI, ACCESS='SEQUENTIAL', 1 FORM='FORMATTED', BLANK='NULL') C***** CT001* TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(FILE=CSEQ, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 FORMATTED=F10VK, BLANK=H10VK, ERR=20014, IOSTAT=IVI) IF (IVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IMVI) GO TO 20010 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20010 IF (C10VK .NE. 'YES') GO TO 20010 IF (E11VK .NE. 'FORMATTED') GO TO 20010 IF (F10VK .NE. 'YES' ) GO TO 20010 IF (H10VK .NE. 'NULL') GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) IVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 F10VK,H10VK 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A9,1H,/1H ,26X,10HFORMATTED=,A3,8H, BLANK=,A4) WRITE (NUVI, 20013) IMVI 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 10HFORMATTED,/1H ,26X,25HFORMATTED=YES, BLANK=NULL) 0011 CONTINUE C***** 43803 CLOSE(UNIT=IMVI, STATUS='DELETE') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 438 STOP END *END-OF,FM919 FM920.f 481036683 170 2 100666 14529 ` *HEADER,FORTR,FM920 *FILES1,FORTR,FM920,X C*********************************************************************** C***** FORTRAN 77 C***** FM920 C***** INQF2 - (439) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE ON SEQUENTIAL, UNFORMATTED FILES 12.10.3 C***** C***** THE TESTS IN THIS UNIT ARE ONLY PERFORMED ON A C***** FILE THAT IS CONNECTED FOR SEQUENTIAL, UNFORMATTED ACCESS C***** (ANS REF. 12.2.4.1 AND 12.9.5.1) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C***** THE SEGMENT TESTS THAT INQUIRE IS PERFORMED CORRECTLY C***** BEFORE READING OR WRITING TO A FILE, AFTER WRITING TO A FILE C***** AND AFTER READING FROM A FILE. C*********************************************************************** C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** LOGICAL AVB, BVB CHARACTER*10 B10VK, C10VK, E11VK*11, G10VK C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CX19 REPLACED BY FEXEC X-19 CONTROL CARD. X-19 IS FOR REPLACING CHARACTER*15 CSEQ C THE CHARACTER STATEMENT FOR FILE NAMES ASSOCIATED WITH X-050 C (PROGRAM VARIABLE CSEQ) IF NOT VALID FOR THE PROCESSOR. C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** SEQUENTIAL, UNFORMATTED FILE. C***** I05 = 14 CX050 THIS CARD IS USED TO REPLACE THE CONTENTS OF I05 = 15 C X-050 I05 = NN WILL OVERRIDE DEFAULT I05 = 14 C C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A SEQUENTIAL, C***** UNFORMATTED FILE. C***** C CSEQ CONTAINS THE FILE NAME FOR UNIT I05. CSEQ = ' SEQFILE' C CX191 REPLACED BY FEXEC X-191 CONTROL CARD. CX191 IS FOR SYSTEMS C REQUIRING A DIFFERENT FILE SPECIFIER FOR FILES ASSOCIATED WITH C X-050 THAN THE DEFAULT CSEQ = ' SEQFILE'. C***** NUVI = I02 IMVI = I05 ZPROG = 'FM920' IVTOTL = 3 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,43900) 43900 FORMAT(1H , / 30H INQF2 - (439) INQUIRE BY FILE// 1 47H SEQUENTIAL UNFORMATTED FILE, CONNECTED BY OPEN// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE OPEN(FILE=CSEQ, UNIT=IMVI, ACCESS='SEQUENTIAL', 1 FORM='UNFORMATTED') C***** CT001* TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(FILE=CSEQ, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 UNFORMATTED=G10VK, ERR=20014, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IMVI) GO TO 20010 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20010 IF (C10VK. NE. 'YES') GO TO 20010 IF (E11VK .NE. 'UNFORMATTED') GO TO 20010 IF (G10VK .NE. 'YES' ) GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) IVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 G10VK 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20013) IMVI 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 12HUNFORMATTED,/1H ,26X,15HUNFORMATTED=YES) 0011 CONTINUE C***** C***** WRITE TO FILE WRITE(IMVI) JVI C***** CT002* TEST 2 - SECOND INQUIRE (AFTER WRITE) IVTNUM = 2 INQUIRE(FILE=CSEQ, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 UNFORMATTED=G10VK, ERR=20024, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20020 IF (.NOT. AVB) GO TO 20020 IF (.NOT. BVB) GO TO 20020 IF (JVI .NE. IMVI) GO TO 20020 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20020 IF (C10VK.NE. 'YES') GO TO 20020 IF (E11VK .NE. 'UNFORMATTED') GO TO 20020 IF (G10VK .NE. 'YES' ) GO TO 20020 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0021 20024 CONTINUE WRITE (NUVI, 20025) IVTNUM 20025 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20026 20020 CONTINUE WRITE (NUVI, 20011) IVTNUM 20021 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20026 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20022) IVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 G10VK 20022 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20023) IMVI 20023 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 12HUNFORMATTED,/1H ,26X,15HUNFORMATTED=YES) 0021 CONTINUE C***** C***** REWIND AND READ FILE REWIND IMVI READ(IMVI) JVI REWIND IMVI C***** CT003* TEST 3 - THIRD INQUIRE (AFTER READ) IVTNUM = 3 INQUIRE(FILE=CSEQ, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, SEQUENTIAL=C10VK, FORM=E11VK, 2 UNFORMATTED=G10VK, ERR=20034, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20030 IF (.NOT. AVB) GO TO 20030 IF (.NOT. BVB) GO TO 20030 IF (JVI .NE. IMVI) GO TO 20030 IF (B10VK .NE. 'SEQUENTIAL') GO TO 20030 IF (C10VK .NE. 'YES') GO TO 20030 IF (E11VK .NE. 'UNFORMATTED') GO TO 20030 IF (G10VK .NE. 'YES' ) GO TO 20030 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0031 20034 CONTINUE WRITE (NUVI, 20035) IVTNUM 20035 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20036 20030 CONTINUE WRITE (NUVI, 20031) IVTNUM 20031 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20036 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20032) IVI,AVB,BVB,JVI,B10VK,C10VK,E11VK, 1 G10VK 20032 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A10,13H, SEQUENTIAL=,A3,7H, FORM=, 3 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20033) IMVI 20033 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,40HACCESS=SEQUENTIAL, SEQUENTIAL=YES, FORM=, 3 12HUNFORMATTED,/1H ,26X,15HUNFORMATTED=YES) 0031 CONTINUE C***** CLOSE(UNIT=IMVI, STATUS='DELETE') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 439 STOP END *END-OF,FM920 FM921.f 481036687 170 2 100666 14418 ` *HEADER,FORTR,FM921 *FILES1,FORTR,FM921,X C*********************************************************************** C***** FORTRAN 77 C***** FM921 C***** INQF4 - (441) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY FILE ON DIRECT, UNFORMATTED FILE 12.10.3 C***** C***** THE TESTS IN THE UNIT ARE ONLY PERFORMED ON A C***** FILE THAT IS CONNECTED FOR DIRECT, UNFORMATTED ACCESS C***** (ANS REF. 12.2.4.2 AND 12.9.5.1) C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND PERFORMS C***** A CLOSE WITH STATUS='DELETE' AT THE END OF THE SEGMENT. C***** THIS SEGMENT TESTS THAT AN INQUIRE IS PERFORMED CORRECTLY C***** BEFORE READING OR WRITING TO THE FILE, AFTER WRITING TO C***** THE FILE, AND AFTER READING FROM THE FILE. C***** C***** NOTE: C***** AN INQUIRE STATEMENT IS NEEDED TO TEST THE READ AND C***** WRITE OF MORE THAN A SINGLE RECORD AT A TIME, IN ORDER TO C***** DETERMINE THAT THE RECORD NUMBER IS ADVANCED THE CORRECT C***** NUMBER (ONE MORE THAN THE RECORD NUMBER LAST READ OR WRITTEN). C***** THIS TEST WILL BE PERFORMED IN THE SEGMENTS WHICH TEST C***** DIRECT ACCESS FILES - DIRAF3 (412). C*********************************************************************** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C***** LOGICAL AVB, BVB CHARACTER*10 B10VK, D10VK, E11VK*11, G10VK C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CX20 REPLACED BY FEXEC X-20 CONTROL CARD. X-20 IS FOR REPLACING CHARACTER*15 CDIR, CSEQ C THE CHARACTER STATEMENT FOR FILE NAMES ASSOCIATED WITH X-100 C (PROGRAM VARIABLE CDIR) IF NOT VALID FOR THE PROCESSOR. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** DIRECT, UNFORMATTED FILE. C***** C I10 CONTAINS THE UNIT NUMBER FOR A DIRECT, UNFORMATTED FILE. I10 = 24 CX100 REPLACED BY FEXEC X-100 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I10 = NN OVERRIDES THE DEFAULT I10 = 24. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A DIRECT, C***** UNFORMATTED FILE. C***** C CDIR CONTAINS THE FILE NAME FOR UNIT I10. CDIR = ' DIRFILE' C CX201 REPLACED BY FEXEC X-201 CONTROL CARD. CX201 IS FOR SYSTEMS C REQUIRING A DIFFERENT FILE SPECIFIER FOR FILES ASSOCIATED WITH C X-100 THAN THE DEFAULT CDIR = ' DIRFILE'. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF 40 IS C***** NOT A VALID RECORD LENGTH. MVI = 40 C***** NUVI = I02 IOVI = I10 ZPROG = 'FM921' IVTOTL = 3 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** WRITE(NUVI,44100) 44100 FORMAT(1H , / 30H INQF4 - (441) INQUIRE BY FILE// 1 31H DIRECT ACCESS UNFORMATTED FILE// 2 19H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE OPEN(FILE=CDIR, UNIT=IOVI, ACCESS='DIRECT', RECL=MVI, 1 FORM='UNFORMATTED') C***** CT001* TEST 1 - FIRST INQUIRE (AFTER OPEN) IVTNUM = 1 INQUIRE(FILE=CDIR, EXIST=AVB, OPENED=BVB, NUMBER=JVI, 1 ACCESS=B10VK, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 2 FORM=E11VK, UNFORMATTED=G10VK, ERR=20014, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20010 IF (.NOT. AVB) GO TO 20010 IF (.NOT. BVB) GO TO 20010 IF (JVI .NE. IOVI) GO TO 20010 IF (B10VK .NE. 'DIRECT') GO TO 20010 IF (D10VK .NE. 'YES') GO TO 20010 IF (KVI .NE. MVI) GO TO 20010 IF (LVI .NE. 1) GO TO 20010 IF (E11VK .NE. 'UNFORMATTED') GO TO 20010 IF (G10VK .NE. 'YES' ) GO TO 20010 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0011 20014 CONTINUE WRITE (NUVI, 20015) IVTNUM 20015 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20016 20010 CONTINUE WRITE (NUVI, 20011) IVTNUM 20011 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20016 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20012) IVI,AVB,BVB,JVI,B10VK,D10VK,KVI, 1 LVI,E11VK,G10VK 20012 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,8H, EXIST=,L1, 1 9H ,OPENED=,L1,9H, NUMBER=,I4,1H,/ 2 1H ,26X,7HACCESS=,A6,9H, DIRECT=,A3,7H, RECL=, 3 I4,1H,/1H ,26X,8HNEXTREC=,I4,7H, FORM=, 4 A11,1H,/1H ,26X,12HUNFORMATTED=,A3) WRITE (NUVI, 20013) IOVI,MVI 20013 FORMAT (1H ,16X,10HCORRECT: ,19HIOSTAT=0, EXIST=T, , 1 17HOPENED=T, NUMBER=,I4,1H,/ 2 1H ,26X,32HACCESS=DIRECT, DIRECT=YES, RECL=, 3 I4,1H,/1H ,26X,31HNEXTREC= 1, FORM=UNFORMATTED,/ 4 1H ,26X,15HUNFORMATTED=YES) 0011 CONTINUE C***** C***** WRITE A RECORD TO FILE 44103 WRITE(IOVI, REC=1) JVI C***** CT002* TEST 2 - SECOND INQUIRE (AFTER WRITE) IVTNUM = 2 C***** THIS INQUIRE ONLY TESTS THE DIRECT, RECL, AND NEXTREC C***** AS THE OTHER SPECIFIERS HAVE BEEN PREVIOUSLY TESTED INQUIRE(FILE=CDIR, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 1 ERR=20024, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20020 IF (D10VK .NE. 'YES') GO TO 20020 IF (KVI .NE. MVI) GO TO 20020 IF (LVI .NE. 2) GO TO 20020 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0021 20024 CONTINUE WRITE (NUVI, 20025) IVTNUM 20025 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20026 20020 CONTINUE WRITE (NUVI, 20021) IVTNUM 20021 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20026 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20022) IVI,D10VK,KVI,LVI 20022 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,9H, DIRECT=,A3, 1 7H ,RECL=,I4,10H, NEXTREC=,I4) WRITE (NUVI, 20023) MVI 20023 FORMAT (1H ,16X,10HCORRECT: ,20HIOSTAT=0, DIRECT=YES, 1 7H ,RECL=,I4,14H, NEXTREC= 2) 0021 CONTINUE C***** C***** READ A RECORD FROM FILE 44106 READ(IOVI, REC=1) JVI C***** CT003* TEST 3 - THIRD INQUIRE (AFTER READ) IVTNUM = 3 C***** THIS INQUIRE ONLY TESTS THE DIRECT, RECL, AND NEXTREC C***** AS THE OTHER SPECIFIERS HAVE BEEN PREVIOUSLY TESTED INQUIRE(FILE=CDIR, DIRECT=D10VK, RECL=KVI, NEXTREC=LVI, 1 ERR=20034, IOSTAT=IVI) C***** IF (IVI .NE. 0) GO TO 20030 IF (D10VK .NE. 'YES') GO TO 20030 IF (KVI .NE. MVI) GO TO 20030 IF (LVI .NE. 2) GO TO 20030 WRITE (NUVI, 80002) IVTNUM IVPASS = IVPASS + 1 GO TO 0031 20034 CONTINUE WRITE (NUVI, 20035) IVTNUM 20035 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 20036 20030 CONTINUE WRITE (NUVI, 20031) IVTNUM 20031 FORMAT(1H ,2X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 20036 IVFAIL = IVFAIL + 1 WRITE (NUVI, 20032) IVI,D10VK,KVI,LVI 20032 FORMAT (1H ,16X,10HCOMPUTED: ,7HIOSTAT=,I1,9H, DIRECT=,A3, 1 7H ,RECL=,I4,10H, NEXTREC=,I4) WRITE (NUVI, 20033) MVI 20033 FORMAT (1H ,16X,10HCORRECT: ,20HIOSTAT=0, DIRECT=YES, 1 7H ,RECL=,I4,14H, NEXTREC= 2) 0031 CONTINUE C***** CLOSE(UNIT=IOVI, STATUS='DELETE') C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** C***** END OF TEST SEGMENT 441 STOP END *END-OF,FM921 FM922.f 481036690 170 2 100666 10600 ` *HEADER,FORTR,FM922 *FILES1,FORTR,FM922,X C*********************************************************************** C***** FORTRAN 77 C***** FM922 C***** INQF5 - (442) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST INQUIRE BY FILE ON A FILE THAT IS NOT 12.10.3 C***** CONNECTED TO A UNIT C***** C***** THE TESTS IN THIS UNIT ARE ONLY BE PERFORMED ON A C***** FILE THAT IS NOT CONNECTED TO A UNIT. C***** THIS TEST PERFORMS AN EXPLICIT OPEN, AND THEN C***** PERFORMS A CLOSE WITH STATUS='KEEP' IN ORDER TO C***** ENSURE THAT THE UNIT AND FILE ARE NOT CONNECTED. C***** (ANS REF 12.10.2) C*********************************************************************** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** LOGICAL AVB, BVB CHARACTER*10 C10VK, F10VK C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. CX19 REPLACED BY FEXEC X-19 CONTROL CARD. X-19 IS FOR REPLACING CHARACTER*15 CSEQ C THE CHARACTER STATEMENT FOR FILE NAMES ASSOCIATED WITH X-150 C (PROGRAM VARIABLE CSEQ) IF NOT VALID FOR THE PROCESSOR. CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** SEQUENTIAL, FORMATTED FILE. C***** C I15 CONTAINS THE UNIT NUMBER FOR A SEQUENTIAL FORMATTED FILE. I15 = 14 CX150 REPLACED BY FEXEC X-150 CONTROL CARD (SEQ. FILE UNIT NUMBER). C SPECIFYING I15 = NN OVERRIDES THE DEFAULT I15 = 14. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A SEQUENTIAL, C***** FORMATTED FILE. C***** C CSEQ CONTAINS THE FILE NAME FOR UNIT I15. CSEQ = ' SEQFILE' C CX191 REPLACED BY FEXEC X-191 CONTROL CARD. CX191 IS FOR SYSTEMS C REQUIRING A DIFFERENT FILE SPECIFIER FOR FILES ASSOCIATED WITH C X-150 THAN THE DEFAULT CSEQ = ' SEQFILE'. C C***** NUVI = I02 IMVI = I15 ZPROG = 'FM922' IVTOTL = 1 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** WRITE(NUVI,44200) 44200 FORMAT(1H ,/ 31H INQF5 - (442) INQUIRE BY FILE/ 1 30H FILE NOT CONNECTED TO A UNIT/ 2 20H ANS REF. - 12.10.3) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** C***** OPEN FILE, WRITE TO FILE, REWIND FILE C***** OPEN(FILE=CSEQ, UNIT=IMVI,ACCESS='SEQUENTIAL',FORM='FORMATTED') WRITE(IMVI, 44200) ENDFILE IMVI REWIND IMVI C***** C***** DISCONNECT FILE C***** CLOSE(UNIT=IMVI, STATUS='KEEP') C***** CT001* TEST 1 - INQUIRE ON DISCONNECTED FILE IVTNUM = 1 INQUIRE(FILE=CSEQ, IOSTAT=IVI, EXIST=AVB, OPENED=BVB, 1 SEQUENTIAL=C10VK, FORMATTED=F10VK, ERR=44206) IF (IVI .NE. 0) GO TO 44202 IF (.NOT. AVB) GO TO 44202 IF (BVB) GO TO 44202 IF (C10VK .EQ. 'NO') GO TO 44202 IF (F10VK .EQ. 'NO') GO TO 44202 55040 WRITE(NUVI,80002)IVTNUM IVPASS=IVPASS+1 GO TO 44204 44206 CONTINUE WRITE (NUVI, 44207) IVTNUM 44207 FORMAT (1H ,2X,I3,4X,5H FAIL,12X, 1 46HERROR IN EXECUTION OF INQUIRE STATEMENT (ERR=)/) GO TO 44208 44202 CONTINUE WRITE(NUVI,55010)IVTNUM 55010 FORMAT(1H ,5X,I3,4X,5H FAIL,12X, 1 29HERROR IN AN INQUIRE SPECIFIER/) 44208 IVFAIL=IVFAIL+1 WRITE(NUVI,55020)IVI,AVB,BVB,C10VK,F10VK 55020 FORMAT(1H ,10X,11HCOMPUTED: , 1 7HIOSTAT=,I1, 2 8H, EXIST=,L1,9H, OPENED=,L1,13H, SEQUENTIAL=,A3, 3 12H, FORMATTED=,A3) WRITE(NUVI,55030) 55030 FORMAT(1H ,10X,11HCORRECT: , 1 10HIOSTAT=0, , 2 45HEXIST=T, OPENED=F, SEQUENTIAL=YES, FORMATTED=, 3 3HYES/55X,10HOR UNKNOWN,4X,10HOR UNKNOWN) 44204 CONTINUE OPEN(FILE=CSEQ, UNIT=IMVI) CLOSE(UNIT=IMVI, STATUS='DELETE') CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** STOP END *END-OF,FM922 FM923.f 481036695 170 2 100666 30514 ` *HEADER,FORTR,FM923 *FILES1,FORTR,FM923,XX C*********************************************************************** C***** FORTRAN 77 C***** FM923 C***** LSTDI1 - (370) C***** C*********************************************************************** C***** GENERAL PURPOSE ANS REF C***** TEST LIST DIRECTED INPUT ON 13.6 C***** INTEGER REAL, LOGICAL, AND CHARACTER DATA TYPES. 12.4 C***** CBB** ********************** BBCCOMNT ********************************** C**** C**** 1978 FORTRAN COMPILER VALIDATION SYSTEM C**** VERSION 2.0 C**** C**** C**** SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C**** GENERAL SERVICES ADMINISTRATION C**** FEDERAL SOFTWARE TESTING CENTER C**** 5203 LEESBURG PIKE, SUITE 1100 C**** FALLS CHURCH, VA. 22041 C**** C**** (703) 756-6153 C**** CBE** ********************** BBCCOMNT ********************************** C INPUT DATA TO THIS SEGMENT CONSISTS OF 34 CARD IMAGES IN COL. 1-80 COL. 1----------------------------------------------------------61 CARD 1 25 CARD 2 10.75 CARD 3 12.875E01 CARD 4 T CARD 5 'ABCDEF' CARD 6 10 15 22 40 CARD 7 100.5 0.25E-1 -1.625E2 CARD 8 T F F T F CARD 9 'AB' 'ABCD' 'ABCDEF' CARD 10 '123456' T 17.5 -11 2.5E0 CARD 11 -5,'2468',T,15.0 CARD 12 F 'CHAR' -1 0.25 CARD 13 5 10 15 CARD 14 -1.25E1 F T -6 '-6' CARD 15 F 'ZYXW' 'DCBA' 15.5 CARD 16 'ONE ',,3,F CARD 17 'TWO ', 2, , 2.0 CARD 18 ,4, 1*, 8, ,, 14 CARD 19 5, -0.25E1, 4*, 'TEST', F CARD 20 1 2 3 4 5 CARD 21 6 7 8/ 9 10 CARD 22 12045,12 45 CARD 23 12045 COL. 62---------------80 CARD 23 12 COL. 1----------------------------------------------------------61 CARD 24 45 CARD 25 'ABCDEF' COL. 62---------------80 CARD 25 'UVW COL. 1----------------------------------------------------------61 CARD 26 XYZ' CARD 27 'CAN''T, AND/OR WON''T' CARD 28 '1234567890' '12345678' '1234567890123' CARD 29 TRUCK .FOUR .FALSE. .TWIN. F12. F7.2 .TRUE. .T=3+4 CARD 30 T T T T T CARD 31 F F/F F F CARD 32 / 10 20 30 CARD 33 1 2 3 4 CARD 34 5 6 7 8 C***** C***** S P E C I F I C A T I O N S SEGMENT 370 INTEGER J1I(3) LOGICAL AVB, BVB, CVB, DVB, EVB, FVB, GVB, HVB CHARACTER A2VK*2, A4VK*4, B4VK*4, A6VK*6, B6VK*6 CHARACTER A8VK*8, A9VK*9, A15VK*15, A21VK*21 CHARACTER CVNX06*6, CVNY06*6, CVNX21*21 C***** CBB** ********************** BBCINITA ********************************** C**** SPECIFICATION STATEMENTS C**** CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20, 1 ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13 CBE** ********************** BBCINITA ********************************** CBB** ********************** BBCINITB ********************************** C**** INITIALIZE SECTION DATA ZVERS, ZVERSD, ZDATE 1 /'VERSION 2.0 ', '82/08/02*18.33.46', '*NO DATE*TIME'/ DATA ZCOMPL, ZNAME, ZTAPE 1 /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/ DATA ZPROJ, ZTAPED, ZPROG 1 /'*NO PROJECT*', '*NO TAPE DATE', 'XXXXX'/ DATA REMRKS /' '/ C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED C**** FOR IDENTIFYING THE TEST ENVIRONMENT C**** CZ01 ZVERS = 'VERSION OF THE COMPILER VALIDATION SYSTEM' CZ02 ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM' CZ03 ZPROG = 'PROGRAM NAME' CZ04 ZDATE = 'DATE OF TEST' CZ05 ZCOMPL = 'COMPILER IDENTIFICATION' CZ06 ZPROJ = 'PROJECT NUMBER/IDENTIFICATION' CZ07 ZNAME = 'NAME OF USER' CZ08 ZTAPE = 'TAPE OWNER/ID' CZ09 ZTAPED = 'DATE TAPE COPIED' C IVPASS = 0 IVFAIL = 0 IVDELE = 0 IVINSP = 0 IVTOTL = 0 IVTOTN = 0 ICZERO = 0 C C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 05 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 06 C CX010 REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 CX011 REPLACED BY FEXEC X-011 CONTROL CARD. CX011 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010. C CX020 REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER). C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6 CX021 REPLACED BY FEXEC X-021 CONTROL CARD. CX021 IS FOR SYSTEMS C REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020. C CBE** ********************** BBCINITB ********************************** IRVI = I01 NUVI = I02 ZPROG = 'FM923' IVTOTL = 28 CBB** ********************** BBCHED0A ********************************** C**** C**** WRITE REPORT TITLE C**** WRITE (I02, 90002) WRITE (I02, 90006) WRITE (I02, 90007) WRITE (I02, 90008) ZVERS, ZVERSD WRITE (I02, 90009) ZPROG, ZPROG WRITE (I02, 90010) ZDATE, ZCOMPL CBE** ********************** BBCHED0A ********************************** C***** C***** REAL NUMBER APPROXIMATION CRITERIA DVS = 0.0001 IVCORR=0 RVCORR=0 C***** C***** HEADING FOR SEGMENT 370 WRITE(NUVI,37000) 37000 FORMAT(/2X, 16H LSTDI1 - (370) , 1 42H LIST DIRECTED INPUT FOR SUBSET DATA TYPES// 2 3X,22H ANS REF. - 13.6 12.4) CBB** ********************** BBCHED0B ********************************** C**** WRITE DETAIL REPORT HEADERS C**** WRITE (I02,90004) WRITE (I02,90004) WRITE (I02,90013) WRITE (I02,90014) WRITE (I02,90015) IVTOTL CBE** ********************** BBCHED0B ********************************** C***** CT001* TEST 1 - CARD 1 INTEGER IVTNUM = 1 READ(IRVI, *) IVI C***** TO DELETE TEST THE READ STATEMENTS MUST BE PERFORMED C***** FIRST. THEN INCLUDE THE FOLLOWING 2 STATEMENTS C***** IVDELE=IVDELE+1 C***** WRITE (NUVI,80000) IVTNUM C***** AND COMMENT OUT REMAINING LINES UNTIL NEXT TEST IVCORR=25 IF (IVI - 25) 20010,10010,20010 10010 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0011 20010 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80024) IVI WRITE (NUVI,80026) IVCORR 0011 CONTINUE CT002* TEST 2 - CARD 2 REAL IVTNUM = 2 READ(IRVI, *) AVS C***** TO DELETE TEST SEE NOTES FOR TEST 1 RVCORR=10.75 AAVS = AVS - 10.75 IF (AAVS + .00005) 20020,10020,40020 40020 IF (AAVS - .00005) 10020,10020,20020 10020 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0021 20020 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80028) AVS WRITE (NUVI,80030) RVCORR 0021 CONTINUE CT003* TEST 3 - CARD 3 REAL, EXPONENT IVTNUM = 3 READ(IRVI, *) AVS C***** TO DELETE TEST SEE NOTES FOR TEST 1 RVCORR=128.75 AAVS = AVS - 128.75 IF (AAVS + .00005) 20030,10030,40030 40030 IF (AAVS - .00005) 10030,10030,20030 10030 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0031 20030 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80028) AVS WRITE (NUVI,80030) RVCORR 0031 CONTINUE CT004* TEST 4 - CARD 4 LOGICAL IVTNUM = 4 READ(IRVI, *) AVB C***** TO DELETE TEST SEE NOTES TEST 1 IVCOMP=0 IF (AVB) IVCOMP = 1 IF (IVCOMP - 1) 20040,10040,20040 10040 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0041 20040 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70040 FORMAT (1H ,16X,10HCOMPUTED: ,1X,L1) WRITE (NUVI,70040) AVB 70041 FORMAT (1H ,16X,10HCORRECT: ,2H T) WRITE (NUVI,70041) 0041 CONTINUE CT005* TEST 5 - CARD 5 CHARACTER IVTNUM = 5 READ(IRVI, *) A6VK C***** TO DELETE TEST SEE NOTES FOR TEST 1 CVNX06='ABCDEF' IVCOMP=0 IF (A6VK .EQ. 'ABCDEF') IVCOMP = 1 IF (IVCOMP - 1) 20050,10050,20050 10050 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0051 20050 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A6VK WRITE (NUVI,80022) CVNX06 0051 CONTINUE CT006* TEST 6 - CARD 6 SEVERAL INTEGER IVTNUM = 6 READ(IRVI, *) IVI, JVI, KVI, LVI C***** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI - 10) 20060,40060,20060 40060 IF (JVI - 15) 20060,40061,20060 40061 IF (KVI - 22) 20060,40062,20060 40062 IF (LVI - 40) 20060,10060,20060 10060 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0061 20060 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70060 FORMAT (1H ,16X,10HCOMPUTED: ,I5,3(2X,I5)) WRITE (NUVI,70060) IVI,JVI,KVI,LVI 70061 FORMAT (1H ,16X,10HCORRECT: , 1 5H 10,2X,5H 15,2X,5H 22,2X,5H 40) WRITE (NUVI,70061) 0061 CONTINUE CT007* TEST 7 - CARD 7 SEVERAL REAL IVTNUM = 7 READ(IRVI, *) AVS, BVS, CVS C******* TO DELETE TEST SEE NOTES FOR TEST 1 AAVS = AVS - 100.5 BBVS = BVS - 0.025 CCVS = CVS - (-162.5) IF (AAVS + .00005) 20070,40071,40070 40070 IF (AAVS - .00005) 40071,40071,20070 40071 IF (BBVS + .00005) 20070,40073,40072 40072 IF (BBVS - .00005) 40073,40073,20070 40073 IF (CCVS + .00005) 20070,10070,40074 40074 IF (CCVS - .00005) 10070,10070,20070 10070 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0071 20070 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70071 FORMAT (1H ,16X,10HCOMPUTED: ,F6.2,2X,F6.4,2X,F7.2) WRITE (NUVI,70071) AVS,BVS,CVS 70072 FORMAT (1H ,16X,10HCORRECT: ,6H100.50,2X,6H0.0250, 1 2X,7H-162.50) WRITE(NUVI,70072) 0071 CONTINUE CT008* TEST 8 - CARD 8 SEVERAL LOGICAL IVTNUM = 8 READ(IRVI, *) AVB, BVB, CVB, DVB, EVB C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (AVB .AND. .NOT. BVB .AND. .NOT. CVB .AND. DVB .AND. 1 .NOT. EVB) GO TO 37008 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70081 FORMAT (1H ,16X,10HCOMPUTED: ,L1,4(2X,L1)) WRITE (NUVI,70081) AVB,BVB,CVB,DVB,EVB 70082 FORMAT (1H ,16X,10HCORRECT: ,1HT,2X,1HF,2X,1HF,2X,1HT,2X, 1 1HF) WRITE (NUVI,70082) GO TO 37010 37008 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37010 CONTINUE CT009* TEST 9 - CARD 9 SEVERAL CHARACTER STRINGS IVTNUM = 9 READ(IRVI, *) A2VK, A4VK, A6VK C***** TO DELETE CODE SEE NOTES FOR TEST 1 IF (A2VK .EQ. 'AB' .AND. A4VK .EQ. 'ABCD' .AND. 1 A6VK .EQ. 'ABCDEF') GO TO 37011 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70090 FORMAT (1H ,16X,10HCOMPUTED: ,A2,2X,A4,2X,A6) WRITE (NUVI,70090) A2VK,A4VK,A6VK 70091 FORMAT (1H ,16X,10HCORRECT: ,2HAB,2X,4HABCD,2X,6HABCDEF) WRITE (NUVI,70091) GO TO 37013 37011 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37013 CONTINUE CT010* TEST 10 - CARD 10 MIXED TYPES IVTNUM = 10 READ(IRVI, *) A6VK, AVB, AVS, IVI, BVS C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (A6VK .EQ. '123456' .AND. AVB .AND. AVS .GE. (17.5 - DVS) 1 .AND. AVS .LE. (17.5 + DVS) .AND. IVI .EQ. -11 .AND. 2 BVS .GE. (2.5 - DVS) .AND. BVS .LE. (2.5 + DVS)) 3 GO TO 37014 IVFAIL=IVFAIL+1 70100 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE (NUVI,70100) IVTNUM 70101 FORMAT (1H ,16X,10HCOMPUTED: , 2 A6,2X,L1,2X,F5.2,2X,I5,2X,E12.5) WRITE (NUVI,70101) A6VK,AVB,AVS,IVI,BVS 70102 FORMAT (1H ,16X,10HCORRECT: , 1 23H123456 T 17.50 -11,2X,26H 0.25000E+01 OR .25000+001) WRITE (NUVI,70102) GO TO 37016 37014 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37016 CONTINUE CT011* TEST 11 - CARD 11 MIXED TYPES SEPARATED BY COMMAS IVTNUM = 11 READ(IRVI, *) IVI, A4VK, AVB, AVS C***** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI .EQ. -5 .AND. A4VK .EQ. '2468' .AND. AVB .AND. 1 AVS .GE. (15.0 - DVS) .AND. AVS .LE. (15.0 + DVS)) 2 GO TO 37017 IVFAIL=IVFAIL+1 70110 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE (NUVI,70110) IVTNUM 70111 FORMAT (1H ,16X,10HCOMPUTED: , 1 I5,2X,A4,2X,L1,2X,F5.2) WRITE (NUVI,70111) IVI,A4VK,AVB,AVS 70112 FORMAT (1H ,16X,10HCORRECT: , 1 5H -5,2X,4H2468,2X,1HT,2X,5H15.00) WRITE (NUVI,70112) GO TO 37019 37017 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37019 CONTINUE CT012* TEST 12 - CARD 12 MIXED TYPES, VARYING NUMBER OF C***** BLANKS SEPARATING VALUES IVTNUM = 12 READ(IRVI, *) AVB, A4VK, IVI, AVS C***** TO DELETE TEST SEE NOTES FOR TEST 1 IF (.NOT. AVB .AND. A4VK .EQ. 'CHAR' .AND. IVI .EQ. -1 .AND. 1 AVS .GE. (0.25 - DVS) .AND. AVS .LE. (0.25 + DVS)) 2 GO TO 37020 IVFAIL=IVFAIL+1 70120 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE (NUVI,70120) IVTNUM 70121 FORMAT (1H ,16X,10HCOMPUTED: , 1 L1,2X,A4,2X,I5,2X,F4.2) WRITE (NUVI,70121) AVB,A4VK,IVI,AVS 70122 FORMAT (1H ,16X,10HCORRECT: , 2 3HF ,4HCHAR,2X,5H -5,2X,4H0.25) WRITE (NUVI,70122) GO TO 37022 37020 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37022 CONTINUE CT013* TEST 13 - CARD 13 READ VALUES INTO ARRAY BY USING C***** AN IMPLICIT DO-LOOP IVTNUM = 13 READ(IRVI, *) (J1I(IIVI), IIVI=1,3) C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (J1I(1) - 5) 20130,40130,20130 40130 IF (J1I(2) - 10) 20130,40131,20130 40131 IF (J1I(3) - 15) 20130,10130,20130 10130 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0131 20130 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70130 FORMAT (1H ,16X,10HCOMPUTED: ,I5,2X,I5,2X,I5) WRITE (NUVI,70130) J1I(1),J1I(2),J1I(3) 70131 FORMAT (1H ,16X,10HCORRECT: , 1 5H 5,2X,5H 10,2X,5H 15) WRITE (NUVI,70131) 0131 CONTINUE CT014* TEST 14 - CARDS 14-15 LIST EXTENDING OVER 2 RECORDS IVTNUM = 14 READ(IRVI, *) AVS, AVB, BVB, IVI, A2VK, CVB, A4VK, B4VK, BVS C***** TO DELETE CODE SEE NOTES FOR TEST 1 IF (AVS .GE. (-1.25E1 - DVS) .AND. AVS .LE. (-1.25E1 + DVS) 1 .AND. .NOT. AVB .AND. BVB .AND. 2 IVI .EQ. -6 .AND. A2VK .EQ. '-6' .AND. .NOT. CVB .AND. 3 A4VK .EQ. 'ZYXW' .AND. B4VK .EQ. 'DCBA' .AND. 4 BVS .GE. (15.5 - DVS) .AND. BVS .LE. (15.5 + DVS)) 5 GO TO 37024 IVFAIL=IVFAIL+1 70140 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE (NUVI,70140) IVTNUM 70141 FORMAT (1H ,16X,10HCOMPUTED: ,E12.5,2X,L1,2X,L1,2X,I5, 1 /27X,A2,2X,L1,2X,A4,2X,A4,2X,F5.2) WRITE (NUVI,70141) AVS,AVB,BVB,IVI,A2VK,CVB,A4VK,B4VK,BVS 70142 FORMAT (1H ,16X,10HCORRECT: , 1 12H -.12500E+01,2X,1HF,2X,1HT,2X,5H -6, 2 /27X,2H-6,2X,1HF,2X,4HZYXW,2X,4HDCBA,2X,5H15.50) WRITE (NUVI,70142) GO TO 37026 37024 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37026 CONTINUE CT015* TEST 15 - CARD 16 NULL VALUE REPRESENTED AS ,, IVTNUM = 15 AVS = 2.0 READ(IRVI, *) A4VK, AVS, IVI, AVB C***** TO DELETE TEST SEE NOTES FOR TEST 1 IF (A4VK .EQ. 'ONE ' .AND. AVS .GE. (2.0 - DVS) .AND. 1 AVS .LE. (2.0 + DVS) .AND. IVI .EQ. 3 .AND. .NOT. AVB) 2 GO TO 37027 IVFAIL=IVFAIL+1 WRITE (NUVI,70150) IVTNUM 70150 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X, 1 28HCOMPLEX IF - SEE SOURCE CODE) 70151 FORMAT (1H ,16X,10HCOMPUTED: ,A4,2X,F4.1,2X,I5,2X,L1) WRITE (NUVI,70151) A4VK,AVS,IVI,AVB 70152 FORMAT (1H ,16X,10HCORRECT: , 1 20HONE 2.0 3 F) WRITE (NUVI,70152) GO TO 37029 37027 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37029 CONTINUE CT016* TEST 16 - CARD 17 NULL VALUE REPRESENTED AS ' ' IVTNUM = 16 AVB = .TRUE. READ(IRVI, *) A4VK, IVI, AVB, AVS C***** TO DELETE TEST SEE NOTES FOR TEST 1 IF (A4VK .EQ. 'TWO ' .AND. IVI .EQ. 2 .AND. AVB .AND. 1 AVS .GE. (2.0 - DVS) .AND. AVS .LE. (2.0 + DVS)) 2 GO TO 37030 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70160 FORMAT (1H ,16X,10HCOMPUTED: ,A4,2X,I5,2X,L1,2X,F4.1) WRITE (NUVI,70160) A4VK,IVI,AVB,AVS 70161 FORMAT (1H ,16X,10HCORRECT: , 1 20HTWO 2 T 2.0) WRITE (NUVI,70161) GO TO 37032 37030 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37032 CONTINUE CT017* TEST 17 - CARD 18 VARIOUS NULL REPRESENTATIONS IVTNUM = 17 IVI = 2 JVI = 6 KVI = 10 KKVI = 12 READ(IRVI, *) IVI, IIVI, JVI, JJVI, KVI, KKVI, LVI C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI .EQ. 2 .AND. IIVI .EQ. 4 .AND. JVI .EQ. 6 .AND. 1 JJVI .EQ. 8 .AND. KVI .EQ. 10 .AND. KKVI .EQ. 12 .AND. 2 LVI .EQ. 14) GO TO 37033 IVFAIL=IVFAIL+1 WRITE (NUVI,70170) IVTNUM 70170 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X, 1 28HCOMPLEX IF - SEE SOURCE CODE) 70171 FORMAT (1H ,16X,10HCOMPUTED: , 1 I5,6(2X,I5)) WRITE (NUVI,70171) IVI,IIVI,JVI,JJVI,KVI,KKVI,LVI 70172 FORMAT (1H ,16X,10HCORRECT: , 1 47H 2 4 6 8 10 12 14) WRITE (NUVI,70172) GO TO 37035 37033 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37035 CONTINUE CT018* TEST 18 - CARD 19 NULL VALUE USING REPETITION FACTOR IVTNUM = 18 IVI = 1 AVB = .TRUE. AVS = 1.0 A4VK = 'TRUE' READ (IRVI, *) JVI, BVS, IVI, AVB, AVS, A4VK, B4VK, BVB C***** TO DELETE TEST SEE NOTES FOR TEST 1 IF (JVI .EQ. 5 .AND. BVS .GE. (-2.5 - DVS) .AND. 1 BVS .LE. (-2.5 + DVS) .AND. IVI .EQ. 1 .AND. AVB .AND. 2 AVS .GE. (1.0 - DVS) .AND. AVS .LE. (1.0 + DVS) .AND. 3 A4VK .EQ. 'TRUE' .AND. B4VK .EQ. 'TEST' .AND. .NOT. BVB) 4 GO TO 37036 IVFAIL=IVFAIL+1 WRITE (NUVI,70180) IVTNUM 70180 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X, 1 28HCOMPLEX IF - SEE SOURCE CODE) 70181 FORMAT (1H ,16X,10HCOMPUTED: , 1 I5,2X,F4.1,2X,I5,2X,L1,2X,F4.1,2X,A4,2X, 2 A4,2X,L1) WRITE (NUVI,70181) JVI,BVS,IVI,AVB,AVS,A4VK,B4VK,BVB 70182 FORMAT (1H ,16X,10HCORRECT: , 1 5H 5,2X,4H-2.5,2X,5H 1,2X,1HT,2X,4H 1.0,2X,4HTRUE,2X, 2 4HTEST,2X,1HF) WRITE (NUVI,70182) GO TO 37038 37036 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37038 CONTINUE CT019* TEST 19 - CARDS 20-21 TERMINATOR SLASH (/) IVTNUM = 19 READ(IRVI, *) IVI, JVI, KVI, LVI, MVI READ(IRVI, *) IVI, JVI, KVI, LVI, MVI C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI - 6) 20190,40190,20190 40190 IF (JVI - 7) 20190,40191,20190 40191 IF (KVI - 8) 20190,40192,20190 40192 IF (LVI - 4) 20190,40193,20190 40193 IF (MVI - 5) 20190,10190,20190 10190 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0191 20190 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70190 FORMAT (1H ,16X,10HCOMPUTED: ,I5,4(2X,I5)) WRITE (NUVI,70190) IVI,JVI,KVI,LVI,MVI 70191 FORMAT (1H ,16X,10HCORRECT: , 1 5H 6,2X,5H 7,2X,5H 8,2X,5H 4,2X,5H 5) WRITE (NUVI,70191) 0191 CONTINUE CT020* TEST 20 - CARD 22 VERIFY THAT BLANKS ARE NOT C***** INTERPRETED AS ZEROS IVTNUM = 20 READ(IRVI, *) IVI, JVI, KVI C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI - 12045) 20200,40200,20200 40200 IF (JVI - 12) 20200,40201,20200 40201 IF (KVI - 45) 20200,10200,20200 10200 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0201 20200 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70200 FORMAT (1H ,16X,10HCOMPUTED: ,I5,2X,I5,2X,I5) WRITE (NUVI,70200) IVI,JVI,KVI 70201 FORMAT (1H ,16X,10HCORRECT: , 1 5H12045,2X,5H 12,2X,5H 45) WRITE (NUVI,70201) 0201 CONTINUE CT021* TEST 21 - CARDS 23-24 VERIFY THAT END-OF-RECORD IS C***** TREATED AS A BLANK WHEN IT C***** SEPARATES TWO INTEGERS IVTNUM = 21 READ(IRVI, *) IVI, JVI, KVI C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI - 12045) 20210,40210,20210 40210 IF (JVI - 12) 20210,40211,20210 40211 IF (KVI - 45) 20210,10210,20210 10210 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0211 20210 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70210 FORMAT (1H ,16X,10HCOMPUTED: ,I5,2X,I5,2X,I5) WRITE (NUVI,70210) IVI,JVI,KVI 70211 FORMAT (1H ,16X,10HCORRECT: , 1 5H12045,2X,5H 12,2X,5H 45) WRITE (NUVI,70211) 0211 CONTINUE CT022* TEST 22 - CARDS 25-26 VERIFY THAT END-OF-RECORD IS C***** NOT TREATED AS A BLANK IN A C***** CHARACTER STRING IVTNUM = 22 READ(IRVI, *) A6VK, B6VK CVNX06='ABCDEF' CVNY06='UVWXYZ' IF (A6VK .EQ. 'ABCDEF' .AND. B6VK .EQ. 'UVWXYZ') GO TO 37041 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A6VK,B6VK WRITE (NUVI,80022) CVNX06,CVNY06 GO TO 37043 37041 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37043 CONTINUE CT023* TEST 23 - CARD 27 QUOTES, BLANKS, COMMAS AND SLASHES C***** EMBEDDED IN CHARACTER STRINGS IVTNUM = 23 READ(IRVI, *) A21VK C**** TO DELETE TEST SEE NOTES FOR TEST 1 CVNX21='CAN''T, AND/OR WON''T' IF (A21VK .EQ. 'CAN''T, AND/OR WON''T') GO TO 37044 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A21VK WRITE (NUVI,80022) CVNX21 GO TO 0231 37044 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 0231 CONTINUE CT024* TEST 24 - CARD 28 CHARACTER STRINGS THAT ARE READ IN C***** VARIABLES OF DIFFERENT LENGTHS IVTNUM = 24 READ(IRVI, *) A15VK, A8VK, A9VK C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (A15VK .EQ. '1234567890 ' .AND. 1 A8VK .EQ. '12345678' .AND. 2 A9VK .EQ. '123456789') GO TO 37047 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70240 FORMAT (1H ,16X,10HCOMPUTED: ,A15,2X,A8,2X,A9) WRITE (NUVI,70240) A15VK,A8VK,A9VK 70241 FORMAT (1H ,16X,10HCORRECT: , 1 15H1234567890 ,2X,8H12345678,2X,9H123456789) WRITE (NUVI,70241) GO TO 37049 37047 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37049 CONTINUE CT025* TEST 25 - CARD 29 LOGICAL VALUES IN DIFFERENT C***** REPRESENTATIONS IVTNUM = 25 READ(IRVI, *) AVB, BVB, CVB, DVB, EVB, FVB, GVB, HVB C***** TO DELETE CODE SEE NOTES FOR TEST 1 IF (AVB .AND. .NOT. BVB .AND. .NOT. CVB .AND. DVB .AND. 1 .NOT. EVB .AND. .NOT. EVB .AND. GVB .AND. HVB) 2 GO TO 37050 IVFAIL=IVFAIL+1 WRITE (NUVI,70250) IVTNUM 70250 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X, 1 28HCOMPLEX IF - SEE SOURCE CODE) 70251 FORMAT (1H ,16X,10HCOMPUTED: ,L1,7(2X,L1)) WRITE (NUVI,70251) AVB,BVB,CVB,DVB,EVB,FVB,GVB,HVB 70252 FORMAT (1H ,16X,10HCORRECT: ,22HT F F T F F T T) WRITE (NUVI,70252) GO TO 37052 37050 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37052 CONTINUE CT026* TEST 26 - CARDS 30-31 SLASH TERMINATOR IVTNUM = 26 READ(IRVI, *) AVB, BVB, CVB, DVB, EVB READ(IRVI, *) AVB, BVB, CVB, DVB, EVB C***** TO DELETE CODE SEE NOTES FOR TEST 1 IF (.NOT. AVB .AND. .NOT. BVB .AND. CVB .AND. 1 DVB .AND. EVB) GO TO 37053 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70260 FORMAT (1H ,16X,10HCOMPUTED: , L1,4(2X,L1)) WRITE (NUVI,70260) AVB,BVB,CVB,DVB,EVB 70261 FORMAT (1H ,16X,10HCORRECT: ,13HF F T T T) WRITE (NUVI,70261) GO TO 37055 37053 CONTINUE IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM 37055 CONTINUE CT027* TEST 27 - CARD 32 SLASH TERMINATING IMPLIED-DO LOOP IVTNUM = 27 J1I(1) = 1 READ(IRVI,*) (J1I(IVI), IVI=1,3) C**** TO DELETE CODE SEE NOTES FOR TEST 1 IVCORR=1 IF (J1I(1) - 1) 20270,10270,20270 10270 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0271 20270 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE(NUVI, 80024) J1I(1) WRITE (NUVI,80026) IVCORR 0271 CONTINUE CT028* TEST 28 - CARDS 33-34 SECOND READ SHOULD CAUSE VALUES C***** TO BE READ FROM SECOND CARD IVTNUM = 28 READ(IRVI,*) IVI, JVI READ(IRVI,*) IVI, JVI C**** TO DELETE TEST SEE NOTES FOR TEST 1 IF (IVI - 5) 20280,40280,20280 40280 IF (JVI - 6) 20280,10280,20280 10280 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0281 20280 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70280 FORMAT (1H ,16X,10HCOMPUTED: ,I5,2X,I5) WRITE (NUVI,70280) IVI,JVI 70281 FORMAT (1H ,16X,10HCORRECT: ,5H 5,2X,5H 6) WRITE (NUVI,70281) 0281 CONTINUE C***** CBB** ********************** BBCSUM0 ********************************** C**** WRITE OUT TEST SUMMARY C**** IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP WRITE (I02, 90004) WRITE (I02, 90014) WRITE (I02, 90004) WRITE (I02, 90020) IVPASS WRITE (I02, 90022) IVFAIL WRITE (I02, 90024) IVDELE WRITE (I02, 90026) IVINSP WRITE (I02, 90028) IVTOTN, IVTOTL CBE** ********************** BBCSUM0 ********************************** CBB** ********************** BBCFOOT0 ********************************** C**** WRITE OUT REPORT FOOTINGS C**** WRITE (I02,90016) ZPROG, ZPROG WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED WRITE (I02,90019) CBE** ********************** BBCFOOT0 ********************************** CBB** ********************** BBCFMT0A ********************************** C**** FORMATS FOR TEST DETAIL LINES C**** 80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31) 80002 FORMAT (1H ,2X,I3,4X,7H PASS ,32X,A31) 80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31) 80008 FORMAT (1H ,2X,I3,4X,7H FAIL ,32X,A31) 80010 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,15X,10HCOMPUTED= , 1I6,/,1H ,15X,10HCORRECT= ,I6) 80012 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1E12.5,/,1H ,16X,10HCORRECT= ,E12.5) 80018 FORMAT (1H ,2X,I3,4X,7H FAIL ,/,1H ,16X,10HCOMPUTED= , 1A21,/,1H ,16X,10HCORRECT= ,A21) 80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31) 80022 FORMAT (1H ,16X,10HCORRECT= ,A21,1X,A31) 80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31) 80026 FORMAT (1H ,16X,10HCORRECT= ,I6,16X,A31) 80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31) 80030 FORMAT (1H ,16X,10HCORRECT= ,E12.5,10X,A31) 80050 FORMAT (1H ,48X,A31) CBE** ********************** BBCFMT0A ********************************** CBB** ********************** BBCFMT0B ********************************** C**** FORMAT STATEMENTS FOR PAGE HEADERS C**** 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER) 90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,A13,A17) 90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/) 90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H - COMPILER= ,A20) 90013 FORMAT (1H ,8H TEST ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS, 1 7X,7HREMARKS,24X) 90014 FORMAT (1H ,46H----------------------------------------------, 1 33H---------------------------------) 90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/) C**** C**** FORMAT STATEMENTS FOR REPORT FOOTINGS C**** 90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/) 90018 FORMAT (1H ,A13,13X,A20,7H * ,A10,1H/, 1 A13) 90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY ,35X,15HCOPYRIGHT 1982) C**** C**** FORMAT STATEMENTS FOR RUN SUMMARY C**** 90020 FORMAT (1H ,21X,I5,13H TESTS PASSED) 90022 FORMAT (1H ,21X,I5,13H TESTS FAILED) 90024 FORMAT (1H ,21X,I5,14H TESTS DELETED) 90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION) 90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED) CBE** ********************** BBCFMT0B ********************************** C***** END OF TEST SEGMENT 370 STOP END *END-OF,FM923