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