* * $Id: epcopy.F,v 1.1.1.1 1996/03/08 15:22:00 mclareni Exp $ * * $Log: epcopy.F,v $ * Revision 1.1.1.1 1996/03/08 15:22:00 mclareni * Epio * * IMPLICIT INTEGER(A-Z) * GENERAL EPCOPY JOB * LIN - INPUT LOGICAL UNIT * LOU - OUTPUT LOGICAL UNIT * MAXREC - MAXIMUM NUMBER OF LOGICAL RECORDS (EVENTS) TO COPY * E.G TO GET A SAMPLE OR AVOID PROBLEM AREAS * INBLK - MAXIMUM INPUT BLOCK SIZE 32768 BYTES * OUTBLK - MAXIMUM OUTPUT BLOCK SIZE E.G. 3600 BYTES * RECSIZ - MAXIMUM RECORD (EVENT) SIZE 32768 16 BIT WORDS * * DIMENSION IRECI(32760),IBUFI( 8190),IBUFO( 8190),IH(200) PARAMETER (MAXREC=99999) PARAMETER (LIN=11, LOU=12, LPRINT=6) PARAMETER (OUTBLK=1800, INBLK=16380, RECSIZ=16380, MAXERR=10) DATA NERR/0/, NREC/0/, OREC/0/ CALL EPINIT CALL EPSETW(LIN,1, INBLK, IERR) CALL EPSETW(LIN, 2, RECSIZ, IERR) CALL EPSETW(LIN, 27, -1, IERR) CALL EPSETW(LOU, 1,OUTBLK, IERR) CALL EPSETW(LOU, 5, -1, IERR) CALL EPSETW(LOU, 6, -1, IERR) C-- READ 1ST BLOCK TO GET ENVIRONMENT 10 CONTINUE CALL EPREAD(LIN,30,NW,IRECI,IBUFI,IERR) IF(IERR.EQ.3)GOTO 500 IF(IERR.EQ.0)THEN CALL EPGETW(LIN, 4, NW ,IERR) CALL EPSETW(LOU, 4, NW ,IERR) CALL EPGETW(LIN, 3, NW ,IERR) CALL EPSETW(LOU, 3, NW ,IERR) IF(NW.EQ.16) THEN MODEIN=12 MODOUT=2 ELSE IF(NW.EQ.32)THEN MODEIN=13 MODOUT=3 ENDIF ELSE NERR=NERR+1 IF(NERR.GT.MAXERR)STOP 8 GOTO 10 ENDIF CALL EPSTAT 50 CONTINUE CALL EPREAD(LIN,20,NH,IH,IBUFI,IERR) IF(IERR.EQ.3)GOTO 500 IF(IERR.NE.0)GOTO 400 IF(IERR.EQ.0)THEN C-- GOOD HEADER NREC=NREC+1 IF(NH.LT.4) THEN NH=4 IH(4)=NREC ENDIF ENDIF CALL EPREAD(LIN,MODEIN,NW,IRECI,IBUFI,IERR) IF(IERR.EQ.3)GOTO 500 IF(IERR.NE.0)GOTO 400 IF(IERR.EQ.0)THEN CALL EPOUTL(LOU,MODOUT,NH,IH,NW,IRECI,IBUFO,IERR) IF(IERR.NE.0)GOTO 500 OREC=OREC+1 IF(OREC.EQ.MAXREC)GOTO 500 GOTO 50 ENDIF 400 CONTINUE CALL EPSTAT IF(IERR.NE.1)NERR=NERR+1 IF(NERR.GT.MAXERR)GOTO 500 GOTO 50 500 CALL EPCLOS(LOU,IBUFO,IERR) CALL EPSTAT CALL EPEND(LOU,IBUFO,IERR) PRINT 901,NREC ,OREC, NERR 901 FORMAT('0+++ COPY ENDED',I10,' RECORDS IN',I10, 1 ' RECORDS OUT',I10,' ERRORS') END