| PROGRAM FM033 |
| |
| C COMMENT SECTION 00010033 |
| C 00020033 |
| C FM033 00030033 |
| C 00040033 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050033 |
| C FORM 00060033 |
| C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070033 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00080033 |
| C OPERATOR * AND INTEGER CONSTANTS. SOME OF THE TESTS USE PARENS 00090033 |
| C TO GROUP ELEMENTS IN THE EXPRESSION AND TO ALLOW THE USE OF 00100033 |
| C NEGATIVE CONSTANTS FOLLOWING THE * OPERATOR. 00110033 |
| C 00120033 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00130033 |
| C (1) INTEGER CONSTANT * INTEGER CONSTANT 00140033 |
| C (2) INTEGER CONSTANT * INTEGER CONSTANT * INTEGER CONSTANT 00150033 |
| C (3) SAME AS (2) BUT WITH PARENS TO GROUP ELEMENTS 00160033 |
| C 00170033 |
| C REFERENCES 00180033 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00190033 |
| C X3.9-1978 00200033 |
| C 00210033 |
| C SECTION 4.3, INTEGER TYPE 00220033 |
| C SECTION 4.3.1, INTEGER CONSTANT 00230033 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00240033 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00250033 |
| C 00260033 |
| C ********************************************************** 00270033 |
| C 00280033 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00290033 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00300033 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00310033 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00320033 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00330033 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00340033 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00350033 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00360033 |
| C OF EXECUTING THESE TESTS. 00370033 |
| C 00380033 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00390033 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00400033 |
| C 00410033 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00420033 |
| C 00430033 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00440033 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00450033 |
| C BUILDING 225 RM A266 00460033 |
| C GAITHERSBURG, MD 20899 00470033 |
| C ********************************************************** 00480033 |
| C 00490033 |
| C 00500033 |
| C 00510033 |
| C INITIALIZATION SECTION 00520033 |
| C 00530033 |
| C INITIALIZE CONSTANTS 00540033 |
| C ************** 00550033 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00560033 |
| I01 = 5 00570033 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00580033 |
| I02 = 6 00590033 |
| C SYSTEM ENVIRONMENT SECTION 00600033 |
| C 00610033 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00620033 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00630033 |
| C (UNIT NUMBER FOR CARD READER). 00640033 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00650033 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00660033 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00670033 |
| C 00680033 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00690033 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00700033 |
| C (UNIT NUMBER FOR PRINTER). 00710033 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00720033 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00730033 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00740033 |
| C 00750033 |
| IVPASS=0 00760033 |
| IVFAIL=0 00770033 |
| IVDELE=0 00780033 |
| ICZERO=0 00790033 |
| C 00800033 |
| C WRITE PAGE HEADERS 00810033 |
| WRITE (I02,90000) 00820033 |
| WRITE (I02,90001) 00830033 |
| WRITE (I02,90002) 00840033 |
| WRITE (I02, 90002) 00850033 |
| WRITE (I02,90003) 00860033 |
| WRITE (I02,90002) 00870033 |
| WRITE (I02,90004) 00880033 |
| WRITE (I02,90002) 00890033 |
| WRITE (I02,90011) 00900033 |
| WRITE (I02,90002) 00910033 |
| WRITE (I02,90002) 00920033 |
| WRITE (I02,90005) 00930033 |
| WRITE (I02,90006) 00940033 |
| WRITE (I02,90002) 00950033 |
| C 00960033 |
| C TEST SECTION 00970033 |
| C 00980033 |
| C ARITHMETIC ASSIGNMENT STATEMENT 00990033 |
| C 01000033 |
| C TEST 360 THROUGH TEST 376 CONTAIN TWO INTEGER CONSTANTS AND 01010033 |
| C OPERATOR * IN AN ARITHMETIC EXPRESSION. 01020033 |
| C IV = IC * IC 01030033 |
| C 01040033 |
| C TEST 360 THROUGH TEST 365 - INTEGER CONSTANTS ARE POSITIVE 01050033 |
| C 01060033 |
| 3601 CONTINUE 01070033 |
| IVTNUM = 360 01080033 |
| C 01090033 |
| C **** TEST 360 **** 01100033 |
| C 01110033 |
| IF (ICZERO) 33600, 3600, 33600 01120033 |
| 3600 CONTINUE 01130033 |
| IVCOMP = 2 * 3 01140033 |
| GO TO 43600 01150033 |
| 33600 IVDELE = IVDELE + 1 01160033 |
| WRITE (I02,80003) IVTNUM 01170033 |
| IF (ICZERO) 43600, 3611, 43600 01180033 |
| 43600 IF (IVCOMP - 6) 23600,13600,23600 01190033 |
| 13600 IVPASS = IVPASS + 1 01200033 |
| WRITE (I02,80001) IVTNUM 01210033 |
| GO TO 3611 01220033 |
| 23600 IVFAIL = IVFAIL + 1 01230033 |
| IVCORR=6 01240033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01250033 |
| 3611 CONTINUE 01260033 |
| IVTNUM = 361 01270033 |
| C 01280033 |
| C **** TEST 361 **** 01290033 |
| C 01300033 |
| IF (ICZERO) 33610, 3610, 33610 01310033 |
| 3610 CONTINUE 01320033 |
| IVCOMP = 3*2 01330033 |
| GO TO 43610 01340033 |
| 33610 IVDELE = IVDELE + 1 01350033 |
| WRITE (I02,80003) IVTNUM 01360033 |
| IF (ICZERO) 43610, 3621, 43610 01370033 |
| 43610 IF (IVCOMP-6) 23610,13610,23610 01380033 |
| 13610 IVPASS = IVPASS + 1 01390033 |
| WRITE (I02,80001) IVTNUM 01400033 |
| GO TO 3621 01410033 |
| 23610 IVFAIL = IVFAIL + 1 01420033 |
| IVCORR=6 01430033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01440033 |
| 3621 CONTINUE 01450033 |
| IVTNUM = 362 01460033 |
| C 01470033 |
| C **** TEST 362 **** 01480033 |
| C 01490033 |
| IF (ICZERO) 33620, 3620, 33620 01500033 |
| 3620 CONTINUE 01510033 |
| IVCOMP=13*11 01520033 |
| GO TO 43620 01530033 |
| 33620 IVDELE = IVDELE + 1 01540033 |
| WRITE (I02,80003) IVTNUM 01550033 |
| IF (ICZERO) 43620, 3631, 43620 01560033 |
| 43620 IF (IVCOMP-143) 23620,13620,23620 01570033 |
| 13620 IVPASS = IVPASS + 1 01580033 |
| WRITE (I02,80001) IVTNUM 01590033 |
| GO TO 3631 01600033 |
| 23620 IVFAIL = IVFAIL + 1 01610033 |
| IVCORR=143 01620033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01630033 |
| 3631 CONTINUE 01640033 |
| IVTNUM = 363 01650033 |
| C 01660033 |
| C **** TEST 363 **** 01670033 |
| C 01680033 |
| IF (ICZERO) 33630, 3630, 33630 01690033 |
| 3630 CONTINUE 01700033 |
| IVCOMP = 223*99 01710033 |
| GO TO 43630 01720033 |
| 33630 IVDELE = IVDELE + 1 01730033 |
| WRITE (I02,80003) IVTNUM 01740033 |
| IF (ICZERO) 43630, 3641, 43630 01750033 |
| 43630 IF (IVCOMP-22077) 23630,13630,23630 01760033 |
| 13630 IVPASS = IVPASS + 1 01770033 |
| WRITE (I02,80001) IVTNUM 01780033 |
| GO TO 3641 01790033 |
| 23630 IVFAIL = IVFAIL + 1 01800033 |
| IVCORR=22077 01810033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01820033 |
| 3641 CONTINUE 01830033 |
| IVTNUM = 364 01840033 |
| C 01850033 |
| C **** TEST 364 **** 01860033 |
| C 01870033 |
| IF (ICZERO) 33640, 3640, 33640 01880033 |
| 3640 CONTINUE 01890033 |
| IVCOMP=11235*2 01900033 |
| GO TO 43640 01910033 |
| 33640 IVDELE = IVDELE + 1 01920033 |
| WRITE (I02,80003) IVTNUM 01930033 |
| IF (ICZERO) 43640, 3651, 43640 01940033 |
| 43640 IF (IVCOMP-22470) 23640,13640,23640 01950033 |
| 13640 IVPASS = IVPASS + 1 01960033 |
| WRITE (I02,80001) IVTNUM 01970033 |
| GO TO 3651 01980033 |
| 23640 IVFAIL = IVFAIL + 1 01990033 |
| IVCORR=22470 02000033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02010033 |
| 3651 CONTINUE 02020033 |
| IVTNUM = 365 02030033 |
| C 02040033 |
| C **** TEST 365 **** 02050033 |
| C 02060033 |
| IF (ICZERO) 33650, 3650, 33650 02070033 |
| 3650 CONTINUE 02080033 |
| IVCOMP = 2*16383 02090033 |
| GO TO 43650 02100033 |
| 33650 IVDELE = IVDELE + 1 02110033 |
| WRITE (I02,80003) IVTNUM 02120033 |
| IF (ICZERO) 43650, 3661, 43650 02130033 |
| 43650 IF (IVCOMP-32766) 23650,13650,23650 02140033 |
| 13650 IVPASS = IVPASS + 1 02150033 |
| WRITE (I02,80001) IVTNUM 02160033 |
| GO TO 3661 02170033 |
| 23650 IVFAIL = IVFAIL + 1 02180033 |
| IVCORR = 32766 02190033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02200033 |
| C 02210033 |
| C TEST 366 THROUGH TEST 371 02220033 |
| C ONE POSITIVE AND ONE NEGATIVE CONSTANT 02230033 |
| C 02240033 |
| 3661 CONTINUE 02250033 |
| IVTNUM = 366 02260033 |
| C 02270033 |
| C **** TEST 366 **** 02280033 |
| C 02290033 |
| IF (ICZERO) 33660, 3660, 33660 02300033 |
| 3660 CONTINUE 02310033 |
| IVCOMP =2*(-3) 02320033 |
| GO TO 43660 02330033 |
| 33660 IVDELE = IVDELE + 1 02340033 |
| WRITE (I02,80003) IVTNUM 02350033 |
| IF (ICZERO) 43660, 3671, 43660 02360033 |
| 43660 IF (IVCOMP+6) 23660,13660,23660 02370033 |
| 13660 IVPASS = IVPASS + 1 02380033 |
| WRITE (I02,80001) IVTNUM 02390033 |
| GO TO 3671 02400033 |
| 23660 IVFAIL = IVFAIL + 1 02410033 |
| IVCORR = -6 02420033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02430033 |
| 3671 CONTINUE 02440033 |
| IVTNUM = 367 02450033 |
| C 02460033 |
| C **** TEST 367 **** 02470033 |
| C 02480033 |
| IF (ICZERO) 33670, 3670, 33670 02490033 |
| 3670 CONTINUE 02500033 |
| IVCOMP=(-2)*3 02510033 |
| GO TO 43670 02520033 |
| 33670 IVDELE = IVDELE + 1 02530033 |
| WRITE (I02,80003) IVTNUM 02540033 |
| IF (ICZERO) 43670, 3681, 43670 02550033 |
| 43670 IF (IVCOMP+6)23670,13670,23670 02560033 |
| 13670 IVPASS = IVPASS + 1 02570033 |
| WRITE (I02,80001) IVTNUM 02580033 |
| GO TO 3681 02590033 |
| 23670 IVFAIL = IVFAIL + 1 02600033 |
| IVCORR =-6 02610033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02620033 |
| 3681 CONTINUE 02630033 |
| IVTNUM = 368 02640033 |
| C 02650033 |
| C **** TEST 368 **** 02660033 |
| C 02670033 |
| IF (ICZERO) 33680, 3680, 33680 02680033 |
| 3680 CONTINUE 02690033 |
| IVCOMP= -2*3 02700033 |
| GO TO 43680 02710033 |
| 33680 IVDELE = IVDELE + 1 02720033 |
| WRITE (I02,80003) IVTNUM 02730033 |
| IF (ICZERO) 43680, 3691, 43680 02740033 |
| 43680 IF (IVCOMP +6) 23680,13680,23680 02750033 |
| 13680 IVPASS = IVPASS + 1 02760033 |
| WRITE (I02,80001) IVTNUM 02770033 |
| GO TO 3691 02780033 |
| 23680 IVFAIL = IVFAIL + 1 02790033 |
| IVCORR=-6 02800033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02810033 |
| 3691 CONTINUE 02820033 |
| IVTNUM = 369 02830033 |
| C 02840033 |
| C **** TEST 369 **** 02850033 |
| C 02860033 |
| IF (ICZERO) 33690, 3690, 33690 02870033 |
| 3690 CONTINUE 02880033 |
| IVCOMP = (-13)*11 02890033 |
| GO TO 43690 02900033 |
| 33690 IVDELE = IVDELE + 1 02910033 |
| WRITE (I02,80003) IVTNUM 02920033 |
| IF (ICZERO) 43690, 3701, 43690 02930033 |
| 43690 IF (IVCOMP+143) 23690,13690,23690 02940033 |
| 13690 IVPASS = IVPASS + 1 02950033 |
| WRITE (I02,80001) IVTNUM 02960033 |
| GO TO 3701 02970033 |
| 23690 IVFAIL = IVFAIL + 1 02980033 |
| IVCORR=-143 02990033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03000033 |
| 3701 CONTINUE 03010033 |
| IVTNUM = 370 03020033 |
| C 03030033 |
| C **** TEST 370 **** 03040033 |
| C 03050033 |
| IF (ICZERO) 33700, 3700, 33700 03060033 |
| 3700 CONTINUE 03070033 |
| IVCOMP = 223 * (-99) 03080033 |
| GO TO 43700 03090033 |
| 33700 IVDELE = IVDELE + 1 03100033 |
| WRITE (I02,80003) IVTNUM 03110033 |
| IF (ICZERO) 43700, 3711, 43700 03120033 |
| 43700 IF (IVCOMP + 22077) 23700,13700,23700 03130033 |
| 13700 IVPASS = IVPASS + 1 03140033 |
| WRITE (I02,80001) IVTNUM 03150033 |
| GO TO 3711 03160033 |
| 23700 IVFAIL = IVFAIL + 1 03170033 |
| IVCORR =-22077 03180033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03190033 |
| 3711 CONTINUE 03200033 |
| IVTNUM = 371 03210033 |
| C 03220033 |
| C **** TEST 371 **** 03230033 |
| C 03240033 |
| IF (ICZERO) 33710, 3710, 33710 03250033 |
| 3710 CONTINUE 03260033 |
| IVCOMP= -2 * 16383 03270033 |
| GO TO 43710 03280033 |
| 33710 IVDELE = IVDELE + 1 03290033 |
| WRITE (I02,80003) IVTNUM 03300033 |
| IF (ICZERO) 43710, 3721, 43710 03310033 |
| 43710 IF (IVCOMP+32766) 23710,13710,23710 03320033 |
| 13710 IVPASS = IVPASS + 1 03330033 |
| WRITE (I02,80001) IVTNUM 03340033 |
| GO TO 3721 03350033 |
| 23710 IVFAIL = IVFAIL + 1 03360033 |
| IVCORR= -32766 03370033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03380033 |
| C 03390033 |
| C TEST 372 THROUGH TEST 376 - TWO NEGATIVE CONSTANTS 03400033 |
| C 03410033 |
| 3721 CONTINUE 03420033 |
| IVTNUM = 372 03430033 |
| C 03440033 |
| C **** TEST 372 **** 03450033 |
| C 03460033 |
| IF (ICZERO) 33720, 3720, 33720 03470033 |
| 3720 CONTINUE 03480033 |
| IVCOMP=(-2)*(-3) 03490033 |
| GO TO 43720 03500033 |
| 33720 IVDELE = IVDELE + 1 03510033 |
| WRITE (I02,80003) IVTNUM 03520033 |
| IF (ICZERO) 43720, 3731, 43720 03530033 |
| 43720 IF (IVCOMP-6) 23720,13720,23720 03540033 |
| 13720 IVPASS = IVPASS + 1 03550033 |
| WRITE (I02,80001) IVTNUM 03560033 |
| GO TO 3731 03570033 |
| 23720 IVFAIL = IVFAIL + 1 03580033 |
| IVCORR=6 03590033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03600033 |
| 3731 CONTINUE 03610033 |
| IVTNUM = 373 03620033 |
| C 03630033 |
| C **** TEST 373 **** 03640033 |
| C 03650033 |
| IF (ICZERO) 33730, 3730, 33730 03660033 |
| 3730 CONTINUE 03670033 |
| IVCOMP = -2*(-3) 03680033 |
| GO TO 43730 03690033 |
| 33730 IVDELE = IVDELE + 1 03700033 |
| WRITE (I02,80003) IVTNUM 03710033 |
| IF (ICZERO) 43730, 3741, 43730 03720033 |
| 43730 IF (IVCOMP-6) 23730,13730,23730 03730033 |
| 13730 IVPASS = IVPASS + 1 03740033 |
| WRITE (I02,80001) IVTNUM 03750033 |
| GO TO 3741 03760033 |
| 23730 IVFAIL = IVFAIL + 1 03770033 |
| IVCORR=6 03780033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03790033 |
| 3741 CONTINUE 03800033 |
| IVTNUM = 374 03810033 |
| C 03820033 |
| C **** TEST 374 **** 03830033 |
| C 03840033 |
| IF (ICZERO) 33740, 3740, 33740 03850033 |
| 3740 CONTINUE 03860033 |
| IVCOMP=(-13)*(-11) 03870033 |
| GO TO 43740 03880033 |
| 33740 IVDELE = IVDELE + 1 03890033 |
| WRITE (I02,80003) IVTNUM 03900033 |
| IF (ICZERO) 43740, 3751, 43740 03910033 |
| 43740 IF (IVCOMP-143) 23740,13740,23740 03920033 |
| 13740 IVPASS = IVPASS + 1 03930033 |
| WRITE (I02,80001) IVTNUM 03940033 |
| GO TO 3751 03950033 |
| 23740 IVFAIL = IVFAIL + 1 03960033 |
| IVCORR = 143 03970033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03980033 |
| 3751 CONTINUE 03990033 |
| IVTNUM = 375 04000033 |
| C 04010033 |
| C **** TEST 375 **** 04020033 |
| C 04030033 |
| IF (ICZERO) 33750, 3750, 33750 04040033 |
| 3750 CONTINUE 04050033 |
| IVCOMP= -223 *(-99) 04060033 |
| GO TO 43750 04070033 |
| 33750 IVDELE = IVDELE + 1 04080033 |
| WRITE (I02,80003) IVTNUM 04090033 |
| IF (ICZERO) 43750, 3761, 43750 04100033 |
| 43750 IF (IVCOMP - 22077) 23750,13750,23750 04110033 |
| 13750 IVPASS = IVPASS + 1 04120033 |
| WRITE (I02,80001) IVTNUM 04130033 |
| GO TO 3761 04140033 |
| 23750 IVFAIL = IVFAIL + 1 04150033 |
| IVCORR = 22077 04160033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04170033 |
| 3761 CONTINUE 04180033 |
| IVTNUM = 376 04190033 |
| C 04200033 |
| C **** TEST 376 **** 04210033 |
| C 04220033 |
| IF (ICZERO) 33760, 3760, 33760 04230033 |
| 3760 CONTINUE 04240033 |
| IVCOMP = (-16383)*(-2) 04250033 |
| GO TO 43760 04260033 |
| 33760 IVDELE = IVDELE + 1 04270033 |
| WRITE (I02,80003) IVTNUM 04280033 |
| IF (ICZERO) 43760, 3771, 43760 04290033 |
| 43760 IF (IVCOMP - 32766) 23760,13760,23760 04300033 |
| 13760 IVPASS = IVPASS + 1 04310033 |
| WRITE (I02,80001) IVTNUM 04320033 |
| GO TO 3771 04330033 |
| 23760 IVFAIL = IVFAIL + 1 04340033 |
| IVCORR =32766 04350033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04360033 |
| C 04370033 |
| C TEST 377 THROUGH TEST 394 CONTAIN THREE INTEGER CONSTANTS AND 04380033 |
| C OPERATOR * IN AN ARITHMETIC EXPRESSION. 04390033 |
| C IV = IC * IC * IC 04400033 |
| C 04410033 |
| C TEST 377 THROUGH TEST 382 - CONSTANTS ARE POSITIVE 04420033 |
| C 04430033 |
| 3771 CONTINUE 04440033 |
| IVTNUM = 377 04450033 |
| C 04460033 |
| C **** TEST 377 **** 04470033 |
| C 04480033 |
| IF (ICZERO) 33770, 3770, 33770 04490033 |
| 3770 CONTINUE 04500033 |
| IVCOMP =2*3*4 04510033 |
| GO TO 43770 04520033 |
| 33770 IVDELE = IVDELE + 1 04530033 |
| WRITE (I02,80003) IVTNUM 04540033 |
| IF (ICZERO) 43770, 3781, 43770 04550033 |
| 43770 IF (IVCOMP-24) 23770,13770,23770 04560033 |
| 13770 IVPASS = IVPASS + 1 04570033 |
| WRITE (I02,80001) IVTNUM 04580033 |
| GO TO 3781 04590033 |
| 23770 IVFAIL = IVFAIL + 1 04600033 |
| IVCORR = 24 04610033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04620033 |
| 3781 CONTINUE 04630033 |
| IVTNUM = 378 04640033 |
| C 04650033 |
| C **** TEST 378 **** 04660033 |
| C 04670033 |
| IF (ICZERO) 33780, 3780, 33780 04680033 |
| 3780 CONTINUE 04690033 |
| IVCOMP = 2*3*55 04700033 |
| GO TO 43780 04710033 |
| 33780 IVDELE = IVDELE + 1 04720033 |
| WRITE (I02,80003) IVTNUM 04730033 |
| IF (ICZERO) 43780, 3791, 43780 04740033 |
| 43780 IF (IVCOMP-330) 23780,13780,23780 04750033 |
| 13780 IVPASS = IVPASS + 1 04760033 |
| WRITE (I02,80001) IVTNUM 04770033 |
| GO TO 3791 04780033 |
| 23780 IVFAIL = IVFAIL + 1 04790033 |
| IVCORR = 330 04800033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04810033 |
| 3791 CONTINUE 04820033 |
| IVTNUM = 379 04830033 |
| C 04840033 |
| C **** TEST 379 **** 04850033 |
| C 04860033 |
| IF (ICZERO) 33790, 3790, 33790 04870033 |
| 3790 CONTINUE 04880033 |
| IVCOMP = 23*51*13 04890033 |
| GO TO 43790 04900033 |
| 33790 IVDELE = IVDELE + 1 04910033 |
| WRITE (I02,80003) IVTNUM 04920033 |
| IF (ICZERO) 43790, 3801, 43790 04930033 |
| 43790 IF (IVCOMP-15249) 23790,13790,23790 04940033 |
| 13790 IVPASS = IVPASS + 1 04950033 |
| WRITE (I02,80001) IVTNUM 04960033 |
| GO TO 3801 04970033 |
| 23790 IVFAIL = IVFAIL + 1 04980033 |
| IVCORR = 15249 04990033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05000033 |
| 3801 CONTINUE 05010033 |
| IVTNUM = 380 05020033 |
| C 05030033 |
| C **** TEST 380 **** 05040033 |
| C 05050033 |
| IF (ICZERO) 33800, 3800, 33800 05060033 |
| 3800 CONTINUE 05070033 |
| IVCOMP = 3* 5461* 2 05080033 |
| GO TO 43800 05090033 |
| 33800 IVDELE = IVDELE + 1 05100033 |
| WRITE (I02,80003) IVTNUM 05110033 |
| IF (ICZERO) 43800, 3811, 43800 05120033 |
| 43800 IF (IVCOMP - 32766) 23800,13800,23800 05130033 |
| 13800 IVPASS = IVPASS + 1 05140033 |
| WRITE (I02,80001) IVTNUM 05150033 |
| GO TO 3811 05160033 |
| 23800 IVFAIL = IVFAIL + 1 05170033 |
| IVCORR = 32766 05180033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05190033 |
| 3811 CONTINUE 05200033 |
| IVTNUM = 381 05210033 |
| C 05220033 |
| C **** TEST 381 **** 05230033 |
| C 05240033 |
| IF (ICZERO) 33810, 3810, 33810 05250033 |
| 3810 CONTINUE 05260033 |
| IVCOMP = 16383*2*1 05270033 |
| GO TO 43810 05280033 |
| 33810 IVDELE = IVDELE + 1 05290033 |
| WRITE (I02,80003) IVTNUM 05300033 |
| IF (ICZERO) 43810, 3821, 43810 05310033 |
| 43810 IF (IVCOMP-32766) 23810,13810,23810 05320033 |
| 13810 IVPASS = IVPASS + 1 05330033 |
| WRITE (I02,80001) IVTNUM 05340033 |
| GO TO 3821 05350033 |
| 23810 IVFAIL = IVFAIL + 1 05360033 |
| IVCORR = 32766 05370033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05380033 |
| 3821 CONTINUE 05390033 |
| IVTNUM = 382 05400033 |
| C 05410033 |
| C **** TEST 382 **** 05420033 |
| C 05430033 |
| IF (ICZERO) 33820, 3820, 33820 05440033 |
| 3820 CONTINUE 05450033 |
| IVCOMP = 3*53*157 05460033 |
| GO TO 43820 05470033 |
| 33820 IVDELE = IVDELE + 1 05480033 |
| WRITE (I02,80003) IVTNUM 05490033 |
| IF (ICZERO) 43820, 3831, 43820 05500033 |
| 43820 IF (IVCOMP-24963) 23820,13820,23820 05510033 |
| 13820 IVPASS = IVPASS + 1 05520033 |
| WRITE (I02,80001) IVTNUM 05530033 |
| GO TO 3831 05540033 |
| 23820 IVFAIL = IVFAIL + 1 05550033 |
| IVCORR = 24963 05560033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05570033 |
| C 05580033 |
| C TEST 383 THROUGH TEST 386 05590033 |
| C THREE POSITIVE INTEGER CONSTANTS GROUPED WITH PARENS. 05600033 |
| C 05610033 |
| 3831 CONTINUE 05620033 |
| IVTNUM = 383 05630033 |
| C 05640033 |
| C **** TEST 383 **** 05650033 |
| C 05660033 |
| IF (ICZERO) 33830, 3830, 33830 05670033 |
| 3830 CONTINUE 05680033 |
| IVCOMP = (2*3)*4 05690033 |
| GO TO 43830 05700033 |
| 33830 IVDELE = IVDELE + 1 05710033 |
| WRITE (I02,80003) IVTNUM 05720033 |
| IF (ICZERO) 43830, 3841, 43830 05730033 |
| 43830 IF (IVCOMP-24) 23830,13830,23830 05740033 |
| 13830 IVPASS = IVPASS + 1 05750033 |
| WRITE (I02,80001) IVTNUM 05760033 |
| GO TO 3841 05770033 |
| 23830 IVFAIL = IVFAIL + 1 05780033 |
| IVCORR = 24 05790033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05800033 |
| 3841 CONTINUE 05810033 |
| IVTNUM = 384 05820033 |
| C 05830033 |
| C **** TEST 384 **** 05840033 |
| C 05850033 |
| IF (ICZERO) 33840, 3840, 33840 05860033 |
| 3840 CONTINUE 05870033 |
| IVCOMP = 2*(3*4) 05880033 |
| GO TO 43840 05890033 |
| 33840 IVDELE = IVDELE + 1 05900033 |
| WRITE (I02,80003) IVTNUM 05910033 |
| IF (ICZERO) 43840, 3851, 43840 05920033 |
| 43840 IF (IVCOMP-24) 23840,13840,23840 05930033 |
| 13840 IVPASS = IVPASS + 1 05940033 |
| WRITE (I02,80001) IVTNUM 05950033 |
| GO TO 3851 05960033 |
| 23840 IVFAIL = IVFAIL + 1 05970033 |
| IVCORR = 24 05980033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05990033 |
| 3851 CONTINUE 06000033 |
| IVTNUM = 385 06010033 |
| C 06020033 |
| C **** TEST 385 **** 06030033 |
| C 06040033 |
| IF (ICZERO) 33850, 3850, 33850 06050033 |
| 3850 CONTINUE 06060033 |
| IVCOMP = (3*(+53)) * (+157) 06070033 |
| GO TO 43850 06080033 |
| 33850 IVDELE = IVDELE + 1 06090033 |
| WRITE (I02,80003) IVTNUM 06100033 |
| IF (ICZERO) 43850, 3861, 43850 06110033 |
| 43850 IF (IVCOMP-24963) 23850,13850,23850 06120033 |
| 13850 IVPASS = IVPASS + 1 06130033 |
| WRITE (I02,80001) IVTNUM 06140033 |
| GO TO 3861 06150033 |
| 23850 IVFAIL = IVFAIL + 1 06160033 |
| IVCORR = 24963 06170033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06180033 |
| 3861 CONTINUE 06190033 |
| IVTNUM = 386 06200033 |
| C 06210033 |
| C **** TEST 386 **** 06220033 |
| C 06230033 |
| IF (ICZERO) 33860, 3860, 33860 06240033 |
| 3860 CONTINUE 06250033 |
| IVCOMP = 3 *((+53)*157) 06260033 |
| GO TO 43860 06270033 |
| 33860 IVDELE = IVDELE + 1 06280033 |
| WRITE (I02,80003) IVTNUM 06290033 |
| IF (ICZERO) 43860, 3871, 43860 06300033 |
| 43860 IF (IVCOMP-24963) 23860,13860,23860 06310033 |
| 13860 IVPASS = IVPASS + 1 06320033 |
| WRITE (I02,80001) IVTNUM 06330033 |
| GO TO 3871 06340033 |
| 23860 IVFAIL = IVFAIL + 1 06350033 |
| IVCORR=24963 06360033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06370033 |
| C 06380033 |
| C TEST 387 THROUGH TEST 391 06390033 |
| C BOTH POSITIVE AND NEGATIVE CONSTANTS IN ARITHMETIC EXPRESSION.06400033 |
| C 06410033 |
| 3871 CONTINUE 06420033 |
| IVTNUM = 387 06430033 |
| C 06440033 |
| C **** TEST 387 **** 06450033 |
| C 06460033 |
| IF (ICZERO) 33870, 3870, 33870 06470033 |
| 3870 CONTINUE 06480033 |
| IVCOMP = 2*3*(-4) 06490033 |
| GO TO 43870 06500033 |
| 33870 IVDELE = IVDELE + 1 06510033 |
| WRITE (I02,80003) IVTNUM 06520033 |
| IF (ICZERO) 43870, 3881, 43870 06530033 |
| 43870 IF (IVCOMP + 24) 23870,13870,23870 06540033 |
| 13870 IVPASS = IVPASS + 1 06550033 |
| WRITE (I02,80001) IVTNUM 06560033 |
| GO TO 3881 06570033 |
| 23870 IVFAIL = IVFAIL + 1 06580033 |
| IVCORR = -24 06590033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06600033 |
| 3881 CONTINUE 06610033 |
| IVTNUM = 388 06620033 |
| C 06630033 |
| C **** TEST 388 **** 06640033 |
| C 06650033 |
| IF (ICZERO) 33880, 3880, 33880 06660033 |
| 3880 CONTINUE 06670033 |
| IVCOMP = 2*(-3)*(+4) 06680033 |
| GO TO 43880 06690033 |
| 33880 IVDELE = IVDELE + 1 06700033 |
| WRITE (I02,80003) IVTNUM 06710033 |
| IF (ICZERO) 43880, 3891, 43880 06720033 |
| 43880 IF (IVCOMP + 24) 23880,13880,23880 06730033 |
| 13880 IVPASS = IVPASS + 1 06740033 |
| WRITE (I02,80001) IVTNUM 06750033 |
| GO TO 3891 06760033 |
| 23880 IVFAIL = IVFAIL + 1 06770033 |
| IVCORR = -24 06780033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06790033 |
| 3891 CONTINUE 06800033 |
| IVTNUM = 389 06810033 |
| C 06820033 |
| C **** TEST 389 **** 06830033 |
| C 06840033 |
| IF (ICZERO) 33890, 3890, 33890 06850033 |
| 3890 CONTINUE 06860033 |
| IVCOMP = (-2)*3*4 06870033 |
| GO TO 43890 06880033 |
| 33890 IVDELE = IVDELE + 1 06890033 |
| WRITE (I02,80003) IVTNUM 06900033 |
| IF (ICZERO) 43890, 3901, 43890 06910033 |
| 43890 IF (IVCOMP+24) 23890,13890,23890 06920033 |
| 13890 IVPASS = IVPASS + 1 06930033 |
| WRITE (I02,80001) IVTNUM 06940033 |
| GO TO 3901 06950033 |
| 23890 IVFAIL = IVFAIL + 1 06960033 |
| IVCORR = -24 06970033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06980033 |
| 3901 CONTINUE 06990033 |
| IVTNUM = 390 07000033 |
| C 07010033 |
| C **** TEST 390 **** 07020033 |
| C 07030033 |
| IF (ICZERO) 33900, 3900, 33900 07040033 |
| 3900 CONTINUE 07050033 |
| IVCOMP = -2*3*4 07060033 |
| GO TO 43900 07070033 |
| 33900 IVDELE = IVDELE + 1 07080033 |
| WRITE (I02,80003) IVTNUM 07090033 |
| IF (ICZERO) 43900, 3911, 43900 07100033 |
| 43900 IF (IVCOMP+24) 23900,13900,23900 07110033 |
| 13900 IVPASS = IVPASS + 1 07120033 |
| WRITE (I02,80001) IVTNUM 07130033 |
| GO TO 3911 07140033 |
| 23900 IVFAIL = IVFAIL + 1 07150033 |
| IVCORR = -24 07160033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07170033 |
| 3911 CONTINUE 07180033 |
| IVTNUM = 391 07190033 |
| C 07200033 |
| C **** TEST 391 **** 07210033 |
| C 07220033 |
| IF (ICZERO) 33910, 3910, 33910 07230033 |
| 3910 CONTINUE 07240033 |
| IVCOMP = +2 * (-3) * (-4) 07250033 |
| GO TO 43910 07260033 |
| 33910 IVDELE = IVDELE + 1 07270033 |
| WRITE (I02,80003) IVTNUM 07280033 |
| IF (ICZERO) 43910, 3921, 43910 07290033 |
| 43910 IF (IVCOMP - 24) 23910,13910,23910 07300033 |
| 13910 IVPASS = IVPASS + 1 07310033 |
| WRITE (I02,80001) IVTNUM 07320033 |
| GO TO 3921 07330033 |
| 23910 IVFAIL = IVFAIL + 1 07340033 |
| IVCORR = 24 07350033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07360033 |
| C 07370033 |
| C TEST 392 THROUGH TEST 394 07380033 |
| C ALL CONSTANTS ARE NEGATIVE. 07390033 |
| C 07400033 |
| 3921 CONTINUE 07410033 |
| IVTNUM = 392 07420033 |
| C 07430033 |
| C **** TEST 392 **** 07440033 |
| C 07450033 |
| IF (ICZERO) 33920, 3920, 33920 07460033 |
| 3920 CONTINUE 07470033 |
| IVCOMP = (-2)*(-3)*(-4) 07480033 |
| GO TO 43920 07490033 |
| 33920 IVDELE = IVDELE + 1 07500033 |
| WRITE (I02,80003) IVTNUM 07510033 |
| IF (ICZERO) 43920, 3931, 43920 07520033 |
| 43920 IF (IVCOMP+24) 23920,13920,23920 07530033 |
| 13920 IVPASS = IVPASS + 1 07540033 |
| WRITE (I02,80001) IVTNUM 07550033 |
| GO TO 3931 07560033 |
| 23920 IVFAIL = IVFAIL + 1 07570033 |
| IVCORR = -24 07580033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07590033 |
| 3931 CONTINUE 07600033 |
| IVTNUM = 393 07610033 |
| C 07620033 |
| C **** TEST 393 **** 07630033 |
| C 07640033 |
| IF (ICZERO) 33930, 3930, 33930 07650033 |
| 3930 CONTINUE 07660033 |
| IVCOMP = (-23)*(-51)*(-13) 07670033 |
| GO TO 43930 07680033 |
| 33930 IVDELE = IVDELE + 1 07690033 |
| WRITE (I02,80003) IVTNUM 07700033 |
| IF (ICZERO) 43930, 3941, 43930 07710033 |
| 43930 IF (IVCOMP + 15249) 23930,13930,23930 07720033 |
| 13930 IVPASS = IVPASS + 1 07730033 |
| WRITE (I02,80001) IVTNUM 07740033 |
| GO TO 3941 07750033 |
| 23930 IVFAIL = IVFAIL + 1 07760033 |
| IVCORR = -15249 07770033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07780033 |
| 3941 CONTINUE 07790033 |
| IVTNUM = 394 07800033 |
| C 07810033 |
| C **** TEST 394 **** 07820033 |
| C 07830033 |
| IF (ICZERO) 33940, 3940, 33940 07840033 |
| 3940 CONTINUE 07850033 |
| IVCOMP = -3 * (-53)*( -157) 07860033 |
| GO TO 43940 07870033 |
| 33940 IVDELE = IVDELE + 1 07880033 |
| WRITE (I02,80003) IVTNUM 07890033 |
| IF (ICZERO) 43940, 3951, 43940 07900033 |
| 43940 IF (IVCOMP +24963) 23940,13940,23940 07910033 |
| 13940 IVPASS = IVPASS + 1 07920033 |
| WRITE (I02,80001) IVTNUM 07930033 |
| GO TO 3951 07940033 |
| 23940 IVFAIL = IVFAIL + 1 07950033 |
| IVCORR = -24963 07960033 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07970033 |
| C **** END OF TESTS **** 07980033 |
| 3951 CONTINUE 07990033 |
| C 08000033 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08010033 |
| 99999 CONTINUE 08020033 |
| WRITE (I02,90002) 08030033 |
| WRITE (I02,90006) 08040033 |
| WRITE (I02,90002) 08050033 |
| WRITE (I02,90002) 08060033 |
| WRITE (I02,90007) 08070033 |
| WRITE (I02,90002) 08080033 |
| WRITE (I02,90008) IVFAIL 08090033 |
| WRITE (I02,90009) IVPASS 08100033 |
| WRITE (I02,90010) IVDELE 08110033 |
| C 08120033 |
| C 08130033 |
| C TERMINATE ROUTINE EXECUTION 08140033 |
| STOP 08150033 |
| C 08160033 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 08170033 |
| 90000 FORMAT ("1") 08180033 |
| 90002 FORMAT (" ") 08190033 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08200033 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08210033 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08220033 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08230033 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08240033 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08250033 |
| C 08260033 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 08270033 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08280033 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08290033 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08300033 |
| C 08310033 |
| C FORMAT STATEMENTS FOR TEST RESULTS 08320033 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 08330033 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08340033 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08350033 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08360033 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08370033 |
| C 08380033 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM033" ) 08390033 |
| END 08400033 |