FM061.f Source File


Contents

Source Code


Source Code

      PROGRAM FM061

C     COMMENT SECTION                                                   00010061
C                                                                       00020061
C     FM061                                                             00030061
C                                                                       00040061
C          THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE   00050061
C     FORM                                                              00060061
C                   INTEGER VARIABLE = REAL CONSTANT                    00070061
C                   INTEGER VARIABLE = REAL VARIABLE                    00080061
C                   REAL VARIABLE = INTEGER VARIABLE                    00090061
C                   REAL VARIABLE = INTEGER CONSTANT                    00100061
C                                                                       00110061
C     THE CONSTANTS AND VARIABLES CONTAIN BOTH POSITIVE AND NEGATIVE    00120061
C     VALUES.                                                           00130061
C                                                                       00140061
C           A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A 00150061
C     REAL NUMBER.  IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES.   00160061
C                                                                       00170061
C          A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A       00180061
C     DECIMAL POINT, AND A DECIMAL FRACTION PART IN THAT ORDER.  BOTH   00190061
C     THE INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS;      00200061
C     EITHER ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH.  THE       00210061
C     CONSTANT IS AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A 00220061
C     DECIMAL NUMERAL.                                                  00230061
C                                                                       00240061
C         A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN 00250061
C     OPTIONALLY SIGNED INTEGER CONSTANT.                               00260061
C                                                                       00270061
C         A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT,00280061
C     A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN       00290061
C     INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT.                  00300061
C                                                                       00310061
C      REFERENCES                                                       00320061
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00330061
C              X3.9-1978                                                00340061
C                                                                       00350061
C        SECTION 4.4, REAL TYPE                                         00360061
C        SECTION 4.4.1, REAL CONSTANT                                   00370061
C        SECTION 6.1, ARITHMETIC EXPRESSIONS                            00380061
C        SECTION 6.6, EVALUATION OF EXPRESSIONS                         00390061
C        SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT                  00400061
C        SECTION 11.4, ARITHMETIC IF STATEMENT                          00410061
C                                                                       00420061
C      **********************************************************       00430061
C                                                                       00440061
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00450061
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00460061
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00470061
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00480061
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00490061
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00500061
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00510061
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00520061
C     OF EXECUTING THESE TESTS.                                         00530061
C                                                                       00540061
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00550061
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00560061
C                                                                       00570061
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00580061
C                                                                       00590061
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00600061
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00610061
C                          BUILDING 225  RM A266                        00620061
C                         GAITHERSBURG, MD  20899                       00630061
C      **********************************************************       00640061
C                                                                       00650061
C                                                                       00660061
C                                                                       00670061
C     INITIALIZATION SECTION                                            00680061
C                                                                       00690061
C     INITIALIZE CONSTANTS                                              00700061
C      **************                                                   00710061
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00720061
      I01 = 5                                                           00730061
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00740061
      I02 = 6                                                           00750061
C     SYSTEM ENVIRONMENT SECTION                                        00760061
C                                                                       00770061
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00780061
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00790061
C     (UNIT NUMBER FOR CARD READER).                                    00800061
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00810061
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00820061
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00830061
C                                                                       00840061
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00850061
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00860061
C     (UNIT NUMBER FOR PRINTER).                                        00870061
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00880061
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00890061
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00900061
C                                                                       00910061
      IVPASS=0                                                          00920061
      IVFAIL=0                                                          00930061
      IVDELE=0                                                          00940061
      ICZERO=0                                                          00950061
C                                                                       00960061
C     WRITE PAGE HEADERS                                                00970061
      WRITE (I02,90000)                                                 00980061
      WRITE (I02,90001)                                                 00990061
      WRITE (I02,90002)                                                 01000061
      WRITE (I02, 90002)                                                01010061
      WRITE (I02,90003)                                                 01020061
      WRITE (I02,90002)                                                 01030061
      WRITE (I02,90004)                                                 01040061
      WRITE (I02,90002)                                                 01050061
      WRITE (I02,90011)                                                 01060061
      WRITE (I02,90002)                                                 01070061
      WRITE (I02,90002)                                                 01080061
      WRITE (I02,90005)                                                 01090061
      WRITE (I02,90006)                                                 01100061
      WRITE (I02,90002)                                                 01110061
C                                                                       01120061
C     TEST SECTION                                                      01130061
C                                                                       01140061
C     TEST 32 THROUGH TEST 42 CONTAIN ARITHMETIC ASSIGNMENT             01150061
C     STATEMENTS OF THE FORM                                            01160061
C                                                                       01170061
C                   INTEGER VARIABLE = REAL VARIABLE                    01180061
C                                                                       01190061
      IVTNUM =  32                                                      01200061
C                                                                       01210061
C      ****  TEST  32  ****                                             01220061
C                                                                       01230061
      IF (ICZERO) 30320,  320, 30320                                    01240061
  320 CONTINUE                                                          01250061
      RVON01 = 44.5                                                     01260061
      IVCOMP = RVON01                                                   01270061
      GO TO 40320                                                       01280061
30320 IVDELE = IVDELE + 1                                               01290061
      WRITE (I02,80003) IVTNUM                                          01300061
      IF (ICZERO) 40320,  331, 40320                                    01310061
40320 IF (IVCOMP - 44) 20320,10320,20320                                01320061
10320 IVPASS = IVPASS + 1                                               01330061
      WRITE (I02,80001) IVTNUM                                          01340061
      GO TO  331                                                        01350061
20320 IVFAIL = IVFAIL + 1                                               01360061
      IVCORR = 44                                                       01370061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01380061
  331 CONTINUE                                                          01390061
      IVTNUM =  33                                                      01400061
C                                                                       01410061
C      ****  TEST  33  ****                                             01420061
C                                                                       01430061
      IF (ICZERO) 30330,  330, 30330                                    01440061
  330 CONTINUE                                                          01450061
      RVON01 = -2.0005                                                  01460061
      IVCOMP = RVON01                                                   01470061
      GO TO 40330                                                       01480061
30330 IVDELE = IVDELE + 1                                               01490061
      WRITE (I02,80003) IVTNUM                                          01500061
      IF (ICZERO) 40330,  341, 40330                                    01510061
40330 IF (IVCOMP + 2) 20330,10330,20330                                 01520061
10330 IVPASS = IVPASS + 1                                               01530061
      WRITE (I02,80001) IVTNUM                                          01540061
      GO TO  341                                                        01550061
20330 IVFAIL = IVFAIL + 1                                               01560061
      IVCORR = -2                                                       01570061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01580061
  341 CONTINUE                                                          01590061
      IVTNUM =  34                                                      01600061
C                                                                       01610061
C      ****  TEST  34  ****                                             01620061
C                                                                       01630061
      IF (ICZERO) 30340,  340, 30340                                    01640061
  340 CONTINUE                                                          01650061
      RVON01 = .32767                                                   01660061
      IVCOMP = RVON01                                                   01670061
      GO TO 40340                                                       01680061
30340 IVDELE = IVDELE + 1                                               01690061
      WRITE (I02,80003) IVTNUM                                          01700061
      IF (ICZERO) 40340,  351, 40340                                    01710061
40340 IF (IVCOMP) 20340,10340,20340                                     01720061
10340 IVPASS = IVPASS + 1                                               01730061
      WRITE (I02,80001) IVTNUM                                          01740061
      GO TO  351                                                        01750061
20340 IVFAIL = IVFAIL + 1                                               01760061
      IVCORR = 0                                                        01770061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01780061
  351 CONTINUE                                                          01790061
      IVTNUM =  35                                                      01800061
C                                                                       01810061
C      ****  TEST  35  ****                                             01820061
C                                                                       01830061
      IF (ICZERO) 30350,  350, 30350                                    01840061
  350 CONTINUE                                                          01850061
      RVON01 = 1.999                                                    01860061
      IVCOMP = RVON01                                                   01870061
      GO TO 40350                                                       01880061
30350 IVDELE = IVDELE + 1                                               01890061
      WRITE (I02,80003) IVTNUM                                          01900061
      IF (ICZERO) 40350,  361, 40350                                    01910061
40350 IF (IVCOMP - 1) 20350,10350,20350                                 01920061
10350 IVPASS = IVPASS + 1                                               01930061
      WRITE (I02,80001) IVTNUM                                          01940061
      GO TO  361                                                        01950061
20350 IVFAIL = IVFAIL + 1                                               01960061
      IVCORR = 1                                                        01970061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01980061
  361 CONTINUE                                                          01990061
      IVTNUM =  36                                                      02000061
C                                                                       02010061
C      ****  TEST  36  ****                                             02020061
C                                                                       02030061
      IF (ICZERO) 30360,  360, 30360                                    02040061
  360 CONTINUE                                                          02050061
      RVON01 = .25E+1                                                   02060061
      IVCOMP = RVON01                                                   02070061
      GO TO 40360                                                       02080061
30360 IVDELE = IVDELE + 1                                               02090061
      WRITE (I02,80003) IVTNUM                                          02100061
      IF (ICZERO) 40360,  371, 40360                                    02110061
40360 IF (IVCOMP - 2) 20360,10360,20360                                 02120061
10360 IVPASS = IVPASS + 1                                               02130061
      WRITE (I02,80001) IVTNUM                                          02140061
      GO TO  371                                                        02150061
20360 IVFAIL = IVFAIL + 1                                               02160061
      IVCORR = 2                                                        02170061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02180061
  371 CONTINUE                                                          02190061
      IVTNUM =  37                                                      02200061
C                                                                       02210061
C      ****  TEST  37  ****                                             02220061
C                                                                       02230061
      IF (ICZERO) 30370,  370, 30370                                    02240061
  370 CONTINUE                                                          02250061
      RVON01 = 445.0E-01                                                02260061
      IVCOMP = RVON01                                                   02270061
      GO TO 40370                                                       02280061
30370 IVDELE = IVDELE + 1                                               02290061
      WRITE (I02,80003) IVTNUM                                          02300061
      IF (ICZERO) 40370,  381, 40370                                    02310061
40370 IF (IVCOMP - 44) 20370,10370,20370                                02320061
10370 IVPASS = IVPASS + 1                                               02330061
      WRITE (I02,80001) IVTNUM                                          02340061
      GO TO  381                                                        02350061
20370 IVFAIL = IVFAIL + 1                                               02360061
      IVCORR = 44                                                       02370061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02380061
  381 CONTINUE                                                          02390061
      IVTNUM =  38                                                      02400061
C                                                                       02410061
C      ****  TEST  38  ****                                             02420061
C                                                                       02430061
      IF (ICZERO) 30380,  380, 30380                                    02440061
  380 CONTINUE                                                          02450061
      RVON01 = -651.1E-0                                                02460061
      IVCOMP = RVON01                                                   02470061
      GO TO 40380                                                       02480061
30380 IVDELE = IVDELE + 1                                               02490061
      WRITE (I02,80003) IVTNUM                                          02500061
      IF (ICZERO) 40380,  391, 40380                                    02510061
40380 IF (IVCOMP + 651) 20380,10380,20380                               02520061
10380 IVPASS = IVPASS + 1                                               02530061
      WRITE (I02,80001) IVTNUM                                          02540061
      GO TO  391                                                        02550061
20380 IVFAIL = IVFAIL + 1                                               02560061
      IVCORR = -651                                                     02570061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02580061
  391 CONTINUE                                                          02590061
      IVTNUM =  39                                                      02600061
C                                                                       02610061
C      ****  TEST  39  ****                                             02620061
C                                                                       02630061
      IF (ICZERO) 30390,  390, 30390                                    02640061
  390 CONTINUE                                                          02650061
      RVON01 = .3266E4                                                  02660061
      IVCOMP = RVON01                                                   02670061
      GO TO 40390                                                       02680061
30390 IVDELE = IVDELE + 1                                               02690061
      WRITE (I02,80003) IVTNUM                                          02700061
      IF (ICZERO) 40390,  401, 40390                                    02710061
40390 IF (IVCOMP - 3266) 20390,10390,20390                              02720061
10390 IVPASS = IVPASS + 1                                               02730061
      WRITE (I02,80001) IVTNUM                                          02740061
      GO TO  401                                                        02750061
20390 IVFAIL = IVFAIL + 1                                               02760061
      IVCORR = 3266                                                     02770061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02780061
  401 CONTINUE                                                          02790061
      IVTNUM =  40                                                      02800061
C                                                                       02810061
C      ****  TEST  40  ****                                             02820061
C                                                                       02830061
      IF (ICZERO) 30400,  400, 30400                                    02840061
  400 CONTINUE                                                          02850061
      RVON01 = 35.43E-01                                                02860061
      IVCOMP = RVON01                                                   02870061
      GO TO 40400                                                       02880061
30400 IVDELE = IVDELE + 1                                               02890061
      WRITE (I02,80003) IVTNUM                                          02900061
      IF (ICZERO) 40400,  411, 40400                                    02910061
40400 IF (IVCOMP - 3) 20400,10400,20400                                 02920061
10400 IVPASS = IVPASS + 1                                               02930061
      WRITE (I02,80001) IVTNUM                                          02940061
      GO TO  411                                                        02950061
20400 IVFAIL = IVFAIL + 1                                               02960061
      IVCORR = 3                                                        02970061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02980061
  411 CONTINUE                                                          02990061
      IVTNUM =  41                                                      03000061
C                                                                       03010061
C      ****  TEST  41  ****                                             03020061
C                                                                       03030061
      IF (ICZERO) 30410,  410, 30410                                    03040061
  410 CONTINUE                                                          03050061
      RVON01 = -7.001E2                                                 03060061
      IVCOMP = RVON01                                                   03070061
      GO TO 40410                                                       03080061
30410 IVDELE = IVDELE + 1                                               03090061
      WRITE (I02,80003) IVTNUM                                          03100061
      IF (ICZERO) 40410,  421, 40410                                    03110061
40410 IF (IVCOMP + 700) 20410,10410,20410                               03120061
10410 IVPASS = IVPASS + 1                                               03130061
      WRITE (I02,80001) IVTNUM                                          03140061
      GO TO  421                                                        03150061
20410 IVFAIL = IVFAIL + 1                                               03160061
      IVCORR = -700                                                     03170061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          03180061
  421 CONTINUE                                                          03190061
      IVTNUM =  42                                                      03200061
C                                                                       03210061
C      ****  TEST  42  ****                                             03220061
C                                                                       03230061
      IF (ICZERO) 30420,  420, 30420                                    03240061
  420 CONTINUE                                                          03250061
      RVON01 = 4.45E-02                                                 03260061
      IVCOMP = RVON01                                                   03270061
      GO TO 40420                                                       03280061
30420 IVDELE = IVDELE + 1                                               03290061
      WRITE (I02,80003) IVTNUM                                          03300061
      IF (ICZERO) 40420,  431, 40420                                    03310061
40420 IF (IVCOMP) 20420,10420,20420                                     03320061
10420 IVPASS = IVPASS + 1                                               03330061
      WRITE (I02,80001) IVTNUM                                          03340061
      GO TO  431                                                        03350061
20420 IVFAIL = IVFAIL + 1                                               03360061
      IVCORR = 0                                                        03370061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          03380061
C     TEST 43 THROUGH TEST 48 CONTAIN ARITHMETIC ASSIGNMENT             03390061
C     STATEMENTS OF THE FORM                                            03400061
C                                                                       03410061
C                   REAL VARIABLE = INTEGER VARIABLE                    03420061
C                                                                       03430061
  431 CONTINUE                                                          03440061
      IVTNUM =  43                                                      03450061
C                                                                       03460061
C      ****  TEST  43  ****                                             03470061
C                                                                       03480061
      IF (ICZERO) 30430,  430, 30430                                    03490061
  430 CONTINUE                                                          03500061
      IVON01 = 2                                                        03510061
      RVCOMP = IVON01                                                   03520061
      GO TO 40430                                                       03530061
30430 IVDELE = IVDELE + 1                                               03540061
      WRITE (I02,80003) IVTNUM                                          03550061
      IF (ICZERO) 40430,  441, 40430                                    03560061
40430 IF (RVCOMP - 1.9995) 20430,10430,40431                            03570061
40431 IF (RVCOMP - 2.0005) 10430,10430,20430                            03580061
10430 IVPASS = IVPASS + 1                                               03590061
      WRITE (I02,80001) IVTNUM                                          03600061
      GO TO  441                                                        03610061
20430 IVFAIL = IVFAIL + 1                                               03620061
      RVCORR = 2.0000                                                   03630061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03640061
  441 CONTINUE                                                          03650061
      IVTNUM =  44                                                      03660061
C                                                                       03670061
C      ****  TEST  44  ****                                             03680061
C                                                                       03690061
      IF (ICZERO) 30440,  440, 30440                                    03700061
  440 CONTINUE                                                          03710061
      IVON01 = 25                                                       03720061
      RVCOMP = IVON01                                                   03730061
      GO TO 40440                                                       03740061
30440 IVDELE = IVDELE + 1                                               03750061
      WRITE (I02,80003) IVTNUM                                          03760061
      IF (ICZERO) 40440,  451, 40440                                    03770061
40440 IF (RVCOMP - 24.995) 20440,10440,40441                            03780061
40441 IF (RVCOMP - 25.005) 10440,10440,20440                            03790061
10440 IVPASS = IVPASS + 1                                               03800061
      WRITE (I02,80001) IVTNUM                                          03810061
      GO TO  451                                                        03820061
20440 IVFAIL = IVFAIL + 1                                               03830061
      RVCORR = 25.000                                                   03840061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          03850061
  451 CONTINUE                                                          03860061
      IVTNUM =  45                                                      03870061
C                                                                       03880061
C      ****  TEST  45  ****                                             03890061
C                                                                       03900061
      IF (ICZERO) 30450,  450, 30450                                    03910061
  450 CONTINUE                                                          03920061
      IVON01 = 357                                                      03930061
      RVCOMP = IVON01                                                   03940061
      GO TO 40450                                                       03950061
30450 IVDELE = IVDELE + 1                                               03960061
      WRITE (I02,80003) IVTNUM                                          03970061
      IF (ICZERO) 40450,  461, 40450                                    03980061
40450 IF (RVCOMP - 356.95) 20450,10450,40451                            03990061
40451 IF (RVCOMP - 357.05) 10450,10450,20450                            04000061
10450 IVPASS = IVPASS + 1                                               04010061
      WRITE (I02,80001) IVTNUM                                          04020061
      GO TO  461                                                        04030061
20450 IVFAIL = IVFAIL + 1                                               04040061
      RVCORR = 357.00                                                   04050061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04060061
  461 CONTINUE                                                          04070061
      IVTNUM =  46                                                      04080061
C                                                                       04090061
C      ****  TEST  46  ****                                             04100061
C                                                                       04110061
      IF (ICZERO) 30460,  460, 30460                                    04120061
  460 CONTINUE                                                          04130061
      IVON01 = 4968                                                     04140061
      RVCOMP = IVON01                                                   04150061
      GO TO 40460                                                       04160061
30460 IVDELE = IVDELE + 1                                               04170061
      WRITE (I02,80003) IVTNUM                                          04180061
      IF (ICZERO) 40460,  471, 40460                                    04190061
40460 IF (RVCOMP - 4967.5) 20460,10460,40461                            04200061
40461 IF (RVCOMP - 4968.5) 10460,10460,20460                            04210061
10460 IVPASS = IVPASS + 1                                               04220061
      WRITE (I02,80001) IVTNUM                                          04230061
      GO TO  471                                                        04240061
20460 IVFAIL = IVFAIL + 1                                               04250061
      RVCORR = 4968.0                                                   04260061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04270061
  471 CONTINUE                                                          04280061
      IVTNUM =  47                                                      04290061
C                                                                       04300061
C      ****  TEST  47  ****                                             04310061
C                                                                       04320061
      IF (ICZERO) 30470,  470, 30470                                    04330061
  470 CONTINUE                                                          04340061
      IVON01 = 32767                                                    04350061
      RVCOMP = IVON01                                                   04360061
      GO TO 40470                                                       04370061
30470 IVDELE = IVDELE + 1                                               04380061
      WRITE (I02,80003) IVTNUM                                          04390061
      IF (ICZERO) 40470,  481, 40470                                    04400061
40470 IF (RVCOMP - 32762.) 20470,10470,40471                            04410061
40471 IF (RVCOMP - 32772.) 10470,10470,20470                            04420061
10470 IVPASS = IVPASS + 1                                               04430061
      WRITE (I02,80001) IVTNUM                                          04440061
      GO TO  481                                                        04450061
20470 IVFAIL = IVFAIL + 1                                               04460061
      RVCORR = 32767.                                                   04470061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04480061
  481 CONTINUE                                                          04490061
      IVTNUM =  48                                                      04500061
C                                                                       04510061
C      ****  TEST  48  ****                                             04520061
C                                                                       04530061
      IF (ICZERO) 30480,  480, 30480                                    04540061
  480 CONTINUE                                                          04550061
      IVON01 = -2                                                       04560061
      RVCOMP = IVON01                                                   04570061
      GO TO 40480                                                       04580061
30480 IVDELE = IVDELE + 1                                               04590061
      WRITE (I02,80003) IVTNUM                                          04600061
      IF (ICZERO) 40480,  491, 40480                                    04610061
40480 IF (RVCOMP + 2.0005) 20480,10480,40481                            04620061
40481 IF (RVCOMP + 1.9995) 10480,10480,20450                            04630061
10480 IVPASS = IVPASS + 1                                               04640061
      WRITE (I02,80001) IVTNUM                                          04650061
      GO TO  491                                                        04660061
20480 IVFAIL = IVFAIL + 1                                               04670061
      RVCORR = -2.0000                                                  04680061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          04690061
C                                                                       04700061
C     TEST 49 THROUGH TEST 51 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS  04710061
C     OF THE FORM                                                       04720061
C                   INTEGER VARIABLE = REAL CONSTANT                    04730061
C     WHERE CONSTANT IS BASIC REAL CONSTANT                             04740061
C                                                                       04750061
  491 CONTINUE                                                          04760061
      IVTNUM =  49                                                      04770061
C                                                                       04780061
C      ****  TEST  49  ****                                             04790061
C                                                                       04800061
      IF (ICZERO) 30490,  490, 30490                                    04810061
  490 CONTINUE                                                          04820061
      IVCOMP = 44.5                                                     04830061
      GO TO 40490                                                       04840061
30490 IVDELE = IVDELE + 1                                               04850061
      WRITE (I02,80003) IVTNUM                                          04860061
      IF (ICZERO) 40490,  501, 40490                                    04870061
40490 IF (IVCOMP - 44) 20490,10490,20490                                04880061
10490 IVPASS = IVPASS + 1                                               04890061
      WRITE (I02,80001) IVTNUM                                          04900061
      GO TO  501                                                        04910061
20490 IVFAIL = IVFAIL + 1                                               04920061
      IVCORR = 44                                                       04930061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          04940061
  501 CONTINUE                                                          04950061
      IVTNUM =  50                                                      04960061
C                                                                       04970061
C      ****  TEST  50  ****                                             04980061
C                                                                       04990061
      IF (ICZERO) 30500,  500, 30500                                    05000061
  500 CONTINUE                                                          05010061
      IVCOMP = 6500.1                                                   05020061
      GO TO 40500                                                       05030061
30500 IVDELE = IVDELE + 1                                               05040061
      WRITE (I02,80003) IVTNUM                                          05050061
      IF (ICZERO) 40500,  511, 40500                                    05060061
40500 IF (IVCOMP - 6500)  20500,10500,20500                             05070061
10500 IVPASS = IVPASS + 1                                               05080061
      WRITE (I02,80001) IVTNUM                                          05090061
      GO TO  511                                                        05100061
20500 IVFAIL = IVFAIL + 1                                               05110061
      IVCORR = 6500                                                     05120061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05130061
  511 CONTINUE                                                          05140061
      IVTNUM =  51                                                      05150061
C                                                                       05160061
C      ****  TEST  51  ****                                             05170061
C                                                                       05180061
      IF (ICZERO) 30510,  510, 30510                                    05190061
  510 CONTINUE                                                          05200061
      IVCOMP = -.33333                                                  05210061
      GO TO 40510                                                       05220061
30510 IVDELE = IVDELE + 1                                               05230061
      WRITE (I02,80003) IVTNUM                                          05240061
      IF (ICZERO) 40510,  521, 40510                                    05250061
40510 IF (IVCOMP) 20510,10510,20510                                     05260061
10510 IVPASS = IVPASS + 1                                               05270061
      WRITE (I02,80001) IVTNUM                                          05280061
      GO TO  521                                                        05290061
20510 IVFAIL = IVFAIL + 1                                               05300061
      IVCORR = 0                                                        05310061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05320061
C                                                                       05330061
C     TEST 52 THROUGH TEST 55 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS  05340061
C     OF THE FORM                                                       05350061
C                   INTEGER VARIABLE = REAL CONSTANT                    05360061
C                                                                       05370061
C     WHERE CONSTANT IS BASIC REAL CONSTANT FOLLOWED BY DECIMAL EXPONENT05380061
C                                                                       05390061
  521 CONTINUE                                                          05400061
      IVTNUM =  52                                                      05410061
C                                                                       05420061
C      ****  TEST  52  ****                                             05430061
C                                                                       05440061
      IF (ICZERO) 30520,  520, 30520                                    05450061
  520 CONTINUE                                                          05460061
      IVCOMP = .21E+1                                                   05470061
      GO TO 40520                                                       05480061
30520 IVDELE = IVDELE + 1                                               05490061
      WRITE (I02,80003) IVTNUM                                          05500061
      IF (ICZERO) 40520,  531, 40520                                    05510061
40520 IF (IVCOMP - 2) 20520,10520,20520                                 05520061
10520 IVPASS = IVPASS + 1                                               05530061
      WRITE (I02,80001) IVTNUM                                          05540061
      GO TO  531                                                        05550061
20520 IVFAIL = IVFAIL + 1                                               05560061
      IVCORR = 2                                                        05570061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05580061
  531 CONTINUE                                                          05590061
      IVTNUM =  53                                                      05600061
C                                                                       05610061
C      ****  TEST  53  ****                                             05620061
C                                                                       05630061
      IF (ICZERO) 30530,  530, 30530                                    05640061
  530 CONTINUE                                                          05650061
      IVCOMP = 445.0E-01                                                05660061
      GO TO 40530                                                       05670061
30530 IVDELE = IVDELE + 1                                               05680061
      WRITE (I02,80003) IVTNUM                                          05690061
      IF (ICZERO) 40530,  541, 40530                                    05700061
40530 IF (IVCOMP - 44) 20530,10530,20530                                05710061
10530 IVPASS = IVPASS + 1                                               05720061
      WRITE (I02,80001) IVTNUM                                          05730061
      GO TO  541                                                        05740061
20530 IVFAIL = IVFAIL + 1                                               05750061
      IVCORR = 44                                                       05760061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05770061
  541 CONTINUE                                                          05780061
      IVTNUM =  54                                                      05790061
C                                                                       05800061
C      ****  TEST  54  ****                                             05810061
C                                                                       05820061
      IF (ICZERO) 30540,  540, 30540                                    05830061
  540 CONTINUE                                                          05840061
      IVCOMP = 4.450E1                                                  05850061
      GO TO 40540                                                       05860061
30540 IVDELE = IVDELE + 1                                               05870061
      WRITE (I02,80003) IVTNUM                                          05880061
      IF (ICZERO) 40540,  551, 40540                                    05890061
40540 IF (IVCOMP - 44) 20540,10540,20540                                05900061
10540 IVPASS = IVPASS + 1                                               05910061
      WRITE (I02,80001) IVTNUM                                          05920061
      GO TO  551                                                        05930061
20540 IVFAIL = IVFAIL + 1                                               05940061
      IVCORR = 44                                                       05950061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05960061
  551 CONTINUE                                                          05970061
      IVTNUM =  55                                                      05980061
C                                                                       05990061
C      ****  TEST  55  ****                                             06000061
C                                                                       06010061
      IF (ICZERO) 30550,  550, 30550                                    06020061
  550 CONTINUE                                                          06030061
      IVCOMP = -4.45E0                                                  06040061
      GO TO 40550                                                       06050061
30550 IVDELE = IVDELE + 1                                               06060061
      WRITE (I02,80003) IVTNUM                                          06070061
      IF (ICZERO) 40550,  561, 40550                                    06080061
40550 IF (IVCOMP + 4) 20550,10550,20550                                 06090061
10550 IVPASS = IVPASS + 1                                               06100061
      WRITE (I02,80001) IVTNUM                                          06110061
      GO TO  561                                                        06120061
20550 IVFAIL = IVFAIL + 1                                               06130061
      IVCORR = -4                                                       06140061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06150061
C                                                                       06160061
C     TEST 56 AND 57 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS OF THE    06170061
C     FORM          INTEGER VARIABLE = REAL CONSTANT                    06180061
C     WHERE CONSTANT IS INTEGER CONSTANT FOLLOWED BY DECIMAL EXPONENT   06190061
C                                                                       06200061
  561 CONTINUE                                                          06210061
      IVTNUM =  56                                                      06220061
C                                                                       06230061
C      ****  TEST  56  ****                                             06240061
C                                                                       06250061
      IF (ICZERO) 30560,  560, 30560                                    06260061
  560 CONTINUE                                                          06270061
      IVCOMP = 445E-02                                                  06280061
      GO TO 40560                                                       06290061
30560 IVDELE = IVDELE + 1                                               06300061
      WRITE (I02,80003) IVTNUM                                          06310061
      IF (ICZERO) 40560,  571, 40560                                    06320061
40560 IF (IVCOMP - 4) 20560,10560,20560                                 06330061
10560 IVPASS = IVPASS + 1                                               06340061
      WRITE (I02,80001) IVTNUM                                          06350061
      GO TO  571                                                        06360061
20560 IVFAIL = IVFAIL + 1                                               06370061
      IVCORR = 4                                                        06380061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06390061
  571 CONTINUE                                                          06400061
      IVTNUM =  57                                                      06410061
C                                                                       06420061
C      ****  TEST  57  ****                                             06430061
C                                                                       06440061
      IF (ICZERO) 30570,  570, 30570                                    06450061
  570 CONTINUE                                                          06460061
      IVCOMP = -701E-1                                                  06470061
      GO TO 40570                                                       06480061
30570 IVDELE = IVDELE + 1                                               06490061
      WRITE (I02,80003) IVTNUM                                          06500061
      IF (ICZERO) 40570,  581, 40570                                    06510061
40570 IF (IVCOMP + 70) 20570,10570,20570                                06520061
10570 IVPASS = IVPASS + 1                                               06530061
      WRITE (I02,80001) IVTNUM                                          06540061
      GO TO  581                                                        06550061
20570 IVFAIL = IVFAIL + 1                                               06560061
      IVCORR = -70                                                      06570061
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06580061
C                                                                       06590061
C     TEST 58 THROUGH TEST 62 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS  06600061
C     OF THE FORM   REAL VARIABLE = INTEGER CONSTANT                    06610061
C                                                                       06620061
  581 CONTINUE                                                          06630061
      IVTNUM =  58                                                      06640061
C                                                                       06650061
C      ****  TEST  58  ****                                             06660061
C                                                                       06670061
      IF (ICZERO) 30580,  580, 30580                                    06680061
  580 CONTINUE                                                          06690061
      RVCOMP = 23                                                       06700061
      GO TO 40580                                                       06710061
30580 IVDELE = IVDELE + 1                                               06720061
      WRITE (I02,80003) IVTNUM                                          06730061
      IF (ICZERO) 40580,  591, 40580                                    06740061
40580 IF (RVCOMP - 22.995) 20580,10580,40581                            06750061
40581 IF (RVCOMP - 23.005) 10580,10580,20580                            06760061
10580 IVPASS = IVPASS + 1                                               06770061
      WRITE (I02,80001) IVTNUM                                          06780061
      GO TO  591                                                        06790061
20580 IVFAIL = IVFAIL + 1                                               06800061
      RVCORR = 23.000                                                   06810061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          06820061
  591 CONTINUE                                                          06830061
      IVTNUM =  59                                                      06840061
C                                                                       06850061
C      ****  TEST  59  ****                                             06860061
C                                                                       06870061
      IF (ICZERO) 30590,  590, 30590                                    06880061
  590 CONTINUE                                                          06890061
      RVCOMP = 32645                                                    06900061
      GO TO 40590                                                       06910061
30590 IVDELE = IVDELE + 1                                               06920061
      WRITE (I02,80003) IVTNUM                                          06930061
      IF (ICZERO) 40590,  601, 40590                                    06940061
40590 IF (RVCOMP - 32640.) 20590,10590,40591                            06950061
40591 IF (RVCOMP - 32650.) 10590,10590,20590                            06960061
10590 IVPASS = IVPASS + 1                                               06970061
      WRITE (I02,80001) IVTNUM                                          06980061
      GO TO  601                                                        06990061
20590 IVFAIL = IVFAIL + 1                                               07000061
      RVCORR = 32645.                                                   07010061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07020061
  601 CONTINUE                                                          07030061
      IVTNUM =  60                                                      07040061
C                                                                       07050061
C      ****  TEST  60  ****                                             07060061
C                                                                       07070061
      IF (ICZERO) 30600,  600, 30600                                    07080061
  600 CONTINUE                                                          07090061
      RVCOMP = 0                                                        07100061
      GO TO 40600                                                       07110061
30600 IVDELE = IVDELE + 1                                               07120061
      WRITE (I02,80003) IVTNUM                                          07130061
      IF (ICZERO) 40600,  611, 40600                                    07140061
40600 IF (RVCOMP) 20600,10600,20600                                     07150061
10600 IVPASS = IVPASS + 1                                               07160061
      WRITE (I02,80001) IVTNUM                                          07170061
      GO TO  611                                                        07180061
20600 IVFAIL = IVFAIL + 1                                               07190061
      RVCORR = 00000.                                                   07200061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07210061
  611 CONTINUE                                                          07220061
      IVTNUM =  61                                                      07230061
C                                                                       07240061
C      ****  TEST  61  ****                                             07250061
C                                                                       07260061
      IF (ICZERO) 30610,  610, 30610                                    07270061
  610 CONTINUE                                                          07280061
      RVCOMP = -15                                                      07290061
      GO TO 40610                                                       07300061
30610 IVDELE = IVDELE + 1                                               07310061
      WRITE (I02,80003) IVTNUM                                          07320061
      IF (ICZERO) 40610,  621, 40610                                    07330061
40610 IF (RVCOMP -14.995) 40611,10610,20610                             07340061
40611 IF (RVCOMP + 15.005) 20610,10610,10610                            07350061
10610 IVPASS = IVPASS + 1                                               07360061
      WRITE (I02,80001) IVTNUM                                          07370061
      GO TO  621                                                        07380061
20610 IVFAIL = IVFAIL + 1                                               07390061
      RVCORR = -15.000                                                  07400061
      WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR                          07410061
  621 CONTINUE                                                          07420061
C                                                                       07430061
C      ****    END OF TESTS    ****                                     07440061
C                                                                       07450061
C                                                                       07460061
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             07470061
99999 CONTINUE                                                          07480061
      WRITE (I02,90002)                                                 07490061
      WRITE (I02,90006)                                                 07500061
      WRITE (I02,90002)                                                 07510061
      WRITE (I02,90002)                                                 07520061
      WRITE (I02,90007)                                                 07530061
      WRITE (I02,90002)                                                 07540061
      WRITE (I02,90008)  IVFAIL                                         07550061
      WRITE (I02,90009) IVPASS                                          07560061
      WRITE (I02,90010) IVDELE                                          07570061
C                                                                       07580061
C                                                                       07590061
C     TERMINATE ROUTINE EXECUTION                                       07600061
      STOP                                                              07610061
C                                                                       07620061
C     FORMAT STATEMENTS FOR PAGE HEADERS                                07630061
90000 FORMAT ("1")                                                      07640061
90002 FORMAT (" ")                                                      07650061
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            07660061
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   07670061
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        07680061
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07690061
90006 FORMAT (" ",5X,"----------------------------------------------" ) 07700061
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             07710061
C                                                                       07720061
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               07730061
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        07740061
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              07750061
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             07760061
C                                                                       07770061
C     FORMAT STATEMENTS FOR TEST RESULTS                                07780061
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      07790061
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      07800061
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   07810061
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         07820061
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    07830061
C                                                                       07840061
90007 FORMAT (" ",20X,"END OF PROGRAM FM061" )                          07850061
      END                                                               07860061