C*********************************************************************** C***** FORTRAN 77 C***** FM407 C***** DIRAF1 - (410) C***** THIS PROGRAM CALLS SUBROUTINE SN408 C*********************************************************************** C***** TESTING OF DIRECT ACCESS FILES SUBSET REF C***** UNFORMATED RECORDS ONLY 12.10.1 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 ********************************** C***** C***** S P E C I F I C A T I O N S SEGMENT 410 DIMENSION L1I(10), K1I(10), M1I(10), F1S(10), G1S(10) CHARACTER*4 A4VK, B4VK, A41K(10), B41K(10) LOGICAL AVB, BVB, C1B(10), D1B(10) C***** BELOW CHARACTER STATEMENT ESTABLISHES THE FILE NAME VARIABLES. 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***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF C***** THE UNIT GIVEN IS NOT CAPABLE OF BEING OPENED AS A C***** DIRECT, UNFORMATTED FILE. C***** C I10 CONTAINS THE UNIT NUMBER FOR A DIRECT, UNFORMATTED FILE. I10 = 24 CX100 REPLACED BY FEXEC X-100 CONTROL CARD (DIR. FILE UNIT NUMBER). C SPECIFYING I10 = NN OVERRIDES THE DEFAULT I10 = 24. C***** C***** THE FOLLOWING STATEMENT MUST BE CHANGED IF THE NAME C***** GIVEN IS NOT A VALID FILE SPECIFIER FOR A DIRECT, C***** UNFORMATTED FILE. C***** C***** NUVI = I02 IVTOTL = 4 ZPROG = 'FM407' 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***** FILE NUMBER ASSIGNMENT IUVI = I10 C***** C***** HEADER FOR SEGMENT 410 WRITE(NUVI,41000) 41000 FORMAT(1H ,/ 46H DIRAF1 - (410) DIRECT ACCESS UNFORMATTED FILE// 1 22H SUBSET REF. - 12.10.1) 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***** WRITE (NUVI, 41099) 41099 FORMAT (1H ,48X,31HEACH TEST READS 10 RECORDS AND / 1 1H ,48X,31HEACH RECORD IS CHECKED, I.E., / 2 1H ,48X,31HTHERE ARE 10 SUBTESTS MADE FOR / 3 1H ,48X,31HEACH TEST ) C***** CALL SN408(L1I,K1I,M1I,F1S,G1S,C1B,D1B,A41K,B41K) C***** OPEN(IUVI, ACCESS='DIRECT',RECL=132) C***** WRITE 10 RECORDS IN SEQUENCE, REC = 1 TO 10 DO 41001 IVI = 1, 10 AVS = F1S (IVI) A4VK = A41K (IVI) AVB = C1B (IVI) WRITE(IUVI, REC= IVI) IVI, AVS, A4VK, AVB 41001 CONTINUE CT001* TEST 1 READ RECORDS 1 TO 10 IN SEQUENCE IVTNUM = 1 IVCOMP = 0 DO 41002 IVI = 1, 10 READ(IUVI, REC = IVI) KVI, BVS, B4VK, BVB IF (IVI .NE. KVI) GOTO 20010 IF (B4VK .NE. A41K(IVI)) GOTO 20010 IF ((BVB .AND. .NOT. C1B(IVI)) .OR. 1 (.NOT. BVB .AND. C1B(IVI))) GOTO 20010 IF (BVS .NE. F1S(IVI)) GO TO 20010 GO TO 41002 20010 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, IVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, IVI, F1S(IVI), 1 A41K(IVI), C1B(IVI) 70010 FORMAT (1H ,2X,I3,4X,13H FAIL ON REC ,I2) 70020 FORMAT (1H ,16X,10HCOMPUTED: ,I2,1X,F5.2,1X,A4,1X,L1/ 1 1H ,16X,10HCORRECT: ,I2,1X,F5.2,1X,A4,1X,L1) 41002 CONTINUE IF (IVCOMP - 0) 0011, 10010, 0011 10010 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0011 CONTINUE CT002* TEST 2 READ RECORDS NOT IN SEQUENCE OF RECORD NUMBER IVTNUM = 2 IVCOMP = 0 DO 41013 IVI = 1, 10 JVI = L1I(IVI) READ(IUVI, REC = JVI) KVI, BVS, B4VK, BVB IF (KVI .NE. JVI) GOTO 20020 IF (B4VK .NE. A41K(JVI)) GOTO 20020 IF ((BVB .AND. .NOT. C1B(JVI)) .OR. 1 (.NOT. BVB .AND. C1B(JVI))) GOTO 20020 IF (BVS .NE. F1S(JVI)) GOTO 20020 GO TO 41013 20020 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, JVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, JVI, F1S(JVI), 1 A41K(JVI), C1B(JVI) 41013 CONTINUE IF (IVCOMP - 0) 0021, 10020, 0021 10020 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0021 CONTINUE C***** WRITE RECORDS NOT IN SEQUENCE OF RECORD NUMBER 41014 DO 41015 IVI = 1, 10 JVI = K1I (IVI) AVS = G1S (JVI) A4VK = B41K (JVI) AVB = D1B (JVI) WRITE(IUVI, REC= JVI) AVB, A4VK, JVI, AVS 41015 CONTINUE CT003* TEST 3 READ RECORDS IN SEQUENCE OF RECORD NUMBER IVTNUM = 3 IVCOMP = 0 DO 41016 IVI = 1, 10 READ(IUVI, REC = IVI) BVB, B4VK, JVI, BVS IF (JVI .NE. IVI) GOTO 20030 IF (B4VK .NE. B41K(IVI)) GOTO 20030 IF ((BVB .AND. .NOT. D1B(IVI)) .OR. 1 (.NOT. BVB .AND. D1B(IVI))) GOTO 20030 IF (BVS .NE. G1S(JVI)) GOTO 20030 GO TO 41016 20030 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, IVI WRITE (NUVI, 70020) JVI, BVS, B4VK, BVB, IVI, G1S(IVI), 1 B41K(IVI), D1B(IVI) 41016 CONTINUE IF (IVCOMP -0) 0031, 10030, 0031 10030 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0031 CONTINUE CT004* TEST 4 READ RECORDS IN A DIFFERENT ORDER SEQUENCE IVTNUM = 4 IVCOMP = 0 DO 41018 IVI = 1, 10 JVI = M1I(IVI) READ(IUVI, REC = JVI) BVB, B4VK, KVI, BVS IF (KVI .NE. JVI) GOTO 20040 IF (B4VK .NE. B41K(JVI)) GOTO 20040 IF ((BVB .AND. .NOT. D1B(JVI)) .OR. 1 (.NOT. BVB .AND. D1B(JVI))) GOTO 20040 IF (BVS .NE. G1S(JVI)) GOTO 20040 GO TO 41018 20040 IVCOMP = IVCOMP + 1 IF (IVCOMP .LE. 1) IVFAIL = IVFAIL + 1 WRITE (NUVI, 70010) IVTNUM, JVI WRITE (NUVI, 70020) KVI, BVS, B4VK, BVB, JVI, G1S(JVI), 1 B41K(JVI), D1B(JVI) 41018 CONTINUE IF (IVCOMP - 0) 0041, 10040, 0041 10040 IVPASS = IVPASS + 1 WRITE (NUVI, 80002) IVTNUM 0041 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 ********************************** 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 ********************************** C***** C***** END OF TEST SEGMENT 410 STOP END C********************************************************************** C***** FORTRAN 77 C***** FM408 C***** SN408 DAQ - (805) C***** THIS SUBROUTINE IS CALLED BY FM407 C********************************************************************** SUBROUTINE SN408(LW1I, KW1I, MW1I, FW1S, GW1S, CW1B, DW1B, 1 A4W1K, B4W1K) C***** C***** SUBROUTINE USED WITH SEGMENT FM408 TO SUPPLY VALUES C***** TO ARRAYS THRU THE DUMMY ARGUMENT LIST C***** DIMENSION LT1I(10),LW1I(10),KT1I(10),KW1I(10),MT1I(10),MW1I(10) REAL FT1S(10),FW1S(10),GT1S(10),GW1S(10) LOGICAL CT1B(10),CW1B(10),DT1B(10),DW1B(10) CHARACTER*4 A4T1K(10),A4W1K(10),B4T1K(10),B4W1K(10) C***** DATA LT1I /2, 4, 1, 3, 10, 8, 9, 6, 7 ,5/ DATA KT1I /9, 10, 1, 3, 2, 5, 8, 4, 7, 6/ DATA MT1I /10, 1, 3, 4, 7, 6, 8, 5, 2, 9/ DATA FT1S /1.0, 2.0, 3.0, 4.0, 5.0, 6.5, 7.1, 8.2, 9.9, 10.0/ DATA GT1S /2.34, 2.3,1.9, 2.3, 9.9, 1.1, 8.8, 7.6, 2.3, 10.1/ DATA A4T1K / 'AAAA', 'BBBB', 'CCCC', 'DDDD', 'EDFG', 'JLKD' 1 , 'CDFE', 'LKJH', 'JHGF', 'LLLL'/ DATA B4T1K / 'HDFK', 'LKJH', 'ASDF', 'LKJH', 'XMNC', 'ALXM' 1 , 'IEOW', 'IERU', 'DJNC', 'DJAL'/ DATA CT1B /.TRUE., .FALSE., .TRUE., .TRUE., .TRUE., .FALSE., 1 .FALSE., .TRUE., .TRUE., .FALSE./ DATA DT1B /.FALSE., .FALSE., .FALSE., .TRUE., .FALSE., .FALSE., 1 .TRUE., .TRUE., .FALSE., .TRUE./ C***** DO 1 IVI = 1, 10 LW1I(IVI) = LT1I(IVI) KW1I(IVI) = KT1I(IVI) MW1I(IVI) = MT1I(IVI) FW1S(IVI) = FT1S(IVI) GW1S(IVI) = GT1S(IVI) CW1B(IVI) = CT1B(IVI) DW1B(IVI) = DT1B(IVI) A4W1K(IVI) = A4T1K(IVI) B4W1K(IVI) = B4T1K(IVI) 1 CONTINUE C***** RETURN END