Read a tape on unit 10, with a maximum event size of 1000 words,
unpacked as 16-bit words.
After some reduction results are stored
in array IRECO
with a limit of 300 words.
These results are then output to unit 20 packed 32-bits/word.
The block size for both
units is the EP package default (1800 16-bit words).
Note the
mandatory call to EPCLOS for the output unit at the end.
PROGRAM EPEXA7 DIMENSION IBUF(900),IBUFO(900),IRECI(1000),IRECO(300) CALL EPINIT C-- SET INPUT STATUS WORDS \ SETTING WORD 2 PREVENTS PROGRAM C-- OVERWRITING SHOULD YOU HAVE BAD DATA CALL EPSETW(10,2,1000,IERR) IF(IERR.NE.0)STOP 1 C THE FOLLOWING CALL IS OPTIONAL; USEFUL TO VERIFY OPTIONS CALL EPSTAT C-- READ A RECORD, UNPACK AS 16-BIT WORDS 50 CALL EPREAD(10,2,NW,IRECI,IBUF,IERR) IF(IERR.NE.0)GOTO 500 PRINT*,NW C-- DATA REDUCTION PART \ NWO WORDS OF DATA ARE STORED IN IRECO C-- NWO CAN VARY BUT THE MAXIMUM IS 300, DEFINED BY EPSETW CALL C-- NWO WORDS C-- CALL USER(NWO,IRECO) C-- THE OUTPUT IS PACKED 32-BITS PER WORD CALL EPOUTS(20,3,NWO,IRECO,IBUFO,IERR) IF(IERR.NE.0)GOTO 600 GOTO 50 C-- READ ERRORS C-- PARITY AND OTHER 500 IF(IERR.NE.1)GOTO 50 C-- EOF CALL EPCLOS(20,IBUFO,IERR) CALL EPEND(20,IBUFO,IERR) STOP C-- WRITE ERRORS 600 STOP 600 END