10 ' PROGRAM NAME: PORTMRKT.BAS WRITTEN 27 AUG 1983 REV 14 SEP 1983 20 ' 30 ' ******************************************************************* 40 ' 50 DIM COMP.NAME$(25), QTY(25), PRICE(25), DELTA(25) 55 DIM TARGET(25) 60 ' 70 ' ******************************************************************* 80 ' * DRIVER MODULE * 90 ' * * 100 ' ******************************************************************* 110 ' 115 CLS 120 PRINT "PROGRAM PORTMRKT.BAS EXECUTING" 140 OPEN "A:DRIVE.DTA" FOR INPUT AS #1 150 INPUT #1, DRIVE$,PRNT$ 160 CLOSE #1 170 IF DRIVE$ = "A" OR DRIVE$ = "a" THEN GOSUB 300 ELSE GOSUB 400 180 ' 190 GOSUB 500 'PRIME READ 200 ' 210 GOSUB 600 'DATA READS 220 ' 230 GOSUB 800 'INPUT PRICE/DELTA PER SHARE 235 ' 240 WIDTH "LPT1:",132 242 ' SET UP DEFAULT CONDITIONS FOR IBM OR EPSON PRINTER 245 IF PRNT$ = "E" OR PRNT$ = "e" THEN GOSUB 2800 ELSE GOSUB 2900 248 ' 250 LPRINT CHR$(15); 'SET COMPRESSED CHAR ON 255 ' 260 GOSUB 1000 'PRINT REPORT 265 ' 270 GOSUB 2200 'CHECK/CORRECT REPORT OUTPUT 280 ' 290 GOSUB 2700 'EOJ HSKEEPING 295 ' 298 END 300 ' ******************************************************************* 310 ' * GOSUB 300 * 320 ' * GET DATA FROM DRIVE A * 330 ' ******************************************************************* 340 ' 350 PRINT "INSERT DATA DISKETTE IN DRIVE A" 355 PRINT "SET PRINTER TO TOP OF PAGE" 360 PRINT "VERIFY THAT PRINTER IS ON" 365 PRINT "STRIKE ANY KEY WHEN READY" 370 A$ = INKEY$: IF A$ = "" THEN 370 380 OPEN "A:HOLDLIST.DTA" FOR INPUT AS #2 390 RETURN 400 ' ******************************************************************* 410 ' * GOSUB 400 * 420 ' * GET DATA FROM DRIVE B * 430 ' ******************************************************************* 440 ' 450 PRINT "INSERT DATA DISKETTE IN DRIVE B" 455 PRINT "SET PRINTER TO TOP OF PAGE" 460 PRINT "VERIFY THAT PRINTER IS ON" 465 PRINT "STRIKE ANY KEY WHEN READY" 470 A$ = INKEY$: IF A$ = "" THEN 470 480 OPEN "B:HOLDLIST.DTA" FOR INPUT AS #2 490 RETURN 500 ' ******************************************************************* 510 ' * GOSUB 500 * 520 ' * PRIME READ MODULE * 530 ' ******************************************************************* 540 ' 550 INPUT #2, FILE.TITLE$,FILE.OWNER$,RECORD.COUNT,DATE.OF.RECORD$,UPDATE.DATE$ 560 RETURN 600 ' ******************************************************************* 610 ' * GOSUB 600 * 620 ' * READ IN ALL INPUT DATA * 630 ' ******************************************************************* 640 ' 650 FOR N = 1 TO RECORD.COUNT 660 IF EOF(2) THEN GOTO 740 670 INPUT #2, INAME$, IQTY, ICOST, ITARGET 680 COMP.NAME$(N) = INAME$ 690 QTY(N) = IQTY 700 TARGET(N) = ITARGET 720 TOTAL.SHARE.COUNT = TOTAL.SHARE.COUNT + IQTY 730 NEXT 740 CLOSE #2 745 N = N - 1 750 RETURN 800 ' ******************************************************************* 810 ' * GOSUB 800 * 820 ' * INPUT CURRENT PRICE/CHANGES PER SHARE * 830 ' ******************************************************************* 840 ' 845 INPUT "INPUT DATE FOR REPORT (DD MONTH YYYY) ", REPORT.DATE$ 850 ' 855 PRINT "INPUT CURRENT PRICE PER SHARE (A)" 860 PRINT " AND" 870 PRINT " PER SHARE PRICE CHANGE (B)" 880 PRINT " FOR FOLLOWING:" 890 PRINT 900 ' 910 FOR J = 1 TO N 920 PRINT COMP.NAME$(J) 930 INPUT "A = ", PRICE(J) 940 INPUT "B = ", DELTA(J) 950 NEXT 960 ' 970 INPUT "DO YOU WISH TO CORRECT AN INPUT (Y/N)? ", C$ 980 IF C$ = "Y" OR C$ = "y" THEN GOSUB 2500 990 RETURN 1000 ' ******************************************************************* 1010 ' * GOSUB 1000 * 1020 ' * PRINT REPORT * 1030 ' ******************************************************************* 1040 ' 1050 GOSUB 1300 'PRINT HEADERS 1055 ' 1060 FOR K = 1 TO N 1070 TTL.DELTA = DELTA(K) * QTY(K) 1080 TTL.PRICE = PRICE(K) * QTY(K) 1090 GRND.TTL.DELTA = GRND.TTL.DELTA + TTL.DELTA 1100 GRND.TTL.PRICE = GRND.TTL.PRICE + TTL.PRICE 1110 LPRINT TAB(12) USING "##,###"; QTY(K); 1120 LPRINT TAB(24) COMP.NAME$(K); 1130 LPRINT TAB(50) USING "###.###"; PRICE(K); 1140 LPRINT TAB(63) USING "##.###"; DELTA(K); 1150 LPRINT TAB(75) USING "###,###.##"; TTL.DELTA; 1160 LPRINT TAB(90) USING "#,###,###.##"; TTL.PRICE; 1170 LPRINT TAB(108) USING "###.###"; TARGET(K); 1180 IF PRICE(K) = TARGET(K) OR PRICE(K) > TARGET(K) THEN LPRINT TAB(122) "****" ELSE LPRINT TAB(122) " " 1200 NEXT 1210 ' 1220 GOSUB 1700 'PRINT TOTALS 1230 ' 1235 LPRINT CHR$(12); 'PRINTER HOF COMMAND 1240 ' 1250 RETURN 1300 ' ******************************************************************* 1310 ' * GOSUB 1300 * 1320 ' * PRINT HEADERS * 1330 ' ******************************************************************* 1340 ' 1345 LPRINT 1350 LPRINT: LPRINT 1355 ' HEADER #1 1360 LPRINT TAB(42) "PORTFOLIO EVALUATION - "; 1370 LPRINT TAB(65) REPORT.DATE$; 1380 LPRINT TAB(110) DATE$ 1390 LPRINT 1395 ' HEADER #2 1400 LPRINT TAB(52) FILE.OWNER$ 1410 LPRINT: LPRINT 1415 ' HEADER #3 1420 LPRINT TAB(12) "ACCOUNT"; 1430 LPRINT TAB(24) "SECURITY"; 1440 LPRINT TAB(50) "CURRENT"; 1450 LPRINT TAB(62) "PER SHARE"; 1460 LPRINT TAB(78) "TOTAL"; 1465 LPRINT TAB(91) "CURRENT"; 1470 LPRINT TAB(109) "SELL"; 1472 LPRINT TAB(121) "TARGET" 1475 ' HEADER #4 1480 LPRINT TAB(12) "QUANTITY"; 1485 LPRINT TAB(24) "NAME"; 1490 LPRINT TAB(50) "PRICE"; 1500 LPRINT TAB(63) "CHANGE"; 1510 LPRINT TAB(78) "CHANGE"; 1520 LPRINT TAB(91) "TOTAL VALUE"; 1530 LPRINT TAB(109) "TARGET"; 1540 LPRINT TAB(121) "REACHED" 1550 LPRINT: LPRINT 1560 ' 1570 RETURN 1700 ' ******************************************************************* 1710 ' * GOSUB 1700 * 1720 ' * PRINT TOTALS * 1730 ' ******************************************************************* 1740 ' 1745 ' TOTAL LINE 1 1750 LPRINT:LPRINT 1770 LPRINT TAB(11) USING "###,###"; TOTAL.SHARE.COUNT; 1780 LPRINT TAB(24) "TOTALS"; 1785 LPRINT TAB(72) USING "##,###,###.##"; GRND.TTL.DELTA; 1800 LPRINT TAB(89) USING "##,###,###.##"; GRND.TTL.PRICE 1840 ' 1850 RETURN 2200 ' ******************************************************************* 2210 ' * GOSUB 2200 * 2220 ' * CHECK/CORRECT PRINTED REPORT * 2230 ' ******************************************************************* 2240 ' 2250 PRINT "CHECK PRINTED REPORT " 2260 INPUT "DO YOU WISH TO CORRECT AND REPRINT (Y/N)? ", Q$ 2270 IF Q$ <> "Y" AND Q$ <> "y" THEN GOTO 2350 2280 ' 2290 GOSUB 2500 'CORRECT INPUTS 2300 ' 2310 GOSUB 1000 'PRINT REPORT 2315 ' 2320 GOTO 2250 2330 ' 2350 RETURN 2500 ' ******************************************************************* 2510 ' * GOSUB 2500 * 2520 ' * CORRECT INPUT * 2530 ' ******************************************************************* 2535 ' 2540 GRND.TTL.DELTA = 0 2545 GRND.TTL.PRICE = 0 2550 ' 2555 PRINT "INPUT NUMBER OF STOCK TO BE CORRECTED" 2560 PRINT " OR" 2570 PRINT " 0 TO END CORRECTIONS" 2580 INPUT CORRECTION.NUM 2590 IF CORRECTION.NUM = 0 THEN GOTO 2685 2600 IF CORRECTION.NUM < 1 OR CORRECTION.NUM > N THEN BEEP: GOTO 2550 2610 PRINT COMP.NAME$(CORRECTION.NUM) 2620 PRINT "ORIGINAL PRICE ENTERED WAS ", PRICE(CORRECTION.NUM) 2630 INPUT "NEW PRICE TO BE ENTERED IS "; PRICE(CORRECTION.NUM) 2640 PRINT "ORIGINAL PRICE CHANGE ENTERED WAS ", DELTA(CORRECTION.NUM) 2650 INPUT "NEW PRICE CHANGE TO BE ENTERED IS "; DELTA(CORRECTION.NUM) 2660 GOTO 2540 2670 ' 2680 ' 2685 PRINT "VERIFY THAT PRINTER IS ON" 2690 RETURN 2700 ' ******************************************************************* 2710 ' * GOSUB 2700 * 2720 ' * EOJ HOUSEKEEPING * 2730 ' ******************************************************************* 2740 ' 2750 PRINT "PROGRAM PROCESSING COMPLETED - PROGRAM ENDS" 2770 LPRINT CHR$(18); 'SET COMPRESSED CHAR OFF 2780 WIDTH "LPT1:",80 2795 RETURN 2800 '*********************************************************** 2805 '* SET EPSON PRINTER TO DEFAULT CONDITION * 2810 '*********************************************************** 2815 ' 2820 LPRINT CHR$(27); CHR$(64); 'TURN OFF ALL SPCL PRINTER CODES 2825 RETURN 2900 '*********************************************************** 2905 '* SET IBM PRINTER TO DEFAULT CONDITIONS * 2910 '*********************************************************** 2915 ' 2920 LPRINT CHR$(20); 'DOUBLE WIDTH CHAR OFF 2925 LPRINT CHR$(18); 'COMPRESSED CHAR OFF 2930 LPRINT CHR$(27); CHR$(50); 'DEFAULT LINE SPACING (1/6") 2935 LPRINT CHR$(27); CHR$(55); 'CHAR SET #1 SELECTED 2940 LPRINT CHR$(27); CHR$(57); 'PAPER OUT SWITCH ENABLED 2945 LPRINT CHR$(27); CHR$(70); 'EMPHASIZED CHAR OFF 2950 LPRINT CHR$(27); CHR$(72); 'DOUBLE STRIKE OFF 2955 LPRINT CHR$(27); CHR$(79); 'IGNORE SKIPS OVER PERFS 2960 LPRINT CHR$(27); CHR$(85); CHR$(0); 'SELECT BIDIRECTIONAL PRINT 2965 LPRINT CHR$(27); CHR$(84); 'SUB/SUPERSCRIPT OFF 2970 LPRINT CHR$(27); CHR$(87); CHR$(0); 'DOUBLE WIDE CHAR OFF 2975 LPRINT CHR$(27); CHR$(45); CHR$(0); 'UNDERLINING OFF 2980 ' 2985 RETURN 2990 ' 2995 '*********************************************************** ); CHR$(0); 'UNDERLINING OFF 2980 ' 2985 RETURN 2990 ' 2995 '***