blob: 1020c329c838f574d679015043d51ad005dfafd2 [file] [log] [blame]
PROGRAM FM041
C COMMENT SECTION 00010041
C 00020041
C FM041 00030041
C 00040041
C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE 00050041
C FORM INTEGER VARIABLE = PRIMARY ** PRIMARY 00060041
C WHERE THE FIRST OF TWO PRIMARIES IS AN INTEGER VARIABLE OR AN 00070041
C INTEGER CONSTANT AND THE SECOND PRIMARY IS AN INTEGER CONSTANT. 00080041
C 00090041
C REFERENCES 00100041
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110041
C X3.9-1978 00120041
C 00130041
C SECTION 4.3, INTEGER TYPE 00140041
C SECTION 4.3.1, INTEGER CONSTANT 00150041
C SECTION 6.1, ARITHMETIC EXPRESSIONS 00160041
C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00170041
C 00180041
C 00190041
C ********************************************************** 00200041
C 00210041
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00220041
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00230041
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00240041
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00250041
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00260041
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00270041
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00280041
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00290041
C OF EXECUTING THESE TESTS. 00300041
C 00310041
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00320041
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00330041
C 00340041
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00350041
C 00360041
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00370041
C SOFTWARE STANDARDS VALIDATION GROUP 00380041
C BUILDING 225 RM A266 00390041
C GAITHERSBURG, MD 20899 00400041
C ********************************************************** 00410041
C 00420041
C 00430041
C 00440041
C INITIALIZATION SECTION 00450041
C 00460041
C INITIALIZE CONSTANTS 00470041
C ************** 00480041
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00490041
I01 = 5 00500041
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00510041
I02 = 6 00520041
C SYSTEM ENVIRONMENT SECTION 00530041
C 00540041
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00550041
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00560041
C (UNIT NUMBER FOR CARD READER). 00570041
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00580041
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00590041
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00600041
C 00610041
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00620041
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00630041
C (UNIT NUMBER FOR PRINTER). 00640041
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00650041
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00660041
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00670041
C 00680041
IVPASS=0 00690041
IVFAIL=0 00700041
IVDELE=0 00710041
ICZERO=0 00720041
C 00730041
C WRITE PAGE HEADERS 00740041
WRITE (I02,90000) 00750041
WRITE (I02,90001) 00760041
WRITE (I02,90002) 00770041
WRITE (I02, 90002) 00780041
WRITE (I02,90003) 00790041
WRITE (I02,90002) 00800041
WRITE (I02,90004) 00810041
WRITE (I02,90002) 00820041
WRITE (I02,90011) 00830041
WRITE (I02,90002) 00840041
WRITE (I02,90002) 00850041
WRITE (I02,90005) 00860041
WRITE (I02,90006) 00870041
WRITE (I02,90002) 00880041
C 00890041
C TEST SECTION 00900041
C 00910041
C ARITHMETIC ASSIGNMENT STATEMENT 00920041
C 00930041
C TEST 615 THROUGH TEST 631 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00940041
C OF THE FORM INTEGER VARIABLE = INTEGER CONSTANT ** INTEGER CON.00950041
C 00960041
C TEST 632 THROUGH TEST 648 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00970041
C OF THE FORM INTEGER VARIABLE = INTEGER VARIABLE ** INTEGER CON.00980041
C 00990041
C 01000041
IVTNUM = 615 01010041
C 01020041
C **** TEST 615 **** 01030041
C TEST 615 - SMALL NUMBER BASE; ZERO EXPONENT 01040041
C 01050041
IF (ICZERO) 36150, 6150, 36150 01060041
6150 CONTINUE 01070041
IVCOMP = 1 ** 0 01080041
GO TO 46150 01090041
36150 IVDELE = IVDELE + 1 01100041
WRITE (I02,80003) IVTNUM 01110041
IF (ICZERO) 46150, 6161, 46150 01120041
46150 IF (IVCOMP - 1) 26150,16150,26150 01130041
16150 IVPASS = IVPASS + 1 01140041
WRITE (I02,80001) IVTNUM 01150041
GO TO 6161 01160041
26150 IVFAIL = IVFAIL + 1 01170041
IVCORR = 1 01180041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01190041
6161 CONTINUE 01200041
IVTNUM = 616 01210041
C 01220041
C **** TEST 616 **** 01230041
C TEST 616 - ZERO BASE TO FIRST POWER 01240041
C 01250041
IF (ICZERO) 36160, 6160, 36160 01260041
6160 CONTINUE 01270041
IVCOMP = 0 ** 1 01280041
GO TO 46160 01290041
36160 IVDELE = IVDELE + 1 01300041
WRITE (I02,80003) IVTNUM 01310041
IF (ICZERO) 46160, 6171, 46160 01320041
46160 IF (IVCOMP) 26160,16160,26160 01330041
16160 IVPASS = IVPASS + 1 01340041
WRITE (I02,80001) IVTNUM 01350041
GO TO 6171 01360041
26160 IVFAIL = IVFAIL + 1 01370041
IVCORR = 0 01380041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01390041
6171 CONTINUE 01400041
IVTNUM = 617 01410041
C 01420041
C **** TEST 617 **** 01430041
C TEST 617 - BASE =1; EXPONENT = 1 01440041
C 01450041
IF (ICZERO) 36170, 6170, 36170 01460041
6170 CONTINUE 01470041
IVCOMP = 1 ** 1 01480041
GO TO 46170 01490041
36170 IVDELE = IVDELE + 1 01500041
WRITE (I02,80003) IVTNUM 01510041
IF (ICZERO) 46170, 6181, 46170 01520041
46170 IF (IVCOMP - 1) 26170,16170,26170 01530041
16170 IVPASS = IVPASS + 1 01540041
WRITE (I02,80001) IVTNUM 01550041
GO TO 6181 01560041
26170 IVFAIL = IVFAIL + 1 01570041
IVCORR = 1 01580041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01590041
6181 CONTINUE 01600041
IVTNUM = 618 01610041
C 01620041
C **** TEST 618 **** 01630041
C TEST 618 - LARGE NUMBER BASE; EXPONENT = 1 01640041
C 01650041
IF (ICZERO) 36180, 6180, 36180 01660041
6180 CONTINUE 01670041
IVCOMP = 32767 ** 1 01680041
GO TO 46180 01690041
36180 IVDELE = IVDELE + 1 01700041
WRITE (I02,80003) IVTNUM 01710041
IF (ICZERO) 46180, 6191, 46180 01720041
46180 IF (IVCOMP - 32767) 26180,16180,26180 01730041
16180 IVPASS = IVPASS + 1 01740041
WRITE (I02,80001) IVTNUM 01750041
GO TO 6191 01760041
26180 IVFAIL = IVFAIL + 1 01770041
IVCORR = 32767 01780041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01790041
6191 CONTINUE 01800041
IVTNUM = 619 01810041
C 01820041
C **** TEST 619 **** 01830041
C TEST 619 - LARGE EXPONENT 01840041
C 01850041
IF (ICZERO) 36190, 6190, 36190 01860041
6190 CONTINUE 01870041
IVCOMP = 1 ** 32767 01880041
GO TO 46190 01890041
36190 IVDELE = IVDELE + 1 01900041
WRITE (I02,80003) IVTNUM 01910041
IF (ICZERO) 46190, 6201, 46190 01920041
46190 IF (IVCOMP - 1) 26190,16190,26190 01930041
16190 IVPASS = IVPASS + 1 01940041
WRITE (I02,80001) IVTNUM 01950041
GO TO 6201 01960041
26190 IVFAIL = IVFAIL + 1 01970041
IVCORR = 1 01980041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01990041
6201 CONTINUE 02000041
IVTNUM = 620 02010041
C 02020041
C **** TEST 620 **** 02030041
C TEST 620 - ZERO BASE; LARGE NUMBER EXPONENT 02040041
C 02050041
IF (ICZERO) 36200, 6200, 36200 02060041
6200 CONTINUE 02070041
IVCOMP = 0 ** 32767 02080041
GO TO 46200 02090041
36200 IVDELE = IVDELE + 1 02100041
WRITE (I02,80003) IVTNUM 02110041
IF (ICZERO) 46200, 6211, 46200 02120041
46200 IF (IVCOMP) 26200,16200,26200 02130041
16200 IVPASS = IVPASS + 1 02140041
WRITE (I02,80001) IVTNUM 02150041
GO TO 6211 02160041
26200 IVFAIL = IVFAIL + 1 02170041
IVCORR = 0 02180041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02190041
6211 CONTINUE 02200041
IVTNUM = 621 02210041
C 02220041
C **** TEST 621 **** 02230041
C TEST 621 -LARGE NUMBER BASE; ZERO EXPONENT 02240041
C 02250041
IF (ICZERO) 36210, 6210, 36210 02260041
6210 CONTINUE 02270041
IVCOMP = 32767 ** 0 02280041
GO TO 46210 02290041
36210 IVDELE = IVDELE + 1 02300041
WRITE (I02,80003) IVTNUM 02310041
IF (ICZERO) 46210, 6221, 46210 02320041
46210 IF (IVCOMP - 1) 26210,16210,26210 02330041
16210 IVPASS = IVPASS + 1 02340041
WRITE (I02,80001) IVTNUM 02350041
GO TO 6221 02360041
26210 IVFAIL = IVFAIL + 1 02370041
IVCORR = 1 02380041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02390041
6221 CONTINUE 02400041
IVTNUM = 622 02410041
C 02420041
C **** TEST 622 **** 02430041
C TEST 622 -EXPONENT IS POWER OF TWO 02440041
C 02450041
IF (ICZERO) 36220, 6220, 36220 02460041
6220 CONTINUE 02470041
IVCOMP = 181 ** 2 02480041
GO TO 46220 02490041
36220 IVDELE = IVDELE + 1 02500041
WRITE (I02,80003) IVTNUM 02510041
IF (ICZERO) 46220, 6231, 46220 02520041
46220 IF (IVCOMP - 32761) 26220,16220,26220 02530041
16220 IVPASS = IVPASS + 1 02540041
WRITE (I02,80001) IVTNUM 02550041
GO TO 6231 02560041
26220 IVFAIL = IVFAIL + 1 02570041
IVCORR = 32761 02580041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02590041
6231 CONTINUE 02600041
IVTNUM = 623 02610041
C 02620041
C **** TEST 623 **** 02630041
C TEST 623 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 02640041
C 02650041
IF (ICZERO) 36230, 6230, 36230 02660041
6230 CONTINUE 02670041
IVCOMP = 2 ** 8 02680041
GO TO 46230 02690041
36230 IVDELE = IVDELE + 1 02700041
WRITE (I02,80003) IVTNUM 02710041
IF (ICZERO) 46230, 6241, 46230 02720041
46230 IF (IVCOMP - 256) 26230,16230,26230 02730041
16230 IVPASS = IVPASS + 1 02740041
WRITE (I02,80001) IVTNUM 02750041
GO TO 6241 02760041
26230 IVFAIL = IVFAIL + 1 02770041
IVCORR = 256 02780041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02790041
6241 CONTINUE 02800041
C 02810041
C TESTS 624 AND 625 TEST TO ENSURE EXPONENTIATION OPERATOR IS 02820041
C NOT COMMUTATIVE 02830041
C 02840041
IVTNUM = 624 02850041
C 02860041
C **** TEST 624 **** 02870041
C 02880041
IF (ICZERO) 36240, 6240, 36240 02890041
6240 CONTINUE 02900041
IVCOMP = 3 ** 9 02910041
GO TO 46240 02920041
36240 IVDELE = IVDELE + 1 02930041
WRITE (I02,80003) IVTNUM 02940041
IF (ICZERO) 46240, 6251, 46240 02950041
46240 IF (IVCOMP - 19683) 26240,16240,26240 02960041
16240 IVPASS = IVPASS + 1 02970041
WRITE (I02,80001) IVTNUM 02980041
GO TO 6251 02990041
26240 IVFAIL = IVFAIL + 1 03000041
IVCORR = 19683 03010041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03020041
6251 CONTINUE 03030041
IVTNUM = 625 03040041
C 03050041
C **** TEST 625 **** 03060041
C 03070041
IF (ICZERO) 36250, 6250, 36250 03080041
6250 CONTINUE 03090041
IVCOMP = 9 ** 3 03100041
GO TO 46250 03110041
36250 IVDELE = IVDELE + 1 03120041
WRITE (I02,80003) IVTNUM 03130041
IF (ICZERO) 46250, 6261, 46250 03140041
46250 IF (IVCOMP - 729) 26250,16250,26250 03150041
16250 IVPASS = IVPASS + 1 03160041
WRITE (I02,80001) IVTNUM 03170041
GO TO 6261 03180041
26250 IVFAIL = IVFAIL + 1 03190041
IVCORR = 729 03200041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03210041
6261 CONTINUE 03220041
C 03230041
C TESTS 626 THROUGH 631 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE03240041
C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN03250041
C OF THE RESULTS 03260041
C 03270041
IVTNUM = 626 03280041
C 03290041
C **** TEST 626 **** 03300041
C 03310041
IF (ICZERO) 36260, 6260, 36260 03320041
6260 CONTINUE 03330041
IVCOMP = 1 ** 2 03340041
GO TO 46260 03350041
36260 IVDELE = IVDELE + 1 03360041
WRITE (I02,80003) IVTNUM 03370041
IF (ICZERO) 46260, 6271, 46260 03380041
46260 IF (IVCOMP - 1) 26260,16260,26260 03390041
16260 IVPASS = IVPASS + 1 03400041
WRITE (I02,80001) IVTNUM 03410041
GO TO 6271 03420041
26260 IVFAIL = IVFAIL + 1 03430041
IVCORR = 1 03440041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03450041
6271 CONTINUE 03460041
IVTNUM = 627 03470041
C 03480041
C **** TEST 627 **** 03490041
C 03500041
IF (ICZERO) 36270, 6270, 36270 03510041
6270 CONTINUE 03520041
IVCOMP= (-1) ** 2 03530041
GO TO 46270 03540041
36270 IVDELE = IVDELE + 1 03550041
WRITE (I02,80003) IVTNUM 03560041
IF (ICZERO) 46270, 6281, 46270 03570041
46270 IF (IVCOMP - 1) 26270,16270,26270 03580041
16270 IVPASS = IVPASS + 1 03590041
WRITE (I02,80001) IVTNUM 03600041
GO TO 6281 03610041
26270 IVFAIL = IVFAIL + 1 03620041
IVCORR = 1 03630041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03640041
6281 CONTINUE 03650041
IVTNUM = 628 03660041
C 03670041
C **** TEST 628 **** 03680041
C 03690041
IF (ICZERO) 36280, 6280, 36280 03700041
6280 CONTINUE 03710041
IVCOMP = 7 ** 3 03720041
GO TO 46280 03730041
36280 IVDELE = IVDELE + 1 03740041
WRITE (I02,80003) IVTNUM 03750041
IF (ICZERO) 46280, 6291, 46280 03760041
46280 IF (IVCOMP - 343) 26280,16280,26280 03770041
16280 IVPASS = IVPASS + 1 03780041
WRITE (I02,80001) IVTNUM 03790041
GO TO 6291 03800041
26280 IVFAIL = IVFAIL + 1 03810041
IVCORR = 343 03820041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03830041
6291 CONTINUE 03840041
IVTNUM = 629 03850041
C 03860041
C **** TEST 629 **** 03870041
C 03880041
IF (ICZERO) 36290, 6290, 36290 03890041
6290 CONTINUE 03900041
IVCOMP = (-7) ** 3 03910041
GO TO 46290 03920041
36290 IVDELE = IVDELE + 1 03930041
WRITE (I02,80003) IVTNUM 03940041
IF (ICZERO) 46290, 6301, 46290 03950041
46290 IF (IVCOMP + 343) 26290,16290,26290 03960041
16290 IVPASS = IVPASS + 1 03970041
WRITE (I02,80001) IVTNUM 03980041
GO TO 6301 03990041
26290 IVFAIL = IVFAIL + 1 04000041
IVCORR = -343 04010041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04020041
6301 CONTINUE 04030041
IVTNUM = 630 04040041
C 04050041
C **** TEST 630 **** 04060041
C 04070041
IF (ICZERO) 36300, 6300, 36300 04080041
6300 CONTINUE 04090041
IVCOMP = 7 ** 4 04100041
GO TO 46300 04110041
36300 IVDELE = IVDELE + 1 04120041
WRITE (I02,80003) IVTNUM 04130041
IF (ICZERO) 46300, 6311, 46300 04140041
46300 IF (IVCOMP - 2401) 26300,16300,26300 04150041
16300 IVPASS = IVPASS + 1 04160041
WRITE (I02,80001) IVTNUM 04170041
GO TO 6311 04180041
26300 IVFAIL = IVFAIL + 1 04190041
IVCORR = 2401 04200041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04210041
6311 CONTINUE 04220041
IVTNUM = 631 04230041
C 04240041
C **** TEST 631 **** 04250041
C 04260041
IF (ICZERO) 36310, 6310, 36310 04270041
6310 CONTINUE 04280041
IVCOMP = (-7) ** 4 04290041
GO TO 46310 04300041
36310 IVDELE = IVDELE + 1 04310041
WRITE (I02,80003) IVTNUM 04320041
IF (ICZERO) 46310, 6321, 46310 04330041
46310 IF (IVCOMP - 2401) 26310,16310,26310 04340041
16310 IVPASS = IVPASS + 1 04350041
WRITE (I02,80001) IVTNUM 04360041
GO TO 6321 04370041
26310 IVFAIL = IVFAIL + 1 04380041
IVCORR = 2401 04390041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04400041
6321 CONTINUE 04410041
IVTNUM = 632 04420041
C 04430041
C **** TEST 632 **** 04440041
C TEST 632 - SMALL NUMBER BASE; ZERO EXPONENT 04450041
C 04460041
IF (ICZERO) 36320, 6320, 36320 04470041
6320 CONTINUE 04480041
IVON01 = 1 04490041
IVCOMP = IVON01 ** 1 04500041
GO TO 46320 04510041
36320 IVDELE = IVDELE + 1 04520041
WRITE (I02,80003) IVTNUM 04530041
IF (ICZERO) 46320, 6331, 46320 04540041
46320 IF (IVCOMP - 1) 26320,16320,26320 04550041
16320 IVPASS = IVPASS + 1 04560041
WRITE (I02,80001) IVTNUM 04570041
GO TO 6331 04580041
26320 IVFAIL = IVFAIL + 1 04590041
IVCORR = 1 04600041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04610041
6331 CONTINUE 04620041
IVTNUM = 633 04630041
C 04640041
C **** TEST 633 **** 04650041
C TEST 633 - ZERO BASE TO FIRST POWER 04660041
C 04670041
IF (ICZERO) 36330, 6330, 36330 04680041
6330 CONTINUE 04690041
IVON01 = 0 04700041
IVCOMP = IVON01 ** 1 04710041
GO TO 46330 04720041
36330 IVDELE = IVDELE + 1 04730041
WRITE (I02,80003) IVTNUM 04740041
IF (ICZERO) 46330, 6341, 46330 04750041
46330 IF (IVCOMP) 26330,16330,26330 04760041
16330 IVPASS = IVPASS + 1 04770041
WRITE (I02,80001) IVTNUM 04780041
GO TO 6341 04790041
26330 IVFAIL = IVFAIL + 1 04800041
IVCORR = 0 04810041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04820041
6341 CONTINUE 04830041
IVTNUM = 634 04840041
C 04850041
C **** TEST 634 **** 04860041
C TEST 634 - BASE =1; EXPONENT = 1 04870041
C 04880041
IF (ICZERO) 36340, 6340, 36340 04890041
6340 CONTINUE 04900041
IVON01 = 1 04910041
IVCOMP = IVON01 ** 1 04920041
GO TO 46340 04930041
36340 IVDELE = IVDELE + 1 04940041
WRITE (I02,80003) IVTNUM 04950041
IF (ICZERO) 46340, 6351, 46340 04960041
46340 IF (IVCOMP - 1) 26340,16340,26340 04970041
16340 IVPASS = IVPASS + 1 04980041
WRITE (I02,80001) IVTNUM 04990041
GO TO 6351 05000041
26340 IVFAIL = IVFAIL + 1 05010041
IVCORR = 1 05020041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05030041
6351 CONTINUE 05040041
IVTNUM = 635 05050041
C 05060041
C **** TEST 635 **** 05070041
C TEST 635 - LARGE EXPONENT 05080041
C 05090041
IF (ICZERO) 36350, 6350, 36350 05100041
6350 CONTINUE 05110041
IVON01 = 1 05120041
IVCOMP = IVON01 ** 32767 05130041
GO TO 46350 05140041
36350 IVDELE = IVDELE + 1 05150041
WRITE (I02,80003) IVTNUM 05160041
IF (ICZERO) 46350, 6361, 46350 05170041
46350 IF (IVCOMP - 1) 26350,16350,26350 05180041
16350 IVPASS = IVPASS + 1 05190041
WRITE (I02,80001) IVTNUM 05200041
GO TO 6361 05210041
26350 IVFAIL = IVFAIL + 1 05220041
IVCORR = 1 05230041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05240041
6361 CONTINUE 05250041
IVTNUM = 636 05260041
C 05270041
C **** TEST 636 **** 05280041
C TEST 636 - LARGE NUMBER BASE; EXPONENT = 1 05290041
C 05300041
IF (ICZERO) 36360, 6360, 36360 05310041
6360 CONTINUE 05320041
IVON01 = 32767 05330041
IVCOMP = IVON01 ** 1 05340041
GO TO 46360 05350041
36360 IVDELE = IVDELE + 1 05360041
WRITE (I02,80003) IVTNUM 05370041
IF (ICZERO) 46360, 6371, 46360 05380041
46360 IF (IVCOMP - 32767) 26360,16360,26360 05390041
16360 IVPASS = IVPASS + 1 05400041
WRITE (I02,80001) IVTNUM 05410041
GO TO 6371 05420041
26360 IVFAIL = IVFAIL + 1 05430041
IVCORR = 32767 05440041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05450041
6371 CONTINUE 05460041
IVTNUM = 637 05470041
C 05480041
C **** TEST 637 **** 05490041
C TEST 637 - ZERO BASE; LARGE NUMBER EXPONENT 05500041
C 05510041
IF (ICZERO) 36370, 6370, 36370 05520041
6370 CONTINUE 05530041
IVON01 = 0 05540041
IVCOMP = IVON01 ** 32767 05550041
GO TO 46370 05560041
36370 IVDELE = IVDELE + 1 05570041
WRITE (I02,80003) IVTNUM 05580041
IF (ICZERO) 46370, 6381, 46370 05590041
46370 IF (IVCOMP) 26370,16370,26370 05600041
16370 IVPASS = IVPASS + 1 05610041
WRITE (I02,80001) IVTNUM 05620041
GO TO 6381 05630041
26370 IVFAIL = IVFAIL +1 05640041
IVCORR = 0 05650041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05660041
6381 CONTINUE 05670041
IVTNUM = 638 05680041
C 05690041
C **** TEST 638 **** 05700041
C TEST 638 -LARGE NUMBER BASE; ZERO EXPONENT 05710041
C 05720041
IF (ICZERO) 36380, 6380, 36380 05730041
6380 CONTINUE 05740041
IVON01 = 32767 05750041
IVCOMP = IVON01 ** 0 05760041
GO TO 46380 05770041
36380 IVDELE = IVDELE + 1 05780041
WRITE (I02,80003) IVTNUM 05790041
IF (ICZERO) 46380, 6391, 46380 05800041
46380 IF (IVCOMP - 1) 26380,16380,26380 05810041
16380 IVPASS = IVPASS + 1 05820041
WRITE (I02,80001) IVTNUM 05830041
GO TO 6391 05840041
26380 IVFAIL = IVFAIL + 1 05850041
IVCORR = 1 05860041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05870041
6391 CONTINUE 05880041
IVTNUM = 639 05890041
C 05900041
C **** TEST 639 **** 05910041
C TEST 639 -EXPONENT IS POWER OF TWO 05920041
C 05930041
IF (ICZERO) 36390, 6390, 36390 05940041
6390 CONTINUE 05950041
IVON01 = 181 05960041
IVCOMP = IVON01 ** 2 05970041
GO TO 46390 05980041
36390 IVDELE = IVDELE + 1 05990041
WRITE (I02,80003) IVTNUM 06000041
IF (ICZERO) 46390, 6401, 46390 06010041
46390 IF (IVCOMP - 32761) 26390,16390,26390 06020041
16390 IVPASS = IVPASS + 1 06030041
WRITE (I02,80001) IVTNUM 06040041
GO TO 6401 06050041
26390 IVFAIL = IVFAIL + 1 06060041
IVCORR = 32761 06070041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06080041
6401 CONTINUE 06090041
IVTNUM = 640 06100041
C 06110041
C **** TEST 640 **** 06120041
C TEST 640 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 06130041
C 06140041
IF (ICZERO) 36400, 6400, 36400 06150041
6400 CONTINUE 06160041
IVON01 = 2 06170041
IVCOMP = IVON01 ** 8 06180041
GO TO 46400 06190041
36400 IVDELE = IVDELE + 1 06200041
WRITE (I02,80003) IVTNUM 06210041
IF (ICZERO) 46400, 6411, 46400 06220041
46400 IF (IVCOMP - 256) 26400,16400,26400 06230041
16400 IVPASS = IVPASS + 1 06240041
WRITE (I02,80001) IVTNUM 06250041
GO TO 6411 06260041
26400 IVFAIL = IVFAIL + 1 06270041
IVCORR = 256 06280041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06290041
6411 CONTINUE 06300041
C 06310041
C TESTS 641 AND 642 TEST TO ENSURE EXPONENTIATION OPERATOR IS 06320041
C NOT COMMUTATIVE 06330041
C 06340041
IVTNUM = 641 06350041
C 06360041
C **** TEST 641 **** 06370041
C 06380041
IF (ICZERO) 36410, 6410, 36410 06390041
6410 CONTINUE 06400041
IVON01 = 3 06410041
IVCOMP = IVON01 ** 9 06420041
GO TO 46410 06430041
36410 IVDELE = IVDELE + 1 06440041
WRITE (I02,80003) IVTNUM 06450041
IF (ICZERO) 46410, 6421, 46410 06460041
46410 IF (IVCOMP - 19683) 26410,16410,26410 06470041
16410 IVPASS = IVPASS + 1 06480041
WRITE (I02,80001) IVTNUM 06490041
GO TO 6421 06500041
26410 IVFAIL = IVFAIL + 1 06510041
IVCORR = 19683 06520041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06530041
6421 CONTINUE 06540041
IVTNUM = 642 06550041
C 06560041
C **** TEST 642 **** 06570041
C 06580041
IF (ICZERO) 36420, 6420, 36420 06590041
6420 CONTINUE 06600041
IVON01 = 9 06610041
IVCOMP = IVON01 ** 3 06620041
GO TO 46420 06630041
36420 IVDELE = IVDELE + 1 06640041
WRITE (I02,80003) IVTNUM 06650041
IF (ICZERO) 46420, 6431, 46420 06660041
46420 IF (IVCOMP - 729) 26420,16420,26420 06670041
16420 IVPASS = IVPASS + 1 06680041
WRITE (I02,80001) IVTNUM 06690041
GO TO 6431 06700041
26420 IVFAIL = IVFAIL + 1 06710041
IVCORR = 729 06720041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06730041
6431 CONTINUE 06740041
C 06750041
C TESTS 643 THROUGH 648 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE06760041
C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN06770041
C OF THE RESULTS 06780041
C 06790041
IVTNUM = 643 06800041
C 06810041
C **** TEST 643 **** 06820041
C 06830041
IF (ICZERO) 36430, 6430, 36430 06840041
6430 CONTINUE 06850041
IVON01 = 1 06860041
IVCOMP = IVON01 ** 2 06870041
GO TO 46430 06880041
36430 IVDELE = IVDELE + 1 06890041
WRITE (I02,80003) IVTNUM 06900041
IF (ICZERO) 46430, 6441, 46430 06910041
46430 IF (IVCOMP - 1) 26430,16430,26430 06920041
16430 IVPASS = IVPASS + 1 06930041
WRITE (I02,80001) IVTNUM 06940041
GO TO 6441 06950041
26430 IVFAIL = IVFAIL + 1 06960041
IVCORR = 1 06970041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06980041
6441 CONTINUE 06990041
IVTNUM = 644 07000041
C 07010041
C **** TEST 644 **** 07020041
C 07030041
IF (ICZERO) 36440, 6440, 36440 07040041
6440 CONTINUE 07050041
IVON01 = -1 07060041
IVCOMP = IVON01 ** 2 07070041
GO TO 46440 07080041
36440 IVDELE = IVDELE + 1 07090041
WRITE (I02,80003) IVTNUM 07100041
IF (ICZERO) 46440, 6451, 46440 07110041
46440 IF (IVCOMP - 1) 26440,16440,26440 07120041
16440 IVPASS = IVPASS + 1 07130041
WRITE (I02,80001) IVTNUM 07140041
GO TO 6451 07150041
26440 IVFAIL = IVFAIL + 1 07160041
IVCORR = 1 07170041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07180041
6451 CONTINUE 07190041
IVTNUM = 645 07200041
C 07210041
C **** TEST 645 **** 07220041
C 07230041
IF (ICZERO) 36450, 6450, 36450 07240041
6450 CONTINUE 07250041
IVON01 = 7 07260041
IVCOMP = IVON01 ** 3 07270041
GO TO 46450 07280041
36450 IVDELE = IVDELE + 1 07290041
WRITE (I02,80003) IVTNUM 07300041
IF (ICZERO) 46450, 6461, 46450 07310041
46450 IF (IVCOMP - 343) 26450,16450,26450 07320041
16450 IVPASS = IVPASS + 1 07330041
WRITE (I02,80001) IVTNUM 07340041
GO TO 6461 07350041
26450 IVFAIL = IVFAIL + 1 07360041
IVCORR = 343 07370041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07380041
6461 CONTINUE 07390041
IVTNUM = 646 07400041
C 07410041
C **** TEST 646 **** 07420041
C 07430041
IF (ICZERO) 36460, 6460, 36460 07440041
6460 CONTINUE 07450041
IVON01 = -7 07460041
IVCOMP = IVON01 ** 3 07470041
GO TO 46460 07480041
36460 IVDELE = IVDELE + 1 07490041
WRITE (I02,80003) IVTNUM 07500041
IF (ICZERO) 46460, 6471, 46460 07510041
46460 IF (IVCOMP + 343) 26460,16460,26460 07520041
16460 IVPASS = IVPASS + 1 07530041
WRITE (I02,80001) IVTNUM 07540041
GO TO 6471 07550041
26460 IVFAIL = IVFAIL + 1 07560041
IVCORR = -343 07570041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07580041
6471 CONTINUE 07590041
IVTNUM = 647 07600041
C 07610041
C **** TEST 647 **** 07620041
C 07630041
IF (ICZERO) 36470, 6470, 36470 07640041
6470 CONTINUE 07650041
IVON01 = 7 07660041
IVCOMP = IVON01 ** 4 07670041
GO TO 46470 07680041
36470 IVDELE = IVDELE + 1 07690041
WRITE (I02,80003) IVTNUM 07700041
IF (ICZERO) 46470, 6481, 46470 07710041
46470 IF (IVCOMP - 2401) 26470,16470,26470 07720041
16470 IVPASS = IVPASS + 1 07730041
WRITE (I02,80001) IVTNUM 07740041
GO TO 6481 07750041
26470 IVFAIL = IVFAIL + 1 07760041
IVCORR = 2401 07770041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07780041
6481 CONTINUE 07790041
IVTNUM = 648 07800041
C 07810041
C **** TEST 648 **** 07820041
C 07830041
IF (ICZERO) 36480, 6480, 36480 07840041
6480 CONTINUE 07850041
IVON01 = -7 07860041
IVCOMP = IVON01 ** 4 07870041
GO TO 46480 07880041
36480 IVDELE = IVDELE + 1 07890041
WRITE (I02,80003) IVTNUM 07900041
IF (ICZERO) 46480, 6491, 46480 07910041
46480 IF (IVCOMP - 2401) 26480,16480,26480 07920041
16480 IVPASS = IVPASS + 1 07930041
WRITE (I02,80001) IVTNUM 07940041
GO TO 6491 07950041
26480 IVFAIL = IVFAIL + 1 07960041
IVCORR = 2401 07970041
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07980041
6491 CONTINUE 07990041
C *** END OF TESTS *** 08000041
C 08010041
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08020041
99999 CONTINUE 08030041
WRITE (I02,90002) 08040041
WRITE (I02,90006) 08050041
WRITE (I02,90002) 08060041
WRITE (I02,90002) 08070041
WRITE (I02,90007) 08080041
WRITE (I02,90002) 08090041
WRITE (I02,90008) IVFAIL 08100041
WRITE (I02,90009) IVPASS 08110041
WRITE (I02,90010) IVDELE 08120041
C 08130041
C 08140041
C TERMINATE ROUTINE EXECUTION 08150041
STOP 08160041
C 08170041
C FORMAT STATEMENTS FOR PAGE HEADERS 08180041
90000 FORMAT ("1") 08190041
90002 FORMAT (" ") 08200041
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08210041
90003 FORMAT (" ",21X,"VERSION 2.1" ) 08220041
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08230041
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08240041
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08250041
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08260041
C 08270041
C FORMAT STATEMENTS FOR RUN SUMMARIES 08280041
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08290041
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08300041
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08310041
C 08320041
C FORMAT STATEMENTS FOR TEST RESULTS 08330041
80001 FORMAT (" ",4X,I5,7X,"PASS") 08340041
80002 FORMAT (" ",4X,I5,7X,"FAIL") 08350041
80003 FORMAT (" ",4X,I5,7X,"DELETED") 08360041
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08370041
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08380041
C 08390041
90007 FORMAT (" ",20X,"END OF PROGRAM FM041" ) 08400041
END 08410041