Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haeplo.ft
CommitLineData
81e70d48
PH
1C -+-+-+-+-+ \ e H A E P L O . F T \ e -+-+-+-+-+\r
2C\r
3C PLOT THE POWER SPECTRUM STORED ON RECORD 3 TO STSCAN ON SCRATCH FILE 5\r
4C\r
5 SUBROUTINE PLOTIT\r
6 INCLUDE HAEBUF.FI\r
7 INCLUDE HAEGSA.FI\r
8 INCLUDE HAEPTI.FI\r
9 INCLUDE HABRK.FI\r
10 INCLUDE HAEI85.FI\r
11 INCLUDE HAECSZ.FI\r
12 INCLUDE HAPPEN.FI\r
13 INCLUDE HAETTY.FI\r
14C\r
15\fC\r
16 REAL COND\r
17 INTEGER NCOND\r
18 EXTERNAL COND,NCOND\r
19C\r
20\f REAL FFTX(85), @ PART OF THE FFT BUFFER\r
21 * ORD,ABZ,TEMSET,\r
22 * TE1,TE2,TE3, @ TEMPORARY STORAGE\r
23 * INTFAC,ORDMAX @ FACTOR TO SCALE THE INTENSITY OF EACH BAND, MAXIMUM OF THE ORDINATE\r
24 INTEGER I,J,K,INCR2,PNT,BAND,\r
25 * RELABS @ ABS INTENSITY =1, REL INTENSITY =2\r
26 LOGICAL F1, @ SAMPLE BUFFER IS EMPTY FLAG\r
27 * L1 @ TEMPORARY STORAGE\r
28 INTEGER PENPOS @ TEMPORARY PEN STATUS\r
29C\r
30C\r
31C\r
32C OPEN THE INPUT DATA FILE UNIT 5\r
33C READ THE FILE HEADER FIRST BLOCK AND\r
34C THE DATA HEADER, THE SECOND BLOCK OF UNIT 5\r
35C INSERT THE COMMON CEGESA FROM THE DATA FILE\r
36C\r
37 IF (REC5.LT.1) DEFINE FILE5(MAXBL5,85,U,REC5)\r
38 REC5=1\r
39 F1=SAMCNT.EQ.0 .OR. .NOT. COMP @ HEADER OF FILE 5 DOES NOT MATCH THE HEADER OF THE ACTUAL SAMPLE BUFFER\r
40 READ (5'REC5) (RCRD0(I),I=1,85) @ READ THE FILE HEADER\r
41 IF (F1) SAMCNT=0 @ CLEAR THE ACTUAL SAMPLE BUFFER\r
42 IF (F1) COMP=.FALSE. @ AND THE COMPUTATIONS FLAG TOO\r
43 IF (REDVAL.NE.6H2DPWLD) GOTO 20 @ RECORD IS EMPTY\r
44 REDVAL=0 @ FOR SAVETY ONLY\r
45 READ (5'REC5) LCEGSA(1),(LCEGSA(I),I=2,LCEGSA(1)) @ READ THE DATA HEADER BLOCK ( COMMON CEGESA)\r
46 SETNUM=SETNU5\r
47 CHANEL=CHANE5\r
48C HERE WE PLOT THE LAST POWER SPECTRUM STORED ON UNIT 5 REC 3 TO STSCAN\r
49C\r
50 INCR2=INCR/2 @ NUMBER OF DATA POINTS IN POWER SPECTRUM\r
51 PLTEND=NCOND(PLTEND,PLTEND,INCR2/SPAN) @ DEFAULT END OF FREQUENCY SCALE\r
52 IF (OPTION.EQ.12) GOTO 30 @ PL* TAKES THE DEFAULT VALUES AND DOESNT ASK QUESTIONS\r
53C READ THE FREQUENCY AND INTENSITY RANGE OF THE PLOT\r
5432 WRITE (TTO,4) PLTEND,PLTBEG\r
55 READ (TTI,6) I,K,J @ ASK FOR THE FREQUENCY WINDOW TO PLOT\r
56 IF BREAK(11) RETURN @ USER ABORTS PROGRAM\r
57 PLTEND=NCOND(I,I,PLTEND) @ NO INPUT LOADS DEFAULT VALUES\r
58 PLTBEG=NCOND(J,J,PLTBEG)\r
59 IF (K.NE.1H ) PLTEND=I\r
60 IF (K.NE.1H ) PLTBEG=J\r
61 IF (PLTEND-PLTBEG .LE.0) GOTO 32 @ UPPER AND LOWER LIMITS MIXED, USER HAS TO RETYPE\r
6233 WRITE (TTO,5) XMAXI @ ASK FOR THE SIZE OF INTENSITY SCALE\r
63 READ (TTI,7) TE1\r
64 IF BREAK(11) RETURN @ USER SWITCHED OFF THE TASK\r
65 XMAXI=COND(TE1,TE1,XMAXI) @ NO INPUT MEANS THE ACTUAL MAXIMUM\r
66 IF (XMAXI.LE.0) GOTO 33 @ NEGATIVE POWER SPECTRUM INTENSITY IS NOT VALID\r
6730 CONTINUE\r
68C\r
69CXCX XMAXI=ALOG(XMAXI) @ CXCX DISABLES LOG INTENSITY VERSION OF HAEPLO\r
70 CALL STPLT @ START THE PLOTTER (CALL PLOTS)\r
71 CALL XYPLOT (XOFSET,YOFSET,-PENUP)\r
72 CALL FACTOR (XLEN/(SPAN*(PLTEND-PLTBEG)),YLEN/XMAXI) @ SIZE OF DIAGRAM\r
73C\r
74 L1=.FALSE.\r
75 PENPOS=PENUP\r
76 DO 10 I=PLTBEG*SPAN,PLTEND*SPAN,1\r
77 J=MOD(I,85)\r
78 IF (J.EQ.0) READ (5'REC5) FFTX\r
79 ABZ=I\r
80 ORD=AMAX1(0,FFTX(J+1))\r
81CXCX ORD=AMIN1(ALOG(AMAX1(.1,FFTX(J+1))),XMAXI)\r
82 L1=ORD.GT.XMAXI .AND. L1 @ TRUNCATE SUCH POINTS WHICH ARE TOO LARGE FOR THIS INTENSITY SCALE\r
83 PENPOS=NCOND(L1,PENUP,PENPOS)\r
84 L1=ORD.GT.XMAXI\r
85 ORD=AMIN1(ORD,XMAXI) @ PLOT TO THE BOUNDER OF THIS DIAGRAM\r
86 IF BREAK(11) GOTO 15 @ USER SWITCHED OFF PLOTTING\r
87 CALL XYPLOT (ABZ,ORD,PENPOS)\r
88 PENPOS=PENDWN\r
8910 CONTINUE\r
90\fC \r
91C MAKE A SCALE\r
92C\r
93C FREQUENCY SCALE FROM PLTBEG TO PLTEND HERTZ\r
94C\r
95 CALL FACTOR (XLEN/(PLTEND-PLTBEG),1.)\r
96 CALL XYPLOT (0,-.5,-PENUP)\r
97 IF BREAK(11) GOTO 15 @ USER SWITCHED OFF THE PLOTTER\r
98 DO 12 I=PLTBEG,PLTEND,NCOND(PLTEND-PLTBEG.GE.100,10,1) @ 1 HERTZ STEP SIZE\r
99 TE1=FLOAT(I-PLTBEG)\r
100 CALL XYPLOT (TE1,0,PENDWN)\r
101 J=MOD(I,NCOND(PLTEND-PLTBEG.GT.100,50,PLTEND.GT.30,10,\r
102 * PLTEND.GT.15,5,\r
103 * PLTEND.GT.6,2,1))\r
104 TE2=COND(J.EQ.0,-.7, J.EQ.5,-.5, -.3)\r
105 CALL XYPLOT (TE1,TE2,PENDWN)\r
106 IF (J.NE.0) GOTO 12\r
107 CALL WHERE (TE2,TE2,TE2,TE3) @ GET THE X FACTOR\r
108 CALL FACTOR (1.,1.)\r
109 CALL NUMBER (TE1*TE2-INT(ALOG10(AMAX1(1.,TE1))\r
110 * +.01)*YN/2.-YN*.3,\r
111 * -1.3,YN,TE1,0,-1)\r
112 CALL FACTOR (TE2,TE3)\r
113 CALL XYPLOT (TE1,0,PENUP)\r
11412 CALL XYPLOT (TE1,0,PENDWN)\r
115 CALL XYPLOT (0,.5,-PENUP)\r
116 CALL FACTOR (1.,1.)\r
117 CALL SYMBOL (XLEN/2.,-YOFSET,YZ,\r
118 * 'FREQUENCY [HZ]',0,14)\r
119C\r
120C INTENSITY SCALE LINEAR FROM 0 TO XMAXI\r
121C\r
122 IF BREAK(11) GOTO 15\r
123 CALL FACTOR (1.,YLEN/XMAXI)\r
124 CALL XYPLOT (-.5,0,-PENUP)\r
125 TE2=XMAXI/10.\r
126 DO 14 I=0,10\r
127 TE1=TE2*I\r
128 CALL XYPLOT (0,TE1,PENDWN)\r
129 J=MOD(I,10)\r
130 TE3=COND(J.EQ.0,-.7, J.EQ.5,-.5, -.3)\r
131 CALL XYPLOT (TE3,TE1,PENDWN)\r
13214 CALL XYPLOT (0,TE1,PENDWN)\r
133C INSERT THE INTENSITY SCALE MAXIMUM\r
134 CALL WHERE (TE2,TE2,TE2,TE3)\r
135 CALL FACTOR (1.,1.)\r
136 CALL ENUMBR (-1.1,TE1*TE3-4.*YN,YN,XMAXI,90.,1)\r
137 CALL FACTOR (TE2,TE3)\r
138 CALL XYPLOT (.5,0,-PENUP)\r
139 CALL FACTOR (1.,1.)\r
140 CALL SYMBOL (-XOFSET,YLEN/5.,YZ,\r
141 * 'INTENSITY [ARB.UNITS]',90.,21)\r
142C\r
143C\r
144 CALL FACTOR (1.,1.)\r
145 I=BEGIN @ SAVE THE ORIGINAL BEGIN\r
146 BEGIN=BEGFFT @ AND REPLACE WITH THE BEGIN OF THIS FFT\r
147 IF BREAK(11) GOTO 15 @ USER SWITCHES OFF THE PLOTTER\r
148 BEGIN=I @ RESTORE THE ORIGINAL BEGIN OF THE SCAN\r
149 IF BREAK(11) GOTO 15 @ USER SWITCHES OFF THE PLOTTER\r
150 CALL SYMBOL (YZ,YLEN+YZ,YZ,LABEL,0,MIN0(42,LABCNT*6))\r
151 IF (LABCNT.GT.7)\r
152 * CALL SYMBOL (3.*YZ,YLENYZ,YZ,LABEL(8),0,LABCNT*6-42)\r
153C\r
15415 CONTINUE @ ENTRY HERE IF USER SWITCHED OFF PLOTTING\r
155 CALL FACTOR (1.,1.)\r
156 IF (.NOT.BREAK(11)) CALL LABPLT (0,-YOFSET,PZEND)\r
157 CALL XYPLOT(38.,25.,PENUP)\r
158 CALL EXPLT\r
159 RETURN\r
160C\r
161C\r
16220 CONTINUE @ FILE 5 IS EMPTY\r
163 COMPUT=0\r
164 SAMCNT=0\r
165 WRITE (TTO,1) @ NO DATA TO PLOT\r
166 RETURN\r
167C\r
168\fC\r
1691 FORMAT (' KEINE DATEN IN DER DATEI 5')\r
1702 FORMAT (' SUMME DER LEISTUNGSSPEKTREN UEBER ',F4.1,' -->',\r
171 * F5.1,' GEZEICHNET.')\r
1724 FORMAT (' FREQUENZSKALA ENDE, ANFANG? (',I2,1H,,I2,\r
173 * ') ? ',$)\r
1745 FORMAT (' ORDINATEN MAXIMUM? (',1P,E8.1,') ? ',$)\r
1756 FORMAT (I2,A1,I2)\r
1767 FORMAT (E8.1)\r
177 END\r
178\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0