C*********************************************************************** C***** FORTRAN 77 C***** FM405 C***** INTER1 - (390) C***** C*********************************************************************** C***** TESTING OF INTERNAL FILES - SUBSET REF C***** USING READ 12.2.5 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 ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 390 C***** LOGICAL AVB, BVB, CVB CHARACTER A1VK*1, A4VK*4, B1VK*1, B4VK*4, A38VK*38, B381K(4)*38 CHARACTER A5VK*5, A8VK*8, B5VK*5, B8VK*8 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 ********************************** 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 ********************************** C***** EVS = 0.001 C***** NUVI = I02 IVTOTL=15 ZPROG='FM405' 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 ********************************** C***** A38VK = '2.1 TEST 3 23.45E2 .TRUE. F ' B381K(1) = ' 23 23.345 T ENDS ' B381K(2) = ' 23.456 F 98 YOURS PROGRAMS ' B381K(3) = ' 13.1234 13.1234E0 1312.34 ' B381K(4) = ' 5.2345 56 5.2345 T TRUE 5.2345' C***** C***** HEADER FOR SEGMENT 390 C***** WRITE(NUVI,39000) 39000 FORMAT(/2X,44H INTER1 - (390) INTERNAL FILES -- USING READ 1 //21H SUBSET REF. - 12.2.5) 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************************************************************* CT001* TEST 1 CHARACTER VARIABLE, INTEGER IVTNUM=1 READ(A38VK,39001) IVI 39001 FORMAT(8X,I2) KVI = 3 IVCOMP=0 IF (IVI .EQ. KVI) IVCOMP=1 IF (IVCOMP-1) 20010,10010,20010 10010 IVPASS=IVPASS + 1 WRITE (NUVI,80002) IVTNUM GO TO 0011 20010 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80024) IVI WRITE (NUVI,80026) KVI 0011 CONTINUE C***** CT002* TEST 2 REAL, FW.D IVTNUM=2 READ(A38VK,39004) AVS 39004 FORMAT(F3.1) BVS = 2.1 IVCOMP=0 IF (AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS) IVCOMP=1 IF (IVCOMP-1) 20020,10020,20020 10020 IVPASS=IVPASS + 1 WRITE(NUVI,80002)IVTNUM GO TO 0021 20020 IVFAIL=IVFAIL+1 WRITE(NUVI,80008) IVTNUM WRITE (NUVI,80028) AVS WRITE (NUVI,80030) BVS 0021 CONTINUE CT003* TEST 3 REAL, EW.D IVTNUM=3 READ(A38VK,39006) AVS 39006 FORMAT(11X,E7.2) BVS = 23.45E2 IVCOMP=0 IF (AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS) IVCOMP=1 IF (IVCOMP-1) 20030,10030,20030 10030 IVPASS=IVPASS + 1 WRITE(NUVI,80002)IVTNUM GO TO 0031 20030 IVFAIL=IVFAIL + 1 WRITE(NUVI,80008)IVTNUM WRITE (NUVI,80028) AVS WRITE (NUVI,80030) BVS 0031 CONTINUE CT004* TEST 4 SAME REAL, EW.DEN IVTNUM=4 IVCOMP=0 READ(A38VK,39008) CVS 39008 FORMAT(10X,E8.2E2) IF (CVS .LT. BVS + EVS .AND. CVS .GT. BVS - EVS) IVCOMP=1 IF (IVCOMP-1) 20040,10040,20040 10040 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM GO TO 0041 20040 IVFAIL=IVFAIL + 1 WRITE(NUVI,80008)IVTNUM WRITE (NUVI,80028) CVS WRITE (NUVI,80030) BVS 0041 CONTINUE CT005* TEST 5 LOGICAL, WITH PERIODS IVTNUM=5 READ(A38VK,39010) AVB 39010 FORMAT(19X,L6) IVCOMP=0 IF (AVB) IVCOMP=1 IF (IVCOMP-1) 20050,10050,20050 10050 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0051 20050 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM 70050 FORMAT (1H ,16X,10HCOMPUTED: ,L1, 1 /17X,10HCORRECT: ,1HT) WRITE (NUVI,70050) AVB 0051 CONTINUE CT006* TEST 6 LOGICAL, WITHOUT PERIODS IVTNUM=6 READ(A38VK,39012) CVB 39012 FORMAT(25X,L3) IVCOMP=0 IF (.NOT. CVB) IVCOMP=1 IF (IVCOMP-1) 20060,10060,20060 10060 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0061 20060 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM 70060 FORMAT (1H ,16X,10HCOMPUTED: ,L1) WRITE (NUVI,70060) CVB 70061 FORMAT (1H ,16X,10HCORRECT: ,1HF) WRITE (NUVI,70061) 0061 CONTINUE CT007* TEST 7 CHARACTER, A IVTNUM=7 READ(A38VK,39014) A1VK 39014 FORMAT(9X,A1) B1VK = '3' IVCOMP=0 IF (A1VK .EQ. B1VK) IVCOMP=1 IF (IVCOMP-1) 20070,10070,20070 10070 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0071 20070 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A1VK WRITE (NUVI,80022) B1VK 0071 CONTINUE CT008* TEST 8 CHARACTER, AW IVTNUM=8 READ(A38VK,39016) A4VK 39016 FORMAT(4X,A4) B4VK = 'TEST' IVCOMP=0 IF (A4VK .EQ. B4VK) IVCOMP=1 IF (IVCOMP-1) 20080,10080,20080 10080 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0081 20080 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK WRITE (NUVI,80022) B4VK 0081 CONTINUE CT009* TEST 9 CHARACTER, EXTRA BLANKS IVTNUM = 9 READ(A38VK,39018) A4VK 39018 FORMAT(11X,A7) B4VK = '45E2' IVCOMP=0 IF (A4VK .EQ. B4VK) IVCOMP=1 IF (IVCOMP-1) 20090,10090,20090 10090 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0091 20090 IVFAIL=IVFAIL+1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK WRITE (NUVI,80022) B4VK 0091 CONTINUE CT010* TEST 10 CHARACTER, NO PADDING IVTNUM = 10 READ(A38VK,39020) A4VK 39020 FORMAT(A3) IVCOMP=0 B4VK = '2.1 ' IF (A4VK .EQ. B4VK) IVCOMP=1 IF (IVCOMP-1) 20100,10100,20100 10100 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0101 20100 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK WRITE (NUVI,80022) B4VK 0101 CONTINUE CT011* TEST 11 CHECK TO SEE IF SECOND VARIABLE C***** START READING JUST AFTER FIRST VARIABLE IVTNUM = 11 READ(A38VK,39022) A4VK, A1VK 39022 FORMAT(1X,A,A) B4VK = '.1 T' B1VK = 'E' IVCOMP=0 IF (A4VK .EQ. B4VK .AND. A1VK .EQ. B1VK) IVCOMP=1 IF (IVCOMP-1) 20110,10110,20110 10110 IVPASS=IVPASS+1 WRITE (NUVI,80002) IVTNUM GO TO 0111 20110 IVFAIL=IVFAIL + 1 WRITE (NUVI,80008) IVTNUM WRITE (NUVI,80020) A4VK,A1VK WRITE (NUVI,80022) B4VK,B1VK 0111 CONTINUE CT012* TEST 12 MIXED TYPES, ARRAY ELEMENT IVTNUM = 12 READ(B381K(1),39024) IVI, AVS, AVB, A4VK 39024 FORMAT(I5,1X,F8.3,1X,L5,1X,A4) KVI = 23 BVS = 23.345 B4VK = 'ENDS' IF (IVI .EQ. KVI .AND. 1 AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS .AND. 2 AVB .AND. 3 A4VK .EQ. B4VK) GOTO 39026 IVFAIL=IVFAIL + 1 70120 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE(NUVI,70120)IVTNUM 70121 FORMAT (1H ,16X,10HCOMPUTED: ,I5,2X,F10.5,2X,L1,2X,A4) WRITE (NUVI,70121) IVI,AVS,AVB,A4VK 70122 FORMAT (1H ,16X,10HCORRECT: , 1 5H 23,2X,10H 23.34500,2X,1HT,2X,4HENDS) WRITE (NUVI,70122) GOTO 39027 39026 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM 39027 CONTINUE CT013* TEST 13 MIXED TYPES, ARRAY ELEMENT C***** WITH RUN TIME EXPRESSION AS SUBSCRIPT IVTNUM = 13 KVI = 1 READ(B381K(KVI*2),39028) AVS, AVB, IVI, A5VK, A8VK 39028 FORMAT(F7.3,1X,L5,1X,I5,1X,A5,1X,A8) BVS = 23.456 KVI = 98 B5VK = 'YOURS' B8VK = 'PROGRAMS' IF (AVS .LT. BVS + EVS .AND. AVS .GT. BVS - EVS .AND. 1 .NOT. AVB .AND. 2 IVI .EQ. KVI .AND. 3 A5VK .EQ. B5VK .AND. 4 A8VK .EQ. B8VK) GOTO 39030 IVFAIL=IVFAIL+1 70130 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE (NUVI,70130) IVTNUM 70131 FORMAT (1H ,16X,10HCOMPUTED: , 1 F7.3,2X,L1,2X,I5,2X,A5,2X,A8) WRITE (NUVI,70131) AVS,AVB,IVI,A5VK,A8VK 70132 FORMAT (1H ,16X,10HCORRECT: , 1 7H 23.456,2X,1HF,2X,5H 98,2X,5HYOURS,2X,8HPROGRAMS) WRITE (NUVI,70132) GOTO 39031 39030 IVPASS=IVPASS + 1 WRITE(NUVI,80002) IVTNUM 39031 CONTINUE CT014* TEST 14 MIXED TYPES, ALSO BN AND BZ C***** IVTNUM = 14 READ(B381K(4),39032) AVS, IVI, BVS, AVB, A4VK, CVS 39032 FORMAT(F9.4,1X,I4,1X,BN,F9.4,1X,L1,1X,A4,1X,BZ,F6.4) DVS = 5.2345 KVI = 56 BVB = .TRUE. B4VK = 'TRUE' IF (AVS .LT. DVS + EVS .AND. AVS .GT. DVS - EVS .AND. 1 IVI .EQ. KVI .AND. 2 BVS .LT. DVS + EVS .AND. BVS .GT. DVS - EVS .AND. 3 AVB .AND. 4 A4VK .EQ. B4VK .AND. 5 CVS .LT. DVS + EVS .AND. CVS .GT. DVS - EVS) GOTO 39034 IVFAIL=IVFAIL + 1 70140 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HMIXED DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE(NUVI,70140) IVTNUM 70141 FORMAT (1H ,16X,10HCOMPUTED: , 1 F9.4,2X,I4,2X,F9.4,2X,L1,2X,A4,2X,F9.4) WRITE (NUVI,70141) AVS,IVI,BVS,AVB,A4VK,CVS 70142 FORMAT (1H ,16X,10HCORRECT: , 2 9H 5.2345,2X,4H 56,2X,9H 5.2345,2X,1HT,2X,4HTRUE, 3 2X,9H 5.2345) WRITE (NUVI,70142) GOTO 39035 39034 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM 39035 CONTINUE CT015* TEST 15 REAL VARIABLES WITH SCALING FACTOR IVTNUM = 15 READ(B381K(3),39036) AVS, BVS, CVS 39036 FORMAT(F9.5, 1X, E9.3, 1X, 2PF7.4) DVS = 13.1234 IF (AVS .LT. DVS + EVS .AND. AVS .GT. DVS - EVS .AND. 1 BVS .LT. DVS + EVS .AND. BVS .GT. DVS - EVS .AND. 2 CVS .LT. DVS + EVS .AND. CVS .GT. DVS - EVS) GOTO 39038 IVFAIL=IVFAIL + 1 70150 FORMAT (1H ,2X,I3,4X,7H FAIL ,16HREAL DATA TYPES,16X, 1 28HCOMPLEX IF - SEE SOURCE CODE) WRITE(NUVI,70150) IVTNUM 70151 FORMAT (1H ,16X,10HCOMPUTED: ,F9.4,2X,F9.3,2X,F7.4) WRITE (NUVI,70151) AVS,BVS,CVS 70152 FORMAT (1H ,16X,10HCORRECT: , 1 9H 13.1234,2X,9H 13.123,2X,7H13.1234) WRITE (NUVI,70152) GOTO 39039 39038 IVPASS=IVPASS+1 WRITE(NUVI,80002) IVTNUM 39039 CONTINUE C***** C***** END OF TEST SEGMENT 390 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 ********************************** 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** ********************** 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