FM035.f Source File


Contents

Source Code


Source Code

      PROGRAM FM035

C     COMMENT SECTION                                                   00010035
C                                                                       00020035
C     FM035                                                             00030035
C                                                                       00040035
C         THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE    00050035
C     FORM                                                              00060035
C              INTEGER VARIABLE = ARITHMETIC EXPRESSION                 00070035
C     WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC     00080035
C     OPERATOR *, INTEGER VARIABLES AND INTEGER CONSTANT.  SOME OF THE  00090035
C     TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE EXPRESSION AND TO  00100035
C     ALLOW THE USE OF NEGATIVE CONSTANTS FOLLOWING THE * OPERATOR.     00110035
C     THE INTEGER VARIABLES CONTAIN POSITIVE AND NEGATIVE VALUES.       00120035
C                                                                       00130035
C     THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS          00140035
C         (1)  INTEGER VARIABLE * INTEGER VARIABLE                      00150035
C         (2)  INTEGER VARIABLE * INTEGER VARIABLE * INTEGER CONSTANT   00160035
C              INTEGER VARIABLE * INTEGER CONSTANT * INTEGER VARIABLE   00170035
C              INTEGER CONSTANT * INTEGER VARIABLE * INTEGER VARIABLE   00180035
C         (3)  SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS.      00190035
C                                                                       00200035
C      REFERENCES                                                       00210035
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00220035
C              X3.9-1978                                                00230035
C                                                                       00240035
C        SECTION 4.3, INTEGER TYPE                                      00250035
C        SECTION 4.3.1, INTEGER CONSTANT                                00260035
C        SECTION 6.1, ARITHMETIC EXPRESSIONS                            00270035
C        SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT                  00280035
C                                                                       00290035
C      **********************************************************       00300035
C                                                                       00310035
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00320035
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00330035
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00340035
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00350035
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00360035
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00370035
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00380035
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00390035
C     OF EXECUTING THESE TESTS.                                         00400035
C                                                                       00410035
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00420035
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00430035
C                                                                       00440035
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00450035
C                                                                       00460035
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00470035
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00480035
C                          BUILDING 225  RM A266                        00490035
C                         GAITHERSBURG, MD  20899                       00500035
C      **********************************************************       00510035
C                                                                       00520035
C                                                                       00530035
C                                                                       00540035
C     INITIALIZATION SECTION                                            00550035
C                                                                       00560035
C     INITIALIZE CONSTANTS                                              00570035
C      **************                                                   00580035
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00590035
      I01 = 5                                                           00600035
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00610035
      I02 = 6                                                           00620035
C     SYSTEM ENVIRONMENT SECTION                                        00630035
C                                                                       00640035
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00650035
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00660035
C     (UNIT NUMBER FOR CARD READER).                                    00670035
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00680035
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00690035
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00700035
C                                                                       00710035
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00720035
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00730035
C     (UNIT NUMBER FOR PRINTER).                                        00740035
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00750035
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00760035
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00770035
C                                                                       00780035
      IVPASS=0                                                          00790035
      IVFAIL=0                                                          00800035
      IVDELE=0                                                          00810035
      ICZERO=0                                                          00820035
C                                                                       00830035
C     WRITE PAGE HEADERS                                                00840035
      WRITE (I02,90000)                                                 00850035
      WRITE (I02,90001)                                                 00860035
      WRITE (I02,90002)                                                 00870035
      WRITE (I02, 90002)                                                00880035
      WRITE (I02,90003)                                                 00890035
      WRITE (I02,90002)                                                 00900035
      WRITE (I02,90004)                                                 00910035
      WRITE (I02,90002)                                                 00920035
      WRITE (I02,90011)                                                 00930035
      WRITE (I02,90002)                                                 00940035
      WRITE (I02,90002)                                                 00950035
      WRITE (I02,90005)                                                 00960035
      WRITE (I02,90006)                                                 00970035
      WRITE (I02,90002)                                                 00980035
C                                                                       00990035
C     TEST SECTION                                                      01000035
C                                                                       01010035
C         ARITHMETIC ASSIGNMENT STATEMENT                               01020035
C                                                                       01030035
C     TEST 430 THROUGH TEST 441 CONTAIN TWO INTEGER VARIABLES AND       01040035
C     OPERATOR * IN AN ARITHMETIC EXPRESSION.                           01050035
C         THE FORM IS   IV = IV * IV                                    01060035
C                                                                       01070035
C     TEST 430 THROUGH TEST 433  -  TWO POSITIVE VARIABLES              01080035
C                                                                       01090035
 4301 CONTINUE                                                          01100035
      IVTNUM = 430                                                      01110035
C                                                                       01120035
C      ****  TEST 430  ****                                             01130035
C                                                                       01140035
      IF (ICZERO) 34300, 4300, 34300                                    01150035
 4300 CONTINUE                                                          01160035
      IVON01 = 2                                                        01170035
      IVON02 = 3                                                        01180035
      IVCOMP = IVON01 * IVON02                                          01190035
      GO TO 44300                                                       01200035
34300 IVDELE = IVDELE + 1                                               01210035
      WRITE (I02,80003) IVTNUM                                          01220035
      IF (ICZERO) 44300, 4311, 44300                                    01230035
44300 IF (IVCOMP - 6) 24300,14300,24300                                 01240035
14300 IVPASS = IVPASS + 1                                               01250035
      WRITE (I02,80001) IVTNUM                                          01260035
      GO TO 4311                                                        01270035
24300 IVFAIL = IVFAIL + 1                                               01280035
      IVCORR = 6                                                        01290035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01300035
 4311 CONTINUE                                                          01310035
      IVTNUM = 431                                                      01320035
C                                                                       01330035
C      ****  TEST 431  ****                                             01340035
C                                                                       01350035
      IF (ICZERO) 34310, 4310, 34310                                    01360035
 4310 CONTINUE                                                          01370035
      IVON01 = 13                                                       01380035
      IVON02 = 11                                                       01390035
      IVCOMP = IVON01 * IVON02                                          01400035
      GO TO 44310                                                       01410035
34310 IVDELE = IVDELE + 1                                               01420035
      WRITE (I02,80003) IVTNUM                                          01430035
      IF (ICZERO) 44310, 4321, 44310                                    01440035
44310 IF (IVCOMP - 143) 24310,14310,24310                               01450035
14310 IVPASS = IVPASS + 1                                               01460035
      WRITE (I02,80001) IVTNUM                                          01470035
      GO TO 4321                                                        01480035
24310 IVFAIL = IVFAIL + 1                                               01490035
      IVCORR = 143                                                      01500035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01510035
 4321 CONTINUE                                                          01520035
      IVTNUM = 432                                                      01530035
C                                                                       01540035
C      ****  TEST 432  ****                                             01550035
C                                                                       01560035
      IF (ICZERO) 34320, 4320, 34320                                    01570035
 4320 CONTINUE                                                          01580035
      IVON01 = 223                                                      01590035
      IVON02 = 99                                                       01600035
      IVCOMP = IVON01 * IVON02                                          01610035
      GO TO 44320                                                       01620035
34320 IVDELE = IVDELE + 1                                               01630035
      WRITE (I02,80003) IVTNUM                                          01640035
      IF (ICZERO) 44320, 4331, 44320                                    01650035
44320 IF (IVCOMP - 22077) 24320,14320,24320                             01660035
14320 IVPASS = IVPASS + 1                                               01670035
      WRITE (I02,80001) IVTNUM                                          01680035
      GO TO 4331                                                        01690035
24320 IVFAIL = IVFAIL + 1                                               01700035
      IVCORR = 22077                                                    01710035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01720035
 4331 CONTINUE                                                          01730035
      IVTNUM = 433                                                      01740035
C                                                                       01750035
C      ****  TEST 433  ****                                             01760035
C                                                                       01770035
      IF (ICZERO) 34330, 4330, 34330                                    01780035
 4330 CONTINUE                                                          01790035
      IVON01 = 11235                                                    01800035
      IVON02 = 2                                                        01810035
      IVCOMP = IVON01*IVON02                                            01820035
      GO TO 44330                                                       01830035
34330 IVDELE = IVDELE + 1                                               01840035
      WRITE (I02,80003) IVTNUM                                          01850035
      IF (ICZERO) 44330, 4341, 44330                                    01860035
44330 IF (IVCOMP - 22470) 24330,14330,24330                             01870035
14330 IVPASS = IVPASS + 1                                               01880035
      WRITE (I02,80001) IVTNUM                                          01890035
      GO TO 4341                                                        01900035
24330 IVFAIL = IVFAIL + 1                                               01910035
      IVCORR = 22470                                                    01920035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01930035
C                                                                       01940035
C     TEST 434 THROUGH TEST 437                                         01950035
C          ONE NEGATIVE VARIABLE, ONE POSITIVE VARIABLE                 01960035
C                                                                       01970035
 4341 CONTINUE                                                          01980035
      IVTNUM = 434                                                      01990035
C                                                                       02000035
C      ****  TEST 434  ****                                             02010035
C                                                                       02020035
      IF (ICZERO) 34340, 4340, 34340                                    02030035
 4340 CONTINUE                                                          02040035
      IVON01 = -2                                                       02050035
      IVON02 = 3                                                        02060035
      IVCOMP = IVON01 * IVON02                                          02070035
      GO TO 44340                                                       02080035
34340 IVDELE = IVDELE + 1                                               02090035
      WRITE (I02,80003) IVTNUM                                          02100035
      IF (ICZERO) 44340, 4351, 44340                                    02110035
44340 IF (IVCOMP +6) 24340,14340,24340                                  02120035
14340 IVPASS = IVPASS + 1                                               02130035
      WRITE (I02,80001) IVTNUM                                          02140035
      GO TO 4351                                                        02150035
24340 IVFAIL = IVFAIL + 1                                               02160035
      IVCORR = -6                                                       02170035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02180035
 4351 CONTINUE                                                          02190035
      IVTNUM = 435                                                      02200035
C                                                                       02210035
C      ****  TEST 435  ****                                             02220035
C                                                                       02230035
      IF (ICZERO) 34350, 4350, 34350                                    02240035
 4350 CONTINUE                                                          02250035
      IVON01 = -13                                                      02260035
      IVON02 = +11                                                      02270035
      IVCOMP = IVON01*IVON02                                            02280035
      GO TO 44350                                                       02290035
34350 IVDELE = IVDELE + 1                                               02300035
      WRITE (I02,80003) IVTNUM                                          02310035
      IF (ICZERO) 44350, 4361, 44350                                    02320035
44350 IF (IVCOMP + 143) 24350,14350,24350                               02330035
14350 IVPASS = IVPASS + 1                                               02340035
      WRITE (I02,80001) IVTNUM                                          02350035
      GO TO 4361                                                        02360035
24350 IVFAIL = IVFAIL + 1                                               02370035
      IVCORR = -143                                                     02380035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02390035
 4361 CONTINUE                                                          02400035
      IVTNUM = 436                                                      02410035
C                                                                       02420035
C      ****  TEST 436  ****                                             02430035
C                                                                       02440035
      IF (ICZERO) 34360, 4360, 34360                                    02450035
 4360 CONTINUE                                                          02460035
      IVON01 = -223                                                     02470035
      IVON02 = 99                                                       02480035
      IVCOMP = IVON01 * IVON02                                          02490035
      GO TO 44360                                                       02500035
34360 IVDELE = IVDELE + 1                                               02510035
      WRITE (I02,80003) IVTNUM                                          02520035
      IF (ICZERO) 44360, 4371, 44360                                    02530035
44360 IF (IVCOMP + 22077) 24360,14360,24360                             02540035
14360 IVPASS = IVPASS + 1                                               02550035
      WRITE (I02,80001) IVTNUM                                          02560035
      GO TO 4371                                                        02570035
24360 IVFAIL = IVFAIL + 1                                               02580035
      IVCORR = -22077                                                   02590035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02600035
 4371 CONTINUE                                                          02610035
      IVTNUM = 437                                                      02620035
C                                                                       02630035
C      ****  TEST 437  ****                                             02640035
C                                                                       02650035
      IF (ICZERO) 34370, 4370, 34370                                    02660035
 4370 CONTINUE                                                          02670035
      IVON01 = -11235                                                   02680035
      IVON02 =  2                                                       02690035
      IVCOMP = IVON01 * IVON02                                          02700035
      GO TO 44370                                                       02710035
34370 IVDELE = IVDELE + 1                                               02720035
      WRITE (I02,80003) IVTNUM                                          02730035
      IF (ICZERO) 44370, 4381, 44370                                    02740035
44370 IF (IVCOMP + 22470) 24370,14370,24370                             02750035
14370 IVPASS = IVPASS + 1                                               02760035
      WRITE (I02,80001) IVTNUM                                          02770035
      GO TO 4381                                                        02780035
24370 IVFAIL = IVFAIL + 1                                               02790035
      IVCORR = -22470                                                   02800035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02810035
C                                                                       02820035
C     TEST 438 THROUGH TEST 441  -  TWO NEGATIVE VARIABLES              02830035
 4381 CONTINUE                                                          02840035
      IVTNUM = 438                                                      02850035
C                                                                       02860035
C      ****  TEST 438  ****                                             02870035
C                                                                       02880035
      IF (ICZERO) 34380, 4380, 34380                                    02890035
 4380 CONTINUE                                                          02900035
      IVON01 = -2                                                       02910035
      IVON02 = -3                                                       02920035
      IVCOMP = IVON01 * IVON02                                          02930035
      GO TO 44380                                                       02940035
34380 IVDELE = IVDELE + 1                                               02950035
      WRITE (I02,80003) IVTNUM                                          02960035
      IF (ICZERO) 44380, 4391, 44380                                    02970035
44380 IF (IVCOMP - 6) 24380,14380,24380                                 02980035
14380 IVPASS = IVPASS + 1                                               02990035
      WRITE (I02,80001) IVTNUM                                          03000035
      GO TO 4391                                                        03010035
24380 IVFAIL = IVFAIL + 1                                               03020035
      IVCORR = 6                                                        03030035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03040035
 4391 CONTINUE                                                          03050035
      IVTNUM = 439                                                      03060035
C                                                                       03070035
C      ****  TEST 439  ****                                             03080035
C                                                                       03090035
      IF (ICZERO) 34390, 4390, 34390                                    03100035
 4390 CONTINUE                                                          03110035
      IVON01 = -13                                                      03120035
      IVON02 = -11                                                      03130035
      IVCOMP = IVON01 * IVON02                                          03140035
      GO TO 44390                                                       03150035
34390 IVDELE = IVDELE + 1                                               03160035
      WRITE (I02,80003) IVTNUM                                          03170035
      IF (ICZERO) 44390, 4401, 44390                                    03180035
44390 IF (IVCOMP - 143) 24390,14390,24390                               03190035
14390 IVPASS = IVPASS + 1                                               03200035
      WRITE (I02,80001) IVTNUM                                          03210035
      GO TO 4401                                                        03220035
24390 IVFAIL = IVFAIL + 1                                               03230035
      IVCORR = 143                                                      03240035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03250035
 4401 CONTINUE                                                          03260035
      IVTNUM = 440                                                      03270035
C                                                                       03280035
C      ****  TEST 440  ****                                             03290035
C                                                                       03300035
      IF (ICZERO) 34400, 4400, 34400                                    03310035
 4400 CONTINUE                                                          03320035
      IVON01 = -223                                                     03330035
      IVON02 = -99                                                      03340035
      IVCOMP = IVON01*IVON02                                            03350035
      GO TO 44400                                                       03360035
34400 IVDELE = IVDELE + 1                                               03370035
      WRITE (I02,80003) IVTNUM                                          03380035
      IF (ICZERO) 44400, 4411, 44400                                    03390035
44400 IF (IVCOMP - 22077) 24400,14400,24400                             03400035
14400 IVPASS = IVPASS + 1                                               03410035
      WRITE (I02,80001) IVTNUM                                          03420035
      GO TO 4411                                                        03430035
24400 IVFAIL = IVFAIL + 1                                               03440035
      IVCORR = 22077                                                    03450035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03460035
 4411 CONTINUE                                                          03470035
      IVTNUM = 441                                                      03480035
C                                                                       03490035
C      ****  TEST 441  ****                                             03500035
C                                                                       03510035
      IF (ICZERO) 34410, 4410, 34410                                    03520035
 4410 CONTINUE                                                          03530035
      IVON01 = -5461                                                    03540035
      IVON02 = -6                                                       03550035
      IVCOMP = IVON01 * IVON02                                          03560035
      GO TO 44410                                                       03570035
34410 IVDELE = IVDELE + 1                                               03580035
      WRITE (I02,80003) IVTNUM                                          03590035
      IF (ICZERO) 44410, 4421, 44410                                    03600035
44410 IF (IVCOMP - 32766) 24410, 14410, 24410                           03610035
14410 IVPASS = IVPASS + 1                                               03620035
      WRITE (I02,80001) IVTNUM                                          03630035
      GO TO 4421                                                        03640035
24410 IVFAIL = IVFAIL + 1                                               03650035
      IVCORR = 32766                                                    03660035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03670035
C                                                                       03680035
C     TEST 442 THROUGH TEST 445 CONTAIN SIGNED INTEGER VARIABLES AND    03690035
C     OPERATOR * IN AN ARITHMETIC EXPRESSION.                           03700035
 4421 CONTINUE                                                          03710035
      IVTNUM = 442                                                      03720035
C                                                                       03730035
C      ****  TEST 442  ****                                             03740035
C        FORM IS  IV = -IV*IV                                           03750035
C                                                                       03760035
      IF (ICZERO) 34420, 4420, 34420                                    03770035
 4420 CONTINUE                                                          03780035
      IVON01 = 2                                                        03790035
      IVON02 = 3                                                        03800035
      IVCOMP = -IVON01 * IVON02                                         03810035
      GO TO 44420                                                       03820035
34420 IVDELE = IVDELE + 1                                               03830035
      WRITE (I02,80003) IVTNUM                                          03840035
      IF (ICZERO) 44420, 4431, 44420                                    03850035
44420 IF (IVCOMP + 6) 24420,14420,24420                                 03860035
14420 IVPASS = IVPASS + 1                                               03870035
      WRITE (I02,80001) IVTNUM                                          03880035
      GO TO 4431                                                        03890035
24420 IVFAIL = IVFAIL + 1                                               03900035
      IVCORR = -6                                                       03910035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03920035
 4431 CONTINUE                                                          03930035
      IVTNUM = 443                                                      03940035
C                                                                       03950035
C      ****  TEST 443  ****                                             03960035
C        FORM IS  IV = IV*(-IV)                                         03970035
C                                                                       03980035
      IF (ICZERO) 34430, 4430, 34430                                    03990035
 4430 CONTINUE                                                          04000035
      IVON01 = 2                                                        04010035
      IVON02 = 3                                                        04020035
      IVCOMP = IVON01 * (-IVON02)                                       04030035
      GO TO 44430                                                       04040035
34430 IVDELE = IVDELE + 1                                               04050035
      WRITE (I02,80003) IVTNUM                                          04060035
      IF (ICZERO) 44430, 4441, 44430                                    04070035
44430 IF (IVCOMP +6) 24430,14430,24430                                  04080035
14430 IVPASS = IVPASS + 1                                               04090035
      WRITE (I02,80001) IVTNUM                                          04100035
      GO TO 4441                                                        04110035
24430 IVFAIL = IVFAIL + 1                                               04120035
      IVCORR = -6                                                       04130035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04140035
 4441 CONTINUE                                                          04150035
      IVTNUM = 444                                                      04160035
C                                                                       04170035
C      ****  TEST 444  ****                                             04180035
C        FORM IS  IV = (-IV)*(-IV)                                      04190035
C                                                                       04200035
      IF (ICZERO) 34440, 4440, 34440                                    04210035
 4440 CONTINUE                                                          04220035
      IVON01 = 2                                                        04230035
      IVON02 = 3                                                        04240035
      IVCOMP = (-IVON01) * (-IVON02)                                    04250035
      GO TO 44440                                                       04260035
34440 IVDELE = IVDELE + 1                                               04270035
      WRITE (I02,80003) IVTNUM                                          04280035
      IF (ICZERO) 44440, 4451, 44440                                    04290035
44440 IF (IVCOMP - 6) 24440,14440,24440                                 04300035
14440 IVPASS = IVPASS + 1                                               04310035
      WRITE (I02,80001) IVTNUM                                          04320035
      GO TO 4451                                                        04330035
24440 IVFAIL = IVFAIL + 1                                               04340035
      IVCORR =  6                                                       04350035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04360035
 4451 CONTINUE                                                          04370035
      IVTNUM = 445                                                      04380035
C                                                                       04390035
C      ****  TEST 445  ****                                             04400035
C        FORM IS   IV = -IV * IV                                        04410035
C                                                                       04420035
      IF (ICZERO) 34450, 4450, 34450                                    04430035
 4450 CONTINUE                                                          04440035
      IVON01 = -11235                                                   04450035
      IVON02 =  -2                                                      04460035
      IVCOMP = -IVON01 * IVON02                                         04470035
      GO TO 44450                                                       04480035
34450 IVDELE = IVDELE + 1                                               04490035
      WRITE (I02,80003) IVTNUM                                          04500035
      IF (ICZERO) 44450, 4461, 44450                                    04510035
44450 IF (IVCOMP + 22470) 24450,14450,24450                             04520035
14450 IVPASS = IVPASS + 1                                               04530035
      WRITE (I02,80001) IVTNUM                                          04540035
      GO TO 4461                                                        04550035
24450 IVFAIL = IVFAIL + 1                                               04560035
      IVCORR = -22470                                                   04570035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04580035
C                                                                       04590035
C     TEST 446 THROUGH TEST 452 CONTAIN TWO INTEGER VARIABLES, AN       04600035
C     INTEGER CONSTANT AND OPERATOR * IN AN ARITHMETIC EXPRESSION.      04610035
C                                                                       04620035
 4461 CONTINUE                                                          04630035
      IVTNUM = 446                                                      04640035
C                                                                       04650035
C      ****  TEST 446  ****                                             04660035
C                                                                       04670035
      IF (ICZERO) 34460, 4460, 34460                                    04680035
 4460 CONTINUE                                                          04690035
      IVON01 = 2                                                        04700035
      IVON02 = 3                                                        04710035
      IVCOMP = IVON01 * IVON02 * 4                                      04720035
      GO TO 44460                                                       04730035
34460 IVDELE = IVDELE + 1                                               04740035
      WRITE (I02,80003) IVTNUM                                          04750035
      IF (ICZERO) 44460, 4471, 44460                                    04760035
44460 IF (IVCOMP -24) 24460,14460,24460                                 04770035
14460 IVPASS = IVPASS + 1                                               04780035
      WRITE (I02,80001) IVTNUM                                          04790035
      GO TO 4471                                                        04800035
24460 IVFAIL = IVFAIL + 1                                               04810035
      IVCORR = 24                                                       04820035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04830035
 4471 CONTINUE                                                          04840035
      IVTNUM = 447                                                      04850035
C                                                                       04860035
C      ****  TEST 447  ****                                             04870035
C                                                                       04880035
      IF (ICZERO) 34470, 4470, 34470                                    04890035
 4470 CONTINUE                                                          04900035
      IVON01 = -2                                                       04910035
      IVON02 = 3                                                        04920035
      IVCOMP = IVON01 * IVON02 * 4                                      04930035
      GO TO 44470                                                       04940035
34470 IVDELE = IVDELE + 1                                               04950035
      WRITE (I02,80003) IVTNUM                                          04960035
      IF (ICZERO) 44470, 4481, 44470                                    04970035
44470 IF (IVCOMP +24) 24470,14470,24470                                 04980035
14470 IVPASS = IVPASS + 1                                               04990035
      WRITE (I02,80001) IVTNUM                                          05000035
      GO TO 4481                                                        05010035
24470 IVFAIL = IVFAIL + 1                                               05020035
      IVCORR = -24                                                      05030035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05040035
 4481 CONTINUE                                                          05050035
      IVTNUM = 448                                                      05060035
C                                                                       05070035
C      ****  TEST 448  ****                                             05080035
C                                                                       05090035
      IF (ICZERO) 34480, 4480, 34480                                    05100035
 4480 CONTINUE                                                          05110035
      IVON01 = -2                                                       05120035
      IVON02 = 3                                                        05130035
      IVCOMP = IVON01 * IVON02 * (-4)                                   05140035
      GO TO 44480                                                       05150035
34480 IVDELE = IVDELE + 1                                               05160035
      WRITE (I02,80003) IVTNUM                                          05170035
      IF (ICZERO) 44480, 4491, 44480                                    05180035
44480 IF (IVCOMP -24) 24480,14480,24480                                 05190035
14480 IVPASS = IVPASS + 1                                               05200035
      WRITE (I02,80001) IVTNUM                                          05210035
      GO TO 4491                                                        05220035
24480 IVFAIL = IVFAIL + 1                                               05230035
      IVCORR = 24                                                       05240035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05250035
 4491 CONTINUE                                                          05260035
      IVTNUM = 449                                                      05270035
C                                                                       05280035
C      ****  TEST 449  ****                                             05290035
C                                                                       05300035
      IF (ICZERO) 34490, 4490, 34490                                    05310035
 4490 CONTINUE                                                          05320035
      IVON01 = 51                                                       05330035
      IVON03 = 13                                                       05340035
      IVCOMP = IVON01 * 23 * IVON03                                     05350035
      GO TO 44490                                                       05360035
34490 IVDELE = IVDELE + 1                                               05370035
      WRITE (I02,80003) IVTNUM                                          05380035
      IF (ICZERO) 44490, 4501, 44490                                    05390035
44490 IF (IVCOMP - 15249) 24490,14490,24490                             05400035
14490 IVPASS = IVPASS + 1                                               05410035
      WRITE (I02,80001) IVTNUM                                          05420035
      GO TO 4501                                                        05430035
24490 IVFAIL = IVFAIL + 1                                               05440035
      IVCORR = 15249                                                    05450035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05460035
 4501 CONTINUE                                                          05470035
      IVTNUM = 450                                                      05480035
C                                                                       05490035
C      ****  TEST 450  ****                                             05500035
C                                                                       05510035
      IF (ICZERO) 34500, 4500, 34500                                    05520035
 4500 CONTINUE                                                          05530035
      IVON02 = 2                                                        05540035
      IVON03 = 5461                                                     05550035
      IVCOMP = 3 * IVON02 * IVON03                                      05560035
      GO TO 44500                                                       05570035
34500 IVDELE = IVDELE + 1                                               05580035
      WRITE (I02,80003) IVTNUM                                          05590035
      IF (ICZERO) 44500, 4511, 44500                                    05600035
44500 IF (IVCOMP -32766) 24500,14500,24500                              05610035
14500 IVPASS = IVPASS + 1                                               05620035
      WRITE (I02,80001) IVTNUM                                          05630035
      GO TO 4511                                                        05640035
24500 IVFAIL = IVFAIL + 1                                               05650035
      IVCORR = 32766                                                    05660035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05670035
 4511 CONTINUE                                                          05680035
      IVTNUM = 451                                                      05690035
C                                                                       05700035
C      ****  TEST 451  ****                                             05710035
C                                                                       05720035
      IF (ICZERO) 34510, 4510, 34510                                    05730035
 4510 CONTINUE                                                          05740035
      IVON01 = -51                                                      05750035
      IVON03 = 13                                                       05760035
      IVCOMP = IVON01 * 23 * (-IVON03)                                  05770035
      GO TO 44510                                                       05780035
34510 IVDELE = IVDELE + 1                                               05790035
      WRITE (I02,80003) IVTNUM                                          05800035
      IF (ICZERO) 44510, 4521, 44510                                    05810035
44510 IF (IVCOMP - 15249) 24510,14510,24510                             05820035
14510 IVPASS = IVPASS + 1                                               05830035
      WRITE (I02,80001) IVTNUM                                          05840035
      GO TO 4521                                                        05850035
24510 IVFAIL = IVFAIL + 1                                               05860035
      IVCORR = 15249                                                    05870035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05880035
 4521 CONTINUE                                                          05890035
      IVTNUM = 452                                                      05900035
C                                                                       05910035
C      ****  TEST 452  ****                                             05920035
C                                                                       05930035
      IF (ICZERO) 34520, 4520, 34520                                    05940035
 4520 CONTINUE                                                          05950035
      IVON01 = -5461                                                    05960035
      IVON03 = 2                                                        05970035
      IVCOMP = IVON01 * (-3) * IVON03                                   05980035
      GO TO 44520                                                       05990035
34520 IVDELE = IVDELE + 1                                               06000035
      WRITE (I02,80003) IVTNUM                                          06010035
      IF (ICZERO) 44520, 4531, 44520                                    06020035
44520 IF (IVCOMP - 32766) 24520,14520,24520                             06030035
14520 IVPASS = IVPASS + 1                                               06040035
      WRITE (I02,80001) IVTNUM                                          06050035
      GO TO 4531                                                        06060035
24520 IVFAIL = IVFAIL + 1                                               06070035
      IVCORR = 32766                                                    06080035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06090035
C                                                                       06100035
C     TEST 453 THROUGH TEST 461 CONTAIN TWO INTEGER VARIABLES AND ONE   06110035
C     INTEGER CONSTANT IN AN ARITHMETIC EXPRESSION.  PARENTHESES ARE    06120035
C     USED TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSIONS IN THESE     06130035
C     TESTS.                                                            06140035
C                                                                       06150035
 4531 CONTINUE                                                          06160035
      IVTNUM = 453                                                      06170035
C                                                                       06180035
C      ****  TEST 453  ****                                             06190035
C                                                                       06200035
      IF (ICZERO) 34530, 4530, 34530                                    06210035
 4530 CONTINUE                                                          06220035
      IVON01 = 2                                                        06230035
      IVON02 = 3                                                        06240035
      IVCOMP = IVON01 * (IVON02 * 4)                                    06250035
      GO TO 44530                                                       06260035
34530 IVDELE = IVDELE + 1                                               06270035
      WRITE (I02,80003) IVTNUM                                          06280035
      IF (ICZERO) 44530, 4541, 44530                                    06290035
44530 IF (IVCOMP - 24) 24530,14530,24530                                06300035
14530 IVPASS = IVPASS + 1                                               06310035
      WRITE (I02,80001) IVTNUM                                          06320035
      GO TO 4541                                                        06330035
24530 IVFAIL = IVFAIL + 1                                               06340035
      IVCORR = 24                                                       06350035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06360035
 4541 CONTINUE                                                          06370035
      IVTNUM = 454                                                      06380035
C                                                                       06390035
C      ****  TEST 454  ****                                             06400035
C                                                                       06410035
      IF (ICZERO) 34540, 4540, 34540                                    06420035
 4540 CONTINUE                                                          06430035
      IVON01 = 2                                                        06440035
      IVON02 = 3                                                        06450035
      IVCOMP = (IVON01 * IVON02) * 4                                    06460035
      GO TO 44540                                                       06470035
34540 IVDELE = IVDELE + 1                                               06480035
      WRITE (I02,80003) IVTNUM                                          06490035
      IF (ICZERO) 44540, 4551, 44540                                    06500035
44540 IF (IVCOMP -24) 24540,14540,24540                                 06510035
14540 IVPASS = IVPASS + 1                                               06520035
      WRITE (I02,80001) IVTNUM                                          06530035
      GO TO 4551                                                        06540035
24540 IVFAIL = IVFAIL + 1                                               06550035
      IVCORR = 24                                                       06560035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06570035
 4551 CONTINUE                                                          06580035
      IVTNUM = 455                                                      06590035
C                                                                       06600035
C      ****  TEST 455  ****                                             06610035
C                                                                       06620035
      IF (ICZERO) 34550, 4550, 34550                                    06630035
 4550 CONTINUE                                                          06640035
      IVON01 = -2                                                       06650035
      IVON02 = 3                                                        06660035
      IVCOMP = IVON01 *(IVON02 * (-4))                                  06670035
      GO TO 44550                                                       06680035
34550 IVDELE = IVDELE + 1                                               06690035
      WRITE (I02,80003) IVTNUM                                          06700035
      IF (ICZERO) 44550, 4561, 44550                                    06710035
44550 IF (IVCOMP - 24) 24550,14550,24550                                06720035
14550 IVPASS = IVPASS + 1                                               06730035
      WRITE (I02,80001) IVTNUM                                          06740035
      GO TO 4561                                                        06750035
24550 IVFAIL = IVFAIL + 1                                               06760035
      IVCORR = 24                                                       06770035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06780035
 4561 CONTINUE                                                          06790035
      IVTNUM = 456                                                      06800035
C                                                                       06810035
C      ****  TEST 456  ****                                             06820035
C                                                                       06830035
      IF (ICZERO) 34560, 4560, 34560                                    06840035
 4560 CONTINUE                                                          06850035
      IVON01 = -2                                                       06860035
      IVON02 = -3                                                       06870035
      IVCOMP = IVON01 * (IVON02 * 4)                                    06880035
      GO TO 44560                                                       06890035
34560 IVDELE = IVDELE + 1                                               06900035
      WRITE (I02,80003) IVTNUM                                          06910035
      IF (ICZERO) 44560, 4571, 44560                                    06920035
44560 IF (IVCOMP -24) 24560,14560,24560                                 06930035
14560 IVPASS = IVPASS + 1                                               06940035
      WRITE (I02,80001) IVTNUM                                          06950035
      GO TO 4571                                                        06960035
24560 IVFAIL = IVFAIL + 1                                               06970035
      IVCORR = 24                                                       06980035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06990035
 4571 CONTINUE                                                          07000035
      IVTNUM = 457                                                      07010035
C                                                                       07020035
C      ****  TEST 457  ****                                             07030035
C                                                                       07040035
      IF (ICZERO) 34570, 4570, 34570                                    07050035
 4570 CONTINUE                                                          07060035
      IVON01 = -2                                                       07070035
      IVON02 = -3                                                       07080035
      IVCOMP = (IVON01*IVON02) * (-4)                                   07090035
      GO TO 44570                                                       07100035
34570 IVDELE = IVDELE + 1                                               07110035
      WRITE (I02,80003) IVTNUM                                          07120035
      IF (ICZERO) 44570, 4581, 44570                                    07130035
44570 IF (IVCOMP +24) 24570,14570,24570                                 07140035
14570 IVPASS = IVPASS + 1                                               07150035
      WRITE (I02,80001) IVTNUM                                          07160035
      GO TO 4581                                                        07170035
24570 IVFAIL = IVFAIL + 1                                               07180035
      IVCORR = -24                                                      07190035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          07200035
 4581 CONTINUE                                                          07210035
      IVTNUM = 458                                                      07220035
C                                                                       07230035
C      ****  TEST 458  ****                                             07240035
C                                                                       07250035
      IF (ICZERO) 34580, 4580, 34580                                    07260035
 4580 CONTINUE                                                          07270035
      IVON01 = 23                                                       07280035
      IVON03 = 13                                                       07290035
      IVCOMP = IVON01 * (51 * IVON03)                                   07300035
      GO TO 44580                                                       07310035
34580 IVDELE = IVDELE + 1                                               07320035
      WRITE (I02,80003) IVTNUM                                          07330035
      IF (ICZERO) 44580, 4591, 44580                                    07340035
44580 IF (IVCOMP -15249) 24580,14580,24580                              07350035
14580 IVPASS = IVPASS + 1                                               07360035
      WRITE (I02,80001) IVTNUM                                          07370035
      GO TO 4591                                                        07380035
24580 IVFAIL = IVFAIL + 1                                               07390035
      IVCORR = 15249                                                    07400035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          07410035
 4591 CONTINUE                                                          07420035
      IVTNUM = 459                                                      07430035
C                                                                       07440035
C      ****  TEST 459  ****                                             07450035
C                                                                       07460035
      IF (ICZERO) 34590, 4590, 34590                                    07470035
 4590 CONTINUE                                                          07480035
      IVON02 = 51                                                       07490035
      IVON03 = 13                                                       07500035
      IVCOMP = (23 * IVON02) * IVON03                                   07510035
      GO TO 44590                                                       07520035
34590 IVDELE = IVDELE + 1                                               07530035
      WRITE (I02,80003) IVTNUM                                          07540035
      IF (ICZERO) 44590, 4601, 44590                                    07550035
44590 IF (IVCOMP - 15249) 24590,14590,24590                             07560035
14590 IVPASS = IVPASS + 1                                               07570035
      WRITE (I02,80001) IVTNUM                                          07580035
      GO TO 4601                                                        07590035
24590 IVFAIL = IVFAIL + 1                                               07600035
      IVCORR = 15249                                                    07610035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          07620035
 4601 CONTINUE                                                          07630035
      IVTNUM = 460                                                      07640035
C                                                                       07650035
C      ****  TEST 460  ****                                             07660035
C                                                                       07670035
      IF (ICZERO) 34600, 4600, 34600                                    07680035
 4600 CONTINUE                                                          07690035
      IVON01 = -23                                                      07700035
      IVON03 = 13                                                       07710035
      IVCOMP = (IVON01 * (-51)) * (-IVON03)                             07720035
      GO TO 44600                                                       07730035
34600 IVDELE = IVDELE + 1                                               07740035
      WRITE (I02,80003) IVTNUM                                          07750035
      IF (ICZERO) 44600, 4611, 44600                                    07760035
44600 IF (IVCOMP + 15249) 24600,14600,24600                             07770035
14600 IVPASS = IVPASS + 1                                               07780035
      WRITE (I02,80001) IVTNUM                                          07790035
      GO TO 4611                                                        07800035
24600 IVFAIL = IVFAIL + 1                                               07810035
      IVCORR = -15249                                                   07820035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          07830035
 4611 CONTINUE                                                          07840035
      IVTNUM = 461                                                      07850035
C                                                                       07860035
C      ****  TEST 461  ****                                             07870035
C                                                                       07880035
      IF (ICZERO) 34610, 4610, 34610                                    07890035
 4610 CONTINUE                                                          07900035
      IVON02 = 51                                                       07910035
      IVON03 = 13                                                       07920035
      IVCOMP = -23 * (IVON02*IVON03)                                    07930035
      GO TO 44610                                                       07940035
34610 IVDELE = IVDELE + 1                                               07950035
      WRITE (I02,80003) IVTNUM                                          07960035
      IF (ICZERO) 44610, 4621, 44610                                    07970035
44610 IF (IVCOMP + 15249) 24610,14610,24610                             07980035
14610 IVPASS = IVPASS + 1                                               07990035
      WRITE (I02,80001) IVTNUM                                          08000035
      GO TO 4621                                                        08010035
24610 IVFAIL = IVFAIL + 1                                               08020035
      IVCORR = -15249                                                   08030035
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          08040035
C      ****    END OF TESTS    ****                                     08050035
 4621 CONTINUE                                                          08060035
C                                                                       08070035
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             08080035
99999 CONTINUE                                                          08090035
      WRITE (I02,90002)                                                 08100035
      WRITE (I02,90006)                                                 08110035
      WRITE (I02,90002)                                                 08120035
      WRITE (I02,90002)                                                 08130035
      WRITE (I02,90007)                                                 08140035
      WRITE (I02,90002)                                                 08150035
      WRITE (I02,90008)  IVFAIL                                         08160035
      WRITE (I02,90009) IVPASS                                          08170035
      WRITE (I02,90010) IVDELE                                          08180035
C                                                                       08190035
C                                                                       08200035
C     TERMINATE ROUTINE EXECUTION                                       08210035
      STOP                                                              08220035
C                                                                       08230035
C     FORMAT STATEMENTS FOR PAGE HEADERS                                08240035
90000 FORMAT ("1")                                                      08250035
90002 FORMAT (" ")                                                      08260035
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            08270035
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   08280035
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        08290035
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08300035
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08310035
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             08320035
C                                                                       08330035
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               08340035
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        08350035
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              08360035
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             08370035
C                                                                       08380035
C     FORMAT STATEMENTS FOR TEST RESULTS                                08390035
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      08400035
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      08410035
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   08420035
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         08430035
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    08440035
C                                                                       08450035
90007 FORMAT (" ",20X,"END OF PROGRAM FM035" )                          08460035
      END                                                               08470035