FM033.f Source File


Contents

Source Code


Source Code

      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