Compucolor.org – Virtual Media

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

10 REM  CHECKBOOK MINDER / C.BELL
15 CLEAR  4500:DIM  CA$(99),DR(1):CA= 0:BD= 0:ZLLOC= - 1
16 FOR  I= 1 TO  7:READ  TPE$(I):NEXT  I
17 DATA  "BALANCE FORWARD","ADJUSTMENT","DEPOSIT (OUTSTD)","DEPOSIT (CLEARED)"
18 DATA  "CHECK (OUTSTD)","CHECK (CLEARED)","CHECK CANCELED"
45 BALFWD= 0:ALLOC= 0:TDAY$= "":FV= - 1
47 PLOT  12
48 PRINT "CHECKING ACCOUNT MAINTENANCE UTILITY (JAN 82)"
49 PRINT :PRINT :VF= - 1
50 INPUT  "ENTER TODAY'S DATE (MMDDYY): ";DATE$
55 GOSUB  9450:IF  LEN (DATE$)= 0 THEN  GOTO  50
56 TDAY$= DATE$
60 FC$= "CHKB"+ RIGHT$ (DATE$,2)+ ".YTD":FL= 1:FL$= "CHART.ACT"
61 PRINT
62 PRINT  "CONFIRM TODAYS DATE IS "+ LEFT$ (DATE$,2)+ "/"+ MID$ (DATE$,3,2)+ "/"+ RIGHT$ (DATE$,2)+ ": ";
65 INPUT  "";ANS$
70 IF  LEFT$ (ANS$,1)< > "Y" THEN  GOTO  50
72 PLOT  6,6,12
73 PRINT "":PRINT  "  COMPUCOLOR II CHECKING ACCOUNT MAINTENENCE UTILITY (JAN 82)"
74 PRINT  TAB( 10);"SELECT FUNCTION FROM FOLLOWING MENU..."
75 PRINT :IF  FV> 0 THEN  80
77 PRINT  TAB( 15);"INIT  INITIALIZE  LEDGER DATASET."
78 PRINT  TAB( 15);"LOAD  LOAD THE LEDGER INTO MEMORY."
79 IF  FV< 0 THEN  GOTO  87
80 PRINT  TAB( 15);"ADD   ADD NEW TRANSACTION TO LEDGER."
82 PRINT  TAB( 15);"EDIT  MODIFY EXISTING TRANSACTIONS."
83 PRINT  TAB( 15);"RECON RECONCILE ACCOUNT WITH BANK."
84 PRINT  TAB( 15);"LIST  LIST CHECK REG OR CHART OF ACCTS."
85 PRINT  TAB( 15);"DELET DELETE LAST TRANSACTION IN LEDGER."
87 PRINT  TAB( 15);"END   END PROGRAM EXECUTION."
88 PRINT :INPUT  ">>=>  ";ANS$
89 IF  ANS$= "INIT" THEN  GOSUB  5300:GOTO  72
90 IF  ANS$= "LOAD" THEN  GOSUB  5400:GOTO  72
92 IF  ANS$= "END" THEN  PRINT  "":PLOT  12:END :GOTO  92
96 IF  ANS$= "EDIT" THEN  GOSUB  8000:GOTO  72
97 IF  ANS$= "ADD" THEN  GOSUB  9500:GOTO  72
98 IF  ANS$= "RECON" THEN  GOSUB  3000:GOTO  72
99 IF  ANS$= "DELET" THEN  GOSUB  9520:FOR  ZZ= 1 TO  900:NEXT  ZZ:GOTO  72
100 IF  ANS$= "LIST" THEN  GOSUB  4000:GOTO  72
110 PRINT  "FUNCTION '"+ ANS$+ "' NOT SUPPORTED.":GOTO  88
3000 PLOT  12:PRINT  TAB( 10);"BANK RECONCILATION ROUTINE"
3005 PRINT
3010 PRINT  TAB( 15);"(1) CHECK CLEARED."
3015 PRINT  TAB( 15);"(2) DEPOSIT CLEARED"
3020 PRINT  TAB( 15);"(3) RECONCILE TO BANK STATEMENT BALANCE."
3025 PRINT  "":INPUT  "SELECT 1, 2, OR 3: ";TN
3027 IF  TN= 0 THEN  RETURN
3030 IF  TN< 1 OR  TN> 3 THEN  GOTO  3025
3035 ON  TN GOSUB  3100,3200,3300
3040 GOTO  3000
3100 PRINT :INPUT  "ENTER 1ST CHECK NUMBER: ";TC$
3105 PRINT  "SEARCHING FROM CURRENT POSITION IN FILE...":SR= 0
3110 FOR CP= CPTO ALLOC
3120 EL= CP:GOSUB  5500:IF  TYPE< > 5 THEN  3130
3124 IF  SR= 1 THEN  GOTO  3140
3125 IF  TC$= CK$ OR  VAL (TC$)= VAL (CK$) THEN  GOTO  3140
3130 NEXT  CP
3131 CP= CP- 1
3135 IF  SR= 0 THEN  INPUT  "CHECK NOT LOCATED.";ANS$:RETURN
3136 INPUT  "END OF CHECK CLEARED PROCESSING.";ANS$:RETURN
3140 SR= 1:NL= 1:GOSUB  4055
3145 PRINT :INPUT  "HAS THIS CHECK CLEARED ('*' TO END)? ";ANS$
3150 IF  LEFT$ (ANS$,1)= "*" THEN  RETURN
3151 IF  LEFT$ (ANS$,1)< > "Y" THEN  3130
3155 TYPE= 6:EL= CP:GOSUB  9905:GOTO  3130
3200 PRINT :INPUT  "ENTER DEPOSIT AMOUNT:";TA
3205 PRINT  "SEARCHING FROM CURRENT FILE POSITION..."
3210 FOR  CP= CP TO  ALLOC
3220 EL= CP:GOSUB  5500:IF  TYPE< > 3 THEN  3230
3225 IF  TA= AMT THEN  GOTO  3240
3230 NEXT  CP
3235 INPUT  "DEPOSIT NOT LOCATED.";ANS$:RETURN
3240 NL= 1:GOSUB  4055
3245 PRINT :INPUT  "IS THIS THE DEPOSIT: ";ANS$
3250 IF  LEFT$ (ANS$,1)< > "Y" THEN  RETURN
3255 TYPE= 4:EL= CP:GOSUB  9905:RETURN
3300 PLOT  12:PRINT  "DEVELOPING CROSS BANK STATEMENT TRIAL BALANCE"
3301 PRINT
3305 EL= ALLOC:GOSUB  5500:TB= BALFWD:ZB= BALFWD
3306 OD= 0:OC= 0:CD= 0:DD= 0
3307 PRINT  "YOUR ENDING BANK BALANCE: ";:AMT= TB:GOSUB  5000:PRINT  "":PRINT  ""
3310 FOR  EL= ALLOC TO  FV STEP  - 1
3315 GOSUB  5500
3316 IF  TYPE= 3 THEN  OD= OD+ 1:DD= DD+ AMT:TB= TB- AMT
3317 IF  TYPE= 5 THEN  OC= OC+ 1:CD= CD+ AMT:TB= TB- AMT
3320 NEXT  EL
3325 PRINT  "";OD;" OUTSTANDING DEPOSITS VALUED AT ";
3326 AMT= DD:GOSUB  5000:PRINT
3330 PRINT :PRINT  "";OC;" OUTSTANDING CHECKS VALUED AT ";
3331 AMT= CD:GOSUB  5000:PRINT
3335 PRINT  "":PRINT  "":PRINT  "THIS YEILDS A TRIAL BALANCE OF ";
3340 AMT= TB:GOSUB  5000
3345 PRINT :INPUT  "DOES THIS AMT VERIFY WITH YOUR BANK STATEMENT: ";ANS$
3350 IF  LEFT$ (ANS$,1)< > "Y" THEN  RETURN
3355 AMT= ZB:DATE$= TDAY$:CK$= "":TYPE= 1:DESC$= "BAL RECONCILED":BALFWD= ZB:CHART= 255
3360 GOSUB  9900:INPUT  "NEW BALANCE FORWARD ESTABLISHED.";ANS$:RETURN
4000 REM  LIST ROUTINE
4005 PLOT  6,6,12:PRINT  TAB( 10);"'LIST COMMAND'--SELECT ONE OF THE FOLLOWING:"
4010 PRINT :PRINT  TAB( 15);"REG   LIST CHECK REGISTER BY PAGE."
4015 PRINT  TAB( 15);"ACCTS CHART OF ACCOUNTS."
4020 PRINT  TAB( 15);"SCAN  SCAN FOR SPECIFIC ENTRY."
4022 PRINT  TAB( 15);"PRINT PRINT SECTION OF CHECK REGISTER."
4025 PRINT :INPUT  ">>=> ";ANS$
4026 IF  ANS$= "END" OR  ANS$= "0" THEN  RETURN
4030 IF  ANS$= "ACCTS" THEN  RQ= 1:GOTO  6000
4035 IF  ANS$= "SCAN" THEN  4200
4040 IF  ANS$= "REG" THEN  GOTO  4050
4042 IF  ANS$= "PRINT" THEN  GOTO  4150
4045 PRINT  "ERROR.":GOTO  4025
4050 REM  LIST CHECK REGISTER
4052 NL= 5:IF  CP= 0 THEN  CP= ALLOC:REM  START AT BOTTOM
4054 GOSUB  4055:GOTO  4110
4055 PLOT  12
4056 PLOT  6,6
4060 FOR  EL= CP- NL+ 1 TO  CP:IF  EL< FV THEN  EL= FV
4061 IF  EL= FV THEN  PRINT  "=====(TOP)============================================(TOP)====="
4065 GOSUB  5500:IF  TYPE< 1 THEN  GOTO  4105:REM  DESEGMENT THIS ENTRY
4070 PRINT  "(";EL;")  ";
4071 IF  CK< > 0 THEN  PRINT  "CK:"; RIGHT$ ("0000"+ CK$,5);"  ";:GOTO  4073
4072 PRINT  "CK: N/A   ";
4073 PRINT  DATE$;
4075 PRINT  TAB( 31);TPE$(TYPE);
4076 IF  TYPE= 1 THEN  BALFWD= AMT
4080 PRINT  TAB( 52):GOSUB  5000:PRINT  ""
4085 PRINT  DESC$;TAB( 52);"___________"
4090 IF  CHART= 255 THEN  PRINT :PRINT  TAB( 52);"";:GOTO  4100
4095 PRINT  CA$(CHART);TAB( 52);"";
4100 SA= AMT:AMT= BALFWD:GOSUB  5000:AMT= SA
4102 PRINT  ""
4103 IF  EL= ALLOC THEN  PRINT  "=====(BOTTOM)======================================(BOTTOM)=====":RETURN
4104 PRINT  "================================================================"
4105 NEXT  EL:RETURN
4110 INPUT  "ENTER REPOSITION VALUE: ";RV
4115 IF  RV= 0 THEN  RETURN
4120 CP= CP+ RV
4125 IF  CP> ALLOC THEN  CP= ALLOC
4130 IF  CP< FV THEN  CP= FV
4135 GOTO  4054
4150 REM  PRINT CKREG
4152 NL= 1:GOSUB  4055:PRINT  ""
4154 INPUT  "CONFIRM INTENT TO PRINT STARTING AT THIS TRANSACTION: ";ANS$
4156 IF  LEFT$ (ANS$,1)< > "Y" THEN  PRINT  "USE LIST MODE TO REPOSITION.":RETURN
4158 INPUT  "HOW MANY ENTRIES TO LIST? ";NL
4160 IF  NL< 1 THEN  4158
4161 IF  (CP+ NL)> ALLOC THEN  NL= ALLOC- CP
4162 CP= CP+ NL:INPUT  "READY PRINTER THEN PRESS RETURN:";WQ$
4164 PLOT  14,27,18,4,15,27,13:GOSUB  4055:POKE  33265,0:RETURN
4200 REM  FILE SCAN
4205 PLOT  6,6,12:PRINT  "CHECKBOOK SCAN ROUTINE":PRINT
4210 PRINT  TAB( 10);"(1) SCAN ON CHECK NUMBER"
4215 PRINT  TAB( 10);"(2) SCAN ON TRANSACTION AMOUNT"
4220 PRINT  TAB( 10);"(3) SCAN ON CHART OF ACCOUNTS."
4221 PRINT  TAB( 10);"(4) SCAN ON TRANSACTION TYPE."
4223 PRINT :INPUT  "SELECT TYPE (1-4): ";NN
4224 IF  NN< 2 OR  NN> 4 THEN  4234
4225 DR(0)= 010101:DR(1)= VAL (TDAY$):INPUT "CARE TO SELECT BY DATE:";ANS$:IF  LEFT$ (ANS$,1)< > "Y" THEN  4234
4226 KD= DATE:KD$= DATE$:INPUT  "ENTER START DATE RANGE: ";DATE$:GOSUB  9450
4227 IF  LEN (DATE$)< > 0 THEN  DR(0)= VAL (DATE$)
4228 INPUT  "ENTER ENDING DATE RANGE: ";DATE$:GOSUB  9450
4229 IF  LEN (DATE$)< > 0 THEN  DR(1)= VAL (DATE$)
4230 DATE= KD:DATE$= KD$
4234 ON  NN+ 1 GOTO  4240,4300,4400,4500,4600
4235 GOTO  4225
4240 RETURN
4300 NL= 1:PRINT :INPUT  "ENTER CHECK NUMBER TO FIND: ";TCN
4305 PLOT  12:PRINT  "SCANNING:":FOR  EL= FV TO  ALLOC:GOSUB  5500
4310 IF  CK= TCN THEN  CP= EL:GOSUB  4056:REM  PRINT IT.
4315 NEXT  EL:GOTO  4580
4400 NL= 1:PRINT :INPUT  "ENTER AMOUNT: ";TM
4405 PLOT  12:PRINT  "SCANNING:":TM= ABS (TM):FOR  EL= FV TO  ALLOC:GOSUB  5500
4410 IF  ABS (AMT)= TM AND  DR(0)< = DATE AND  DR(1)> = DATE THEN  CP= EL:GOSUB  4056:REM  PRINT MATCH
4415 NEXT  EL:GOTO  4580
4500 RQ= 0:FOR  UI= 0 TO  9:GOSUB  6000:UD(UI)= TC:IF  TC< 0 OR  TC> 254 THEN  4502
4501 NEXT  UI
4502 IF  UI= 0 THEN  PRINT  "LIST REQUESTED FOR 'NOT-ENCODED' TYPES.":UI= - 1:GOTO  4505
4503 UI= UI- 1:PRINT  "CONFIRM INTENT TO SCAN THE FOLLOWING: ":FOR  UJ= 0 TO  UI:PRINT  CA$(UD(UJ)):NEXT  UJ
4504 PRINT :INPUT  "(YES OR NO): ";ANS$:IF  LEFT$ (ANS$,1)< > "Y" THEN  4500
4505 INPUT  "PAUSE BY PAGE?";ANS$:PS= - 1:IF  LEFT$ (ANS$,1)= "Y" THEN  PS= 0
4506 INPUT  "OUTPUT TO SCREEN OR PRINTER? ";ANS$:IF  LEFT$ (ANS$,1)< > "P" THEN  4509
4507 INPUT  "READY PRINTER THEN PRESS RETURN:";WQ$
4508 PLOT  14,27,18,4,15,27,13
4509 PRINT  "SCANNING:":NL= 1:TA= 0:NN= 0:MM= 0:M1= 0:M2= 0:M3= 0
4510 FOR  CP= FV TO  ALLOC:EL= CP:GOSUB  5500
4511 IF  TYPE< 5 THEN  4550
4512 IF  UI= - 1 AND  CHART< 255 THEN  4550
4513 IF  UI= - 1 THEN  4520
4514 FOR  UJ= 0 TO  UI:IF  CHART= UD(UJ) THEN  4520
4515 NEXT  UJ:GOTO  4550
4520 IF  NN= 0 AND  PEEK (33265)= 0 THEN  PLOT  12
4521 IF  DATE< DR(0) OR  DATE> DR(1) THEN  4550
4525 MM= MM+ 1:GOSUB  4056
4526 IF  TYPE= 5 THEN  TA= TA+ AMT:M1= M1+ 1
4527 IF  TYPE= 6 THEN  TA= TA+ AMT:M3= M3+ 1
4528 IF  TYPE= 7 THEN  M2= M2+ 1
4530 NN= NN+ 1:IF  NN= 5 THEN  NN= 0:IF  PS= 0 THEN  INPUT  "PRESS RETURN TO VIEW MORE.";UU$
4550 NEXT  CP
4551 POKE  33265,0
4552 IF  NN> 4 THEN  INPUT  "PRESS RETURN TO SEE TOTALS:";UU$:PLOT  12
4555 PS= 0:PRINT  "END OF FILE REACHED."
4560 PRINT  "THERE WERE ";MM;" CHECKS ISSUED."
4565 PRINT  "TOTALING ";:AMT= TA:GOSUB  5000:PRINT  " AND AVERAGING ";:AMT= 0:IF  MM< > 0 THEN  AMT= TA/ MM
4566 GOSUB  5000:PRINT
4570 PRINT  "OF THESE, ";M1;" ARE OUTSTANDING  ";M2;" ARE CANCELED,"
4575 PRINT  "AND ";M3;"  HAVE CLEARED THE BANK."
4576 IF  M2> 0 THEN  PRINT  "(CANCELED CHECKS ARE NOT TOTALED IN AMOUNT)"
4580 PRINT :INPUT  "PRESS RETURN TO RETURN TO MAIN MENU.";UU$:RETURN
4600 NL= 1:PLOT  12:PRINT  "SELECT WHICH TRANSACTION TYPE"
4601 FOR  YT= 1 TO  7:PRINT  YT,TPE$(YT):PLOT  6,6:NEXT  YT
4602 PRINT :INPUT  "WHICH TYPE: ";YT:IF  YT< 1 OR  YT> 7 THEN  4602
4603 PLOT  12:PRINT  "SELECTING ";TPE$(YT)
4605 FOR  EL= FV TO  ALLOC:GOSUB  5500
4611 IF  TYPE= YT AND  DR(0)< = DATE AND  DR(1)> = DATE THEN  CP= EL:GOSUB  4056:REM  PRINT MATCH
4620 NEXT  EL:GOTO  4580
5000 REM  SUBROUTINE TO FORMAT VALUE IN AMT TO $
5005 IF  AMT> - .005 AND  AMT< .005 THEN  AMT= 0
5010 D1= INT (ABS (AMT)):IF  AMT< 0 THEN D1= - D1
5015 E1= INT ((1.005+ ABS (AMT)- ABS (D1))* 100)
5020 PRINT  "$";RIGHT$ ("     "+ STR$ (D1)+ "."+ RIGHT$ (STR$ (E1),2),10);
5025 RETURN
5100 REM  FILE MGMT ROUTINE
5105 REM  INPUTS: FL$=FILE NAME,RBA=REL BYTE FOR START OF STRING
5110 REM  INPUTS: FL=FILE #,RW=0 THEN READ, 1=WRITE
5115 REM  IN/OUT: WK$=INPUT OR OUTPUT STRING
5120 FILE "T",5125:GOTO 5145
5125 FILE "E",FL,ER,LN
5130 PRINT  "DISK ERROR IN FILE MANAGER."
5135 PRINT  "FILE-";FL,"ERROR-";ER,"LINE#-";LN
5140 PRINT  "EXECUTION TERMINATED.":END
5145 IF  RBA> 0 THEN GOTO 5160
5150 IF  RBA< 0 THEN FILE "C",FL:RETURN
5155 FILE "R",FL,FL$,1
5160 REM  CALCULATE BUFFER #
5165 BN= INT (RBA/ 128)+ 1:START= RBA- ((BN- 1)* 128)+ 1
5170 GET  FL,BN;BF$[128]
5175 IF  RW= 1 THEN GOTO 5215:REM  FILE WRITE REQUEST
5180 BF$= MID$ (BF$,START):REM  TRUNCATE TO START OF STRING
5185 LG= ASC (LEFT$ (BF$,1)):RBA= RBA+ LG+ 1:REM  STRING LENGTH
5190 IF  LG< LEN (BF$) THEN WK$= MID$ (BF$,2,LG):RETURN
5195 WK$= MID$ (BF$,2):REM  1ST OF STRING
5200 GET  FL,BN+ 1;BF$[128]
5205 WK$= WK$+ LEFT$ (BF$,(LG- LEN (WK$)))
5210 RETURN
5215 REM  FILE WRITE ROUTINE
5220 RBA= RBA+ LEN (WK$)+ 1
5225 WK$= CHR$ (LEN (WK$))+ WK$:REM  START WITH STRING LENGTH BYTE
5230 IF  (LEN (WK$)+ START- 1)> 128 THEN GOTO 5250:REM  SPANNED RECORD
5235 IF  START> 1 THEN BF$= LEFT$ (BF$,START- 1)+ WK$+ MID$ (BF$,START+ LEN (WK$)):GOTO 5245
5240 BF$= WK$+ MID$ (BF$,START+ LEN (WK$)):GOTO 5245
5245 PUT  FL,BN;BF$[128]:RETURN
5250 RL= START+ LEN (WK$)- 129:REM  CALC RESIDUAL LENGTH
5255 L1= LEN (WK$)- RL:REM  CALC LENGTH FIRST SEGMENT
5260 BF$= LEFT$ (BF$,START- 1)+ LEFT$ (WK$,L1)
5265 PUT  FL,BN;BF$[128]:GET  FL,BN+ 1;BF$[128]
5270 BF$= RIGHT$ (WK$,RL)+ MID$ (BF$,RL+ 1)
5275 PUT  FL,BN+ 1;BF$[128]
5280 RETURN
5300 REM  FILE INITIALIZATION
5305 PLOT  12:INPUT  "CONFIRM INTENT TO INITIALIZE YTD FILE: ";ANS$
5310 IF  LEFT$ (ANS$,1)< > "Y" THEN  RETURN
5312 INPUT  "HOW MANY 128 BYTE BLOCKS FOR CHART OF ACCTS FILE: ";BLK
5313 IF  BLK< 1 OR  BLK> 399 THEN  PRINT  "INVALID FILE SIZE.":GOTO  5312
5314 FILE  "N",FL$,BL,128,7
5319 INPUT  "HOW MANY 128 BYTE BLOCKS FOR CHECK FILEND : ";BLK
5320 IF  BLK< 1 OR  BLK> 399 THEN  PRINT  "INVALID FILE SIZE.":GOTO  5319
5321 BLK= BLK* 4:REM  # OF RECORDS
5322 BLK= INT ((BLK+ 31)/ 32)* 32
5323 PRINT  "SPACE ALLOCATED FOR ";BLK;" RECORDS IN FILE."
5325 FILE  "N",FC$,BLK,32,32
5326 FILE  "R",2,FC$,2
5327 FV= 2:ALLOC= 1:PUT  2,1;FV,ALLOC
5330 PLOT  12:PRINT  "FILE ";FC$;" IS ALLOCATED.":PRINT
5332 PRINT  "LOAD THE CHART OF ACCOUNTS":GOSUB  9015
5335 PRINT  "CHART OF ACCOUNTS IS ESTABLISHED."
5340 PRINT :INPUT  "ENTER INITIAL BALANCE: ";AMT
5345 PRINT  "CONFIRM INITIAL BALANCE OF ";:GOSUB  5000
5350 INPUT  ":";ANS$
5355 IF  LEFT$ (ANS$,1)< > "Y" THEN  GOTO  5340
5357 INPUT  "ENTER DATE ESTABLISHED: ";DATE$:GOSUB  9450:IF  LEN (DATE$)= 0 THEN  DATE$= TDAY$
5360 TYPE= 1:CK$= "":DESC$= "BALANCE FORWRD":CHART= 255
5361 BALFWD= AMT
5365 GOSUB  9900
5370 RETURN
5400 REM  LOAD CHART OF ACCTS AND OPEN CK FILE
5401 FILE  "R",2,FC$,5:GET  2,1;FV,ALLOC:CP= ALLOC
5402 RBA= 0:RW= 0
5405 FOR  ZLLOC= 0 TO  99
5410 GOSUB  5100:REM  READ ONE RECORD
5415 CA$(ZLLOC)= WK$:IF  LEN (WK$)= 0 THEN  ZLLOC= ZLLOC- 1:RBA= - 1:GOSUB  5100:RETURN
5420 NEXT  ZLLOC
5425 PRINT  "CHART OF ACCTS ARRAY OVERFLOW.":END
5500 REM  DESEGMENT RECORD
5502 REM  INPUT EL (ENTRY LOCASOR)
5505 REM  RETURNS TYPE,CK$,AMT,DATE$,DESC$
5506 IF  EL> ALLOC THEN  EL= ALLOC
5510 GET  2,EL;CK,DATE,AMT,BALFWD,TYPE$[1],CHART$[1],DESC$[14]
5515 TYPE= ASC (TYPE$)
5516 IF  TYPE= 0 THEN  RETURN
5540 CK$= STR$ (CK)
5545 ST$= STR$ (DATE):IF  DATE> 100000 THEN  ST$= MID$ (ST$,2)
5550 DATE$= LEFT$ (ST$,2)+ "/"+ MID$ (ST$,3,2)+ "/"+ RIGHT$ (ST$,2)
5557 CHART= ASC (CHART$)
5560 RETURN
6000 REM  LIST CHART OF ACCOUNTS ROUTINE...
6005 REM  INPUT=RQ   0=LIST WITH RESPONSE
6010 REM             1=LIST WITHOUT RESPONSE
6020 EL= - 1:SWT= 0
6022 PLOT  12
6023 PRINT  "   CHART OF ACCOUNTS.....":PRINT
6025 FOR  I= 1 TO  10
6030 EL= EL+ 1:IF  EL> ZLLOC THEN  GOTO  6109
6045 PRINT  "(";EL+ 1;"). ";CA$(EL);""
6050 PRINT
6105 NEXT  I
6109 IF  RQ= 0 THEN  GOTO  6112
6110 PRINT :INPUT  "***";ZZ$:IF  EL< ZLLOC THEN  GOTO  6022
6111 RETURN
6112 PRINT :INPUT  "SELECT ENTRY OR HIT RETURN: ";TC:IF  TC- 1> ZLLOC THEN  6112
6113 IF  TC> 0 THEN  TC= TC- 1:RETURN :REM  CHOICE IS IN TC.
6114 IF  TC< 0 THEN  GOTO  6020
6115 IF  EL< ZLLOC THEN  GOTO  6022
6120 TC= - 1:RETURN :REM  NONE CHOSEN
8000 REM  EDIT TRANSACTION AT CP
8001 PLOT  12:INPUT  "EDIT TRANSACTIONS OR CHART OF ACCOUNTS: ";ANS$:IF  LEFT$ (ANS$,1)= "T" THEN  8005
8002 IF  LEFT$ (ANS$,1)= "C" OR  LEFT$ (ANS$,1)= "A" THEN  8700
8003 GOTO  8001
8005 NL= 1:GOSUB  4055:PRINT  ""
8006 INPUT  "CONFIRM INTENT TO EDIT THIS TRANSACTION: ";ANS$
8009 IF  LEFT$ (ANS$,1)= "Y" THEN  GOTO  8050
8012 INPUT  "ENTER REPOSITION OR END: ";ANS$
8015 IF  LEFT$ (ANS$,1)= "E" OR  ANS$= "0" THEN  RETURN
8018 IF  LEFT$ (ANS$,1)< > "R" THEN  GOTO  8012
8021 PRINT  "SYSTEM WILL ENTER 'LIST' MODE FOR REPOSITIONING,"
8024 PRINT  "USE THE 'LIST' COMMAND POSITIONING FACILITY TO PLACE THE"
8027 PRINT  "TRANSACTION WHICH YOU DESIRE TO EDIT AS THE LAST TRANSACTION"
8030 PRINT  "ON THE PAGE.  THEN PRESS THE RETURN KEY TO RETURN TO 'EDIT."
8033 PRINT :INPUT  "PRESS ENTER TO EXIT TO EDIT ";ANS$
8036 GOSUB  4050:GOTO  8005
8050 IF  TYPE= 2 OR  TYPE> 4 THEN  PRINT :INPUT  "ENTER CK#,DATE,AMT,DESC,CHART,STATUS, OR END: ";ANS$
8051 IF  TYPE= 3 OR  TYPE= 4 THEN  PRINT :INPUT  "ENTER DATE,AMT,DESC,STATUS, OR END: ";ANS$
8052 IF  TYPE= 1 THEN  PRINT :INPUT  "ENTER DATE,AMT,DESC, OR END: ";ANS$
8056 IF  ANS$= "0" THEN  GOTO  8050
8059 IF  ANS$= "END" THEN  RETURN
8062 IF  ANS$= "CK#" THEN  GOTO  8200
8065 IF  ANS$= "DATE" THEN  GOTO  8250
8068 IF  ANS$= "AMT" THEN  GOTO  8300
8071 IF  ANS$= "DESC" THEN  GOTO  8350
8074 IF  ANS$= "CHART" THEN  GOTO  8400
8077 IF  ANS$= "STATUS" THEN  GOTO  8450
8080 PRINT  "VERB '";ANS$;"' IS NOT RECOGNIZED.":GOTO  8050
8100 INPUT  "CONFIRM INTENT TO REPLACE THIS TRANSACTION: ";ANS$
8106 IF  LEFT$ (ANS$,1)< > "Y" THEN  GOTO  8050
8109 EL= CP:GOSUB  9905
8110 NL= 1:GOSUB  4055:PRINT  ""
8120 GOTO  8050
8200 PRINT  "CHECK NUMBER WAS '";CK$;"'."
8203 INPUT  "ENTER NEW CHECK NUMBER:";CK$
8206 GOTO  8100
8250 PRINT  "DATE WAS '";DATE$;"'."
8255 INPUT  "ENTER NEW DATE: ";DATE$:GOSUB  9450:GOTO  8100
8300 REM  CHANGE THE AMT FIELD AND ADJUST THE REMAINING BALANCES
8303 OA= AMT:OB= BALFWD:OC= CP
8306 BALFWD= BALFWD- AMT:REM  SET TO PREV BAL FWD
8309 PRINT  "TRANACTION AMOUNT IS ";:GOSUB  5000:PRINT  "."
8312 INPUT  "ENTER NEW AMOUNT: ";AMT
8313 IF  TYPE> 4 AND  AMT> 0 THEN  AMT= - AMT
8314 IF  (TYPE= 3 OR  TYPE= 4) AND  (AMT< 0) THEN  AMT= - AMT
8315 PRINT  "TRANACTION AMOUNT IS ";:GOSUB  5000:PRINT  "."
8318 INPUT  "CONFIRM THIS TRANSACTION AMOUNT: ";ANS$
8321 IF  LEFT$ (ANS$,1)< > "Y" THEN  BALFWD= OB:AMT= OA:GOTO  8050
8330 IF  TYPE< > 7 THEN  BALFWD= BALFWD+ AMT
8331 EL= CP:GOSUB  9905:REM  UPDATE THIS TRANSACTION
8333 IF  CP= ALLOC OR  TYPE= 0 THEN  GOTO  8050
8336 BD= 1:FOR  EL= CP+ 1 TO  ALLOC
8339 OB= BALFWD:GOSUB  5500
8341 IF  TYPE= 1 OR  TYPE= 7 THEN  BALFWD= OB:GOTO  8343
8342 BALFWD= OB+ AMT
8343 GOSUB  9905
8345 NEXT  EL:BD= 0:CP= OC:FILE  "D",2
8346 EL= CP:GOSUB  5500
8348 GOTO  8050
8350 PRINT  "PREVIOUS DESC WAS '";DESC$;"'."
8355 INPUT  "ENTER NEW DESC: ";DESC$:GOTO  8100
8400 RQ= 0:GOSUB  6000:CHART= 0:IF  TC> 0 THEN  CHART= TC
8405 GOTO  8100
8450 PRINT  "PRESENT STATUS IS '";TPE$(TYPE);"'."
8453 IF  TYPE< 3 THEN  PRINT  "THIS TYPE MAY NOT BE ALTERED.":GOTO  8050
8456 IF  TYPE> 4 THEN  GOTO  8500
8459 PRINT  "SELECT!O E OF THE FOLLOWING:"
8462 PRINT :PRINT  "(1) ";TPE$(3):PRINT  "(2) ";TPE$(4)
8465 PRINT :INPUT  "ENTER 1 OR 2: ";ZI
8468 IF  ZI< 1 OR  ZI> 2 THEN  GOTO  8465
8471 TYPE= ZI+ 2:GOTO  8100
8500 PRINT  "SELECT ONE OF THE FOLLOWING1"
8505 PRINT :PRINT  "(1) ";TPE$(5):PRINT  "(2) ";TPE$(6)
8510 PRINT  "(3) ";TPE$(7)
8512 PRINT :INPUT  "ENTER 1, 2, OR 3: ";ZI
8515 IF  ZI< 1 OR  ZI> 3 THEN  GOTO  8512
8520 OT= TYPE:TYPE= ZI+ 4
8525 IF  OT< > 7 AND  TYPE< > 7 THEN  GOTO  8100
8530 REM  CHANGE BALANCES FOR CANCELED CHECK
8535 IF  OT< > 7 THEN  BALFWD= BALFWD- AMT
8540 GOTO  8330
8700 REM  EDIT A CHART OF ACCOUNTS ENTRY
8710 RQ= 0:GOSUB  6000:CHART= 0:IF  TC< 0 THEN  RETURN
8715 PLOT  12:PRINT  "ACCOUNT DESCRIPTION WAS '";CA$(TC);"'."
8720 PRINT :PRINT  "ENTER A NEW DESCRIPTION OR NULL TO LEAVE AS IS."
8725 INPUT  ":";ANS$:IF  ANS$= "" OR  ANS$= "0" THEN  RETURN
8730 CA$(TC)= ANS$
8735 GOTO  9100
9015 REM  THIS IS ADD TO CHART OF ACCTS
9025 FOR  ZLLOC= ZLLOC+ 1 TO  99
9030 PRINT :PRINT  "ENTER ACCT DESCRIPTION  (OR PRESS RETURN TO END)"
9031 INPUT  ":";CA$(ZLLOC)
9035 IF  CA$(ZLLOC)= "0" THEN  ZLLOC =  ZLLOC- 1:GOTO  9100
9040 NEXT  ZLLOC
9045 PRINT  "CHART OF ACCTS IS NOW FULL."
9100 RBA= 0:RW= 1
9110 FOR  IZ= 0 TO  ZLLOC:WK$= CA$(IZ):GOSUB  5100:NEXT  IZ
9120 WK$= "":GOSUB  5100:RBA= - 1:GOSUB  5100
9130 PRINT  "CHART OF ACCOUNTS STORED TO DISK."
9140 RETURN
9400 REM  PRINT MENU OF TRANSACTION TYPE
9405 PLOT  12
9410 PRINT  "SELECT TRANSACTION TYPE":PRINT
9416 PRINT  TAB( 10);"(1)  CHECK ISSUED."
9420 PRINT  TAB( 10);"(2)  DEPOSIT MADE."
9425 PRINT  TAB( 10);"(3)  ADJUSTMENT"
9427 PRINT  TAB( 10);"(4)  CHART OF ACCOUNTS"
9428 PRINT  TAB( 10);"(5)  SET VERIFY SWITCH ON"
9429 PRINT  TAB( 10);"(6)  SET VERIFY SWITCH OFF"
9430 PRINT :PRINT  "ENTER 1, 2, 3, OR 4: ":INPUT  "(PRESS RETURN TO END ADDITIONS)";TR
9431 IF  TR= 5 THEN  VF= - 1
9432 IF  TR= 6 THEN  VF= 0
9435 IF  TR< 0 OR  TR> 4 THEN  GOTO  9405
9440 RETURN
9450 REM  EDIT DATE
9452 IF  DATE$= "0" AND  LEN (TDAY$)> 0 THEN  DATE$= TDAY$:RETURN
9455 IF  LEN (DATE$)< > 6 THEN  GOTO  9490
9460 IF  LEFT$ (DATE$,2)< "01" OR  LEFT$ (DATE$,2)> "12" THEN  GOTO  9490
9465 IF  MID$ (DATE$,3,2)< "01" OR  MID$ (DATE$,3,2)> "31" THEN  GOTO  9490
9470 IF  RIGHT$ (DATE$,2)< "80" OR  RIGHT$ (DATE$,2)> "99" THEN  GOTO  9490
9475 RETURN
9490 PRINT  "BAD DATE.":DATE$= "":RETURN
9500 REM  ADD NEW TRANSACTION.
9505 GOSUB  9400:REM  GET TRANSACTION TYPE
9507 IF  TR= 0 THEN  RETURN
9510 ON  TR GOSUB  9600,9700,9800,9015:REM  CHECK,DEPOSIT,ADJUSTMENT,CHART OF ACT
9511 IF  NOT  VF THEN  9505
9512 NL= 1:GOSUB  4055:INPUT  "DELETE, EDIT, OR END: ";ANS$:IF  LEFT$ (ANS$,2)= "EN" OR  ANS$= "0" THEN  9505
9515 IF  LEFT$ (ANS$,2)= "ED" THEN  GOSUB  8050:GOTO  9505
9519 GOSUB  9520:GOTO  9505
9520 NL= 1:GOSUB  4055:INPUT  "CONFIRM INTENT TO DELETE: ";ANS$:IF  LEFT$ (ANS$,1)< > "Y" THEN  PRINT  "DELETE ABORTED":RETURN
9530 ALLOC= ALLOC- 1:CP= ALLOC:EL= ALLOC:PUT  2,1,5;ALLOC:FILE  "D",2:PRINT "ENTRY DELETED.":RETURN
9600 REM  ADD CHECK TO LEDGER
9602 EL= ALLOC:GOSUB  5500
9605 PLOT  12:PRINT  "ADD NEW CHECK TO LEDGER":PRINT
9610 INPUT  "ENTER CHECK NUMBER: ";CK$
9611 IF  CK$= "*" THEN  RETURN
9615 INPUT  "ENTER DATE ISSUED: ";DATE$:GOSUB  9450:IF  LEN (DATE$)= 0 THEN  GOTO  9615
9619 CHART= 255
9620 INPUT  "REF TO CHART OF ACCOUNTS? ";ANS$:IF  LEFT$ (ANS$,1)< > "Y" THEN  GOTO  9630
9625 RQ= 0:GOSUB  6000:CHART= TC:IF  CHART= - 1 THEN  CHART= 255
9626 IF TC> = 0THEN PLOT 12:PRINT "ACCOUNT SELECTED: "+ CA$(TC)
9630 INPUT  "ENTER DESCRIPTION: ";DESC$
9631 IF  DESC$= "0" THEN  DESC$= "":IF  CHART= 255 THEN  PRINT  "DESCRIPTION IS REQUIRED.":GOTO  9630
9633 IF  LEN (DESC$)> 14 THEN  PRINT  "DESCR SHORTENED TO 14 CHARS--'";LEFT$ (DESC$,14);"'."
9635 INPUT  "ENTER AMOUNT OF CHECK: ";AMT:IF  AMT< = 0 THEN  GOTO  9635
9640 AMT= - AMT
9642 TYPE= 5
9645 BALFWD= BALFWD+ AMT:GOSUB  9900:REM  ADD THE TRANSACTION
9660 CP= ALLOC:RETURN
9700 REM  ADD DEPOSIT TO LEDGER
9702 EL= ALLOC:GOSUB  5500
9705 PLOT  12:PRINT  "ADD DEPOSIT TO LEDGER":PRINT
9715 INPUT  "ENTER DATE ISSUED: ";DATE$:GOSUB  9450:IF  LEN (DATE$)= 0 THEN  GOTO  9715
9730 INPUT  "ANY COMMENT: ";DESC$:IF  DESC$= "0" THEN  DESC$= ""
9735 INPUT  "ENTER AMOUNT OF DEPOSIT: ";AMT:IF  AMT< = 0 THEN  GOTO  9735
9742 TYPE= 3:CK$= "":CHART= 255
9745 GOTO  9645
9800 REM  ADD AN ADJUSTMENT
9802 EL= ALLOC:GOSUB  5500
9805 PLOT  12:PRINT  "ADD ADJUSTMENT TO ACCOUNT.":PRINT
9815 INPUT  "ENTER DATE ISSUED: ";DATE$:GOSUB  9450:IF  LEN (DATE$)= 0 THEN  GOTO  9815
9830 INPUT  "TYPE OF ADJUSTMENT: ";DESC$:IF  DESC$= "0" THEN  GOTO  9830
9835 INPUT  "ENTER AMOUNT OF ADKUSTMENT: ";AMT:IF  AMT= 0 THEN  GOTO  9835
9836 PRINT  "CONFIRM ADJUSTMENT TO ACCOUNT IN AMOUNT OF ";
9837 GOSUB  5000:PRINT
9838 PRINT  "     FOR '"+ DESC$+ "";:INPUT  ":";ANS$
9839 IF  LEFT$ (ANS$,1)< > "Y" THEN  GOTO  9800
9840 TYPE= 2:CK$= "":CHART= 255
9845 GOTO  9645
9900 REM  ADD THE TRANSACTION
9901 ALLOC= ALLOC+ 1:PUT  2,1,5;ALLOC
9902 EL= ALLOC:GOSUB  9905:RETURN
9905 IF  LEN (DATE$)= 8 AND  MID$ (DATE$,3,1)= "/" THEN  DATE$= LEFT$ (DATE$,2)+ MID$ (DATE$,4,2)+ RIGHT$ (DATE$,2)
9906 DATE= VAL (DATE$)
9910 TYPE$= CHR$ (TYPE):CK= VAL (CK$)
9925 CHART$= CHR$ (CHART)
9929 PUT  2,EL;CK,DATE,AMT,BALFWD,TYPE$[1],CHART$[1],DESC$[14]
9930 IF  BD= 0 THEN  FILE  "D",2
9935 RETURN