PROGRAM FM719 C C THIS ROUTINE TESTS DO STATEMENTS USING REAL, ANS REF. C DOUBLE PRECISION, OR MIXED TYPE DO-VARIABLES. 11.10 C ALSO TESTED ARE ACTIVE AND INACTIVE 11.10.2 C DO LOOPS. 11.10.3 C C THIS ROUTINE USES FUNCTION SUBPROGRAM IF720 AND C SUBROUTINE SUBPROGRAM SN721. 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 DOUBLE PRECISION DVCOMP, DVCORR, DVN001 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 = 'FM719' IVTOTL = 14 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 719 **** C REAL DO-VARIABLE C IVTNUM = 1 RVCOMP = 0.0 RVCORR = 3.0 DO 0010 RVN001 = 1.1, 2.4, 0.5 RVCOMP = RVCOMP + 1.0 0010 CONTINUE IF (RVCOMP - 0.29998E+01) 20010, 10010, 40010 40010 IF (RVCOMP - 0.30002E+01) 10010, 10010, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0011 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0011 CONTINUE C CT002* TEST 002 **** FCVS PROGRAM 719 **** C DOUBLE PRECISION DO-VARIABLE C IVTNUM = 2 DVCOMP = 0.0D0 DVCORR = 6.0D0 DO 0020 DVN001 = 1.0D-2, 12.0D-2, 2.0D-2 DVCOMP = DVCOMP + 1.0D0 0020 CONTINUE IF (DVCOMP - 0.5999999997D+01) 20020, 10020, 40020 40020 IF (DVCOMP - 0.6000000003D+01) 10020, 10020, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0021 CONTINUE C C TESTS 3 THRU 10 TEST ACTIVE AND INACTIVE DO-LOOPS C C C CT003* TEST 003 **** FCVS PROGRAM 719 **** C RETURN IS FROM A FUNCTION BACK TO LOOP C IVTNUM = 3 IVCOMP = 0 IVCORR = 9 DO 0032 IVN001 = 1, 3 IVCOMP = IVCOMP + IF720(IVN001) 0032 CONTINUE 40030 IF (IVCOMP - 9) 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 719 **** C RETURN IS FROM A SUBROUTINE TO A STATEMENT OUTSIDE LOOP C IVTNUM = 4 IVCOMP = 0 IVCORR = -59 IVN002 = 0 DO 0042 IVN001 = 1, 5 CALL SN721(IVN002,*0043) 0042 CONTINUE 0043 IVCOMP = IVN002 - 60 40040 IF (IVCOMP + 59) 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 719 **** C RETURN IS FROM A SUBROUTINE TO A STATEMENT INSIDE LOOP C IVTNUM = 5 IVCOMP = 0 IVCORR = 1 IVN002 = 1 DO 0053 IVN001 = 1, 8 CALL SN721(IVN002,*0052) GO TO 20050 0052 IVN002 = IVN002 - 1 0053 CONTINUE IVCOMP = IVN002 40050 IF (IVCOMP - 1) 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 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT OUTSIDE LOOP C IVTNUM = 6 IVCOMP = 0 IVCORR = -34 IVN002 = -17 DO 0062 IVN001 = 1, 4 CALL EN721(IVN002,*0063) 0062 CONTINUE 0063 IVCOMP = IVN002 40060 IF (IVCOMP + 34) 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 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT INSIDE LOOP C IVTNUM = 7 IVCOMP = 0 IVCORR = 63 IVN002 = 7 DO 0073 IVN001 = 1, 3 CALL EN721(IVN002,*0072) GO TO 20070 0072 IVN002 = IVN002 + 1 0073 CONTINUE IVCOMP = IVN002 40070 IF (IVCOMP - 63) 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 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT OUTSIDE INNER LOOP OF A C NESTED DO-LOOP C IVTNUM = 8 IVCOMP = 0 IVCORR = 3 IVN003 = 0 DO 0084 IVN001 = 1, 3 IVN003 = IVN003 + 1 DO 0082 IVN002 = IVN001, 4 CALL EN722(1,*0083,*0084) 0082 CONTINUE 0083 IVCOMP = IVN003 0084 CONTINUE 40080 IF (IVCOMP - 3) 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 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT INSIDE INNER LOOP OF A C NESTED DO-LOOP C IVTNUM = 9 IVCOMP = 0 IVCORR = 12 IVN003 = 0 DO 0095 IVN001 = 1, 3 IVN003 = IVN003 + 1 DO 0093 IVN002 = IVN001, IVN001 + 1 CALL EN722(2,*0094,*0092) IVN004 = 10 0092 IVN004 = IVN002*IVN003 0093 CONTINUE 0094 IVCOMP = IVN004 0095 CONTINUE 40090 IF (IVCOMP - 12) 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 719 **** C RETURN IS FROM AN ENTRY TO A STATEMENT EITHER INSIDE OR OUTSIDE C INNER LOOP OF A NESTED DO-LOOP C IVTNUM = 10 IVCOMP = 0 IVCORR = 9 IVN003 = 0 IVN004 = 0 DO 0105 IVN001 = 1, 3 IVN003 = IVN003 + 1 IVN005 = (3 + (-1)**IVN001)/2 DO 0103 IVN002 = IVN001, IVN001 + 1 CALL EN722(IVN005,*0104,*0102) IVN004 = 10 0102 IVN004 = IVN004 + IVN002 + IVN003 0103 CONTINUE 0104 IVCOMP = IVN004 0105 CONTINUE 40100 IF (IVCOMP - 9) 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 TESTS 11 THRU 14 TEST DO STATEMENTS WITH MIXED INTEGER, REAL, C AND DOUBLE PRECISION. C C C CT011* TEST 011 **** FCVS PROGRAM 719 **** C IVTNUM = 11 IVCOMP = 0 IVCORR = 30 DO 0112 IVN001 = 6.7, 0.9325D+1 IVCOMP = IVCOMP + IVN001 0112 CONTINUE 40110 IF (IVCOMP - 30) 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 719 **** C IVTNUM = 12 IVCOMP = 0 IVCORR = -26 DVN001 = 3.54D0 DO 0122 IVN001 = -5.3, 2*(DVN001 - 8), -1.46 IVCOMP = IVCOMP + IVN001 0122 CONTINUE 40120 IF (IVCOMP + 26) 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 719 **** C IVTNUM = 13 RVCOMP = 0.0 RVCORR = 4.84E-6 IVN001 = 1 DVN001 = 2.0D-7 DO 0132 RVN001 = (IVN001 + .12)*1.0E-6, DVN001*(6 + 0.7), 6.0E-8 RVCOMP = RVCOMP + RVN001 0132 CONTINUE IF (RVCOMP - 0.48397E-05) 20130, 10130, 40130 40130 IF (RVCOMP - 0.48403E-05) 10130, 10130, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 0131 CONTINUE C CT014* TEST 014 **** FCVS PROGRAM 719 **** C IVTNUM = 14 DVCOMP = 0.0D0 DVCORR = 1.8D3 IVN001 = 1 DO 0142 DVN001 = 2.25E+2, 300*(1.65 + IVN001), 150 DVCOMP = DVCOMP + DVN001 0142 CONTINUE IF (DVCOMP - 0.1799999999D+04) 20140, 10140, 40140 40140 IF (DVCOMP - 0.1800000001D+04) 10140, 10140, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80031) IVTNUM, DVCOMP, DVCORR 0141 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,5HFM719) 90000 FORMAT (1H ,50X,20HEND OF PROGRAM FM719) 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 THIS FUNCTION IS TO BE RUN WITH ROUTINE 719. C C THIS FUNCTION IS REFERENCED IN THE RANGE OF A DO-LOOP TO TEST C LOOP CONTROL PROCESSING. FUNCTION IF720(IVN001) IF720 = 2*IVN001 - 1 RETURN END C THIS ROUTINE IS TO BE RUN WITH ROUTINE 719. C C THIS SUBROUTINE IS CALLED IN THE RANGE OF A DO-LOOP TO TEST C ALTERNATE RETURN CONTROL. SUBROUTINE SN721(IVN001,*) IVN001 = IVN001 + 1 RETURN 1 ENTRY EN721(IVN002,*) IVN002 = 2*IVN002 RETURN 1 ENTRY EN722(IVN003,*,*) RETURN IVN003 END