PROGRAM FM701 C C THIS ROUTINE TESTS ARRAY DECLARATORS WHERE DIMENSION ANS REF. C BOUND EXPRESSIONS MAY CONTAIN CONSTANTS, 5.1.1.2 C SYMBOLIC NAMES OF CONSTANTS, OR VARIABLES 5.1.1 C OF TYPE INTEGER. C C THIS ROUTINE USES ROUTINES 602 THROUGH 609 AS SUBROUTINES. C 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 I2D001(3,5), I2D002(2,4), I2D003(5,2) PARAMETER (IPN001=1, IPN002=-1, IPN003=4) DIMENSION I2N004(IPN001:2,3), I2N005(2,-1:IPN001), 1 I2N006(IPN002:IPN001,1:IPN003) DIMENSION I2N007(+5:7,+1:2), I2N008(0:2,2), I2N009(1:3,-1:1), 1 I2N010(4,2), I2N011(2*2+1:7,1:2) DIMENSION I2N012(1:+2,2:+4), I2N013(-2:0,2), I2D014(1:3,-3:-1), 1 I2N015(1:2*2+1,1:2), I2N016(2,6/3-1:2*5-7) CHARACTER*4 CVCOMP, CVCORR CHARACTER*4 C2N001(0:5,1:6), C2D002(2,1:3), C2N003(-2:1,3:10), 1 C2D004(1:2,5:7), C1N005(+1:6),C3D006(1:2,2,5:7) DATA I2D001 / 12*0, -47, 2*0 / DATA I2D002 / 6*0, 5, 0 / DATA I2D003 / 6, 8*0, -11 / DATA I2N004 / -4, 5*4 / DATA I2N005 / -5, 5*5 / DATA I2N006 / 6*6, -6, 5*6 / DATA I2N007 / 3*7, -7, 2*7 / DATA I2N008 / -8, 5*8 / DATA I2N009 / 2*9, -9, 6*9 / DATA I2N010 / -10, 7*10 / DATA I2N011 / 3*11, -11, 2*11 / DATA I2N012 / 7, 5*-7 / DATA I2N013 / 8, 5*-8 / DATA I2D014 / 9, 8*-9 / DATA I2N015 / 9*-10, 10 / DATA I2N016 / 11, 4*-11, -10 / DATA C2N001 / 'C001', 35*' ' / DATA C2D002 / 5*' ', 'C002' / DATA C2N003 / 'C003', 31*' ' / DATA C2D004 / 'C004', 5*' ' / DATA C1N005 / 'C005', 5*' ' / DATA C3D006 / 'C006', 11*' ' / 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='FM701' IVTOTL = 35 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 C TESTS 1-3 - LOWER AND/OR UPPER BOUNDS ARE ARITHMETIC EXPRESSIONS C OF TYPE INTEGER, USING VARIABLES C C CT001* TEST 001 **** FCVS PROGRAM 701 **** C C TEST 001 LOWER BOUND C IVTNUM = 1 IVCORR = -47 CALL SN702(1,1,2,6,I2D001,I2D002,I2D003,IVCOMP) 40010 IF (IVCOMP + 47) 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 701 **** C C TEST 002 UPPER BOUND C IVTNUM = 2 IVCORR = 5 CALL SN702(2,1,2,6,I2D001,I2D002,I2D003,IVCOMP) 40020 IF (IVCOMP - 5) 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 701 **** C C TEST 003 BOTH LOWER AND UPPER BOUNDS C IVTNUM = 3 IVCORR = 17 CALL SN702(3,1,2,6,I2D001,I2D002,I2D003,IVCOMP) 40030 IF (IVCOMP - 17) 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 C TESTS 4-6 - LOWER AND/OR UPPER BOUNDS ARE SYMBOLIC NAMES C OF INTEGER CONSTANTS C C CT004* TEST 004 **** FCVS PROGRAM 701 **** C C TEST 004 LOWER BOUND C IVTNUM = 4 IVCOMP = 0 IVCORR = -4 IVCOMP = I2N004(1,1) 40040 IF (IVCOMP + 4) 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 701 **** C C TEST 005 UPPER BOUND C IVTNUM = 5 IVCOMP = 0 IVCORR = -5 IVCOMP = I2N005(1,-1) 40050 IF (IVCOMP + 5) 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 701 **** C C TEST 006 BOTH UPPER AND LOWER BOUNDS C IVTNUM = 6 IVCOMP = 0 IVCORR = -6 IVCOMP = I2N006(-1,3) 40060 IF (IVCOMP + 6) 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 701 **** C C TEST 007 LOWER BOUND POSITIVE C IVTNUM = 7 IVCOMP = 0 IVCORR = -7 IVCOMP = I2N007(5,2) 40070 IF (IVCOMP + 7) 20070, 10070, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C CT008* TEST 008 **** FCVS PROGRAM 701 **** C C TEST 008 LOWER BOUND ZERO C IVTNUM = 8 IVCOMP = 0 IVCORR = -8 IVCOMP = I2N008(0,1) 40080 IF (IVCOMP + 8) 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 CT009* TEST 009 **** FCVS PROGRAM 701 **** C C TEST 009 LOWER BOUND NEGATIVE C IVTNUM = 9 IVCOMP = 0 IVCORR = -9 IVCOMP = I2N009(3,-1) 40090 IF (IVCOMP + 9) 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 701 **** C C TEST 010 LOWER BOUND OMITTED C IVTNUM = 10 IVCOMP = 0 IVCORR = -10 IVCOMP = I2N010(1,1) 40100 IF (IVCOMP + 10) 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 701 **** C C TEST 011 LOWER BOUND IS AN INTEGER EXPRESSION C IVTNUM = 11 IVCOMP = 0 IVCORR = -11 IVCOMP = I2N011(5,2) 40110 IF (IVCOMP + 11) 20110, 10110, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C CT012* TEST 012 **** FCVS PROGRAM 701 **** C C TEST 012 UPPER BOUND POSITIVE C IVTNUM = 12 IVCOMP = 0 IVCORR = 7 IVCOMP = I2N012(1,2) 40120 IF (IVCOMP - 7) 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 CT013* TEST 013 **** FCVS PROGRAM 701 **** C C TEST 013 UPPER BOUND ZERO C IVTNUM = 13 IVCOMP = 0 IVCORR = 8 IVCOMP = I2N013(-2,1) 40130 IF (IVCOMP - 8) 20130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 701 **** C C TEST 014 UPPER BOUND NEGATIVE C IVTNUM = 14 IVCOMP = 0 IVCORR = 9 IVCOMP = I2D014(1,-3) 40140 IF (IVCOMP - 9) 20140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C CT015* TEST 015 **** FCVS PROGRAM 701 **** C C TEST 015 UPPER BOUND IS INTEGER EXPRESSION C IVTNUM = 15 IVCOMP = 0 IVCORR = 10 IVCOMP = I2N015(5,2) 40150 IF (IVCOMP - 10) 20150, 10150, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C CT016* TEST 016 **** FCVS PROGRAM 701 **** C C TEST 016 UPPER BOUNDS ARE INTEGER EXPRESSIONS C IVTNUM = 16 IVCOMP = 0 IVCORR = -110 IVCOMP = I2N016(1,1)*I2N016(2,3) 40160 IF (IVCOMP + 110) 20160, 10160, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C CT017* TEST 017 **** FCVS PROGRAM 701 **** C C TEST 017 ZERO AS A DIMENSION C IVTNUM = 17 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C001' CVCOMP = C2N001(0,1) IF (CVCOMP .EQ. 'C001') IVCOMP = 1 IF (IVCOMP - 1) 20170, 10170, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0171 CONTINUE C CT018* TEST 018 **** FCVS PROGRAM 701 **** C C TEST 018 UPPER DIMENSION UNDEFINED IN THE SUBROUTINE C IVTNUM = 18 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C002' CALL SN703(1,1,2,C2D002,C2D004,CVCOMP) IF (CVCOMP .EQ. 'C002') IVCOMP = 1 IF (IVCOMP - 1) 20180, 10180, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0181 CONTINUE C CT019* TEST 019 **** FCVS PROGRAM 701 **** C C TEST 019 NEGATIVE DIMENSION C IVTNUM = 19 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C003' CVCOMP = C2N003(-2,3) IF (CVCOMP .EQ. 'C003') IVCOMP = 1 IF (IVCOMP - 1) 20190, 10190, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0191 CONTINUE C CT020* TEST 020 **** FCVS PROGRAM 701 **** C C TEST 020 VARIABLE DIMENSION C IVTNUM = 20 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C004' CALL SN703(2,1,2,C2D002,C2D004,CVCOMP) IF (CVCOMP .EQ. 'C004') IVCOMP = 1 IF (IVCOMP - 1) 20200, 10200, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0201 CONTINUE C CT021* TEST 021 **** FCVS PROGRAM 701 **** C C TEST 021 POSITIVE DIMENSION C IVTNUM = 21 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C005' CVCOMP = C1N005(1) IF (CVCOMP .EQ. 'C005') IVCOMP = 1 IF (IVCOMP - 1) 20210, 10210, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0211 CONTINUE C C TESTS 22-25 - MIXED DIMENSION BOUNDS WITH VARIABLE NUMBER OF C ELEMENTS IN EACH DIMENSION C C CT022* TEST 022 **** FCVS PROGRAM 701 **** C C IVTNUM = 22 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'C006' CALL SN704(1,1,2,5,C3D006,CVCOMP) IF (CVCOMP .EQ. 'C006') IVCOMP = 1 IF (IVCOMP - 1) 20220, 10220, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0221 CONTINUE C CT023* TEST 023 **** FCVS PROGRAM 701 **** C C IVTNUM = 23 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'IJKL' CALL SN704(2,1,2,6,C3D006,CVCOMP) IF (CVCOMP .EQ. 'IJKL') IVCOMP = 1 IF (IVCOMP - 1) 20230, 10230, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0231 CONTINUE C CT024* TEST 024 **** FCVS PROGRAM 701 **** C C IVTNUM = 24 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'EFGH' CALL SN704(3,1,1,5,C3D006,CVCOMP) IF (CVCOMP .EQ. 'EFGH') IVCOMP = 1 IF (IVCOMP - 1) 20240, 10240, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0241 CONTINUE C CT025* TEST 025 **** FCVS PROGRAM 701 **** C C IVTNUM = 25 CVCOMP = ' ' IVCOMP = 0 CVCORR = 'ABCD' CALL SN704(4,2,2,6,C3D006,CVCOMP) IF (CVCOMP .EQ. 'ABCD') IVCOMP = 1 IF (IVCOMP - 1) 20250, 10250, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 0251 CONTINUE C C TESTS 26-28 - LOWER BOUND IS AN EXPRESSION INVOLVING C ARITHMETIC OPERATORS C C CT026* TEST 026 **** FCVS PROGRAM 701 **** C C IVTNUM = 26 IVCORR = -47 CALL SN705(1,2,-1,1,I2D001,I2D002,I2D003,IVCOMP) 40260 IF (IVCOMP + 47) 20260, 10260, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C CT027* TEST 027 **** FCVS PROGRAM 701 **** C C IVTNUM = 27 IVCORR = 5 CALL SN705(2,2,-1,1,I2D001,I2D002,I2D003,IVCOMP) 40270 IF (IVCOMP - 5) 20270, 10270, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C CT028* TEST 028 **** FCVS PROGRAM 701 **** C C IVTNUM = 28 IVCORR = 17 CALL SN705(3,2,-1,1,I2D001,I2D002,I2D003,IVCOMP) 40280 IF (IVCOMP - 17) 20280, 10280, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C TESTS 29-31 - UPPER BOUND IS AN EXPRESSION INVOLVING C ARITHMETIC OPERATORS C C CT029* TEST 029 **** FCVS PROGRAM 701 **** C C IVTNUM = 29 IVCORR = -47 CALL SN706(1,4,0,3,I2D001,I2D002,I2D003,IVCOMP) 40290 IF (IVCOMP + 47) 20290, 10290, 20290 10290 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20290 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C CT030* TEST 030 **** FCVS PROGRAM 701 **** C C IVTNUM = 30 IVCORR = 5 CALL SN706(2,4,0,3,I2D001,I2D002,I2D003,IVCOMP) 40300 IF (IVCOMP - 5) 20300, 10300, 20300 10300 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0301 20300 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0301 CONTINUE C CT031* TEST 031 **** FCVS PROGRAM 701 **** C C IVTNUM = 31 IVCORR = 17 CALL SN706(3,4,0,3,I2D001,I2D002,I2D003,IVCOMP) 40310 IF (IVCOMP - 17) 20310, 10310, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0311 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0311 CONTINUE C CT032* TEST 032 **** FCVS PROGRAM 701 **** C C TEST 032 "/" IN LOWER BOUND C IVTNUM = 32 IVCORR = -47 CALL SN707(1,3,2,I2D001,I2D002,IVCOMP) 40320 IF (IVCOMP + 47) 20320, 10320, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C CT033* TEST 033 **** FCVS PROGRAM 701 **** C C TEST 033 "**" IN UPPER BOUND C IVTNUM = 33 IVCORR = 5 CALL SN707(2,3,2,I2D001,I2D002,IVCOMP) 40330 IF (IVCOMP - 5) 20330, 10330, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C TESTS 34-35 - UPPER AND LOWER BOUNDS WITH ARITHMETIC OPERATORS C IN EXPRESSION C C CT034* TEST 034 **** FCVS PROGRAM 701 **** C C IVTNUM = 34 IVCORR = -47 CALL SN708(3,-2,2,I2D001,IVCOMP) 40340 IF (IVCOMP + 47) 20340, 10340, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C CT035* TEST 035 **** FCVS PROGRAM 701 **** C C IVTNUM = 35 IVCORR = 9 CALL SN709(-1,-2,1,I2D014,IVCOMP) 40350 IF (IVCOMP - 9) 20350, 10350, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 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,5HFM701) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM701) 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 ********************************** END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS DIMENSION BOUND EXPRESSIONS C CONTAINING VARIABLES OF TYPE INTEGER. C SUBROUTINE SN702(IVD001,IVD002,IVD003,IVD004,I2D001,I2D002,I2D003, 1 IVD005) C DIMENSION I2D001(IVD002:3,1:5), I2D002(2,1:2*IVD003), 1 I2D003(IVD004/3 - 1 : IVD002 + 4, 1:2) C IF (IVD001 - 2) 70010, 70020, 70030 70010 IVD005 = I2D001(1,5) RETURN 70020 IVD005 = I2D002(1,4) RETURN 70030 IVD005 = I2D003(1,1) - I2D003(5,2) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ASSUMED-SIZE ARRAY DECLARATORS C AND ADJUSTABLE ARRAY DECLARATORS. C SUBROUTINE SN703(IVD001,IVD002,IVD003,C2D001,C2D002,CVD001) C CHARACTER*4 CVD001, C2D001(2,1:*), C2D002(IVD002:IVD003,5:7) C IF (IVD001 - 1) 70010, 70010, 70020 70010 CVD001 = C2D001(2,3) RETURN 70020 CVD001 = C2D002(1,5) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ADJUSTABLE ARRAY DECLARATORS. C SUBROUTINE SN704(IVD001,IVD002,IVD003,IVD004,C3D001,CVD001) C CHARACTER*4 CVD001, C3D001(IVD002:IVD003,2,IVD004:7) C IF (IVD001 - 2) 70010, 70020, 70030 70010 CVD001 = C3D001(1,1,5) RETURN 70020 C3D001(1,2,6) = 'IJKL' CVD001 = C3D001(1,2,6) RETURN 70030 IF (IVD001 - 3) 70040, 70040, 70050 70040 C3D001(1,1,5) = 'EFGH' CVD001 = C3D001(1,1,5) RETURN 70050 C3D001(2,2,6) = 'ABCD' CVD001 = C3D001(2,2,6) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE THE LOWER BOUNDS C CONTAIN ARITHMETIC EXPRESSIONS OF TYPE C INTEGER. C SUBROUTINE SN705(IVD001,IVD002,IVD003,IVD004,I2D001,I2D002,I2D003, 1 IVD005) C DIMENSION I2D001(IVD002-1:3,1:5),I2D002(IVD003+2:2,1:4), 1 I2D003(2*IVD004-1:5,2) C IF (IVD001 - 2) 70010, 70020, 70030 70010 IVD005 = I2D001(1,5) RETURN 70020 IVD005 = I2D002(1,4) RETURN 70030 IVD005 = I2D003(1,1) - I2D003(5,2) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE THE UPPER BOUNDS C CONTAIN ARITHMETIC EXPRESSIONS OF TYPE C INTEGER. C SUBROUTINE SN706(IVD001,IVD002,IVD003,IVD004,I2D001,I2D002,I2D003, 1 IVD005) C DIMENSION I2D001(1:IVD002-1,1:5),I2D002(1:IVD003+2,1:4), 1 I2D003(1:2*IVD004-1,2) C IF (IVD001 - 2) 70010, 70020, 70030 70010 IVD005 = I2D001(1,5) RETURN 70020 IVD005 = I2D002(1,4) RETURN 70030 IVD005 = I2D003(1,1) - I2D003(5,2) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE BOUND EXPRESSIONS C MAY CONTAIN DIVISION OPERATORS OR C EXPONENTIATION OPERATORS. C SUBROUTINE SN707(IVD001,IVD002,IVD003,I2D001,I2D002,IVD004) C DIMENSION I2D001(IVD002/3:3,1:5),I2D002(1:2,1:IVD003**2) C IF (IVD001 - 1) 70010, 70010, 70020 70010 IVD004 = I2D001(1,5) RETURN 70020 IVD004 = I2D002(1,4) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE BOTH THE LOWER C AND UPPER BOUNDS CONTAIN ARITHMETIC C EXPRESSIONS OF TYPE INTEGER. C SUBROUTINE SN708(IVD001,IVD002,IVD003,I2D001,IVD004) C DIMENSION I2D001(IVD001/3:IVD001,IVD002+3 : 4*(2*IVD003-1)/3 + 1) C IVD004 = I2D001(1,5) RETURN END C THIS SUBROUTINE IS TO BE RUN WITH ROUTINE 701. C C THIS SUBROUTINE TESTS ARRAY DECLARATORS WHERE THE BOUND C EXPRESSIONS CONTAIN SYMBOLIC NAMES C OF CONSTANTS OR VARIABLES OF TYPE C INTEGER. C SUBROUTINE SN709(IVD001,IVD002,IVD003,I2D001,IVD005) C PARAMETER (IPN001=-3) DIMENSION I2D001(IPN001+4:(2*IVD003 + 1),IPN001:(1-IVD001)/IVD002) C IVD005 = I2D001(1,-3) RETURN END