PROGRAM FM509
C
C     THIS ROUTINE TESTS SUBROUTINE SUBPROGRAMS AND        ANS REF.
C        FUNCTION SUBPROGRAMS WITH MULTIPLE ENTRIES.       15.6.1
C        THIS ROUTINE ALSO TESTS THE USE OF SYMBOLIC       15.7, 15.7.1
C        NAMES OF CONSTANTS, SUBSTRINGS NAMES, AND         15.9.2
C        ARRAY ELEMENT SUBSTRINGS AS ARGUMENTS.            15.9.3.2
C                                                          15.9.3.3
C     THIS ROUTINE USES THE SUBROUTINE SUBPROGRAMS SN510,
C     SN511, AND SN512, AND THE FUNCTION SUBPROGRAM RF513.
C
CBB** ********************** BBCCOMNT **********************************
C****
C****            1978 FORTRAN COMPILER VALIDATION SYSTEM
C****                          VERSION 2.0
C****
C****
C****           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO
C****                   GENERAL SERVICES ADMINISTRATION
C****                   FEDERAL SOFTWARE TESTING CENTER
C****                   5203 LEESBURG PIKE, SUITE 1100
C****                      FALLS CHURCH, VA. 22041
C****
C****                          (703) 756-6153
C****
CBE** ********************** BBCCOMNT **********************************
           IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L)
           IMPLICIT CHARACTER*27 (C)
CBB** ********************** BBCINITA **********************************
C**** SPECIFICATION STATEMENTS
C****
      CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20,
     1          ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13
CBE** ********************** BBCINITA **********************************
C
      INTEGER I2N001(2,2)
      CHARACTER CVCOMP*12,CVCORR*12,CVN001*30
      CHARACTER C1N001(6)*10
      PARAMETER (IPN001=31)
      COMMON IVC001, IVC002, IVC003
      EXTERNAL RF513
      DATA I2N001 /1, 3, 5, 7/
      DATA CVN001 /'REDORANGEYELLOWGREENBLUEVIOLET'/
      DATA C1N001 /'FIRST-AID:','SECONDRATE','THIRD-TERM',
     1             'FOURTH-DAY','FIFTHROUND','SIXTHMONTH'/
C
C
CBB** ********************** BBCINITB **********************************
C**** INITIALIZE SECTION
      DATA  ZVERS,                  ZVERSD,             ZDATE
     1      /'VERSION 2.0  ',  '82/08/02*18.33.46',  '*NO DATE*TIME'/
      DATA       ZCOMPL,             ZNAME,             ZTAPE
     1      /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/
      DATA       ZPROJ,           ZTAPED,         ZPROG
     1      /'*NO PROJECT*',   '*NO TAPE DATE',  'XXXXX'/
      DATA   REMRKS /'                               '/
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED
C**** FOR IDENTIFYING THE TEST ENVIRONMENT
C****
CZ01  ZVERS  = 'VERSION OF THE COMPILER VALIDATION SYSTEM'
CZ02  ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM'
CZ03  ZPROG  = 'PROGRAM NAME'
      ZDATE  = ' DEC. 1983       '
      ZCOMPL = ' ICL VME FORTRAN77  '
      ZPROJ  = ' LANG. CENTRE'
      ZNAME  = 'ICL                 '
      ZTAPE  = 'M999      '
      ZTAPED = '831005       '
C
      IVPASS = 0
      IVFAIL = 0
      IVDELE = 0
      IVINSP = 0
      IVTOTL = 0
      IVTOTN = 0
      ICZERO = 0
C
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.
      I01 = 05
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.
      I02 = 06
C
CX010   REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER).
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5
CX011   REPLACED BY FEXEC X-011 CONTROL CARD.  CX011 IS FOR SYSTEMS
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010.
C
CX020   REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER).
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6
CX021   REPLACED BY FEXEC X-021 CONTROL CARD.  CX021 IS FOR SYSTEMS
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020.
C
CBE** ********************** BBCINITB **********************************
           ZPROG = 'FM509'
           IVTOTL = 16
CBB** ********************** BBCHED0A **********************************
C****
C**** WRITE REPORT TITLE
C****
      WRITE (I02, 90002)
      WRITE (I02, 90006)
      WRITE (I02, 90007)
      WRITE (I02, 90008)  ZVERS, ZVERSD
      WRITE (I02, 90009)  ZPROG, ZPROG
      WRITE (I02, 90010)  ZDATE, ZCOMPL
CBE** ********************** BBCHED0A **********************************
CBB** ********************** BBCHED0B **********************************
C**** WRITE DETAIL REPORT HEADERS
C****
      WRITE (I02,90004)
      WRITE (I02,90004)
      WRITE (I02,90013)
      WRITE (I02,90014)
      WRITE (I02,90015) IVTOTL
CBE** ********************** BBCHED0B **********************************
C
CT001*  TEST 001   ****  FCVS PROGRAM 509  ****
C     SUBROUTINE WITH MULTIPLE ENTRIES
C
           IVTNUM = 1
           IVCOMP = 0
           IVCORR =    25
           IVD020=3
      CALL SN510(IVD020,IVN001)
      CALL EN851(IVN001,IVCOMP)
40010      IF (IVCOMP -    25) 20010, 10010, 20010
10010      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0011
20010      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0011      CONTINUE
C
CT002*  TEST 002   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH ONE ARGUMENT
C
           IVTNUM = 2
           IVCOMP = 0
           IVCORR =   137
      IVN001 = 37
      CALL EN852(IVN001)
      IVCOMP = IVN001
40020      IF (IVCOMP -   137) 20020, 10020, 20020
10020      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0021
20020      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0021      CONTINUE
C
CT003*  TEST 003   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH TWO ARGUMENT
C
           IVTNUM = 3
           IVCOMP = 0
           IVCORR =   -51
      CALL EN853(-9,IVCOMP)
40030      IF (IVCOMP +    51) 20030, 10030, 20030
10030      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0031
20030      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0031      CONTINUE
C
CT004*  TEST 004   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH THREE ARGUMENTS
C
           IVTNUM = 4
           IVCOMP = 0
           IVCORR =   -71
      CALL EN854(275,147,IVCOMP)
40040      IF (IVCOMP +    71) 20040, 10040, 20040
10040      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0041
20040      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0041      CONTINUE
C
CT005*  TEST 005   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH FOUR ARGUMENTS
C
           IVTNUM = 5
           IVCOMP = 0
           IVCORR =   567
      CALL EN855(12,-15,63,IVCOMP)
40050      IF (IVCOMP -   567) 20050, 10050, 20050
10050      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0051
20050      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0051      CONTINUE
C
CT006*  TEST 006   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH ARRAY AS DUMMY ARGUMENT
C
           IVTNUM = 6
           IVCOMP = 0
           IVCORR =    16
      IVN001 = 2
      CALL EN856(IVN001,I2N001,IVCOMP)
40060      IF (IVCOMP -    16) 20060, 10060, 20060
10060      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0061
20060      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0061      CONTINUE
C
CT007*  TEST 007   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH PROCEDURE AS DUMMY ARGUMENT
C
           IVTNUM = 7
           RVCOMP = 0.0
           RVCORR = 2.25
      CALL EN857(1.5,RVCOMP,RF513)
           IF (RVCOMP - 0.22498E+01) 20070, 10070, 40070
40070      IF (RVCOMP - 0.22502E+01) 10070, 10070, 20070
10070      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0071
20070      IVFAIL = IVFAIL + 1
           WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR
 0071      CONTINUE
C
CT008*  TEST 008   ****  FCVS PROGRAM 509  ****
C     ENTRY WITH ASTERISK AS DUMMY ARGUMENT
C
           IVTNUM = 8
           IVCOMP = 0
           IVCORR =    19
      IVN001 = 2
      CALL EN858(IVN001,*0082,*0083)
0082  IVCOMP = 5
      GO TO 0084
0083  IVCOMP = 19
0084  CONTINUE
40080      IF (IVCOMP -    19) 20080, 10080, 20080
10080      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0081
20080      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0081      CONTINUE
C
C     TESTS 9 AND 10 TEST ENTRY WITHOUT ARGUMENTS
C
CT009*  TEST 009   ****  FCVS PROGRAM 509  ****
C
           IVTNUM = 9
           IVCOMP = 0
           IVCORR =    88
      IVC002 = 65
      IVC003 = 23
      CALL EN859( )
      IVCOMP = IVC001
40090      IF (IVCOMP -    88) 20090, 10090, 20090
10090      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0091
20090      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0091      CONTINUE
C
CT010*  TEST 010   ****  FCVS PROGRAM 509  ****
C
           IVTNUM = 10
           IVCOMP = 0
           IVCORR =   -13
      IVC001 = 4
      IVC002 = -17
      CALL EN860
      IVCOMP = IVC003
40100      IF (IVCOMP +    13) 20100, 10100, 20100
10100      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0101
20100      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0101      CONTINUE
C
CT011*  TEST 011   ****  FCVS PROGRAM 509  ****
C     FUNCTION SUBPROGRAM WITH MULTIPLE ENTRIES
C
           IVTNUM = 11
           RVCOMP = 0.0
           RVCORR = 3.675E-3
      RVN001 = RF513(3.5E-2)
      RVCOMP = EF852(RVN001)
           IF (RVCOMP - 0.36748E-02) 20110, 10110, 40110
40110      IF (RVCOMP - 0.36752E-02) 10110, 10110, 20110
10110      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0111
20110      IVFAIL = IVFAIL + 1
           WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR
 0111      CONTINUE
C
CT012*  TEST 012   ****  FCVS PROGRAM 509  ****
C     SYMBOLIC NAME OF A CONSTANT AS AN ACTUAL ARGUMENT
C
           IVTNUM = 12
           IVCOMP = 0
           IVCORR =    34
      CALL SN510(IPN001,IVCOMP)
40120      IF (IVCOMP -    34) 20120, 10120, 20120
10120      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0121
20120      IVFAIL = IVFAIL + 1
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0121      CONTINUE
C
C     TESTS 13 AND 14 TEST THE USE OF A SUBSTRING AS AN ACTUAL ARGUMENT
C     WHICH IS ASSOCIATED WITH A DUMMY ARGUMENT THAT IS A VARIABLE
C
C
CT013*  TEST 013   ****  FCVS PROGRAM 509  ****
C
           IVTNUM = 13
           CVCOMP = ' '
           CVCORR = 'COLOR=YELLOW                  '
      CALL SN511(CVN001(10:15),CVCOMP)
           IVCOMP = 0
           IF (CVCOMP.EQ.'COLOR=YELLOW                  ') IVCOMP = 1
40130      IF (IVCOMP - 1) 20130, 10130, 20130
10130      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0131
20130      IVFAIL = IVFAIL + 1
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR
 0131      CONTINUE
C
CT014*  TEST 014   ****  FCVS PROGRAM 509  ****
C
           IVTNUM = 14
           CVCOMP = ' '
           CVCORR = 'COLOR=VIOLET                  '
      CALL SN511(CVN001(25:30),CVCOMP)
           IVCOMP = 0
           IF (CVCOMP.EQ.'COLOR=VIOLET                  ') IVCOMP = 1
40140      IF (IVCOMP - 1) 20140, 10140, 20140
10140      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0141
20140      IVFAIL = IVFAIL + 1
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR
 0141      CONTINUE
C
C     TESTS 15 AND 16 TEST THE USE OF AN ARRAY ELEMENT SUBSTRING AS AN
C     ACTUAL ARGUMENT WHICH IS ASSOCIATED WITH A DUMMY ARGUMENT THAT
C     IS AN ARRAY
C
C
CT015*  TEST 015   ****  FCVS PROGRAM 509  ****
C
           IVTNUM = 15
           CVCOMP = ' '
           CVCORR = 'RST-AID:                      '
      CALL SN512(C1N001(1)(3:10),CVCOMP)
           IVCOMP = 0
           IF (CVCOMP.EQ.'RST-AID:                      ') IVCOMP = 1
40150      IF (IVCOMP - 1) 20150, 10150, 20150
10150      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0151
20150      IVFAIL = IVFAIL + 1
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR
 0151      CONTINUE
C
CT016*  TEST 016   ****  FCVS PROGRAM 509  ****
C
           IVTNUM = 16
           CVCOMP = ' '
           CVCORR = 'IFTHROUN                      '
      CALL SN512(C1N001(5)(2:9),CVCOMP)
           IVCOMP = 0
           IF (CVCOMP.EQ.'IFTHROUN                      ') IVCOMP = 1
40160      IF (IVCOMP - 1) 20160, 10160, 20160
10160      IVPASS = IVPASS + 1
           WRITE (I02,80002) IVTNUM
           GO TO 0161
20160      IVFAIL = IVFAIL + 1
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR
 0161      CONTINUE
C
CBB** ********************** BBCSUM0  **********************************
C**** WRITE OUT TEST SUMMARY
C****
      IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP
      WRITE (I02, 90004)
      WRITE (I02, 90014)
      WRITE (I02, 90004)
      WRITE (I02, 90020) IVPASS
      WRITE (I02, 90022) IVFAIL
      WRITE (I02, 90024) IVDELE
      WRITE (I02, 90026) IVINSP
      WRITE (I02, 90028) IVTOTN, IVTOTL
CBE** ********************** BBCSUM0  **********************************
CBB** ********************** BBCFOOT0 **********************************
C**** WRITE OUT REPORT FOOTINGS
C****
      WRITE (I02,90016) ZPROG, ZPROG
      WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED
      WRITE (I02,90019)
CBE** ********************** BBCFOOT0 **********************************
90001 FORMAT (1H ,56X,5HFM509)
90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM509)
CBB** ********************** BBCFMT0A **********************************
C**** FORMATS FOR TEST DETAIL LINES
C****
80000 FORMAT (1H ,2X,I3,4X,7HDELETED,32X,A31)
80002 FORMAT (1H ,2X,I3,4X,7H PASS  ,32X,A31)
80004 FORMAT (1H ,2X,I3,4X,7HINSPECT,32X,A31)
80008 FORMAT (1H ,2X,I3,4X,7H FAIL  ,32X,A31)
80010 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,15X,10HCOMPUTED= ,
     1I6,/,1H ,15X,10HCORRECT=  ,I6)
80012 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     1E12.5,/,1H ,16X,10HCORRECT=  ,E12.5)
80018 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     1A21,/,1H ,16X,10HCORRECT=  ,A21)
80020 FORMAT (1H ,16X,10HCOMPUTED= ,A21,1X,A31)
80022 FORMAT (1H ,16X,10HCORRECT=  ,A21,1X,A31)
80024 FORMAT (1H ,16X,10HCOMPUTED= ,I6,16X,A31)
80026 FORMAT (1H ,16X,10HCORRECT=  ,I6,16X,A31)
80028 FORMAT (1H ,16X,10HCOMPUTED= ,E12.5,10X,A31)
80030 FORMAT (1H ,16X,10HCORRECT=  ,E12.5,10X,A31)
80050 FORMAT (1H ,48X,A31)
CBE** ********************** BBCFMT0A **********************************
CBB** ********************** BBCFMAT1 **********************************
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE
C****
80031 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     1D17.10,/,1H ,16X,10HCORRECT=  ,D17.10)
80033 FORMAT (1H ,16X,10HCOMPUTED= ,D17.10,10X,A31)
80035 FORMAT (1H ,16X,10HCORRECT=  ,D17.10,10X,A31)
80037 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,E12.5,2H, ,E12.5,1H),6X,A31)
80039 FORMAT (1H ,16X,10HCORRECT=  ,1H(,E12.5,2H, ,E12.5,1H),6X,A31)
80041 FORMAT (1H ,16X,10HCOMPUTED= ,1H(,F12.5,2H, ,F12.5,1H),6X,A31)
80043 FORMAT (1H ,16X,10HCORRECT=  ,1H(,F12.5,2H, ,F12.5,1H),6X,A31)
80045 FORMAT (1H ,2X,I3,4X,7H FAIL  ,/,1H ,16X,10HCOMPUTED= ,
     11H(,F12.5,2H, ,F12.5,1H)/,1H ,16X,10HCORRECT=  ,
     21H(,F12.5,2H, ,F12.5,1H))
CBE** ********************** BBCFMAT1 **********************************
CBB** ********************** BBCFMT0B **********************************
C**** FORMAT STATEMENTS FOR PAGE HEADERS
C****
90002 FORMAT (1H1)
90004 FORMAT (1H )
90006 FORMAT (1H ,20X,31HFEDERAL SOFTWARE TESTING CENTER)
90007 FORMAT (1H ,19X,34HFORTRAN COMPILER VALIDATION SYSTEM)
90008 FORMAT (1H ,21X,A13,A17)
90009 FORMAT (1H ,/,2H *,A5,6HBEGIN*,12X,15HTEST RESULTS - ,A5,/)
90010 FORMAT (1H ,8X,16HTEST DATE*TIME= ,A17,15H  -  COMPILER= ,A20)
90013 FORMAT (1H ,8H TEST   ,10HPASS/FAIL ,6X,17HDISPLAYED RESULTS,
     1       7X,7HREMARKS,24X)
90014 FORMAT (1H ,46H----------------------------------------------,
     1        33H---------------------------------)
90015 FORMAT (1H ,48X,17HTHIS PROGRAM HAS ,I3,6H TESTS,/)
C****
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS
C****
90016 FORMAT (1H ,/,2H *,A5,4HEND*,14X,14HEND OF TEST - ,A5,/)
90018 FORMAT (1H ,A13,13X,A20,7H   *   ,A10,1H/,
     1        A13)
90019 FORMAT (1H ,26HFOR OFFICIAL USE ONLY     ,35X,15HCOPYRIGHT  1982)
C****
C**** FORMAT STATEMENTS FOR RUN SUMMARY
C****
90020 FORMAT (1H ,21X,I5,13H TESTS PASSED)
90022 FORMAT (1H ,21X,I5,13H TESTS FAILED)
90024 FORMAT (1H ,21X,I5,14H TESTS DELETED)
90026 FORMAT (1H ,21X,I5,25H TESTS REQUIRE INSPECTION)
90028 FORMAT (1H ,21X,I5,4H OF ,I3,15H TESTS EXECUTED)
CBE** ********************** BBCFMT0B **********************************
      STOP
      END
C
C     THIS ROUTINE IS TO BE RUN WITH ROUTINE 509.
C
C     THIS SUBROUTINE IS CALLED IN THE MAIN PROGRAM TO TEST IF
C           MULTIPLE ENTRIES ARE PERMITTED IN A SUBROUTINE SUBPROGRAM.
C
      SUBROUTINE SN510(IVD021,IVD002)
      INTEGER I2D001(2,2)
      COMMON IVC001, IVC002, IVC003
      IVD001 = IVD021
      DO 70010 IVN001 = 1, 3
      IVD001 = IVD001 + 1
70010 CONTINUE
      IVD002 = IVD001
      RETURN
      ENTRY EN851(IVD003,IVD004)
      IVD004 = 3*IVD003 + 7
      RETURN
      ENTRY EN852(IVD005)
      IVD005 = IVD005 + 100
      RETURN
      ENTRY EN853(IVD006,IVD007)
      IVD007 = 5*(IVD006 + 2) - 16
      RETURN
      ENTRY EN854(IVD008,IVD009,IVD010)
      IVD010 = 4*(IVD008 - 2*IVD009) + 5
      RETURN
      ENTRY EN855(IVD011, IVD012, IVD013, IVD014)
      IVD014 = IVD013*(2*IVD011 + IVD012)
      RETURN
      ENTRY EN856(IVD015,I2D001,IVD016)
      IVD016 = 0
      DO 70020 IVN001 = 1, IVD015
      DO 70020 IVN002 = 1, IVD015
70020 IVD016 = IVD016 + I2D001(IVN001,IVN002)
      RETURN
      ENTRY EN857(RVD017,RVD018,RFD001)
      RVD018 = RFD001(RVD017)
      RETURN
      ENTRY EN858(IVD019,*,*)
      RETURN IVD019
      ENTRY EN859( )
      IVC001 = IVC002 + IVC003
      RETURN
      ENTRY EN860
      IVC003 = IVC001 + IVC002
      RETURN
      END
C
C
C     THIS ROUTINE IS TO BE RUN WITH ROUTINE 509.
C
C     THIS SUBROUTINE IS CALLED IN THE MAIN PROGRAM TO TEST THE USE
C              OF A SUBSTRING NAME AS AN ACTUAL ARGUMENT WHICH IS
C              ASSOCIATED WITH A DUMMY ARGUMENT THAT IS A VARIBLE
C
      SUBROUTINE SN511(CVD001,CVD002)
      CHARACTER CVD001*6, CVD002*12
      CVD002 = 'COLOR='//CVD001
      RETURN
      END
C
C     THIS ROUTINE IS TO BE RUN WIHT ROUTINE 509.
C
C     THIS SUBROUTINE IS CALLED IN THE MAIN PROGRAM TO TEST THE USE OF
C            AN ARRAY ELEMENT SUBSTRING AS AN ACTUAL ARGUMENT WHICH
C            IS ASSOCIATED WITH A DUMMY ARGUMENT THAT IS AN ARRAY.
C
      SUBROUTINE SN512(C1D001,CVD001)
      CHARACTER C1D001(6)*8,CVD001*8
      CVD001 = C1D001(1)
      RETURN
      END
C
C     THIS FUNCTION IS TO BE RUN WITH ROUTINE 509.
C
C     THIS FUNCTION IS REFERENCED IN THE MAIN PROGRAM TO TEST IF
C          MULTIPLE ENTRIES ARE PERMITTED IN A FUNCTION SUBPROGRAM.
C
      FUNCTION RF513(RVD001)
      RF513 = RVD001**2
      RETURN
      ENTRY EF852(RVD002)
      EF852 = 3*RVD002
      RETURN
      END