10 COM A[103,22],M[19,19],U[19,19],Q[20],V[20],P[78] 20 COM M$[60],N$[72] 30 COM W0,W1,W2,W3,W4,W5,W6,W7,W8,W9,Z9,Z8,Z7 40 COM L9,L8,L7,X$[20] 45 COM E[3,3],K0,I5,I6,K3,I1,I3,N0,I8 50 REM:27APR74 51 REM 21MAY74 MODIFIED BY RKK TO TAKE OVER 100 POINTS 52 REM:END OF >MPLS 150 REM TSPLOT(A(3,300),K0,I5,I6,K3,I1,I3,N0,E(3,2),I8) 160 REM PLOTS UP TO 3 TIME SERIES FROM ARRAY A(3,300) 170 REM K0=1 FOR ARITHMETIC SCALE, =2 FOR LOG SCALE 180 REM I5 IS INDEX OF FIRST POINT PLOTTED 185 REM I6 IS INDEX OF LAST POINT PLOTTED 190 REM K3 IS THE NUMBER OF PERIODS PER YEAR 200 REM I1 IS THE FIRST PERIOD OF THE FIRST YEAR PLOTTED--0 FOR ANNUAL 210 REM I3 IS THE FIRST YEAR TO BE PLOTTED--2 DIGITS 220 REM N0 IS THE NUMBER OF SERIES TO BE PLOTTED 230 REM E(3,2) CONTAINS THE FIRST AND LAST INDEX OF EACH SERIES 240 REM 250 REM I8=1 FOR MEANS PLOTTED; =0 FOR NOT PLOTTED 260 REM 265 REM TSPLOT WILL CHAIN BACK TO PROGRAM-NAME CONTAINED IN R$ 266 REM THE CONTENT OF R9 WILL DETERMINE THE ENTRY ADDRESS ON RETURN 270 DIM C[9],D[3],F$[66] 280 DIM G[3],H[4],I$[3],J$[3] 290 DIM L[3] 320 FOR K9=1 TO 66 330 F$[K9,K9]=" " 340 NEXT K9 350 J$=".'!" 360 I$="*+#" 410 K$=":" 420 L$="-" 430 O$="X" 440 P$=" " 450 I0=I1 460 I2=I3 470 MAT G=ZER 480 REM L - INDICATES # OF DELETED OBSERVATIONS PER COL VECTOR 490 MAT L=ZER 491 Q9=0 500 REM CHANGE TO LOGS IF INDICATED--THIS ALTERS X AVRAY 510 IF K0<2 THEN 584 520 FOR J0=I5 TO I6 530 FOR I4=1 TO N0 540 IF NOT ((E[I4,1] <= J0) AND (J0 <= E[I4,2])) THEN 580 550 A[I4,J0]=LOG(A[I4,J0]) 560 NEXT I4 570 NEXT J0 580 REM FIND MIN AND MAX VALUES TO BE PLOTTED 584 I4=0 585 IF A[E[1,1]+I4,W5+2]=1 THEN 590 586 I4=I4+1 588 GOTO 585 590 K1=E[1,1]+I4 600 IF NOT (K1I4 OR E[J0,2]A0) AND (E[J0,1] <= I4) AND (I4 <= E[J0,2])) THEN 700 690 A0=A[I4,E[J0,3]] 700 NEXT J0 710 NEXT I4 715 P9=0 720 REM SET UP SCALING 730 A2=A1 740 A3=A0 750 IF (K0<2) THEN 780 760 A2=EXP(A2) 770 A3=EXP(A3) 780 D0=0 790 Z0=A2 800 D1=(A3-Z0)/8 810 REM CALL ROUND(DELT,DELT) 830 GOSUB 2350 840 P9=P9+1 845 REM THIS PATCH REMOVES THE BUG IN SCALING ROUTINE J.K. 850 IF P9>20 THEN 940 860 IF (D1=D0) THEN 940 870 I4=ABS(A2)/D1 880 Z0=INT(D1*I4) 890 IF (Z0 <= A2) THEN 920 900 Z0=Z0-D1 910 GOTO 890 920 D0=D1 930 GOTO 800 940 C[1]=Z0 950 Y0=D1/8 960 FOR I4=2 TO 9 970 C[I4]=C[I4-1]+D1 980 NEXT I4 990 IF (K0<2) THEN 1020 1000 Y0=(LOG(C[9])-LOG(C[1]))/64 1010 Z0=LOG(Z0) 1020 S0=ABS(C[1]) 1030 S1=ABS(C[9]) 1040 I7=0 1050 IF S0 >= S1 THEN 1070 1060 S0=S1 1070 IF S0 <= 999 THEN 1090 1080 I7=I7-1 1090 IF S0 >= 99 THEN 1110 1100 I7=I7+1 1110 S2=ABS(I7) 1120 IF (I7=0) THEN 1220 1130 IF NOT (I7<0) THEN 1150 1140 S0=S0/10 1150 IF NOT (I7>0) THEN 1170 1160 S0=S0*10 1170 IF ((S0<99) OR (S0>999)) THEN 1070 1180 FOR I4=1 TO 9 1190 C[I4]=C[I4]*(10^I7) 1200 NEXT I4 1210 REM CALCULATE MEANS AND SET UP PLOTTING ARRAY 1220 REM 1230 MAT D=ZER[N0] 1240 FOR I4=I5 TO I6 1245 IF A[I4,W5+2]=0 THEN 1300 1250 FOR J0=1 TO N0 1260 IF ((E[J0,1]>I4) OR (E[J0,2]0) THEN 1810 1770 K2=K3 1780 FOR J0=2 TO 64 1790 F$[J0,J0]=L$ 1800 NEXT J0 1810 FOR J0=17 TO 49 STEP 16 1820 F$[J0,J0]=K$ 1830 NEXT J0 1840 FOR J0=1 TO N0 1850 H[J0]=0 1860 NEXT J0 1870 IF (I8=0) THEN 1970 1880 REM PLOT MEANS 1890 J0=N0 1900 IF (J0 <= 0) THEN 1970 1910 IF ((E[J0,1]>I4) OR (I4>E[J0,2])) THEN 1940 1920 M0=D[J0] 1930 F$[M0,M0]=J$[J0,J0] 1940 J0=J0-1 1950 GOTO 1900 1960 REM PLOT SERIES 1970 J0=N0 1980 IF (J0 <= 0) THEN 2050 1990 IF ((E[J0,1]>I4) OR (I4>E[J0,2])) THEN 2030 2000 H[J0]=INT((A[I4,E[J0,3]]-Z0)/Y0+1) 2010 K1=INT(H[J0]) 2015 IF A[I4,W5+2]=1 THEN 2020 2016 F$[2,8]="DELETED" 2017 GOTO 2030 2020 F$[K1,K1]=I$[J0,J0] 2030 J0=J0-1 2040 GOTO 1980 2050 IF (N0=1) THEN 2120 2060 H[N0+1]=H[1] 2070 FOR J0=1 TO N0 2080 K1=H[J0] 2090 IF NOT ((H[J0]=H[J0+1]) AND (H[J0]>0)) THEN 2110 2100 F$[K1,K1]=O$ 2110 NEXT J0 2120 IF I0 <= 0 THEN 2180 2130 PRINT USING 2140;I2,I0,F$ 2140 IMAGE 2d,"-",2d,1x,66a 2170 REM 6060 FORMAT(2X,I2,1H-,I2,66A1) 2180 IF I0#0 THEN 2250 2190 PRINT USING 2200;I2,F$ 2200 IMAGE 2X,3D,1X,66A 2230 REM 6070 FORMAT(5X,I2,66A1) 2240 GOTO 2280 2250 I0=I0+1 2260 IF (I0 <= K3) THEN 2290 2270 I0=1 2280 I2=I2+1 2290 NEXT I4 2300 REM WRITE PLOT TRAILERS 2310 PRINT USING 1650 2320 MAT PRINT USING 1620;C 2330 GOTO 9998 2340 REM SUBROUTINE ROUND(X,RX) 2350 Y1=ABS(D1) 2355 X0=D1 2360 I9=0 2380 IF (Y1 >= 1) THEN 2420 2390 Y1=Y1*10 2400 I9=I9+1 2410 GOTO 2380 2420 IF (Y1<10) THEN 2460 2430 Y1=Y1/10 2440 I9=I9-1 2450 GOTO 2420 2460 IF (Y1=1) THEN 2720 2470 IF (Y1>1.25) THEN 2500 2480 Y1=1.25 2490 GOTO 2720 2500 IF (Y1>1.5) THEN 2530 2510 Y1=1.5 2520 GOTO 2720 2530 IF (Y1>2) THEN 2560 2540 Y1=2 2550 GOTO 2720 2560 IF (Y1>2.5) THEN 2590 2570 Y1=2.5 2580 GOTO 2720 2590 IF (Y1>3) THEN 2620 2600 Y1=3 2610 GOTO 2720 2620 IF (Y1>4) THEN 2650 2630 Y1=4 2640 GOTO 2720 2650 IF (Y1>5) THEN 2680 2660 Y1=5 2670 GOTO 2720 2680 IF (Y1>7.5) THEN 2710 2690 Y1=7.5 2700 GOTO 2720 2710 Y1=10 2720 Y1=Y1*(10^(-I9)) 2730 D1=Y1 2740 IF X0 >= 0 THEN 2760 2750 D1=-Y1 2760 REM 2770 RETURN 9998 CHAIN "$IDA",150 9999 END