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