PROGRAM FM006 C COMMENT SECTION 00010006 C 00020006 C FM006 00030006 C 00040006 C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF 00050006 C THE FORM 00060006 C INTEGER VARIABLE = INTEGER CONSTANT 00070006 C INTEGER VARIABLE = INTEGER VARIABLE 00080006 C THE INTEGER CONSTANT MAY BE UNSIGNED, POSITIVE OR NEGATIVE. 00090006 C 00100006 C AN INTEGER DATUM IS ALWAYS AN EXACT REPRESENTATION OF AN 00110006 C INTEGER VALUE. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. 00120006 C IT MAY ONLY ASSUME INTEGRAL VALUES. 00130006 C 00140006 C AN INTEGER CONSTANT IS WRITTEN AS A NONEMPTY STRING OF DIGITS.00150006 C THE CONSTANT IS THE DIGIT STRING INTERPRETED AS A DECIMAL NUMBER. 00160006 C 00170006 C THIS ROUTINE ALSO CONTAINS TESTS WHICH CHECK ON THE USE OF 00180006 C AT LEAST 16 BITS FOR REPRESENTING INTEGER DATA VALUES. THE 00190006 C CONSTANT VALUES 32767 AND -32766 ARE USED IN THESE TESTS. 00200006 C 00210006 C REFERENCES 00220006 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00230006 C X3.9-1978 00240006 C 00250006 C SECTION 4.3, INTEGER TYPE 00260006 C SECTION 4.3.1, INTEGER CONSTANT 00270006 C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENTS 00280006 C 00290006 C 00300006 C ********************************************************** 00310006 C 00320006 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00330006 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00340006 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00350006 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00360006 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00370006 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00380006 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00390006 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00400006 C OF EXECUTING THESE TESTS. 00410006 C 00420006 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00430006 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00440006 C 00450006 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00460006 C 00470006 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00480006 C SOFTWARE STANDARDS VALIDATION GROUP 00490006 C BUILDING 225 RM A266 00500006 C GAITHERSBURG, MD 20899 00510006 C ********************************************************** 00520006 C 00530006 C 00540006 C 00550006 C INITIALIZATION SECTION 00560006 C 00570006 C INITIALIZE CONSTANTS 00580006 C ************** 00590006 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00600006 I01 = 5 00610006 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00620006 I02 = 6 00630006 C SYSTEM ENVIRONMENT SECTION 00640006 C 00650006 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00660006 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00670006 C (UNIT NUMBER FOR CARD READER). 00680006 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00690006 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00700006 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00710006 C 00720006 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00730006 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00740006 C (UNIT NUMBER FOR PRINTER). 00750006 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00760006 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770006 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00780006 C 00790006 IVPASS=0 00800006 IVFAIL=0 00810006 IVDELE=0 00820006 ICZERO=0 00830006 C 00840006 C WRITE PAGE HEADERS 00850006 WRITE (I02,90000) 00860006 WRITE (I02,90001) 00870006 WRITE (I02,90002) 00880006 WRITE (I02, 90002) 00890006 WRITE (I02,90003) 00900006 WRITE (I02,90002) 00910006 WRITE (I02,90004) 00920006 WRITE (I02,90002) 00930006 WRITE (I02,90011) 00940006 WRITE (I02,90002) 00950006 WRITE (I02,90002) 00960006 WRITE (I02,90005) 00970006 WRITE (I02,90006) 00980006 WRITE (I02,90002) 00990006 C TEST SECTION 01000006 C 01010006 C ARITHMETIC ASSIGNMENT STATEMENT 01020006 C 01030006 C TEST 50 THROUGH TEST 61 CONTAIN STATEMENT OF FORM 01040006 C INTEGER VARIABLE = INTEGER CONSTANT 01050006 C 01060006 C TESTS 50 THROUGH 53 CONTAIN UNSIGNED INTEGER CONSTANT. 01070006 C 01080006 501 CONTINUE 01090006 IVTNUM = 50 01100006 C 01110006 C **** TEST 50 **** 01120006 C 01130006 IF (ICZERO) 30500, 500, 30500 01140006 500 CONTINUE 01150006 IVCOMP=3 01160006 GO TO 40500 01170006 30500 IVDELE = IVDELE + 1 01180006 WRITE (I02,80003) IVTNUM 01190006 IF (ICZERO) 40500, 511, 40500 01200006 40500 IF (IVCOMP - 3) 20500, 10500, 20500 01210006 10500 IVPASS = IVPASS + 1 01220006 WRITE (I02,80001) IVTNUM 01230006 GO TO 511 01240006 20500 IVFAIL = IVFAIL + 1 01250006 IVCORR = 3 01260006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01270006 511 CONTINUE 01280006 IVTNUM = 51 01290006 C 01300006 C **** TEST 51 **** 01310006 C 01320006 IF (ICZERO) 30510, 510, 30510 01330006 510 CONTINUE 01340006 IVCOMP = 76 01350006 GO TO 40510 01360006 30510 IVDELE = IVDELE + 1 01370006 WRITE (I02,80003) IVTNUM 01380006 IF (ICZERO) 40510, 521, 40510 01390006 40510 IF (IVCOMP - 76) 20510, 10510, 20510 01400006 10510 IVPASS = IVPASS + 1 01410006 WRITE (I02,80001) IVTNUM 01420006 GO TO 521 01430006 20510 IVFAIL = IVFAIL + 1 01440006 IVCORR = 76 01450006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01460006 521 CONTINUE 01470006 IVTNUM = 52 01480006 C 01490006 C **** TEST 52 **** 01500006 C 01510006 IF (ICZERO) 30520, 520, 30520 01520006 520 CONTINUE 01530006 IVCOMP = 587 01540006 GO TO 40520 01550006 30520 IVDELE = IVDELE + 1 01560006 WRITE (I02,80003) IVTNUM 01570006 IF (ICZERO) 40520, 531, 40520 01580006 40520 IF (IVCOMP - 587) 20520, 10520, 20520 01590006 10520 IVPASS = IVPASS + 1 01600006 WRITE (I02,80001) IVTNUM 01610006 GO TO 531 01620006 20520 IVFAIL = IVFAIL + 1 01630006 IVCORR = 587 01640006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01650006 531 CONTINUE 01660006 IVTNUM = 53 01670006 C 01680006 C **** TEST 53 **** 01690006 C 01700006 IF (ICZERO) 30530, 530, 30530 01710006 530 CONTINUE 01720006 IVCOMP = 9999 01730006 GO TO 40530 01740006 30530 IVDELE = IVDELE + 1 01750006 WRITE (I02,80003) IVTNUM 01760006 IF (ICZERO) 40530, 541, 40530 01770006 40530 IF (IVCOMP - 9999) 20530, 10530, 20530 01780006 10530 IVPASS = IVPASS + 1 01790006 WRITE (I02,80001) IVTNUM 01800006 GO TO 541 01810006 20530 IVFAIL = IVFAIL + 1 01820006 IVCORR = 9999 01830006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01840006 C 01850006 C TESTS 54 THROUGH 57 CONTAIN POSITIVE SIGNED INTEGERS 01860006 C 01870006 541 CONTINUE 01880006 IVTNUM = 54 01890006 C 01900006 C **** TEST 54 **** 01910006 C 01920006 IF (ICZERO) 30540, 540, 30540 01930006 540 CONTINUE 01940006 IVCOMP = +3 01950006 GO TO 40540 01960006 30540 IVDELE = IVDELE + 1 01970006 WRITE (I02,80003) IVTNUM 01980006 IF (ICZERO) 40540, 551, 40540 01990006 40540 IF (IVCOMP - 3) 20540, 10540, 20540 02000006 10540 IVPASS = IVPASS + 1 02010006 WRITE (I02,80001) IVTNUM 02020006 GO TO 551 02030006 20540 IVFAIL = IVFAIL + 1 02040006 IVCORR = 3 02050006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02060006 551 CONTINUE 02070006 IVTNUM = 55 02080006 C 02090006 C **** TEST 55 **** 02100006 C 02110006 IF (ICZERO) 30550, 550, 30550 02120006 550 CONTINUE 02130006 IVCOMP = +76 02140006 GO TO 40550 02150006 30550 IVDELE = IVDELE + 1 02160006 WRITE (I02,80003) IVTNUM 02170006 IF (ICZERO) 40550, 561, 40550 02180006 40550 IF (IVCOMP - 76) 20550, 10550, 20550 02190006 10550 IVPASS = IVPASS + 1 02200006 WRITE (I02,80001) IVTNUM 02210006 GO TO 561 02220006 20550 IVFAIL = IVFAIL + 1 02230006 IVCORR = 76 02240006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02250006 561 CONTINUE 02260006 IVTNUM = 56 02270006 C 02280006 C **** TEST 56 **** 02290006 C 02300006 IF (ICZERO) 30560, 560, 30560 02310006 560 CONTINUE 02320006 IVCOMP = +587 02330006 GO TO 40560 02340006 30560 IVDELE = IVDELE + 1 02350006 WRITE (I02,80003) IVTNUM 02360006 IF (ICZERO) 40560, 571, 40560 02370006 40560 IF (IVCOMP - 587) 20560, 10560, 20560 02380006 10560 IVPASS = IVPASS + 1 02390006 WRITE (I02,80001) IVTNUM 02400006 GO TO 571 02410006 20560 IVFAIL = IVFAIL + 1 02420006 IVCORR = 587 02430006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440006 571 CONTINUE 02450006 IVTNUM = 57 02460006 C 02470006 C **** TEST 57 **** 02480006 C 02490006 IF (ICZERO) 30570, 570, 30570 02500006 570 CONTINUE 02510006 IVCOMP = +9999 02520006 GO TO 40570 02530006 30570 IVDELE = IVDELE + 1 02540006 WRITE (I02,80003) IVTNUM 02550006 IF (ICZERO) 40570, 581, 40570 02560006 40570 IF (IVCOMP - 9999) 20570, 10570, 20570 02570006 10570 IVPASS = IVPASS + 1 02580006 WRITE (I02,80001) IVTNUM 02590006 GO TO 581 02600006 20570 IVFAIL = IVFAIL + 1 02610006 IVCORR = 9999 02620006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02630006 C 02640006 C TESTS 58 THROUGH 61 CONTAIN SIGNED NEGATIVE INTEGERS 02650006 C 02660006 581 CONTINUE 02670006 IVTNUM = 58 02680006 C 02690006 C **** TEST 58 **** 02700006 C 02710006 IF (ICZERO) 30580, 580, 30580 02720006 580 CONTINUE 02730006 IVCOMP = -3 02740006 GO TO 40580 02750006 30580 IVDELE = IVDELE + 1 02760006 WRITE (I02,80003) IVTNUM 02770006 IF (ICZERO) 40580, 591, 40580 02780006 40580 IF (IVCOMP + 3) 20580, 10580, 20580 02790006 10580 IVPASS = IVPASS + 1 02800006 WRITE (I02,80001) IVTNUM 02810006 GO TO 591 02820006 20580 IVFAIL = IVFAIL + 1 02830006 IVCORR = -3 02840006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02850006 591 CONTINUE 02860006 IVTNUM = 59 02870006 C 02880006 C **** TEST 59 **** 02890006 C 02900006 IF (ICZERO) 30590, 590, 30590 02910006 590 CONTINUE 02920006 IVCOMP = -76 02930006 GO TO 40590 02940006 30590 IVDELE = IVDELE + 1 02950006 WRITE (I02,80003) IVTNUM 02960006 IF (ICZERO) 40590, 601, 40590 02970006 40590 IF (IVCOMP + 76) 20590, 10590, 20590 02980006 10590 IVPASS = IVPASS + 1 02990006 WRITE (I02,80001) IVTNUM 03000006 GO TO 601 03010006 20590 IVFAIL = IVFAIL + 1 03020006 IVCORR = -76 03030006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03040006 601 CONTINUE 03050006 IVTNUM = 60 03060006 C 03070006 C **** TEST 60 **** 03080006 C 03090006 IF (ICZERO) 30600, 600, 30600 03100006 600 CONTINUE 03110006 IVCOMP = -587 03120006 GO TO 40600 03130006 30600 IVDELE = IVDELE + 1 03140006 WRITE (I02,80003) IVTNUM 03150006 IF (ICZERO) 40600, 611, 40600 03160006 40600 IF (IVCOMP + 587) 20600,10600,20600 03170006 10600 IVPASS = IVPASS + 1 03180006 WRITE (I02,80001) IVTNUM 03190006 GO TO 611 03200006 20600 IVFAIL = IVFAIL + 1 03210006 IVCORR = -587 03220006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03230006 611 CONTINUE 03240006 IVTNUM = 61 03250006 C 03260006 C **** TEST 61 **** 03270006 C 03280006 IF (ICZERO) 30610, 610, 30610 03290006 610 CONTINUE 03300006 IVCOMP = -9999 03310006 GO TO 40610 03320006 30610 IVDELE = IVDELE + 1 03330006 WRITE (I02,80003) IVTNUM 03340006 IF (ICZERO) 40610, 621, 40610 03350006 40610 IF (IVCOMP + 9999) 20610, 10610, 20610 03360006 10610 IVPASS = IVPASS + 1 03370006 WRITE (I02,80001) IVTNUM 03380006 GO TO 621 03390006 20610 IVFAIL = IVFAIL + 1 03400006 IVCORR = -9999 03410006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03420006 C 03430006 C TEST 62 THROUGH TEST 73 CONTAIN STATEMENT OF FORM 03440006 C INTEGER VARIABLE = INTEGER VARIABLE 03450006 C 03460006 C TESTS 62 THROUGH 65 CONTAIN UNSIGNED VALUES. 03470006 C 03480006 621 CONTINUE 03490006 IVTNUM = 62 03500006 C 03510006 C **** TEST 62 **** 03520006 C 03530006 IF (ICZERO) 30620, 620, 30620 03540006 620 CONTINUE 03550006 IVON01 = 3 03560006 IVCOMP = IVON01 03570006 GO TO 40620 03580006 30620 IVDELE = IVDELE + 1 03590006 WRITE (I02,80003) IVTNUM 03600006 IF (ICZERO) 40620, 631, 40620 03610006 40620 IF (IVCOMP - 3) 20620, 10620, 20620 03620006 10620 IVPASS = IVPASS + 1 03630006 WRITE (I02,80001) IVTNUM 03640006 GO TO 631 03650006 20620 IVFAIL = IVFAIL + 1 03660006 IVCORR = 3 03670006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03680006 631 CONTINUE 03690006 IVTNUM = 63 03700006 C 03710006 C **** TEST 63 **** 03720006 C 03730006 IF (ICZERO) 30630, 630, 30630 03740006 630 CONTINUE 03750006 IVON01 = 76 03760006 IVCOMP = IVON01 03770006 GO TO 40630 03780006 30630 IVDELE = IVDELE + 1 03790006 WRITE (I02,80003) IVTNUM 03800006 IF (ICZERO) 40630, 641, 40630 03810006 40630 IF (IVCOMP - 76) 20630, 10630, 20630 03820006 10630 IVPASS = IVPASS + 1 03830006 WRITE (I02,80001) IVTNUM 03840006 GO TO 641 03850006 20630 IVFAIL = IVFAIL + 1 03860006 IVCORR = 76 03870006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03880006 641 CONTINUE 03890006 IVTNUM = 64 03900006 C 03910006 C **** TEST 64 **** 03920006 C 03930006 IF (ICZERO) 30640, 640, 30640 03940006 640 CONTINUE 03950006 IVON01 = 587 03960006 IVCOMP = IVON01 03970006 GO TO 40640 03980006 30640 IVDELE = IVDELE + 1 03990006 WRITE (I02,80003) IVTNUM 04000006 IF (ICZERO) 40640, 651, 40640 04010006 40640 IF (IVCOMP - 587) 20640, 10640, 20640 04020006 10640 IVPASS = IVPASS + 1 04030006 WRITE (I02,80001) IVTNUM 04040006 GO TO 651 04050006 20640 IVFAIL = IVFAIL + 1 04060006 IVCORR = 587 04070006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04080006 651 CONTINUE 04090006 IVTNUM = 65 04100006 C 04110006 C **** TEST 65 **** 04120006 C 04130006 IF (ICZERO) 30650, 650, 30650 04140006 650 CONTINUE 04150006 IVON01 = 9999 04160006 IVCOMP = IVON01 04170006 GO TO 40650 04180006 30650 IVDELE = IVDELE + 1 04190006 WRITE (I02,80003) IVTNUM 04200006 IF (ICZERO) 40650, 661, 40650 04210006 40650 IF (IVCOMP - 9999) 20650, 10650, 20650 04220006 10650 IVPASS = IVPASS + 1 04230006 WRITE (I02,80001) IVTNUM 04240006 GO TO 661 04250006 20650 IVFAIL = IVFAIL + 1 04260006 IVCORR = 9999 04270006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04280006 C 04290006 C TESTS 66 THROUGH 69 CONTAIN POSITIVE VALUES. 04300006 C 04310006 661 CONTINUE 04320006 IVTNUM = 66 04330006 C 04340006 C **** TEST 66 **** 04350006 C 04360006 IF (ICZERO) 30660, 660, 30660 04370006 660 CONTINUE 04380006 IVON01 = +3 04390006 IVCOMP = IVON01 04400006 GO TO 40660 04410006 30660 IVDELE = IVDELE + 1 04420006 WRITE (I02,80003) IVTNUM 04430006 IF (ICZERO) 40660, 671, 40660 04440006 40660 IF (IVCOMP - 3) 20660,10660,20660 04450006 10660 IVPASS = IVPASS + 1 04460006 WRITE (I02,80001) IVTNUM 04470006 GO TO 671 04480006 20660 IVFAIL = IVFAIL + 1 04490006 IVCORR = 3 04500006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04510006 671 CONTINUE 04520006 IVTNUM = 67 04530006 C 04540006 C **** TEST 67 **** 04550006 C 04560006 IF (ICZERO) 30670, 670, 30670 04570006 670 CONTINUE 04580006 IVON01 = +76 04590006 IVCOMP = IVON01 04600006 GO TO 40670 04610006 30670 IVDELE = IVDELE + 1 04620006 WRITE (I02,80003) IVTNUM 04630006 IF (ICZERO) 40670, 681, 40670 04640006 40670 IF (IVCOMP - 76) 20670, 10670, 20670 04650006 10670 IVPASS = IVPASS + 1 04660006 WRITE (I02,80001) IVTNUM 04670006 GO TO 681 04680006 20670 IVFAIL = IVFAIL + 1 04690006 IVCORR = 76 04700006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04710006 681 CONTINUE 04720006 IVTNUM = 68 04730006 C 04740006 C **** TEST 68 **** 04750006 C 04760006 IF (ICZERO) 30680, 680, 30680 04770006 680 CONTINUE 04780006 IVON01 = +587 04790006 IVCOMP = IVON01 04800006 GO TO 40680 04810006 30680 IVDELE = IVDELE + 1 04820006 WRITE (I02,80003) IVTNUM 04830006 IF (ICZERO) 40680, 691, 40680 04840006 40680 IF (IVCOMP - 587) 20680, 10680, 20680 04850006 10680 IVPASS = IVPASS + 1 04860006 WRITE (I02,80001) IVTNUM 04870006 GO TO 691 04880006 20680 IVFAIL = IVFAIL + 1 04890006 IVCORR = 587 04900006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04910006 691 CONTINUE 04920006 IVTNUM = 69 04930006 C 04940006 C **** TEST 69 **** 04950006 C 04960006 IF (ICZERO) 30690, 690, 30690 04970006 690 CONTINUE 04980006 IVON01 = +9999 04990006 IVCOMP = IVON01 05000006 GO TO 40690 05010006 30690 IVDELE = IVDELE + 1 05020006 WRITE (I02,80003) IVTNUM 05030006 IF (ICZERO) 40690, 701, 40690 05040006 40690 IF (IVCOMP - 9999) 20690, 10690, 20690 05050006 10690 IVPASS = IVPASS + 1 05060006 WRITE (I02,80001) IVTNUM 05070006 GO TO 701 05080006 20690 IVFAIL = IVFAIL + 1 05090006 IVCORR = 9999 05100006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05110006 C 05120006 C TESTS 70 THROUGH 73 CONTAIN NEGATIVE VALUES. 05130006 C 05140006 701 CONTINUE 05150006 IVTNUM = 70 05160006 C 05170006 C **** TEST 70 **** 05180006 C 05190006 IF (ICZERO) 30700, 700, 30700 05200006 700 CONTINUE 05210006 IVON01 = -3 05220006 IVCOMP = IVON01 05230006 GO TO 40700 05240006 30700 IVDELE = IVDELE + 1 05250006 WRITE (I02,80003) IVTNUM 05260006 IF (ICZERO) 40700, 711, 40700 05270006 40700 IF (IVCOMP + 3) 20700, 10700, 20700 05280006 10700 IVPASS = IVPASS + 1 05290006 WRITE (I02,80001) IVTNUM 05300006 GO TO 711 05310006 20700 IVFAIL = IVFAIL + 1 05320006 IVCORR = -3 05330006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05340006 711 CONTINUE 05350006 IVTNUM = 71 05360006 C 05370006 C **** TEST 71 **** 05380006 C 05390006 IF (ICZERO) 30710, 710, 30710 05400006 710 CONTINUE 05410006 IVON01 = -76 05420006 IVCOMP = IVON01 05430006 GO TO 40710 05440006 30710 IVDELE = IVDELE + 1 05450006 WRITE (I02,80003) IVTNUM 05460006 IF (ICZERO) 40710, 721, 40710 05470006 40710 IF (IVCOMP + 76) 20710, 10710, 20710 05480006 10710 IVPASS = IVPASS + 1 05490006 WRITE (I02,80001) IVTNUM 05500006 GO TO 721 05510006 20710 IVFAIL = IVFAIL + 1 05520006 IVCORR = -76 05530006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05540006 721 CONTINUE 05550006 IVTNUM = 72 05560006 C 05570006 C **** TEST 72 **** 05580006 C 05590006 IF (ICZERO) 30720, 720, 30720 05600006 720 CONTINUE 05610006 IVON01 = -587 05620006 IVCOMP = IVON01 05630006 GO TO 40720 05640006 30720 IVDELE = IVDELE + 1 05650006 WRITE (I02,80003) IVTNUM 05660006 IF (ICZERO) 40720, 731, 40720 05670006 40720 IF (IVCOMP + 587) 20720, 10720, 20720 05680006 10720 IVPASS = IVPASS + 1 05690006 WRITE (I02,80001) IVTNUM 05700006 GO TO 731 05710006 20720 IVFAIL = IVFAIL + 1 05720006 IVCORR = -587 05730006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05740006 731 CONTINUE 05750006 IVTNUM = 73 05760006 C 05770006 C **** TEST 73 **** 05780006 C 05790006 IF (ICZERO) 30730, 730, 30730 05800006 730 CONTINUE 05810006 IVON01 = -9999 05820006 IVCOMP = IVON01 05830006 GO TO 40730 05840006 30730 IVDELE = IVDELE + 1 05850006 WRITE (I02,80003) IVTNUM 05860006 IF (ICZERO) 40730, 741, 40730 05870006 40730 IF (IVCOMP + 9999) 20730, 10730, 20730 05880006 10730 IVPASS = IVPASS + 1 05890006 WRITE (I02,80001) IVTNUM 05900006 GO TO 741 05910006 20730 IVFAIL = IVFAIL + 1 05920006 IVCORR = -9999 05930006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05940006 C 05950006 C TESTS 74 THROUGH 79 CHECK THAT AT LEAST 16 BITS ARE USED IN THE 05960006 C INTERNAL REPRESENTATION OF AN INTEGER DATUM. THIS INCLUDES ONE 05970006 C BIT FOR THE SIGN. THE LARGEST INTEGER USED IS 32767 =2**15 - 1, 05980006 C AND THE SMALLEST INTEGER USED IS -32766. 05990006 C 06000006 741 CONTINUE 06010006 IVTNUM = 74 06020006 C 06030006 C **** TEST 74 **** 06040006 C UNSIGNED CONSTANT 32767 06050006 C 06060006 IF (ICZERO) 30740, 740, 30740 06070006 740 CONTINUE 06080006 IVCOMP = 32767 06090006 GO TO 40740 06100006 30740 IVDELE = IVDELE + 1 06110006 WRITE (I02,80003) IVTNUM 06120006 IF (ICZERO) 40740, 751, 40740 06130006 40740 IF (IVCOMP - 32767) 20740, 10740, 20740 06140006 10740 IVPASS = IVPASS + 1 06150006 WRITE (I02,80001) IVTNUM 06160006 GO TO 751 06170006 20740 IVFAIL = IVFAIL + 1 06180006 IVCORR = 32767 06190006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06200006 751 CONTINUE 06210006 IVTNUM = 75 06220006 C 06230006 C **** TEST 75 **** 06240006 C SIGNED POSITIVE CONSTANT +32767 06250006 C 06260006 IF (ICZERO) 30750, 750, 30750 06270006 750 CONTINUE 06280006 IVCOMP = +32767 06290006 GO TO 40750 06300006 30750 IVDELE = IVDELE + 1 06310006 WRITE (I02,80003) IVTNUM 06320006 IF (ICZERO) 40750, 761, 40750 06330006 40750 IF (IVCOMP - 32767) 20750, 10750, 20750 06340006 10750 IVPASS = IVPASS + 1 06350006 WRITE (I02,80001) IVTNUM 06360006 GO TO 761 06370006 20750 IVFAIL = IVFAIL + 1 06380006 IVCORR = 32767 06390006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06400006 761 CONTINUE 06410006 IVTNUM = 76 06420006 C 06430006 C **** TEST 76 **** 06440006 C SIGNED NEGATIVE CONSTANT -32766 06450006 C 06460006 IF (ICZERO) 30760, 760, 30760 06470006 760 CONTINUE 06480006 IVCOMP = - 32766 06490006 GO TO 40760 06500006 30760 IVDELE = IVDELE + 1 06510006 WRITE (I02,80003) IVTNUM 06520006 IF (ICZERO) 40760, 771, 40760 06530006 40760 IF (IVCOMP + 32766) 20760, 10760, 20760 06540006 10760 IVPASS = IVPASS + 1 06550006 WRITE (I02,80001) IVTNUM 06560006 GO TO 771 06570006 20760 IVFAIL = IVFAIL + 1 06580006 IVCORR = -32766 06590006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06600006 771 CONTINUE 06610006 IVTNUM = 77 06620006 C 06630006 C **** TEST 77 **** 06640006 C 06650006 IF (ICZERO) 30770, 770, 30770 06660006 770 CONTINUE 06670006 IVON01 = 32767 06680006 IVCOMP = IVON01 06690006 GO TO 40770 06700006 30770 IVDELE = IVDELE + 1 06710006 WRITE (I02,80003) IVTNUM 06720006 IF (ICZERO) 40770, 781, 40770 06730006 40770 IF (IVCOMP - 32767) 20770, 10770, 20770 06740006 10770 IVPASS = IVPASS + 1 06750006 WRITE (I02,80001) IVTNUM 06760006 GO TO 781 06770006 20770 IVFAIL = IVFAIL + 1 06780006 IVCORR = 32767 06790006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06800006 781 CONTINUE 06810006 IVTNUM = 78 06820006 C 06830006 C **** TEST 78 **** 06840006 C 06850006 IF (ICZERO) 30780, 780, 30780 06860006 780 CONTINUE 06870006 IVON01 = +32767 06880006 IVCOMP = IVON01 06890006 GO TO 40780 06900006 30780 IVDELE = IVDELE + 1 06910006 WRITE (I02,80003) IVTNUM 06920006 IF (ICZERO) 40780, 791, 40780 06930006 40780 IF (IVCOMP - 32767) 20780, 10780, 20780 06940006 10780 IVPASS = IVPASS + 1 06950006 WRITE (I02,80001) IVTNUM 06960006 GO TO 791 06970006 20780 IVFAIL = IVFAIL + 1 06980006 IVCORR = 32767 06990006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07000006 791 CONTINUE 07010006 IVTNUM = 79 07020006 C 07030006 C **** TEST 79 **** 07040006 C 07050006 IF (ICZERO) 30790, 790, 30790 07060006 790 CONTINUE 07070006 IVON01 = -32766 07080006 IVCOMP=IVON01 07090006 GO TO 40790 07100006 30790 IVDELE = IVDELE + 1 07110006 WRITE (I02,80003) IVTNUM 07120006 IF (ICZERO) 40790, 801, 40790 07130006 40790 IF (IVCOMP + 32766) 20790, 10790, 20790 07140006 10790 IVPASS = IVPASS + 1 07150006 WRITE (I02,80001) IVTNUM 07160006 GO TO 801 07170006 20790 IVFAIL = IVFAIL + 1 07180006 IVCORR = -32766 07190006 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07200006 801 CONTINUE 07210006 C 07220006 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07230006 99999 CONTINUE 07240006 WRITE (I02,90002) 07250006 WRITE (I02,90006) 07260006 WRITE (I02,90002) 07270006 WRITE (I02,90002) 07280006 WRITE (I02,90007) 07290006 WRITE (I02,90002) 07300006 WRITE (I02,90008) IVFAIL 07310006 WRITE (I02,90009) IVPASS 07320006 WRITE (I02,90010) IVDELE 07330006 C 07340006 C 07350006 C TERMINATE ROUTINE EXECUTION 07360006 STOP 07370006 C 07380006 C FORMAT STATEMENTS FOR PAGE HEADERS 07390006 90000 FORMAT ("1") 07400006 90002 FORMAT (" ") 07410006 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07420006 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07430006 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07440006 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07450006 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07460006 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07470006 C 07480006 C FORMAT STATEMENTS FOR RUN SUMMARIES 07490006 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07500006 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07510006 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07520006 C 07530006 C FORMAT STATEMENTS FOR TEST RESULTS 07540006 80001 FORMAT (" ",4X,I5,7X,"PASS") 07550006 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07560006 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07570006 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07580006 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07590006 C 07600006 90007 FORMAT (" ",20X,"END OF PROGRAM FM006" ) 07610006 END 07620006