blob: 795c54eab5d324c1c8fdee93c2a89636924784e3 [file] [log] [blame]
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