Compucolor.org – Virtual Media

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

100 GOTO 1670
110 CLEAR 500:DIM T$(40),F$(6),O$(1),T2$(50),A(10),C1(10),Y1(10):FILE "T",1570:F$= "HOUSE"
120 PLOT 6,6,14,12:PRINT ,,"SIMPLE BOOKKEEPING PROGRAM":PRINT
130 PRINT "PLEASE ENTER THE NUMBER OF THE FUNCTION"
140 PRINT "LISTED BELOW WHICH YOU WISH TO PERFORM.":PRINT
150 PRINT ,"1 = CREATE A NEW DATA FILE FOR BOOKKEEPING"
160 PRINT ,"2 = ADD INCOME/EXPENSE CATEGORIES"
170 PRINT ,"3 = START NEW YEAR"
180 PRINT ,"4 = START NEW MONTH"
190 PRINT ,"5 = ADD ENTRIES (INCOME OR EXPENSE) TO THE DATA FILE"
200 PRINT ,"6 = PRINT MONTHLY SUMMARY"
210 PRINT ,"7 = PRINT DATA INPUT SHEET"
220 PRINT ,"8 = HELP/PROGRAM INFORMATION"
230 PRINT ,"9 = END THIS PROGRAM":PRINT
240 INPUT "WHAT FUNCTION DO YOU WANT TO PERFORM?  ";O
250 IF O< > INT (O)THEN PRINT "ERROR : MUST BE AN INTEGER":GOTO 240
260 IF O< 1OR O> 9THEN PRINT "ERROR : OUT OF RANGE (1 TO 9)":GOTO 240
270 ON OGOTO 280,340,550,620,680,890,1200,1310,1300
280 PLOT 6,6,15,12
290 PRINT "ENTER NAME OF NEW DATA FILE (6 CHAR MAX) : ";:INPUT F$
300 IF LEN (F$)> 1AND LEN (F$)< = 6THEN 320
310 GOSUB 1440:GOTO 290
320 FILE "N",F$,50,54,4:FILE "R",1,F$,5:NA= 0:HL= 1:LL= 1
330 PUT 1,50;NA,HL,LL:FILE "C",1:INPUT "FILE CREATED - HIT RETURN TO CONTINUE ";O:GOTO 120
340 GOSUB 1470
350 PRINT "ENTER NAME OF INCOME/EXPENSE CATEGORY(40 CHAR MAX) NUMBER ";NA+ 1:INPUT T$:IF  T$= "0"THEN 540
360 IF LEN (T$)> 1AND LEN (T$)< = 40THEN 380
370 GOSUB 1440:GOTO 350
380 C1= 0:Y1= 0
390 INPUT "IS THIS AN INCOME(I) OR EXPENSE(E) CATEGORY ? ";O$
400 IF LEFT$ (O$,1)= "I"THEN S1= 1:GOTO 430
410 IF LEFT$ (O$,1)= "E"THEN S1= - 1:GOTO 430
420 GOTO 390
430 PRINT "NAME = ";T$,"ACCT. # ";NA+ 1,O$
440 INPUT "IS THIS CATEGORY CORRECT ? ";C$
450 IF LEFT$ (C$,1)= "Y"THEN 480
460 IF LEFT$ (C$,1)= "N"THEN 350
470 GOTO 430
480 NA= NA+ 1:IF NA> = 50THEN GOSUB 1440
490 PUT 1,NA;T$[40],S1,C1,Y1
500 INPUT "DO YOU WANT TO ADD ANOTHER CATEGORY TO THIS FILE ? ";U$
510 IF LEFT$ (U$,1)= "Y"THEN 350
520 IF LEFT$ (U$,1)= "N"THEN 540
530 GOTO 500
540 PUT 1,50;NA:FILE "C",1:GOTO 120
550 GOSUB 1470:PRINT :PRINT :PRINT ,,"WORKING":FOR I= 1TO NA:GET 1,I;T$[40],S1,C1,Y1
560 C1= 0:Y1= 0:PUT 1,I;T$[40],S1,C1,Y1:NEXT I
570 HL= 1:LL= 1:PUT 1,50;NA,HL,LL:FILE "C",1:PLOT 12
580 PRINT :PRINT :PRINT "FILE IS SET FOR A NEW YEAR":PRINT :PRINT
590 PRINT "REMEMBER THAT ALL LINE NUMBERS ARE SET TO 1.":PRINT :PRINT :PRINT
600 INPUT "HIT RETURN TO CONTINUE  ";O
610 GOTO 120
620 GOSUB 1470:PRINT :PRINT :PRINT ,,"WORKING":FOR I= 1TO NA:GET 1,I;T$[40],S1,C1,Y1:C1= 0
630 PUT 1,I;T$[40],S1,C1,Y1:NEXT I
640 LL= HL:PUT 1,50;NA,HL,LL
650 FILE "C",1:PLOT 12:PRINT :PRINT :PRINT
660 PRINT ,"FILE IS SET FOR NEW MONTH":PRINT :PRINT :PRINT
670 INPUT "HIT RETURN TO CONTINUE ";O:GOTO 120
680 GOSUB 1470:PLOT 6,6,15,12:PRINT ,,"ACCOUNT CATEGORIES ARE :"
690 FOR I= 1TO NA:GET 1,I;T$[40],S1:PLOT 6,6,27,24
700 IF S1= 1THEN V$= "I"
710 IF S1= - 1THEN V$= "E"
720 L= 1:IF I/ 2= INT (I/ 2)THEN L= 37
730 PRINT TAB( L);I;TAB( L+ 4);LEFT$ (T$,20);TAB( L+ 25);V$;
740 NEXT I:XQ= 0:YQ= INT (NA/ 2+ .5)+ 3:HQ= 32- YQ:WQ= 64:CQ= 1:GOSUB 1590
750 PLOT 6,6,27,24
760 GOSUB 1630
770 PRINT "ENTER ACCOUNT #0 TO END INPUT":GOSUB 1630
780 PRINT "LINE # ";HL,"AMOUNT($) ";:INPUT A
790 GOSUB 1630
800 PRINT ,,"ACCOUNT # ";:INPUT A2:IF A2> 0THEN 830
810 FILE "C",1:PLOT 27,11,6,6,14,12:PRINT :PRINT :PRINT :PRINT ,,"DATA ENTRY COMPLETE"
820 PRINT :PRINT :PRINT ,,;:INPUT "HIT RETURN TO CONTINUE ";O:GOTO 120
830 IF A2< > INT (A2)THEN GOSUB 1630:PRINT "ERROR :MUST BE AN INTEGER!!":GOTO 790
840 IF A2< = NATHEN 860
850 GOSUB 1630:PRINT ,"ACCOUNT NUMBERS IN RANGE OF 1 - ";NA:GOTO 760
860 GET 1,A2;T$[40],S1,C1,Y1:A= A* S1:C1= C1+ A:Y1= Y1+ A
870 PUT 1,A2;T$[40],S1,C1,Y1
880 HL= HL+ 1:PUT 1,50;NA,HL,LL:GOTO 760
890 GOSUB 1470:PLOT 6,6,15:PRINT "ENTER CURRENT MONTH AND YEAR FOR TITLE OF REPORT (NO COMMA'S)":INPUT T2$
900 P$= "":INPUT "DO YOU WANT THIS PRINTED ON THE PRINTER ?";P$
910 PRINT "HIT RETURN WHEN READY TO PRINT ";:INPUT Z:PLOT 6,6,15,12
920 IF LEFT$ (P$,1)= "Y"THEN GOSUB 1460
930 PRINT :PRINT :PRINT :PRINT :PRINT TAB( 28);F$:PRINT TAB( 16);"SUMMARY REPORT FOR ";T2$:PRINT :PRINT
940 PRINT "ACCT.";TAB( 15);"ACCOUNT";TAB( 40);"TYPE";TAB( 46);"CURRENT";TAB( 55);"YEAR TO"
950 PRINT " #";TAB( 15);"CATEGORY";TAB( 39);"(I/E)";TAB( 47);"MONTH";TAB( 55);"TO DATE"
960 PRINT :PRINT :E1= 0:E2= 0:I1= 0:I2= 0
970 FOR I= 1TO NA:GET 1,I;T$[40],S1,C1,Y1
980 C1= ABS (C1)* 100:C1= INT (C1+ .005)
990 Y1= ABS (Y1)* 100:Y1= INT (Y1+ .005)
1000 IF S1= 1THEN 1020
1010 E1= E1+ C1:E2= E2+ Y1:GOTO 1030
1020 I1= I1+ C1:I2= I2+ Y1
1030 IF S1= 1THEN V$= "I"
1040 IF S1= - 1THEN V$= "E"
1050 C1$= "        "+ STR$ (C1):Y1$= "        "+ STR$ (Y1)
1060 E1$= "        "+ STR$ (E1):E2$= "        "+ STR$ (E2)
1070 I1$= "        "+ STR$ (I1):I2$= "        "+ STR$ (I2)
1080 N1$= "        "+ STR$ (I1- E1):N2$= "        "+ STR$ (I2- E2)
1090 PRINT I;TAB( 5);LEFT$ (T$,35);TAB( 42);V$;TAB( 44);
1100 PRINT MID$ (C1$,LEN (C1$)- 7,6);".";RIGHT$ (C1$,2);TAB( 54);
1110 PRINT MID$ (Y1$,LEN (Y1$)- 7,6);".";RIGHT$ (Y1$,2):NEXT I:PRINT :PRINT
1120 PRINT TAB( 15);"GROSS INCOME";TAB( 44);MID$ (I1$,LEN (I1$)- 7,6);".";RIGHT$ (I1$,2);
1130 PRINT TAB( 54);MID$ (I2$,LEN (I2$)- 7,6);".";RIGHT$ (I2$,2)
1140 PRINT :PRINT TAB( 18);"TOTAL EXPENSES";TAB( 44);MID$ (E1$,LEN (E1$)- 7,6);".";RIGHT$ (E1$,2);
1150 PRINT TAB( 54);MID$ (E2$,LEN (E2$)- 7,6);".";RIGHT$ (E2$,2)
1160 PRINT :PRINT TAB( 21);"NET INCOME (CASH BASIS)";TAB( 44);MID$ (N1$,LEN (N1$)- 7,6);".";
1170 PRINT RIGHT$ (N1$,2);TAB( 54);MID$ (N2$,LEN (N2$)- 7,6);".";RIGHT$ (N2$,2)
1180 PRINT :PRINT TAB( 6);"CURRENT ENTRIES FROM LINE ITEMS ";LL;" THRU ";HL:IF LEFT$ (P$,1)= "Y"THEN PRINT CHR$ (12)
1190 GOSUB 1450:PLOT 6,6,15:FILE "C",1:INPUT "PRESS ENTER TO CONTINUE";X:GOTO 120
1200 PLOT 12:PRINT :PRINT :PRINT :INPUT "ENTER LOWEST LINE NUMBER DESIRED ON THE INPUT SHEET : ";LO:LO= INT (LO)
1210 IF LO< 1THEN PRINT "LOWEST LINE NUMBER ALLOWED IS 1":GOTO 1200
1220 L9$= "":FOR I= 1TO 30:L9$= L9$+ "_":NEXT I:L8$= "_"+ "!"+ LEFT$ (L9$,8)+ "!"+ LEFT$ (L9$,4)+ "!"
1230 L8$= L8$+ LEFT$ (L9$,30)+ "!"+ LEFT$ (L9$,6)+ "!"+ LEFT$ (L9$,10)
1240 GOSUB 1460:PRINT CHR$ (27)CHR$ (121)CHR$ (12):PRINT :PRINT :PRINT TAB( 27);"DATA INPUT SHEET":PRINT
1250 PRINT " LINE";TAB( 7)"AMOUNT"TAB( 15)"ACCT"TAB( 21)"DESCRIPTION"TAB( 52)"DATE"TAB( 60)"REMARKS"
1260 FOR I= LOTO LO+ 39:PRINT TAB( 5)"!"TAB( 14)"!"TAB( 19)"!"TAB( 50)"!"TAB( 57)"!"
1270 I$= "":I$= "    "+ STR$ (I):I$= RIGHT$ (I$,4):PRINT I$;L8$:NEXT I:PRINT CHR$ (12)
1280 GOSUB 1450:GOTO 120
1290 PRINT :PRINT :INPUT "HIT RETURN TO CONTINUE ";O:GOTO 120
1300 PLOT 6,2,14,12:PRINT :PRINT :PRINT :PRINT ,"END OF BOOKKEEPING PROGRAM":FOR I= 1TO 2000:NEXT :LOAD "MENU":RUN
1310 PLOT 6,6,15,12:PRINT :PRINT :PRINT
1320 PRINT "THIS IS A SIMPLE BOOKKEEPING SYSTEM"
1330 PRINT "BASED ON THE CONCEPT THAT YOU HAVE LINE"
1340 PRINT "ITEM EXPENSES AND INCOMES WHICH ARE ACCRUED"
1350 PRINT "INTO ACCOUNT CATEGORIES. CURRENT MONTH AND"
1360 PRINT "YEAR-TO-DATE TOTALS ARE KEPT. WHEN YOU CREATE"
1370 PRINT "A NEW FILE,ALL TOTALS ARE SET TO ZERO AS THEY"
1380 PRINT "ARE WITH THE NEW YEAR OPTION BUT WITH THE NEW"
1390 PRINT "MONTH OPTION ONLY THE CURRENT MONTH TOTALS ARE"
1400 PRINT "RESET TO ZERO. PLEASE USE THE OPTION TO PRINT"
1410 PRINT "THE DATA INPUT SHEETS AS THE SYSTEM PROMPTS YOU"
1420 PRINT "FOR INPUT BY LINE ITEM NUMBER.":PRINT :PRINT
1430 INPUT "HIT RETURN TO CONTINUE ";O:GOTO 120
1440 PRINT "ERROR - ENTRY OUT OF RANGE":RETURN
1450 POKE 33289,64:POKE 33265,0:RETURN
1460 PRINT ,,"PRINTING":POKE 33289,80:PLOT 14,27,18,6,27,13:RETURN
1470 PLOT 15,27,4:PRINT "DIR":PLOT 27,27,6,2,15
1480 PRINT :PRINT "HIT RETURN TO USE -";F$;"- DATA FILE OTHERWISE"
1490 INPUT "ENTER NAME OF YOUR DATA FILE (6 CHAR MAX) : ";G$
1500 IF LEN (G$)= 1THEN 1550
1510 IF LEN (G$)> 1THEN F$= G$
1520 IF LEN (F$)> 1AND LEN (F$)< = 6THEN 1550
1530 GOSUB 1440
1540 GOTO 1470
1550 FILE "R",1,F$,6:PLOT 12
1560 GET 1,50;NA,HL,LL:RETURN
1570 PRINT :PRINT
1580 PRINT "DISK FILE ERROR - RUN PROGRAM AGAIN ":PRINT :GOTO 1300
1590 GOSUB 1830
1600 ZQ= 28672+ 128* YQ+ XQ+ XQ:AD= TM+ 2:GOSUB 1820
1610 ZQ= 128- WQ- WQ:AD= TM+ 25:GOSUB 1820
1620 POKE TM+ 5,HQ- 1:POKE TM+ 7,WQ* (CQ+ 1):POKE TM+ 19,35* (1- CQ):RETURN
1630 YQ= YQ+ 1:IF YQ> = 32THEN ZZ= CALL (O):YQ= 31
1640 GOSUB 1650:PRINT SPC( WQ)""
1650 PLOT 3,0,YQ:RETURN
1660 GOSUB 1630:GOTO 1630
1670 GOSUB 1830
1680 RESTORE 1690
1690 DATA 33,-1,-1,6,-1,14,-1,17,128,0,25,126
1700 DATA 17,128,255,25,119,35,-1,13,194,-1,-1
1710 DATA 17,-1,-1,25,5,194,-1,-1,201
1720 IF TM> 65503THEN TM= TM- 32:GOTO 1750
1730 FOR I= 1TO 32:READ A
1740 IF A> = 0AND A< > PEEK (TM+ 1)THEN I= 32:TM= TM- 32:NEXT
1750 RESTORE 1690
1760 FOR I= 1TO 32:READ A:POKE TM+ I,A- (A< 0):NEXT
1770 ZQ= TM+ 1:AD= 33283:GOSUB 1820
1780 ZQ= TM:AD= ER:GOSUB 1820
1790 ZQ= TM+ 6:AD= TM+ 30:GOSUB 1820
1800 ZQ= TM+ 8:AD= TM+ 22:GOSUB 1820
1810 CLEAR 50:GOTO 110
1820 ZZ= INT (ZQ/ 256):POKE AD,ZQ- 256* ZZ:POKE AD+ 1,ZZ:RETURN
1830 ER= 32940:TM= 256* PEEK (ER+ 1)+ PEEK (ER):RETURN