FM036.f Source File


Contents

Source Code


Source Code

      PROGRAM FM036

C     COMMENT SECTION                                                   00010036
C                                                                       00020036
C     FM036                                                             00030036
C                                                                       00040036
C         THIS ROUTINE TESTS ARITHMETIC ASIGNMENT STATEMENTS OF THE     00050036
C     FORM                                                              00060036
C              INTEGER VARIABLE = ARITHMETIC EXPRESSION                 00070036
C     WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC     00080036
C     OPERATOR / AND INTEGER CONSTANTS.  BOTH POSITIVE AND NEGATIVE     00090036
C     CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION.                  00100036
C                                                                       00110036
C         THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT     00120036
C     AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED  00130036
C     IN THE RESULTANT INTEGER VARIABLE.  THE STANDARD STATES 'THE VALUE00140036
C     OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE         00150036
C     MAGNITUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE 00160036
C     REPRESENTED BY THAT FACTOR OR TERM.'                              00170036
C                                                                       00180036
C         THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS      00190036
C             (1)  INTEGER CONSTANT/INTEGER CONSTANT                    00200036
C                      NO TRUNCATION REQUIRED,                          00210036
C             (2)  INTEGER CONSTANT/INTEGER CONSTANT                    00220036
C                      TRUNCATION REQUIRED.                             00230036
C                                                                       00240036
C      REFERENCES                                                       00250036
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00260036
C              X3.9-1978                                                00270036
C                                                                       00280036
C        SECTION 4.3, INTEGER TYPE                                      00290036
C        SECTION 4.3.1, INTEGER CONSTANT                                00300036
C        SECTION 6.1, ARITHMETIC EXPRESSIONS                            00310036
C        SECTION 6.6, EVALUATION OF EXPRESSIONS                         00320036
C        SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT                  00330036
C                                                                       00340036
C      **********************************************************       00350036
C                                                                       00360036
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00370036
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00380036
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00390036
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00400036
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00410036
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00420036
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00430036
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00440036
C     OF EXECUTING THESE TESTS.                                         00450036
C                                                                       00460036
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00470036
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00480036
C                                                                       00490036
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00500036
C                                                                       00510036
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00520036
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00530036
C                          BUILDING 225  RM A266                        00540036
C                         GAITHERSBURG, MD  20899                       00550036
C      **********************************************************       00560036
C                                                                       00570036
C                                                                       00580036
C                                                                       00590036
C     INITIALIZATION SECTION                                            00600036
C                                                                       00610036
C     INITIALIZE CONSTANTS                                              00620036
C      **************                                                   00630036
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00640036
      I01 = 5                                                           00650036
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00660036
      I02 = 6                                                           00670036
C     SYSTEM ENVIRONMENT SECTION                                        00680036
C                                                                       00690036
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00700036
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00710036
C     (UNIT NUMBER FOR CARD READER).                                    00720036
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00730036
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00740036
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00750036
C                                                                       00760036
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00770036
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00780036
C     (UNIT NUMBER FOR PRINTER).                                        00790036
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00800036
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00810036
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00820036
C                                                                       00830036
      IVPASS=0                                                          00840036
      IVFAIL=0                                                          00850036
      IVDELE=0                                                          00860036
      ICZERO=0                                                          00870036
C                                                                       00880036
C     WRITE PAGE HEADERS                                                00890036
      WRITE (I02,90000)                                                 00900036
      WRITE (I02,90001)                                                 00910036
      WRITE (I02,90002)                                                 00920036
      WRITE (I02, 90002)                                                00930036
      WRITE (I02,90003)                                                 00940036
      WRITE (I02,90002)                                                 00950036
      WRITE (I02,90004)                                                 00960036
      WRITE (I02,90002)                                                 00970036
      WRITE (I02,90011)                                                 00980036
      WRITE (I02,90002)                                                 00990036
      WRITE (I02,90002)                                                 01000036
      WRITE (I02,90005)                                                 01010036
      WRITE (I02,90006)                                                 01020036
      WRITE (I02,90002)                                                 01030036
C                                                                       01040036
C     TEST SECTION                                                      01050036
C         ARITHMETIC ASSIGNMENT STATEMENT                               01060036
C                                                                       01070036
C     TEST 462 THROUGH TEST 490 CONTAIN TWO INTEGER CONSTANTS AND       01080036
C     OPERATOR / IN AN ARITHMETIC EXPRESSION.  THE FORM TESTED IS       01090036
C            INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT       01100036
C                                                                       01110036
C     TEST 462 THROUGH TEST 469 - POSITIVE CONSTANTS                    01120036
C              NO TRUNCATION REQUIRED                                   01130036
C                                                                       01140036
 4621 CONTINUE                                                          01150036
      IVTNUM = 462                                                      01160036
C                                                                       01170036
C      ****  TEST 462  ****                                             01180036
C                                                                       01190036
      IF (ICZERO) 34620, 4620, 34620                                    01200036
 4620 CONTINUE                                                          01210036
      IVCOMP = 4/2                                                      01220036
      GO TO 44620                                                       01230036
34620 IVDELE = IVDELE + 1                                               01240036
      WRITE (I02,80003) IVTNUM                                          01250036
      IF (ICZERO) 44620, 4631, 44620                                    01260036
44620 IF (IVCOMP - 2) 24620,14620,24620                                 01270036
14620 IVPASS = IVPASS + 1                                               01280036
      WRITE (I02,80001) IVTNUM                                          01290036
      GO TO 4631                                                        01300036
24620 IVFAIL = IVFAIL + 1                                               01310036
      IVCORR = 2                                                        01320036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01330036
 4631 CONTINUE                                                          01340036
      IVTNUM = 463                                                      01350036
C                                                                       01360036
C      ****  TEST 463  ****                                             01370036
C                                                                       01380036
      IF (ICZERO) 34630, 4630, 34630                                    01390036
 4630 CONTINUE                                                          01400036
      IVCOMP = 75 / 25                                                  01410036
      GO TO 44630                                                       01420036
34630 IVDELE = IVDELE + 1                                               01430036
      WRITE (I02,80003) IVTNUM                                          01440036
      IF (ICZERO) 44630, 4641, 44630                                    01450036
44630 IF (IVCOMP - 3) 24630,14630,24630                                 01460036
14630 IVPASS = IVPASS + 1                                               01470036
      WRITE (I02,80001) IVTNUM                                          01480036
      GO TO 4641                                                        01490036
24630 IVFAIL = IVFAIL + 1                                               01500036
      IVCORR = 3                                                        01510036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01520036
 4641 CONTINUE                                                          01530036
      IVTNUM = 464                                                      01540036
C                                                                       01550036
C      ****  TEST 464  ****                                             01560036
C                                                                       01570036
      IF (ICZERO) 34640, 4640, 34640                                    01580036
 4640 CONTINUE                                                          01590036
      IVCOMP = 3575/143                                                 01600036
      GO TO 44640                                                       01610036
34640 IVDELE = IVDELE + 1                                               01620036
      WRITE (I02,80003) IVTNUM                                          01630036
      IF (ICZERO) 44640, 4651, 44640                                    01640036
44640 IF (IVCOMP - 25) 24640,14640,24640                                01650036
14640 IVPASS = IVPASS + 1                                               01660036
      WRITE (I02,80001) IVTNUM                                          01670036
      GO TO 4651                                                        01680036
24640 IVFAIL = IVFAIL + 1                                               01690036
      IVCORR = 25                                                       01700036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01710036
 4651 CONTINUE                                                          01720036
      IVTNUM = 465                                                      01730036
C                                                                       01740036
C      ****  TEST 465  ****                                             01750036
C                                                                       01760036
      IF (ICZERO) 34650, 4650, 34650                                    01770036
 4650 CONTINUE                                                          01780036
      IVCOMP = 3575/25                                                  01790036
      GO TO 44650                                                       01800036
34650 IVDELE = IVDELE + 1                                               01810036
      WRITE (I02,80003) IVTNUM                                          01820036
      IF (ICZERO) 44650, 4661, 44650                                    01830036
44650 IF (IVCOMP - 143) 24650,14650,24650                               01840036
14650 IVPASS = IVPASS + 1                                               01850036
      WRITE (I02,80001) IVTNUM                                          01860036
      GO TO 4661                                                        01870036
24650 IVFAIL = IVFAIL + 1                                               01880036
      IVCORR = 143                                                      01890036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01900036
 4661 CONTINUE                                                          01910036
      IVTNUM = 466                                                      01920036
C                                                                       01930036
C      ****  TEST 466  ****                                             01940036
C                                                                       01950036
      IF (ICZERO) 34660, 4660, 34660                                    01960036
 4660 CONTINUE                                                          01970036
      IVCOMP = 6170/1234                                                01980036
      GO TO 44660                                                       01990036
34660 IVDELE = IVDELE + 1                                               02000036
      WRITE (I02,80003) IVTNUM                                          02010036
      IF (ICZERO) 44660, 4671, 44660                                    02020036
44660 IF (IVCOMP - 5) 24660,14660,24660                                 02030036
14660 IVPASS = IVPASS + 1                                               02040036
      WRITE (I02,80001) IVTNUM                                          02050036
      GO TO 4671                                                        02060036
24660 IVFAIL = IVFAIL + 1                                               02070036
      IVCORR = 5                                                        02080036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02090036
 4671 CONTINUE                                                          02100036
      IVTNUM = 467                                                      02110036
C                                                                       02120036
C      ****  TEST 467  ****                                             02130036
C                                                                       02140036
      IF (ICZERO) 34670, 4670, 34670                                    02150036
 4670 CONTINUE                                                          02160036
      IVCOMP = 28600/8                                                  02170036
      GO TO 44670                                                       02180036
34670 IVDELE = IVDELE + 1                                               02190036
      WRITE (I02,80003) IVTNUM                                          02200036
      IF (ICZERO) 44670, 4681, 44670                                    02210036
44670 IF (IVCOMP - 3575) 24670,14670,24670                              02220036
14670 IVPASS = IVPASS + 1                                               02230036
      WRITE (I02,80001) IVTNUM                                          02240036
      GO TO 4681                                                        02250036
24670 IVFAIL = IVFAIL + 1                                               02260036
      IVCORR = 3575                                                     02270036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02280036
 4681 CONTINUE                                                          02290036
      IVTNUM = 468                                                      02300036
C                                                                       02310036
C      ****  TEST 468  ****                                             02320036
C                                                                       02330036
      IF (ICZERO) 34680, 4680, 34680                                    02340036
 4680 CONTINUE                                                          02350036
      IVCOMP = 32766/2                                                  02360036
      GO TO 44680                                                       02370036
34680 IVDELE = IVDELE + 1                                               02380036
      WRITE (I02,80003) IVTNUM                                          02390036
      IF (ICZERO) 44680, 4691, 44680                                    02400036
44680 IF (IVCOMP - 16383) 24680,14680,24680                             02410036
14680 IVPASS = IVPASS + 1                                               02420036
      WRITE (I02,80001) IVTNUM                                          02430036
      GO TO 4691                                                        02440036
24680 IVFAIL = IVFAIL + 1                                               02450036
      IVCORR = 16383                                                    02460036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02470036
 4691 CONTINUE                                                          02480036
      IVTNUM = 469                                                      02490036
C                                                                       02500036
C      ****  TEST 469  ****                                             02510036
C                                                                       02520036
      IF (ICZERO) 34690, 4690, 34690                                    02530036
 4690 CONTINUE                                                          02540036
      IVCOMP = 32767/1                                                  02550036
      GO TO 44690                                                       02560036
34690 IVDELE = IVDELE + 1                                               02570036
      WRITE (I02,80003) IVTNUM                                          02580036
      IF (ICZERO) 44690, 4701, 44690                                    02590036
44690 IF (IVCOMP - 32767) 24690,14690,24690                             02600036
14690 IVPASS = IVPASS + 1                                               02610036
      WRITE (I02,80001) IVTNUM                                          02620036
      GO TO 4701                                                        02630036
24690 IVFAIL = IVFAIL + 1                                               02640036
      IVCORR = 32767                                                    02650036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02660036
C                                                                       02670036
C     TEST 470 THROUGH TEST 478 - POSITIVE CONSTANTS                    02680036
C               TRUNCATION REQUIRED                                     02690036
C                                                                       02700036
 4701 CONTINUE                                                          02710036
      IVTNUM = 470                                                      02720036
C                                                                       02730036
C      ****  TEST 470  ****                                             02740036
C                                                                       02750036
      IF (ICZERO) 34700, 4700, 34700                                    02760036
 4700 CONTINUE                                                          02770036
      IVCOMP = 5/2                                                      02780036
      GO TO 44700                                                       02790036
34700 IVDELE = IVDELE + 1                                               02800036
      WRITE (I02,80003) IVTNUM                                          02810036
      IF (ICZERO) 44700, 4711, 44700                                    02820036
44700 IF (IVCOMP - 2) 24700,14700,24700                                 02830036
14700 IVPASS = IVPASS + 1                                               02840036
      WRITE (I02,80001) IVTNUM                                          02850036
      GO TO 4711                                                        02860036
24700 IVFAIL = IVFAIL + 1                                               02870036
      IVCORR = 2                                                        02880036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02890036
 4711 CONTINUE                                                          02900036
      IVTNUM = 471                                                      02910036
C                                                                       02920036
C      ****  TEST 471  ****                                             02930036
C                                                                       02940036
      IF (ICZERO) 34710, 4710, 34710                                    02950036
 4710 CONTINUE                                                          02960036
      IVCOMP = 2/3                                                      02970036
      GO TO 44710                                                       02980036
34710 IVDELE = IVDELE + 1                                               02990036
      WRITE (I02,80003) IVTNUM                                          03000036
      IF (ICZERO) 44710, 4721, 44710                                    03010036
44710 IF (IVCOMP - 0) 24710,14710,24710                                 03020036
14710 IVPASS = IVPASS + 1                                               03030036
      WRITE (I02,80001) IVTNUM                                          03040036
      GO TO 4721                                                        03050036
24710 IVFAIL = IVFAIL + 1                                               03060036
      IVCORR = 0                                                        03070036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03080036
 4721 CONTINUE                                                          03090036
      IVTNUM = 472                                                      03100036
C                                                                       03110036
C      ****  TEST 472  ****                                             03120036
C                                                                       03130036
      IF (ICZERO) 34720, 4720, 34720                                    03140036
 4720 CONTINUE                                                          03150036
      IVCOMP = 80/15                                                    03160036
      GO TO 44720                                                       03170036
34720 IVDELE = IVDELE + 1                                               03180036
      WRITE (I02,80003) IVTNUM                                          03190036
      IF (ICZERO) 44720, 4731, 44720                                    03200036
44720 IF (IVCOMP - 5) 24720,14720,24720                                 03210036
14720 IVPASS = IVPASS + 1                                               03220036
      WRITE (I02,80001) IVTNUM                                          03230036
      GO TO 4731                                                        03240036
24720 IVFAIL = IVFAIL + 1                                               03250036
      IVCORR = 5                                                        03260036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03270036
 4731 CONTINUE                                                          03280036
      IVTNUM = 473                                                      03290036
C                                                                       03300036
C      ****  TEST 473  ****                                             03310036
C                                                                       03320036
      IF (ICZERO) 34730, 4730, 34730                                    03330036
 4730 CONTINUE                                                          03340036
      IVCOMP = 959/120                                                  03350036
      GO TO 44730                                                       03360036
34730 IVDELE = IVDELE + 1                                               03370036
      WRITE (I02,80003) IVTNUM                                          03380036
      IF (ICZERO) 44730, 4741, 44730                                    03390036
44730 IF (IVCOMP - 7) 24730,14730,24730                                 03400036
14730 IVPASS = IVPASS + 1                                               03410036
      WRITE (I02,80001) IVTNUM                                          03420036
      GO TO 4741                                                        03430036
24730 IVFAIL = IVFAIL + 1                                               03440036
      IVCORR = 7                                                        03450036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03460036
 4741 CONTINUE                                                          03470036
      IVTNUM = 474                                                      03480036
C                                                                       03490036
C      ****  TEST 474  ****                                             03500036
C                                                                       03510036
      IF (ICZERO) 34740, 4740, 34740                                    03520036
 4740 CONTINUE                                                          03530036
      IVCOMP = 959 / 12                                                 03540036
      GO TO 44740                                                       03550036
34740 IVDELE = IVDELE + 1                                               03560036
      WRITE (I02,80003) IVTNUM                                          03570036
      IF (ICZERO) 44740, 4751, 44740                                    03580036
44740 IF (IVCOMP - 79) 24740,14740,24740                                03590036
14740 IVPASS = IVPASS + 1                                               03600036
      WRITE (I02,80001) IVTNUM                                          03610036
      GO TO 4751                                                        03620036
24740 IVFAIL = IVFAIL + 1                                               03630036
      IVCORR = 79                                                       03640036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03650036
 4751 CONTINUE                                                          03660036
      IVTNUM = 475                                                      03670036
C                                                                       03680036
C      ****  TEST 475  ****                                             03690036
C                                                                       03700036
      IF (ICZERO) 34750, 4750, 34750                                    03710036
 4750 CONTINUE                                                          03720036
      IVCOMP = 959/6                                                    03730036
      GO TO 44750                                                       03740036
34750 IVDELE = IVDELE + 1                                               03750036
      WRITE (I02,80003) IVTNUM                                          03760036
      IF (ICZERO) 44750, 4761, 44750                                    03770036
44750 IF (IVCOMP - 159) 24750,14750,24750                               03780036
14750 IVPASS = IVPASS + 1                                               03790036
      WRITE (I02,80001) IVTNUM                                          03800036
      GO TO 4761                                                        03810036
24750 IVFAIL = IVFAIL + 1                                               03820036
      IVCORR = 159                                                      03830036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03840036
 4761 CONTINUE                                                          03850036
      IVTNUM = 476                                                      03860036
C                                                                       03870036
C      ****  TEST 476  ****                                             03880036
C                                                                       03890036
      IF (ICZERO) 34760, 4760, 34760                                    03900036
 4760 CONTINUE                                                          03910036
      IVCOMP = 28606/8                                                  03920036
      GO TO 44760                                                       03930036
34760 IVDELE = IVDELE + 1                                               03940036
      WRITE (I02,80003) IVTNUM                                          03950036
      IF (ICZERO) 44760, 4771, 44760                                    03960036
44760 IF (IVCOMP - 3575) 24760,14760,24760                              03970036
14760 IVPASS = IVPASS + 1                                               03980036
      WRITE (I02,80001) IVTNUM                                          03990036
      GO TO 4771                                                        04000036
24760 IVFAIL = IVFAIL + 1                                               04010036
      IVCORR = 3575                                                     04020036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04030036
 4771 CONTINUE                                                          04040036
      IVTNUM = 477                                                      04050036
C                                                                       04060036
C      ****  TEST 477  ****                                             04070036
C                                                                       04080036
      IF (ICZERO) 34770, 4770, 34770                                    04090036
 4770 CONTINUE                                                          04100036
      IVCOMP = 25603/2                                                  04110036
      GO TO 44770                                                       04120036
34770 IVDELE = IVDELE + 1                                               04130036
      WRITE (I02,80003) IVTNUM                                          04140036
      IF (ICZERO) 44770, 4781, 44770                                    04150036
44770 IF (IVCOMP - 12801) 24770,14770,24770                             04160036
14770 IVPASS = IVPASS + 1                                               04170036
      WRITE (I02,80001) IVTNUM                                          04180036
      GO TO 4781                                                        04190036
24770 IVFAIL = IVFAIL + 1                                               04200036
      IVCORR = 12801                                                    04210036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04220036
 4781 CONTINUE                                                          04230036
      IVTNUM = 478                                                      04240036
C                                                                       04250036
C      ****  TEST 478  ****                                             04260036
C                                                                       04270036
      IF (ICZERO) 34780, 4780, 34780                                    04280036
 4780 CONTINUE                                                          04290036
      IVCOMP = 25603/10354                                              04300036
      GO TO 44780                                                       04310036
34780 IVDELE = IVDELE + 1                                               04320036
      WRITE (I02,80003) IVTNUM                                          04330036
      IF (ICZERO) 44780, 4791, 44780                                    04340036
44780 IF (IVCOMP - 2) 24780,14780,24780                                 04350036
14780 IVPASS = IVPASS + 1                                               04360036
      WRITE (I02,80001) IVTNUM                                          04370036
      GO TO 4791                                                        04380036
24780 IVFAIL = IVFAIL + 1                                               04390036
      IVCORR = 2                                                        04400036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04410036
C                                                                       04420036
C     TEST 479 THROUGH TEST 482 - NEGATIVE CONSTANTS INCLUDED           04430036
C                NO TRUNCATION REQUIRED                                 04440036
C                                                                       04450036
 4791 CONTINUE                                                          04460036
      IVTNUM = 479                                                      04470036
C                                                                       04480036
C      ****  TEST 479  ****                                             04490036
C                                                                       04500036
      IF (ICZERO) 34790, 4790, 34790                                    04510036
 4790 CONTINUE                                                          04520036
      IVCOMP = -4/2                                                     04530036
      GO TO 44790                                                       04540036
34790 IVDELE = IVDELE + 1                                               04550036
      WRITE (I02,80003) IVTNUM                                          04560036
      IF (ICZERO) 44790, 4801, 44790                                    04570036
44790 IF (IVCOMP + 2) 24790,14790,24790                                 04580036
14790 IVPASS = IVPASS + 1                                               04590036
      WRITE (I02,80001) IVTNUM                                          04600036
      GO TO 4801                                                        04610036
24790 IVFAIL = IVFAIL + 1                                               04620036
      IVCORR = -2                                                       04630036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04640036
 4801 CONTINUE                                                          04650036
      IVTNUM = 480                                                      04660036
C                                                                       04670036
C      ****  TEST 480  ****                                             04680036
C                                                                       04690036
      IF (ICZERO) 34800, 4800, 34800                                    04700036
 4800 CONTINUE                                                          04710036
      IVCOMP = 75 / (-25)                                               04720036
      GO TO 44800                                                       04730036
34800 IVDELE = IVDELE + 1                                               04740036
      WRITE (I02,80003) IVTNUM                                          04750036
      IF (ICZERO) 44800, 4811, 44800                                    04760036
44800 IF (IVCOMP + 3) 24800,14800,24800                                 04770036
14800 IVPASS = IVPASS + 1                                               04780036
      WRITE (I02,80001) IVTNUM                                          04790036
      GO TO 4811                                                        04800036
24800 IVFAIL = IVFAIL + 1                                               04810036
      IVCORR = -3                                                       04820036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04830036
 4811 CONTINUE                                                          04840036
      IVTNUM = 481                                                      04850036
C                                                                       04860036
C      ****  TEST 481  ****                                             04870036
C                                                                       04880036
      IF (ICZERO) 34810, 4810, 34810                                    04890036
 4810 CONTINUE                                                          04900036
      IVCOMP= (-6170) / (-1234)                                         04910036
      GO TO 44810                                                       04920036
34810 IVDELE = IVDELE + 1                                               04930036
      WRITE (I02,80003) IVTNUM                                          04940036
      IF (ICZERO) 44810, 4821, 44810                                    04950036
44810 IF (IVCOMP - 5) 24810,14810,24810                                 04960036
14810 IVPASS = IVPASS + 1                                               04970036
      WRITE (I02,80001) IVTNUM                                          04980036
      GO TO 4821                                                        04990036
24810 IVFAIL = IVFAIL + 1                                               05000036
      IVCORR = 5                                                        05010036
                                                                        05020036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05030036
 4821 CONTINUE                                                          05040036
      IVTNUM = 482                                                      05050036
C                                                                       05060036
C      ****  TEST 482  ****                                             05070036
C                                                                       05080036
      IF (ICZERO) 34820, 4820, 34820                                    05090036
 4820 CONTINUE                                                          05100036
      IVCOMP = -32766/(-2)                                              05110036
      GO TO 44820                                                       05120036
34820 IVDELE = IVDELE + 1                                               05130036
      WRITE (I02,80003) IVTNUM                                          05140036
      IF (ICZERO) 44820, 4831, 44820                                    05150036
44820 IF (IVCOMP - 16383) 24820,14820,24820                             05160036
14820 IVPASS = IVPASS + 1                                               05170036
      WRITE (I02,80001) IVTNUM                                          05180036
      GO TO 4831                                                        05190036
24820 IVFAIL = IVFAIL + 1                                               05200036
      IVCORR = 16383                                                    05210036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05220036
C                                                                       05230036
C     TEST 483 THROUGH TEST 490 - NEGATIVE CONSTANTS INCLUDED           05240036
C                TRUNCATION REQUIRED                                    05250036
C                                                                       05260036
 4831 CONTINUE                                                          05270036
      IVTNUM = 483                                                      05280036
C                                                                       05290036
C      ****  TEST 483  ****                                             05300036
C                                                                       05310036
      IF (ICZERO) 34830, 4830, 34830                                    05320036
 4830 CONTINUE                                                          05330036
      IVCOMP = -5/2                                                     05340036
      GO TO 44830                                                       05350036
34830 IVDELE = IVDELE + 1                                               05360036
      WRITE (I02,80003) IVTNUM                                          05370036
      IF (ICZERO) 44830, 4841, 44830                                    05380036
44830 IF (IVCOMP +2) 24830,14830,24830                                  05390036
14830 IVPASS = IVPASS + 1                                               05400036
      WRITE (I02,80001) IVTNUM                                          05410036
      GO TO 4841                                                        05420036
24830 IVFAIL = IVFAIL + 1                                               05430036
      IVCORR = -2                                                       05440036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05450036
 4841 CONTINUE                                                          05460036
      IVTNUM = 484                                                      05470036
C                                                                       05480036
C      ****  TEST 484  ****                                             05490036
C                                                                       05500036
      IF (ICZERO) 34840, 4840, 34840                                    05510036
 4840 CONTINUE                                                          05520036
      IVCOMP = -2/3                                                     05530036
      GO TO 44840                                                       05540036
34840 IVDELE = IVDELE + 1                                               05550036
      WRITE (I02,80003) IVTNUM                                          05560036
      IF (ICZERO) 44840, 4851, 44840                                    05570036
44840 IF (IVCOMP) 24840,14840,24840                                     05580036
14840 IVPASS = IVPASS + 1                                               05590036
      WRITE (I02,80001) IVTNUM                                          05600036
      GO TO 4851                                                        05610036
24840 IVFAIL = IVFAIL + 1                                               05620036
      IVCORR = 0                                                        05630036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05640036
 4851 CONTINUE                                                          05650036
      IVTNUM = 485                                                      05660036
C                                                                       05670036
C      ****  TEST 485  ****                                             05680036
C                                                                       05690036
      IF (ICZERO) 34850, 4850, 34850                                    05700036
 4850 CONTINUE                                                          05710036
      IVCOMP = 80/(-15)                                                 05720036
      GO TO 44850                                                       05730036
34850 IVDELE = IVDELE + 1                                               05740036
      WRITE (I02,80003) IVTNUM                                          05750036
      IF (ICZERO) 44850, 4861, 44850                                    05760036
44850 IF (IVCOMP +5) 24850,14850,24850                                  05770036
14850 IVPASS = IVPASS + 1                                               05780036
      WRITE (I02,80001) IVTNUM                                          05790036
      GO TO 4861                                                        05800036
24850 IVFAIL = IVFAIL + 1                                               05810036
      IVCORR = -5                                                       05820036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          05830036
 4861 CONTINUE                                                          05840036
      IVTNUM = 486                                                      05850036
C                                                                       05860036
C      ****  TEST 486  ****                                             05870036
C                                                                       05880036
      IF (ICZERO) 34860, 4860, 34860                                    05890036
 4860 CONTINUE                                                          05900036
      IVCOMP = -959/(-120)                                              05910036
      GO TO 44860                                                       05920036
34860 IVDELE = IVDELE + 1                                               05930036
      WRITE (I02,80003) IVTNUM                                          05940036
      IF (ICZERO) 44860, 4871, 44860                                    05950036
44860 IF (IVCOMP - 7) 24860,14860,24860                                 05960036
14860 IVPASS = IVPASS + 1                                               05970036
      WRITE (I02,80001) IVTNUM                                          05980036
      GO TO 4871                                                        05990036
24860 IVFAIL = IVFAIL + 1                                               06000036
      IVCORR = 7                                                        06010036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06020036
 4871 CONTINUE                                                          06030036
      IVTNUM = 487                                                      06040036
C                                                                       06050036
C      ****  TEST 487  ****                                             06060036
C                                                                       06070036
      IF (ICZERO) 34870, 4870, 34870                                    06080036
 4870 CONTINUE                                                          06090036
      IVCOMP = -959/6                                                   06100036
      GO TO 44870                                                       06110036
34870 IVDELE = IVDELE + 1                                               06120036
      WRITE (I02,80003) IVTNUM                                          06130036
      IF (ICZERO) 44870, 4881, 44870                                    06140036
44870 IF (IVCOMP + 159) 24870,14870,24870                               06150036
14870 IVPASS = IVPASS + 1                                               06160036
      WRITE (I02,80001) IVTNUM                                          06170036
      GO TO 4881                                                        06180036
24870 IVFAIL = IVFAIL + 1                                               06190036
      IVCORR = -159                                                     06200036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06210036
 4881 CONTINUE                                                          06220036
      IVTNUM = 488                                                      06230036
C                                                                       06240036
C      ****  TEST 488  ****                                             06250036
C                                                                       06260036
      IF (ICZERO) 34880, 4880, 34880                                    06270036
 4880 CONTINUE                                                          06280036
      IVCOMP = -28606/(-8)                                              06290036
      GO TO 44880                                                       06300036
34880 IVDELE = IVDELE + 1                                               06310036
      WRITE (I02,80003) IVTNUM                                          06320036
      IF (ICZERO) 44880, 4891, 44880                                    06330036
44880 IF (IVCOMP - 3575) 24880,14880,24880                              06340036
14880 IVPASS = IVPASS + 1                                               06350036
      WRITE (I02,80001) IVTNUM                                          06360036
      GO TO 4891                                                        06370036
24880 IVFAIL = IVFAIL + 1                                               06380036
      IVCORR = 3575                                                     06390036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06400036
 4891 CONTINUE                                                          06410036
      IVTNUM = 489                                                      06420036
C                                                                       06430036
C      ****  TEST 489  ****                                             06440036
C                                                                       06450036
      IF (ICZERO) 34890, 4890, 34890                                    06460036
 4890 CONTINUE                                                          06470036
      IVCOMP = -25603/2                                                 06480036
      GO TO 44890                                                       06490036
34890 IVDELE = IVDELE + 1                                               06500036
      WRITE (I02,80003) IVTNUM                                          06510036
      IF (ICZERO) 44890, 4901, 44890                                    06520036
44890 IF (IVCOMP + 12801) 24890,14890,24890                             06530036
14890 IVPASS = IVPASS + 1                                               06540036
      WRITE (I02,80001) IVTNUM                                          06550036
      GO TO 4901                                                        06560036
24890 IVFAIL = IVFAIL + 1                                               06570036
      IVCORR = -12801                                                   06580036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06590036
 4901 CONTINUE                                                          06600036
      IVTNUM = 490                                                      06610036
C                                                                       06620036
C      ****  TEST 490  ****                                             06630036
C                                                                       06640036
      IF (ICZERO) 34900, 4900, 34900                                    06650036
 4900 CONTINUE                                                          06660036
      IVCOMP = -25603/(-10354)                                          06670036
      GO TO 44900                                                       06680036
34900 IVDELE = IVDELE + 1                                               06690036
      WRITE (I02,80003) IVTNUM                                          06700036
      IF (ICZERO) 44900, 4911, 44900                                    06710036
44900 IF (IVCOMP - 2) 24900,14900,24900                                 06720036
14900 IVPASS = IVPASS + 1                                               06730036
      WRITE (I02,80001) IVTNUM                                          06740036
      GO TO 4911                                                        06750036
24900 IVFAIL = IVFAIL + 1                                               06760036
      IVCORR = 2                                                        06770036
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          06780036
C                                                                       06790036
C      ****    END OF TESTS    ****                                     06800036
 4911 CONTINUE                                                          06810036
C                                                                       06820036
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             06830036
99999 CONTINUE                                                          06840036
      WRITE (I02,90002)                                                 06850036
      WRITE (I02,90006)                                                 06860036
      WRITE (I02,90002)                                                 06870036
      WRITE (I02,90002)                                                 06880036
      WRITE (I02,90007)                                                 06890036
      WRITE (I02,90002)                                                 06900036
      WRITE (I02,90008)  IVFAIL                                         06910036
      WRITE (I02,90009) IVPASS                                          06920036
      WRITE (I02,90010) IVDELE                                          06930036
C                                                                       06940036
C                                                                       06950036
C     TERMINATE ROUTINE EXECUTION                                       06960036
      STOP                                                              06970036
C                                                                       06980036
C     FORMAT STATEMENTS FOR PAGE HEADERS                                06990036
90000 FORMAT ("1")                                                      07000036
90002 FORMAT (" ")                                                      07010036
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            07020036
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   07030036
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        07040036
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07050036
90006 FORMAT (" ",5X,"----------------------------------------------" ) 07060036
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             07070036
C                                                                       07080036
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               07090036
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        07100036
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              07110036
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             07120036
C                                                                       07130036
C     FORMAT STATEMENTS FOR TEST RESULTS                                07140036
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      07150036
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      07160036
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   07170036
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         07180036
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    07190036
C                                                                       07200036
90007 FORMAT (" ",20X,"END OF PROGRAM FM036" )                          07210036
      END                                                               07220036