FM020.f Source File


Contents

Source Code


Source Code

      PROGRAM FM020

C                                                                       00010020
C     COMMENT SECTION.                                                  00020020
C                                                                       00030020
C     FM020                                                             00040020
C                                                                       00050020
C             THIS ROUTINE TESTS THE FORTRAN IN-LINE STATEMENT FUNCTION 00060020
C     OF TYPE LOGICAL AND INTEGER.  INTEGER CONSTANTS, LOGICAL CONSTANTS00070020
C     INTEGER VARIABLES, LOGICAL VARIABLES, INTEGER ARITHMETIC EXPRESS- 00080020
C     IONS ARE ALL USED TO TEST THE STATEMENT FUNCTION DEFINITION AND   00090020
C     THE VALUE RETURNED FOR THE STATEMENT FUNCTION WHEN IT IS USED     00100020
C     IN THE MAIN BODY OF THE PROGRAM.                                  00110020
C                                                                       00120020
C      REFERENCES                                                       00130020
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00140020
C              X3.9-1978                                                00150020
C                                                                       00160020
C        SECTION 8.4.1, INTEGER, REAL, DOUBLE PRECISION, COMPLEX, AND   00170020
C                       LOGICAL TYPE-STATEMENTS                         00180020
C        SECTION 15.3.2, INTRINSIC FUNCTION REFERENCES                  00190020
C        SECTION 15.4, STATEMENT FUNCTIONS                              00200020
C        SECTION 15.4.1, FORMS OF A FUNCTION STATEMENT                  00210020
C        SECTION 15.4.2, REFERENCING A STATEMENT FUNCTION               00220020
C        SECTION 15.5.2, EXTERNAL FUNCTION REFERENCES                   00230020
C                                                                       00240020
      LOGICAL LFTN01, LDTN01                                            00250020
      LOGICAL LFTN02, LDTN02                                            00260020
      LOGICAL LFTN03, LDTN03, LCTN03                                    00270020
      LOGICAL LFTN04, LDTN04, LCTN04                                    00280020
      DIMENSION IADN11(2)                                               00290020
C                                                                       00300020
C..... TEST 553                                                         00310020
      IFON01(IDON01) = 32767                                            00320020
C                                                                       00330020
C..... TEST 554                                                         00340020
      LFTN01(LDTN01) = .TRUE.                                           00350020
C                                                                       00360020
C..... TEST 555                                                         00370020
      IFON02 ( IDON02 ) = IDON02                                        00380020
C                                                                       00390020
C..... TEST 556                                                         00400020
      LFTN02( LDTN02 ) = LDTN02                                         00410020
C                                                                       00420020
C..... TEST 557                                                         00430020
      IFON03 (IDON03 )= IDON03                                          00440020
C                                                                       00450020
C..... TEST 558                                                         00460020
      LFTN03(LDTN03) = LDTN03                                           00470020
C                                                                       00480020
C..... TEST 559                                                         00490020
      LFTN04(LDTN04) = .NOT. LDTN04                                     00500020
C                                                                       00510020
C..... TEST 560                                                         00520020
      IFON04(IDON04) = IDON04 ** 2                                      00530020
C                                                                       00540020
C..... TEST 561                                                         00550020
      IFON05(IDON05, IDON06) = IDON05 + IDON06                          00560020
C                                                                       00570020
C..... TEST 562                                                         00580020
      IFON06(IDON07, IDON08) = SQRT(FLOAT(IDON07**2)+FLOAT(IDON08**2))  00590020
C                                                                       00600020
C..... TEST 563                                                         00610020
      IFON07(IDON09) = IDON09 ** 2                                      00620020
      IFON08(I,J)=SQRT(FLOAT(IFON07(I))+FLOAT(IFON07(J)))               00630020
C                                                                       00640020
C..... TEST 564                                                         00650020
      IFON09(K,L) = K / L + K ** L - K * L                              00660020
C                                                                       00670020
C                                                                       00680020
C                                                                       00690020
C      **********************************************************       00700020
C                                                                       00710020
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00720020
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD  00730020
C     PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00740020
C     FEDERAL COBOL COMPILER TESTING SERVICE.  THE FORTRAN COMPILER     00750020
C     VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00760020
C     DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT ROUTINE IS A FORTRAN   00770020
C     PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC  00780020
C     LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00790020
C     OF EXECUTING THESE TESTS.                                         00800020
C                                                                       00810020
C         THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00820020
C     FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978.                 00830020
C                                                                       00840020
C         SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO -             00850020
C                                                                       00860020
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00870020
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00880020
C                          BUILDING 225  RM A266                        00890020
C                         GAITHERSBURG, MD  20899                       00900020
C      **********************************************************       00910020
C                                                                       00920020
C                                                                       00930020
C                                                                       00940020
C     INITIALIZATION SECTION                                            00950020
C                                                                       00960020
C     INITIALIZE CONSTANTS                                              00970020
C      **************                                                   00980020
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00990020
      I01 = 5                                                           01000020
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             01010020
      I02 = 6                                                           01020020
C     SYSTEM ENVIRONMENT SECTION                                        01030020
C                                                                       01040020
CX010    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 01050020
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      01060020
C     (UNIT NUMBER FOR CARD READER).                                    01070020
CX011    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 01080020
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01090020
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         01100020
C                                                                       01110020
CX020    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 01120020
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      01130020
C     (UNIT NUMBER FOR PRINTER).                                        01140020
CX021    THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 01150020
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01160020
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         01170020
C                                                                       01180020
      IVPASS=0                                                          01190020
      IVFAIL=0                                                          01200020
      IVDELE=0                                                          01210020
      ICZERO=0                                                          01220020
C                                                                       01230020
C     WRITE PAGE HEADERS                                                01240020
      WRITE (I02,90000)                                                 01250020
      WRITE (I02,90001)                                                 01260020
      WRITE (I02,90002)                                                 01270020
      WRITE (I02, 90002)                                                01280020
      WRITE (I02,90003)                                                 01290020
      WRITE (I02,90002)                                                 01300020
      WRITE (I02,90004)                                                 01310020
      WRITE (I02,90002)                                                 01320020
      WRITE (I02,90011)                                                 01330020
      WRITE (I02,90002)                                                 01340020
      WRITE (I02,90002)                                                 01350020
      WRITE (I02,90005)                                                 01360020
      WRITE (I02,90006)                                                 01370020
      WRITE (I02,90002)                                                 01380020
      IVTNUM = 553                                                      01390020
C                                                                       01400020
C      ****  TEST 553  ****                                             01410020
C     TEST 553  -  THE VALUE OF THE INTEGER FUNCTION IS SET TO A        01420020
C         CONSTANT OF 32767 REGARDLESS OF THE VALUE OF THE ARGUEMENT    01430020
C     SUPPLIED TO THE DUMMY ARGUEMENT.  TEST OF POSITIVE INTEGER        01440020
C     CONSTANTS FOR A STATEMENT FUNCTION.                               01450020
C                                                                       01460020
C                                                                       01470020
      IF (ICZERO) 35530, 5530, 35530                                    01480020
 5530 CONTINUE                                                          01490020
      IVCOMP = IFON01(3)                                                01500020
      GO TO 45530                                                       01510020
35530 IVDELE = IVDELE + 1                                               01520020
      WRITE (I02,80003) IVTNUM                                          01530020
      IF (ICZERO) 45530, 5541, 45530                                    01540020
45530 IF ( IVCOMP - 32767 )  25530, 15530, 25530                        01550020
15530 IVPASS = IVPASS + 1                                               01560020
      WRITE (I02,80001) IVTNUM                                          01570020
      GO TO 5541                                                        01580020
25530 IVFAIL = IVFAIL + 1                                               01590020
      IVCORR = 32767                                                    01600020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01610020
 5541 CONTINUE                                                          01620020
      IVTNUM = 554                                                      01630020
C                                                                       01640020
C      ****  TEST 554  ****                                             01650020
C     TEST 554  -  TEST OF THE STATEMENT FUNCTION OF TYPE LOGICAL       01660020
C         SET TO THE LOGICAL CONSTANT .TRUE. REGARDLESS OF THE          01670020
C     ARGUEMENT SUPPLIED TO THE DUMMY ARGUEMENT.                        01680020
C     A LOGICAL    IF STATEMENT IS USED IN CONJUNCTION WITH THE LOGICAL 01690020
C     STATEMENT FUNCTION.  THE TRUE PATH IS TESTED.                     01700020
C                                                                       01710020
C                                                                       01720020
      IF (ICZERO) 35540, 5540, 35540                                    01730020
 5540 CONTINUE                                                          01740020
      IVON01 = 0                                                        01750020
      IF ( LFTN01(.FALSE.) )  IVON01 = 1                                01760020
      GO TO 45540                                                       01770020
35540 IVDELE = IVDELE + 1                                               01780020
      WRITE (I02,80003) IVTNUM                                          01790020
      IF (ICZERO) 45540, 5551, 45540                                    01800020
45540 IF ( IVON01 - 1 )  25540, 15540, 25540                            01810020
15540 IVPASS = IVPASS + 1                                               01820020
      WRITE (I02,80001) IVTNUM                                          01830020
      GO TO 5551                                                        01840020
25540 IVFAIL = IVFAIL + 1                                               01850020
      IVCOMP = IVON01                                                   01860020
      IVCORR = 1                                                        01870020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          01880020
 5551 CONTINUE                                                          01890020
      IVTNUM = 555                                                      01900020
C                                                                       01910020
C      ****  TEST 555  ****                                             01920020
C     TEST 555  -  THE INTEGER STATEMENT FUNCTION IS SET TO THE VALUE   01930020
C         OF THE ARGEUMENT SUPPLIED.                                    01940020
C                                                                       01950020
C                                                                       01960020
      IF (ICZERO) 35550, 5550, 35550                                    01970020
 5550 CONTINUE                                                          01980020
      IVCOMP = IFON02 ( 32767 )                                         01990020
      GO TO 45550                                                       02000020
35550 IVDELE = IVDELE + 1                                               02010020
      WRITE (I02,80003) IVTNUM                                          02020020
      IF (ICZERO) 45550, 5561, 45550                                    02030020
45550 IF ( IVCOMP - 32767 )  25550, 15550, 25550                        02040020
15550 IVPASS = IVPASS + 1                                               02050020
      WRITE (I02,80001) IVTNUM                                          02060020
      GO TO 5561                                                        02070020
25550 IVFAIL = IVFAIL + 1                                               02080020
      IVCORR = 32767                                                    02090020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02100020
 5561 CONTINUE                                                          02110020
      IVTNUM = 556                                                      02120020
C                                                                       02130020
C      ****  TEST 556  ****                                             02140020
C     TEST 556  -  TEST OF A LOGICAL STATEMENT FUNCTION SET TO THE      02150020
C         VALUE OF THE ARGUEMENT SUPPLIED.  THE FALSE PATH OF A LOGICAL 02160020
C            IF STATEMENT IS USED IN CONJUNCTION WITH THE LOGICAL       02170020
C         STATEMENT FUNCTION.                                           02180020
C                                                                       02190020
C                                                                       02200020
      IF (ICZERO) 35560, 5560, 35560                                    02210020
 5560 CONTINUE                                                          02220020
      IVON01 = 1                                                        02230020
      IF ( LFTN02(.FALSE.) )  IVON01 = 0                                02240020
      GO TO 45560                                                       02250020
35560 IVDELE = IVDELE + 1                                               02260020
      WRITE (I02,80003) IVTNUM                                          02270020
      IF (ICZERO) 45560, 5571, 45560                                    02280020
45560 IF ( IVON01 - 1 )  25560, 15560, 25560                            02290020
15560 IVPASS = IVPASS + 1                                               02300020
      WRITE (I02,80001) IVTNUM                                          02310020
      GO TO 5571                                                        02320020
25560 IVFAIL = IVFAIL + 1                                               02330020
      IVCOMP = IVON01                                                   02340020
      IVCORR = 1                                                        02350020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02360020
 5571 CONTINUE                                                          02370020
      IVTNUM = 557                                                      02380020
C                                                                       02390020
C      ****  TEST 557  ****                                             02400020
C     TEST 557  -  THE VALUE OF AN INTEGER FUNCTION IS SET EQUAL TO     02410020
C         VALUE OF THE ARGUEMENT SUPPLIED.  THIS VALUE IS AN INTEGER    02420020
C         VARIABLE SET TO 32767.                                        02430020
C                                                                       02440020
C                                                                       02450020
      IF (ICZERO) 35570, 5570, 35570                                    02460020
 5570 CONTINUE                                                          02470020
      ICON01 = 32767                                                    02480020
      IVCOMP = IFON03 ( ICON01 )                                        02490020
      GO TO 45570                                                       02500020
35570 IVDELE = IVDELE + 1                                               02510020
      WRITE (I02,80003) IVTNUM                                          02520020
      IF (ICZERO) 45570, 5581, 45570                                    02530020
45570 IF ( IVCOMP - 32767 )  25570, 15570, 25570                        02540020
15570 IVPASS = IVPASS + 1                                               02550020
      WRITE (I02,80001) IVTNUM                                          02560020
      GO TO 5581                                                        02570020
25570 IVFAIL = IVFAIL + 1                                               02580020
      IVCORR = 32767                                                    02590020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02600020
 5581 CONTINUE                                                          02610020
      IVTNUM = 558                                                      02620020
C                                                                       02630020
C      ****  TEST 558  ****                                             02640020
C     TEST 558 -  A LOGICAL STATEMENT FUNCTION IS SET EQUAL TO THE      02650020
C         VALUE OF THE ARGUEMENT SUPPLIED.  THIS VALUE IS A LOGICAL     02660020
C     VARIABLE SET TO .TRUE.  THE TRUE PATH OF A LOGICAL IF             02670020
C         STATEMENT IS USED IN CONJUNCTION WITH THE LOGICAL STATEMENT   02680020
C         FUNCTION.                                                     02690020
C                                                                       02700020
C                                                                       02710020
      IF (ICZERO) 35580, 5580, 35580                                    02720020
 5580 CONTINUE                                                          02730020
      IVON01 = 0                                                        02740020
      LCTN03 = .TRUE.                                                   02750020
      IF ( LFTN03(LCTN03) )  IVON01 = 1                                 02760020
      GO TO 45580                                                       02770020
35580 IVDELE = IVDELE + 1                                               02780020
      WRITE (I02,80003) IVTNUM                                          02790020
      IF (ICZERO) 45580, 5591, 45580                                    02800020
45580 IF ( IVON01 - 1 )  25580, 15580, 25580                            02810020
15580 IVPASS = IVPASS + 1                                               02820020
      WRITE (I02,80001) IVTNUM                                          02830020
      GO TO 5591                                                        02840020
25580 IVFAIL = IVFAIL + 1                                               02850020
      IVCOMP = IVON01                                                   02860020
      IVCORR = 1                                                        02870020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          02880020
 5591 CONTINUE                                                          02890020
      IVTNUM = 559                                                      02900020
C                                                                       02910020
C      ****  TEST 559  ****                                             02920020
C     TEST 559  -  LIKE TEST 558 ONLY THE LOGICAL  .NOT.  IS USED       02930020
C         IN THE LOGICAL STATEMENT FUNCTION DEFINITION  THE FALSE PATH  02940020
C         OF A LOGICAL IF STATEMENT IS USED IN CONJUNCTION WITH THE     02950020
C         LOGICAL STATEMENT FUNCTION.                                   02960020
C                                                                       02970020
C                                                                       02980020
      IF (ICZERO) 35590, 5590, 35590                                    02990020
 5590 CONTINUE                                                          03000020
      IVON01 = 1                                                        03010020
      LCTN04 = .TRUE.                                                   03020020
      IF ( LFTN04(LCTN04) )  IVON01 = 0                                 03030020
      GO TO 45590                                                       03040020
35590 IVDELE = IVDELE + 1                                               03050020
      WRITE (I02,80003) IVTNUM                                          03060020
      IF (ICZERO) 45590, 5601, 45590                                    03070020
45590 IF ( IVON01 - 1 )  25590, 15590, 25590                            03080020
15590 IVPASS = IVPASS + 1                                               03090020
      WRITE (I02,80001) IVTNUM                                          03100020
      GO TO 5601                                                        03110020
25590 IVFAIL = IVFAIL + 1                                               03120020
      IVCOMP = IVON01                                                   03130020
      IVCORR = 1                                                        03140020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03150020
 5601 CONTINUE                                                          03160020
      IVTNUM = 560                                                      03170020
C                                                                       03180020
C      ****  TEST 560  ****                                             03190020
C     TEST 560  -  INTEGER EXPONIENTIATION USED IN AN INTEGER           03200020
C         STATEMENT FUNCTION.                                           03210020
C                                                                       03220020
C                                                                       03230020
      IF (ICZERO) 35600, 5600, 35600                                    03240020
 5600 CONTINUE                                                          03250020
      ICON04 = 3                                                        03260020
      IVCOMP = IFON04(ICON04)                                           03270020
      GO TO 45600                                                       03280020
35600 IVDELE = IVDELE + 1                                               03290020
      WRITE (I02,80003) IVTNUM                                          03300020
      IF (ICZERO) 45600, 5611, 45600                                    03310020
45600 IF ( IVCOMP - 9 )  25600, 15600, 25600                            03320020
15600 IVPASS = IVPASS + 1                                               03330020
      WRITE (I02,80001) IVTNUM                                          03340020
      GO TO 5611                                                        03350020
25600 IVFAIL = IVFAIL + 1                                               03360020
      IVCORR = 9                                                        03370020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03380020
 5611 CONTINUE                                                          03390020
      IVTNUM = 561                                                      03400020
C                                                                       03410020
C      ****  TEST 561  ****                                             03420020
C     TEST 561  -  TEST OF INTEGER ADDITION USING TWO (2) DUMMY         03430020
C         ARGUEMENTS.                                                   03440020
C                                                                       03450020
C                                                                       03460020
      IF (ICZERO) 35610, 5610, 35610                                    03470020
 5610 CONTINUE                                                          03480020
      ICON05 = 9                                                        03490020
      ICON06 = 16                                                       03500020
      IVCOMP = IFON05(ICON05, ICON06)                                   03510020
      GO TO 45610                                                       03520020
35610 IVDELE = IVDELE + 1                                               03530020
      WRITE (I02,80003) IVTNUM                                          03540020
      IF (ICZERO) 45610, 5621, 45610                                    03550020
45610 IF ( IVCOMP - 25 )  25610, 15610, 25610                           03560020
15610 IVPASS = IVPASS + 1                                               03570020
      WRITE (I02,80001) IVTNUM                                          03580020
      GO TO 5621                                                        03590020
25610 IVFAIL = IVFAIL + 1                                               03600020
      IVCORR = 25                                                       03610020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03620020
 5621 CONTINUE                                                          03630020
      IVTNUM = 562                                                      03640020
C                                                                       03650020
C      ****  TEST 562  ****                                             03660020
C     TEST 562  -  THIS TEST IS THE SOLUTION OF A RIGHT TRIANGLE        03670020
C         USING INTEGER STATEMENT FUNCTIONS WHICH REFERENCE THE         03680020
C         INTRINSIC FUNCTIONS  SQRT  AND  FLOAT.  THIS IS A 3-4-5       03690020
C         RIGHT TRIANGLE.                                               03700020
C                                                                       03710020
C                                                                       03720020
      IF (ICZERO) 35620, 5620, 35620                                    03730020
 5620 CONTINUE                                                          03740020
      ICON07 = 3                                                        03750020
      ICON08 = 4                                                        03760020
      IVCOMP = IFON06(ICON07, ICON08)                                   03770020
      GO TO 45620                                                       03780020
35620 IVDELE = IVDELE + 1                                               03790020
      WRITE (I02,80003) IVTNUM                                          03800020
      IF (ICZERO) 45620, 5631, 45620                                    03810020
45620 IF ( IVCOMP - 5 )  5622, 15620, 5622                              03820020
 5622 IF ( IVCOMP - 4 ) 25620, 15620, 25620                             03830020
15620 IVPASS = IVPASS + 1                                               03840020
      WRITE (I02,80001) IVTNUM                                          03850020
      GO TO 5631                                                        03860020
25620 IVFAIL = IVFAIL + 1                                               03870020
      IVCORR = 5                                                        03880020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          03890020
 5631 CONTINUE                                                          03900020
      IVTNUM = 563                                                      03910020
C                                                                       03920020
C      ****  TEST 563  ****                                             03930020
C     TEST 563  -  SOLUTION OF A 3-4-5 RIGHT TRIANGLE LIKE TEST 562     03940020
C         EXCEPT THAT BOTH INTRINSIC AND PREVIOUSLY DEFINED STATEMENT   03950020
C         FUNCTIONS ARE USED.                                           03960020
C                                                                       03970020
C                                                                       03980020
      IF (ICZERO) 35630, 5630, 35630                                    03990020
 5630 CONTINUE                                                          04000020
      ICON09 = 3                                                        04010020
      ICON10 = 4                                                        04020020
      IVCOMP = IFON08(ICON09, ICON10)                                   04030020
      GO TO 45630                                                       04040020
35630 IVDELE = IVDELE + 1                                               04050020
      WRITE (I02,80003) IVTNUM                                          04060020
      IF (ICZERO) 45630, 5641, 45630                                    04070020
45630 IF ( IVCOMP - 5 )   5632, 15630, 5632                             04080020
 5632 IF ( IVCOMP - 4 )  25630, 15630, 25630                            04090020
15630 IVPASS = IVPASS + 1                                               04100020
      WRITE (I02,80001) IVTNUM                                          04110020
      GO TO 5641                                                        04120020
25630 IVFAIL = IVFAIL + 1                                               04130020
      IVCORR = 5                                                        04140020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04150020
 5641 CONTINUE                                                          04160020
      IVTNUM = 564                                                      04170020
C                                                                       04180020
C      ****  TEST 564  ****                                             04190020
C     TEST 564  -  USE  OF ARRAY ELEMENTS IN AN INTEGER STATEMENT       04200020
C         FUNCTION WHICH USES THE OPERATIONS OF + - * /  .              04210020
C                                                                       04220020
C                                                                       04230020
      IF (ICZERO) 35640, 5640, 35640                                    04240020
 5640 CONTINUE                                                          04250020
      IADN11(1) = 2                                                     04260020
      IADN11(2) = 2                                                     04270020
      IVCOMP = IFON09( IADN11(1), IADN11(2) )                           04280020
      GO TO 45640                                                       04290020
35640 IVDELE = IVDELE + 1                                               04300020
      WRITE (I02,80003) IVTNUM                                          04310020
      IF (ICZERO) 45640, 5651, 45640                                    04320020
45640 IF ( IVCOMP - 1 )  25640, 15640, 25640                            04330020
15640 IVPASS = IVPASS + 1                                               04340020
      WRITE (I02,80001) IVTNUM                                          04350020
      GO TO 5651                                                        04360020
25640 IVFAIL = IVFAIL + 1                                               04370020
      IVCORR = 1                                                        04380020
      WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR                          04390020
 5651 CONTINUE                                                          04400020
C                                                                       04410020
C     WRITE PAGE FOOTINGS AND RUN SUMMARIES                             04420020
99999 CONTINUE                                                          04430020
      WRITE (I02,90002)                                                 04440020
      WRITE (I02,90006)                                                 04450020
      WRITE (I02,90002)                                                 04460020
      WRITE (I02,90002)                                                 04470020
      WRITE (I02,90007)                                                 04480020
      WRITE (I02,90002)                                                 04490020
      WRITE (I02,90008)  IVFAIL                                         04500020
      WRITE (I02,90009) IVPASS                                          04510020
      WRITE (I02,90010) IVDELE                                          04520020
C                                                                       04530020
C                                                                       04540020
C     TERMINATE ROUTINE EXECUTION                                       04550020
      STOP                                                              04560020
C                                                                       04570020
C     FORMAT STATEMENTS FOR PAGE HEADERS                                04580020
90000 FORMAT ("1")                                                      04590020
90002 FORMAT (" ")                                                      04600020
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            04610020
90003 FORMAT (" ",21X,"VERSION 2.1" )                                   04620020
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )        04630020
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 04640020
90006 FORMAT (" ",5X,"----------------------------------------------" ) 04650020
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             04660020
C                                                                       04670020
C     FORMAT STATEMENTS FOR RUN SUMMARIES                               04680020
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" )                        04690020
90009 FORMAT (" ",15X,I5," TESTS PASSED" )                              04700020
90010 FORMAT (" ",15X,I5," TESTS DELETED" )                             04710020
C                                                                       04720020
C     FORMAT STATEMENTS FOR TEST RESULTS                                04730020
80001 FORMAT (" ",4X,I5,7X,"PASS")                                      04740020
80002 FORMAT (" ",4X,I5,7X,"FAIL")                                      04750020
80003 FORMAT (" ",4X,I5,7X,"DELETED")                                   04760020
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         04770020
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    04780020
C                                                                       04790020
90007 FORMAT (" ",20X,"END OF PROGRAM FM020" )                          04800020
      END                                                               04810020