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 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 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 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 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 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