FM098.f Source File


Contents

Source Code


Source Code

      PROGRAM FM098

C     COMMENT SECTION                                                   00010098
C                                                                       00020098
C     FM098                                                             00030098
C                                                                       00040098
C     THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION TYPE IS 00050098
C     INTEGER AND THE ARGUMENTS ARE EITHER INTEGER OR REAL.  THE REAL   00060098
C     AND INTEGER VARIABLES AND THE REAL AND INTEGER CONSTANTS CONTAIN  00070098
C     BOTH POSITIVE AND NEGATIVE VALUES.  THE INTRINSIC FUNCTIONS TESTED00080098
C     BY FM098 INCLUDE                                                  00090098
C                                                     TYPE OF           00100098
C       INTRINSIC FUNCTION          NAME       ARGUMENT     FUNCTION    00110098
C       ------------------          ----       --------     --------    00120098
C         ABSOLUTE VALUE            IABS       INTEGER      INTEGER     00130098
C         TRUNCATION                INT        REAL         INTEGER     00140098
C         REMAINDERING              MOD        INTEGER      INTEGER     00150098
C         CHOOSING LARGEST VALUE    MAX0       INTEGER      INTEGER     00160098
C                                   MAX1       REAL         INTEGER     00170098
C         CHOOSING SMALLEST VALUE   MIN0       INTEGER      INTEGER     00180098
C                                   MIN1       REAL         INTEGER     00190098
C         FIX                       IFIX      REAL          INTEGER     00200098
C         TRANSFER OF SIGN          ISIGN     INTEGER       INTEGER     00210098
C         POSITIVE DIFFERENCE       IDIM      INTEGER       INTEGER     00220098
C                                                                       00230098
C      REFERENCES                                                       00240098
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00250098
C              X3.9-1978                                                00260098
C                                                                       00270098
C        SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS   00280098
C        SECTION 15.3, INTRINSIC FUNCTION                               00290098
C        SECTION 15.3.2, INTRINSIC FUNCTIONS AND THEIR REFERENCE        00300098
C                                                                       00310098
C                                                                       00320098
C      **********************************************************       00330098
C                                                                       00340098
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00350098
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00360098
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00370098
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00380098
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00390098
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00400098
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00410098
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00420098
C     OF EXECUTING THESE TESTS.                                         00430098
C                                                                       00440098
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00450098
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00460098
C                                                                       00470098
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00480098
C                                                                       00490098
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00500098
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00510098
C                          BUILDING 225  RM A266                        00520098
C                         GAITHERSBURG, MD  20899                       00530098
C      **********************************************************       00540098
C                                                                       00550098
C                                                                       00560098
C                                                                       00570098
C     INITIALIZATION SECTION                                            00580098
C                                                                       00590098
C     INITIALIZE CONSTANTS                                              00600098
C      **************                                                   00610098
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00620098
      I01 = 5                                                           00630098
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00640098
      I02 = 6                                                           00650098
C     SYSTEM ENVIRONMENT SECTION                                        00660098
C                                                                       00670098
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00680098
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00690098
C     (UNIT NUMBER FOR CARD READER).                                    00700098
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00710098
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00720098
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00730098
C                                                                       00740098
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00750098
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00760098
C     (UNIT NUMBER FOR PRINTER).                                        00770098
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00780098
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00790098
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00800098
C                                                                       00810098
      IVPASS=0                                                          00820098
      IVFAIL=0                                                          00830098
      IVDELE=0                                                          00840098
      ICZERO=0                                                          00850098
C                                                                       00860098
C     WRITE PAGE HEADERS                                                00870098
      WRITE (I02,90000)                                                 00880098
      WRITE (I02,90001)                                                 00890098
      WRITE (I02,90002)                                                 00900098
      WRITE (I02, 90002)                                                00910098
      WRITE (I02,90003)                                                 00920098
      WRITE (I02,90002)                                                 00930098
      WRITE (I02,90004)                                                 00940098
      WRITE (I02,90002)                                                 00950098
      WRITE (I02,90011)                                                 00960098
      WRITE (I02,90002)                                                 00970098
      WRITE (I02,90002)                                                 00980098
      WRITE (I02,90005)                                                 00990098
      WRITE (I02,90006)                                                 01000098
      WRITE (I02,90002)                                                 01010098
C                                                                       01020098
C     TEST SECTION                                                      01030098
C                                                                       01040098
C     TEST 907 THROUGH TEST 909 CONTAIN INTRINSIC FUNCTION TESTS FOR    01050098
C     ABSOLUTE VALUE WHERE ARGUMENT AND FUNCTION ARE INTEGER            01060098
C                                                                       01070098
 9071 CONTINUE                                                          01080098
      IVTNUM = 907                                                      01090098
C                                                                       01100098
C      ****  TEST 907  ****                                             01110098
C                                                                       01120098
      IF (ICZERO) 39070, 9070, 39070                                    01130098
 9070 CONTINUE                                                          01140098
      IVCOMP = IABS (-382)                                              01150098
      GO TO 49070                                                       01160098
39070 IVDELE = IVDELE + 1                                               01170098
      WRITE (I02,80003) IVTNUM                                          01180098
      IF (ICZERO) 49070, 9081, 49070                                    01190098
49070 IF (IVCOMP - 382) 29070,19070,29070                               01200098
19070 IVPASS = IVPASS + 1                                               01210098
      WRITE (I02,80001) IVTNUM                                          01220098
      GO TO 9081                                                        01230098
29070 IVFAIL = IVFAIL + 1                                               01240098
      IVCORR = 382                                                      01250098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01260098
 9081 CONTINUE                                                          01270098
      IVTNUM = 908                                                      01280098
C                                                                       01290098
C      ****  TEST 908  ****                                             01300098
C                                                                       01310098
      IF (ICZERO) 39080, 9080, 39080                                    01320098
 9080 CONTINUE                                                          01330098
      IVON01 = 445                                                      01340098
      IVCOMP = IABS (IVON01)                                            01350098
      GO TO 49080                                                       01360098
39080 IVDELE = IVDELE + 1                                               01370098
      WRITE (I02,80003) IVTNUM                                          01380098
      IF (ICZERO) 49080, 9091, 49080                                    01390098
49080 IF (IVCOMP - 445) 29080,19080,29080                               01400098
19080 IVPASS = IVPASS + 1                                               01410098
      WRITE (I02,80001) IVTNUM                                          01420098
      GO TO 9091                                                        01430098
29080 IVFAIL = IVFAIL + 1                                               01440098
      IVCORR = 445                                                      01450098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01460098
 9091 CONTINUE                                                          01470098
      IVTNUM = 909                                                      01480098
C                                                                       01490098
C      ****  TEST 909  ****                                             01500098
C                                                                       01510098
      IF (ICZERO) 39090, 9090, 39090                                    01520098
 9090 CONTINUE                                                          01530098
      IVON01 = -32176                                                   01540098
      IVCOMP = IABS (IVON01)                                            01550098
      GO TO 49090                                                       01560098
39090 IVDELE = IVDELE + 1                                               01570098
      WRITE (I02,80003) IVTNUM                                          01580098
      IF (ICZERO) 49090, 9101, 49090                                    01590098
49090 IF (IVCOMP - 32176) 29090,19090,29090                             01600098
19090 IVPASS = IVPASS + 1                                               01610098
      WRITE (I02,80001) IVTNUM                                          01620098
      GO TO 9101                                                        01630098
29090 IVFAIL = IVFAIL + 1                                               01640098
      IVCORR = 32176                                                    01650098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01660098
C                                                                       01670098
C     TEST 910 THROUGH TEST 913 CONTAIN INTRINSIC FUNCTION TESTS FOR    01680098
C     TRUNCATION WHERE ARGUMENT IS REAL AND FUNCTION IS INTEGER         01690098
C                                                                       01700098
 9101 CONTINUE                                                          01710098
      IVTNUM = 910                                                      01720098
C                                                                       01730098
C      ****  TEST 910  ****                                             01740098
C                                                                       01750098
      IF (ICZERO) 39100, 9100, 39100                                    01760098
 9100 CONTINUE                                                          01770098
      IVCOMP = INT (38.2)                                               01780098
      GO TO 49100                                                       01790098
39100 IVDELE = IVDELE + 1                                               01800098
      WRITE (I02,80003) IVTNUM                                          01810098
      IF (ICZERO) 49100, 9111, 49100                                    01820098
49100 IF (IVCOMP - 38) 29100,19100,29100                                01830098
19100 IVPASS = IVPASS + 1                                               01840098
      WRITE (I02,80001) IVTNUM                                          01850098
      GO TO 9111                                                        01860098
29100 IVFAIL = IVFAIL + 1                                               01870098
      IVCORR = 38                                                       01880098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          01890098
 9111 CONTINUE                                                          01900098
      IVTNUM = 911                                                      01910098
C                                                                       01920098
C      ****  TEST 911  ****                                             01930098
C                                                                       01940098
      IF (ICZERO) 39110, 9110, 39110                                    01950098
 9110 CONTINUE                                                          01960098
      RVON01 = -445.95                                                  01970098
      IVCOMP = INT (RVON01)                                             01980098
      GO TO 49110                                                       01990098
39110 IVDELE = IVDELE + 1                                               02000098
      WRITE (I02,80003) IVTNUM                                          02010098
      IF (ICZERO) 49110, 9121, 49110                                    02020098
49110 IF (IVCOMP + 445) 29110,19110,29110                               02030098
19110 IVPASS = IVPASS + 1                                               02040098
      WRITE (I02,80001) IVTNUM                                          02050098
      GO TO 9121                                                        02060098
29110 IVFAIL = IVFAIL + 1                                               02070098
      IVCORR = -445                                                     02080098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02090098
 9121 CONTINUE                                                          02100098
      IVTNUM = 912                                                      02110098
C                                                                       02120098
C      ****  TEST 912  ****                                             02130098
C                                                                       02140098
      IF (ICZERO) 39120, 9120, 39120                                    02150098
 9120 CONTINUE                                                          02160098
      RVON01 = 466.01                                                   02170098
      IVCOMP = INT (RVON01)                                             02180098
      GO TO 49120                                                       02190098
39120 IVDELE = IVDELE + 1                                               02200098
      WRITE (I02,80003) IVTNUM                                          02210098
      IF (ICZERO) 49120, 9131, 49120                                    02220098
49120 IF (IVCOMP - 466) 29120,19120,29120                               02230098
19120 IVPASS = IVPASS + 1                                               02240098
      WRITE (I02,80001) IVTNUM                                          02250098
      GO TO 9131                                                        02260098
29120 IVFAIL = IVFAIL + 1                                               02270098
      IVCORR = 466                                                      02280098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02290098
 9131 CONTINUE                                                          02300098
      IVTNUM = 913                                                      02310098
C                                                                       02320098
C      ****  TEST 913  ****                                             02330098
C                                                                       02340098
      IF (ICZERO) 39130, 9130, 39130                                    02350098
 9130 CONTINUE                                                          02360098
      RVON01 = 382E-1                                                   02370098
      IVCOMP = INT (RVON01)                                             02380098
      GO TO 49130                                                       02390098
39130 IVDELE = IVDELE + 1                                               02400098
      WRITE (I02,80003) IVTNUM                                          02410098
      IF (ICZERO) 49130, 9141, 49130                                    02420098
49130 IF (IVCOMP - 38) 29130,19130,29130                                02430098
19130 IVPASS = IVPASS + 1                                               02440098
      WRITE (I02,80001) IVTNUM                                          02450098
      GO TO 9141                                                        02460098
29130 IVFAIL = IVFAIL + 1                                               02470098
      IVCORR = 38                                                       02480098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02490098
C                                                                       02500098
C     TEST 914 THROUGH TEST 917 CONTAIN INTRINSIC FUNCTION TESTS FOR    02510098
C     REMAINDERING WHERE ARGUMENTS AND FUNCTION ARE INTEGERS            02520098
C                                                                       02530098
 9141 CONTINUE                                                          02540098
      IVTNUM = 914                                                      02550098
C                                                                       02560098
C      ****  TEST 914  ****                                             02570098
C                                                                       02580098
      IF (ICZERO) 39140, 9140, 39140                                    02590098
 9140 CONTINUE                                                          02600098
      IVCOMP = MOD (42,19)                                              02610098
      GO TO 49140                                                       02620098
39140 IVDELE = IVDELE + 1                                               02630098
      WRITE (I02,80003) IVTNUM                                          02640098
      IF (ICZERO) 49140, 9151, 49140                                    02650098
49140 IF (IVCOMP - 4) 29140,19140,29140                                 02660098
19140 IVPASS = IVPASS + 1                                               02670098
      WRITE (I02,80001) IVTNUM                                          02680098
      GO TO 9151                                                        02690098
29140 IVFAIL = IVFAIL + 1                                               02700098
      IVCORR = 4                                                        02710098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02720098
 9151 CONTINUE                                                          02730098
      IVTNUM = 915                                                      02740098
C                                                                       02750098
C      ****  TEST 915  ****                                             02760098
C                                                                       02770098
      IF (ICZERO) 39150, 9150, 39150                                    02780098
 9150 CONTINUE                                                          02790098
      IVON01 = 6667                                                     02800098
      IVON02 = 2                                                        02810098
      IVCOMP = MOD (IVON01,IVON02)                                      02820098
      GO TO 49150                                                       02830098
39150 IVDELE = IVDELE + 1                                               02840098
      WRITE (I02,80003) IVTNUM                                          02850098
      IF (ICZERO) 49150, 9161, 49150                                    02860098
49150 IF (IVCOMP - 1) 29150,19150,29150                                 02870098
19150 IVPASS = IVPASS + 1                                               02880098
      WRITE (I02,80001) IVTNUM                                          02890098
      GO TO 9161                                                        02900098
29150 IVFAIL = IVFAIL + 1                                               02910098
      IVCORR = 1                                                        02920098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          02930098
 9161 CONTINUE                                                          02940098
      IVTNUM = 916                                                      02950098
C                                                                       02960098
C      ****  TEST 916  ****                                             02970098
C                                                                       02980098
      IF (ICZERO) 39160, 9160, 39160                                    02990098
 9160 CONTINUE                                                          03000098
      IVON01 = 225                                                      03010098
      IVON02 = 50                                                       03020098
      IVCOMP = MOD (IVON01,IVON02)                                      03030098
      GO TO 49160                                                       03040098
39160 IVDELE = IVDELE + 1                                               03050098
      WRITE (I02,80003) IVTNUM                                          03060098
      IF (ICZERO) 49160, 9171, 49160                                    03070098
49160 IF (IVCOMP - 25) 29160,19160,29160                                03080098
19160 IVPASS = IVPASS + 1                                               03090098
      WRITE (I02,80001) IVTNUM                                          03100098
      GO TO 9171                                                        03110098
29160 IVFAIL = IVFAIL + 1                                               03120098
      IVCORR = 25                                                       03130098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          03140098
 9171 CONTINUE                                                          03150098
      IVTNUM = 917                                                      03160098
C                                                                       03170098
C      ****  TEST 917  ****                                             03180098
C                                                                       03190098
      IF (ICZERO) 39170, 9170, 39170                                    03200098
 9170 CONTINUE                                                          03210098
      IVON01 = -39                                                      03220098
      IVON02 = 500                                                      03230098
      IVCOMP = MOD (IVON01,IVON02)                                      03240098
      GO TO 49170                                                       03250098
39170 IVDELE = IVDELE + 1                                               03260098
      WRITE (I02,80003) IVTNUM                                          03270098
      IF (ICZERO) 49170, 9181, 49170                                    03280098
49170 IF (IVCOMP + 39) 29170,19170,29170                                03290098
19170 IVPASS = IVPASS + 1                                               03300098
      WRITE (I02,80001) IVTNUM                                          03310098
      GO TO 9181                                                        03320098
29170 IVFAIL = IVFAIL + 1                                               03330098
      IVCORR = -39                                                      03340098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          03350098
C                                                                       03360098
C     TEST 918 AND 919 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING    03370098
C     LARGEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER            03380098
C                                                                       03390098
 9181 CONTINUE                                                          03400098
      IVTNUM = 918                                                      03410098
C                                                                       03420098
C      ****  TEST 918  ****                                             03430098
C                                                                       03440098
      IF (ICZERO) 39180, 9180, 39180                                    03450098
 9180 CONTINUE                                                          03460098
      IVON01 = 317                                                      03470098
      IVON02 = -99                                                      03480098
      IVON03 = 1                                                        03490098
      IVCOMP = MAX0 (263,IVON01,IVON02,IVON03)                          03500098
      GO TO 49180                                                       03510098
39180 IVDELE = IVDELE + 1                                               03520098
      WRITE (I02,80003) IVTNUM                                          03530098
      IF (ICZERO) 49180, 9191, 49180                                    03540098
49180 IF (IVCOMP - 317) 29180,19180,29180                               03550098
19180 IVPASS = IVPASS + 1                                               03560098
      WRITE (I02,80001) IVTNUM                                          03570098
      GO TO 9191                                                        03580098
29180 IVFAIL = IVFAIL + 1                                               03590098
      IVCORR = 317                                                      03600098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          03610098
 9191 CONTINUE                                                          03620098
      IVTNUM = 919                                                      03630098
C                                                                       03640098
C      ****  TEST 919  ****                                             03650098
C                                                                       03660098
      IF (ICZERO) 39190, 9190, 39190                                    03670098
 9190 CONTINUE                                                          03680098
      IVON01 = 2572                                                     03690098
      IVON02 = 2570                                                     03700098
      IVCOMP = MAX0 (IVON01,IVON02)                                     03710098
      GO TO 49190                                                       03720098
39190 IVDELE = IVDELE + 1                                               03730098
      WRITE (I02,80003) IVTNUM                                          03740098
      IF (ICZERO) 49190, 9201, 49190                                    03750098
49190 IF (IVCOMP - 2572) 29190,19190,29190                              03760098
19190 IVPASS = IVPASS + 1                                               03770098
      WRITE (I02,80001) IVTNUM                                          03780098
      GO TO 9201                                                        03790098
29190 IVFAIL = IVFAIL + 1                                               03800098
      IVCORR = 2572                                                     03810098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          03820098
C                                                                       03830098
C     TEST 920 AND 921 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING    03840098
C     LARGEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER    03850098
C                                                                       03860098
 9201 CONTINUE                                                          03870098
      IVTNUM = 920                                                      03880098
C                                                                       03890098
C      ****  TEST 920  ****                                             03900098
C                                                                       03910098
      IF (ICZERO) 39200, 9200, 39200                                    03920098
 9200 CONTINUE                                                          03930098
      RVON01 = .326E+2                                                  03940098
      RVON02 = 22.075                                                   03950098
      RVON03 = 76E-1                                                    03960098
      IVCOMP = MAX1 (RVON01,RVON02,RVON03)                              03970098
      GO TO 49200                                                       03980098
39200 IVDELE = IVDELE + 1                                               03990098
      WRITE (I02,80003) IVTNUM                                          04000098
      IF (ICZERO) 49200, 9211, 49200                                    04010098
49200 IF (IVCOMP - 32) 29200,19200,29200                                04020098
19200 IVPASS = IVPASS + 1                                               04030098
      WRITE (I02,80001) IVTNUM                                          04040098
      GO TO 9211                                                        04050098
29200 IVFAIL = IVFAIL + 1                                               04060098
      IVCORR = 32                                                       04070098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          04080098
 9211 CONTINUE                                                          04090098
      IVTNUM = 921                                                      04100098
C                                                                       04110098
C      ****  TEST 921  ****                                             04120098
C                                                                       04130098
      IF (ICZERO) 39210, 9210, 39210                                    04140098
 9210 CONTINUE                                                          04150098
      RVON01 = -6.3E2                                                   04160098
      RVON02 = -21.0                                                    04170098
      IVCOMP = MAX1 (-463.3,RVON01,RVON02)                              04180098
      GO TO 49210                                                       04190098
39210 IVDELE = IVDELE + 1                                               04200098
      WRITE (I02,80003) IVTNUM                                          04210098
      IF (ICZERO) 49210, 9221, 49210                                    04220098
49210 IF (IVCOMP + 21) 29210,19210,29210                                04230098
19210 IVPASS = IVPASS + 1                                               04240098
      WRITE (I02,80001) IVTNUM                                          04250098
      GO TO 9221                                                        04260098
29210 IVFAIL = IVFAIL + 1                                               04270098
      IVCORR = -21                                                      04280098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          04290098
C                                                                       04300098
C     TEST 922 AND 923 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING    04310098
C     SMALLEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER           04320098
C                                                                       04330098
 9221 CONTINUE                                                          04340098
      IVTNUM = 922                                                      04350098
C                                                                       04360098
C      ****  TEST 922  ****                                             04370098
C                                                                       04380098
      IF (ICZERO) 39220, 9220, 39220                                    04390098
 9220 CONTINUE                                                          04400098
      IVON01 = -75                                                      04410098
      IVON02 = -243                                                     04420098
      IVCOMP = MIN0 (IVON01,IVON02)                                     04430098
      GO TO 49220                                                       04440098
39220 IVDELE = IVDELE + 1                                               04450098
      WRITE (I02,80003) IVTNUM                                          04460098
      IF (ICZERO) 49220, 9231, 49220                                    04470098
49220 IF (IVCOMP + 243) 29220,19220,29220                               04480098
19220 IVPASS = IVPASS + 1                                               04490098
      WRITE (I02,80001) IVTNUM                                          04500098
      GO TO 9231                                                        04510098
29220 IVFAIL = IVFAIL + 1                                               04520098
      IVCORR = -243                                                     04530098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          04540098
 9231 CONTINUE                                                          04550098
      IVTNUM = 923                                                      04560098
C                                                                       04570098
C      ****  TEST 923  ****                                             04580098
C                                                                       04590098
      IF (ICZERO) 39230, 9230, 39230                                    04600098
 9230 CONTINUE                                                          04610098
      IVON01 = -11                                                      04620098
      IVON02 = 11                                                       04630098
      IVCOMP = MIN0 (0,IVON01,IVON02)                                   04640098
      GO TO 49230                                                       04650098
39230 IVDELE = IVDELE + 1                                               04660098
      WRITE (I02,80003) IVTNUM                                          04670098
      IF (ICZERO) 49230, 9241, 49230                                    04680098
49230 IF (IVCOMP + 11) 29230,19230,29230                                04690098
19230 IVPASS = IVPASS + 1                                               04700098
      WRITE (I02,80001) IVTNUM                                          04710098
      GO TO 9241                                                        04720098
29230 IVFAIL = IVFAIL + 1                                               04730098
      IVCORR = -11                                                      04740098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          04750098
C                                                                       04760098
C     TEST 924 AND 925 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING    04770098
C     SMALLEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER   04780098
C                                                                       04790098
 9241 CONTINUE                                                          04800098
      IVTNUM = 924                                                      04810098
C                                                                       04820098
C      ****  TEST 924  ****                                             04830098
C                                                                       04840098
      IF (ICZERO) 39240, 9240, 39240                                    04850098
 9240 CONTINUE                                                          04860098
      RVON01 = 1.1111                                                   04870098
      RVON02 = 22.222                                                   04880098
      RVON03 = 333.33                                                   04890098
      IVCOMP = MIN1 (RVON01,RVON02,RVON03)                              04900098
      GO TO 49240                                                       04910098
39240 IVDELE = IVDELE + 1                                               04920098
      WRITE (I02,80003) IVTNUM                                          04930098
      IF (ICZERO) 49240, 9251, 49240                                    04940098
49240 IF (IVCOMP - 1) 29240,19240,29240                                 04950098
19240 IVPASS = IVPASS + 1                                               04960098
      WRITE (I02,80001) IVTNUM                                          04970098
      GO TO 9251                                                        04980098
29240 IVFAIL = IVFAIL + 1                                               04990098
      IVCORR = 1                                                        05000098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05010098
 9251 CONTINUE                                                          05020098
      IVTNUM = 925                                                      05030098
C                                                                       05040098
C      ****  TEST 925  ****                                             05050098
C                                                                       05060098
      IF (ICZERO) 39250, 9250, 39250                                    05070098
 9250 CONTINUE                                                          05080098
      RVON01 = 28.8                                                     05090098
      RVON02 = 2.88E1                                                   05100098
      RVON03 = 288E-1                                                   05110098
      RVON04 = 35.0                                                     05120098
      IVCOMP = MIN1 (RVON01,RVON02,RVON03,RVON04)                       05130098
      GO TO 49250                                                       05140098
39250 IVDELE = IVDELE + 1                                               05150098
      WRITE (I02,80003) IVTNUM                                          05160098
      IF (ICZERO) 49250, 9261, 49250                                    05170098
49250 IF (IVCOMP - 28) 29250,19250,29250                                05180098
19250 IVPASS = IVPASS + 1                                               05190098
      WRITE (I02,80001) IVTNUM                                          05200098
      GO TO 9261                                                        05210098
29250 IVFAIL = IVFAIL + 1                                               05220098
      IVCORR = 28                                                       05230098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05240098
C                                                                       05250098
C     TEST 926 THROUGH TEST 929 CONTAIN THE INTRINSIC FUNCTION FIX      05260098
C     WHICH CONVERTS REAL ARGUMENTS TO INTEGER FUNCTION RESULTS         05270098
C                                                                       05280098
 9261 CONTINUE                                                          05290098
      IVTNUM = 926                                                      05300098
C                                                                       05310098
C      ****  TEST 926  ****                                             05320098
C                                                                       05330098
      IF (ICZERO) 39260, 9260, 39260                                    05340098
 9260 CONTINUE                                                          05350098
      IVCOMP = IFIX (-6.06)                                             05360098
      GO TO 49260                                                       05370098
39260 IVDELE = IVDELE + 1                                               05380098
      WRITE (I02,80003) IVTNUM                                          05390098
      IF (ICZERO) 49260, 9271, 49260                                    05400098
49260 IF (IVCOMP + 6) 29260,19260,29260                                 05410098
19260 IVPASS = IVPASS + 1                                               05420098
      WRITE (I02,80001) IVTNUM                                          05430098
      GO TO 9271                                                        05440098
29260 IVFAIL = IVFAIL + 1                                               05450098
      IVCORR = -6                                                       05460098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05470098
 9271 CONTINUE                                                          05480098
      IVTNUM = 927                                                      05490098
C                                                                       05500098
C      ****  TEST 927  ****                                             05510098
C                                                                       05520098
      IF (ICZERO) 39270, 9270, 39270                                    05530098
 9270 CONTINUE                                                          05540098
      RVON01 = 71.01                                                    05550098
      IVCOMP = IFIX (RVON01)                                            05560098
      GO TO 49270                                                       05570098
39270 IVDELE = IVDELE + 1                                               05580098
      WRITE (I02,80003) IVTNUM                                          05590098
      IF (ICZERO) 49270, 9281, 49270                                    05600098
49270 IF (IVCOMP - 71) 29270,19270,29270                                05610098
19270 IVPASS = IVPASS + 1                                               05620098
      WRITE (I02,80001) IVTNUM                                          05630098
      GO TO 9281                                                        05640098
29270 IVFAIL = IVFAIL + 1                                               05650098
      IVCORR = 71                                                       05660098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05670098
 9281 CONTINUE                                                          05680098
      IVTNUM = 928                                                      05690098
C                                                                       05700098
C      ****  TEST 928  ****                                             05710098
C                                                                       05720098
      IF (ICZERO) 39280, 9280, 39280                                    05730098
 9280 CONTINUE                                                          05740098
      RVON01 = 3.211E2                                                  05750098
      IVCOMP = IFIX (RVON01)                                            05760098
      GO TO 49280                                                       05770098
39280 IVDELE = IVDELE + 1                                               05780098
      WRITE (I02,80003) IVTNUM                                          05790098
      IF (ICZERO) 49280, 9291, 49280                                    05800098
49280 IF (IVCOMP - 321) 29280,19280,29280                               05810098
19280 IVPASS = IVPASS + 1                                               05820098
      WRITE (I02,80001) IVTNUM                                          05830098
      GO TO 9291                                                        05840098
29280 IVFAIL = IVFAIL + 1                                               05850098
      IVCORR = 321                                                      05860098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          05870098
 9291 CONTINUE                                                          05880098
      IVTNUM = 929                                                      05890098
C                                                                       05900098
C      ****  TEST 929  ****                                             05910098
C                                                                       05920098
      IF (ICZERO) 39290, 9290, 39290                                    05930098
 9290 CONTINUE                                                          05940098
      RVON01 = 777E-1                                                   05950098
      IVCOMP = IFIX (RVON01)                                            05960098
      GO TO 49290                                                       05970098
39290 IVDELE = IVDELE + 1                                               05980098
      WRITE (I02,80003) IVTNUM                                          05990098
      IF (ICZERO) 49290, 9301, 49290                                    06000098
49290 IF (IVCOMP - 77) 29290,19290,29290                                06010098
19290 IVPASS = IVPASS + 1                                               06020098
      WRITE (I02,80001) IVTNUM                                          06030098
      GO TO 9301                                                        06040098
29290 IVFAIL = IVFAIL + 1                                               06050098
      IVCORR = 77                                                       06060098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06070098
C                                                                       06080098
C     TEST 930 THROUGH TEST 932 CONTAIN INTRINSIC FUNCTION TESTS FOR    06090098
C     TRANSFER OF SIGN WHERE ARGUMENTS AND FUNCTION ARE INTEGER         06100098
C                                                                       06110098
 9301 CONTINUE                                                          06120098
      IVTNUM = 930                                                      06130098
C                                                                       06140098
C      ****  TEST 930  ****                                             06150098
C                                                                       06160098
      IF (ICZERO) 39300, 9300, 39300                                    06170098
 9300 CONTINUE                                                          06180098
      IVON01 = 643                                                      06190098
      IVCOMP = ISIGN (IVON01,-1)                                        06200098
      GO TO 49300                                                       06210098
39300 IVDELE = IVDELE + 1                                               06220098
      WRITE (I02,80003) IVTNUM                                          06230098
      IF (ICZERO) 49300, 9311, 49300                                    06240098
49300 IF (IVCOMP + 643) 29300,19300,29300                               06250098
19300 IVPASS = IVPASS + 1                                               06260098
      WRITE (I02,80001) IVTNUM                                          06270098
      GO TO 9311                                                        06280098
29300 IVFAIL = IVFAIL + 1                                               06290098
      IVCORR = -643                                                     06300098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06310098
 9311 CONTINUE                                                          06320098
      IVTNUM = 931                                                      06330098
C                                                                       06340098
C      ****  TEST 931  ****                                             06350098
C                                                                       06360098
      IF (ICZERO) 39310, 9310, 39310                                    06370098
 9310 CONTINUE                                                          06380098
      IVON01 = -22                                                      06390098
      IVON02 = 723                                                      06400098
      IVCOMP = ISIGN (IVON01,IVON02)                                    06410098
      GO TO 49310                                                       06420098
39310 IVDELE = IVDELE + 1                                               06430098
      WRITE (I02,80003) IVTNUM                                          06440098
      IF (ICZERO) 49310, 9321, 49310                                    06450098
49310 IF (IVCOMP - 22) 29310,19310,29310                                06460098
19310 IVPASS = IVPASS + 1                                               06470098
      WRITE (I02,80001) IVTNUM                                          06480098
      GO TO 9321                                                        06490098
29310 IVFAIL = IVFAIL + 1                                               06500098
      IVCORR = 22                                                       06510098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06520098
 9321 CONTINUE                                                          06530098
      IVTNUM = 932                                                      06540098
C                                                                       06550098
C      ****  TEST 932  ****                                             06560098
C                                                                       06570098
      IF (ICZERO) 39320, 9320, 39320                                    06580098
 9320 CONTINUE                                                          06590098
      IVON01 = 3532                                                     06600098
      IVON02 = 1                                                        06610098
      IVCOMP = ISIGN (IVON01,IVON02)                                    06620098
      GO TO 49320                                                       06630098
39320 IVDELE = IVDELE + 1                                               06640098
      WRITE (I02,80003) IVTNUM                                          06650098
      IF (ICZERO) 49320, 9331, 49320                                    06660098
49320 IF (IVCOMP - 3532) 29320,19320,29320                              06670098
19320 IVPASS = IVPASS + 1                                               06680098
      WRITE (I02,80001) IVTNUM                                          06690098
      GO TO 9331                                                        06700098
29320 IVFAIL = IVFAIL + 1                                               06710098
      IVCORR = 3532                                                     06720098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06730098
C                                                                       06740098
C     TEST 933 THROUGH TEST 936 CONTAIN INTRINSIC FUNCTION TESTS FOR    06750098
C     POSITIVE DIFFERENCE WHERE ARGUMENTS AND FUNCTION ARE INTEGERS     06760098
C                                                                       06770098
 9331 CONTINUE                                                          06780098
      IVTNUM = 933                                                      06790098
C                                                                       06800098
C      ****  TEST 933  ****                                             06810098
C                                                                       06820098
      IF (ICZERO) 39330, 9330, 39330                                    06830098
 9330 CONTINUE                                                          06840098
      IVON01 = 222                                                      06850098
      IVCOMP = IDIM (IVON01,1)                                          06860098
      GO TO 49330                                                       06870098
39330 IVDELE = IVDELE + 1                                               06880098
      WRITE (I02,80003) IVTNUM                                          06890098
      IF (ICZERO) 49330, 9341, 49330                                    06900098
49330 IF (IVCOMP - 221) 29330,19330,29330                               06910098
19330 IVPASS = IVPASS + 1                                               06920098
      WRITE (I02,80001) IVTNUM                                          06930098
      GO TO 9341                                                        06940098
29330 IVFAIL = IVFAIL + 1                                               06950098
      IVCORR = 221                                                      06960098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          06970098
 9341 CONTINUE                                                          06980098
      IVTNUM = 934                                                      06990098
C                                                                       07000098
C      ****  TEST 934  ****                                             07010098
C                                                                       07020098
      IF (ICZERO) 39340, 9340, 39340                                    07030098
 9340 CONTINUE                                                          07040098
      IVON01 = 45                                                       07050098
      IVON02 = 41                                                       07060098
      IVCOMP = IDIM (IVON01,IVON02)                                     07070098
      GO TO 49340                                                       07080098
39340 IVDELE = IVDELE + 1                                               07090098
      WRITE (I02,80003) IVTNUM                                          07100098
      IF (ICZERO) 49340, 9351, 49340                                    07110098
49340 IF (IVCOMP - 4) 29340,19340,29340                                 07120098
19340 IVPASS = IVPASS + 1                                               07130098
      WRITE (I02,80001) IVTNUM                                          07140098
      GO TO 9351                                                        07150098
29340 IVFAIL = IVFAIL + 1                                               07160098
      IVCORR = 4                                                        07170098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          07180098
 9351 CONTINUE                                                          07190098
      IVTNUM = 935                                                      07200098
C                                                                       07210098
C      ****  TEST 935  ****                                             07220098
C                                                                       07230098
      IF (ICZERO) 39350, 9350, 39350                                    07240098
 9350 CONTINUE                                                          07250098
      IVON01 = 2                                                        07260098
      IVON02 = 10                                                       07270098
      IVCOMP = IDIM (IVON01,IVON02)                                     07280098
      GO TO 49350                                                       07290098
39350 IVDELE = IVDELE + 1                                               07300098
      WRITE (I02,80003) IVTNUM                                          07310098
      IF (ICZERO) 49350, 9361, 49350                                    07320098
49350 IF (IVCOMP) 29350,19350,29350                                     07330098
19350 IVPASS = IVPASS + 1                                               07340098
      WRITE (I02,80001) IVTNUM                                          07350098
      GO TO 9361                                                        07360098
29350 IVFAIL = IVFAIL + 1                                               07370098
      IVCORR = 0                                                        07380098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          07390098
 9361 CONTINUE                                                          07400098
      IVTNUM = 936                                                      07410098
C                                                                       07420098
C      ****  TEST 936  ****                                             07430098
C                                                                       07440098
      IF (ICZERO) 39360, 9360, 39360                                    07450098
 9360 CONTINUE                                                          07460098
      IVON01 = 165                                                      07470098
      IVON02 = -2                                                       07480098
      IVCOMP = IDIM (IVON01,IVON02)                                     07490098
      GO TO 49360                                                       07500098
39360 IVDELE = IVDELE + 1                                               07510098
      WRITE (I02,80003) IVTNUM                                          07520098
      IF (ICZERO) 49360, 9371, 49360                                    07530098
49360 IF (IVCOMP - 167) 29360,19360,29360                               07540098
19360 IVPASS = IVPASS + 1                                               07550098
      WRITE (I02,80001) IVTNUM                                          07560098
      GO TO 9371                                                        07570098
29360 IVFAIL = IVFAIL + 1                                               07580098
      IVCORR = 167                                                      07590098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          07600098
C                                                                       07610098
C     TESTS 937 AND 938 CONTAIN EXPRESSIONS CONTAINING MORE THAN ONE    07620098
C     INTRINSIC FUNCTION - THE FUNCTIONS ARE INTEGER AND THE ARGUMENTS  07630098
C     ARE REAL AND INTEGER                                              07640098
C                                                                       07650098
 9371 CONTINUE                                                          07660098
      IVTNUM = 937                                                      07670098
C                                                                       07680098
C      ****  TEST 937  ****                                             07690098
C                                                                       07700098
      IF (ICZERO) 39370, 9370, 39370                                    07710098
 9370 CONTINUE                                                          07720098
      RVON01 = 33.3                                                     07730098
      IVON01 = -12                                                      07740098
      IVCOMP = INT (RVON01) + IABS (IVON01)                             07750098
      GO TO 49370                                                       07760098
39370 IVDELE = IVDELE + 1                                               07770098
      WRITE (I02,80003) IVTNUM                                          07780098
      IF (ICZERO) 49370, 9381, 49370                                    07790098
49370 IF (IVCOMP -  45) 29370,19370,29370                               07800098
19370 IVPASS = IVPASS + 1                                               07810098
      WRITE (I02,80001) IVTNUM                                          07820098
      GO TO 9381                                                        07830098
29370 IVFAIL = IVFAIL + 1                                               07840098
      IVCORR = 45                                                       07850098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          07860098
 9381 CONTINUE                                                          07870098
      IVTNUM = 938                                                      07880098
C                                                                       07890098
C      ****  TEST 938  ****                                             07900098
C                                                                       07910098
      IF (ICZERO) 39380, 9380, 39380                                    07920098
 9380 CONTINUE                                                          07930098
      IVON01 = 76                                                       07940098
      IVON02 = 21                                                       07950098
      IVON03 = 30                                                       07960098
      IVCOMP = MAX0 (IVON01,IVON02,IVON03) - MIN0 (IVON01,IVON02,IVON03)07970098
      GO TO 49380                                                       07980098
39380 IVDELE = IVDELE + 1                                               07990098
      WRITE (I02,80003) IVTNUM                                          08000098
      IF (ICZERO) 49380, 9391, 49380                                    08010098
49380 IF (IVCOMP - 55) 29380,19380,29380                                08020098
19380 IVPASS = IVPASS + 1                                               08030098
      WRITE (I02,80001) IVTNUM                                          08040098
      GO TO 9391                                                        08050098
29380 IVFAIL = IVFAIL + 1                                               08060098
      IVCORR = 55                                                       08070098
      WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR                          08080098
 9391 CONTINUE                                                          08090098
C                                                                       08100098
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             08110098
99999 CONTINUE                                                          08120098
      WRITE (I02,90002)                                                 08130098
      WRITE (I02,90006)                                                 08140098
      WRITE (I02,90002)                                                 08150098
      WRITE (I02,90002)                                                 08160098
      WRITE (I02,90007)                                                 08170098
      WRITE (I02,90002)                                                 08180098
      WRITE (I02,90008)  IVFAIL                                         08190098
      WRITE (I02,90009) IVPASS                                          08200098
      WRITE (I02,90010) IVDELE                                          08210098
C                                                                       08220098
C                                                                       08230098
C     TERMINATE ROUTINE EXECUTION                                       08240098
      STOP                                                              08250098
C                                                                       08260098
C     FORMAT STATEMENTS FOR PAGE HEADERS                                08270098
90000 FORMAT ("1")                                                      08280098
90002 FORMAT (" ")                                                      08290098
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            08300098
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   08310098
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        08320098
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08330098
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08340098
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             08350098
C                                                                       08360098
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               08370098
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        08380098
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              08390098
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             08400098
C                                                                       08410098
C     FORMAT STATEMENTS FOR TEST RESULTS                                08420098
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      08430098
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      08440098
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   08450098
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         08460098
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    08470098
C                                                                       08480098
90007 FORMAT (" ",20X,"END OF PROGRAM FM098" )                          08490098
      END                                                               08500098