| 1 | C -+-+-+-+-+ \ e H A E R D B . F T \ e -+-+-+-+-+\r |
| 2 | C\r |
| 3 | C OPENS THE INPUT UNIT 7, READS THE RECORD HEADER BLOCK OF EACH RECORD\r |
| 4 | C AND SWITCHES ESAM TO UNIT 7 AND THE CORRECT OFFSET.\r |
| 5 | C\r |
| 6 | C * UP 12-OCT-82\r |
| 7 | C * UP 23-JAN-83\r |
| 8 | C\r |
| 9 | SUBROUTINE READB\r |
| 10 | INCLUDE HAEBUF.FI\r |
| 11 | INCLUDE HAEHAS.FI\r |
| 12 | INCLUDE HAEPTI.FI\r |
| 13 | INCLUDE HAETTY.FI\r |
| 14 | LOGICAL BETW\r |
| 15 | INTEGER TOASCI,NCOND\r |
| 16 | EXTERNAL BETW,TOASCI,NCOND\r |
| 17 | \fC\r |
| 18 | INTEGER I,DTASET,MIN,SEK\r |
| 19 | REAL REV\r |
| 20 | C\r |
| 21 | REV=REVSON @ SAVE HAE REVISON NUMBER\r |
| 22 | HSHDON=.FALSE. @ DESTROY HASH CODE TABLE USED BY ESAM\r |
| 23 | C COMPUTE THE DATA SET TO BE READ NEXT AND STORE INTO NUM7\r |
| 24 | I=1 @ RD INCREMENT\r |
| 25 | IF (OPTION.EQ.11) I=-1 @ RD- DECREMENT\r |
| 26 | NUM7=MAX0(NUM7+I,1) @ INCR. OR DECR. AND MAKE VALID VALUE\r |
| 27 | IF BETW(2,OPTION,11) NUM7=OPTION-1 @ RD1 ... RD9\r |
| 28 | IF (OPTION.NE.0) GOTO 12 @ RD0...RD9, RD* \r |
| 29 | WRITE (TTO,4) NUM7 @ IF CALLED BY RD THEN ASK FOR\r |
| 30 | READ (TTI,5) I @ THE NEXT DATA SET TO READ\r |
| 31 | NUM7=NCOND(I,I,NUM7) @ INSERT THE DEFAULT VALUE NUM7\r |
| 32 | 12 CONTINUE\r |
| 33 | DTASET=NUM7 @ DTASET IS DECREMENTED FOR EACH RECORD READ\r |
| 34 | C\r |
| 35 | IF (REC7.EQ.-1) DEFINE FILE 7(MAXREC,85,U,REC7) @ OPEN UNIT 7\r |
| 36 | UNIT=7 @ ESAM INPUT IS NOW FROM 7\r |
| 37 | REC7=1 @ AND READ THE FIRST RECORD, THE HEADER\r |
| 38 | GO TO 10\r |
| 39 | 15 REC7=LASREC+1 @ READ THE NEXT DATA SET\r |
| 40 | IF (REC7.LE.BLKCNT) GOTO 10 @ TEST IF WE REACHED THE END OF INFORMATION\r |
| 41 | C END OF FILE REACHED, RETURN\r |
| 42 | DTASET=NUM7-DTASET @ COMPUTE NUMBER OF DATA SET'S IN THIS FILE\r |
| 43 | WRITE (TTO,1) REC7,BLKCNT,DTASET @ WRITE AN ERROR MSG\r |
| 44 | SAMCNT=0 @ NOTHING READ!\r |
| 45 | SETNUM=0 @ NO DATA IN BUFFER\r |
| 46 | RETURN\r |
| 47 | C\r |
| 48 | C READ THE HEADER BLOCK\r |
| 49 | C\r |
| 50 | 10 READ (7'REC7) (RCRD0(I),I=1,85)\r |
| 51 | COMP=.FALSE. @ NEW DATA SET, NO COMPUTATIONS SO FAR\r |
| 52 | IF (REDVAL.EQ.6HDLWPD2) GOTO 20 @ TEST FOR EMPTY RECORD\r |
| 53 | SAMCNT=0 @ RECORD WAS EMPTY, MAKE IT REALLY EMPTY\r |
| 54 | DTASET=NUM7-DTASET @ COMPUTE NUMBER OF DATA RECORDS CONTAINED IN THIS FILE\r |
| 55 | WRITE (TTO,2) NUM7,DTASET @ RECORD EMPTY\r |
| 56 | RETURN\r |
| 57 | 20 CONTINUE @ RECORD WAS INSERTED\r |
| 58 | IF (INT(REV).NE.INT(REVSON)) GOTO 30 @ REVISON NUMBER INCOMPABILITY\r |
| 59 | DTASET=DTASET-1 @ DECREMENT THE DATA SET SEARCH COUNTER\r |
| 60 | IF (DTASET.GT.0) GOTO 15 @ IF THIS DATA SET IS NOT THAT ONE WANTED THEN WE READ THE NEXT ONE\r |
| 61 | DTASET=NUM7-DTASET @ COMPUTE THE SEQ. NUMBER OF THIS RECORD\r |
| 62 | SEK=SAMCNT/SAMRAT @ COMPUTE THE TIME OF THIS SAMPLE\r |
| 63 | MIN=SEK/60 @ TWO CHARACTER MINUTES\r |
| 64 | SEK=TOASCI(MOD(SEK,60)) @ TWO CHARACTERS SECONDS\r |
| 65 | WRITE (TTO,3) DTASET,MIN,SEK,(LABEL(I),I=1,LABCNT) @ WRITE THE ID OF THE RECORD WANTED\r |
| 66 | SETNUM=DTASET @ SAVE THE NUMBER OF THIS DATA SET\r |
| 67 | OFFSET=REC7 @ NUMBER OF THE BLOCK WHERE DATA WILL START ( OFFSET IN ESAM)\r |
| 68 | LAST7=LASREC @ LAST BLOCK OF THE DATA SET --> LAST7\r |
| 69 | RETURN\r |
| 70 | C\r |
| 71 | 30 CONTINUE\r |
| 72 | WRITE (TTO,6) REVSON,REV\r |
| 73 | STOP\r |
| 74 | C\r |
| 75 | 1 FORMAT (' MIT BLOCK',I5,' ENDE DER DATEI 7',\r |
| 76 | * ' MIT',I5,' BLOECKEN UND ',I3,' DATENSAETZEN ERREICHT.')\r |
| 77 | 2 FORMAT (I5,' NUR',I3,' DATENSAETZE IN FILE 7.')\r |
| 78 | 3 FORMAT (' SATZ:',I3,I5,1H:,A2,3X,13A6)\r |
| 79 | 4 FORMAT (' SATZNUMMER? (',I3,')? ',$)\r |
| 80 | 5 FORMAT (I3)\r |
| 81 | 6 FORMAT (' **** EINGABE DATEI 7 REV.:',F4.1,' - HAE REV.:',F4.1)\r |
| 82 | END\r |
| 83 | \1a\0\0\0 |