blob: 5d17a53a3fcac91c38b541c2d192cc1372286566 [file] [log] [blame]
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