PROGRAM FM042 C COMMENT SECTION 00010042 C 00020042 C FM042 00030042 C 00040042 C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE 00050042 C FORM INTEGER VARIABLE = PRIMARY ** PRIMARY 00060042 C WHERE THE FIRST OF TWO PRIMARIES IS AN INTEGER VARIABLE OR AN 00070042 C INTEGER CONSTANT AND THE SECOND PRIMARY IS AN INTEGER VARIABLE. 00080042 C 00090042 C REFERENCES 00100042 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110042 C X3.9-1978 00120042 C 00130042 C SECTION 4.3, INTEGER TYPE 00140042 C SECTION 4.3.1, INTEGER CONSTANT 00150042 C SECTION 6.1, ARITHMETIC EXPRESSIONS 00160042 C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00170042 C 00180042 C 00190042 C ********************************************************** 00200042 C 00210042 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00220042 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00230042 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00240042 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00250042 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00260042 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00270042 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00280042 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00290042 C OF EXECUTING THESE TESTS. 00300042 C 00310042 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00320042 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00330042 C 00340042 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00350042 C 00360042 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00370042 C SOFTWARE STANDARDS VALIDATION GROUP 00380042 C BUILDING 225 RM A266 00390042 C GAITHERSBURG, MD 20899 00400042 C ********************************************************** 00410042 C 00420042 C 00430042 C 00440042 C INITIALIZATION SECTION 00450042 C 00460042 C INITIALIZE CONSTANTS 00470042 C ************** 00480042 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00490042 I01 = 5 00500042 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00510042 I02 = 6 00520042 C SYSTEM ENVIRONMENT SECTION 00530042 C 00540042 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00550042 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00560042 C (UNIT NUMBER FOR CARD READER). 00570042 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00580042 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00590042 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00600042 C 00610042 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00620042 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00630042 C (UNIT NUMBER FOR PRINTER). 00640042 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00650042 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00660042 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00670042 C 00680042 IVPASS=0 00690042 IVFAIL=0 00700042 IVDELE=0 00710042 ICZERO=0 00720042 C 00730042 C WRITE PAGE HEADERS 00740042 WRITE (I02,90000) 00750042 WRITE (I02,90001) 00760042 WRITE (I02,90002) 00770042 WRITE (I02, 90002) 00780042 WRITE (I02,90003) 00790042 WRITE (I02,90002) 00800042 WRITE (I02,90004) 00810042 WRITE (I02,90002) 00820042 WRITE (I02,90011) 00830042 WRITE (I02,90002) 00840042 WRITE (I02,90002) 00850042 WRITE (I02,90005) 00860042 WRITE (I02,90006) 00870042 WRITE (I02,90002) 00880042 C 00890042 C TEST SECTION 00900042 C 00910042 C ARITHMETIC ASSIGNMENT STATEMENT 00920042 C 00930042 C TEST 649 THROUGH TEST 665 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00940042 C OF THE FORM INTEGER VARIABLE = INTEGER CONST. ** INTEGER VAR. 00950042 C 00960042 C TEST 666 THROUGH TEST 682 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00970042 C OF THE FORM INTEGER VARIABLE = INTEGER VAR. ** INTEGER VAR. 00980042 C 00990042 C 01000042 IVTNUM = 649 01010042 C 01020042 C **** TEST 649 **** 01030042 C TEST 649 - SMALL NUMBER BASE; ZERO EXPONENT 01040042 C 01050042 IF (ICZERO) 36490, 6490, 36490 01060042 6490 CONTINUE 01070042 IVON01 = 0 01080042 IVCOMP = 1 ** IVON01 01090042 GO TO 46490 01100042 36490 IVDELE = IVDELE + 1 01110042 WRITE (I02,80003) IVTNUM 01120042 IF (ICZERO) 46490, 6501, 46490 01130042 46490 IF (IVCOMP - 1) 26490,16490,26490 01140042 16490 IVPASS = IVPASS + 1 01150042 WRITE (I02,80001) IVTNUM 01160042 GO TO 6501 01170042 26490 IVFAIL = IVFAIL + 1 01180042 IVCORR = 1 01190042 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01200042 6501 CONTINUE 01210042 IVTNUM = 650 01220042 C 01230042 C **** TEST 650 **** 01240042 C TEST 650 - ZERO BASE TO FIRST POWER 01250042 C 01260042 IF (ICZERO) 36500, 6500, 36500 01270042 6500 CONTINUE 01280042 IVON01 = 1 01290042 IVCOMP = 0 ** IVON01 01300042 GO TO 46500 01310042 36500 IVDELE = IVDELE + 1 01320042 WRITE (I02,80003) IVTNUM 01330042 IF (ICZERO) 46500, 6511, 46500 01340042 46500 IF (IVCOMP) 26500,16500,26500 01350042 16500 IVPASS = IVPASS + 1 01360042 WRITE (I02,80001) IVTNUM 01370042 GO TO 6511 01380042 26500 IVFAIL = IVFAIL + 1 01390042 IVCORR = 0 01400042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01410042 6511 CONTINUE 01420042 IVTNUM = 651 01430042 C 01440042 C **** TEST 651 **** 01450042 C TEST 651 - BASE =1; EXPONENT = 1 01460042 C 01470042 IF (ICZERO) 36510, 6510, 36510 01480042 6510 CONTINUE 01490042 IVON01 = 1 01500042 IVCOMP = 1 ** IVON01 01510042 GO TO 46510 01520042 36510 IVDELE = IVDELE + 1 01530042 WRITE (I02,80003) IVTNUM 01540042 IF (ICZERO) 46510, 6521, 46510 01550042 46510 IF (IVCOMP - 1) 26510,16510,26510 01560042 16510 IVPASS = IVPASS + 1 01570042 WRITE (I02,80001) IVTNUM 01580042 GO TO 6521 01590042 26510 IVFAIL = IVFAIL + 1 01600042 IVCORR = 1 01610042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01620042 6521 CONTINUE 01630042 IVTNUM = 652 01640042 C 01650042 C **** TEST 652 **** 01660042 C TEST 652 - LARGE EXPONENT 01670042 C 01680042 IF (ICZERO) 36520, 6520, 36520 01690042 6520 CONTINUE 01700042 IVON01 = 32767 01710042 IVCOMP = 1 ** IVON01 01720042 GO TO 46520 01730042 36520 IVDELE = IVDELE + 1 01740042 WRITE (I02,80003) IVTNUM 01750042 IF (ICZERO) 46520, 6531, 46520 01760042 46520 IF (IVCOMP - 1) 26520,16520,26520 01770042 16520 IVPASS = IVPASS + 1 01780042 WRITE (I02,80001) IVTNUM 01790042 GO TO 6531 01800042 26520 IVFAIL = IVFAIL + 1 01810042 IVCORR = 1 01820042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01830042 6531 CONTINUE 01840042 IVTNUM = 653 01850042 C 01860042 C **** TEST 653 **** 01870042 C TEST 653 - LARGE NUMBER BASE; EXPONENT = 1 01880042 C 01890042 IF (ICZERO) 36530, 6530, 36530 01900042 6530 CONTINUE 01910042 IVON01 = 1 01920042 IVCOMP = 32767 ** IVON01 01930042 GO TO 46530 01940042 36530 IVDELE = IVDELE + 1 01950042 WRITE (I02,80003) IVTNUM 01960042 IF (ICZERO) 46530, 6541, 46530 01970042 46530 IF (IVCOMP - 32767) 26530,16530,26530 01980042 16530 IVPASS = IVPASS + 1 01990042 WRITE (I02,80001) IVTNUM 02000042 GO TO 6541 02010042 26530 IVFAIL = IVFAIL + 1 02020042 IVCORR = 32767 02030042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02040042 6541 CONTINUE 02050042 IVTNUM = 654 02060042 C 02070042 C **** TEST 654 **** 02080042 C TEST 654 - ZERO BASE; LARGE NUMBER EXPONENT 02090042 C 02100042 IF (ICZERO) 36540, 6540, 36540 02110042 6540 CONTINUE 02120042 IVON01 = 32767 02130042 IVCOMP = 0 ** IVON01 02140042 GO TO 46540 02150042 36540 IVDELE = IVDELE + 1 02160042 WRITE (I02,80003) IVTNUM 02170042 IF (ICZERO) 46540, 6551, 46540 02180042 46540 IF (IVCOMP) 26540,16540,26540 02190042 16540 IVPASS = IVPASS + 1 02200042 WRITE (I02,80001) IVTNUM 02210042 GO TO 6551 02220042 26540 IVFAIL = IVFAIL + 1 02230042 IVCORR = 0 02240042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02250042 6551 CONTINUE 02260042 IVTNUM = 655 02270042 C 02280042 C **** TEST 655 **** 02290042 C TEST 655 -LARGE NUMBER BASE; ZERO EXPONENT 02300042 C 02310042 IF (ICZERO) 36550, 6550, 36550 02320042 6550 CONTINUE 02330042 IVON01 = 0 02340042 IVCOMP = 32767 ** IVON01 02350042 GO TO 46550 02360042 36550 IVDELE = IVDELE + 1 02370042 WRITE (I02,80003) IVTNUM 02380042 IF (ICZERO) 46550, 6561, 46550 02390042 46550 IF (IVCOMP -1) 26550,16550,26550 02400042 16550 IVPASS = IVPASS + 1 02410042 WRITE (I02,80001) IVTNUM 02420042 GO TO 6561 02430042 26550 IVFAIL = IVFAIL + 1 02440042 IVCORR = 1 02450042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02460042 6561 CONTINUE 02470042 IVTNUM = 656 02480042 C 02490042 C **** TEST 656 **** 02500042 C TEST 656 -EXPONENT IS POWER OF TWO 02510042 C 02520042 IF (ICZERO) 36560, 6560, 36560 02530042 6560 CONTINUE 02540042 IVON01 = 2 02550042 IVCOMP = 181 ** IVON01 02560042 GO TO 46560 02570042 36560 IVDELE = IVDELE + 1 02580042 WRITE (I02,80003) IVTNUM 02590042 IF (ICZERO) 46560, 6571, 46560 02600042 46560 IF (IVCOMP - 32761) 26560,16560,26560 02610042 16560 IVPASS = IVPASS + 1 02620042 WRITE (I02,80001) IVTNUM 02630042 GO TO 6571 02640042 26560 IVFAIL = IVFAIL + 1 02650042 IVCORR = 32761 02660042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02670042 6571 CONTINUE 02680042 IVTNUM = 657 02690042 C 02700042 C **** TEST 657 **** 02710042 C TEST 657 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 02720042 C 02730042 IF (ICZERO) 36570, 6570, 36570 02740042 6570 CONTINUE 02750042 IVON01 = 8 02760042 IVCOMP = 2 ** IVON01 02770042 GO TO 46570 02780042 36570 IVDELE = IVDELE + 1 02790042 WRITE (I02,80003) IVTNUM 02800042 IF (ICZERO) 46570, 6581, 46570 02810042 46570 IF (IVCOMP - 256) 26570,16570,26560 02820042 16570 IVPASS = IVPASS + 1 02830042 WRITE (I02,80001) IVTNUM 02840042 GO TO 6581 02850042 26570 IVFAIL = IVFAIL + 1 02860042 IVCORR = 256 02870042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02880042 6581 CONTINUE 02890042 C 02900042 C TESTS 658 AND 659 TEST TO ENSURE EXPONENTIATION OPERATOR IS 02910042 C NOT COMMUTATIVE 02920042 C 02930042 IVTNUM = 658 02940042 C 02950042 C **** TEST 658 **** 02960042 C 02970042 IF (ICZERO) 36580, 6580, 36580 02980042 6580 CONTINUE 02990042 IVON01 = 9 03000042 IVCOMP = 3 ** IVON01 03010042 GO TO 46580 03020042 36580 IVDELE = IVDELE + 1 03030042 WRITE (I02,80003) IVTNUM 03040042 IF (ICZERO) 46580, 6591, 46580 03050042 46580 IF (IVCOMP - 19683) 26580,16580,26580 03060042 16580 IVPASS = IVPASS + 1 03070042 WRITE (I02,80001) IVTNUM 03080042 GO TO 6591 03090042 26580 IVFAIL = IVFAIL + 1 03100042 IVCORR = 19683 03110042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03120042 6591 CONTINUE 03130042 IVTNUM = 659 03140042 C 03150042 C **** TEST 659 **** 03160042 C 03170042 IF (ICZERO) 36590, 6590, 36590 03180042 6590 CONTINUE 03190042 IVON01 = 3 03200042 IVCOMP = 9 ** IVON01 03210042 GO TO 46590 03220042 36590 IVDELE = IVDELE + 1 03230042 WRITE (I02,80003) IVTNUM 03240042 IF (ICZERO) 46590, 6601, 46590 03250042 46590 IF (IVCOMP - 729) 26590,16590,26590 03260042 16590 IVPASS = IVPASS + 1 03270042 WRITE (I02,80001) IVTNUM 03280042 GO TO 6601 03290042 26590 IVFAIL = IVFAIL + 1 03300042 IVCORR = 729 03310042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03320042 6601 CONTINUE 03330042 C 03340042 C TESTS 660 THROUGH 665 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE03350042 C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN03360042 C OF THE RESULTS 03370042 C 03380042 IVTNUM = 660 03390042 C 03400042 C **** TEST 660 **** 03410042 C 03420042 IF (ICZERO) 36600, 6600, 36600 03430042 6600 CONTINUE 03440042 IVON01 = 2 03450042 IVCOMP = 1 ** IVON01 03460042 GO TO 46600 03470042 36600 IVDELE = IVDELE + 1 03480042 WRITE (I02,80003) IVTNUM 03490042 IF (ICZERO) 46600, 6611, 46600 03500042 46600 IF (IVCOMP - 1) 26600,16600,26600 03510042 16600 IVPASS = IVPASS + 1 03520042 WRITE (I02,80001) IVTNUM 03530042 GO TO 6611 03540042 26600 IVFAIL = IVFAIL + 1 03550042 IVCORR = 1 03560042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03570042 6611 CONTINUE 03580042 IVTNUM = 661 03590042 C 03600042 C **** TEST 661 **** 03610042 C 03620042 IF (ICZERO) 36610, 6610, 36610 03630042 6610 CONTINUE 03640042 IVON01 = 2 03650042 IVCOMP = ( -1) ** IVON01 03660042 GO TO 46610 03670042 36610 IVDELE = IVDELE + 1 03680042 WRITE (I02,80003) IVTNUM 03690042 IF (ICZERO) 46610, 6621, 46610 03700042 46610 IF (IVCOMP - 1) 26610,16610,26610 03710042 16610 IVPASS = IVPASS + 1 03720042 WRITE (I02,80001) IVTNUM 03730042 GO TO 6621 03740042 26610 IVFAIL = IVFAIL + 1 03750042 IVCORR = 1 03760042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03770042 6621 CONTINUE 03780042 IVTNUM = 662 03790042 C 03800042 C **** TEST 662 **** 03810042 C 03820042 IF (ICZERO) 36620, 6620, 36620 03830042 6620 CONTINUE 03840042 IVON01 = 3 03850042 IVCOMP = 7 ** IVON01 03860042 GO TO 46620 03870042 36620 IVDELE = IVDELE + 1 03880042 WRITE (I02,80003) IVTNUM 03890042 IF (ICZERO) 46620, 6631, 46620 03900042 46620 IF (IVCOMP - 343) 26620,16620,26620 03910042 16620 IVPASS = IVPASS + 1 03920042 WRITE (I02,80001) IVTNUM 03930042 GO TO 6631 03940042 26620 IVFAIL = IVFAIL + 1 03950042 IVCORR = 343 03960042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03970042 6631 CONTINUE 03980042 IVTNUM = 663 03990042 C 04000042 C **** TEST 663 **** 04010042 C 04020042 IF (ICZERO) 36630, 6630, 36630 04030042 6630 CONTINUE 04040042 IVON01 = 3 04050042 IVCOMP = (-7) **IVON01 04060042 GO TO 46630 04070042 36630 IVDELE = IVDELE + 1 04080042 WRITE (I02,80003) IVTNUM 04090042 IF (ICZERO) 46630, 6641, 46630 04100042 46630 IF (IVCOMP + 343) 26630,16630,26630 04110042 16630 IVPASS = IVPASS + 1 04120042 WRITE (I02,80001) IVTNUM 04130042 GO TO 6641 04140042 26630 IVFAIL = IVFAIL + 1 04150042 IVCORR = -343 04160042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04170042 6641 CONTINUE 04180042 IVTNUM = 664 04190042 C 04200042 C **** TEST 664 **** 04210042 C 04220042 IF (ICZERO) 36640, 6640, 36640 04230042 6640 CONTINUE 04240042 IVON01 = 4 04250042 IVCOMP = 7 ** IVON01 04260042 GO TO 46640 04270042 36640 IVDELE = IVDELE + 1 04280042 WRITE (I02,80003) IVTNUM 04290042 IF (ICZERO) 46640, 6651, 46640 04300042 46640 IF (IVCOMP - 2401) 26640,16640,26640 04310042 16640 IVPASS = IVPASS + 1 04320042 WRITE (I02,80001) IVTNUM 04330042 GO TO 6651 04340042 26640 IVFAIL = IVFAIL + 1 04350042 IVCORR = 2401 04360042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04370042 6651 CONTINUE 04380042 IVTNUM = 665 04390042 C 04400042 C **** TEST 665 **** 04410042 C 04420042 IF (ICZERO) 36650, 6650, 36650 04430042 6650 CONTINUE 04440042 IVON01 = 4 04450042 IVCOMP = (-7) ** IVON01 04460042 GO TO 46650 04470042 36650 IVDELE = IVDELE + 1 04480042 WRITE (I02,80003) IVTNUM 04490042 IF (ICZERO) 46650, 6661, 46650 04500042 46650 IF (IVCOMP - 2401) 26650,16650,26650 04510042 16650 IVPASS = IVPASS + 1 04520042 WRITE (I02,80001) IVTNUM 04530042 GO TO 6661 04540042 26650 IVFAIL = IVFAIL + 1 04550042 IVCORR = 2401 04560042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04570042 6661 CONTINUE 04580042 IVTNUM = 666 04590042 C 04600042 C **** TEST 666 **** 04610042 C TEST 666 - SMALL NUMBER BASE; ZERO EXPONENT 04620042 C 04630042 IF (ICZERO) 36660, 6660, 36660 04640042 6660 CONTINUE 04650042 IVON01 = 1 04660042 IVON02 = 0 04670042 IVCOMP = IVON01 ** IVON02 04680042 GO TO 46660 04690042 36660 IVDELE = IVDELE + 1 04700042 WRITE (I02,80003) IVTNUM 04710042 IF (ICZERO) 46660, 6671, 46660 04720042 46660 IF (IVCOMP - 1) 26660,16660,26660 04730042 16660 IVPASS = IVPASS + 1 04740042 WRITE (I02,80001) IVTNUM 04750042 GO TO 6671 04760042 26660 IVFAIL = IVFAIL + 1 04770042 IVCORR = 1 04780042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04790042 6671 CONTINUE 04800042 IVTNUM = 667 04810042 C 04820042 C **** TEST 667 **** 04830042 C TEST 667 - ZERO BASE TO FIRST POWER 04840042 C 04850042 IF (ICZERO) 36670, 6670, 36670 04860042 6670 CONTINUE 04870042 IVON01 = 0 04880042 IVON02 = 1 04890042 IVCOMP = IVON01 ** IVON02 04900042 GO TO 46670 04910042 36670 IVDELE = IVDELE + 1 04920042 WRITE (I02,80003) IVTNUM 04930042 IF (ICZERO) 46670, 6681, 46670 04940042 46670 IF (IVCOMP) 26670,16670,26670 04950042 16670 IVPASS = IVPASS + 1 04960042 WRITE (I02,80001) IVTNUM 04970042 GO TO 6681 04980042 26670 IVFAIL = IVFAIL + 1 04990042 IVCORR = 0 05000042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05010042 6681 CONTINUE 05020042 IVTNUM = 668 05030042 C 05040042 C **** TEST 668 **** 05050042 C TEST 668 - BASE =1; EXPONENT = 1 05060042 C 05070042 IF (ICZERO) 36680, 6680, 36680 05080042 6680 CONTINUE 05090042 IVON01 = 1 05100042 IVON02 = 1 05110042 IVCOMP = IVON01 ** IVON02 05120042 GO TO 46680 05130042 36680 IVDELE = IVDELE + 1 05140042 WRITE (I02,80003) IVTNUM 05150042 IF (ICZERO) 46680, 6691, 46680 05160042 46680 IF (IVCOMP - 1) 26680,16680,26680 05170042 16680 IVPASS = IVPASS + 1 05180042 WRITE (I02,80001) IVTNUM 05190042 GO TO 6691 05200042 26680 IVFAIL = IVFAIL + 1 05210042 IVCORR = 1 05220042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05230042 6691 CONTINUE 05240042 IVTNUM = 669 05250042 C 05260042 C **** TEST 669 **** 05270042 C TEST 669 - LARGE EXPONENT 05280042 C 05290042 IF (ICZERO) 36690, 6690, 36690 05300042 6690 CONTINUE 05310042 IVON01 = 1 05320042 IVON02 = 32767 05330042 IVCOMP = IVON01 ** IVON02 05340042 GO TO 46690 05350042 36690 IVDELE = IVDELE + 1 05360042 WRITE (I02,80003) IVTNUM 05370042 IF (ICZERO) 46690, 6701, 46690 05380042 46690 IF (IVCOMP - 1) 26690,16690,26690 05390042 16690 IVPASS = IVPASS + 1 05400042 WRITE (I02,80001) IVTNUM 05410042 GO TO 6701 05420042 26690 IVFAIL = IVFAIL + 1 05430042 IVCORR = 1 05440042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05450042 6701 CONTINUE 05460042 IVTNUM = 670 05470042 C 05480042 C **** TEST 670 **** 05490042 C TEST 670 - LARGE NUMBER BASE; EXPONENT = 1 05500042 C 05510042 IF (ICZERO) 36700, 6700, 36700 05520042 6700 CONTINUE 05530042 IVON01 = 32767 05540042 IVON02 = 1 05550042 IVCOMP = IVON01 ** IVON02 05560042 GO TO 46700 05570042 36700 IVDELE = IVDELE + 1 05580042 WRITE (I02,80003) IVTNUM 05590042 IF (ICZERO) 46700, 6711, 46700 05600042 46700 IF (IVCOMP - 32767) 26700,16700,26700 05610042 16700 IVPASS = IVPASS + 1 05620042 WRITE (I02,80001) IVTNUM 05630042 GO TO 6711 05640042 26700 IVFAIL = IVFAIL + 1 05650042 IVCORR = 32767 05660042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05670042 6711 CONTINUE 05680042 IVTNUM = 671 05690042 C 05700042 C **** TEST 671 **** 05710042 C TEST 671 - ZERO BASE; LARGE NUMBER EXPONENT 05720042 C 05730042 IF (ICZERO) 36710, 6710, 36710 05740042 6710 CONTINUE 05750042 IVON01 = 0 05760042 IVON02 = 32767 05770042 IVCOMP = IVON01 ** IVON02 05780042 GO TO 46710 05790042 36710 IVDELE = IVDELE + 1 05800042 WRITE (I02,80003) IVTNUM 05810042 IF (ICZERO) 46710, 6721, 46710 05820042 46710 IF (IVCOMP) 26710,16710,26710 05830042 16710 IVPASS = IVPASS + 1 05840042 WRITE (I02,80001) IVTNUM 05850042 GO TO 6721 05860042 26710 IVFAIL = IVFAIL + 1 05870042 IVCORR = 0 05880042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05890042 6721 CONTINUE 05900042 IVTNUM = 672 05910042 C 05920042 C **** TEST 672 **** 05930042 C TEST 672 -LARGE NUMBER BASE; ZERO EXPONENT 05940042 C 05950042 IF (ICZERO) 36720, 6720, 36720 05960042 6720 CONTINUE 05970042 IVON01 = 32767 05980042 IVON02 = 0 05990042 IVCOMP = IVON01 ** IVON02 06000042 GO TO 46720 06010042 36720 IVDELE = IVDELE + 1 06020042 WRITE (I02,80003) IVTNUM 06030042 IF (ICZERO) 46720, 6731, 46720 06040042 46720 IF (IVCOMP -1) 26720,16720,26720 06050042 16720 IVPASS = IVPASS + 1 06060042 WRITE (I02,80001) IVTNUM 06070042 GO TO 6731 06080042 26720 IVFAIL = IVFAIL + 1 06090042 IVCORR = 1 06100042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06110042 6731 CONTINUE 06120042 IVTNUM = 673 06130042 C 06140042 C **** TEST 673 **** 06150042 C TEST 673 -EXPONENT IS POWER OF TWO 06160042 C 06170042 IF (ICZERO) 36730, 6730, 36730 06180042 6730 CONTINUE 06190042 IVON01 = 181 06200042 IVON02 = 2 06210042 IVCOMP = IVON01 ** IVON02 06220042 GO TO 46730 06230042 36730 IVDELE = IVDELE + 1 06240042 WRITE (I02,80003) IVTNUM 06250042 IF (ICZERO) 46730, 6741, 46730 06260042 46730 IF (IVCOMP - 32761) 26730,16730,26730 06270042 16730 IVPASS = IVPASS + 1 06280042 WRITE (I02,80001) IVTNUM 06290042 GO TO 6741 06300042 26730 IVFAIL = IVFAIL + 1 06310042 IVCORR = 32761 06320042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06330042 6741 CONTINUE 06340042 IVTNUM = 674 06350042 C 06360042 C **** TEST 674 **** 06370042 C TEST 674 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 06380042 C 06390042 IF (ICZERO) 36740, 6740, 36740 06400042 6740 CONTINUE 06410042 IVON01 = 2 06420042 IVON02 = 8 06430042 IVCOMP = IVON01 ** IVON02 06440042 GO TO 46740 06450042 36740 IVDELE = IVDELE + 1 06460042 WRITE (I02,80003) IVTNUM 06470042 IF (ICZERO) 46740, 6751, 46740 06480042 46740 IF (IVCOMP - 256) 26740,16740,26740 06490042 16740 IVPASS = IVPASS + 1 06500042 WRITE (I02,80001) IVTNUM 06510042 GO TO 6751 06520042 26740 IVFAIL = IVFAIL + 1 06530042 IVCORR = 256 06540042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06550042 6751 CONTINUE 06560042 C 06570042 C TESTS 675 AND 676 TEST TO ENSURE EXPONENTIATION OPERATOR IS 06580042 C NOT COMMUTATIVE 06590042 C 06600042 IVTNUM = 675 06610042 C 06620042 C **** TEST 675 **** 06630042 C 06640042 IF (ICZERO) 36750, 6750, 36750 06650042 6750 CONTINUE 06660042 IVON01 = 3 06670042 IVON02 = 9 06680042 IVCOMP = IVON01 ** IVON02 06690042 GO TO 46750 06700042 36750 IVDELE = IVDELE + 1 06710042 WRITE (I02,80003) IVTNUM 06720042 IF (ICZERO) 46750, 6761, 46750 06730042 46750 IF (IVCOMP - 19683) 26750,16750,26750 06740042 16750 IVPASS = IVPASS + 1 06750042 WRITE (I02,80001) IVTNUM 06760042 GO TO 6761 06770042 26750 IVFAIL = IVFAIL + 1 06780042 IVCORR = 19683 06790042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06800042 6761 CONTINUE 06810042 IVTNUM = 676 06820042 C 06830042 C **** TEST 676 **** 06840042 C 06850042 IF (ICZERO) 36760, 6760, 36760 06860042 6760 CONTINUE 06870042 IVON01 = 9 06880042 IVON02 = 3 06890042 IVCOMP = IVON01 ** IVON02 06900042 GO TO 46760 06910042 36760 IVDELE = IVDELE + 1 06920042 WRITE (I02,80003) IVTNUM 06930042 IF (ICZERO) 46760, 6771, 46760 06940042 46760 IF (IVCOMP - 729) 26760,16760,26760 06950042 16760 IVPASS = IVPASS + 1 06960042 WRITE (I02,80001) IVTNUM 06970042 GO TO 6771 06980042 26760 IVFAIL = IVFAIL + 1 06990042 IVCORR = 729 07000042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07010042 6771 CONTINUE 07020042 C 07030042 C TESTS 677 THROUGH 682 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE07040042 C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN07050042 C OF THE RESULTS 07060042 C 07070042 IVTNUM = 677 07080042 C 07090042 C **** TEST 677 **** 07100042 C 07110042 IF (ICZERO) 36770, 6770, 36770 07120042 6770 CONTINUE 07130042 IVON01 = 1 07140042 IVON02 = 2 07150042 IVCOMP = IVON01 ** IVON02 07160042 GO TO 46770 07170042 36770 IVDELE = IVDELE + 1 07180042 WRITE (I02,80003) IVTNUM 07190042 IF (ICZERO) 46770, 6781, 46770 07200042 46770 IF (IVCOMP - 1) 26770,16770,26770 07210042 16770 IVPASS = IVPASS + 1 07220042 WRITE (I02,80001) IVTNUM 07230042 GO TO 6781 07240042 26770 IVFAIL = IVFAIL + 1 07250042 IVCORR = 1 07260042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07270042 6781 CONTINUE 07280042 IVTNUM = 678 07290042 C 07300042 C **** TEST 678 **** 07310042 C 07320042 IF (ICZERO) 36780, 6780, 36780 07330042 6780 CONTINUE 07340042 IVON01 = -1 07350042 IVON02 = 2 07360042 IVCOMP = IVON01 ** IVON02 07370042 GO TO 46780 07380042 36780 IVDELE = IVDELE + 1 07390042 WRITE (I02,80003) IVTNUM 07400042 IF (ICZERO) 46780, 6791, 46780 07410042 46780 IF (IVCOMP - 1) 26780,16780,26780 07420042 16780 IVPASS = IVPASS + 1 07430042 WRITE (I02,80001) IVTNUM 07440042 GO TO 6791 07450042 26780 IVFAIL = IVFAIL + 1 07460042 IVCORR = 1 07470042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07480042 6791 CONTINUE 07490042 IVTNUM = 679 07500042 C 07510042 C **** TEST 679 **** 07520042 C 07530042 IF (ICZERO) 36790, 6790, 36790 07540042 6790 CONTINUE 07550042 IVON01 = 7 07560042 IVON02 = 3 07570042 IVCOMP = IVON01 ** IVON02 07580042 GO TO 46790 07590042 36790 IVDELE = IVDELE + 1 07600042 WRITE (I02,80003) IVTNUM 07610042 IF (ICZERO) 46790, 6801, 46790 07620042 46790 IF (IVCOMP - 343) 26790,16790,26790 07630042 16790 IVPASS = IVPASS + 1 07640042 WRITE (I02,80001) IVTNUM 07650042 GO TO 6801 07660042 26790 IVFAIL = IVFAIL + 1 07670042 IVCORR = 343 07680042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07690042 6801 CONTINUE 07700042 IVTNUM = 680 07710042 C 07720042 C **** TEST 680 **** 07730042 C 07740042 IF (ICZERO) 36800, 6800, 36800 07750042 6800 CONTINUE 07760042 IVON01 = -7 07770042 IVON02 = 3 07780042 IVCOMP = IVON01 ** IVON02 07790042 GO TO 46800 07800042 36800 IVDELE = IVDELE + 1 07810042 WRITE (I02,80003) IVTNUM 07820042 IF (ICZERO) 46800, 6811, 46800 07830042 46800 IF (IVCOMP + 343) 26800,16800,26800 07840042 16800 IVPASS = IVPASS + 1 07850042 WRITE (I02,80001) IVTNUM 07860042 GO TO 6811 07870042 26800 IVFAIL = IVFAIL + 1 07880042 IVCORR = -343 07890042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07900042 6811 CONTINUE 07910042 IVTNUM = 681 07920042 C 07930042 C **** TEST 681 **** 07940042 C 07950042 IF (ICZERO) 36810, 6810, 36810 07960042 6810 CONTINUE 07970042 IVON01 = 7 07980042 IVON02 = 4 07990042 IVCOMP = IVON01 ** IVON02 08000042 GO TO 46810 08010042 36810 IVDELE = IVDELE + 1 08020042 WRITE (I02,80003) IVTNUM 08030042 IF (ICZERO) 46810, 6821, 46810 08040042 46810 IF (IVCOMP - 2401) 26810,16810,26810 08050042 16810 IVPASS = IVPASS + 1 08060042 WRITE (I02,80001) IVTNUM 08070042 GO TO 6821 08080042 26810 IVFAIL = IVFAIL + 1 08090042 IVCORR = 2401 08100042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 08110042 6821 CONTINUE 08120042 IVTNUM = 682 08130042 C 08140042 C **** TEST 682 **** 08150042 C 08160042 IF (ICZERO) 36820, 6820, 36820 08170042 6820 CONTINUE 08180042 IVON01 = -7 08190042 IVON02 = 4 08200042 IVCOMP = IVON01 ** IVON02 08210042 GO TO 46820 08220042 36820 IVDELE = IVDELE + 1 08230042 WRITE (I02,80003) IVTNUM 08240042 IF (ICZERO) 46820, 6831, 46820 08250042 46820 IF (IVCOMP - 2401) 26820,16820,26820 08260042 16820 IVPASS = IVPASS + 1 08270042 WRITE (I02,80001) IVTNUM 08280042 GO TO 6831 08290042 26820 IVFAIL = IVFAIL + 1 08300042 IVCORR = 2401 08310042 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 08320042 6831 CONTINUE 08330042 C 08340042 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08350042 99999 CONTINUE 08360042 WRITE (I02,90002) 08370042 WRITE (I02,90006) 08380042 WRITE (I02,90002) 08390042 WRITE (I02,90002) 08400042 WRITE (I02,90007) 08410042 WRITE (I02,90002) 08420042 WRITE (I02,90008) IVFAIL 08430042 WRITE (I02,90009) IVPASS 08440042 WRITE (I02,90010) IVDELE 08450042 C 08460042 C 08470042 C TERMINATE ROUTINE EXECUTION 08480042 STOP 08490042 C 08500042 C FORMAT STATEMENTS FOR PAGE HEADERS 08510042 90000 FORMAT ("1") 08520042 90002 FORMAT (" ") 08530042 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08540042 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08550042 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08560042 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08570042 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08580042 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08590042 C 08600042 C FORMAT STATEMENTS FOR RUN SUMMARIES 08610042 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08620042 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08630042 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08640042 C 08650042 C FORMAT STATEMENTS FOR TEST RESULTS 08660042 80001 FORMAT (" ",4X,I5,7X,"PASS") 08670042 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08680042 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08690042 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08700042 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08710042 C 08720042 90007 FORMAT (" ",20X,"END OF PROGRAM FM042" ) 08730042 END 08740042