C -+-+-+-+-+  H A E R D B . F T  -+-+-+-+-+ C C OPENS THE INPUT UNIT 7, READS THE RECORD HEADER BLOCK OF EACH RECORD C AND SWITCHES ESAM TO UNIT 7 AND THE CORRECT OFFSET. C C * UP 12-OCT-82 C * UP 23-JAN-83 C SUBROUTINE READB INCLUDE HAEBUF.FI INCLUDE HAEHAS.FI INCLUDE HAEPTI.FI INCLUDE HAETTY.FI LOGICAL BETW INTEGER TOASCI,NCOND EXTERNAL BETW,TOASCI,NCOND C INTEGER I,DTASET,MIN,SEK REAL REV C REV=REVSON @ SAVE HAE REVISON NUMBER HSHDON=.FALSE. @ DESTROY HASH CODE TABLE USED BY ESAM C COMPUTE THE DATA SET TO BE READ NEXT AND STORE INTO NUM7 I=1 @ RD INCREMENT IF (OPTION.EQ.11) I=-1 @ RD- DECREMENT NUM7=MAX0(NUM7+I,1) @ INCR. OR DECR. AND MAKE VALID VALUE IF BETW(2,OPTION,11) NUM7=OPTION-1 @ RD1 ... RD9 IF (OPTION.NE.0) GOTO 12 @ RD0...RD9, RD* WRITE (TTO,4) NUM7 @ IF CALLED BY RD THEN ASK FOR READ (TTI,5) I @ THE NEXT DATA SET TO READ NUM7=NCOND(I,I,NUM7) @ INSERT THE DEFAULT VALUE NUM7 12 CONTINUE DTASET=NUM7 @ DTASET IS DECREMENTED FOR EACH RECORD READ C IF (REC7.EQ.-1) DEFINE FILE 7(MAXREC,85,U,REC7) @ OPEN UNIT 7 UNIT=7 @ ESAM INPUT IS NOW FROM 7 REC7=1 @ AND READ THE FIRST RECORD, THE HEADER GO TO 10 15 REC7=LASREC+1 @ READ THE NEXT DATA SET IF (REC7.LE.BLKCNT) GOTO 10 @ TEST IF WE REACHED THE END OF INFORMATION C END OF FILE REACHED, RETURN DTASET=NUM7-DTASET @ COMPUTE NUMBER OF DATA SET'S IN THIS FILE WRITE (TTO,1) REC7,BLKCNT,DTASET @ WRITE AN ERROR MSG SAMCNT=0 @ NOTHING READ! SETNUM=0 @ NO DATA IN BUFFER RETURN C C READ THE HEADER BLOCK C 10 READ (7'REC7) (RCRD0(I),I=1,85) COMP=.FALSE. @ NEW DATA SET, NO COMPUTATIONS SO FAR IF (REDVAL.EQ.6HDLWPD2) GOTO 20 @ TEST FOR EMPTY RECORD SAMCNT=0 @ RECORD WAS EMPTY, MAKE IT REALLY EMPTY DTASET=NUM7-DTASET @ COMPUTE NUMBER OF DATA RECORDS CONTAINED IN THIS FILE WRITE (TTO,2) NUM7,DTASET @ RECORD EMPTY RETURN 20 CONTINUE @ RECORD WAS INSERTED IF (INT(REV).NE.INT(REVSON)) GOTO 30 @ REVISON NUMBER INCOMPABILITY DTASET=DTASET-1 @ DECREMENT THE DATA SET SEARCH COUNTER IF (DTASET.GT.0) GOTO 15 @ IF THIS DATA SET IS NOT THAT ONE WANTED THEN WE READ THE NEXT ONE DTASET=NUM7-DTASET @ COMPUTE THE SEQ. NUMBER OF THIS RECORD SEK=SAMCNT/SAMRAT @ COMPUTE THE TIME OF THIS SAMPLE MIN=SEK/60 @ TWO CHARACTER MINUTES SEK=TOASCI(MOD(SEK,60)) @ TWO CHARACTERS SECONDS WRITE (TTO,3) DTASET,MIN,SEK,(LABEL(I),I=1,LABCNT) @ WRITE THE ID OF THE RECORD WANTED SETNUM=DTASET @ SAVE THE NUMBER OF THIS DATA SET OFFSET=REC7 @ NUMBER OF THE BLOCK WHERE DATA WILL START ( OFFSET IN ESAM) LAST7=LASREC @ LAST BLOCK OF THE DATA SET --> LAST7 RETURN C 30 CONTINUE WRITE (TTO,6) REVSON,REV STOP C 1 FORMAT (' MIT BLOCK',I5,' ENDE DER DATEI 7', * ' MIT',I5,' BLOECKEN UND ',I3,' DATENSAETZEN ERREICHT.') 2 FORMAT (I5,' NUR',I3,' DATENSAETZE IN FILE 7.') 3 FORMAT (' SATZ:',I3,I5,1H:,A2,3X,13A6) 4 FORMAT (' SATZNUMMER? (',I3,')? ',$) 5 FORMAT (I3) 6 FORMAT (' **** EINGABE DATEI 7 REV.:',F4.1,' - HAE REV.:',F4.1) END