Compucolor.org – Virtual Media

Listing of file='STOCKS.BAS;01' on disk='vmedia/chip_39-sector.ccvf'

100 REM  ** FILE PROGRAM "STOCKS" ** REQUIRES 16 K **
120 REM  ** BY J. R. THIRTLE **
140 REM  ** REVISED 11,1,81 **
160 PLOT 12
180 PRINT ,,"STOCK PRICE DATA"
200 PRINT ,,"================"
220 PRINT
240 PRINT "***********************************************"
260 PRINT "THIS PROGRAM FILES PRICES ON SELECTED STOCKS"
280 PRINT "PRICES ARE THOSE AT WEEK'S CLOSING"
300 PRINT "DATES ENTERED AS DECIMALS. IE JAN 2 IS 1.02"
320 PRINT "IF DATE ENDS IN ZERO, .01 IS ADDED."
340 PRINT "THUS, JAN 20 IS 1.21 AND NOT 1.2"
360 PRINT
380 PRINT "CHANGE NUMBER OF COMPANIES (X) AND OF THE LAST"
400 PRINT "WEEK (LW) AS NEW INFO IS ADDED."
420 PRINT
440 PRINT "TO ILLUSTRATE PROGRAM EXECUTE 2 AND 4 BELOW"
480 PRINT "***********************************************"
482 PRINT "X AND LW ARE GIVEN IN LINES 4620 AND 4640"
485 GOSUB 4620
490 PRINT "X=";X",LW=";LW
500 PRINT
520 INPUT "TO CONTINUE HIT RETURN ";R
540 ON RGOTO 560
560 PLOT 12,14:PRINT "MENU:"
580 PRINT ,"1-WRITE NAMES"
600 PRINT ,"2-READ NAMES"
620 PRINT ,"3-INPUT DATA"
640 PRINT ,"4-READ FILE"
660 PRINT ,"5-CORRECT DATA"
680 PRINT ,"6-END"
700 INPUT "SELECT PROGRAM AND HIT RETURN: ";P
720 PLOT 12
740 REM
760 ON PGOTO 800,1280,1640,2240,5320,7380
780 REM
800 PRINT "***********************************"
820 PRINT "THIS PROGRAM WRITES COMPANY NAMES"
840 PRINT
860 REM  FILE "N","CONAME",1,128,1
880 REM  REC SIZE 126 (21 NAMES, 6 BYTES EACH)
900 GOSUB 4600:REM  ** OPEN FILE "CONAME", SET X **
920 DIM C$(X)
960 PRINT "UP TO 21 NAMES, 6 CHARACTERS EACH"
980 PRINT "CURRENTLY USING 12 NAMES, INCLUDING 'DATE'"
1020 FOR I= 0TO X
1040 READ C$(I):NEXT I
1060 DATA "DATE","BAUSCH","ESKOD","ENGHDT","IBM"
1080 DATA "MASCO","PRIME","MITCH","WANG","MATH","TANDEM"
1100 DATA "INTLSY"
1120 PRINT
1140 FOR I= OTO X
1160 PUT 2,1,6* I+ 1;C$(I)[6]
1180 NEXT I
1200 PRINT
1220 FILE "C",2
1230 PRINT "WRITING COMPLETED"
1240 FOR Z= 1TO 200:NEXT Z
1260 GOTO 560
1280 PRINT "***********************************"
1300 PRINT "THIS PROGRAM READS COMPANY NAMES"
1320 PRINT
1340 CLEAR 100
1360 GOSUB 4600:REM  ** OPEN FILE "CONAME", SET X **
1380 DIM C$(X)
1400 GOSUB 4620:REM  ** SET LW **
1420 FOR I= 0TO X
1440 GET 2,1,6* I+ 1;C$(I)[6]
1460 PRINT I;TAB( 5);C$(I)
1480 NEXT I
1500 PRINT
1520 PRINT "FREE STRING SPACE= ";FRE (Z$)
1540 FILE "C",2:PRINT "FILE CLOSED"
1560 PRINT
1580 INPUT "WHERE NOW? (1-MENU, 2-END): ";L
1600 PLOT 12
1620 ON LGOTO 560,7900
1640 PRINT "***********************************"
1660 PRINT
1680 PRINT "THIS PROGRAM INPUTS DATA"
1700 REM  USE THE FOLLOWING TO CREATE DATA FILE SPACE
1720 REM  FILE "N","STOCKS",52,84,6
1740 REM  I.E. 52 RECORDS (WEEKS), 84 BYTES EACH (21 DATA * 4)
1760 REM  6 WEEKS IN BUFFER AT A TIME
1780 REM
1800 CLEAR 100
1840 GOSUB 4560:REM  ** OPEN FILES, SET X AND LW **
1860 DIM C$(X),P(LW,X)
1880 REM
1900 PRINT "LAST ENTRY WEEK= ";LW
1910 PRINT "NUMBER OF COMPANIES=";X
1920 PRINT
1940 FOR I= 0TO X
1960 GET 2,1,6* I+ 1;C$(I)[6]:NEXT I
1980 INPUT "ENTER WEEK NUMBER: ";J
2000 PRINT "ENTER CLOSING PRICE TO 2 DEC PLACES"
2020 PRINT "ENTER DATE AS MO.DA (EG 1.05). IF DA ENDS IN 0 ADD 1,AS IN 5.31 AND 4.21"
2040 FOR I= 0TO X
2060 PRINT I,C$(I),:INPUT P:IF P< 0THEN 1980
2080 PUT 1,J,5* I+ 1;P
2100 NEXT I
2120 PRINT "THIS ENTRY WEEK IS ";J
2140 INPUT "1-DONE, 2-MORE: ";L
2160 ON LGOTO 2200,2220
2180 PRINT
2200 FILE "C",1,2:PRINT "FILES CLOSED":GOTO 560
2220 LW= J:PLOT 12:GOTO 1900
2240 PRINT "***********************************"
2260 PRINT "THIS PROGRAM READS 'STOCKS' FILE"
2280 PRINT
2300 CLEAR 100
2340 PRINT "TYPE IN YOUR SELECTION OF DATA"
2360 PRINT
2380 PRINT "1-SEE ALL ON ONE COMPANY"
2400 PRINT "2-SEE ALL ON ONE DATE"
2420 PRINT "3-SEE A SINGLE ENTRY"
2440 PRINT
2460 INPUT "MAKE YOUR CHOICE AND HIT RETURN: ";Q
2480 PRINT
2500 PLOT 12
2520 ON QGOTO 2540,3440,3960
2540 REM  ** START OF SEARCH #1 **
2560 PLOT 12,14
2580 REM  ** OPEN FILES **
2600 GOSUB 4560:REM  ** OPEN FILES, SET X AND LW **
2610 DIM C$(X),P(52,X)
2620 PRINT
2640 REM  ** GET ALL DATA, CLOSE FILES **
2660 FOR I= 0TO X:GET 2,1,6* I+ 1;C$(I)[6]:NEXT I
2680 FOR J= 1TO LW:FOR I= 0TO X
2700 GET 1,J,5* I+ 1;P(J,I)
2720 NEXT I:NEXT J
2740 FILE "C",1,2:REM  ** FILES CLOSED **
2760 PRINT
2780 REM
2800 PLOT 12
2820 PLOT 12,14:REM  ** THIS STATEMENT NECESSARY. SEE 4280 **
2840 PRINT ,,"SEE ALL ON ONE COMPANY"
2860 GOSUB 4740:REM  ** GET ID # **
2880 INPUT "COMPANY ID # = ";N
2900 REM  ** SELECT FORMAT **
2920 INPUT "CHOOSE 1-TABLE, 2-GRAPH: ";L
2940 ON LGOTO 3000,5920
2960 PLOT 27,24,12
2980 REM  ** TABULAR OUTPUT **
3000 ID$= C$(N)
3020 PLOT 27,24,12,15:REM  ** PAGE MODE,ERASE,SMALL CHAR **
3040 PLOT 3,0,0,6,1
3080 PRINT ID$
3100 PLOT 6,2:REM  ** GREEN FG **
3120 PRINT
3140 I= 0
3160 PRINT "WEEK";TAB( 5);"DATE";TAB( 11);"PRICE";
3180 PRINT TAB( 19);"WEEK";TAB( 24);"DATE";TAB( 30);"PRICE";
3200 PRINT TAB( 38);"WEEK";TAB( 43);"DATE";TAB( 49);"PRICE"
3220 PRINT
3240 FOR J= 1TO 26
3260 PRINT J;TAB( 5);P(J,I);TAB( 11);P(J,N);
3280 PRINT TAB( 19);J+ 26;TAB( 24);P(J+ 26,I);TAB( 30);P(J+ 26,N)
3300 NEXT J
3320 PLOT 27,11:REM  ** SCROLL MODE **
3340 PRINT
3350 PLOT 3,31,0
3360 INPUT "ANOTHER SELECTION (Y/N)?";L$
3380 IF L$= "Y"THEN 2820
3400 GOTO 560:REM  ** RETURN TO MENU **
3420 REM
3440 REM  ********** START OF #2 SEARCH ********
3460 PRINT ,"SEE ALL ON ONE DATE"
3480 PRINT
3500 CLEAR 150
3520 REM  ** OPEN FILES **
3540 GOSUB 4560
3560 DIM C$(X),P(LW,X)
3580 FOR I= 0TO X
3600 GET 2,1,6* I+ 1;C$(I)[6]
3620 NEXT I
3640 PRINT "SELECT WEEK # FROM THIS LIST"
3660 GOSUB 4940
3680 INPUT "WEEK NUMBER: ";J
3700 PRINT
3720 FOR I= 0TO X
3740 GET 1,J,5* I+ 1;P(J,I)
3760 NEXT I
3780 FOR I= 0TO X
3800 PRINT C$(I);TAB( 5);P(J,I)
3820 NEXT I
3840 PRINT
3860 FILE "C",1,2
3880 REM  ************* END OF #2 SEARCH *******************
3900 INPUT "WHERE NOW? (1-MENU, 2-END): ";L
3920 PRINT :PLOT 12
3940 ON LGOTO 560,7900
3960 REM  ************ START OF #3 SEARCH *****************
3980 PRINT ,"SEE SINGLE ENTRY"
4000 PRINT
4020 CLEAR 150
4040 REM  ** OPEN FILES **
4060 GOSUB 4560
4080 REM
4100 GOSUB 4720
4120 REM
4140 DIM C$(X),P(LW,X)
4160 INPUT "COMPANY 'ID' NUMBER: ";N
4180 GET 2,1,6* N+ 1;C$(N)[6]:REM  GET CONAME
4200 GOSUB 4940
4220 INPUT "WEEK NUMBER: ";J
4240 I= 0:GET 1,J,5* I+ 1;P(J,I):REM  ** GET DATE **
4260 PRINT
4280 GET 1,J,5* N+ 1;P(J,N):REM  ** GET PRICE **
4300 PRINT
4320 PRINT C$(N),,"DATE: ";P(J,I),"PRICE: ";P(J,N)
4276 INPUT "CHANGE PRICE (Y/N)? ";A$
4360 IF A$= "N"GOTO 4420
4380 INPUT "CHANGED PRICE: ";P
4400 PUT 1,J,5* N+ 1;P
4420 PRINT
4440 FILE "C",1,2
4460 REM  ************* END OF #3 SEARCH ***************
4480 PRINT
4500 INPUT "WHERE NOW? (1-MENU, 2-END) ";L
4520 PLOT 12
4540 ON LGOTO 560,7900
4560 REM  ****** OPEN FILES, SET X AND LW ******
4580 FILE "R",1,"STOCKS",1:REM  ** OPEN FILE **
4600 FILE "R",2,"CONAME",1:REM  ** OPEN FILE **
4620 X= 11
4640 LW= 45
4660 RETURN
4680 REM  **********************************************
4700 REM
4720 REM  *** SELECT COMPANY ID NUMBERS ***
4740 PRINT "---------------------------------------------------------------"
4760 PRINT ,"'ID' NUMBERS"
4780 PRINT "0-DATE"
4800 PRINT "1-BAUSCH,2-ESKOD,3-ENGHDT,4-IBM,5-MASCO"
4820 PRINT "6-PRIME,7-MITCH,8-WANG,9-MATH,10-TANDEM"
4840 PRINT "11-INTLSY"
4860 PRINT "---------------------------------------------------------------"
4880 RETURN
4900 REM   **********************************************
4920 REM
4940 REM  ************************************************
4960 PRINT "---------------------------------------------------------------"
4980 PRINT "WEEKS CORRESPOND TO DATES AS FOLLOWS:"
5000 PRINT "XX=YY.ZZ, XX=YY.ZZ, XX=YY.ZZ, XX=YY.ZZ, XX=YY.ZZ"
5020 PRINT " 1=01.02,  2=01.09,  3=01.16,  4=01.23,  5=01.31"
5040 PRINT " 6=02.06,  7=02.13,  8=02.21,  9=02.27, 10=03.06"
5060 PRINT "11=03.13, 12=03.21, 13=03.27, 14=04.03, 15=04.11"
5080 PRINT "16=04.17, 17=04.24, 18=05.01, 19=05.08, 20=05.15"
5100 PRINT "21=05.22, 22=05.29, 23=06.05, 24=06.12, 25=06.19"
5120 PRINT "26=06.26, 27=07.03, 28=07.11, 29=07.17, 30=07.24"
5140 PRINT "31=07.31, 32=08.07, 33=08.14, 34=08.21, 35=08.28"
5160 PRINT "36=09.04, 37=09.11, 38=09.18, 39=09.25, 40=10.02"
5180 PRINT "41=10.09, 42=10.16, 43=10.23, 44=10.31, 45=11.06"
5200 PRINT "46=11.13, 47=11.21, 48=11.27, 49=12.04, 50=12.11"
5220 PRINT "51=12.18, 52=12.25"
5240 PRINT "---------------------------------------------------------------"
5260 RETURN
5280 REM  ***********************************************
5300 REM
5320 PRINT "CORRECTIONS"
5340 PRINT
5360 INPUT "SINGLE ENTRY CORRECTION (Y/N)? ";A$
5380 IF A$= "Y"THEN 3960
5400 REM  ** OPEN FILES **
5420 GOSUB 4560
5440 PRINT "CORRECT STOCK PRICES FOR SPLITS, ETC. "
5450 DIM C$(X),P(LW,X)
5460 REM  ** SELECT COMPANY **
5480 GOSUB 4720
5500 INPUT "'ID' NUMBER: ";I
5520 GET 2,1,6* I+ 1;C$(I)[6]
5530 PRINT C$(I)
5540 INPUT "# OF LAST WEEK TO BE CORRECTED? ";L
5560 FOR J= 1TO L
5580 GET 1,J,5* I+ 1;P(J,I):NEXT J
5600 PRINT C$(I)
5610 PRINT "WEEK","PRICE"
5620 FOR J= 1TO L
5640 PRINT J,P(J,I)
5660 NEXT J
5680 INPUT "INPUT FACTOR (F) TO CORRECT PRICE: ";F
5700 PRINT C$(I),"SPLIT P"
5720 FOR J= 1TO L
5740 P(J,I)= P(J,I)* F
5760 PRINT J,P(J,I)
5780 NEXT J
5800 FOR J= 1TO L
5820 PUT 1,J,5* I+ 1;P(J,I)
5840 NEXT J
5860 FILE "C",1,2
5880 GOTO 560
5900 REM
5920 REM  ** GRAPH ** TO HERE FROM SEARCH #1 **
5922 PRINT
5924 PRINT "CAN BE LOOPED STARTING WITH N"
5925 INPUT "HOW MANY LOOPS?";A
5926 PLOT 12
5927 N= N- 1
5928 FOR L= 1TO A
5929 GOSUB 4620:REM  ** GET VALUES FOR X AND LW **
5930 FOR I= 1TO X
5932 REM
5934 GOSUB 7500
5936 N= N+ 1
5940 IF N= 12THEN N= 1
6060 PLOT 6,2,15
6080 ID$= C$(N)
6100 PLOT 27,24
6120 PLOT 3,50,0
6140 PLOT 6,1,14
6160 PRINT ID$
6180 PLOT 15
6500 IF N= 1OR N= 2OR N= 4THEN 6580
6520 IF N= 3THEN 6700
6540 IF N= 5OR N= 6OR N= 7OR N= 8OR N= 10OR N= 11THEN 6700
6560 IF N= 9THEN 6840
6580 SP= 20
6600 GOSUB 7000
6620 FOR J= 1TO LW
6640 X= J* 2+ 10:PLOT 6,4
6660 PLOT 2,246,Y0,X,P(J,N)+ 5,255
6680 NEXT J:GOTO 7320
6700 SP= 10
6720 GOSUB 7000
6740 FOR J= 1TO LW
6760 X= J* 2+ 10
6780 PLOT 6,4
6800 PLOT 2,246,Y0,X,P(J,N)* 2+ 5,255
6820 NEXT J:GOTO 7320
6840 SP= 5
6860 GOSUB 7000
6880 FOR J= 1TO LW
6900 X= J* 2+ 10
6920 PLOT 6,4
6940 PLOT 2,246,Y0,X,P(J,N)* 4+ 5,255
6960 NEXT J:GOTO 7320
6980 REM
7000 REM  ** Y-SCALING DATA **
7020 X= 1:Y= 30:V= 0
7040 FOR Z= 1TO 6:PLOT 3,X,Y:PRINT V
7060 Y= Y- 5:V= V+ SP
7080 NEXT Z
7090 RETURN
7300 REM
7320 PLOT 6,2,27,11:REM  ** GREEN FG, SCROLL MODE **
7340 FOR T= 1TO 1000:NEXT T
7350 PLOT 12
7360 NEXT I
7370 NEXT L
7380 PLOT 12,14
7385 INPUT "ANOTHER SELECTION (Y/N)?";L$
7390 IF L$= "Y"THEN 2820
7395 GOTO 560:REM  ** RETURN TO MENU **
7400 REM
7500 REM  ** AXES **
7520 Y0= 5:X0= 10
7540 PLOT 6,4,2,127,Y0,242,X0,Y0,X0,127,255
7560 PLOT 27,24,6,1,15
7580 X= 13:Y= 31:H= 10
7600 FOR Z= 1TO 5
7620 PLOT 3,X,Y:PRINT H
7640 X= X+ 10:H= H+ 10
7660 NEXT Z
7680 PLOT 3,59,31,6,1,14:PRINT "WEEKS":PLOT 15
7700 REM  ** Y-AXIS **
7720 PLOT 3,0,0,27,10:PRINT "PRICE":PLOT 27,11
7740 REM  ** CUE LINES **
7760 X= 6:Y= 30
7780 Y= Y- 5:PLOT 3,X,Y
7800 IF Y= 0THEN 7860
7820 PRINT "----------------------------------------------------------"
7840 GOTO 7780
7860 RETURN
7900 END
7920 REM