pcjs/apps/c1p/BASIC/jeffpar/SOFORECAST.BAS

60 lines
2 KiB
QBasic

5 FORC=1TO24:PRINT:NEXT
10 PRINT" ENTER NO. OF TYPES":PRINT:PRINT" OF DATA PER YEAR";:INPUTN
20 PRINT:PRINT" INPUT NAME FOR:":PRINT
25 FORC=1TON:PRINT" TYPE";C;:INPUTB$(C):NEXTC
30 PRINT
99 X=1:DIMA(4,4,12),P(4,12),S(4)
100 PRINT" WHAT IS THE YEAR OF":PRINT:PRINT" DATA-BASE";X;
105 INPUTY(X):IFY(X)=0THEN150
110 FORT=1TON:PRINT
111 PRINT" ";B$(T);"'S";:INPUTA$:FORM=1TO11:FORC=1TO255
120 IFC=LEN(A$)THENPRINT:PRINT" DATA ERROR":PRINT:GOTO111
125 IFMID$(A$,C,1)=";"ORMID$(A$,C,1)="/"THEN131
130 NEXTC
131 REM-SIFTING DATA-
135 A(X,T,M)=VAL(A$):A$=MID$(A$,C+1):NEXTM
140 A(X,T,M)=VAL(A$)
145 NEXTT:X=X+1:PRINT:GOTO100
150 FORT=1TON:S(T)=0:FORM=1TO12:P(T,M)=0:FORX1=1TOX-1
155 P(T,M)=P(T,M)+A(X1,T,M):NEXTX1:P(T,M)=P(T,M)/(X-1)
156 S(T)=S(T)+P(T,M)
160 NEXTM,T:FORT=1TON:FORM=1TO12:P(T,M)=P(T,M)/S(T):NEXTM,T
170 FORC=1TO24:PRINT:NEXTC
180 INPUT" ENTER BASE YEAR";B
182 PRINT:PRINT" ENTER GROWTH RATE FOR:"
183 PRINT
184 FORY=1TON:PRINT" ";B$(Y);"'S";:INPUTG(Y):NEXTY
190 FORT=1TON
215 Z=0:GOSUB500:IFZ=1THENT1=S:GOTO227
220 PRINT" WHAT WAS THE TOTAL":PRINT:PRINT" FOR BASE YEAR";B
225 PRINT:PRINT" (";B$(T);"'S)";:INPUTT1
227 T(T)=T1:IFT>1THENFORV=1TO3000:NEXTV:GOTO230
228 INPUT" FORECAST YEAR";F
230 GOSUB235:NEXTT:GOTO264
235 TT=T1*(1+G(T)/100)^(F-B)
239 PRINT:PRINT:RESTORE
240 PRINT" FORECAST YEAR";F:PRINT
241 PRINT" (";B$(T);"'S)":PRINT
243 FORM=1TO12STEP3:FORC=1TO3
245 READB$,E(C):PRINTTAB(E(C));B$;:NEXTC:PRINT
250 FORC=1TO3:PRINTTAB(E(C));INT(TT*P(T,M+C-1));
260 NEXTC:PRINT:PRINT:NEXTM:RETURN
264 PRINT
267 PRINT" ENTER OTHER YEARS FOR":PRINT:PRINT" FORECASTING, BASED ON"
270 PRINT:PRINTB;"FIGURES...."
273 X1=1:PRINT
275 INPUT" ";F(X1):IFF(X1)=0THEN280
277 X1=X1+1:GOTO275
280 IFX1=1THENPRINT:PRINT" TO BEGIN AGAIN,":PRINT:GOTO180
282 FORX2=1TOX1-1:F=F(X2)
283 FORT=1TON:T1=T(T):GOSUB235
285 FORV=1TO4000:NEXTV,T
286 NEXTX2
288 PRINT:GOTO267
300 END
400 DATAJAN,1,FEB,9,MAR,17,APR,1,MAY,9,JUN,17,JUL,1,AUG,9,SEP,17,OCT,1
410 DATANOV,9,DEC,17
500 FORX1=1TOX-1:IFY(X1)<>BTHENNEXTX1
505 IFY(X1)<>BTHENRETURN
510 S=0:FORM1=1TO12:S=S+A(X1,T,M1):NEXTM1
530 Z=1:PRINT:RETURN