bigspoon
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору В период 1979-1981г.г. разработана система тестирования программного обеспечения (Software Testing System, STS). Эта система предназначалась для внутреннего использования в корпорации Texas Instruments, Inc., основанной организацией Advanced Soft¬ware Technology (AST). STS была программным инструментом, который позволял программистам на языке Fortran выполнять перечисление ветвей исходного кода. Кто-нибудь пользовался этой системой тестирования или знает подобные? ! THIS PROGRAM WILL SPLIT A FILE WITH <REP CARDS IN IT TO A DIRECTORY ! AND LIST THE MEMBER NAMES OF ALL THE FILES CREATED. ! UNIT5 - INPUT (PARM1) ! UNIT6 - OUTPUT DIRECTORY (PARM2.) ! UNIT7 -- LIST (PARM3) IMPLICIT INTEGER*2 (A-Z) LOGICAL HEQ,HNE,FIRST,NEWMEM,GETYNO,ASCII DIMENSION CARD(80),PATH80(80),PATH40(40),CHARS(4),OLDMEM(4) DATA CBB,FIRST,ASCII/2H ,.TRUE.,.FALSE./ DATA LESSTH,R,E,P/2H< ,2HR ,2HE ,2HP / 1000 FORMAT(80A1) CALL SCIINT(IERR) ! С OPENFL( LUNO,FARM,ACCESS,BKSZ ) CALL OPENFL(5,1,1,80) CALL OPENFL(7,3,3,80) ASCII=GETYNO(4,IERR) CALL BANNER(ASCII) CALL GETDIR(PATH80,NDEX,2) NDEXM2=NDEX-2 WRITE(7,5000) (PATH80(I),I=1,NDEXM2) WRITE(7,6000) 5000 FORMAT(' THE OUTPUT DIRECTORY',/,IX,79A1) 6000 FORMAT(//,' FILE WITHIN OUTPUT DIRECTORY NUMBER RECORDS') NRECS=0 RECCNT=0 !!!! 1 CONTINUE DO INDEX I=1,80 CARD(I)=CBB END DO READ(5,1000,END=100) CARD IF(ASCII) CALL EBCDIC(2,CARD,0) ! С WRITE(10,1000) CARD NEWMEM=(CARD(1).EQ.LESSTH.AND.CARD(2).EQ.R.AND.CARD(3).EQ.E.AND.CARD(4).EQ.P) !С WRITE(10,111) CHARS,NDX,LEN 111 FORMAT(' AT 111 '4A2,2X,2I10) IF(FIRST.AND.(.NOT.NEWMEM))THEN WRITE(7,1500) 1500 FORMAT(' ERROR: FIRST RECORD IS NOT A <REP CARD') CALL ENDFIL(7) STOP END IF IF(NEWMEM)THEN NDX=5 CALL HFIELD(CARD,NDX,CHARS,80,LEN,CODE) IF (.NOT.FIRST) THEN CALL ENDFIL(6) NRECS=NRECS+RECCNT WRITE(7,7000)OLDMEM,RECCNT 7000 FORMAT(10X,4A2,26X,15) RECCNT=0 END IF DO INDEX I=1,4 OLDMEM(I)=CHARS(I) END DO CALL SETMEM(CHARS,PATH80,NDEX,PATH40,3,6) FIRST=.FALSE. DO INDEX I=1,80 CARD(I)=CBB END DO READ(5,1000,END=100) CARD IF(ASCII) CALL EBCDIC(2,CARD,0) !С WRITE(10,1000) CARD END IF WRITE(6,1000) (CARD(I),I=1,80) RECCNT=RECCNT+1 GO TO 1 100 CALL CLOSEW(5,IERR) CALL ENDFIL(6) NRECS=NRECS+RECCNT WRITE(7,7000)OLDMEM,RECCNT WRITE(7,3000) NRECS 3000 FORMAT(//,'THE TOTAL NUMBER OF RECORDS SPLIT WAS:',15) CALL ENDFIL(7) STOP SUBROUTINE BANNER (ASCII) IMPLICIT INTEGER*2 (A-Z) LOGICAL ASCII DIMENSION DATI (8) ,NDX(1) ,VAL(2,2) DATA NOPTS,VAL/l,2H Y,2H N,2HES,2HO / DO INDEX I = l,NOPTS NDX(I)=2 END DO IF (ASCII) NDX(1)=1 CALL DT(DATI) WRITE (7,1000) DATI WRITE(7,2000) ( (VAL (NDX (I) , J) , J=l, 2) , 1 = 1 ,NOPTS) RETURN 1000 FORMAT (' SPLIT UTILITY',/, & ' DATE: ' , 4A2, ' , TIME:'4A2, & //,' OPTIONS SELECTED') 2000 FORMAT (' CONVERT EBCDIC->ASCII= ' , 2A2, /) END |