blob: ba61272679ace0c9af35d87a7630e2c3a1f207e4 [file] [log] [blame]
PROGRAM FM062
C COMMENT SECTION 00010062
C 00020062
C FM062 00030062
C 00040062
C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS WHERE 00050062
C AN ARITHMETIC EXPRESSION FORMED FROM REAL VARIABLES AND 00060062
C CONSTANTS CONNECTED BY ARITHMETIC OPERATORS IS ASSIGNED TO 00070062
C A REAL VARIABLE. IN CASES INVOLVING THE EXPONENTIATION 00080062
C OPERATOR, REAL VALUES ARE RAISED TO INTEGER POWERS ONLY. 00090062
C 00100062
C A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A 00110062
C REAL NUMBER. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. 00120062
C 00130062
C A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A 00140062
C DECIMAL POINT, AND A DECIMAL FRACTION PART IN THAT ORDER. BOTH 00150062
C THE INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; 00160062
C EITHER ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH. THE 00170062
C CONSTANT IS AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A 00180062
C DECIMAL NUMERAL. 00190062
C 00200062
C A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN 00210062
C OPTIONALLY SIGNED INTEGER CONSTANT. 00220062
C 00230062
C A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT,00240062
C A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN 00250062
C INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT. 00260062
C 00270062
C REFERENCES 00280062
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00290062
C X3.9-1978 00300062
C 00310062
C SECTION 4.4, REAL TYPE 00320062
C SECTION 4.4.1, REAL CONSTANT 00330062
C SECTION 6.1, ARITHMETIC EXPRESSIONS 00340062
C SECTION 6.6, EVALUATION OF EXPRESSIONS 00350062
C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00360062
C 00370062
C ********************************************************** 00380062
C 00390062
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00400062
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00410062
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00420062
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00430062
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00440062
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00450062
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00460062
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00470062
C OF EXECUTING THESE TESTS. 00480062
C 00490062
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00500062
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00510062
C 00520062
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00530062
C 00540062
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00550062
C SOFTWARE STANDARDS VALIDATION GROUP 00560062
C BUILDING 225 RM A266 00570062
C GAITHERSBURG, MD 20899 00580062
C ********************************************************** 00590062
C 00600062
C 00610062
C 00620062
C INITIALIZATION SECTION 00630062
C 00640062
C INITIALIZE CONSTANTS 00650062
C ************** 00660062
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00670062
I01 = 5 00680062
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00690062
I02 = 6 00700062
C SYSTEM ENVIRONMENT SECTION 00710062
C 00720062
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00730062
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00740062
C (UNIT NUMBER FOR CARD READER). 00750062
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00760062
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770062
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00780062
C 00790062
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00800062
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00810062
C (UNIT NUMBER FOR PRINTER). 00820062
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00830062
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00840062
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00850062
C 00860062
IVPASS=0 00870062
IVFAIL=0 00880062
IVDELE=0 00890062
ICZERO=0 00900062
C 00910062
C WRITE PAGE HEADERS 00920062
WRITE (I02,90000) 00930062
WRITE (I02,90001) 00940062
WRITE (I02,90002) 00950062
WRITE (I02, 90002) 00960062
WRITE (I02,90003) 00970062
WRITE (I02,90002) 00980062
WRITE (I02,90004) 00990062
WRITE (I02,90002) 01000062
WRITE (I02,90011) 01010062
WRITE (I02,90002) 01020062
WRITE (I02,90002) 01030062
WRITE (I02,90005) 01040062
WRITE (I02,90006) 01050062
WRITE (I02,90002) 01060062
C 01070062
C TEST SECTION 01080062
C 01090062
C ARITHMETIC ASSIGNMENT STATEMENT 01100062
C 01110062
C 01120062
C TESTS 62 THROUGH 70 USE A MIXTURE OF REAL VARIABLES AND REAL 01130062
C CONSTANTS CONNECTED BY TWO IDENTICAL ARITHMETIC OPERATORS. 01140062
C TESTS OCCUR IN PAIRS, ONE WITHOUT PARENTHESES AND ONE WITH 01150062
C PARENTHESES TO ALTER THE NORMAL ORDER OF EVALUATION. 01160062
C 01170062
C TESTS 71 THROUGH 90 USE THREE REAL VARIABLES CONNECTED BY A 01180062
C PAIR OF DISSIMILAR OPERATORS. ALL COMBINATIONS AND ORDERINGS 01190062
C OF OPERATORS ARE EXERCIZED. WHERE EXPONENTIATION IS TESTED, 01200062
C INTEGER VARIABLES ARE USED FOR THE POWER PRIMARIES. 01210062
C 01220062
C TESTS 91 AND 92 USE A SERIES OF REAL VARIABLES CONNECTED BY ONE 01230062
C EACH OF THE ARITHMETIC OPERTORS. PARENTHETICAL NOTATIONS ARE 01240062
C ALSO TESTED. 01250062
C 01260062
C 01270062
C 01280062
C 01290062
C 01300062
IVTNUM = 62 01310062
C 01320062
C **** TEST 62 **** 01330062
C 01340062
IF (ICZERO) 30620, 620, 30620 01350062
620 CONTINUE 01360062
RVON01 = 7.5 01370062
RVON02 = 5E2 01380062
RVCOMP = RVON01 + RVON02 + 33E-1 01390062
GO TO 40620 01400062
30620 IVDELE = IVDELE + 1 01410062
WRITE (I02,80003) IVTNUM 01420062
IF (ICZERO) 40620, 631, 40620 01430062
40620 IF (RVCOMP - 510.75) 20620,10620,40621 01440062
40621 IF (RVCOMP - 510.85) 10620,10620,20620 01450062
10620 IVPASS = IVPASS + 1 01460062
WRITE (I02,80001) IVTNUM 01470062
GO TO 631 01480062
20620 IVFAIL = IVFAIL + 1 01490062
RVCORR = 510.8 01500062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01510062
631 CONTINUE 01520062
IVTNUM = 63 01530062
C 01540062
C **** TEST 63 **** 01550062
C 01560062
IF (ICZERO) 30630, 630, 30630 01570062
630 CONTINUE 01580062
RVON01 = 75E-1 01590062
RVON02 = 500.0 01600062
RVCOMP = RVON01 + (RVON02 + 3.3) 01610062
GO TO 40630 01620062
30630 IVDELE = IVDELE + 1 01630062
WRITE (I02,80003) IVTNUM 01640062
IF (ICZERO) 40630, 641, 40630 01650062
40630 IF (RVCOMP - 510.75) 20630,10630,40631 01660062
40631 IF (RVCOMP - 510.85) 10630,10630,20630 01670062
10630 IVPASS = IVPASS + 1 01680062
WRITE (I02,80001) IVTNUM 01690062
GO TO 641 01700062
20630 IVFAIL = IVFAIL + 1 01710062
RVCORR = 510.8 01720062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01730062
641 CONTINUE 01740062
IVTNUM = 64 01750062
C 01760062
C **** TEST 64 **** 01770062
C 01780062
IF (ICZERO) 30640, 640, 30640 01790062
640 CONTINUE 01800062
RVCOMP = 7.5 - 500. - 3.3 01810062
GO TO 40640 01820062
30640 IVDELE = IVDELE + 1 01830062
WRITE (I02,80003) IVTNUM 01840062
IF (ICZERO) 40640, 651, 40640 01850062
40640 IF (RVCOMP + 495.85) 20640,10640,40641 01860062
40641 IF (RVCOMP + 495.75) 10640,10640,20640 01870062
10640 IVPASS = IVPASS + 1 01880062
WRITE (I02,80001) IVTNUM 01890062
GO TO 651 01900062
20640 IVFAIL = IVFAIL + 1 01910062
RVCORR = -495.8 01920062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01930062
651 CONTINUE 01940062
IVTNUM = 65 01950062
C 01960062
C **** TEST 65 **** 01970062
C 01980062
IF (ICZERO) 30650, 650, 30650 01990062
650 CONTINUE 02000062
RVON01 = 7.5 02010062
RVON02 = 5E2 02020062
RVCOMP = RVON01 - (33E-1 - RVON02) 02030062
GO TO 40650 02040062
30650 IVDELE = IVDELE + 1 02050062
WRITE (I02,80003) IVTNUM 02060062
IF (ICZERO) 40650, 661, 40650 02070062
40650 IF (RVCOMP - 504.15) 20650,10650,40651 02080062
40651 IF (RVCOMP - 504.25) 10650,10650,20650 02090062
10650 IVPASS = IVPASS + 1 02100062
WRITE (I02,80001) IVTNUM 02110062
GO TO 661 02120062
20650 IVFAIL = IVFAIL + 1 02130062
RVCORR = 504.2 02140062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02150062
661 CONTINUE 02160062
IVTNUM = 66 02170062
C 02180062
C **** TEST 66 **** 02190062
C 02200062
IF (ICZERO) 30660, 660, 30660 02210062
660 CONTINUE 02220062
RVON01 = 7.5 02230062
RVCOMP = 5E2 * 33E-1 * RVON01 02240062
GO TO 40660 02250062
30660 IVDELE = IVDELE + 1 02260062
WRITE (I02,80003) IVTNUM 02270062
IF (ICZERO) 40660, 671, 40660 02280062
40660 IF (RVCOMP - 12370) 20660,10660,40661 02290062
40661 IF (RVCOMP - 12380) 10660,10660,20660 02300062
10660 IVPASS = IVPASS + 1 02310062
WRITE (I02,80001) IVTNUM 02320062
GO TO 671 02330062
20660 IVFAIL = IVFAIL + 1 02340062
RVCORR = 12375. 02350062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02360062
671 CONTINUE 02370062
IVTNUM = 67 02380062
C 02390062
C **** TEST 67 **** 02400062
C 02410062
IF (ICZERO) 30670, 670, 30670 02420062
670 CONTINUE 02430062
RVON01 = 7.5 02440062
RVCOMP = 5E2 * (RVON01 * 33E-1) 02450062
GO TO 40670 02460062
30670 IVDELE = IVDELE + 1 02470062
WRITE (I02,80003) IVTNUM 02480062
IF (ICZERO) 40670, 681, 40670 02490062
40670 IF (RVCOMP - 12370) 20670,10670,40671 02500062
40671 IF (RVCOMP - 12380) 10670,10670,20670 02510062
10670 IVPASS = IVPASS + 1 02520062
WRITE (I02,80001) IVTNUM 02530062
GO TO 681 02540062
20670 IVFAIL = IVFAIL + 1 02550062
RVCORR = 12375. 02560062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02570062
681 CONTINUE 02580062
IVTNUM = 68 02590062
C 02600062
C **** TEST 68 **** 02610062
C 02620062
IF (ICZERO) 30680, 680, 30680 02630062
680 CONTINUE 02640062
RVON01 = 7.5 02650062
RVON02 = 33E-1 02660062
RVON03 = -5E+2 02670062
RVCOMP = RVON01 / RVON02 / RVON03 02680062
GO TO 40680 02690062
30680 IVDELE = IVDELE + 1 02700062
WRITE (I02,80003) IVTNUM 02710062
IF (ICZERO) 40680, 691, 40680 02720062
40680 IF (RVCOMP + .00459) 20680,10680,40681 02730062
40681 IF (RVCOMP + .00449) 10680,10680,20680 02740062
10680 IVPASS = IVPASS + 1 02750062
WRITE (I02,80001) IVTNUM 02760062
GO TO 691 02770062
20680 IVFAIL = IVFAIL + 1 02780062
RVCORR = -.0045454 02790062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02800062
691 CONTINUE 02810062
IVTNUM = 69 02820062
C 02830062
C **** TEST 69 **** 02840062
C 02850062
IF (ICZERO) 30690, 690, 30690 02860062
690 CONTINUE 02870062
RVON01 = 7.5 02880062
RVON02 = 33E-1 02890062
RVON03 = -5E+2 02900062
RVCOMP = RVON01 / (RVON02 / RVON03) 02910062
GO TO 40690 02920062
30690 IVDELE = IVDELE + 1 02930062
WRITE (I02,80003) IVTNUM 02940062
IF (ICZERO) 40690, 701, 40690 02950062
40690 IF (RVCOMP + 1180.) 20690,10690,40691 02960062
40691 IF (RVCOMP + 1080.) 10690,10690,20690 02970062
10690 IVPASS = IVPASS + 1 02980062
WRITE (I02,80001) IVTNUM 02990062
GO TO 701 03000062
20690 IVFAIL = IVFAIL + 1 03010062
RVCORR = -1136.4 03020062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03030062
701 CONTINUE 03040062
IVTNUM = 70 03050062
C 03060062
C **** TEST 70 **** 03070062
C 03080062
IF (ICZERO) 30700, 700, 30700 03090062
700 CONTINUE 03100062
RVON01 = 3.835E3 03110062
IVON01 = 5 03120062
RVCOMP = RVON01 ** IVON01 03130062
GO TO 40700 03140062
30700 IVDELE = IVDELE + 1 03150062
WRITE (I02,80003) IVTNUM 03160062
IF (ICZERO) 40700, 711, 40700 03170062
40700 IF (RVCOMP - 8.29E17) 20700,10700,40701 03180062
40701 IF (RVCOMP - 8.30E17) 10700,10700,20700 03190062
10700 IVPASS = IVPASS + 1 03200062
WRITE (I02,80001) IVTNUM 03210062
GO TO 711 03220062
20700 IVFAIL = IVFAIL + 1 03230062
RVCORR = 8.295E17 03240062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03250062
711 CONTINUE 03260062
C 03270062
C TESTS 71 THROUGH 74 TEST RV1 + RV2 <OP2> RV3 03280062
C 03290062
IVTNUM = 71 03300062
C 03310062
C **** TEST 71 **** 03320062
C 03330062
IF (ICZERO) 30710, 710, 30710 03340062
710 CONTINUE 03350062
RVON01 = 524.87 03360062
RVON02 = 3.35 03370062
RVON03 = .005679 03380062
RVCOMP = RVON01 + RVON02 - RVON03 03390062
GO TO 40710 03400062
30710 IVDELE = IVDELE + 1 03410062
WRITE (I02,80003) IVTNUM 03420062
IF (ICZERO) 40710, 721, 40710 03430062
40710 IF (RVCOMP - 528.16) 20710,10710,40711 03440062
40711 IF (RVCOMP - 528.26) 10710,10710,20710 03450062
10710 IVPASS = IVPASS + 1 03460062
WRITE (I02,80001) IVTNUM 03470062
GO TO 721 03480062
20710 IVFAIL = IVFAIL + 1 03490062
RVCORR = 528.21 03500062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03510062
721 CONTINUE 03520062
IVTNUM = 72 03530062
C 03540062
C **** TEST 72 **** 03550062
C 03560062
IF (ICZERO) 30720, 720, 30720 03570062
720 CONTINUE 03580062
RVON01 = 524.87 03590062
RVON02 = 3.35 03600062
RVON03 = .005679 03610062
RVCOMP = RVON01 + RVON02 * RVON03 03620062
GO TO 40720 03630062
30720 IVDELE = IVDELE + 1 03640062
WRITE (I02,80003) IVTNUM 03650062
IF (ICZERO) 40720, 731, 40720 03660062
40720 IF (RVCOMP - 524.84) 20720,10720,40721 03670062
40721 IF (RVCOMP - 524.94) 10720,10720,20720 03680062
10720 IVPASS = IVPASS + 1 03690062
WRITE (I02,80001) IVTNUM 03700062
GO TO 731 03710062
20720 IVFAIL = IVFAIL + 1 03720062
RVCORR = 524.89 03730062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03740062
731 CONTINUE 03750062
IVTNUM = 73 03760062
C 03770062
C **** TEST 73 **** 03780062
C 03790062
IF (ICZERO) 30730, 730, 30730 03800062
730 CONTINUE 03810062
RVON01 = 524.87 03820062
RVON02 = 3.35 03830062
RVON03 = .005679 03840062
RVCOMP = RVON01 + RVON02 / RVON03 03850062
GO TO 40730 03860062
30730 IVDELE = IVDELE + 1 03870062
WRITE (I02,80003) IVTNUM 03880062
IF (ICZERO) 40730, 741, 40730 03890062
40730 IF (RVCOMP - 1114.2) 20730,10730,40731 03900062
40731 IF (RVCOMP - 1115.2) 10730,10730,20730 03910062
10730 IVPASS = IVPASS + 1 03920062
WRITE (I02,80001) IVTNUM 03930062
GO TO 741 03940062
20730 IVFAIL = IVFAIL + 1 03950062
RVCORR = 1114.8 03960062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03970062
741 CONTINUE 03980062
IVTNUM = 74 03990062
C 04000062
C **** TEST 74 **** 04010062
C 04020062
IF (ICZERO) 30740, 740, 30740 04030062
740 CONTINUE 04040062
RVON01 = 524.87 04050062
RVON02 = 3.35 04060062
IVON01 = 7 04070062
RVCOMP = RVON01 + RVON02 ** IVON01 04080062
GO TO 40740 04090062
30740 IVDELE = IVDELE + 1 04100062
WRITE (I02,80003) IVTNUM 04110062
IF (ICZERO) 40740, 751, 40740 04120062
40740 IF (RVCOMP - 5259.3) 20740,10740,40741 04130062
40741 IF (RVCOMP - 5260.3) 10740,10740,20740 04140062
10740 IVPASS = IVPASS + 1 04150062
WRITE (I02,80001) IVTNUM 04160062
GO TO 751 04170062
20740 IVFAIL = IVFAIL + 1 04180062
RVCORR = 5259.8 04190062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04200062
751 CONTINUE 04210062
C 04220062
C TESTS 75 THROUGH 78 CHECK RV1 - RV2 <OP2> RV3 04230062
C 04240062
IVTNUM = 75 04250062
C 04260062
C **** TEST 75 **** 04270062
C 04280062
IF (ICZERO) 30750, 750, 30750 04290062
750 CONTINUE 04300062
RVON01 = 524.87 04310062
RVON02 = 3.35 04320062
RVON03 = .5679 04330062
RVCOMP = RVON01 - RVON02 + RVON03 04340062
GO TO 40750 04350062
30750 IVDELE = IVDELE + 1 04360062
WRITE (I02,80003) IVTNUM 04370062
IF (ICZERO) 40750, 761, 40750 04380062
40750 IF (RVCOMP - 522.03) 20750,10750,40751 04390062
40751 IF (RVCOMP - 522.13) 10750,10750,20750 04400062
10750 IVPASS = IVPASS + 1 04410062
WRITE (I02,80001) IVTNUM 04420062
GO TO 761 04430062
20750 IVFAIL = IVFAIL + 1 04440062
RVCORR = 522.09 04450062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04460062
761 CONTINUE 04470062
IVTNUM = 76 04480062
C 04490062
C **** TEST 76 **** 04500062
C 04510062
IF (ICZERO) 30760, 760, 30760 04520062
760 CONTINUE 04530062
RVON01 = 524.87 04540062
RVON02 = 3.35 04550062
RVON03 = .5679 04560062
RVCOMP = RVON01 - RVON02 * RVON03 04570062
GO TO 40760 04580062
30760 IVDELE = IVDELE + 1 04590062
WRITE (I02,80003) IVTNUM 04600062
IF (ICZERO) 40760, 771, 40760 04610062
40760 IF (RVCOMP - 522.92) 20760,10760,40761 04620062
40761 IF (RVCOMP - 523.02) 10760,10760,20760 04630062
10760 IVPASS = IVPASS + 1 04640062
WRITE (I02,80001) IVTNUM 04650062
GO TO 771 04660062
20760 IVFAIL = IVFAIL + 1 04670062
RVCORR = 522.97 04680062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04690062
771 CONTINUE 04700062
IVTNUM = 77 04710062
C 04720062
C **** TEST 77 **** 04730062
C 04740062
IF (ICZERO) 30770, 770, 30770 04750062
770 CONTINUE 04760062
RVON01 = 524.87 04770062
RVON02 = 3.35 04780062
RVON03 = .5679 04790062
RVCOMP = RVON01 - RVON02 / RVON03 04800062
GO TO 40770 04810062
30770 IVDELE = IVDELE + 1 04820062
WRITE (I02,80003) IVTNUM 04830062
IF (ICZERO) 40770, 781, 40770 04840062
40770 IF (RVCOMP - 518.92) 20770,10770,40771 04850062
40771 IF (RVCOMP - 519.02) 10770,10770,20770 04860062
10770 IVPASS = IVPASS + 1 04870062
WRITE (I02,80001) IVTNUM 04880062
GO TO 781 04890062
20770 IVFAIL = IVFAIL + 1 04900062
RVCORR = 518.97 04910062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04920062
781 CONTINUE 04930062
IVTNUM = 78 04940062
C 04950062
C **** TEST 78 **** 04960062
C 04970062
IF (ICZERO) 30780, 780, 30780 04980062
780 CONTINUE 04990062
RVON01 = 524.87 05000062
RVON02 = 3.35 05010062
IVON01 = 7 05020062
RVCOMP = RVON01 - RVON02 ** IVON01 05030062
GO TO 40780 05040062
30780 IVDELE = IVDELE + 1 05050062
WRITE (I02,80003) IVTNUM 05060062
IF (ICZERO) 40780, 791, 40780 05070062
40780 IF (RVCOMP + 4210.6) 20780,10780,40781 05080062
40781 IF (RVCOMP + 4209.6) 10780,10780,20780 05090062
10780 IVPASS = IVPASS + 1 05100062
WRITE (I02,80001) IVTNUM 05110062
GO TO 791 05120062
20780 IVFAIL = IVFAIL + 1 05130062
RVCORR = -4210.1 05140062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05150062
791 CONTINUE 05160062
C 05170062
C TESTS 79 THROUGH 82 CHECK RV1 * RV2 <OP2> RV3 05180062
C 05190062
IVTNUM = 79 05200062
C 05210062
C **** TEST 79 **** 05220062
C 05230062
IF (ICZERO) 30790, 790, 30790 05240062
790 CONTINUE 05250062
RVON01 = 524.87 05260062
RVON02 = .5679 05270062
RVON03 = 3.35 05280062
RVCOMP = RVON01 * RVON02 + RVON03 05290062
GO TO 40790 05300062
30790 IVDELE = IVDELE + 1 05310062
WRITE (I02,80003) IVTNUM 05320062
IF (ICZERO) 40790, 801, 40790 05330062
40790 IF (RVCOMP - 301.37) 20790,10790,40791 05340062
40791 IF (RVCOMP - 301.47) 10790,10790,20790 05350062
10790 IVPASS = IVPASS + 1 05360062
WRITE (I02,80001) IVTNUM 05370062
GO TO 801 05380062
20790 IVFAIL = IVFAIL + 1 05390062
RVCORR = 301.42 05400062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05410062
801 CONTINUE 05420062
IVTNUM = 80 05430062
C 05440062
C **** TEST 80 **** 05450062
C 05460062
IF (ICZERO) 30800, 800, 30800 05470062
800 CONTINUE 05480062
RVON01 = 524.87 05490062
RVON02 = .5679 05500062
RVON03 = 3.35 05510062
RVCOMP = RVON01 * RVON02 - RVON03 05520062
GO TO 40800 05530062
30800 IVDELE = IVDELE + 1 05540062
WRITE (I02,80003) IVTNUM 05550062
IF (ICZERO) 40800, 811, 40800 05560062
40800 IF (RVCOMP - 294.67) 20800,10800,40801 05570062
40801 IF (RVCOMP - 294.77) 10800,10800,20800 05580062
10800 IVPASS = IVPASS + 1 05590062
WRITE (I02,80001) IVTNUM 05600062
GO TO 811 05610062
20800 IVFAIL = IVFAIL + 1 05620062
RVCORR = 294.72 05630062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05640062
811 CONTINUE 05650062
IVTNUM = 81 05660062
C 05670062
C **** TEST 81 **** 05680062
C 05690062
IF (ICZERO) 30810, 810, 30810 05700062
810 CONTINUE 05710062
RVON01 = 524.87 05720062
RVON02 = .5679 05730062
RVON03 = 3.35 05740062
RVCOMP = RVON01 * RVON02 / RVON03 05750062
GO TO 40810 05760062
30810 IVDELE = IVDELE + 1 05770062
WRITE (I02,80003) IVTNUM 05780062
IF (ICZERO) 40810, 821, 40810 05790062
40810 IF (RVCOMP - 88.92) 20810,10810,40811 05800062
40811 IF (RVCOMP - 89.02) 10810,10810,20810 05810062
10810 IVPASS = IVPASS + 1 05820062
WRITE (I02,80001) IVTNUM 05830062
GO TO 821 05840062
20810 IVFAIL = IVFAIL + 1 05850062
RVCORR = 88.977 05860062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05870062
821 CONTINUE 05880062
IVTNUM = 82 05890062
C 05900062
C **** TEST 82 **** 05910062
C 05920062
IF (ICZERO) 30820, 820, 30820 05930062
820 CONTINUE 05940062
RVON01 = 524.87 05950062
RVON02 = .5679 05960062
IVON01 = 7 05970062
RVCOMP = RVON01 * RVON02 ** IVON01 05980062
GO TO 40820 05990062
30820 IVDELE = IVDELE + 1 06000062
WRITE (I02,80003) IVTNUM 06010062
IF (ICZERO) 40820, 831, 40820 06020062
40820 IF (RVCOMP - 9.94) 20820,10820,40821 06030062
40821 IF (RVCOMP - 10.04) 10820,10820,20820 06040062
10820 IVPASS = IVPASS + 1 06050062
WRITE (I02,80001) IVTNUM 06060062
GO TO 831 06070062
20820 IVFAIL = IVFAIL + 1 06080062
RVCORR = 9.999 06090062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06100062
831 CONTINUE 06110062
C 06120062
C TESTS 83 THROUGH 86 CHECK RV1 / RV2 <OP2> RV3 06130062
C 06140062
IVTNUM = 83 06150062
C 06160062
C **** TEST 83 **** 06170062
C 06180062
IF (ICZERO) 30830, 830, 30830 06190062
830 CONTINUE 06200062
RVON01 = 524.87 06210062
RVON02 = 3.35 06220062
RVON03 = .5679 06230062
RVCOMP = RVON01 / RVON02 + RVON03 06240062
GO TO 40830 06250062
30830 IVDELE = IVDELE + 1 06260062
WRITE (I02,80003) IVTNUM 06270062
IF (ICZERO) 40830, 841, 40830 06280062
40830 IF (RVCOMP - 157.19) 20830,10830,40831 06290062
40831 IF (RVCOMP - 157.29) 10830,10830,20830 06300062
10830 IVPASS = IVPASS + 1 06310062
WRITE (I02,80001) IVTNUM 06320062
GO TO 841 06330062
20830 IVFAIL = IVFAIL + 1 06340062
RVCORR = 157.25 06350062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06360062
841 CONTINUE 06370062
IVTNUM = 84 06380062
C 06390062
C **** TEST 84 **** 06400062
C 06410062
IF (ICZERO) 30840, 840, 30840 06420062
840 CONTINUE 06430062
RVON01 = 524.87 06440062
RVON02 = 3.35 06450062
RVON03 = .8507 06460062
RVCOMP = RVON01 / RVON02 - RVON03 06470062
GO TO 40840 06480062
30840 IVDELE = IVDELE + 1 06490062
WRITE (I02,80003) IVTNUM 06500062
IF (ICZERO) 40840, 851, 40840 06510062
40840 IF (RVCOMP - 155.77) 20840,10840,40841 06520062
40841 IF (RVCOMP - 155.87) 10840,10840,20840 06530062
10840 IVPASS = IVPASS + 1 06540062
WRITE (I02,80001) IVTNUM 06550062
GO TO 851 06560062
20840 IVFAIL = IVFAIL + 1 06570062
RVCORR = 155.83 06580062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06590062
851 CONTINUE 06600062
IVTNUM = 85 06610062
C 06620062
C **** TEST 85 **** 06630062
C 06640062
IF (ICZERO) 30850, 850, 30850 06650062
850 CONTINUE 06660062
RVON01 = 524.87 06670062
RVON02 = 3.35 06680062
RVON03 = .8507 06690062
RVCOMP = RVON01 / RVON02 * RVON03 06700062
GO TO 40850 06710062
30850 IVDELE = IVDELE + 1 06720062
WRITE (I02,80003) IVTNUM 06730062
IF (ICZERO) 40850, 861, 40850 06740062
40850 IF (RVCOMP - 132.7) 20850,10850,40851 06750062
40851 IF (RVCOMP - 133.7) 10850,10850,20850 06760062
10850 IVPASS = IVPASS + 1 06770062
WRITE (I02,80001) IVTNUM 06780062
GO TO 861 06790062
20850 IVFAIL = IVFAIL + 1 06800062
RVCORR = 133.29 06810062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06820062
861 CONTINUE 06830062
IVTNUM = 86 06840062
C 06850062
C **** TEST 86 **** 06860062
C 06870062
IF (ICZERO) 30860, 860, 30860 06880062
860 CONTINUE 06890062
RVON01 = 524.87 06900062
RVON02 = 3.35 06910062
IVON01 = 7 06920062
RVCOMP = RVON01 / RVON02 ** IVON01 06930062
GO TO 40860 06940062
30860 IVDELE = IVDELE + 1 06950062
WRITE (I02,80003) IVTNUM 06960062
IF (ICZERO) 40860, 871, 40860 06970062
40860 IF (RVCOMP - .106) 20860,10860,40861 06980062
40861 IF (RVCOMP - .116) 10860,10860,20860 06990062
10860 IVPASS = IVPASS + 1 07000062
WRITE (I02,80001) IVTNUM 07010062
GO TO 871 07020062
20860 IVFAIL = IVFAIL + 1 07030062
RVCORR = .11085 07040062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07050062
871 CONTINUE 07060062
C 07070062
C TESTS 87 THROUGH 90 CHECK RV1 ** IV1 <OP2> RV2 07080062
C 07090062
IVTNUM = 87 07100062
C 07110062
C **** TEST 87 **** 07120062
C 07130062
IF (ICZERO) 30870, 870, 30870 07140062
870 CONTINUE 07150062
RVON01 = 3.35 07160062
IVON01 = 7 07170062
RVON02 = 524.87 07180062
RVCOMP = RVON01 ** IVON01 + RVON02 07190062
GO TO 40870 07200062
30870 IVDELE = IVDELE + 1 07210062
WRITE (I02,80003) IVTNUM 07220062
IF (ICZERO) 40870, 881, 40870 07230062
40870 IF (RVCOMP - 5210.) 20870,10870,40871 07240062
40871 IF (RVCOMP - 5310.) 10870,10870,20870 07250062
10870 IVPASS = IVPASS + 1 07260062
WRITE (I02,80001) IVTNUM 07270062
GO TO 881 07280062
20870 IVFAIL = IVFAIL + 1 07290062
RVCORR = 5259.8 07300062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07310062
881 CONTINUE 07320062
IVTNUM = 88 07330062
C 07340062
C **** TEST 88 **** 07350062
C 07360062
IF (ICZERO) 30880, 880, 30880 07370062
880 CONTINUE 07380062
RVON01 = 3.35 07390062
IVON01 = 7 07400062
RVON02 = 524.87 07410062
RVCOMP = RVON01 ** IVON01 - RVON02 07420062
GO TO 40880 07430062
30880 IVDELE = IVDELE + 1 07440062
WRITE (I02,80003) IVTNUM 07450062
IF (ICZERO) 40880, 891, 40880 07460062
40880 IF (RVCOMP - 4160.) 20880,10880,40881 07470062
40881 IF (RVCOMP - 4260.) 10880,10880,20880 07480062
10880 IVPASS = IVPASS + 1 07490062
WRITE (I02,80001) IVTNUM 07500062
GO TO 891 07510062
20880 IVFAIL = IVFAIL + 1 07520062
RVCORR = 4210.1 07530062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07540062
891 CONTINUE 07550062
IVTNUM = 89 07560062
C 07570062
C **** TEST 89 **** 07580062
C 07590062
IF (ICZERO) 30890, 890, 30890 07600062
890 CONTINUE 07610062
RVON01 = 3.35 07620062
IVON01 = 7 07630062
RVON02 = 524.87 07640062
RVCOMP = RVON01 ** IVON01 * RVON02 07650062
GO TO 40890 07660062
30890 IVDELE = IVDELE + 1 07670062
WRITE (I02,80003) IVTNUM 07680062
IF (ICZERO) 40890, 901, 40890 07690062
40890 IF (RVCOMP - 2.43E6) 20890,10890,40891 07700062
40891 IF (RVCOMP - 2.53E6) 10890,10890,20890 07710062
10890 IVPASS = IVPASS + 1 07720062
WRITE (I02,80001) IVTNUM 07730062
GO TO 901 07740062
20890 IVFAIL = IVFAIL + 1 07750062
RVCORR = 2.4852E6 07760062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07770062
901 CONTINUE 07780062
IVTNUM = 90 07790062
C 07800062
C **** TEST 90 **** 07810062
C 07820062
IF (ICZERO) 30900, 900, 30900 07830062
900 CONTINUE 07840062
RVON01 = 3.35 07850062
IVON01 = 7 07860062
RVON02 = 524.87 07870062
RVCOMP = RVON01 ** IVON01 / RVON02 07880062
GO TO 40900 07890062
30900 IVDELE = IVDELE + 1 07900062
WRITE (I02,80003) IVTNUM 07910062
IF (ICZERO) 40900, 911, 40900 07920062
40900 IF (RVCOMP - 8.97) 20900,10900,40901 07930062
40901 IF (RVCOMP - 9.07) 10900,10900,20900 07940062
10900 IVPASS = IVPASS + 1 07950062
WRITE (I02,80001) IVTNUM 07960062
GO TO 911 07970062
20900 IVFAIL = IVFAIL + 1 07980062
RVCORR = 9.0211 07990062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 08000062
911 CONTINUE 08010062
C 08020062
C TESTS 91 AND 92 CHECK ALL ARITHMETIC OPERATORS USED TOGETHER 08030062
C 08040062
IVTNUM = 91 08050062
C 08060062
C **** TEST 91 **** 08070062
C 08080062
IF (ICZERO) 30910, 910, 30910 08090062
910 CONTINUE 08100062
RVON01 = 780.56 08110062
RVON02 = .803 08120062
RVON03 = 3.35 08130062
IVON01 = 7 08140062
RVON04 = 20.07 08150062
RVON05 = 511.9 08160062
RVCOMP = - RVON01 + RVON02 * RVON03 ** IVON01 / RVON04 - RVON05 08170062
GO TO 40910 08180062
30910 IVDELE = IVDELE + 1 08190062
WRITE (I02,80003) IVTNUM 08200062
IF (ICZERO) 40910, 921, 40910 08210062
40910 IF (RVCOMP + 1113.0) 20910,10910,40911 08220062
40911 IF (RVCOMP + 1093.0) 10910,10910,20910 08230062
10910 IVPASS = IVPASS + 1 08240062
WRITE (I02,80001) IVTNUM 08250062
GO TO 921 08260062
20910 IVFAIL = IVFAIL + 1 08270062
RVCORR = -1103.0 08280062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 08290062
921 CONTINUE 08300062
IVTNUM = 92 08310062
C 08320062
C **** TEST 92 **** 08330062
C 08340062
IF (ICZERO) 30920, 920, 30920 08350062
920 CONTINUE 08360062
RVON01 = 780.56 08370062
RVON02 = .803 08380062
RVON03 = 3.35 08390062
IVON01 = 7 08400062
RVON04 = 20.07 08410062
RVON05 = 511.9 08420062
RVCOMP = (-RVON01) + (RVON02 * RVON03) ** IVON01 / (RVON04-RVON05)08430062
GO TO 40920 08440062
30920 IVDELE = IVDELE + 1 08450062
WRITE (I02,80003) IVTNUM 08460062
IF (ICZERO) 40920, 931, 40920 08470062
40920 IF (RVCOMP + 788.) 20920,10920,40921 08480062
40921 IF (RVCOMP + 777.) 10920,10920,20920 08490062
10920 IVPASS = IVPASS + 1 08500062
WRITE (I02,80001) IVTNUM 08510062
GO TO 931 08520062
20920 IVFAIL = IVFAIL + 1 08530062
RVCORR = -782.63 08540062
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 08550062
931 CONTINUE 08560062
C 08570062
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08580062
99999 CONTINUE 08590062
WRITE (I02,90002) 08600062
WRITE (I02,90006) 08610062
WRITE (I02,90002) 08620062
WRITE (I02,90002) 08630062
WRITE (I02,90007) 08640062
WRITE (I02,90002) 08650062
WRITE (I02,90008) IVFAIL 08660062
WRITE (I02,90009) IVPASS 08670062
WRITE (I02,90010) IVDELE 08680062
C 08690062
C 08700062
C TERMINATE ROUTINE EXECUTION 08710062
STOP 08720062
C 08730062
C FORMAT STATEMENTS FOR PAGE HEADERS 08740062
90000 FORMAT ("1") 08750062
90002 FORMAT (" ") 08760062
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08770062
90003 FORMAT (" ",21X,"VERSION 2.1" ) 08780062
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08790062
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08800062
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08810062
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08820062
C 08830062
C FORMAT STATEMENTS FOR RUN SUMMARIES 08840062
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08850062
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08860062
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08870062
C 08880062
C FORMAT STATEMENTS FOR TEST RESULTS 08890062
80001 FORMAT (" ",4X,I5,7X,"PASS") 08900062
80002 FORMAT (" ",4X,I5,7X,"FAIL") 08910062
80003 FORMAT (" ",4X,I5,7X,"DELETED") 08920062
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08930062
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08940062
C 08950062
90007 FORMAT (" ",20X,"END OF PROGRAM FM062" ) 08960062
END 08970062