      PROGRAM FM710                                                     00010710
C                                                                       00020710
C     THIS ROUTINE TESTS SUBSCRIPT EXPRESSIONS AND          ANS REF.    00030710
C     CHARACTER SUBSTRINGS.                                 5.4.2, 5.4.300040710
C                                                           5.7.1, 5.7.200050710
C                                                                       00060710
C     THIS ROUTINE ASSUMES THE INTRINSIC FUNCTIONS                      00070710
C                              INT AND IABS ARE WORKING.                00080710
C                                                                       00090710
CBB** ********************** BBCCOMNT **********************************00100710
C****                                                                   00110710
C****            1978 FORTRAN COMPILER VALIDATION SYSTEM                00120710
C****                          VERSION 2.1                              00130710
C****                                                                   00140710
C****                                                                   00150710
C****           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO         00160710
C****          NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00170710
C****               SOFTWARE STANDARDS VALIDATION GROUP                 00180710
C****                      BUILDING 225  RM A266                        00190710
C****                     GAITHERSBURG, MD  20899                       00200710
C****                                                                   00210710
C****                                                                   00220710
C****                                                                   00230710
CBE** ********************** BBCCOMNT **********************************00240710
           IMPLICIT DOUBLE PRECISION (D), COMPLEX (Z), LOGICAL (L)      00250710
           IMPLICIT CHARACTER*27 (C)                                    00260710
CBB** ********************** BBCINITA **********************************00270710
C**** SPECIFICATION STATEMENTS                                          00280710
C****                                                                   00290710
      CHARACTER ZVERS*13, ZVERSD*17, ZDATE*17, ZPROG*5, ZCOMPL*20,      00300710
     1          ZNAME*20, ZTAPE*10, ZPROJ*13, REMRKS*31, ZTAPED*13      00310710
CBE** ********************** BBCINITA **********************************00320710
C                                                                       00330710
      DIMENSION I2N001(2,3), I2N002(3,5), I1N003(-1:8), I2N004(10,4)    00340710
      CHARACTER*10 CVCOMP, CVCORR, CVN001, C2N001(2,4)                  00350710
      DATA I2N001 /1,2,3,4,5,6/                                         00360710
      DATA I2N002 /11,21,31,12,22,32,13,23,33,14,24,34,15,25,35/        00370710
      DATA I1N003 /1,2,3,4,5,6,7,8,9,10/                                00380710
      DATA I2N004 / 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,                      00390710
     1               4,-2, 6,-3, 8,-4,10,-5, 2,-1,                      00400710
     2               1, 3, 5, 7, 9, 2, 4, 6, 8, 10,                     00410710
     3             -10,-9,-8,-7,-6,-5,-4,-3,-2,-1 /                     00420710
      DATA C2N001 /'11FIRSTELE','21SECONDXX','12THIRDXYZ','22FOURTHWW', 00430710
     1             '13FIFTHABC','23SIXTHIJK','14SEVENTHH','24EIGHTHUV'/ 00440710
C                                                                       00450710
C                                                                       00460710
CBB** ********************** BBCINITB **********************************00470710
C**** INITIALIZE SECTION                                                00480710
      DATA  ZVERS,                  ZVERSD,             ZDATE           00490710
     1      /'VERSION 2.1  ',  '93/10/21*21.02.00',  '*NO DATE*TIME'/   00500710
      DATA       ZCOMPL,             ZNAME,             ZTAPE           00510710
     1      /'*NONE SPECIFIED*', '*NO COMPANY NAME*', '*NO TAPE*'/      00520710
      DATA       ZPROJ,           ZTAPED,         ZPROG                 00530710
     1      /'*NO PROJECT*',   '*NO TAPE DATE',  'XXXXX'/               00540710
      DATA   REMRKS /'                               '/                 00550710
C**** THE FOLLOWING 9 COMMENT LINES (CZ01, CZ02, ...) CAN BE REPLACED   00560710
C**** FOR IDENTIFYING THE TEST ENVIRONMENT                              00570710
C****                                                                   00580710
CZ01  ZVERS  = 'VERSION OF THE COMPILER VALIDATION SYSTEM'              00590710
CZ02  ZVERSD = 'CREATION DATE/TIME OF THE COMPILER VALIDATION SYSTEM'   00600710
CZ03  ZPROG  = 'PROGRAM NAME'                                           00610710
CZ04  ZDATE  = 'DATE OF TEST'                                           00620710
CZ05  ZCOMPL = 'COMPILER IDENTIFICATION'                                00630710
CZ06  ZPROJ  = 'PROJECT NUMBER/IDENTIFICATION'                          00640710
CZ07  ZNAME  = 'NAME OF USER'                                           00650710
CZ08  ZTAPE  = 'TAPE OWNER/ID'                                          00660710
CZ09  ZTAPED = 'DATE TAPE COPIED'                                       00670710
C                                                                       00680710
      IVPASS = 0                                                        00690710
      IVFAIL = 0                                                        00700710
      IVDELE = 0                                                        00710710
      IVINSP = 0                                                        00720710
      IVTOTL = 0                                                        00730710
      IVTOTN = 0                                                        00740710
      ICZERO = 0                                                        00750710
C                                                                       00760710
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER.         00770710
      I01 = 05                                                          00780710
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER.             00790710
      I02 = 06                                                          00800710
C                                                                       00810710
CX010   REPLACED BY FEXEC X-010 CONTROL CARD (CARD-READER UNIT NUMBER). 00820710
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00830710
CX011   REPLACED BY FEXEC X-011 CONTROL CARD.  CX011 IS FOR SYSTEMS     00840710
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX010.  00850710
C                                                                       00860710
CX020   REPLACED BY FEXEC X-020 CONTROL CARD (PRINTER UNIT NUMBER).     00870710
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02= 6       00880710
CX021   REPLACED BY FEXEC X-021 CONTROL CARD.  CX021 IS FOR SYSTEMS     00890710
C     REQUIRING ADDITIONAL STATEMENTS FOR FILES ASSOCIATED WITH CX020.  00900710
C                                                                       00910710
CBE** ********************** BBCINITB **********************************00920710
           ZPROG='FM710'                                                00930710
           IVTOTL =  19                                                 00940710
CBB** ********************** BBCHED0A **********************************00950710
C****                                                                   00960710
C**** WRITE REPORT TITLE                                                00970710
C****                                                                   00980710
      WRITE (I02, 90002)                                                00990710
      WRITE (I02, 90006)                                                01000710
      WRITE (I02, 90007)                                                01010710
      WRITE (I02, 90008)  ZVERS, ZVERSD                                 01020710
      WRITE (I02, 90009)  ZPROG, ZPROG                                  01030710
      WRITE (I02, 90010)  ZDATE, ZCOMPL                                 01040710
CBE** ********************** BBCHED0A **********************************01050710
CBB** ********************** BBCHED0B **********************************01060710
C**** WRITE DETAIL REPORT HEADERS                                       01070710
C****                                                                   01080710
      WRITE (I02,90004)                                                 01090710
      WRITE (I02,90004)                                                 01100710
      WRITE (I02,90013)                                                 01110710
      WRITE (I02,90014)                                                 01120710
      WRITE (I02,90015) IVTOTL                                          01130710
CBE** ********************** BBCHED0B **********************************01140710
C                                                                       01150710
C     TESTS 1-2 - SUBSCRIPT EXPRESSION TO IDENTIFY VARIOUS              01160710
C                 ARRAY ELEMENTS                                        01170710
C                                                                       01180710
C                                                                       01190710
CT001*  TEST 001   ****  FCVS PROGRAM 710  ****                         01200710
C                                                                       01210710
C     TEST 001 ARRAY ELEMENT REFERENCE                                  01220710
C                                                                       01230710
           IVTNUM =   1                                                 01240710
           IVCOMP = 0                                                   01250710
           IVCORR = 34                                                  01260710
      IVCOMP = I2N002(I2N001(1,2),I2N001(2,3)/2 + 1)                    01270710
40010      IF (IVCOMP - 34) 20010, 10010, 20010                         01280710
10010      IVPASS = IVPASS + 1                                          01290710
           WRITE (I02,80002) IVTNUM                                     01300710
           GO TO 0011                                                   01310710
20010      IVFAIL = IVFAIL + 1                                          01320710
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     01330710
 0011      CONTINUE                                                     01340710
C                                                                       01350710
CT002*  TEST 002   ****  FCVS PROGRAM 710  ****                         01360710
C                                                                       01370710
C     TEST 002 FUNCTION REFERENCE                                       01380710
C                                                                       01390710
           IVTNUM =   2                                                 01400710
           RVD001 = 2.64                                                01410710
           IVCOMP = 0                                                   01420710
           IVCORR = 25                                                  01430710
      IVCOMP = I2N002(INT(RVD001), 19 - IABS(-7)*2)                     01440710
40020      IF (IVCOMP - 25) 20020, 10020, 20020                         01450710
10020      IVPASS = IVPASS + 1                                          01460710
           WRITE (I02,80002) IVTNUM                                     01470710
           GO TO 0021                                                   01480710
20020      IVFAIL = IVFAIL + 1                                          01490710
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     01500710
 0021      CONTINUE                                                     01510710
C                                                                       01520710
C     TESTS 3-7 - TEST SUBSCRIPT VALUE IN IDENTIFYING                   01530710
C                 ARRAY ELEMENTS                                        01540710
C                                                                       01550710
CT003*  TEST 003   ****  FCVS PROGRAM 710  ****                         01560710
C                                                                       01570710
C     TEST 003 RANGE                                                    01580710
C                                                                       01590710
           IVTNUM = 3                                                   01600710
           WRITE (I02, 80004) IVTNUM                                    01610710
           WRITE (I02, 80020)                                           01620710
      WRITE (I02, 70030) (I1N003(IVN001), IVN001=5,8)                   01630710
70030 FORMAT (" ",26X,4I4)                                              01640710
           IVINSP = IVINSP + 1                                          01650710
           WRITE (I02, 80022)                                           01660710
           WRITE (I02, 70031)                                           01670710
70031      FORMAT (" ",26X,"   7   8   9  10" )                         01680710
C                                                                       01690710
CT004*  TEST 004   ****  FCVS PROGRAM 710  ****                         01700710
C                                                                       01710710
C     TEST 004 SINGLE ELEMENT                                           01720710
C                                                                       01730710
           IVTNUM =   4                                                 01740710
           IVCOMP = 0                                                   01750710
           IVCORR = 4                                                   01760710
      IVCOMP = I1N003(2)                                                01770710
40040      IF (IVCOMP - 4) 20040, 10040, 20040                          01780710
10040      IVPASS = IVPASS + 1                                          01790710
           WRITE (I02,80002) IVTNUM                                     01800710
           GO TO 0041                                                   01810710
20040      IVFAIL = IVFAIL + 1                                          01820710
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     01830710
 0041      CONTINUE                                                     01840710
C                                                                       01850710
CT005*  TEST 005   ****  FCVS PROGRAM 710  ****                         01860710
C                                                                       01870710
C     TEST 005 EXPRESSION                                               01880710
C                                                                       01890710
           IVTNUM =   5                                                 01900710
           IVN001 = -3                                                  01910710
           IVCOMP = 0                                                   01920710
           IVCORR = 1                                                   01930710
      IVCOMP = I1N003((IVN001+5)*3 - 7)                                 01940710
40050      IF (IVCOMP - 1) 20050, 10050, 20050                          01950710
10050      IVPASS = IVPASS + 1                                          01960710
           WRITE (I02,80002) IVTNUM                                     01970710
           GO TO 0051                                                   01980710
20050      IVFAIL = IVFAIL + 1                                          01990710
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     02000710
 0051      CONTINUE                                                     02010710
C                                                                       02020710
CT006*  TEST 006   ****  FCVS PROGRAM 710  ****                         02030710
C                                                                       02040710
C     TEST 006 31ST ELEMENT IN 2 DIMENSIONAL, 40 ELEMENT ARRAY          02050710
C                                                                       02060710
           IVTNUM =   6                                                 02070710
           IVCOMP = 0                                                   02080710
           IVCORR = -10                                                 02090710
      IVCOMP = I2N004(1,4)                                              02100710
40060      IF (IVCOMP + 10) 20060, 10060, 20060                         02110710
10060      IVPASS = IVPASS + 1                                          02120710
           WRITE (I02,80002) IVTNUM                                     02130710
           GO TO 0061                                                   02140710
20060      IVFAIL = IVFAIL + 1                                          02150710
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     02160710
 0061      CONTINUE                                                     02170710
C                                                                       02180710
CT007*  TEST 007   ****  FCVS PROGRAM 710  ****                         02190710
C                                                                       02200710
C     TEST 007 4TH ELEMENT OF FIRST ARRAY EQUAL TO                      02210710
C              11TH ELEMENT OF SECOND ARRAY                             02220710
C                                                                       02230710
           IVTNUM =   7                                                 02240710
           IVCOMP = 0                                                   02250710
           IVCORR = 1                                                   02260710
           IF (I1N003(2).EQ.I2N004(1,2)) IVCOMP = 1                     02270710
40070      IF (IVCOMP - 1) 20070, 10070, 20070                          02280710
10070      IVPASS = IVPASS + 1                                          02290710
           WRITE (I02,80002) IVTNUM                                     02300710
           GO TO 0071                                                   02310710
20070      IVFAIL = IVFAIL + 1                                          02320710
           WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                     02330710
 0071      CONTINUE                                                     02340710
C                                                                       02350710
C     TESTS 8-15 - CHARACTER SUBSTRING NAME                             02360710
C                                                                       02370710
C                                                                       02380710
CT008*  TEST 008   ****  FCVS PROGRAM 710  ****                         02390710
C                                                                       02400710
C     TEST 008 USING LEFT AND RIGHT POSITION OF SUBSTRING               02410710
C                                                                       02420710
           IVTNUM =   8                                                 02430710
           CVCOMP = ' '                                                 02440710
           IVCOMP = 0                                                   02450710
           CVN001 = 'THIS IS IT'                                        02460710
           CVCORR = 'HIS       '                                        02470710
      CVCOMP = CVN001(2:4)                                              02480710
           IF (CVCOMP .EQ. 'HIS       ') IVCOMP = 1                     02490710
           IF (IVCOMP - 1) 20080, 10080, 20080                          02500710
10080      IVPASS = IVPASS + 1                                          02510710
           WRITE (I02,80002) IVTNUM                                     02520710
           GO TO 0081                                                   02530710
20080      IVFAIL = IVFAIL + 1                                          02540710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     02550710
 0081      CONTINUE                                                     02560710
C                                                                       02570710
CT009*  TEST 009   ****  FCVS PROGRAM 710  ****                         02580710
C                                                                       02590710
C     TEST 009 LEFT POSITION OMITTED, VALUE OF 1 ASSUMED                02600710
C                                                                       02610710
           IVTNUM =   9                                                 02620710
           CVCOMP = ' '                                                 02630710
           IVCOMP = 0                                                   02640710
           CVCORR = 'THIS      '                                        02650710
      CVCOMP = CVN001(:4)                                               02660710
           IF (CVCOMP .EQ. 'THIS      ') IVCOMP = 1                     02670710
           IF (IVCOMP - 1) 20090, 10090, 20090                          02680710
10090      IVPASS = IVPASS + 1                                          02690710
           WRITE (I02,80002) IVTNUM                                     02700710
           GO TO 0091                                                   02710710
20090      IVFAIL = IVFAIL + 1                                          02720710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     02730710
 0091      CONTINUE                                                     02740710
C                                                                       02750710
CT010*  TEST 010   ****  FCVS PROGRAM 710  ****                         02760710
C                                                                       02770710
C     TEST 010 RIGHT POSITION OMITTED, RIGHT-HAND END OF STRING ASSUMED 02780710
C                                                                       02790710
           IVTNUM =  10                                                 02800710
           CVCOMP = ' '                                                 02810710
           IVCOMP = 0                                                   02820710
           CVCORR = 'S IS IT   '                                        02830710
      CVCOMP = CVN001(4:)                                               02840710
           IF (CVCOMP .EQ. 'S IS IT   ') IVCOMP = 1                     02850710
           IF (IVCOMP - 1) 20100, 10100, 20100                          02860710
10100      IVPASS = IVPASS + 1                                          02870710
           WRITE (I02,80002) IVTNUM                                     02880710
           GO TO 0101                                                   02890710
20100      IVFAIL = IVFAIL + 1                                          02900710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     02910710
 0101      CONTINUE                                                     02920710
C                                                                       02930710
CT011*  TEST 011   ****  FCVS PROGRAM 710  ****                         02940710
C                                                                       02950710
C     TEST 011 EXTRACT SUBSTRING FROM ARRAY                             02960710
C                                                                       02970710
           IVTNUM =  11                                                 02980710
           CVCOMP = ' '                                                 02990710
           IVCOMP = 0                                                   03000710
           CVCORR = '12THIR    '                                        03010710
      CVCOMP = C2N001(1,2)(1:6)                                         03020710
           IF (CVCOMP .EQ. '12THIR    ') IVCOMP = 1                     03030710
           IF (IVCOMP - 1) 20110, 10110, 20110                          03040710
10110      IVPASS = IVPASS + 1                                          03050710
           WRITE (I02,80002) IVTNUM                                     03060710
           GO TO 0111                                                   03070710
20110      IVFAIL = IVFAIL + 1                                          03080710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     03090710
 0111      CONTINUE                                                     03100710
C                                                                       03110710
CT012*  TEST 012   ****  FCVS PROGRAM 710  ****                         03120710
C                                                                       03130710
C     TEST 012 ENTIRE SUBSTRING                                         03140710
C                                                                       03150710
           IVTNUM =  12                                                 03160710
           CVCOMP = ' '                                                 03170710
           IVCOMP = 0                                                   03180710
           CVCORR = 'THIS IS IT'                                        03190710
      CVCOMP = CVN001(:)                                                03200710
           IF (CVCOMP .EQ. 'THIS IS IT') IVCOMP = 1                     03210710
           IF (IVCOMP - 1) 20120, 10120, 20120                          03220710
10120      IVPASS = IVPASS + 1                                          03230710
           WRITE (I02,80002) IVTNUM                                     03240710
           GO TO 0121                                                   03250710
20120      IVFAIL = IVFAIL + 1                                          03260710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     03270710
 0121      CONTINUE                                                     03280710
C                                                                       03290710
CT013*  TEST 013   ****  FCVS PROGRAM 710  ****                         03300710
C                                                                       03310710
C     TEST 013 ENTIRE SUBSTRING FROM ARRAY                              03320710
C                                                                       03330710
           IVTNUM =  13                                                 03340710
           CVCOMP = ' '                                                 03350710
           IVCOMP = 0                                                   03360710
           CVCORR = '23SIXTHIJK'                                        03370710
      CVCOMP = C2N001(2,3)(:)                                           03380710
           IF (CVCOMP .EQ. '23SIXTHIJK') IVCOMP = 1                     03390710
           IF (IVCOMP - 1) 20130, 10130, 20130                          03400710
10130      IVPASS = IVPASS + 1                                          03410710
           WRITE (I02,80002) IVTNUM                                     03420710
           GO TO 0131                                                   03430710
20130      IVFAIL = IVFAIL + 1                                          03440710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     03450710
 0131      CONTINUE                                                     03460710
C                                                                       03470710
CT014*  TEST 014   ****  FCVS PROGRAM 710  ****                         03480710
C                                                                       03490710
C     RIGHT POSITION OMITTED USING ARRAY                                03500710
C                                                                       03510710
           IVTNUM =  14                                                 03520710
           CVCOMP = ' '                                                 03530710
           IVCOMP = 0                                                   03540710
           CVCORR = 'EVENTHH   '                                        03550710
      CVCOMP = C2N001(1,4)(4:)                                          03560710
           IF (CVCOMP .EQ. 'EVENTHH   ') IVCOMP = 1                     03570710
           IF (IVCOMP - 1) 20140, 10140, 20140                          03580710
10140      IVPASS = IVPASS + 1                                          03590710
           WRITE (I02,80002) IVTNUM                                     03600710
           GO TO 0141                                                   03610710
20140      IVFAIL = IVFAIL + 1                                          03620710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     03630710
 0141      CONTINUE                                                     03640710
C                                                                       03650710
CT015*  TEST 015   ****  FCVS PROGRAM 710  ****                         03660710
C                                                                       03670710
C     LEFT POSITION OMITTED                                             03680710
C                                                                       03690710
           IVTNUM =  15                                                 03700710
           CVCOMP = ' '                                                 03710710
           IVCOMP = 0                                                   03720710
           CVCORR = '24EI      '                                        03730710
      CVCOMP = C2N001(2,4)(:4)                                          03740710
           IF (CVCOMP .EQ. '24EI      ') IVCOMP = 1                     03750710
           IF (IVCOMP - 1) 20150, 10150, 20150                          03760710
10150      IVPASS = IVPASS + 1                                          03770710
           WRITE (I02,80002) IVTNUM                                     03780710
           GO TO 0151                                                   03790710
20150      IVFAIL = IVFAIL + 1                                          03800710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     03810710
 0151      CONTINUE                                                     03820710
C                                                                       03830710
C     TESTS 16-19 - SUBSTRING EXPRESSION                                03840710
C                                                                       03850710
C                                                                       03860710
CT016*  TEST 016   ****  FCVS PROGRAM 710  ****                         03870710
C                                                                       03880710
C     TEST 016 ARITHMETIC EXPRESSION                                    03890710
C                                                                       03900710
           IVTNUM =  16                                                 03910710
           CVCOMP = ' '                                                 03920710
           IVCOMP = 0                                                   03930710
           CVCORR = 'HIS IS IT '                                        03940710
      CVCOMP = CVN001(2:5*2)                                            03950710
           IF (CVCOMP .EQ. 'HIS IS IT ') IVCOMP = 1                     03960710
           IF (IVCOMP - 1) 20160, 10160, 20160                          03970710
10160      IVPASS = IVPASS + 1                                          03980710
           WRITE (I02,80002) IVTNUM                                     03990710
           GO TO 0161                                                   04000710
20160      IVFAIL = IVFAIL + 1                                          04010710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     04020710
 0161      CONTINUE                                                     04030710
C                                                                       04040710
CT017*  TEST 017   ****  FCVS PROGRAM 710  ****                         04050710
C                                                                       04060710
C     TEST 017 SUBSTRING EXPRESSION IN AN ASSIGNMENT STATEMENT          04070710
C                                                                       04080710
           IVTNUM =  17                                                 04090710
           IVN001 = 5                                                   04100710
           IVN002 = 8                                                   04110710
           CVCOMP = ' '                                                 04120710
           IVCOMP = 0                                                   04130710
           CVCORR = 'THISLIKEIT'                                        04140710
      CVN001(IVN001:IVN002) = 'LIKE'                                    04150710
           CVCOMP = CVN001                                              04160710
           IF (CVCOMP .EQ. 'THISLIKEIT') IVCOMP = 1                     04170710
           IF (IVCOMP - 1) 20170, 10170, 20170                          04180710
10170      IVPASS = IVPASS + 1                                          04190710
           WRITE (I02,80002) IVTNUM                                     04200710
           GO TO 0171                                                   04210710
20170      IVFAIL = IVFAIL + 1                                          04220710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     04230710
 0171      CONTINUE                                                     04240710
C                                                                       04250710
CT018*  TEST 018   ****  FCVS PROGRAM 710  ****                         04260710
C                                                                       04270710
C     TEST 018 SUBSTRING EXPRESSION CONTAINING ARRAY ELEMENT REFERENCE  04280710
C                                                                       04290710
           IVTNUM =  18                                                 04300710
           CVCOMP = ' '                                                 04310710
           IVCOMP = 0                                                   04320710
           CVCORR = 'HISLIKE   '                                        04330710
      CVCOMP = CVN001(I2N001(2,1):I2N002(3,5)-27)                       04340710
           IF (CVCOMP .EQ. 'HISLIKE   ') IVCOMP = 1                     04350710
           IF (IVCOMP - 1) 20180, 10180, 20180                          04360710
10180      IVPASS = IVPASS + 1                                          04370710
           WRITE (I02,80002) IVTNUM                                     04380710
           GO TO 0181                                                   04390710
20180      IVFAIL = IVFAIL + 1                                          04400710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     04410710
 0181      CONTINUE                                                     04420710
C                                                                       04430710
CT019*  TEST 019   ****  FCVS PROGRAM 710  ****                         04440710
C                                                                       04450710
C     TEST 019 SUBSTRING EXPRESSION CONTAINING FUNCTION REFERENCES      04460710
C                                                                       04470710
           IVTNUM =  19                                                 04480710
           RVD001 = 1.475                                               04490710
           IVN001 = 1                                                   04500710
           CVCOMP = ' '                                                 04510710
           IVCOMP = 0                                                   04520710
           CVCORR = 'IFTHABC   '                                        04530710
      CVCOMP = C2N001(1,3)(INT(RVD001)+3 : (IVN001*5 + 7)/IABS(-6) + 8) 04540710
           IF (CVCOMP .EQ. 'IFTHABC   ') IVCOMP = 1                     04550710
           IF (IVCOMP - 1) 20190, 10190, 20190                          04560710
10190      IVPASS = IVPASS + 1                                          04570710
           WRITE (I02,80002) IVTNUM                                     04580710
           GO TO 0191                                                   04590710
20190      IVFAIL = IVFAIL + 1                                          04600710
           WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                     04610710
 0191      CONTINUE                                                     04620710
C                                                                       04630710
CBB** ********************** BBCSUM0  **********************************04640710
C**** WRITE OUT TEST SUMMARY                                            04650710
C****                                                                   04660710
      IVTOTN = IVPASS + IVFAIL + IVDELE + IVINSP                        04670710
      WRITE (I02, 90004)                                                04680710
      WRITE (I02, 90014)                                                04690710
      WRITE (I02, 90004)                                                04700710
      WRITE (I02, 90020) IVPASS                                         04710710
      WRITE (I02, 90022) IVFAIL                                         04720710
      WRITE (I02, 90024) IVDELE                                         04730710
      WRITE (I02, 90026) IVINSP                                         04740710
      WRITE (I02, 90028) IVTOTN, IVTOTL                                 04750710
CBE** ********************** BBCSUM0  **********************************04760710
CBB** ********************** BBCFOOT0 **********************************04770710
C**** WRITE OUT REPORT FOOTINGS                                         04780710
C****                                                                   04790710
      WRITE (I02,90016) ZPROG, ZPROG                                    04800710
      WRITE (I02,90018) ZPROJ, ZNAME, ZTAPE, ZTAPED                     04810710
      WRITE (I02,90019)                                                 04820710
CBE** ********************** BBCFOOT0 **********************************04830710
90001 FORMAT (" ",56X,"FM710")                                          04840710
90000 FORMAT (" ",50X,"END OF PROGRAM FM710" )                          04850710
CBB** ********************** BBCFMT0A **********************************04860710
C**** FORMATS FOR TEST DETAIL LINES                                     04870710
C****                                                                   04880710
80000 FORMAT (" ",2X,I3,4X,"DELETED",32X,A31)                           04890710
80002 FORMAT (" ",2X,I3,4X," PASS  ",32X,A31)                           04900710
80004 FORMAT (" ",2X,I3,4X,"INSPECT",32X,A31)                           04910710
80008 FORMAT (" ",2X,I3,4X," FAIL  ",32X,A31)                           04920710
80010 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",15X,"COMPUTED= " ,           04930710
     1I6,/," ",15X,"CORRECT=  " ,I6)                                    04940710
80012 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           04950710
     1E12.5,/," ",16X,"CORRECT=  " ,E12.5)                              04960710
80018 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           04970710
     1A21,/," ",16X,"CORRECT=  " ,A21)                                  04980710
80020 FORMAT (" ",16X,"COMPUTED= " ,A21,1X,A31)                         04990710
80022 FORMAT (" ",16X,"CORRECT=  " ,A21,1X,A31)                         05000710
80024 FORMAT (" ",16X,"COMPUTED= " ,I6,16X,A31)                         05010710
80026 FORMAT (" ",16X,"CORRECT=  " ,I6,16X,A31)                         05020710
80028 FORMAT (" ",16X,"COMPUTED= " ,E12.5,10X,A31)                      05030710
80030 FORMAT (" ",16X,"CORRECT=  " ,E12.5,10X,A31)                      05040710
80050 FORMAT (" ",48X,A31)                                              05050710
CBE** ********************** BBCFMT0A **********************************05060710
CBB** ********************** BBCFMAT1 **********************************05070710
C**** FORMATS FOR TEST DETAIL LINES - FULL LANGUAGE                     05080710
C****                                                                   05090710
80031 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           05100710
     1D17.10,/," ",16X,"CORRECT=  " ,D17.10)                            05110710
80033 FORMAT (" ",16X,"COMPUTED= " ,D17.10,10X,A31)                     05120710
80035 FORMAT (" ",16X,"CORRECT=  " ,D17.10,10X,A31)                     05130710
80037 FORMAT (" ",16X,"COMPUTED= " ,"(",E12.5,", ",E12.5,")",6X,A31)    05140710
80039 FORMAT (" ",16X,"CORRECT=  " ,"(",E12.5,", ",E12.5,")",6X,A31)    05150710
80041 FORMAT (" ",16X,"COMPUTED= " ,"(",F12.5,", ",F12.5,")",6X,A31)    05160710
80043 FORMAT (" ",16X,"CORRECT=  " ,"(",F12.5,", ",F12.5,")",6X,A31)    05170710
80045 FORMAT (" ",2X,I3,4X," FAIL  ",/," ",16X,"COMPUTED= " ,           05180710
     1"(",F12.5,", ",F12.5,")"/," ",16X,"CORRECT=  " ,                  05190710
     2"(",F12.5,", ",F12.5,")")                                         05200710
CBE** ********************** BBCFMAT1 **********************************05210710
CBB** ********************** BBCFMT0B **********************************05220710
C**** FORMAT STATEMENTS FOR PAGE HEADERS                                05230710
C****                                                                   05240710
90002 FORMAT ("1")                                                      05250710
90004 FORMAT (" ")                                                      05260710
90006 FORMAT (" ",20X,"NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY" )05270710
90007 FORMAT (" ",19X,"FORTRAN COMPILER VALIDATION SYSTEM" )            05280710
90008 FORMAT (" ",21X,A13,A17)                                          05290710
90009 FORMAT (" ",/," *",A5,"BEGIN*",12X,"TEST RESULTS - " ,A5,/)       05300710
90010 FORMAT (" ",8X,"TEST DATE*TIME= " ,A17,"  -  COMPILER= " ,A20)    05310710
90013 FORMAT (" "," TEST   ","PASS/FAIL " ,6X,"DISPLAYED RESULTS" ,     05320710
     1       7X,"REMARKS",24X)                                          05330710
90014 FORMAT (" ","----------------------------------------------" ,    05340710
     1        "---------------------------------" )                     05350710
90015 FORMAT (" ",48X,"THIS PROGRAM HAS " ,I3," TESTS",/)               05360710
C****                                                                   05370710
C**** FORMAT STATEMENTS FOR REPORT FOOTINGS                             05380710
C****                                                                   05390710
90016 FORMAT (" ",/," *",A5,"END*",14X,"END OF TEST - " ,A5,/)          05400710
90018 FORMAT (" ",A13,13X,A20,"   *   ",A10,"/",                        05410710
     1        A13)                                                      05420710
90019 FORMAT (" ","FOR OFFICIAL USE ONLY     " ,35X,"COPYRIGHT  1982" ) 05430710
C****                                                                   05440710
C**** FORMAT STATEMENTS FOR RUN SUMMARY                                 05450710
C****                                                                   05460710
90020 FORMAT (" ",21X,I5," TESTS PASSED" )                              05470710
90022 FORMAT (" ",21X,I5," TESTS FAILED" )                              05480710
90024 FORMAT (" ",21X,I5," TESTS DELETED" )                             05490710
90026 FORMAT (" ",21X,I5," TESTS REQUIRE INSPECTION" )                  05500710
90028 FORMAT (" ",21X,I5," OF ",I3," TESTS EXECUTED" )                  05510710
CBE** ********************** BBCFMT0B **********************************05520710
           END                                                          05530710
