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