FM060.f Source File


Contents

Source Code


Source Code

      PROGRAM FM060

C     COMMENT SECTION                                                   00010060
C                                                                       00020060
C     FM060                                                             00030060
C                                                                       00040060
C         THIS ROUTINE CONTAINS BASIC ARITHMETIC IF STATEMENT TESTS FOR 00050060
C     THE FORMAT                                                        00060060
C                                                                       00070060
C                   IF (E) K1,K2,K3                                     00080060
C                                                                       00090060
C     WHERE E IS A SIMPLE REAL EXPRESSION OF THE FORM                   00100060
C                                                                       00110060
C            REAL VARIABLE                                              00120060
C            REAL VARIABLE - REAL CONSTANT                              00130060
C            REAL VARIABLE + REAL CONSTANT                              00140060
C                                                                       00150060
C     AND K1, K2 AND K3 ARE STATEMENT LABELS.                           00160060
C                                                                       00170060
C         THIS ROUTINE ALSO TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF   00180060
C     THE FORM                                                          00190060
C                  REAL VARIABLE = REAL CONSTANT                        00200060
C                  REAL VARIABLE = REAL VARIABLE                        00210060
C                  REAL VARIABLE = -REAL VARIABLE                       00220060
C                                                                       00230060
C     THE REAL CONSTANTS AND REAL VARIABLES CONTAIN BOTH POSITIVE AND   00240060
C     NEGATIVE VALUES.                                                  00250060
C                                                                       00260060
C         A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A   00270060
C     REAL NUMBER.  IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES.   00280060
C                                                                       00290060
C         A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A DECIMAL00300060
C     POINT, AND A DECIMAL FRACTION PART IN THAT ORDER.  BOTH THE       00310060
C     INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; EITHER   00320060
C     ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH.  THE CONSTANT IS  00330060
C     AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A DECIMAL     00340060
C     NUMERAL.                                                          00350060
C                                                                       00360060
C         A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN 00370060
C     OPTIONALLY SIGNED INTEGER CONSTANT.                               00380060
C                                                                       00390060
C         A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT,00400060
C     A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN       00410060
C     INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT.                  00420060
C                                                                       00430060
C      REFERENCES                                                       00440060
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00450060
C              X3.9-1978                                                00460060
C                                                                       00470060
C        SECTION 4.4, REAL TYPE                                         00480060
C        SECTION 4.4.1, REAL CONSTANT                                   00490060
C        SECTION 6.1, ARITHMETIC EXPRESSIONS                            00500060
C        SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT                  00510060
C        SECTION 11.4, ARITHMETIC IF STATEMENT                          00520060
C                                                                       00530060
C      **********************************************************       00540060
C                                                                       00550060
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00560060
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00570060
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00580060
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00590060
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00600060
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00610060
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00620060
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00630060
C     OF EXECUTING THESE TESTS.                                         00640060
C                                                                       00650060
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00660060
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00670060
C                                                                       00680060
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00690060
C                                                                       00700060
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00710060
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00720060
C                          BUILDING 225  RM A266                        00730060
C                         GAITHERSBURG, MD  20899                       00740060
C      **********************************************************       00750060
C                                                                       00760060
C                                                                       00770060
C                                                                       00780060
C     INITIALIZATION SECTION                                            00790060
C                                                                       00800060
C     INITIALIZE CONSTANTS                                              00810060
C      **************                                                   00820060
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00830060
      I01 = 5                                                           00840060
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00850060
      I02 = 6                                                           00860060
C     SYSTEM ENVIRONMENT SECTION                                        00870060
C                                                                       00880060
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00890060
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00900060
C     (UNIT NUMBER FOR CARD READER).                                    00910060
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00920060
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00930060
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00940060
C                                                                       00950060
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00960060
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00970060
C     (UNIT NUMBER FOR PRINTER).                                        00980060
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00990060
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01000060
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         01010060
C                                                                       01020060
      IVPASS=0                                                          01030060
      IVFAIL=0                                                          01040060
      IVDELE=0                                                          01050060
      ICZERO=0                                                          01060060
C                                                                       01070060
C     WRITE PAGE HEADERS                                                01080060
      WRITE (I02,90000)                                                 01090060
      WRITE (I02,90001)                                                 01100060
      WRITE (I02,90002)                                                 01110060
      WRITE (I02, 90002)                                                01120060
      WRITE (I02,90003)                                                 01130060
      WRITE (I02,90002)                                                 01140060
      WRITE (I02,90004)                                                 01150060
      WRITE (I02,90002)                                                 01160060
      WRITE (I02,90011)                                                 01170060
      WRITE (I02,90002)                                                 01180060
      WRITE (I02,90002)                                                 01190060
      WRITE (I02,90005)                                                 01200060
      WRITE (I02,90006)                                                 01210060
      WRITE (I02,90002)                                                 01220060
C                                                                       01230060
C     TEST SECTION                                                      01240060
C                                                                       01250060
C         ARITHMETIC IF STATEMENT                                       01260060
C                                                                       01270060
C     TEST 1 THROUGH TEST 3 CONTAIN BASIC ARITHMETIC IF STATEMENT TESTS 01280060
C     WITH A REAL VARIABLE AS ARITHMETIC EXPRESSION.                    01290060
C                                                                       01300060
   11 CONTINUE                                                          01310060
      IVTNUM =   1                                                      01320060
C                                                                       01330060
C      ****  TEST   1  ****                                             01340060
C         TEST 001  - LESS THAN ZERO BRANCH EXPECTED                    01350060
C                                                                       01360060
      IF (ICZERO) 30010,   10, 30010                                    01370060
   10 CONTINUE                                                          01380060
      RVCOMP = 0.0                                                      01390060
      RVON01 = -1.0                                                     01400060
      IF (RVON01)  12,40010, 40010                                      01410060
   12 RVCOMP = RVON01                                                   01420060
      GO TO 40010                                                       01430060
30010 IVDELE = IVDELE + 1                                               01440060
      WRITE (I02,80003) IVTNUM                                          01450060
      IF (ICZERO) 40010,   21, 40010                                    01460060
40010 IF (RVCOMP) 10010,20010,20010                                     01470060
10010 IVPASS = IVPASS + 1                                               01480060
      WRITE (I02,80001) IVTNUM                                          01490060
      GO TO   21                                                        01500060
20010 IVFAIL = IVFAIL + 1                                               01510060
      RVCORR = -1.0                                                     01520060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          01530060
   21 CONTINUE                                                          01540060
      IVTNUM =   2                                                      01550060
C                                                                       01560060
C      ****  TEST   2  ****                                             01570060
C         TEST 002  -  EQUAL TO ZERO BRANCH EXPECTED                    01580060
C                                                                       01590060
      IF (ICZERO) 30020,   20, 30020                                    01600060
   20 CONTINUE                                                          01610060
      RVCOMP = 1.0                                                      01620060
      RVON01 = 0.0                                                      01630060
      IF (RVON01) 40020,22,40020                                        01640060
   22 RVCOMP = RVON01                                                   01650060
      GO TO 40020                                                       01660060
30020 IVDELE = IVDELE + 1                                               01670060
      WRITE (I02,80003) IVTNUM                                          01680060
      IF (ICZERO) 40020,   31, 40020                                    01690060
40020 IF (RVCOMP)  20020,10020,20020                                    01700060
10020 IVPASS = IVPASS + 1                                               01710060
      WRITE (I02,80001) IVTNUM                                          01720060
      GO TO   31                                                        01730060
20020 IVFAIL = IVFAIL + 1                                               01740060
      RVCORR = 0.0                                                      01750060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          01760060
   31 CONTINUE                                                          01770060
      IVTNUM =   3                                                      01780060
C                                                                       01790060
C      ****  TEST   3  ****                                             01800060
C         TEST 003  -  GREATER THAN ZERO BRANCH EXPECTED                01810060
C                                                                       01820060
      IF (ICZERO) 30030,   30, 30030                                    01830060
   30 CONTINUE                                                          01840060
      RVCOMP = 0.0                                                      01850060
      RVON01 = 1.0                                                      01860060
      IF (RVON01) 40030,40030,32                                        01870060
   32 RVCOMP = RVON01                                                   01880060
      GO TO 40030                                                       01890060
30030 IVDELE = IVDELE + 1                                               01900060
      WRITE (I02,80003) IVTNUM                                          01910060
      IF (ICZERO) 40030,   41, 40030                                    01920060
40030 IF (RVCOMP)  20030,20030,10030                                    01930060
10030 IVPASS = IVPASS + 1                                               01940060
      WRITE (I02,80001) IVTNUM                                          01950060
      GO TO   41                                                        01960060
20030 IVFAIL = IVFAIL + 1                                               01970060
      RVCORR = 1.0                                                      01980060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          01990060
   41 CONTINUE                                                          02000060
      IVTNUM =   4                                                      02010060
C                                                                       02020060
C      ****  TEST   4  ****                                             02030060
C     TEST 004  - BASIC IF STATEMENTS TEST                              02040060
C           THESE IF STATEMENTS ARE USED IN REAL VARIABLE TEST          02050060
C           VERIFICATION.  THE ARITHMETIC EXPRESSIONS ARE OF THE FORM   02060060
C                   REAL VARIABLE - REAL CONSTANT                       02070060
C                                                                       02080060
      IF (ICZERO) 30040,   40, 30040                                    02090060
   40 CONTINUE                                                          02100060
      RVCOMP = 4.0                                                      02110060
      RVON01 = 1.0                                                      02120060
      IF (RVON01 - .99995) 40040,42,42                                  02130060
   42 IF (RVON01 - 1.0005) 43,43,40040                                  02140060
   43 RVCOMP = 0.0                                                      02150060
      GO TO 40040                                                       02160060
30040 IVDELE = IVDELE + 1                                               02170060
      WRITE (I02,80003) IVTNUM                                          02180060
      IF (ICZERO) 40040,   51, 40040                                    02190060
40040 IF (RVCOMP) 20040,10040,20040                                     02200060
10040 IVPASS = IVPASS + 1                                               02210060
      WRITE (I02,80001) IVTNUM                                          02220060
      GO TO   51                                                        02230060
20040 IVFAIL = IVFAIL + 1                                               02240060
      RVCORR = 0.0                                                      02250060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          02260060
   51 CONTINUE                                                          02270060
      IVTNUM =   5                                                      02280060
C                                                                       02290060
C      ****  TEST   5  ****                                             02300060
C     TEST 005  -  BASIC IF STATEMENTS TEST                             02310060
C           THESE IF STATEMENTS ARE USED IN REAL VARIABLE TEST          02320060
C           VERIFICATION.  THE ARITHMETIC EXPRESSIONS ARE OF THE FORM   02330060
C                   REAL VARIABLE + REAL CONSTANT                       02340060
C                                                                       02350060
      IF (ICZERO) 30050,   50, 30050                                    02360060
   50 CONTINUE                                                          02370060
      RVCOMP = -1.0                                                     02380060
      RVON01 = -1.0                                                     02390060
      IF (RVON01 + 1.0005) 40050,52,52                                  02400060
   52 IF (RVON01 + .99995) 53,53,40050                                  02410060
   53 RVCOMP = 0.0                                                      02420060
      GO TO 40050                                                       02430060
30050 IVDELE = IVDELE + 1                                               02440060
      WRITE (I02,80003) IVTNUM                                          02450060
      IF (ICZERO) 40050,   61, 40050                                    02460060
40050 IF (RVCOMP) 20050,10050,20050                                     02470060
10050 IVPASS = IVPASS + 1                                               02480060
      WRITE (I02,80001) IVTNUM                                          02490060
      GO TO   61                                                        02500060
20050 IVFAIL = IVFAIL + 1                                               02510060
      RVCORR = 0.0                                                      02520060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          02530060
C                                                                       02540060
C        ARITHMETIC ASSIGNMENT STATEMENT                                02550060
C                                                                       02560060
C                                                                       02570060
C     TEST 006 THROUGH TEST 025 CONTAIN ARITHMETIC ASSIGNMENT           02580060
C     STATEMENTS OF THE FORM                                            02590060
C              REAL VARIABLE = REAL CONSTANT                            02600060
C                                                                       02610060
C          THE THREE TYPES OF REAL CONSTANTS ARE TESTED WITH POSITIVE   02620060
C     AND NEGATIVE VALUES FOR THE CONSTANTS, AND POSITIVE AND NEGATIVE  02630060
C     EXPONENTS.                                                        02640060
C                                                                       02650060
C     TEST 006 THROUGH TEST 011 - CONSTANT IS BASIC REAL CONSTANT       02660060
C                                                                       02670060
   61 CONTINUE                                                          02680060
      IVTNUM =   6                                                      02690060
C                                                                       02700060
C      ****  TEST   6  ****                                             02710060
C                                                                       02720060
      IF (ICZERO) 30060,   60, 30060                                    02730060
   60 CONTINUE                                                          02740060
      RVCOMP = 2.0                                                      02750060
      GO TO 40060                                                       02760060
30060 IVDELE = IVDELE + 1                                               02770060
      WRITE (I02,80003) IVTNUM                                          02780060
      IF (ICZERO) 40060,   71, 40060                                    02790060
40060 IF (RVCOMP - 1.9995) 20060,10060,40061                            02800060
40061 IF (RVCOMP - 2.0005) 10060,10060,20060                            02810060
10060 IVPASS = IVPASS + 1                                               02820060
      WRITE (I02,80001) IVTNUM                                          02830060
      GO TO   71                                                        02840060
20060 IVFAIL = IVFAIL + 1                                               02850060
      RVCORR = 2.0                                                      02860060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          02870060
   71 CONTINUE                                                          02880060
      IVTNUM =   7                                                      02890060
C                                                                       02900060
C      ****  TEST   7  ****                                             02910060
C                                                                       02920060
      IF (ICZERO) 30070,   70, 30070                                    02930060
   70 CONTINUE                                                          02940060
      RVCOMP = 44.5                                                     02950060
      GO TO 40070                                                       02960060
30070 IVDELE = IVDELE + 1                                               02970060
      WRITE (I02,80003) IVTNUM                                          02980060
      IF (ICZERO) 40070,   81, 40070                                    02990060
40070 IF (RVCOMP - 44.495) 20070,10070,40071                            03000060
40071 IF (RVCOMP - 45.505) 10070,10070,20070                            03010060
10070 IVPASS = IVPASS + 1                                               03020060
      WRITE (I02,80001) IVTNUM                                          03030060
      GO TO   81                                                        03040060
20070 IVFAIL = IVFAIL + 1                                               03050060
      RVCORR = 44.5                                                     03060060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03070060
   81 CONTINUE                                                          03080060
      IVTNUM =   8                                                      03090060
C                                                                       03100060
C      ****  TEST   8  ****                                             03110060
C                                                                       03120060
      IF (ICZERO) 30080,   80, 30080                                    03130060
   80 CONTINUE                                                          03140060
      RVCOMP = -2.0                                                     03150060
      GO TO 40080                                                       03160060
30080 IVDELE = IVDELE + 1                                               03170060
      WRITE (I02,80003) IVTNUM                                          03180060
      IF (ICZERO) 40080,   91, 40080                                    03190060
40080 IF (RVCOMP + 2.0005) 20080,10080,40081                            03200060
40081 IF (RVCOMP + 1.9995) 10080,10080,20080                            03210060
10080 IVPASS = IVPASS + 1                                               03220060
      WRITE (I02,80001) IVTNUM                                          03230060
      GO TO   91                                                        03240060
20080 IVFAIL = IVFAIL + 1                                               03250060
      RVCORR = -2.0                                                     03260060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03270060
   91 CONTINUE                                                          03280060
      IVTNUM =   9                                                      03290060
C                                                                       03300060
C      ****  TEST   9  ****                                             03310060
C                                                                       03320060
      IF (ICZERO) 30090,   90, 30090                                    03330060
   90 CONTINUE                                                          03340060
      RVCOMP = 65001.                                                   03350060
      GO TO 40090                                                       03360060
30090 IVDELE = IVDELE + 1                                               03370060
      WRITE (I02,80003) IVTNUM                                          03380060
      IF (ICZERO) 40090,  101, 40090                                    03390060
40090 IF (RVCOMP - 64996.) 20090,10090,40091                            03400060
40091 IF (RVCOMP - 65006.) 10090,10090,20090                            03410060
10090 IVPASS = IVPASS + 1                                               03420060
      WRITE (I02,80001) IVTNUM                                          03430060
      GO TO  101                                                        03440060
20090 IVFAIL = IVFAIL + 1                                               03450060
      RVCORR = 65001.                                                   03460060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03470060
  101 CONTINUE                                                          03480060
      IVTNUM =  10                                                      03490060
C                                                                       03500060
C      ****  TEST  10  ****                                             03510060
C                                                                       03520060
      IF (ICZERO) 30100,  100, 30100                                    03530060
  100 CONTINUE                                                          03540060
      RVCOMP = .65001                                                   03550060
      GO TO 40100                                                       03560060
30100 IVDELE = IVDELE + 1                                               03570060
      WRITE (I02,80003) IVTNUM                                          03580060
      IF (ICZERO) 40100,  111, 40100                                    03590060
40100 IF (RVCOMP - .64996) 20100,10100,40101                            03600060
40101 IF (RVCOMP - .65006) 10100,10100,20100                            03610060
10100 IVPASS = IVPASS + 1                                               03620060
      WRITE (I02,80001) IVTNUM                                          03630060
      GO TO  111                                                        03640060
20100 IVFAIL = IVFAIL + 1                                               03650060
      RVCORR = .65001                                                   03660060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03670060
  111 CONTINUE                                                          03680060
      IVTNUM =  11                                                      03690060
C                                                                       03700060
C      ****  TEST  11  ****                                             03710060
C                                                                       03720060
      IF (ICZERO) 30110,  110, 30110                                    03730060
  110 CONTINUE                                                          03740060
      RVCOMP = -.33333                                                  03750060
      GO TO 40110                                                       03760060
30110 IVDELE = IVDELE + 1                                               03770060
      WRITE (I02,80003) IVTNUM                                          03780060
      IF (ICZERO) 40110,  121, 40110                                    03790060
40110 IF (RVCOMP + .33338) 20110,10110,40111                            03800060
40111 IF (RVCOMP + .33328) 10110,10110,20110                            03810060
10110 IVPASS = IVPASS + 1                                               03820060
      WRITE (I02,80001) IVTNUM                                          03830060
      GO TO  121                                                        03840060
20110 IVFAIL = IVFAIL + 1                                               03850060
      RVCORR = -.33333                                                  03860060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03870060
C                                                                       03880060
C     TEST 012 THROUGH TEST 19 - REAL CONSTANT IS BASIC REAL CONSTANT   03890060
C                              - FOLLOWED BY DECIMAL EXPONENT           03900060
C                                                                       03910060
  121 CONTINUE                                                          03920060
      IVTNUM =  12                                                      03930060
C                                                                       03940060
C      ****  TEST  12  ****                                             03950060
C                                                                       03960060
      IF (ICZERO) 30120,  120, 30120                                    03970060
  120 CONTINUE                                                          03980060
      RVCOMP = .2E+1                                                    03990060
      GO TO 40120                                                       04000060
30120 IVDELE = IVDELE + 1                                               04010060
      WRITE (I02,80003) IVTNUM                                          04020060
      IF (ICZERO) 40120,  131, 40120                                    04030060
40120 IF (RVCOMP - 1.9995) 20120,10120,40121                            04040060
40121 IF (RVCOMP - 2.0005) 10120,10120,20120                            04050060
10120 IVPASS = IVPASS + 1                                               04060060
      WRITE (I02,80001) IVTNUM                                          04070060
      GO TO  131                                                        04080060
20120 IVFAIL = IVFAIL + 1                                               04090060
      RVCORR = 2.0                                                      04100060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04110060
  131 CONTINUE                                                          04120060
      IVTNUM =  13                                                      04130060
C                                                                       04140060
C      ****  TEST  13  ****                                             04150060
C                                                                       04160060
      IF (ICZERO) 30130,  130, 30130                                    04170060
  130 CONTINUE                                                          04180060
      RVCOMP = 2.0E+0                                                   04190060
      GO TO 40130                                                       04200060
30130 IVDELE = IVDELE + 1                                               04210060
      WRITE (I02,80003) IVTNUM                                          04220060
      IF (ICZERO) 40130,  141, 40130                                    04230060
40130 IF (RVCOMP - 1.9995) 20130,10130,40131                            04240060
40131 IF (RVCOMP - 2.0005) 10130,10130,20130                            04250060
10130 IVPASS = IVPASS + 1                                               04260060
      WRITE (I02,80001) IVTNUM                                          04270060
      GO TO  141                                                        04280060
20130 IVFAIL = IVFAIL + 1                                               04290060
      RVCORR = 2.0                                                      04300060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04310060
  141 CONTINUE                                                          04320060
      IVTNUM =  14                                                      04330060
C                                                                       04340060
C      ****  TEST  14  ****                                             04350060
C                                                                       04360060
      IF (ICZERO) 30140,  140, 30140                                    04370060
  140 CONTINUE                                                          04380060
      RVCOMP = 445.0E-01                                                04390060
      GO TO 40140                                                       04400060
30140 IVDELE = IVDELE + 1                                               04410060
      WRITE (I02,80003) IVTNUM                                          04420060
      IF (ICZERO) 40140,  151, 40140                                    04430060
40140 IF (RVCOMP - 44.495) 20140,10140,40141                            04440060
40141 IF (RVCOMP - 44.505) 10140,10140,20140                            04450060
10140 IVPASS = IVPASS + 1                                               04460060
      WRITE (I02,80001) IVTNUM                                          04470060
      GO TO  151                                                        04480060
20140 IVFAIL = IVFAIL + 1                                               04490060
      RVCORR = 44.5                                                     04500060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04510060
  151 CONTINUE                                                          04520060
      IVTNUM =  15                                                      04530060
C                                                                       04540060
C      ****  TEST  15  ****                                             04550060
C                                                                       04560060
      IF (ICZERO) 30150,  150, 30150                                    04570060
  150 CONTINUE                                                          04580060
      RVCOMP = 4.450E1                                                  04590060
      GO TO 40150                                                       04600060
30150 IVDELE = IVDELE + 1                                               04610060
      WRITE (I02,80003) IVTNUM                                          04620060
      IF (ICZERO) 40150,  161, 40150                                    04630060
40150 IF (RVCOMP - 44.495) 20150,10150,40151                            04640060
40151 IF (RVCOMP - 44.505) 10150,10150,20150                            04650060
10150 IVPASS = IVPASS + 1                                               04660060
      WRITE (I02,80001) IVTNUM                                          04670060
      GO TO  161                                                        04680060
20150 IVFAIL = IVFAIL + 1                                               04690060
      RVCORR = 44.5                                                     04700060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04710060
  161 CONTINUE                                                          04720060
      IVTNUM =  16                                                      04730060
C                                                                       04740060
C      ****  TEST  16  ****                                             04750060
C                                                                       04760060
      IF (ICZERO) 30160,  160, 30160                                    04770060
  160 CONTINUE                                                          04780060
      RVCOMP = 2.E+15                                                   04790060
      GO TO 40160                                                       04800060
30160 IVDELE = IVDELE + 1                                               04810060
      WRITE (I02,80003) IVTNUM                                          04820060
      IF (ICZERO) 40160,  171, 40160                                    04830060
40160 IF (RVCOMP - 1.9995E+15) 20160,10160,40161                        04840060
40161 IF (RVCOMP - 2.0005E+15) 10160,10160,20160                        04850060
10160 IVPASS = IVPASS + 1                                               04860060
      WRITE (I02,80001) IVTNUM                                          04870060
      GO TO  171                                                        04880060
20160 IVFAIL = IVFAIL + 1                                               04890060
      RVCORR = 2.0E+15                                                  04900060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04910060
  171 CONTINUE                                                          04920060
      IVTNUM =  17                                                      04930060
C                                                                       04940060
C      ****  TEST  17  ****                                             04950060
C                                                                       04960060
      IF (ICZERO) 30170,  170, 30170                                    04970060
  170 CONTINUE                                                          04980060
      RVCOMP = 44.5E-15                                                 04990060
      GO TO 40170                                                       05000060
30170 IVDELE = IVDELE + 1                                               05010060
      WRITE (I02,80003) IVTNUM                                          05020060
      IF (ICZERO) 40170,  181, 40170                                    05030060
40170 IF (RVCOMP - 44.495E-15) 20170,10170,40171                        05040060
40171 IF (RVCOMP - 44.505E-15) 10170,10170,20170                        05050060
10170 IVPASS = IVPASS + 1                                               05060060
      WRITE (I02,80001) IVTNUM                                          05070060
      GO TO  181                                                        05080060
20170 IVFAIL = IVFAIL + 1                                               05090060
      RVCORR = 44.5E-15                                                 05100060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          05110060
  181 CONTINUE                                                          05120060
      IVTNUM =  18                                                      05130060
C                                                                       05140060
C      ****  TEST  18  ****                                             05150060
C                                                                       05160060
      IF (ICZERO) 30180,  180, 30180                                    05170060
  180 CONTINUE                                                          05180060
      RVCOMP = -4.45E0                                                  05190060
      GO TO 40180                                                       05200060
30180 IVDELE = IVDELE + 1                                               05210060
      WRITE (I02,80003) IVTNUM                                          05220060
      IF (ICZERO) 40180,  191, 40180                                    05230060
40180 IF (RVCOMP + 4.4505) 20180,10180,40181                            05240060
40181 IF (RVCOMP + 4.4495) 10180,10180,20180                            05250060
10180 IVPASS = IVPASS + 1                                               05260060
      WRITE (I02,80001) IVTNUM                                          05270060
      GO TO  191                                                        05280060
20180 IVFAIL = IVFAIL + 1                                               05290060
      RVCORR = -4.45                                                    05300060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          05310060
  191 CONTINUE                                                          05320060
      IVTNUM =  19                                                      05330060
C                                                                       05340060
C      ****  TEST  19  ****                                             05350060
C                                                                       05360060
      IF (ICZERO) 30190,  190, 30190                                    05370060
  190 CONTINUE                                                          05380060
      RVCOMP = -6511.8E-0                                               05390060
      GO TO 40190                                                       05400060
30190 IVDELE = IVDELE + 1                                               05410060
      WRITE (I02,80003) IVTNUM                                          05420060
      IF (ICZERO) 40190,  201, 40190                                    05430060
40190 IF (RVCOMP + 6512.3) 20190,10190,40191                            05440060
40191 IF (RVCOMP + 6511.3) 10190,10190,20190                            05450060
10190 IVPASS = IVPASS + 1                                               05460060
      WRITE (I02,80001) IVTNUM                                          05470060
      GO TO  201                                                        05480060
20190 IVFAIL = IVFAIL + 1                                               05490060
      RVCORR = -6511.8                                                  05500060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          05510060
C                                                                       05520060
C     TEST 020 THROUGH TEST 025 - INTEGER CONSTANT FOLLOWED             05530060
C                               - BY A DECIMAL EXPONENT                 05540060
C                                                                       05550060
  201 CONTINUE                                                          05560060
      IVTNUM =  20                                                      05570060
C                                                                       05580060
C      ****  TEST  20  ****                                             05590060
C                                                                       05600060
      IF (ICZERO) 30200,  200, 30200                                    05610060
  200 CONTINUE                                                          05620060
      RVCOMP = 2E+1                                                     05630060
      GO TO 40200                                                       05640060
30200 IVDELE = IVDELE + 1                                               05650060
      WRITE (I02,80003) IVTNUM                                          05660060
      IF (ICZERO) 40200,  211, 40200                                    05670060
40200 IF (RVCOMP - 19.995) 20200,10200,40201                            05680060
40201 IF (RVCOMP - 20.005) 10200,10200,20200                            05690060
10200 IVPASS = IVPASS + 1                                               05700060
      WRITE (I02,80001) IVTNUM                                          05710060
      GO TO  211                                                        05720060
20200 IVFAIL = IVFAIL + 1                                               05730060
      RVCORR = 20.0                                                     05740060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          05750060
  211 CONTINUE                                                          05760060
      IVTNUM =  21                                                      05770060
C                                                                       05780060
C      ****  TEST  21  ****                                             05790060
C                                                                       05800060
      IF (ICZERO) 30210,  210, 30210                                    05810060
  210 CONTINUE                                                          05820060
      RVCOMP = 445E-02                                                  05830060
      GO TO 40210                                                       05840060
30210 IVDELE = IVDELE + 1                                               05850060
      WRITE (I02,80003) IVTNUM                                          05860060
      IF (ICZERO) 40210,  221, 40210                                    05870060
40210 IF (RVCOMP - 4.4495) 20210,10210,40211                            05880060
40211 IF (RVCOMP - 4.4505) 10210,10210,20210                            05890060
10210 IVPASS = IVPASS + 1                                               05900060
      WRITE (I02,80001) IVTNUM                                          05910060
      GO TO  221                                                        05920060
20210 IVFAIL = IVFAIL + 1                                               05930060
      RVCORR = 4.45                                                     05940060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          05950060
  221 CONTINUE                                                          05960060
      IVTNUM =  22                                                      05970060
C                                                                       05980060
C      ****  TEST  22  ****                                             05990060
C                                                                       06000060
      IF (ICZERO) 30220,  220, 30220                                    06010060
  220 CONTINUE                                                          06020060
      RVCOMP = 7E3                                                      06030060
      GO TO 40220                                                       06040060
30220 IVDELE = IVDELE + 1                                               06050060
      WRITE (I02,80003) IVTNUM                                          06060060
      IF (ICZERO) 40220,  231, 40220                                    06070060
40220 IF (RVCOMP - 6999.0) 20220,10220,40221                            06080060
40221 IF (RVCOMP - 7001.0) 10220,10220,20220                            06090060
10220 IVPASS = IVPASS + 1                                               06100060
      WRITE (I02,80001) IVTNUM                                          06110060
      GO TO  231                                                        06120060
20220 IVFAIL = IVFAIL + 1                                               06130060
      RVCORR = 7000.0                                                   06140060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          06150060
  231 CONTINUE                                                          06160060
      IVTNUM =  23                                                      06170060
C                                                                       06180060
C      ****  TEST  23  ****                                             06190060
C                                                                       06200060
      IF (ICZERO) 30230,  230, 30230                                    06210060
  230 CONTINUE                                                          06220060
      RVCOMP = 214 E 0                                                  06230060
      GO TO 40230                                                       06240060
30230 IVDELE = IVDELE + 1                                               06250060
      WRITE (I02,80003) IVTNUM                                          06260060
      IF (ICZERO) 40230,  241, 40230                                    06270060
40230 IF (RVCOMP - 213.95) 20230,10230,40231                            06280060
40231 IF (RVCOMP - 214.05) 10230,10230,20230                            06290060
10230 IVPASS = IVPASS + 1                                               06300060
      WRITE (I02,80001) IVTNUM                                          06310060
      GO TO  241                                                        06320060
20230 IVFAIL = IVFAIL + 1                                               06330060
      RVCORR = 214.0                                                    06340060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          06350060
  241 CONTINUE                                                          06360060
      IVTNUM =  24                                                      06370060
C                                                                       06380060
C      ****  TEST  24  ****                                             06390060
C                                                                       06400060
      IF (ICZERO) 30240,  240, 30240                                    06410060
  240 CONTINUE                                                          06420060
      RVCOMP = -3276E+6                                                 06430060
      GO TO 40240                                                       06440060
30240 IVDELE = IVDELE + 1                                               06450060
      WRITE (I02,80003) IVTNUM                                          06460060
      IF (ICZERO) 40240,  251, 40240                                    06470060
40240 IF (RVCOMP + .32765E+10) 20240,10240,40241                        06480060
40241 IF (RVCOMP + .32755E+10) 10240,10240,20240                        06490060
10240 IVPASS = IVPASS + 1                                               06500060
      WRITE (I02,80001) IVTNUM                                          06510060
      GO TO  251                                                        06520060
20240 IVFAIL = IVFAIL + 1                                               06530060
      RVCORR = -3276E+6                                                 06540060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          06550060
  251 CONTINUE                                                          06560060
      IVTNUM =  25                                                      06570060
C                                                                       06580060
C      ****  TEST  25  ****                                             06590060
C                                                                       06600060
      IF (ICZERO) 30250,  250, 30250                                    06610060
  250 CONTINUE                                                          06620060
      RVCOMP = -7E3                                                     06630060
      GO TO 40250                                                       06640060
30250 IVDELE = IVDELE + 1                                               06650060
      WRITE (I02,80003) IVTNUM                                          06660060
      IF (ICZERO) 40250,  261, 40250                                    06670060
40250 IF (RVCOMP + 7001.)  20250,10250,40251                            06680060
40251 IF (RVCOMP + 6999.) 10250,10250,20250                             06690060
10250 IVPASS = IVPASS + 1                                               06700060
      WRITE (I02,80001) IVTNUM                                          06710060
      GO TO  261                                                        06720060
20250 IVFAIL = IVFAIL + 1                                               06730060
      RVCORR = -7000.0                                                  06740060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          06750060
C                                                                       06760060
C     TEST 026 THROUGH TEST 028 CONTAIN ARITHMETIC ASSIGNMENT STATEMENT 06770060
C     OF THE FORM            REAL VARIABLE = REAL VARIABLE              06780060
C                                                                       06790060
  261 CONTINUE                                                          06800060
      IVTNUM =  26                                                      06810060
C                                                                       06820060
C      ****  TEST  26  ****                                             06830060
C                                                                       06840060
      IF (ICZERO) 30260,  260, 30260                                    06850060
  260 CONTINUE                                                          06860060
      RVON01 = .2E+1                                                    06870060
      RVCOMP = RVON01                                                   06880060
      GO TO 40260                                                       06890060
30260 IVDELE = IVDELE + 1                                               06900060
      WRITE (I02,80003) IVTNUM                                          06910060
      IF (ICZERO) 40260,  271, 40260                                    06920060
40260 IF (RVCOMP - 1.9995) 20260,10260,40261                            06930060
40261 IF (RVCOMP - 2.0005) 10260,10260,20260                            06940060
10260 IVPASS = IVPASS + 1                                               06950060
      WRITE (I02,80001) IVTNUM                                          06960060
      GO TO  271                                                        06970060
20260 IVFAIL = IVFAIL + 1                                               06980060
      RVCORR = 20.0                                                     06990060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07000060
  271 CONTINUE                                                          07010060
      IVTNUM =  27                                                      07020060
C                                                                       07030060
C      ****  TEST  27  ****                                             07040060
C                                                                       07050060
      IF (ICZERO) 30270,  270, 30270                                    07060060
  270 CONTINUE                                                          07070060
      RVON01 = -445.E-01                                                07080060
      RVCOMP = RVON01                                                   07090060
      GO TO 40270                                                       07100060
30270 IVDELE = IVDELE + 1                                               07110060
      WRITE (I02,80003) IVTNUM                                          07120060
      IF (ICZERO) 40270,  281, 40270                                    07130060
40270 IF (RVCOMP + 44.505) 20270,10270,40271                            07140060
40271 IF (RVCOMP + 44.495) 10270,10270,20270                            07150060
10270 IVPASS = IVPASS + 1                                               07160060
      WRITE (I02,80001) IVTNUM                                          07170060
      GO TO  281                                                        07180060
20270 IVFAIL = IVFAIL + 1                                               07190060
      RVCORR = -44.5                                                    07200060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07210060
  281 CONTINUE                                                          07220060
      IVTNUM =  28                                                      07230060
C                                                                       07240060
C      ****  TEST  28  ****                                             07250060
C                                                                       07260060
      IF (ICZERO) 30280,  280, 30280                                    07270060
  280 CONTINUE                                                          07280060
      RVON01 = 7E3                                                      07290060
      RVCOMP = RVON01                                                   07300060
      GO TO 40280                                                       07310060
30280 IVDELE = IVDELE + 1                                               07320060
      WRITE (I02,80003) IVTNUM                                          07330060
      IF (ICZERO) 40280,  291, 40280                                    07340060
40280 IF (RVCOMP - 6999.0) 20280,10280,40281                            07350060
40281 IF (RVCOMP-7001.0) 10280,10280,20280                              07360060
10280 IVPASS = IVPASS + 1                                               07370060
      WRITE (I02,80001) IVTNUM                                          07380060
      GO TO  291                                                        07390060
20280 IVFAIL = IVFAIL + 1                                               07400060
      RVCORR = 7000.0                                                   07410060
C                                                                       07420060
C     TEST 029 THROUGH TEST 031 CONTAIN ARITHMETIC ASSIGNMENT STATEMENT 07430060
C     OF THE FORM            REAL VARIABLE = - REAL VARIABLE            07440060
C                                                                       07450060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07460060
  291 CONTINUE                                                          07470060
      IVTNUM =  29                                                      07480060
C                                                                       07490060
C      ****  TEST  29  ****                                             07500060
C                                                                       07510060
      IF (ICZERO) 30290,  290, 30290                                    07520060
  290 CONTINUE                                                          07530060
      RVON01 = .2E+1                                                    07540060
      RVCOMP = -RVON01                                                  07550060
      GO TO 40290                                                       07560060
30290 IVDELE = IVDELE + 1                                               07570060
      WRITE (I02,80003) IVTNUM                                          07580060
      IF (ICZERO) 40290,  301, 40290                                    07590060
40290 IF (RVCOMP + 2.0005) 20290,10290,40291                            07600060
40291 IF (RVCOMP + 1.9995) 10290,10290,20290                            07610060
10290 IVPASS = IVPASS + 1                                               07620060
      WRITE (I02,80001) IVTNUM                                          07630060
      GO TO  301                                                        07640060
20290 IVFAIL = IVFAIL + 1                                               07650060
      RVCORR = -2.0                                                     07660060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07670060
  301 CONTINUE                                                          07680060
      IVTNUM =  30                                                      07690060
C                                                                       07700060
C      ****  TEST  30  ****                                             07710060
C                                                                       07720060
      IF (ICZERO) 30300,  300, 30300                                    07730060
  300 CONTINUE                                                          07740060
      RVON01 = -445.E-01                                                07750060
      RVCOMP = -RVON01                                                  07760060
      GO TO 40300                                                       07770060
30300 IVDELE = IVDELE + 1                                               07780060
      WRITE (I02,80003) IVTNUM                                          07790060
      IF (ICZERO) 40300,  311, 40300                                    07800060
40300 IF (RVCOMP - 44.495) 20300,10300,40301                            07810060
40301 IF (RVCOMP - 44.505) 10300,10300,20300                            07820060
10300 IVPASS = IVPASS + 1                                               07830060
      WRITE (I02,80001) IVTNUM                                          07840060
      GO TO  311                                                        07850060
20300 IVFAIL = IVFAIL + 1                                               07860060
      RVCORR = 44.5                                                     07870060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07880060
  311 CONTINUE                                                          07890060
      IVTNUM =  31                                                      07900060
C                                                                       07910060
C      ****  TEST  31  ****                                             07920060
C                                                                       07930060
      IF (ICZERO) 30310,  310, 30310                                    07940060
  310 CONTINUE                                                          07950060
      RVON01 = -.44559E1                                                07960060
      RVCOMP = -RVON01                                                  07970060
      GO TO 40310                                                       07980060
30310 IVDELE = IVDELE + 1                                               07990060
      WRITE (I02,80003) IVTNUM                                          08000060
      IF (ICZERO) 40310,  321, 40310                                    08010060
40310 IF (RVCOMP - 4.4554) 20310,10310,40311                            08020060
40311 IF (RVCOMP - 4.4564) 10310,10310,20310                            08030060
10310 IVPASS = IVPASS + 1                                               08040060
      WRITE (I02,80001) IVTNUM                                          08050060
      GO TO  321                                                        08060060
20310 IVFAIL = IVFAIL + 1                                               08070060
      RVCORR = 4.4559                                                   08080060
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          08090060
C      ****    END OF TESTS    ****                                     08100060
  321 CONTINUE                                                          08110060
C                                                                       08120060
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             08130060
99999 CONTINUE                                                          08140060
      WRITE (I02,90002)                                                 08150060
      WRITE (I02,90006)                                                 08160060
      WRITE (I02,90002)                                                 08170060
      WRITE (I02,90002)                                                 08180060
      WRITE (I02,90007)                                                 08190060
      WRITE (I02,90002)                                                 08200060
      WRITE (I02,90008)  IVFAIL                                         08210060
      WRITE (I02,90009) IVPASS                                          08220060
      WRITE (I02,90010) IVDELE                                          08230060
C                                                                       08240060
C                                                                       08250060
C     TERMINATE ROUTINE EXECUTION                                       08260060
      STOP                                                              08270060
C                                                                       08280060
C     FORMAT STATEMENTS FOR PAGE HEADERS                                08290060
90000 FORMAT ("1")                                                      08300060
90002 FORMAT (" ")                                                      08310060
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            08320060
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   08330060
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        08340060
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08350060
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08360060
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             08370060
C                                                                       08380060
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               08390060
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        08400060
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              08410060
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             08420060
C                                                                       08430060
C     FORMAT STATEMENTS FOR TEST RESULTS                                08440060
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      08450060
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      08460060
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   08470060
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         08480060
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    08490060
C                                                                       08500060
90007 FORMAT (" ",20X,"END OF PROGRAM FM060" )                          08510060
      END                                                               08520060