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