FM039.f Source File


Contents

Source Code


Source Code

      PROGRAM FM039

C     COMMENT SECTION                                                   00010039
C                                                                       00020039
C        FM039                                                          00030039
C                                                                       00040039
C         THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE    00050039
C     FORM          INTEGER VARIABLE = ARITHMETIC EXPRESSION            00060039
C     WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC     00070039
C     OPERATOR /, INTEGER CONSTANTS AND AN INTEGER VARIABLE.  BOTH      00080039
C     POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER CONSTANTS   00090039
C     AND THE INTEGER VARIABLE.                                         00100039
C                                                                       00110039
C         THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT     00120039
C     AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED  00130039
C     IN THE RESULTANT INTEGER VARIABLE.  SOME OF THE TESTS USE PARENS  00140039
C     TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION.                   00150039
C                                                                       00160039
C         THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS      00170039
C             (1) INTEGER VARIABLE/INTEGER CONSTANT/INTEGER CONSTANT    00180039
C                 INTEGER CONSTANT/INTEGER VARIABLE/INTEGER CONSTANT    00190039
C                 INTEGER CONSTANT/INTEGER CONSTANT/INTEGER VARIABLE    00200039
C             (2) SAME AS (1) BUT WITH PARENTHESES TO GROUP ELEMENTS    00210039
C                   IN THE ARITHMETIC EXPRESSION.                       00220039
C                                                                       00230039
C      REFERENCES                                                       00240039
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00250039
C              X3.9-1978                                                00260039
C                                                                       00270039
C        SECTION 4.3, INTEGER TYPE                                      00280039
C        SECTION 4.3.1, INTEGER CONSTANT                                00290039
C        SECTION 6.1, ARITHMETIC EXPRESSIONS                            00300039
C        SECTION 6.6, EVALUATION OF EXPRESSIONS                         00310039
C        SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT                  00320039
C                                                                       00330039
C      **********************************************************       00340039
C                                                                       00350039
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00360039
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00370039
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00380039
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00390039
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00400039
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00410039
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00420039
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00430039
C     OF EXECUTING THESE TESTS.                                         00440039
C                                                                       00450039
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00460039
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00470039
C                                                                       00480039
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00490039
C                                                                       00500039
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00510039
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00520039
C                          BUILDING 225  RM A266                        00530039
C                         GAITHERSBURG, MD  20899                       00540039
C      **********************************************************       00550039
C                                                                       00560039
C                                                                       00570039
C                                                                       00580039
C     INITIALIZATION SECTION                                            00590039
C                                                                       00600039
C     INITIALIZE CONSTANTS                                              00610039
C      **************                                                   00620039
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00630039
      I01 = 5                                                           00640039
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00650039
      I02 = 6                                                           00660039
C     SYSTEM ENVIRONMENT SECTION                                        00670039
C                                                                       00680039
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00690039
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00700039
C     (UNIT NUMBER FOR CARD READER).                                    00710039
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00720039
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00730039
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00740039
C                                                                       00750039
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00760039
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00770039
C     (UNIT NUMBER FOR PRINTER).                                        00780039
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00790039
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00800039
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00810039
C                                                                       00820039
      IVPASS=0                                                          00830039
      IVFAIL=0                                                          00840039
      IVDELE=0                                                          00850039
      ICZERO=0                                                          00860039
C                                                                       00870039
C     WRITE PAGE HEADERS                                                00880039
      WRITE (I02,90000)                                                 00890039
      WRITE (I02,90001)                                                 00900039
      WRITE (I02,90002)                                                 00910039
      WRITE (I02, 90002)                                                00920039
      WRITE (I02,90003)                                                 00930039
      WRITE (I02,90002)                                                 00940039
      WRITE (I02,90004)                                                 00950039
      WRITE (I02,90002)                                                 00960039
      WRITE (I02,90011)                                                 00970039
      WRITE (I02,90002)                                                 00980039
      WRITE (I02,90002)                                                 00990039
      WRITE (I02,90005)                                                 01000039
      WRITE (I02,90006)                                                 01010039
      WRITE (I02,90002)                                                 01020039
C                                                                       01030039
C     TEST SECTION                                                      01040039
C                                                                       01050039
C         ARITHMETIC ASSIGNMENT STATEMENT                               01060039
C                                                                       01070039
C     TEST 552 THROUGH TEST 557 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS01080039
C     OF THE FORM             IV = IV/IC/IC.                            01090039
C                                                                       01100039
 5521 CONTINUE                                                          01110039
      IVTNUM = 552                                                      01120039
C                                                                       01130039
C      ****  TEST 552  ****                                             01140039
C                                                                       01150039
      IF (ICZERO) 35520, 5520, 35520                                    01160039
 5520 CONTINUE                                                          01170039
      IVON01 = 24                                                       01180039
      IVCOMP = IVON01/3/4                                               01190039
      GO TO 45520                                                       01200039
35520 IVDELE = IVDELE + 1                                               01210039
      WRITE (I02,80003) IVTNUM                                          01220039
      IF (ICZERO) 45520, 5531, 45520                                    01230039
45520 IF (IVCOMP - 2) 25520,15520,25520                                 01240039
15520 IVPASS = IVPASS + 1                                               01250039
      WRITE (I02,80001) IVTNUM                                          01260039
      GO TO 5531                                                        01270039
25520 IVFAIL = IVFAIL + 1                                               01280039
      IVCORR = 2                                                        01290039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01300039
 5531 CONTINUE                                                          01310039
      IVTNUM = 553                                                      01320039
C                                                                       01330039
C      ****  TEST 553  ****                                             01340039
C                                                                       01350039
      IF (ICZERO) 35530, 5530, 35530                                    01360039
 5530 CONTINUE                                                          01370039
      IVON01 = 7151                                                     01380039
      IVCOMP = IVON01/3/10                                              01390039
      GO TO 45530                                                       01400039
35530 IVDELE = IVDELE + 1                                               01410039
      WRITE (I02,80003) IVTNUM                                          01420039
      IF (ICZERO) 45530, 5541, 45530                                    01430039
45530 IF (IVCOMP - 238) 25530,15530,25530                               01440039
15530 IVPASS = IVPASS + 1                                               01450039
      WRITE (I02,80001) IVTNUM                                          01460039
      GO TO 5541                                                        01470039
25530 IVFAIL = IVFAIL + 1                                               01480039
      IVCORR = 238                                                      01490039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01500039
 5541 CONTINUE                                                          01510039
      IVTNUM = 554                                                      01520039
C                                                                       01530039
C      ****  TEST 554  ****                                             01540039
C                                                                       01550039
      IF (ICZERO) 35540, 5540, 35540                                    01560039
 5540 CONTINUE                                                          01570039
      IVON01 = -330                                                     01580039
      IVCOMP = IVON01/3/2                                               01590039
      GO TO 45540                                                       01600039
35540 IVDELE = IVDELE + 1                                               01610039
      WRITE (I02,80003) IVTNUM                                          01620039
      IF (ICZERO) 45540, 5551, 45540                                    01630039
45540 IF (IVCOMP + 55) 25540,15540,25540                                01640039
15540 IVPASS = IVPASS + 1                                               01650039
      WRITE (I02,80001) IVTNUM                                          01660039
      GO TO 5551                                                        01670039
25540 IVFAIL = IVFAIL + 1                                               01680039
      IVCORR = -55                                                      01690039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01700039
 5551 CONTINUE                                                          01710039
      IVTNUM = 555                                                      01720039
C                                                                       01730039
C      ****  TEST 555  ****                                             01740039
C                                                                       01750039
      IF (ICZERO) 35550, 5550, 35550                                    01760039
 5550 CONTINUE                                                          01770039
      IVON01 = 15249                                                    01780039
      IVCOMP = IVON01/(-13)/51                                          01790039
      GO TO 45550                                                       01800039
35550 IVDELE = IVDELE + 1                                               01810039
      WRITE (I02,80003) IVTNUM                                          01820039
      IF (ICZERO) 45550, 5561, 45550                                    01830039
45550 IF (IVCOMP + 23) 25550,15550,25550                                01840039
15550 IVPASS = IVPASS + 1                                               01850039
      WRITE (I02,80001) IVTNUM                                          01860039
      GO TO 5561                                                        01870039
25550 IVFAIL = IVFAIL + 1                                               01880039
      IVCORR = -23                                                      01890039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01900039
 5561 CONTINUE                                                          01910039
      IVTNUM = 556                                                      01920039
C                                                                       01930039
C      ****  TEST 556  ****                                             01940039
C                                                                       01950039
      IF (ICZERO) 35560, 5560, 35560                                    01960039
 5560 CONTINUE                                                          01970039
      IVON01 = -27342                                                   01980039
      IVCOMP = IVON01/(-4)/(-3)                                         01990039
      GO TO 45560                                                       02000039
35560 IVDELE = IVDELE + 1                                               02010039
      WRITE (I02,80003) IVTNUM                                          02020039
      IF (ICZERO) 45560, 5571, 45560                                    02030039
45560 IF (IVCOMP + 2278) 25560,15560,25560                              02040039
15560 IVPASS = IVPASS + 1                                               02050039
      WRITE (I02,80001) IVTNUM                                          02060039
      GO TO 5571                                                        02070039
25560 IVFAIL = IVFAIL + 1                                               02080039
      IVCORR = -2278                                                    02090039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02100039
 5571 CONTINUE                                                          02110039
      IVTNUM = 557                                                      02120039
C                                                                       02130039
C      ****  TEST 557  ****                                             02140039
C                                                                       02150039
      IF (ICZERO) 35570, 5570, 35570                                    02160039
 5570 CONTINUE                                                          02170039
      IVON01 = -27342                                                   02180039
      IVCOMP = -IVON01/4/(-3)                                           02190039
      GO TO 45570                                                       02200039
35570 IVDELE = IVDELE + 1                                               02210039
      WRITE (I02,80003) IVTNUM                                          02220039
      IF (ICZERO) 45570, 5581, 45570                                    02230039
45570 IF (IVCOMP + 2278) 25570,15570,25570                              02240039
15570 IVPASS = IVPASS + 1                                               02250039
      WRITE (I02,80001) IVTNUM                                          02260039
      GO TO 5581                                                        02270039
25570 IVFAIL = IVFAIL + 1                                               02280039
      IVCORR = -2278                                                    02290039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02300039
C                                                                       02310039
C     TEST 558 THROUGH TEST 563 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS02320039
C     OF THE FORM             IV=IC/IV/IC.                              02330039
C                                                                       02340039
 5581 CONTINUE                                                          02350039
      IVTNUM = 558                                                      02360039
C                                                                       02370039
C      ****  TEST 558  ****                                             02380039
C                                                                       02390039
      IF (ICZERO) 35580, 5580, 35580                                    02400039
 5580 CONTINUE                                                          02410039
      IVON02 = 3                                                        02420039
      IVCOMP = 24/IVON02/4                                              02430039
      GO TO 45580                                                       02440039
35580 IVDELE = IVDELE + 1                                               02450039
      WRITE (I02,80003) IVTNUM                                          02460039
      IF (ICZERO) 45580, 5591, 45580                                    02470039
45580 IF (IVCOMP - 2) 25580,15580,25580                                 02480039
15580 IVPASS = IVPASS + 1                                               02490039
      WRITE (I02,80001) IVTNUM                                          02500039
      GO TO 5591                                                        02510039
25580 IVFAIL = IVFAIL + 1                                               02520039
      IVCORR = 2                                                        02530039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02540039
 5591 CONTINUE                                                          02550039
      IVTNUM = 559                                                      02560039
C                                                                       02570039
C      ****  TEST 559  ****                                             02580039
C                                                                       02590039
      IF (ICZERO) 35590, 5590, 35590                                    02600039
 5590 CONTINUE                                                          02610039
      IVON02 = 3                                                        02620039
      IVCOMP = 7151/IVON02/10                                           02630039
      GO TO 45590                                                       02640039
35590 IVDELE = IVDELE + 1                                               02650039
      WRITE (I02,80003) IVTNUM                                          02660039
      IF (ICZERO) 45590, 5601, 45590                                    02670039
45590 IF (IVCOMP - 238) 25590,15590,25590                               02680039
15590 IVPASS = IVPASS + 1                                               02690039
      WRITE (I02,80001) IVTNUM                                          02700039
      GO TO 5601                                                        02710039
25590 IVFAIL = IVFAIL + 1                                               02720039
      IVCORR = 238                                                      02730039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02740039
 5601 CONTINUE                                                          02750039
      IVTNUM = 560                                                      02760039
C                                                                       02770039
C      ****  TEST 560  ****                                             02780039
C                                                                       02790039
      IF (ICZERO) 35600, 5600, 35600                                    02800039
 5600 CONTINUE                                                          02810039
      IVON02 = -3                                                       02820039
      IVCOMP = 330/IVON02/2                                             02830039
      GO TO 45600                                                       02840039
35600 IVDELE = IVDELE + 1                                               02850039
      WRITE (I02,80003) IVTNUM                                          02860039
      IF (ICZERO) 45600, 5611, 45600                                    02870039
45600 IF (IVCOMP +55) 25600,15600,25600                                 02880039
15600 IVPASS = IVPASS + 1                                               02890039
      WRITE (I02,80001) IVTNUM                                          02900039
      GO TO 5611                                                        02910039
25600 IVFAIL = IVFAIL + 1                                               02920039
      IVCORR = -55                                                      02930039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02940039
 5611 CONTINUE                                                          02950039
      IVTNUM = 561                                                      02960039
C                                                                       02970039
C      ****  TEST 561  ****                                             02980039
C                                                                       02990039
      IF (ICZERO) 35610, 5610, 35610                                    03000039
 5610 CONTINUE                                                          03010039
      IVON02 = +13                                                      03020039
      IVCOMP = 15249/IVON02/(-51)                                       03030039
      GO TO 45610                                                       03040039
35610 IVDELE = IVDELE + 1                                               03050039
      WRITE (I02,80003) IVTNUM                                          03060039
      IF (ICZERO) 45610, 5621, 45610                                    03070039
45610 IF (IVCOMP + 23) 25610,15610,25610                                03080039
15610 IVPASS = IVPASS + 1                                               03090039
      WRITE (I02,80001) IVTNUM                                          03100039
      GO TO 5621                                                        03110039
25610 IVFAIL = IVFAIL + 1                                               03120039
      IVCORR = -23                                                      03130039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03140039
 5621 CONTINUE                                                          03150039
      IVTNUM = 562                                                      03160039
C                                                                       03170039
C      ****  TEST 562  ****                                             03180039
C                                                                       03190039
      IF (ICZERO) 35620, 5620, 35620                                    03200039
 5620 CONTINUE                                                          03210039
      IVON02 = -4                                                       03220039
      IVCOMP = (-27342)/IVON02/(-3)                                     03230039
      GO TO 45620                                                       03240039
35620 IVDELE = IVDELE + 1                                               03250039
      WRITE (I02,80003) IVTNUM                                          03260039
      IF (ICZERO) 45620, 5631, 45620                                    03270039
45620 IF (IVCOMP + 2278) 25620,15620,25620                              03280039
15620 IVPASS = IVPASS + 1                                               03290039
      WRITE (I02,80001) IVTNUM                                          03300039
      GO TO 5631                                                        03310039
25620 IVFAIL = IVFAIL + 1                                               03320039
      IVCORR = -2278                                                    03330039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03340039
 5631 CONTINUE                                                          03350039
      IVTNUM = 563                                                      03360039
C                                                                       03370039
C      ****  TEST 563  ****                                             03380039
C                                                                       03390039
      IF (ICZERO) 35630, 5630, 35630                                    03400039
 5630 CONTINUE                                                          03410039
      IVON02 = -4                                                       03420039
      IVCOMP = -27342/(-IVON02)/(-3)                                    03430039
      GO TO 45630                                                       03440039
35630 IVDELE = IVDELE + 1                                               03450039
      WRITE (I02,80003) IVTNUM                                          03460039
      IF (ICZERO) 45630, 5641, 45630                                    03470039
45630 IF (IVCOMP - 2278) 25630,15630,25630                              03480039
15630 IVPASS = IVPASS + 1                                               03490039
      WRITE (I02,80001) IVTNUM                                          03500039
      GO TO 5641                                                        03510039
25630 IVFAIL = IVFAIL + 1                                               03520039
      IVCORR = 2278                                                     03530039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03540039
C                                                                       03550039
C     TEST 564 THROUGH TEST 569 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS03560039
C     OF THE FORM             IV = IC/IC/IV.                            03570039
C                                                                       03580039
 5641 CONTINUE                                                          03590039
      IVTNUM = 564                                                      03600039
C                                                                       03610039
C      ****  TEST 564  ****                                             03620039
C                                                                       03630039
      IF (ICZERO) 35640, 5640, 35640                                    03640039
 5640 CONTINUE                                                          03650039
      IVON03 = 4                                                        03660039
      IVCOMP = 24/3/IVON03                                              03670039
      GO TO 45640                                                       03680039
35640 IVDELE = IVDELE + 1                                               03690039
      WRITE (I02,80003) IVTNUM                                          03700039
      IF (ICZERO) 45640, 5651, 45640                                    03710039
45640 IF (IVCOMP -2) 25640,15640,25640                                  03720039
15640 IVPASS = IVPASS + 1                                               03730039
      WRITE (I02,80001) IVTNUM                                          03740039
      GO TO 5651                                                        03750039
25640 IVFAIL = IVFAIL + 1                                               03760039
      IVCORR = 2                                                        03770039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03780039
 5651 CONTINUE                                                          03790039
      IVTNUM = 565                                                      03800039
C                                                                       03810039
C      ****  TEST 565  ****                                             03820039
C                                                                       03830039
      IF (ICZERO) 35650, 5650, 35650                                    03840039
 5650 CONTINUE                                                          03850039
      IVON03 = 10                                                       03860039
      IVCOMP = 7151/3/IVON03                                            03870039
      GO TO 45650                                                       03880039
35650 IVDELE = IVDELE + 1                                               03890039
      WRITE (I02,80003) IVTNUM                                          03900039
      IF (ICZERO) 45650, 5661, 45650                                    03910039
45650 IF (IVCOMP - 238) 25650,15650,25650                               03920039
15650 IVPASS = IVPASS + 1                                               03930039
      WRITE (I02,80001) IVTNUM                                          03940039
      GO TO 5661                                                        03950039
25650 IVFAIL = IVFAIL + 1                                               03960039
      IVCORR = 238                                                      03970039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03980039
 5661 CONTINUE                                                          03990039
      IVTNUM = 566                                                      04000039
C                                                                       04010039
C      ****  TEST 566  ****                                             04020039
C                                                                       04030039
      IF (ICZERO) 35660, 5660, 35660                                    04040039
 5660 CONTINUE                                                          04050039
      IVON03 = -2                                                       04060039
      IVCOMP = 330/3/IVON03                                             04070039
      GO TO 45660                                                       04080039
35660 IVDELE = IVDELE + 1                                               04090039
      WRITE (I02,80003) IVTNUM                                          04100039
      IF (ICZERO) 45660, 5671, 45660                                    04110039
45660 IF (IVCOMP + 55) 25660,15660,25660                                04120039
15660 IVPASS = IVPASS + 1                                               04130039
      WRITE (I02,80001) IVTNUM                                          04140039
      GO TO 5671                                                        04150039
25660 IVFAIL = IVFAIL + 1                                               04160039
      IVCORR = -55                                                      04170039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04180039
 5671 CONTINUE                                                          04190039
      IVTNUM = 567                                                      04200039
C                                                                       04210039
C      ****  TEST 567  ****                                             04220039
C                                                                       04230039
      IF (ICZERO) 35670, 5670, 35670                                    04240039
 5670 CONTINUE                                                          04250039
      IVON03 = +51                                                      04260039
      IVCOMP = 15249/(-13)/IVON03                                       04270039
      GO TO 45670                                                       04280039
35670 IVDELE = IVDELE + 1                                               04290039
      WRITE (I02,80003) IVTNUM                                          04300039
      IF (ICZERO) 45670, 5681, 45670                                    04310039
45670 IF (IVCOMP + 23) 25670,15670,25670                                04320039
15670 IVPASS = IVPASS + 1                                               04330039
      WRITE (I02,80001) IVTNUM                                          04340039
      GO TO 5681                                                        04350039
25670 IVFAIL = IVFAIL + 1                                               04360039
      IVCORR = -23                                                      04370039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04380039
 5681 CONTINUE                                                          04390039
      IVTNUM = 568                                                      04400039
C                                                                       04410039
C      ****  TEST 568  ****                                             04420039
C                                                                       04430039
      IF (ICZERO) 35680, 5680, 35680                                    04440039
 5680 CONTINUE                                                          04450039
      IVON03 = -3                                                       04460039
      IVCOMP = (-27342)/(-4)/IVON03                                     04470039
      GO TO 45680                                                       04480039
35680 IVDELE = IVDELE + 1                                               04490039
      WRITE (I02,80003) IVTNUM                                          04500039
      IF (ICZERO) 45680, 5691, 45680                                    04510039
45680 IF (IVCOMP + 2278) 25680,15680,25680                              04520039
15680 IVPASS = IVPASS + 1                                               04530039
      WRITE (I02,80001) IVTNUM                                          04540039
      GO TO 5691                                                        04550039
25680 IVFAIL = IVFAIL + 1                                               04560039
      IVCORR = -2278                                                    04570039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04580039
 5691 CONTINUE                                                          04590039
      IVTNUM = 569                                                      04600039
C                                                                       04610039
C      ****  TEST 569  ****                                             04620039
C                                                                       04630039
      IF (ICZERO) 35690, 5690, 35690                                    04640039
 5690 CONTINUE                                                          04650039
      IVON03 = -3                                                       04660039
      IVCOMP = -27342/(-4)/(-IVON03)                                    04670039
      GO TO 45690                                                       04680039
35690 IVDELE = IVDELE + 1                                               04690039
      WRITE (I02,80003) IVTNUM                                          04700039
      IF (ICZERO) 45690, 5701, 45690                                    04710039
45690 IF (IVCOMP - 2278) 25690,15690,25690                              04720039
15690 IVPASS = IVPASS + 1                                               04730039
      WRITE (I02,80001) IVTNUM                                          04740039
      GO TO 5701                                                        04750039
25690 IVFAIL = IVFAIL + 1                                               04760039
      IVCORR = 2278                                                     04770039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04780039
C                                                                       04790039
C     TEST 570 AND TEST 571  -   IV =(IV/IC)/IC                         04800039
C                                                                       04810039
 5701 CONTINUE                                                          04820039
      IVTNUM = 570                                                      04830039
C                                                                       04840039
C      ****  TEST 570  ****                                             04850039
C                                                                       04860039
      IF (ICZERO) 35700, 5700, 35700                                    04870039
 5700 CONTINUE                                                          04880039
      IVON01 = 24                                                       04890039
      IVCOMP = (IVON01/3)/4                                             04900039
      GO TO 45700                                                       04910039
35700 IVDELE = IVDELE + 1                                               04920039
      WRITE (I02,80003) IVTNUM                                          04930039
      IF (ICZERO) 45700, 5711, 45700                                    04940039
45700 IF (IVCOMP -2) 25700,15700,25700                                  04950039
15700 IVPASS = IVPASS + 1                                               04960039
      WRITE (I02,80001) IVTNUM                                          04970039
      GO TO 5711                                                        04980039
25700 IVFAIL = IVFAIL + 1                                               04990039
      IVCORR = 2                                                        05000039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05010039
 5711 CONTINUE                                                          05020039
      IVTNUM = 571                                                      05030039
C                                                                       05040039
C      ****  TEST 571  ****                                             05050039
C                                                                       05060039
      IF (ICZERO) 35710, 5710, 35710                                    05070039
 5710 CONTINUE                                                          05080039
      IVON01 = -330                                                     05090039
      IVCOMP = (IVON01/(-3))/4                                          05100039
      GO TO 45710                                                       05110039
35710 IVDELE = IVDELE + 1                                               05120039
      WRITE (I02,80003) IVTNUM                                          05130039
      IF (ICZERO) 45710, 5721, 45710                                    05140039
45710 IF (IVCOMP - 27) 25710,15710,25710                                05150039
15710 IVPASS = IVPASS + 1                                               05160039
      WRITE (I02,80001) IVTNUM                                          05170039
      GO TO 5721                                                        05180039
25710 IVFAIL = IVFAIL + 1                                               05190039
      IVCORR = 27                                                       05200039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05210039
C                                                                       05220039
C     TEST 572 AND TEST 573  -  IV= IV/(IC/IC)                          05230039
C                                                                       05240039
 5721 CONTINUE                                                          05250039
      IVTNUM = 572                                                      05260039
C                                                                       05270039
C      ****  TEST 572  ****                                             05280039
C                                                                       05290039
      IF (ICZERO) 35720, 5720, 35720                                    05300039
 5720 CONTINUE                                                          05310039
      IVON01 = 24                                                       05320039
      IVCOMP = IVON01/(8/4)                                             05330039
      GO TO 45720                                                       05340039
35720 IVDELE = IVDELE + 1                                               05350039
      WRITE (I02,80003) IVTNUM                                          05360039
      IF (ICZERO) 45720, 5731, 45720                                    05370039
45720 IF (IVCOMP - 12) 25720,15720,25720                                05380039
15720 IVPASS = IVPASS + 1                                               05390039
      WRITE (I02,80001) IVTNUM                                          05400039
      GO TO 5731                                                        05410039
25720 IVFAIL = IVFAIL + 1                                               05420039
      IVCORR = 12                                                       05430039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05440039
 5731 CONTINUE                                                          05450039
      IVTNUM = 573                                                      05460039
C                                                                       05470039
C      ****  TEST 573  ****                                             05480039
C                                                                       05490039
      IF (ICZERO) 35730, 5730, 35730                                    05500039
 5730 CONTINUE                                                          05510039
      IVON01 = -7154                                                    05520039
      IVCOMP = -IVON01/((-26)/5)                                        05530039
      GO TO 45730                                                       05540039
35730 IVDELE = IVDELE + 1                                               05550039
      WRITE (I02,80003) IVTNUM                                          05560039
      IF (ICZERO) 45730, 5741, 45730                                    05570039
45730 IF (IVCOMP + 1430) 25730,15730,25730                              05580039
15730 IVPASS = IVPASS + 1                                               05590039
      WRITE (I02,80001) IVTNUM                                          05600039
      GO TO 5741                                                        05610039
25730 IVFAIL = IVFAIL + 1                                               05620039
      IVCORR = -1430                                                    05630039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05640039
C                                                                       05650039
C     TEST 574 AND TEST 575  -  IV=(IC/IV)/IC                           05660039
C                                                                       05670039
 5741 CONTINUE                                                          05680039
      IVTNUM = 574                                                      05690039
C                                                                       05700039
C      ****  TEST 574  ****                                             05710039
C                                                                       05720039
      IF (ICZERO) 35740, 5740, 35740                                    05730039
 5740 CONTINUE                                                          05740039
      IVON02 = 3                                                        05750039
      IVCOMP = (24/IVON02)/4                                            05760039
      GO TO 45740                                                       05770039
35740 IVDELE = IVDELE + 1                                               05780039
      WRITE (I02,80003) IVTNUM                                          05790039
      IF (ICZERO) 45740, 5751, 45740                                    05800039
45740 IF (IVCOMP -2) 25740,15740,25740                                  05810039
15740 IVPASS = IVPASS + 1                                               05820039
      WRITE (I02,80001) IVTNUM                                          05830039
      GO TO 5751                                                        05840039
25740 IVFAIL = IVFAIL + 1                                               05850039
      IVCORR = 2                                                        05860039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05870039
 5751 CONTINUE                                                          05880039
      IVTNUM = 575                                                      05890039
C                                                                       05900039
C      ****  TEST 575  ****                                             05910039
C                                                                       05920039
      IF (ICZERO) 35750, 5750, 35750                                    05930039
 5750 CONTINUE                                                          05940039
      IVON02 = -3                                                       05950039
      IVCOMP = (-330/IVON02)/(-4)                                       05960039
      GO TO 45750                                                       05970039
35750 IVDELE = IVDELE + 1                                               05980039
      WRITE (I02,80003) IVTNUM                                          05990039
      IF (ICZERO) 45750, 5761, 45750                                    06000039
45750 IF (IVCOMP + 27) 25750,15750,25750                                06010039
15750 IVPASS = IVPASS + 1                                               06020039
      WRITE (I02,80001) IVTNUM                                          06030039
      GO TO 5761                                                        06040039
25750 IVFAIL = IVFAIL + 1                                               06050039
      IVCORR = -27                                                      06060039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06070039
C                                                                       06080039
C     TEST 576 AND TEST 577  -  IV=IC/(IV/IC)                           06090039
C                                                                       06100039
 5761 CONTINUE                                                          06110039
      IVTNUM = 576                                                      06120039
C                                                                       06130039
C      ****  TEST 576  ****                                             06140039
C                                                                       06150039
      IF (ICZERO) 35760, 5760, 35760                                    06160039
 5760 CONTINUE                                                          06170039
      IVON02 = 8                                                        06180039
      IVCOMP = 24/(IVON02/4)                                            06190039
      GO TO 45760                                                       06200039
35760 IVDELE = IVDELE + 1                                               06210039
      WRITE (I02,80003) IVTNUM                                          06220039
      IF (ICZERO) 45760, 5771, 45760                                    06230039
45760 IF (IVCOMP - 12) 25760,15760,25760                                06240039
15760 IVPASS = IVPASS + 1                                               06250039
      WRITE (I02,80001) IVTNUM                                          06260039
      GO TO 5771                                                        06270039
25760 IVFAIL = IVFAIL + 1                                               06280039
      IVCORR = 12                                                       06290039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06300039
 5771 CONTINUE                                                          06310039
      IVTNUM = 577                                                      06320039
C                                                                       06330039
C      ****  TEST 577  ****                                             06340039
C                                                                       06350039
      IF (ICZERO) 35770, 5770, 35770                                    06360039
 5770 CONTINUE                                                          06370039
      IVON02 = -26                                                      06380039
      IVCOMP = 7154/((-IVON02)/(-5))                                    06390039
      GO TO 45770                                                       06400039
35770 IVDELE = IVDELE + 1                                               06410039
      WRITE (I02,80003) IVTNUM                                          06420039
      IF (ICZERO) 45770, 5781, 45770                                    06430039
45770 IF (IVCOMP + 1430) 25770,15770,25770                              06440039
15770 IVPASS = IVPASS + 1                                               06450039
      WRITE (I02,80001) IVTNUM                                          06460039
      GO TO 5781                                                        06470039
25770 IVFAIL = IVFAIL + 1                                               06480039
      IVCORR = -1430                                                    06490039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06500039
C                                                                       06510039
C     TEST 578 AND TEST 579  -  IV=(IC/IC)/IV                           06520039
C                                                                       06530039
 5781 CONTINUE                                                          06540039
      IVTNUM = 578                                                      06550039
C                                                                       06560039
C      ****  TEST 578  ****                                             06570039
C                                                                       06580039
      IF (ICZERO) 35780, 5780, 35780                                    06590039
 5780 CONTINUE                                                          06600039
      IVON03 = 4                                                        06610039
      IVCOMP = (24/3)/IVON03                                            06620039
      GO TO 45780                                                       06630039
35780 IVDELE = IVDELE + 1                                               06640039
      WRITE (I02,80003) IVTNUM                                          06650039
      IF (ICZERO) 45780, 5791, 45780                                    06660039
45780 IF (IVCOMP - 2) 25780,15780,25780                                 06670039
15780 IVPASS = IVPASS + 1                                               06680039
      WRITE (I02,80001) IVTNUM                                          06690039
      GO TO 5791                                                        06700039
25780 IVFAIL = IVFAIL + 1                                               06710039
      IVCORR = 2                                                        06720039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06730039
 5791 CONTINUE                                                          06740039
      IVTNUM = 579                                                      06750039
C                                                                       06760039
C      ****  TEST 579  ****                                             06770039
C                                                                       06780039
      IF (ICZERO) 35790, 5790, 35790                                    06790039
 5790 CONTINUE                                                          06800039
      IVON03 = -4                                                       06810039
      IVCOMP = (330/(-3))/IVON03                                        06820039
      GO TO 45790                                                       06830039
35790 IVDELE = IVDELE + 1                                               06840039
      WRITE (I02,80003) IVTNUM                                          06850039
      IF (ICZERO) 45790, 5801, 45790                                    06860039
45790 IF (IVCOMP - 27) 25790,15790,25790                                06870039
15790 IVPASS = IVPASS + 1                                               06880039
      WRITE (I02,80001) IVTNUM                                          06890039
      GO TO 5801                                                        06900039
25790 IVFAIL = IVFAIL + 1                                               06910039
      IVCORR = 27                                                       06920039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06930039
C                                                                       06940039
C     TEST 580 AND TEST 581  -  IV= IC/(IC/IV)                          06950039
C                                                                       06960039
 5801 CONTINUE                                                          06970039
      IVTNUM = 580                                                      06980039
C                                                                       06990039
C      ****  TEST 580  ****                                             07000039
C                                                                       07010039
      IF (ICZERO) 35800, 5800, 35800                                    07020039
 5800 CONTINUE                                                          07030039
      IVON03 = 4                                                        07040039
      IVCOMP = 24/(8/IVON03)                                            07050039
      GO TO 45800                                                       07060039
35800 IVDELE = IVDELE + 1                                               07070039
      WRITE (I02,80003) IVTNUM                                          07080039
      IF (ICZERO) 45800, 5811, 45800                                    07090039
45800 IF (IVCOMP - 12) 25800,15800,25800                                07100039
15800 IVPASS = IVPASS + 1                                               07110039
      WRITE (I02,80001) IVTNUM                                          07120039
      GO TO 5811                                                        07130039
25800 IVFAIL = IVFAIL + 1                                               07140039
      IVCORR = 12                                                       07150039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          07160039
 5811 CONTINUE                                                          07170039
      IVTNUM = 581                                                      07180039
C                                                                       07190039
C      ****  TEST 581  ****                                             07200039
C                                                                       07210039
      IF (ICZERO) 35810, 5810, 35810                                    07220039
 5810 CONTINUE                                                          07230039
      IVON03 = -5                                                       07240039
      IVCOMP = -7154/((-26)/IVON03)                                     07250039
      GO TO 45810                                                       07260039
35810 IVDELE = IVDELE + 1                                               07270039
      WRITE (I02,80003) IVTNUM                                          07280039
      IF (ICZERO) 45810, 5821, 45810                                    07290039
45810 IF (IVCOMP + 1430) 25810,15810,25810                              07300039
15810 IVPASS = IVPASS + 1                                               07310039
      WRITE (I02,80001) IVTNUM                                          07320039
      GO TO 5821                                                        07330039
25810 IVFAIL = IVFAIL + 1                                               07340039
      IVCORR = -1430                                                    07350039
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          07360039
C                                                                       07370039
C      ****    END OF TESTS    ****                                     07380039
 5821 CONTINUE                                                          07390039
C                                                                       07400039
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             07410039
99999 CONTINUE                                                          07420039
      WRITE (I02,90002)                                                 07430039
      WRITE (I02,90006)                                                 07440039
      WRITE (I02,90002)                                                 07450039
      WRITE (I02,90002)                                                 07460039
      WRITE (I02,90007)                                                 07470039
      WRITE (I02,90002)                                                 07480039
      WRITE (I02,90008)  IVFAIL                                         07490039
      WRITE (I02,90009) IVPASS                                          07500039
      WRITE (I02,90010) IVDELE                                          07510039
C                                                                       07520039
C                                                                       07530039
C     TERMINATE ROUTINE EXECUTION                                       07540039
      STOP                                                              07550039
C                                                                       07560039
C     FORMAT STATEMENTS FOR PAGE HEADERS                                07570039
90000 FORMAT ("1")                                                      07580039
90002 FORMAT (" ")                                                      07590039
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            07600039
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   07610039
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        07620039
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07630039
90006 FORMAT (" ",5X,"----------------------------------------------" ) 07640039
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             07650039
C                                                                       07660039
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               07670039
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        07680039
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              07690039
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             07700039
C                                                                       07710039
C     FORMAT STATEMENTS FOR TEST RESULTS                                07720039
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      07730039
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      07740039
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   07750039
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         07760039
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    07770039
C                                                                       07780039
90007 FORMAT (" ",20X,"END OF PROGRAM FM039" )                          07790039
      END                                                               07800039