Home of the original IBM PC emulator for browsers.
[PCjs Machine "ibm5150"]
Waiting for machine "ibm5150" to load....
The financial portion of this disk has 20 useful, easy-to-use
progams, including such handy routines as loan amortization, asset
depreciation, and bond yield. The inventory portion of this disk is
well documented and includes routines to take cash register input data,
generate pick lists, and report inventory.
The package also represents a wide range of excellent adoptable or
adaptable applications of BASIC source code for financial functions for
anyone studying the BASIC programming language.
File Descriptions:
B1 BAS Future value of an investment.
B3 BAS Regular deposits.
B2 BAS Future value of regular deposits.
B4 BAS Regular withdrawals from an investment.
B6 BAS Minimum investment for withdrawals.
B5 BAS Initial investment.
B7 BAS Nominal interest rate.
B8 BAS Effective interest rate on investment.
B9 BAS Earned interest table.
B10 BAS Depreciation table.
B12 BAS Salvage value.
B11 BAS Depreciation amount.
B14 BAS Principal on a loan.
B13 BAS Discount commercial paper.
B16 BAS Last payment on a loan.
B15 BAS Regular payment on a loan.
B19 BAS Annual interest rate on loan.
B18 BAS Term of a loan.
B17 BAS Remaining balance on a loan.
INVENRPT BAS POS Inventory -- Inventory reporting.
B20 BAS Mortgage amortization table.
FINANCE BAS Amortization, present and future values, interest rate.
BUSIN BAS Menu for above B??.BAS programs.
INVENPRC BAS POS Inventory -- Inventory transaction processing.
CASHREG BAS POS Inventory -- Cash register transaction processing. ---
----- --- POS Inventory.
INTEREST BAS Prints compound interest factors.
INVENTRY DOC POS Inventory -- Documentation.
PICKTRAN BAS POS Inventory -- Picking list transaction processing.
PICKER BAS POS Inventory -- Picking list generation.
START BAS POS Inventory -- Main menu.
0 CLS
10 PRINT "FUTURE VALUE OF AN INVESTMENT"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "INITIAL INVESTMENT";
40 INPUT P
50 PRINT "NOMINAL INTEREST RATE";
60 INPUT I
70 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR";
80 INPUT N
90 INPUT "NUMBER OF YEARS ";Y0
95 INPUT "NUMBER OF MONTHS ";M
104 REM - CALCULATE YEARS FROM YEARS AND MONTHS
105 Y = (12 * Y0 + M) / 12
108 REM - CALCULATE INTEREST RATE PER PERIOD;
109 REM - CONVERT FROM PERCENTTO DECIMAL
110 I = I / N / 100
119 REM - CALCULATE FUTURE VALUE BY FORMULA
120 T = P * (1 + I) ^ (N * Y)
130 PRINT "FUTURE VALUE=$"; INT (T * 100 + 0.5) / 100
139 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
140 PRINT
149 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED
150 INPUT "Would you like to run again (Y/N) <N> ";A$
160 IF A$="y" OR A$="Y" THEN 0
170 INPUT "Would you like to return to the main menu or business (M/B) <B> ? ";A$
180 IF A$="M" OR A$="m" THEN RUN "MENU" ELSE RUN "BUSIN"
10 CLS:PRINT:PRINT"DEPRECIATION RATE"
20 PRINT
30 PRINT "ORIGINAL PRICE";
40 INPUT P
50 PRINT "RESALE PRICE";
60 INPUT T
70 PRINT "YEARS";
80 INPUT Y
89 REM - REM - CALCULATE DEPRECIATION RATE BY FORMULA, CONVERT TO PERCENT
90 D = 100 * (1 - (T / P) ^ (1 / Y))
99 REM - ROD OFF, PRINT
100 PRINT "DEPRECIATION RATE ="; INT (1000 * D + 0.5) / 1000;"%"
110 PRINT
119 REM - RESTART OR END PROGRAM?
120 PRINT "MORE DATA (1=YES, 0=NO)";
130 INPUT X
140 IF X = 1 THEN 20
150 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "DEPRECIATION AMOUNT"
20 PRINT
30 PRINT "ORIGINAL PRICE";
40 INPUT P
50 PRINT "DEPRECIATION RATE";
60 INPUT I
69 REM - CONVERT FROM PERCENT TO DECIMAL
70 I = I / 100
80 PRINT "--(ENTER YEAR=0 WHEN NO MORE AMOUNTS DESIRED FOR THIS ITEM)--"
90 PRINT "YEAR";
100 INPUT Y
109 REM - THROUGH CALCULATING FOR THIS ITEM?
110 IF Y = 0 THEN 160
119 REM - CALCULATE DEPRECIATION AMOUNT BY FORMULA
120 D = P * I * (1 - I) ^ (Y - 1)
129 REM - ROUND OFF TO NEAREST CENT, PRINT
130 PRINT "DEPRECIATION = $"; INT (D * 100 + 0.5) / 100
140 PRINT
149 REM - RETURN FOR NEXT YEAR NUMBER
150 GOTO 90
159 REM - RESTART OR END PROGRAM?
160 PRINT "MORE DATA (1=YES, 0=NO)";
170 INPUT X
180 IF X = 1 THEN 20
190 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "SALVAGE VALUE"
20 PRINT
30 PRINT "ORIGINAL PRICE";
40 INPUT P
50 PRINT "DEPRECIATION RATE";
60 INPUT I
70 PRINT "--(ENTER YEARS=0 WHEN NO MORE VALUES DESIRED FOR THIS ITEM)--"
80 PRINT "YEARS";
90 INPUT Y
99 REM - CALCULATE ANOTHER SALVAGE VALUE?
100 IF Y = 0 THEN 140
108 REM - CALCULATE SALVAGE VALUE BY FORMULA, ROUND OFF, PRINT.
109 REM - DEPRECIATION RATE CONVERTED TO DECIMAL FOR USE IN CALCULATIONS
110 PRINT "VALUE = $"; INT (100 * P * (1 - I / 100) ^ Y + 0.5) / 100
120 PRINT
129 REM - RETURN FOR NEXT YEAR NUMBER
130 GOTO 80
139 REM - RESTART OR END PROGRAM?
140 PRINT "MORE DATA (1=YES, 0=NO)";
150 INPUT X
160 IF X = 1 THEN 20
170 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "DISCOUNT COMMERCIAL PAPER"
20 PRINT
29 REM - STATEMENTS 30 TO 90 REQUEST USER INPUT
30 PRINT "FUTURE VALUE";
40 INPUT T
50 PRINT "DISCOUNT RATE";
60 INPUT D
69 REM - CONVERT PERCENT TO DECIMAL
70 D = D / 100
80 PRINT "DAYS TO MATURITY";
90 INPUT N
99 REM - CLACULATE DISOUNT, PRINT
100 D1 = T * D * N / 360
110 PRINT "DISCOUNT = $";D1
119 REM - CALCULATE COST, PRINT
120 PRINT " COST = $";T - D1
129 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
130 PRINT
139 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED
140 PRINT "MORE DATA (1=YES, 0=NO)";
150 INPUT X
160 IF X = 1 THEN 20
170 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "PRINCIPAL ON A LOAN"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "REGULAR PAYMENT";
40 INPUT R
50 PRINT "TERM IN YEAR, MONTHS";
60 INPUT Y0,M
64 REM - CALCULATE YEARS FROM YEARS AND MONTHS
65 Y = (12 * Y0 + M) / 12
70 PRINT "ANNUAL INTEREST RATE";
80 INPUT I
90 PRINT "NUMBER OF PAYMENTS PER YEAR";
100 INPUT N
108 REM - CALCULATE AMOUNT OF PRINCIPAL BY FORMULA;
109 REM - INTEREST CONVERTED FROM PERCENT TO DECIMAL FOR CALCULATIONS
110 P = R * N * (1 - 1 / ((I / 100) / N + 1) ^ (N * Y)) / (I / 100)
119 REM - ROUND OFF TO NEAREST CENT, PRINT
120 PRINT "PRINCIPAL = $"; INT (P * 100 + 0.5) / 100
129 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
130 PRINT
139 REM - RESTART OR END PROGRAM?
140 PRINT "MORE DATA? (1=YES, 0=NO)";
150 INPUT X
160 IF X = 1 THEN 20
170 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "REGULAR PAYMENT ON A LOAN";
19 REM - ROUND OFF TO NEARES T CENT, PRINT
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "TERM IN YEARS, MONTHS";
40 INPUT Y0,M
44 REM - CALCULATE YEARS FROM YEARS AND MONTHS
45 Y = (12 * Y0 + M) / 12
50 PRINT "PRINCIPAL";
60 INPUT P
70 PRINT "ANNUAL INTEREST RATE";
80 INPUT I
90 PRINT "NUMBER OF PAYMENTS PER YEAR"
100 INPUT N
108 REM - CALCULATE AMOUNT OF REGULAR PAYMENT BY FORMULA
109 REM - INTEREST CONVERTED FROM PERCENT TO DECIMAN FOR CALCULATIONS
110 R = ((I / 100) * P / N) / (1 - 1 / ((I / 100) / N + 1) ^ (N * Y))
119 REM - ROUND OFF TO NEAREST CENT, PRINT
120 PRINT "REGULAR PAYMENT = $"; INT (R * 100 + 0.5) / 100
129 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
130 PRINT
139 REM - RESTART OR END PROGRAM
140 PRINT "MORE DATA? (1=YES, 0=NO)";
150 INPUT X
160 IF X = 1 THEN 20
170 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "LAST PAYMENT ON A LOAN"
20 PRINT
29 REM - STATEMENTS 30 TO 130 REQUEST USER INPUT
30 PRINT "REGULAR PAYMENT";
40 INPUT R
50 PRINT "PRINCIPAL";
60 INPUT P
70 PRINT "TERM IN YEARS, MONTHS";
80 INPUT Y0,M
84 REM - CALCULATE YEARS FROM YEARS AND MONTHS
85 Y = (12 * Y0 + M) / 12
90 PRINT "ANNUAL INTEREST RATE";
100 INPUT I
109 REM - CONVERT ITERST FROM PERCENT TO DECIMAL
110 I = I / 100
120 PRINT "NUMBER OF PAYMENTS PER YEAR";
130 INPUT N
140 B0 = P
149 REM - COMPUTE ALL PAYMENTS, BALANCES THROUGH LAST PAYMENT USING R
150 FOR J1 = 1 TO N * Y
159 REM - ROUND OFF INTEREST PAID TO NEAREST CENT
160 I1 = INT ((B0 * I / N) * 100 + 0.5) / 100
169 REM - CALCULATE AMOUNT AMORTIZED WITH EACH PAYMENT
170 A = R - I1
179 REM - BALANCE REMAINING DECREASES WITH EACH PAYMENT
180 B0 = B0 - A
190 NEXT J1
199 REM - CALCULATE LAST PAYMENT, ROUND OFF, PRINT
200 PRINT "LAST PAYMENT =$"; INT ((R + B0) * 100 + 0.5) / 100
210 PRINT
219 REM - RESTART OR END PROGRAM?
220 PRINT "MORE DATA? (1=YES, 0=NO)";
230 INPUT X
240 IF X = 1 THEN 20
250 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "REMAINING BALANCE ON A LOAN"
20 PRINT
29 REM - STATEMENTS 30 TO 130 REQUEST USER INPUT
30 PRINT "REGULAR PAYMENT";
40 INPUT R
50 PRINT "PRINCIPAL";
60 INPUT P
70 PRINT "NUMBER OF PAYMENTS PER YEAR";
80 INPUT N
90 PRINT "ANNUAL INTEREST RATE";
100 INPUT I
109 REM - CONVERT FROM PERCENT TO DECIMAL
110 I = I / 100
119 REM - ENTER THE PAYMENT NUMBER WITHIN THE YEAR, I.E. N1<=N
120 PRINT "LAST PAYMENT MADE ( PAYMENT N0. , YEAR )";
130 INPUT N1,Y
139 REM - INITIALIZE REMAINING BALANCE
140 B0 = P
149 REM - LOOP TO ACCUMULATE AMOUNT PAID SO FAR
150 FOR J1 = 1 TO N * (Y - 1) + N1
159 REM - CALCULATE INTEREST PAID WITH EACH PAYMENT
160 I1 = INT ((B0 * I / N) * 100 + 0.5) / 100
169 REM - CALCULATE AMOUNT AMORTIZED WITH EACH PAYMENT
170 A = R - I1
179 REM - CALCULATE REMAINING BALANCE ON PRINCIPAL
180 B0 = B0 - A
190 NEXT J1
199 REM ROUND OFF, PRINT
200 PRINT "REMAINING BALANCE = $"; INT (B0 * 100 + 0.5) / 100
210 PRINT
219 REM - RESTART OR END PROGRAM
220 PRINT "MORE DATA? (1=YES, 0=NO)";
230 INPUT X
240 IF X = 1 THEN 20
250 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "TERM OF A LOAN"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "REGULAR PAYMENT";
40 INPUT R
50 PRINT "PRINCIPAL";
60 INPUT P
70 PRINT "ANNUAL INTEREST RATE";
80 INPUT I
90 PRINT "NUMBER OF PAYMENTS PER YEAR";
100 INPUT N
108 REM - CALCULATE TERM IN YEARS BY FORMULA;
109 REM - INTEREST CONVERTED FROM PERCENT TO DECIMAL FOR CALCULATION
110 Y = - ( LOG (1 - (P * (I / 100)) / (N * R)) / ( LOG (1 + I / 100 / N) * N))
114 REM - CALCULATE YEARS AND MONTHS FROM YEARS
115 M = INT (Y * 12 + 0.5)
116 Y0 = INT (M / 12)
117 M = M - Y0 * 12
119 REM - PRINT RESULTS
120 PRINT "TERM = ";Y0;" YEARS, ";M;" MONTHS"
130 PRINT
139 REM - RESTART OR END PROGRAM?
140 PRINT "MORE DATA? (1=YES, 0=NO)";
150 INPUT X
160 IF X = 1 THEN 20
170 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "ANNUAL INTEREST RATE ON A LOAN"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "REGULAR PAYMENT";
40 INPUT R
50 PRINT "TERM IN YEARS, MONTHS";
60 INPUT Y0,M
64 REM - CALCULATE YEARS FROM YEARS AND MONTHS
65 Y = (12 * Y0 + M) / 12
70 PRINT "PRINCIPAL";
80 INPUT P
90 PRINT "NUMBER OF PAYMENTS PER YEAR";
100 INPUT N
109 REM - GUESS AN INTEREST RATE (10%) TO INITIATE TESTING
110 I = 10
119 REM - I2*LAST GUESS OR ESTIMATE ( START WITH 0 )
120 I2 = 0
129 REM - COMPUTE REGULAR PAYMENT USING GUESSED INTEREST RATE
130 R1 = (I * P / N) / (1 - 1 / ((I / N + 1) ^ (N * Y)))
139 REM - ROUND OFF TO NEAREST CNET
140 R1 = INT (R1 * 100 + 0.5) / 100
149 REM - I3=NUMBER USED TO CLOSE IN ON INTEREST RATE
150 I3 = ABS (I - I2) / 2
159 REM - SAVE THIS GUESS
160 I2 = I
168 REM - COMPARE COMPUTED PAYMENT (R1) TO INPUT PAYMENT (R);
169 REM - IF THEY'RE EQUAL, LAST RATE GUESSED=APPROXIMATE REG. PAYMENT
170 IF R1 = R THEN 230
180 IF R1 > R THEN 210
189 REM - R1<R, RATE MUST BE HIGHTER THAN LAST GUESS
190 I = I + I3
199 REM - RETEST WITH NEW GUESS
200 GOTO 130
209 REM R1>R, RATE MUST BE LOWER THAN LAST GUESS
210 I = I - I3
219 REM - RETEST WITH NEW GUESS
220 GOTO 130
229 REM - COMPUTE INTEREST TO PROPER PROPORTIONS, ROUND OFF, PRINT
230 I = (( INT ((I * 1000) * 100 + 0.5)) / 100) / 1000
240 PRINT "ANNUAL INTEREST RATE = ";I * 100;"%"
250 PRINT
259 REM - RESTART OR END PROGRAM
260 PRINT "MORE DATA? (1=YES, 0=NO)";
270 INPUT X
280 IF X = 1 THEN 20
290 RUN "BUSIN"
0 CLS : PRINT
10 PRINT "FUTURE VALUE OF REGULAR DEPOSITS": PRINT " (ANNUITY)"
20 PRINT
30 PRINT "AMOUNT OF REGULAR DEPOSITS";
40 INPUT R
50 PRINT "NOMINAL INTEREST RATE";
60 INPUT I
70 PRINT "NUMBER OF DEPOSITS PER YEAR";
80 INPUT N
90 PRINT "NUMBER OF YEARS, MONTHS";
100 INPUT YO, M
105 Y = YO + M / 12
110 I = I / N / 100
120 T = R * (( 1 + I) ^ (N * Y) - 1) / I
130 PRINT "FUTURE VALUE = $"; INT (T * 100 + 0.5) / 100
140 PRINT
150 PRINT "MORE DATA? (1 = YES, 0 = NO) ";
160 INPUT X
170 IF X = 1 THEN 20
180 RUN "BUSIN"
0 CLS:PRINT
5 REM this version updated and revised july 1986
7 BY DAVID R. MOFFATT
10 PRINT "MORTGAGE AMORTIZATION TABLE"
20 PRINT
30 PRINT "REGULAR PAYMENT";
40 INPUT R
50 PRINT "TERM IN YEARS, MONTHS";
60 INPUT Y0,M
65 Y = (12 * Y0 + M) / 12
70 PRINT "PRINCIPAL";
80 INPUT P
90 PRINT "ANNUAL INTEREST RATE";
100 INPUT I
110 I = I / 100
120 PRINT "NUMBER OF PAYMENTS PER YEAR";
130 INPUT N
140 PRINT "START PRINTING WITH WHAT YEAR";
150 INPUT X
155 PRINT "K"
160 X = INT (X)
170 C1 = 0
180 I2 = 0
190 I3 = 0
200 J0 = 0
210 N1 = N
220 K = 66
230 B0 = P
240 A1 = 0
250 A2 = 0
260 IF INT (Y) < 1 THEN 690
270 FOR J0 = 1 TO INT (Y)
275 IF J0=INT(Y) THEN 410
280 IF J0 < X THEN 410
290 IF K + N + 3 < 58 THEN 400
300 FOR K1 = K TO 66
310 PRINT
320 NEXT K1
330 LPRINT " "
340 LPRINT " MORTGAGE AMORTIZATION TABLE"
350 LPRINT " PRINCIPAL $";P;" AT ";I * 100;"% FOR ";Y0;" YEARS ";M;" MONTHS"
360 LPRINT " REGULAR PAYMENT= $";R
370 LPRINT " "
380 LPRINT "NO."; TAB( 10);"INTEREST"; TAB( 20);"PRINCIPAL";TAB( 31);"BALANCE"; TAB( 40);"ACCUM INTEREST"
390 K = 7
400 K = K + N + 3
410 FOR J1 = 1 TO N1
420 I1 = INT ((B0 * I / N) * 100 + 0.5) / 100
430 C1 = C1 + 1
440 A=INT((R-I1)*100+0.5)/100
450 A1=INT((A1+A)*100+0.5)/100
460 B0=INT((P-A1)*100+0.5)/100
470 IF C1 < > N * Y THEN 520
480 R = R + B0
490 A=INT((A+B0)*100+0.5)/100
500 A1 = A1 + B0
510 B0 = 0
520 I2=INT((I2+I1)*100+0.5)/100
530 I3=INT((I3+I1)*100+0.5)/100
540 A2=INT((A2+A)*100+0.5)/100
550 IF J0 < X THEN 570
560 LPRINT J1; TAB( 10);I1; TAB( 20);A; TAB( 30);B0; TAB( 40);I2
570 NEXT J1
580 IF C1 < > N * Y THEN 600
590 LPRINT " LAST PAYMENT = $";( INT (R * 100 + 0.5)) / 100
600 IF J0 < X THEN 640
610 LPRINT " "
620 LPRINT "YR.";J0; TAB( 10);I3; TAB( 20);A2
630 LPRINT " "
640 IF J0 > Y THEN 720
650 I3 = 0
660 A2 = 0
670 IF Y=J0 THEN 720
680 NEXT J0
690 N1 = ((Y - INT (Y)) * 12) / 12 * N
700 J0=J0
710 GOTO 280
720 PRINT
730 PRINT "CHANGE DATA AND RECOMPUTE? (1=YES, 0=NO)";
740 INPUT Z
750 IF Z = 1 THEN 20
760 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "REGULAR DEPOSITS"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "TOTAL VALUE AFTER 'Y' YEARS";
40 INPUT T
50 PRINT "NOMINAL INTEREST RATE";
60 INPUT I
70 PRINT "NUMBER OF DEPOSITS PER YEAR";
80 INPUT N
90 PRINT "NUMBER OF YEARS, MONTHS";
100 INPUT Y0,M
104 REM - CALCULATE YEARS FROM YEARS AND MONTHS
105 Y = (12 * Y0 + M) / 12
108 REM - CALCULATE INTEREST RATE PER DEPOSIT;
109 REM - CONVERT FROM PERCENT TO DECIMAL
110 I = I / N / 100
119 REM - CALCULATE AMOUNT OF REGULAR DEPOSIT BY FORMULA
120 R = T * I / ((I + 1) ^ (N * Y) - 1)
129 REM - ROUND OFF TO NEAREST CENT,PRINT
130 PRINT "REGULAR DEPOSITS = $"; INT (R * 100 + 0.5) / 100
139 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
140 PRINT
149 REM - RESTRT OR END PROGAM? USER INPUT REQUIRED
150 PRINT "MORE DATA? (1=YES, 0=NO)";
160 INPUT X
170 IF X = 1 THEN 20
180 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "REGULAR WITHDRAWALS FROM AN INVESTMENT"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "INITIAL INVESTMENT";
40 INPUT P
50 PRINT "NOMINAL INTEREST RATE";
60 INPUT I
70 PRINT "NUMBER OF WITHDRAWALS PER YEAR";
80 INPUT N
90 PRINT "NUMBER OF YEARS, MONTHS";
100 INPUT Y0,M
104 REM - CALCULATE YEARS FROM YEARS AND MONTHS
105 Y = (12 * Y0 + M) / 12
108 REM - CALCULATE INTEREST RATE PER WITHDRAWAL;
109 REM - CONVERT FROM PERCENT TO DECIMAL
110 I = I / N / 100
119 REM - CALCULATE REGULAR WITHDRAWAL BY FORMULA
120 R = P * (I / ((1 + I) ^ (N * Y) - 1) + I)
129 REM - ROUND OFF TO NEAREST CENT, PRINT
130 PRINT "AMOUNT OF EACH WITHDRAWAL =$"; INT (R * 100 + 0.5) / 100
139 REM - PRINT BLANK LINE TO SEPARATE QUESTION FROM DATA
140 PRINT
149 REM - RESTART OR END PROGRAM?
150 PRINT "MORE DATA? (1=YES, 0=NO)";
160 INPUT X
170 IF X = 1 THEN 20
180 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "INITIAL INVESTMENT"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "TOTAL VALUE AFTER Y YEARS";
40 INPUT T
50 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR";
60 INPUT N
70 PRINT "NUMBER OF YEARS, MONTHS";
80 INPUT Y0,M
84 REM - CALCULATE YEARS FROM YEARS AND MONTHS
85 Y = (12 * Y0 + M) / 12
90 PRINT "NOMINAL INTEREST RATE";
100 INPUT I
108 REM - CALCULATE INTEREST RATE PER PERIOD;
109 REM - CONVERT FROM % TO DECIMAL
110 I = I / N / 100
120 P = T / (1 + I) ^ (N * Y)
129 REM - ROUND OFF TO NEAREST CENT, PRINT
130 PRINT "INITIAL INVESTMENT = $"; INT (P * 100 + 0.5) / 100
139 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
140 PRINT
149 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED
150 PRINT "MORE DATA?(1=YES, 0=NO)";
160 INPUT X
170 IF X = 1 THEN 20
180 RUN "BUSIN"
5 CLS
10 PRINT "MINIMUM INVESTMENT FOR WITHDRAWALS"
20 PRINT
29 REM - STATEMENTS 30 TO 100 REQUEST USER INPUT
30 PRINT "AMOUNT OF WITHDRAWALS";
40 INPUT R
50 PRINT "NOMINAL INTEREST RATE";
60 INPUT I
70 PRINT "NUMBER OF WITHDRAWALS PER YEAR";
80 INPUT N
90 PRINT "NUMBER OF YEARS, MONTHS";
100 INPUT Y0,M
104 REM - CALCULATE YEARS FROM YEARS AND MONTHS
105 Y = (12 * Y0 + M) / 12
109 REM - CONVERT FROM PERCENT TO DECIMAL
110 I = I / 100
119 REM - CALCULATE MINIMUM INVESTMENT BY FORMULA
120 P = R * N / I * (1 - 1 / ((1 + I / N) ^ (N * Y)))
129 REM - ROUND OFF TO NEAREST CENT, PRINT
130 PRINT "MINIMUM INVESTMENT = $"; INT (100 * P + 0.5) / 100
139 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
140 PRINT
149 REM - RESTART OR END PROGRAM? USER INPUT REQUIRED
150 PRINT "MORE DATA (1=YES,0=NO)";
160 INPUT X
170 IF X = 1 THEN 20
180 RUN "BUSIN"
0 CLS : PRINT
10 PRINT "NOMINAL INTEREST RATE ON INVESTMENTS"
20 PRINT
30 PRINT "PRINCIPAL";
40 INPUT P
50 PRINT "TOTAL VALUE";
60 INPUT T
70 PRINT "NUMBER OF YEARS, MONTHS";
80 INPUT Y0,M
84 Y = Y0 + M / 12
90 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR";
100 INPUT N
110 I2 = N * ((T / P) ^ (1 / (N * Y)) - 1) * 100
115 PRINT
120 PRINT "NOMINAL INTEREST RATE = ";I2;"%"
130 PRINT
140 PRINT "MORE DATA: (1=YES,0=NO)";
150 INPUT X
160 IF X = 1 THEN 20
170 RUN "BUSIN"
0 CLS:PRINT
10 PRINT "EFFECTIVE INTEREST RATE ON INVESTMENTS"
29 REM - STATEMENTS 30-80 REQUEST USER INPUT
30 PRINT "INITIAL INVESTMENT";
40 INPUT P
50 PRINT "TOTAL VALUE AFTER Y YEARS";
60 INPUT T
70 PRINT "NUMBER OF YEARS";
80 INPUT Y
89 REM - CALCULATE EFFECTIVE INTEREST RATE, PRINT
90 PRINT "ANNUAL INTEREST RATE =";((T / P) ^ (1 / Y) - 1) * 100;"%"
99 REM - PRINT BLANK LINE TO SEPARATE DATA FROM QUESTION
100 PRINT
109 REM - RESTART OR END PROGRAM?
110 PRINT "MORE DATA? (1=YES, 0=NO)";
120 INPUT X
130 IF X = 1 THEN 30
140 RUN "BUSIN"
1 CLS:PRINT
3 REM - ROUND OFF FUNCTION
5 DEF FN R(X) = INT (X * 100 + 0.5) / 100
10 PRINT "EARNED INTEREST TABLE"
20 PRINT
29 REM - STATEMENTS 30 TO 230 REQUEST USER INPUT
30 PRINT "PRINCIPLE";
40 INPUT P
50 PRINT "NOMINAL INTEREST RATE";
60 INPUT I
69 REM - CONVERT PERCENT TO DECIMAL
70 I = I / 100
80 PRINT "NUMBER OF DEPOSITS/WITHDRAWALS PER YEAR";
90 INPUT N1
99 REM - DON'T ASK FOR AMOUNT IF FREQUENCY IS ZERO
100 IF N1 = 0 THEN 160
108 REM - DEPOSITS ARE ENTERED AS A POSITIVE NUMBER
109 REM - WITHDRAWALS ARE ENTERED AS A NEGATIVE NUMBER
110 PRINT "AMOUNT OF DEPOSIT/WITHDRAWAL";
120 INPUT R
130 N = 360
139 REM - PRINT AT EACH DEPOSIT/WITHDRAWAL
140 L2 = N1
150 GOTO 200
160 PRINT "NUMBER OF COMPOUNDING PERIODS PER YEAR";
170 INPUT N
180 N1 = 0
189 REM - PRINT FOUR TIMES PER YEAR
190 L2 = 4
200 PRINT "START WITH WHAT YEAR";
210 INPUT X
220 PRINT "END PRINTING WITH WHAT YEAR";
230 INPUT Y
239 REM - START PRINTING AT THE BEGINNING OF A YEAR
240 X = INT (X)
249 REM - INITIATE RUNNING TOTALS
250 B0 = P
260 I1 = 0
270 I2 = 0
280 I3 = 0
290 K = 24
300 P1 = 4
310 FOR J0 = 1 TO INT (Y) + 1
319 REM - START PRINTING?
320 IF J0 < X THEN 480
329 REM - TEST FOR END OF PAGE
330 IF K < 22 THEN 450
339 REM - SPACE TO NEXT PAGE, PRINT HEADINS (ASSUMED 24 LINES PER PAGE)
340 FOR K1 = K TO 24
350 LPRINT
360 NEXT K1
370 K = 6
380 LPRINT " EARNED INTEREST TABLE"
390 LPRINT " PRINC. $";P;" AT ";I * 100;"% NOMIN. FOR ";Y;" YEARS"
399 REM - SKIP DEP/WITHDRWL HEADING IF THERE ARE NONE
400 IF N1 = 0 THEN 430
410 LPRINT "REGULAR DEPST./WITHDRWL $";R;" ";N1;" TIMES PER YR."
419 REM - K COUNTS THE NUMBER OF PRINTED LINES PER PAGE
420 K = K + 1
430 LPRINT " EFFECTIVE INTEREST RATE "; FN R(100 * ((1 + I / N) ^ N - 1));"% PER YEAR"
440 LPRINT
450 LPRINT "YEAR ";J0
455 LPRINT
460 LPRINT "BALANCE","INTRST.","ACC.INT"
465 LPRINT
480 L1 = 1
490 N2 = 1
500 P2 = 1
510 FOR J1 = 1 TO N
519 REM - DEPOSIT/WITHDRAW ANY MORE THIS YEAR?
520 IF N2 > N1 THEN 560
529 REM - TIME TO MAKE DEP/WTHDRW?
530 IF N2 / N1 > J1 / N THEN 560
539 REM - CALCULATE NEW BALANCE
540 B0 = B0 + R
549 REM - COUNT DEPOSITS/WTHDRWLS MAKE PER YEAR
550 N2 = N2 + 1
560 B2 = B0 * (1 + I / N)
569 REM - I1=AMOUNT INTEREST WITH EACH COMPOUNDING PERIOD
570 I1 = B2 - B0
579 REM - I3=AMOUNT INTEREST ACCUMULATED BETWEEN POSTING
580 I3 = I3 + I1
589 REM - I2=TOTAL INTEREST ACCUMULATED TO DATE
590 I2 = I2 + I1
599 REM - ROUND AT INTEREST POSTING TIME
600 IF P2 / P1 > J1 / N THEN 640
610 I2 = FN R(I2)
620 B2 = FN R(B2)
630 P2 = P2 + 1
639 REM - TEAR TO START PRINTING?
640 IF J0 < X THEN 710
649 REM - TIME TO PRINT A LINE?
650 IF J1 / N < L1 / L2 THEN 710
660 L1 = L1 + 1
670 LPRINT FN R(B2), FN R(I3), FN R(I2)
679 REM - INTEREST POSTED, REINITIALIZE INTEREST ACCUM. BETWEEN POSTINGS
680 I3 = 0
690 K = K + 1
699 REM - TEAR NUMBER PRINTED WITH FIRST POSTING IN EACH YEAR ONLY
700 LPRINT
710 B0 = B2
719 REM - NO MORE LINES TO PRINT IN LAST YEAR
720 IF J0 + J1 / N - 1 > = Y THEN 780
730 NEXT J1
739 REM - START PRINTING?
740 IF J0 < X THEN 770
750 LPRINT
760 K = K + 1
770 NEXT J0
780 LPRINT
789 REM - RESTART OR END PROGRAM?
790 PRINT "CHANGE DATA AND RECOMPUTE? (1=YES, 0=NO)";
800 INPUT Z
810 PRINT
820 IF Z = 1 THEN 20
840 RUN "BUSIN"
10 CLS :' EDITED BY ats 11.26.91 BUSIN.BAS ---------------
20 PRINT "PROGRAMS IN THE BUSINESS CATAGORY:"
30 PRINT
40 FOR I = 1 TO 21
50 READ A$
60 IF I < 10 THEN PRINT " ";
70 IF I > 9 THEN PRINT " ";
80 PRINT I;". ";A$
90 NEXT I
100 PRINT : INPUT "WHICH PROGRAM WOULD YOU LIKE TO USE ";A$
105 IF A$="21" THEN RUN "MENU
110 IF VAL(A$) <1 OR VAL(A$) >20 THEN RESTORE:GOTO 10
115 CLS:PRINT
120 RUN "B"+A$
130 DATA "FUTURE VALUE OF AN INVESTMENT","ANNUITY","REGULAR DEPOSITS","REGULAR WITHDRAWALS","INITIAL INVESTMENT"
140 DATA "MIN INVEST FOR WITHDRAWALS","NOMINAL INTEREST RATE ","EFFECTIVE INTEREST RATE","EARNED INTEREST TABLE", "DEPRECIATION RATE"
150 DATA "DEPRECIATION AMOUNT","SALVAGE VALUE","DISCOUNT COMMERCIAL PAPER","PRINCIPAL ON A LOAN","REGULAR PAYMENT ON A LOAN"
160 DATA "LAST PAYMENT ON A LOAN","REMAINING BALANCE ON LOAN","TERM OF A LOAN","ANNUAL INTEREST RATE ON LOAN","MORT AMORT TABLE","RETURN TO MAIN MENU"
1 ON ERROR GOTO 9000
10 REM
20 REM CASHREG
30 REM
40 DIM ITEM$(1000),REC(1000),CITM(50),QNT(50):COMMON F$:X=0
50 FF$=F$:I=LEN(FF$):G$=LEFT$(FF$,2)
60 IF G$="B:" OR G$="A:" THEN X=2
70 IF I-X>3 THEN 100
80 GG$="DLY":IF X=2 THEN GG$=G$+GG$
90 GOTO 110
100 GG$=LEFT$(FF$,I-3)+"DLY"
110 WIDTH "LPT1:",80:WIDTH 80:SCREEN 0,0,0:COLOR 7,0:KEY OFF:GOSUB 6010
120 OPEN "R",1,F$:FIELD#1,4 AS NREC$,4 AS CITYR$,4 AS COUNTR$,4 AS STATER$,4 AS CITYT$,4 AS COUNTT$,4 AS STATET$,18 AS COMPNM$,19 AS ADDR$,18 AS TOWN$,2 AS STT$,5 AS ZIP$,10 AS TELE$,4 AS VISA$,4 AS MC$,4 AS AE$,4 AS DIN$,4 AS STORE$,4 AS GC$,4 AS OTHER$
130 FIELD#1, 1 AS VCODE$,1 AS ORDCOD$,10 AS STKNUM$,20 AS DESC$,4 AS DCODE$,4 AS LCODE$,4 AS RPT$,4 AS QUANT$,10 AS LDR$,10 AS LDS$,10 AS LDO$,10 AS LPO$,4 AS SP$,4 AS LRC$,20 AS LVO$,4 AS TCOST$,4 AS TOTSLD$,4 AS AMT$
140 NUMREC=LOF(1)/128:IF NUMREC <> 0 THEN 160
150 CLOSE 1:KILL F$:CLS:ZZ$="***** NO MASTER INVENTORY FILE *****":GOSUB 6020:GOSUB 6060:CHAIN "START",120
160 NUM=0:FOR I=2 TO NUMREC:GET#1,I:V$=VCODE$:IF V$="D" THEN 170
165 NUM=NUM+1:ITEM$(NUM)=STKNUM$:REC(NUM)=I
170 NEXT I:OPEN GG$ AS 2 LEN=16:FIELD#2,10 AS STKNN$,2 AS QNTSLD$,2 AS INITS$,2 AS INNUM$:FIELD#2,10 AS DTE$,2 AS NUMTRN$,4 AS TRN$:FIELD#2,4 AS DLYSIS$,4 AS TAXES$,4 AS TOTDSC$,4 AS FRATE$
180 CLS:PRINT "THE FOLLOWING OPTIONS ARE AVAILABLE:":PRINT:PRINT
190 PRINT TAB(5);"1....DAILY INITIALIZATION"
200 PRINT TAB(5);"2....SELL STOCK"
205 PRINT TAB(5);"3....RETURN STOCK"
210 PRINT TAB(5);"4....PRINT OUT TRANSACTION REGISTER"
220 PRINT TAB(5);"5....TERMINATE THE CASH-REGISTER OVERLAY":PRINT:PRINT
230 INPUT "INPUT YOUR OPTION ";OPT
240 IF OPT < 1 OR OPT > 5 THEN 180
250 IF OPT=1 THEN 290
260 IF OPT=2 THEN 470
265 IF OPT=3 THEN 9050
270 IF OPT=4 THEN 1330
280 CLOSE 1,#2:GOSUB 6010:CHAIN "START",120
290 ZZ$="***** INITIALIZING TRANSACTION REGISTER *****"
300 CLS:LOCATE 12,1:INPUT "ARE YOU SURE? (Y/N) ";A$:IF A$ <> "Y" THEN 180 ELSE GOSUB 6020
310 CLOSE 2:KILL GG$:OPEN GG$ AS 2 LEN=16:YY$=DATE$:QQ=10:GOSUB 6080:LSET DTE$=YY$:LSET NUMTRN$=MKI$(0):LSET TRN$=MKS$(2):PUT#2,1
320 GET#1,1:LSET VISA$=MKS$(0):LSET MC$=MKS$(0):LSET AE$=MKS$(0):LSET DIN$=MKS$(0):LSET STORE$=MKS$(0):LSET GC$=MKS$(0):LSET OTHER$=MKS$(0):PUT#1,1
325 LSET DLYSIS$=MKS$(0):LSET TAXES$=MKS$(0):LSET TOTDSC$=MKS$(0):LSET FRATE$=MKS$(0):PUT#2,2
330 CLS:LOCATE 12,1:INPUT "DO YOU WISH TO ENTER THE STORE PARAMETERS? (Y/N) ";A$:IF A$ <> "Y" THEN 180
340 CLS:ZZ$="***** STORE PARAMETERS *****":GOSUB 6000:LOCATE 5,1
350 PRINT "COMPANY NAME";:LOCATE 5,50:LINE INPUT YY$:QQ=18:GOSUB 6080:LSET COMPNM$=YY$
360 LOCATE 7,1:PRINT "ADDRESS";:LOCATE 7,50:LINE INPUT YY$:QQ=19:GOSUB 6080:LSET ADDR$=YY$
370 LOCATE 9,1:PRINT "CITY";:LOCATE 9,50:LINE INPUT YY$:QQ=18:GOSUB 6080:LSET TOWN$=YY$
380 LOCATE 11,1:PRINT "STATE (TWO CHARACTER ABBREV.)";:LOCATE 11,50:LINE INPUT YY$:QQ=2:GOSUB 6080:LSET STT$=YY$
390 LOCATE 13,1:PRINT "ZIP CODE";:LOCATE 13,50:LINE INPUT YY$:QQ=5:GOSUB 6080:LSET ZIP$=YY$
400 LOCATE 15,1:PRINT "TELEPHONE AREA CODE";:LOCATE 15,50:LINE INPUT A$:A$=LEFT$(A$,3)
410 LOCATE 17,1:PRINT "TELEPHONE THREE DIGIT PREFIX";:LOCATE 17,50:LINE INPUT B$:B$=LEFT$(B$,3)
420 LOCATE 19,1:PRINT "TELEPHONE FOUR DIGIT SUFFIX";:LOCATE 19,50:LINE INPUT C$:C$=LEFT$(C$,4)
430 YY$=A$+B$+C$:QQ=10:GOSUB 6080:LSET TELE$=YY$
440 LOCATE 21,25:PRINT "TELEPHONE NUMBER=";LEFT$(YY$,3);"-";MID$(YY$,4,3);"-";RIGHT$(YY$,4)
450 LOCATE 23,1:INPUT "ARE THE STORE PARAMETERS CORRECT (Y/N) ";A$:IF A$="Y" THEN 460 ELSE GOTO 340
460 PUT#1,1:GOTO 180
470 ZZ$="***** SELL STOCK *****":CLS:GOSUB 6000
480 X=0:FLAG=0
490 LOCATE 5,1:PRINT "CUSTOMERS NAME":LOCATE 5,50:LINE INPUT NME$
500 LOCATE 6,1:PRINT"METHOD OF PAYMENT"
510 LOCATE 8,1:PRINT "CASH(CA), CHECK(CK), CREDIT CARD(CC)":LOCATE 8,50:LINE INPUT TY$
520 IF TY$="CA" THEN 620
530 IF TY$="CK" THEN 610
540 IF TY$="CC" THEN 560
550 LOCATE 8,50:PRINT SPACE$(30);:GOTO 510
560 LOCATE 10,1
570 PRINT "INPUT CREDIT CARD TYPE: VISA(V), MASTER CARD(M), AMERICAN EXPRESS(A)"
580 PRINT "DINERS(D), STORE CHARGE(S), GAS CARD(G)"
590 PRINT "OTHER(O)":LOCATE 12,50:LINE INPUT CRD$
600 LOCATE 13,1:PRINT "INPUT CHARGE ACCOUNT NUMBER":LOCATE 13,50:LINE INPUT CNUM$
605 LOCATE 13,1:PRINT SPACE$(80);:LOCATE 13,1:PRINT "INPUT EXPIRATION DATE";:LOCATE 13,50:LINE INPUT PERD$:GOTO 620
610 LOCATE 10,1:PRINT "INPUT CHECK NUMBER";:LOCATE 10,50:LINE INPUT CNUM$
620 LOCATE 14,1:PRINT "INPUT CUSTOMERS DISCOUNT IN PERCENT";:LOCATE 14,50:INPUT DCOUNT:DCOUNT=DCOUNT/100
630 LOCATE 18,1:PRINT "INPUT STOCK NUMBER OF ITEM";:LOCATE 18,50:INPUT YY$:IF YY$=""THEN 720
640 X=X+1:QQ=10:GOSUB 6080
650 FOR I= 1 TO NUM:IF ITEM$(I)=YY$ THEN 680
660 NEXT I
670 ZZ$="***** INVALID STOCK NUMBER OPERATION TERMINATED *****":GOSUB 6020:GOSUB 6060:GOTO 180
680 CITM(X)=I
690 LOCATE 20,1:PRINT "QUANTITY PURCHASED";:LOCATE 20,50:INPUT QNT(X):CITYR=0:COUNTR=0:STATER=0:GOSUB 7000:IF MV <> 0 THEN 6251
695 IF FLAG=1 THEN QNT(X)=-QNT(X)
700 IF X=50 THEN 720
710 LOCATE 18,50:PRINT SPACE$(30);:LOCATE 20,50:PRINT SPACE$(30);:GOTO 630
720 IF X=0 THEN 180 ELSE GOTO 6180
730 LOCATE 22,1:PRINT SPACE$(80);:LOCATE 22,1:PRINT "INCLUDE SALES TAX (Y/N) ";
740 LOCATE 22,50:INPUT A$:CT=0:CCT=0:ST=0:GET#2,1:YY$=DATE$:QQ=10:GOSUB 6080:D$=DTE$:SUM=0:SUMX=0:IPX=0:IF D$=YY$ THEN 745 ELSE GOTO 6170
745 IF A$="Y" THEN LOCATE 22,1:PRINT SPACE$(80);:LOCATE 22,1:PRINT "PRIMARY OR ALTERNATE TAX RATE (P/A) ";:LOCATE 22,50:INPUT TB$
750 GOSUB 6090:GOSUB 6050:GOSUB 6110
760 FOR I=1 TO X:N=CITM(I):GET#1,REC(N)
765 IF I MOD 14=1 AND I <> 1 THEN LPRINT CHR$(12);:LPRINT:GOSUB 6120
770 Q=CVS(QUANT$):T=CVS(TOTSLD$):SP=CVS(SP$):SPX=SP:SP=SP-SP*DCOUNT:RP=CVS(RPT$):Q=Q-QNT(I):T=T+SP*QNT(I)
775 IF Q<0 THEN 6251
780 LSET QUANT$=MKS$(Q):LSET TOTSLD$=MKS$(T)
790 IF FLAG=0 THEN QQ=10:YY$=DATE$:GOSUB 6080:LSET LDS$=YY$
795 PUT#1,REC(N):V$=VCODE$:DCS$=DESC$:DSC$=DESC$
800 IF V$="N" OR A$ <> "Y" THEN 940
810 GET#1,1
820 CITYR=CVS(CITYR$):COUNTR=CVS(COUNTR$)
830 STATER=CVS(STATER$):CITYT=CVS(CITYT$)
840 COUNTT=CVS(COUNTT$):STATET=CVS(STATET$)
845 GOSUB 10000
850 CITYT=CITYT+SP*CITYR*QNT(I)
860 COUNTT=COUNTT+SP*COUNTR*QNT(I)
870 STATET=STATET+SP*STATER*QNT(I)
880 LSET STATET$=MKS$(STATET)
890 LSET COUNTT$=MKS$(COUNTT)
900 LSET CITYT$=MKS$(CITYT):PUT#1,1
910 CT=CT+SP*CITYR*QNT(I)
920 CCT=CCT+SP*COUNTR*QNT(I)
930 ST=ST+SP*STATER*QNT(I)
940 SUM=SUM+SP*QNT(I):N=CITM(I):SUMX=SUMX+SPX*QNT(I)
950 LPRINT ITEM$(N);TAB(15);DCS$;TAB(38);:LPRINT USING "####";QNT(I);:LPRINT TAB(48);:LPRINT USING "$$####.##";SP;:LPRINT TAB(63);:LPRINT USING "$$####.##";SP*QNT(I)
960 GET#2,1:TRN=CVS(TRN$):TRN=TRN+1:LSET TRN$=MKS$(TRN):PUT#2,1
970 LSET STKNN$=ITEM$(N):LSET QNTSLD$=MKI$(QNT(I)):LSET INITS$=IN$:LSET INNUM$=MKI$(NX)
980 PUT#2,TRN
990 NEXT I
995 DIFSUM=SUMX-SUM:SUM1=INT(DIFSUM*100):SUM2=DIFSUM*100:IF SUM2<>SUM1 THEN SUM1=SUM1+1
996 DIFSUM=SUM1/100
1000 LPRINT:SUM1=INT(SUM*100):SUM2=SUM*100
1010 IF SUM2 <> SUM1 THEN SUM1=SUM1+1
1020 SUM=SUM1/100
1030 LPRINT TAB(45);"UNTAXED PURCHASE";TAB(62);:LPRINT USING "$$#####.##";SUM
1040 CT1=INT(CT*100):CT2=CT*100
1050 CCT1=INT(CCT*100):CCT2=CCT*100
1060 ST1=INT(ST*100):ST2=ST*100
1070 IF ST2-ST1 >=0.5 THEN ST1=ST1+1
1080 IF CCT2-CCT1 >=0.5 THEN CCT1=CCT1+1
1090 IF CT2-CT1 >=0.5 THEN CT1=CT1+1
1100 CT=CT1/100:CCT=CCT1/100:ST=ST1/100
1110 LPRINT TAB(45);"CITY TAX";TAB(63);:LPRINT USING "$$####.##";CT
1120 LPRINT TAB(45);"COUNTY TAX";TAB(63);:LPRINT USING "$$####.##";CCT
1130 LPRINT TAB(45);"STATE TAX";TAB(63);:LPRINT USING "$$####.##";ST
1133 IF FLAG=1 THEN FRATE=-FRATE
1135 LPRINT TAB(45);"FREIGHT CHARGE";TAB(63);:LPRINT USING "$$####.##";FRATE
1140 TOTAL=SUM+CT+CCT+ST+FRATE
1145 GET#2,2:LSET DLYSIS$=MKS$(CVS(DLYSIS$)+SUM):LSET TAXES$=MKS$(CVS(TAXES$)+CT+CCT+ST):LSET TOTDSC$=MKS$(CVS(TOTDSC$)+DIFSUM):LSET FRATE$=MKS$(CVS(FRATE$)+FRATE):PUT#2,2
1150 LPRINT TAB(45);"TOTAL PURCHASE";TAB(62);:LPRINT USING "$$#####.##";TOTAL
1160 LPRINT:LPRINT "TYPE OF PURCHASE ";
1170 IF TY$="CA" THEN LPRINT "CASH"
1180 IF TY$="CK" THEN LPRINT "CHECK *** CHECK NUMBER ";CNUM$;" ***"
1190 IF TY$ <> "CC" AND FLAG=0 THEN 1280
1195 IF TY$ <> "CC" THEN 1275
1200 GET#1,1:IF CRD$="V" THEN LPRINT "VISA *** ACCOUNT NUMBER ";:LSET VISA$=MKS$(CVS(VISA$)+TOTAL)
1210 IF CRD$="M" THEN LPRINT "MASTER CARD *** ACCOUNT NUMBER ";:LSET MC$=MKS$(CVS(MC$)+TOTAL)
1220 IF CRD$="A" THEN LPRINT "AMERICAN EXPRESS *** ACCOUNT NUMBER ";:LSET AE$=MKS$(CVS(AE$)+TOTAL)
1230 IF CRD$="D" THEN LPRINT "DINERS CLUB *** ACCOUNT NUMBER ";:LSET DIN$=MKS$(CVS(DIN$)+TOTAL)
1240 IF CRD$="S" THEN LPRINT "STORE CHARGE *** ACCOUNT NUMBER ";:LSET STORE$=MKS$(CVS(STORE$)+TOTAL)
1250 IF CRD$="G" THEN LPRINT "GAS CARD *** ACCOUNT NUMBER ";:LSET GC$=MKS$(CVS(GC$)+TOTAL)
1260 IF CRD$="O" THEN LPRINT "CREDIT CARD *** ACCOUNT NUMBER ";:LSET OTHER$=MKS$(CVS(OTHER$)+TOTAL)
1270 LPRINT CNUM$;" ***":PUT#1,1
1273 LPRINT "EXPIRATION DATE ";PERD$:IF FLAG=0 THEN 1280
1275 LPRINT:LPRINT:LPRINT:X$="***** R E T U R N E D M E R C H A N D I S E *****":GOSUB 6250:X$="ORIGINAL INVOICE "+ORIG$:GOSUB 6250
1280 CLS:LPRINT CHR$(12);
1290 IF TY$ <> "CA" THEN 180
1292 IF FLAG=1 THEN 9060
1295 LOCATE 10,1:PRINT "PURCHASE COST=";TOTAL
1300 LOCATE 12,1:INPUT "INPUT CASH RECEIVED FROM THE CUSTOMER ";CASH
1305 LFT=CASH-TOTAL:LFT=INT(LFT*100):LFT=LFT/100
1310 PRINT "RETURN CHANGE=";LFT
1320 GOSUB 6060:GOTO 180
1330 GOSUB 6010:GET#1,1:GET#2,1:TRN=CVS(TRN$):VISA=CVS(VISA$):MC=CVS(MC$):AE=CVS(AE$):DIN=CVS(DIN$):STORE=CVS(STORE$):GC=CVS(GC$):OTHER=CVS(OTHER$):NUMINV=CVI(NUMTRN$):GOSUB 6090:GOSUB 6040:SUM=0
1340 D$=DATE$:D1$=DTE$:T$=TIME$
1345 GET#2,2:DLYSIS=CVS(DLYSIS$):TAXES=CVS(TAXES$):TOTDSC=CVS(TOTDSC$):FRATE=CVS(FRATE$)
1350 IF D$=D1$ THEN 1370
1360 ZZ$="***** DATE MISMATCH *****":GOSUB 6020:GOSUB 6060:GOTO 180
1370 FOR I=1 TO TRN-2:GET#2,I+2
1380 IF I MOD 40=1 AND I <> 1 THEN LPRINT CHR$(12);
1390 IF I MOD 40=1 THEN GOSUB 6190
1400 S$=STKNN$:FOR J=1 TO NUM:IF S$=ITEM$(J) THEN 1430
1410 NEXT J
1420 ZZ$="***** STOCK NUMBER ERROR *****":GOSUB 6020:GOSUB 6060:LPRINT CHR$(12);:GOTO 180
1430 GET#1,REC(J):DSC$=DESC$:SP=CVS(SP$)
1440 Q=CVI(QNTSLD$):A$=INITS$:INV=CVI(INNUM$)
1450 LPRINT TAB(2);S$;TAB(19);DSC$;TAB(45);:LPRINT USING "####";Q;:LPRINT TAB(60);:LPRINT USING "####";INV;:LPRINT TAB(75);A$
1460 NEXT I:LPRINT CHR$(12);
1470 X$="TRANSACTION REGISTER TOTALS":LPRINT:GOSUB 6250
1480 X$=D1$+SPACE$(5)+T$:GOSUB 6250
1490 LPRINT:LPRINT:X$="TOTALS"
1500 GOSUB 6250:LPRINT:LPRINT
1510 X$="CHARGES":GOSUB 6250
1515 BB=VISA:GOSUB 8000:VISA=BB:BB=MC:GOSUB 8000:MC=BB:BB=AE:GOSUB 8000:AE=BB:BB=DIN:GOSUB 8000:DIN=BB:BB=STORE:GOSUB 8000:STORE=BB:BB=GC:GOSUB 8000:GC=BB:BB=OTHER:GOSUB 8000:OTHER=BB
1520 LPRINT "VISA";TAB(40);:LPRINT USING "$$#####.##";VISA
1530 LPRINT "MASTER CARD";TAB(40);:LPRINT USING "$$#####.##";MC
1540 LPRINT "AMERICAN EXPRESS";TAB(40);:LPRINT USING "$$#####.##";AE
1550 LPRINT "DINERS CLUB";TAB(40);:LPRINT USING "$$#####.##";DIN
1560 LPRINT "STORE CHARGE";TAB(40);:LPRINT USING "$$#####.##";STORE
1570 LPRINT "GAS CARDS";TAB(40);:LPRINT USING "$$#####.##";GC
1580 LPRINT "OTHER CHARGES";TAB(40);:LPRINT USING "$$#####.##";OTHER
1585 LPRINT:TCHARG=VISA+MC+AE+DIN+STORE+GC+OTHER
1587 LPRINT "TOTAL CHARGES";TAB(40);:LPRINT USING "$$#####.##";TCHARG
1590 LPRINT:LPRINT
1600 LPRINT "NUMBER OF INVOICES=";:LPRINT USING "####";NUMINV
1610 LPRINT:LPRINT
1619 BB=DLYSIS:GOSUB 8000:DLYSIS=BB:BB=TAXES:GOSUB 8000:TAXES=BB:BB=FRATE:GOSUB 8000:FRATE=BB:BB=TOTDSC:GOSUB 8000:TOTDSC=BB
1620 LPRINT "TOTAL DAILY SALES";TAB(40);:LPRINT USING "$$#####.##";DLYSIS
1622 LPRINT "TOTAL TAXES COLLECTED";TAB(40);:LPRINT USING "$$#####.##";TAXES
1623 LPRINT "TOTAL FREIGHT COLLECTED";TAB(40);:LPRINT USING "$$#####.##";FRATE
1624 LPRINT "TOTAL DISCOUNTS ALLOWED";TAB(40);:LPRINT USING "$$#####.##";TOTDSC
1625 TCASH=DLYSIS+TAXES+FRATE-TCHARG
1626 LPRINT
1627 LPRINT "TOTAL CASH AND CHECKS";TAB(40);:LPRINT USING "$$#####.##";TCASH
1630 LPRINT CHR$(12);:GOTO 180
6000 COLOR 0,7:NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):PRINT SPACE$(NZ);ZZ$;SPACE$(NZ):COLOR 7,0:RETURN
6010 ZZ$="***** ONE MOMENT PLEASE *****":GOSUB 6020:RETURN
6020 CLS:LOCATE 12,1:GOSUB 6000:RETURN
6030 ZZ$="***** SORTING DATA *****":GOSUB 6020:RETURN
6040 ZZ$="***** PRINTING DATA *****":GOSUB 6020:LPRINT CHR$(18);:RETURN
6050 ZZ$="***** PRINTING THE INVOICE *****":GOSUB 6020:LPRINT CHR$(18);:RETURN
6060 LOCATE 23,1:PRINT "TYPE A KEY ON THE KEYBOARD TO CONTINUE ";
6070 QX$=INKEY$:IF QX$="" THEN 6070 ELSE RETURN
6080 IF LEN(YY$)<QQ THEN YY$=YY$+SPACE$(QQ-LEN(YY$))
6085 RETURN
6090 ZZ$="BE SURE THAT THE LINE PRINTER IS READY":GOSUB 6020:GOSUB 6060:ZZ$="ALIGN LINE PRINTER PAPER TO TOP OF FORM":GOSUB 6020:GOSUB 6060:RETURN
6100 NZ=LEN(XX$):XXX$="":FOR P=1 TO NZ:XXX$=SPACE$(P):XXY$=RIGHT$(XX$,P)
6101 IF XXX$ <> XXY$ THEN XX$=LEFT$(XX$,NZ-P+1):GOTO 6109
6102 NEXT P
6109 NZ=LEN(XX$):NZ=80-NZ:NZ=INT(NZ/2):LPRINT TAB(NZ);XX$:RETURN
6110 GET#1,1:LPRINT:NM$=COMPNM$:AD$=ADDR$:TN$=TOWN$:STA$=STT$:ZP$=ZIP$:TL$=TELE$
6120 XX$=NM$:GOSUB 6161:XX$=AD$:GOSUB 6100:XX$=TN$+SPACE$(4)+STA$:GOSUB 6100
6130 XX$=ZP$:GOSUB 6100:XX$=LEFT$(TL$,3)+"-"+MID$(TL$,4,3)+"-"+RIGHT$(TL$,4):GOSUB 6100:LPRINT
6132 XX$=STRING$(23,42):GOSUB 6100
6133 XX$="***"+SPACE$(17)+"***":GOSUB 6100:GOSUB 6100
6134 XX$="*** I N V O I C E ***":GOSUB 6100
6135 XX$="***"+SPACE$(17)+"***":GOSUB 6100:GOSUB 6100
6136 XX$=STRING$(23,42):GOSUB 6100:LPRINT:LPRINT:LPRINT:LPRINT
6137 XX$=STRING$(80,42):GOSUB 6100:LPRINT:LPRINT
6140 IF IPX=0 THEN IPX=1:NX=CVI(NUMTRN$):NX=NX+1:LSET NUMTRN$=MKI$(NX):PUT#2,1
6150 XX$="INVOICE NUMBER "+DATE$+"-"+STR$(NX):GOSUB 6100:LPRINT:LPRINT
6151 XX$="CUSTOMER'S NAME "+NME$:GOSUB 6100:LPRINT
6155 LPRINT "STOCK NUMBER";TAB(17);"DECRIPTION";TAB(39);"QNT";TAB(48);"UNIT COST";TAB(62);"QUANT COST"
6160 RETURN
6161 NZ=LEN(XX$):XXX$="":FOR P=1 TO NZ:XXX$=SPACE$(P):XXY$=RIGHT$(XX$,P)
6162 IF XXX$ <> XXY$ THEN XX$=LEFT$(XX$,NZ-P+1):GOTO 6164
6163 NEXT P
6164 NZ=LEN(XX$):NZ=40-NZ:NZ=INT(NZ/2):LPRINT CHR$(14);TAB(NZ);XX$:LPRINT:RETURN
6170 ZZ$="*** ERROR ***TRANSACTION FILE MISMATCH ***":GOSUB 6020:GOSUB 6060:GOTO 180
6180 LOCATE 20,1:PRINT" INPUT YOUR FIRST AND LAST INITIAL":LOCATE 20,50:INPUT YY$:QQ=2:GOSUB 6080:IN$=YY$
6181 LOCATE 22,1:PRINT "INPUT FREIGHT CHARGE";:LOCATE 22,50:INPUT FRT$:FRATE=VAL(FRT$):GOTO 730
6190 LPRINT:LPRINT CHR$(18);:LPRINT
6200 X$="TRANSACTION REGISTER":GOSUB 6250
6210 X$=D1$+SPACE$(5)+T$:GOSUB 6250
6220 LPRINT:LPRINT
6230 LPRINT "STOCK NUMBER";TAB(20);"DESCRIPTION";TAB(40);"QUANTITY SOLD";TAB(55);"INVOICE NUMBER";TAB(73);"INITIAL"
6240 LPRINT:RETURN
6250 NZ=LEN(X$):NZ=80-NZ:NZ=INT(NZ/2):LPRINT TAB(NZ);X$:RETURN
6251 ZZ$="***** ILLEGIAL QUANTITY ERROR SELL TERMINATED *****":GOSUB 6020:GOSUB 6060:LPRINT CHR$(12);:GOTO 180
7000 GET#1,REC(I):QUANT=CVS(QUANT$):MV=0:IF QNT(X) > QUANT THEN MV=1
7010 RETURN
8000 QWE=INT(BB*100):QWR=BB*100:IF QWR-QWE >=0.5 THEN QWE=QWE+1
8010 BB=QWE/100:RETURN
9000 IF ERR=24 THEN RESUME
9010 IF ERR=27 THEN ZZ$="***** T U R N O N L I N E P R I N T E R *****":GOSUB 6020:RESUME
9020 AB$=STR$(ERR):ZZ$="***** E R R O R "+AB$+" *****":GOSUB 6020:GOSUB 6060:CHAIN "START",120
9050 FLAG=1:ZZ$="***** RETURN STOCK *****":CLS:GOSUB 6000:LOCATE 10,1:INPUT "INPUT ORIGINAL INVOICE NUMBER ";ORIG$:LOCATE 10,1:PRINT SPACE$(80):X=0:GOTO 490
9060 LOCATE 10,1:TOT=ABS(TOTAL):PRINT "CASH RETURNED TO CUSTOMER=";TOT:GOTO 1320
10000 RCITYA=INT(CITYR)/10000:RCOUNA=INT(COUNTR)/10000:RSTATA=INT(STATER)/10000
10010 CITYR=CITYR-INT(CITYR):COUNTR=COUNTR-INT(COUNTR):STATER=STATER-INT(STATER)
10020 IF TB$="A" OR TB$="a" THEN CITYR=RCITYA:COUNTR=RCOUNA:STATER=RSTATA
10030 RETURN
----------------------------------------------------------------------------
Disk No 171 Misc Financial Items v1.1 DS2
----------------------------------------------------------------------------
B1 BAS Future value of an investment
B2 BAS Future value of regular deposits
B3 BAS Regular deposits
B4 BAS Regular withdrawals from an investment
B5 BAS Initial investment
B6 BAS Minimum investment for withdrawals
B7 BAS Nominal interest rate
B8 BAS Effective interest rate on investment
B9 BAS Earned interest table
B10 BAS Depreciation table
B11 BAS Depreciation amount
B12 BAS Salvage value
B13 BAS Discount commercial paper
B14 BAS Principal on a loan
B15 BAS Regular payment on a loan
B16 BAS Last payment on a loan
B17 BAS Remaining balance on a loan
B18 BAS Term of a loan
B19 BAS Annual interest rate on loan
B20 BAS Mortgage amortization table
BUSIN BAS Menu for above Bnn items
FINANCE BAS Amortization, present values, future values, interest rate
INTEREST BAS Prints compound interest factors
CASHREG BAS POS Inventory - Cash register transaction processing
INVENPRC BAS POS Inventory - Inventory transaction processing
INVENRPT BAS POS Inventory - Inventory reporting
INVENTRY DOC POS Inventory - Documentation
PICKER BAS POS Inventory - Picking list generation
PICKTRAN BAS POS Inventory - Picking list transaction processing
START BAS POS Inventory - Main menu
PC Software Interest Group(PC-SIG)
1030D East Duane Avenue
Sunnyvale, CA 94086
5 REM FINANCE VERSION 1.0 MARCH 4, 1982
10 COLOR 15:CLS:KEY OFF:SCREEN 0,0,0:WIDTH "SCRN:",80
20 ON ERROR GOTO 5950
25 PRINT " * * F I N A N C I A L F U N C T I O N S * * (Version 1.0)": PRINT :PRINT
30 PRINT "SELECT ONE OF THE FOLLOWING FINANCIAL FUNCTIONS:"
40 PRINT
50 PRINT " 1 -- AMORTIZATION SCHEDULE"
60 PRINT " 2 -- DAYS BETWEEN DATES"
70 PRINT " 3 -- PRESENT VALUE OF A FUTURE SUM"
80 PRINT " 4 -- FUTURE VALUE OF A PRESENT SUM"
90 PRINT " 5 -- SIMPLE INTEREST FOR DAYS"
100 PRINT " 6 -- INTEREST RATE - COMPOUND INTEREST"
110 PRINT " 7 -- NOMINAL & EFFECTIVE INTEREST RATES
120 PRINT " 8 -- INTEREST RATE - INSTALLMENT LOAN"
130 PRINT " 9 -- PRESENT VALUE OF A SERIES OF PAYMENTS"
135 PRINT " 10 -- FUTURE VALUE OF REGULAR DEPOSITS
138 PRINT " 11 -- REGULAR DEPOSITS FOR FUTURE VALUE
140 PRINT " 12 -- INTERNAL RATE OF RETURN
146 PRINT " 13 -- BOND - PRESENT VALUE
147 PRINT " 14 -- BOND - YIELD TO MATURITY
149 PRINT " 15 -- EXIT FROM THIS PROGRAM
151 PRINT:INPUT " SELECT OPTION, THEN PRESS `ENTER' ==> ";FI
160 IF FI<1 OR FI > 15 THEN RUN
170 ON FI GOTO 720,1670,190,550,390,1030,4220,1310,2220,4630,4820,4380,5590,5750,180
180 RUN "menu"
181 STOP
189 REM -----------------------------------------------------------------
190 F=0:R=0:M=0:N=0
195 CLS: PRINT " FUNCTION 3 -- PRESENT VALUE OF A FUTURE SUM ": PRINT: PRINT
200 PRINT:PRINT "This routine calculates the Present Value of a Future Sum, discounting"
210 PRINT "it for a given Interest Rate, compounded as instructed.":PRINT
230 INPUT " FUTURE SUM (IN DOLLARS) ";F
240 INPUT " ANNUAL INTEREST RATE (%) ";R
250 INPUT " # OF PERIODS IN ONE YEAR ";M
260 INPUT " # PERIODS TO BE CALCULATED ";N
270 I=R/M:I=I/100
280 T=1+I:A=T
290 IF N=1 GOTO 310
300 FOR X=1 TO (N-1):S=A*T:A=S:NEXT X
310 P=F/A: PRINT: PRINT
320 PRINT " A Future Sum of $";F;" for ";N;" Periods, where there are "
330 PRINT M;"Periods per Year at";R;"% Annual Interest Rate, is worth "
350 PRINT:PRINT " $";P;" in Today's Dollars"
353 PRINT: PRINT:
355 PRINT "WHAT DO YOU WANT TO DO: "
358 PRINT " 1 -- RETURN TO MAIN MENU"
360 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
363 INPUT " SELECT OPTION ==> ";IA
366 IF IA = 2 THEN GOTO 190
369 IF IA <>1 THEN GOTO 363
370 RUN
380 END
389 REM -----------------------------------------------------------------
390 P=0:D=0:R=0
395 CLS: PRINT " FUNCTION 5 -- SIMPLE INTEREST FOR DAYS ": PRINT: PRINT
400 PRINT "This routine calculates Simple Interest on dollars held in deposit"
420 PRINT "for a specified number of days, given a specific interest rate.":PRINT
430 INPUT " AMOUNT OF DEPOSIT (IN DOLLARS) ";P
440 INPUT " NUMBER OF DAYS ON DEPOSIT ";D
450 INPUT " INTEREST RATE (PERCENT) ";R
460 PRINT:PRINT:PRINT "For a starting Principal of $";P;"at a ";
470 PRINT "Rate of";R;"% for ";D;"days"
480 PRINT:PRINT " the Amount of Interest = $";
490 I=R/100/365*D*P
500 IF I>327.68 GOTO 520
510 I=INT(I*100+0.5)/100
520 PRINT USING "###,###.##";I;:PRINT " or $";:PRINT USING "#,###.##";I/D;:PRINT" per day":PRINT:PRINT:PRINT
523 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
525 PRINT " 1 -- RETURN TO MAIN MENU"
528 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
530 INPUT " SELECT OPTION ==> ";IA
533 IF IA = 2 THEN GOTO 390
536 IF IA <>1 THEN GOTO 530
539 RUN
540 END
549 REM -----------------------------------------------------------------
550 CLS:P=0:R=0:M=0:N=0
551 PRINT " FUNCTION 4 -- FUTURE VALUE OF A PRESENT SUM ": PRINT: PRINT
552 PRINT"This function computes the Future Value of a Present Sum, given the"
553 PRINT "Annual Interest Rate, and the number of Periods to Maturity."
560 PRINT:INPUT " PRESENT SUM (IN DOLLARS) ";P
570 INPUT " ANNUAL INTEREST RATE (%) ";R
580 INPUT " # OF PERIODS IN ONE YEAR ";M
590 INPUT " # OF PERIODS TO MATURITY ";N
600 I=R/M:I=I/100:T=I+1:A=T
610 IF N=1 THEN GOTO 630
620 FOR K=1 TO (N-1):S=A*T:A=S:NEXT K
630 F=P*A
633 PRINT: PRINT
640 PRINT "For a Present Sum of $";P;"at an Annual Interest Rate of";R;"% "
650 PRINT "for ";N;"Periods, where there are ";M;"Periods per Year:"
670 PRINT:PRINT " The Future Value is $";F
680 PRINT " The Increase is $";F-P;", or";(F/P)*100-100;"%"
683 PRINT: PRINT:
685 PRINT "WHAT DO YOU WANT TO DO: "
688 PRINT " 1 -- RETURN TO MAIN MENU"
690 PRINT " 2 -- RERUN CURRENT FUNCTION"
693 INPUT " SELECT OPTION ==> ";IA
695 IF IA = 2 THEN GOTO 550
698 IF IA <>1 THEN GOTO 693
700 RUN
710 END
719 REM -----------------------------------------------------------------
720 DEFDBL I,T:C=0:P=0:L=0:R=0:M=0:CLS:AY=0:AT=0:YR=0
725 PRINT " FUNCTION 1 -- AMORTIZATION SCHEDULE ": PRINT
727 PRINT"This function computes the Principal and Interest for a series of "
728 PRINT"payments over a given period at a specified Interest Rate. If the"
730 PRINT"amount of the payment is not known, it will be calculated.":PRINT
735 INPUT " PRINCIPAL (DOLLARS AND CENTS) " ;P
740 INPUT " NUMBER OF PERIODS (IN MONTHS) " ;L
750 INPUT " ANNUAL INTEREST RATE (PERCENT) ";R
760 INPUT " PAYMENT(IF KNOWN), THEN `ENTER' ";M
770 I=R/1200
780 T=1-1/(1+I)^L:K=P
790 IF M<>0 THEN GOTO 810
800 M=P*I/T
810 GOSUB 990
815 AY=0
820 FOR Z=1 TO L
830 IF C<12 GOTO 880
835 YR=YR+1
840 PRINT:PRINT "Year of Loan: ";YR;
845 PRINT " $";K;" for ";L;"Months at";R;"%"
850 AT = AY +AT
853 PRINT" Total Interest Paid during Year ==> $";:PRINT USING "#,###,###.##";AY
855 AY = 0: PRINT
857 PRINT"SELECT OPTION:"
858 INPUT " 1 -- RETURN TO MAIN MENU 2 -- RERUN FUNCTION 3 -- CONTINUE ==> ";CH
865 IF CH=1 THEN 10
866 IF CH=2 THEN 720
867 IF CH <> 3 THEN 858
870 C=0:GOSUB 990
880 A=P*I
890 A=INT(A*100+0.5)/100
900 M=INT(M*100+0.5)/100
910 B=M-A:P=P-B
920 B=INT(B*100+0.5)/100
930 P=INT(P*100+0.5)/100
935 AY = AY + A
940 PRINT USING "#### ";Z;:PRINT USING "###,###.##";P;M;B;A
950 IF P<=0 THEN 955
953 C=C+1:NEXT Z
955 PRINT:PRINT "Year of Loan: ";YR+1;
956 PRINT " $";K;" for ";L;"Months at";R;"%"
958 PRINT " Total Interest Paid during Year ==> $";:PRINT USING "#,###,###.##";AY: AT=AY+AT
962 PRINT " Total Interest Paid during Loan ==> $";:PRINT USING "#,###,###.##";AT
964 PRINT:
965 PRINT"SELECT OPTION:"
968 PRINT " 1 -- RETURN TO MAIN MENU";
970 PRINT " 2 -- RERUN CURRENT FUNCTION";" ==> ";:INPUT IA
975 IF IA = 2 THEN GOTO 720
978 IF IA <>1 THEN GOTO 965
980 RUN
985 END
990 CLS: PRINT " FUNCTION 1 -- AMORTIZATION SCHEDULE ": PRINT
1000 PRINT "PAYMENT REMAINING MONTHLY PRINCIPAL INTEREST"
1010 PRINT "NUMBER PRINCIPAL PAYMENT PAYMENT PAYMENT
1020 RETURN
1029 REM -----------------------------------------------------------------
1030 CLS:PRINT " FUNCTION 6 -- INTEREST RATE - COMPOUND INTEREST": PRINT: PRINT
1033 F=0: PRINT"This routine computes the annual interest rate for a specified Future Value,"
1034 PRINT"given the Present Value, the total period of time, and the number of periods." : PRINT: PRINT
1040 INPUT " THE FUTURE VALUE (DOLLARS) ";FV
1050 IF F=4 THEN 1130
1060 INPUT " THE PRESENT VALUE (DOLLARS)";PV
1070 IF F=3 THEN 1130
1080 INPUT " NUMBER OF PERIODS PER YEAR ";PY
1090 IF F=5 THEN 1130
1100 PRINT "TOTAL LENGTH OF TIME FOR WHICH INTEREST IS TO BE FIGURED"
1120 INPUT " USE THE FORMAT (YY,MM,DD) ";Y,M,D
1130 PD=Y*PY+M*PY/12+D*PY/365
1140 I=((FV/PV)^(1/PD)-1)*100*PY
1150 A$="###.##":F=0
1155 CLS: PRINT " FUNCTION 6 -- INTEREST RATE - COMPOUND INTEREST ": PRINT
1160 PRINT: PRINT:PRINT "For a Future Sum of $";FV;"with a Present Value of $";PV;" with"
1170 PRINT PY;"Periods per Year, for ";Y;"Years,";M;"Months and";D;"Days"
1180 PRINT:PRINT " The Annual Interest Rate is ";
1190 PRINT USING A$;I;:PRINT " %"
1200 PRINT:PRINT:PRINT "WHAT DO YOU WANT TO DO:"
1205 PRINT
1208 PRINT " 1 -- RETURN TO MAIN MENU"
1210 PRINT " 2 -- RERUN ENTIRE FUNCTION"
1215 PRINT " 3 -- CHANGE PRESENT VALUE"
1220 PRINT " 4 -- CHANGE FUTURE VALUE"
1230 PRINT " 5 -- CHANGE PERIODS PER YEAR
1240 PRINT " 6 -- CHANGE TIME RANGE
1270 PRINT:INPUT " SELECT OPTION ==> ";F
1280 IF F<1 OR F>6 THEN 1160
1290 F=INT(F):ON F GOTO 10,1030,1060,1040,1080,1100
1300 GOTO 1200
1305 END
1309 REM -----------------------------------------------------------------
1310 CLEAR:F=0:CLS:DEFDBL I:A$="##.## %"
1315 PRINT " FUNCTION 8 -- INTEREST RATE - INSTALLMENT LOAN": PRINT
1318 ON ERROR GOTO 5950
1320 PRINT"This routine computes the Interest Rate for an Installment Loan, given"
1321 PRINT"the loan duration, the number of payments per year, and the Payment Amount.
1325 PRINT
1330 INPUT " PRESENT VALUE (DOLLARS) "; PV
1340 IF F=3 GOTO 1420
1350 INPUT " NUMBER OF TERMS PER YEAR ";NY
1360 IF F=5 GOTO 1420
1370 INPUT " NUMBER OF PERIODS IN LOAN";N
1380 IF F=4 GOTO 1420
1390 INPUT " AMOUNT OF EACH PAYMENT ";P
1400 IF F=6 GOTO 1420
1410 CLS:PRINT:PRINT ". . . COMPUTER WORKING. BE WITH YOU IN A FEW SECONDS . . ."
1420 I=0.008
1430 I1=P/PV*((1+I)^N-1)/(1+I)^N
1440 IF ABS(I-I1)<0.000001 THEN 1470
1450 I=I1
1460 GOTO 1430
1470 I=I1*NY*100
1480 CLS:PRINT " FUNCTION 8 -- INTEREST RATE - INSTALLMENT LOAN ": PRINT: PRINT
1490 PRINT "For a Loan with a Present Value of $";PV;" and "
1500 PRINT N;"Payments of $";P;", where there are";
1510 PRINT NY;"Payments per year"
1520 PRINT:PRINT " the Annual Interest Rate is ";
1530 PRINT USING A$;I
1540 F=0:PRINT
1550 PRINT:PRINT "WHAT DO YOU WANT TO DO:"
1555 PRINT
1560 PRINT " 1 -- RETURN TO MAIN MENU"
1570 PRINT " 2 -- RERUN ENTIRE FUNCTION"
1580 PRINT " 3 -- CHANGE LOAN VALUE"
1590 PRINT " 4 -- CHANGE NUMBER OF INTEREST PERIODS"
1600 PRINT " 5 -- CHANGE PERIODS PER YEAR
1610 PRINT " 6 -- CHANGE PAYMENT AMOUNT
1620 PRINT:INPUT " SELECT OPTION ==> ";F
1630 IF F<1 OR F>6 THEN 1620
1640 F=INT(F):ON F GOTO 10,1310,1330,1370,1350,1390
1650 GOTO 1550
1660 END
1669 REM -----------------------------------------------------------------
1670 CLS: PRINT " FUNCTION 2 -- DAYS BETWEEN DATES": PRINT: PRINT
1675 CH=0: PRINT"This routine computes the Total Number of Days between two dates.":PRINT: PRINT
1680 PRINT "USING THE FORMAT (MM,DD,YYYY):
1690 INPUT " ENTER THE EARLIEST DATE ";M,D,Y:GOSUB 1870
1700 N=M:F=D:Z=Y:E=T
1710 IF CH=1 GOTO 1740
1720 INPUT " ENTER THE LATEST DATE ";M,D,Y:GOSUB 1870
1730 P=M:G=D:W=Y:L=T
1740 IF E>L THEN PRINT:PRINT "ERROR: CHECK THE DATES AND TRY AGAIN":GOTO 1780
1750 O=L-E
1760 PRINT:PRINT "The Total Number of Days between ";N;"/";F;"/";Z;
1770 PRINT " and ";P;"/";G;"/";W;"is"
1775 PRINT:PRINT " ";O;" Days "
1780 CH=0:PRINT:PRINT:PRINT "WHAT DO YOU WISH TO DO:"
1790 PRINT " 1 -- RETURN TO MAIN MENU"
1800 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
1830 INPUT " SELECT OPTION ==> ";IA
1840 IF IA = 2 THEN GOTO 1670
1850 IF IA <>1 THEN GOTO 1830
1860 RUN
1865 END
1870 YY=Y-1:T=365*YY+FIX(YY/4)-FIX(YY/100)+FIX(YY/400)
1880 CD=30*(M-1)+FIX((M-1)/3)+D
1890 IF M=2 OR M=9 OR M>10 THEN CD=CD+1:GOTO 1910
1900 IF M>2 AND M<8 AND M<>6 THEN CD=CD-1
1910 IF M<3 OR Y<>4*FIX(Y/4) THEN 1930
1920 IF Y=400*FIX(Y/400) OR Y<>100*FIX(Y/100) THEN CD=CD+1
1930 T=T+CD:RETURN
2219 REM -----------------------------------------------------------------
2220 CLS:PRINT " FUNCTION 9 -- PRESENT VALUE OF A SERIES OF PAYMENTS":PRINT:PRINT
2222 F=0
2225 PRINT:PRINT "This program determines the Present Value of a series of payments."
2230 PRINT "It is normally used to determine the amount remaining on a loan, "
2240 PRINT "given the amount of the regular payment, the number of remaining"
2250 PRINT "payments, the number of payments per year, and the interest rate."
2260 PRINT
2270 INPUT " AMOUNT OF REGULAR PAYMENT ";PT
2280 IF F=3 GOTO 2340
2290 INPUT " # OF REMAINING PAYMENTS ";NP
2300 IF F=4 GOTO 2340
2310 INPUT " # OF PAYMENTS PER YEAR ";PY
2320 IF F=5 GOTO 2340
2330 INPUT " THE ANNUAL INTEREST RATE ";IR
2340 I=IR/100
2344 CLS:PRINT " FUNCTION 9 -- PRESENT VALUE OF A SERIES OF PAYMENTS": PRINT: PRINT
2347 T1=1+(I/PY):T1=T1^NP:T1=1/T1:T1=1-T1
2350 PR=PT*PY*T1/I
2360 PRINT "For ";NP;" Payments of $";PT;",with ";PY; "Payments per Year, "
2370 PRINT "at an Annual Interest Rate of ";IR;"%";" the Original Principal"
2380 PRINT "(or Value of the Remaining Payments) is"
2390 PRINT:PRINT " $";:PRINT USING "#,###,###.##";PR
2400 PRINT:PRINT "WHAT DO YOU WANT TO DO:"
2405 PRINT
2410 PRINT " 1 -- RETURN TO MAIN MENU"
2420 PRINT " 2 -- RERUN ENTIRE FUNCTION"
2430 PRINT " 3 -- CHANGE PAYMENT AMOUNT"
2440 PRINT " 4 -- CHANGE NUMBER OF PAYMENTS "
2450 PRINT " 5 -- CHANGE PAYMENTS PER YEAR
2460 PRINT " 6 -- CHANGE ANNUAL INTEREST RATE"
2470 PRINT:INPUT " SELECT OPTION ==> ";F
2480 IF F<1 OR F>6 THEN 2470
2490 F=INT(F):ON F GOTO 10,2220,2270,2290,2310,2330
2495 GOTO 2400
2500 END
4219 REM -----------------------------------------------------------------
4220 CLEAR
4235 CLS: PRINT " FUNCTION 7 -- NOMINAL AND EFFECTIVE INTEREST RATES":PRINT:PRINT
4240 PRINT "This program computes the Nominal and Effective Interest Rates when"
4245 PRINT"given the Future Value, Present Value, number of periods between the"
4260 PRINT "two, and the number of compounding periods per year.":PRINT
4280 INPUT " FUTURE VALUE (DOLLARS) ";FV
4290 INPUT " PRESENT VALUE (DOLLARS) ";PV
4300 INPUT " TOTAL NUMBER OF PERIODS ";NP
4310 INPUT " NUMBER OF PERIODS PER YEAR";PY
4320 NR=(PY*((FV/PV)^(1/NP))-PY)*100
4330 ER=((FV/PV)^(PY/NP)-1)*100
4340 PRINT:PRINT " The Nominal Rate is";NR;" %
4345 PRINT " The Effective Rate is";ER;" %
4350 PRINT: PRINT:
4355 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
4358 PRINT " 1 -- RETURN TO MAIN MENU"
4360 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
4363 INPUT " SELECT OPTION ==> ";IA
4367 IF IA = 2 THEN GOTO 4230
4370 IF IA <>1 THEN GOTO 4363
4373 RUN
4379 REM -----------------------------------------------------------------
4380 CLS: PRINT " FUNCTION 12 -- INTERNAL RATE OF RETURN": PRINT: PRINT
4390 CLEAR
4400 PRINT "This function computes the Internal Rate of Return on an Investment,"
4410 PRINT "based on the Periodic Earnings of that Investment, and discounted for"
4420 PRINT "for the Present Value of the Expected Sales Price.": PRINT
4440 INPUT " PURCHASE PRICE (INVESTMENT) ";PV
4450 INPUT " THE EXPECTED SALE PRICE ";FV
4455 INPUT " THE TOTAL NUMBER OF PERIODS ";N
4460 INPUT " NUMBER OF PERIODS PER YEAR ";PY: PRINT
4480 DIM EP(N)
4490 FOR X=1 TO N:PRINT " EARNINGS FOR PERIOD #";X;:INPUT EP(X):NEXT X
4500 PRINT: PRINT
4505 PRINT" . . . COMPUTER WORKING. BE WITH YOU IN A FEW SECONDS . . .
4510 IR=0.15/PY:I1=0.25
4520 PF=FV/(1+IR)^N
4530 TE=0
4540 FOR X=1 TO N
4550 PE=EP(X)/(1+IR)^X
4560 TE=TE+PE
4570 NEXT X
4580 I1=IR*(PF+TE)/PV
4590 IF ABS(IR-I1)<0.000001 THEN IR=IR*PY*100:GOTO 4603
4600 IR=I1:GOTO 4520
4603 CLS: PRINT " FUNCTION 12 -- INTERNAL RATE OF RETURN": PRINT: PRINT
4608 PRINT "For an Investment of $";PV;", an Expected Sales Price of $";FV
4610 PRINT"and ";N;"periods, where there are ";PY;"periods per year:"
4613 PRINT:PRINT " The Rate of Return is ";IR;"%"
4614 PRINT: PRINT:
4616 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
4618 PRINT " 1 -- RETURN TO MAIN MENU"
4620 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
4622 INPUT " SELECT OPTION ==> ";IA
4624 IF IA = 2 THEN GOTO 4380
4625 IF IA <>1 THEN GOTO 4622
4627 RUN
4628 END
4629 REM -----------------------------------------------------------------
4630 CLS: PRINT " FUNCTION 10 -- FUTURE VALUE OF REGULAR DEPOSITS": PRINT: PRINT
4633 CLEAR:PRINT "This function computes the Future Value of a Series of Regular Deposits,"
4650 PRINT "where each deposit is identical, and interest is compounded with the same "
4670 PRINT "frequency that the deposits are made. This is known as an Annuity Due;"
4680 PRINT "that is, payments are made in advance of the interest being paid, such as
4700 PRINT "savings accounts or insurance policies.
4705 PRINT
4710 INPUT " AMOUNT OF REGULAR DEPOSIT ";RD
4720 INPUT " NUMBER OF DEPOSITS PER YEAR ";PY
4730 INPUT " THE TOTAL NUMBER OF MONTHS ";M
4750 Y = M/12
4760 INPUT " NOMINAL ANNUAL INTEREST RATE";IR
4770 I=IR/PY/100
4780 T=(1+I)^(PY*Y):T=T-1:T=T/I:FV=RD*T
4790 PRINT:PRINT " The Future Value is $";:PRINT USING "#,###,###.##";FV
4793 PRINT: PRINT:
4795 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
4798 PRINT " 1 -- RETURN TO MAIN MENU"
4800 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
4803 INPUT " SELECT OPTION ==> ";IA
4804 IF IA = 2 THEN GOTO 4630
4805 IF IA <>1 THEN GOTO 4803
4806 RUN
4809 END
4819 REM -----------------------------------------------------------------
4820 CLS: PRINT" FUNCTION 11 -- REGULAR DEPOSITS FOR FUTURE VALUE":PRINT:PRINT
4823 PRINT "This program computes the Amount of Regular Deposits needed to produce a"
4840 PRINT "particular Future Value. It is an example of an Annuity Due.":PRINT
4850 INPUT " FUTURE VALUE (IN DOLLARS) ";FV
4860 INPUT " NUMBER OF DEPOSITS PER YEAR ";PY
4870 INPUT " THE TOTAL NUMBER OF MONTHS ";M
4890 Y = M/12
4900 INPUT " NOMINAL ANNUAL INTEREST RATE";IR
4910 I=IR/PY/100
4920 T=(1+I)^(PY*Y):T=T-1:T=I/T:RD=FV*T
4930 PRINT:PRINT " The Amount of the Regular Deposit is $";:PRINT USING "#,###,###.##";RD
4933 PRINT: PRINT:
4935 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
4938 PRINT " 1 -- RETURN TO MAIN MENU"
4940 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
4943 INPUT " SELECT OPTION ==> ";IA
4944 IF IA = 2 THEN GOTO 4820
4945 IF IA <>1 THEN GOTO 4943
4946 RUN
4948 END
5589 REM -----------------------------------------------------------------
5590 CLS:PRINT " FUNCTION 13 -- BOND - PRESENT VALUE": PRINT: PRINT
5591 ON ERROR GOTO 5950
5593 CLEAR:PRINT "This program determines the Present Value of a Coupon Bond at a specified"
5610 PRINT "Rate of Interest, given specific Financial Information on the Bond.":PRINT
5640 INPUT " DESIRED RATE OF INTEREST (PERCENT)";IR
5650 INPUT " FACE (REDEMPTION) AMOUNT OF BOND ";AM
5660 INPUT " NUMBER OF PAYMENT PERIODS PER YEAR";PY
5670 INPUT " NUMBER OF PERIODS TO MATURITY ";PN
5680 INPUT " THE PERIODIC PAYMENT (IN DOLLARS) ";PP
5690 PRINT:PRINT
5700 IR=IR/PY/100:PV=AM/(1+IR)^PN
5710 T=(1+IR)^(-PN):T=1-T:T=T/IR:T=T*PP
5720 PV=PV+T
5723 PRINT " The Present Value is $";:PRINT USING"###,###.##";PV
5730 PRINT: PRINT:
5733 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
5735 PRINT " 1 -- RETURN TO MAIN MENU"
5738 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
5740 INPUT " SELECT OPTION ==> ";IA
5742 IF IA = 2 THEN GOTO 5590
5745 IF IA <>1 THEN GOTO 5740
5746 RUN
5748 END
5749 REM -----------------------------------------------------------------
5750 CLS:CLEAR
5755 PRINT " FUNCTION 14 -- BOND - YIELD TO MATURITY": PRINT: PRINT
5760 ON ERROR GOTO 5950
5770 PRINT "This program determines the Yield to Maturity on a Bond, given the"
5780 PRINT "Current Purchase Price. This is the true Rate of Return on a Bond."
5790 PRINT
5800 INPUT " PURCHASE PRICE OF THE BOND ";PV
5810 INPUT " THE REDEMPTION (FACE) VALUE ";FV
5820 INPUT " ANNUAL QUOTED INTEREST RATE ";IR
5830 INPUT " # OF COUPON PAYMENTS PER YEAR ";PY
5840 INPUT " # OF PAYMENT PERIODS REMAINING";N
5850 INPUT " AMOUNT OF THE COUPON PAYMENT ";CP
5860 PRINT:PRINT ". . . COMPUTER WORKING. BE WITH YOU IN A FEW SECONDS . . .
5870 IR=0.08/PY
5880 PF=FV/(1+IR)^N
5890 T=(1+IR)^(-N):T=1-T:T=T/IR*CP
5900 I1=IR*(PF+T)/PV
5910 IF ABS(IR-I1)<0.000001 THEN IR=IR*PY*100:GOTO 5930
5920 IR=I1:GOTO 5880
5930 PRINT:PRINT " The Yield to Maturity is";:PRINT USING A$;IR;" %"
5933 PRINT: PRINT:
5935 PRINT "WHAT DO YOU WANT TO DO: ": PRINT
5937 PRINT " 1 -- RETURN TO MAIN MENU"
5939 PRINT " 2 -- RERUN CURRENT FUNCTION": PRINT
5940 INPUT " SELECT OPTION ==> ";IA
5942 IF IA = 2 THEN GOTO 5750
5945 IF IA <>1 THEN GOTO 5940
5946 RUN
5948 END
5949 REM -----------------------------------------------------------------
5950 REM ERROR HANDLING ROUTINE
5955 PRINT
5960 IF ERR/2+1=11 THEN PRINT "A `DIVIDE BY ZERO' ERROR HAS OCCURRED."ELSE 6030
5970 PRINT:PRINT " THIS USUALLY MEANS THAT A VALUE REQUIRED BY THE FUNCTION WAS NOT ENTERED PROPERLY"
5980 PRINT " OR THAT AN INVALID ZERO CONDITION WAS COMPUTED."
5990 PRINT:PRINT " PUSH `ENTER' TO RETURN TO MAIN MENU"; INPUT A$
6010 RUN
6030 PRINT "ERROR";ERR;"HAS OCCURR
10 CLS : KEY OFF:WIDTH "lpt1:",150:T$ = "COMPOUND INTEREST FACTORS":PRINT TAB(25);T$:PRINT :PRINT:PRINT "PRINTER TO BE USED:":PRINT " 1 - EPSON MX80":PRINT " 2 - MICROLINE " CHR$(230) "84":PRINT " 3 - EPSON MX100"
20 PRINT :PRINT "ENTER APPROPRIATE SELECTION (1-3) ";
30 A$=INKEY$: IF A$="" THEN 30
40 IF A$="2" THEN PRT=2:LPRINT CHR$(27) "6":GOTO 60
50 LPRINT CHR$(18)
60 PRINT :PRINT:INPUT "Enter annual interest rate ",IR:CLS:I=IR/100:PRINT USING "##.###";IR;:LPRINT:LPRINT USING "##.###";IR;:PRINT "%";TAB(25);T$;TAB(73);:LPRINT "%";TAB(25);T$;TAB(72);:PRINT USING "##.###";IR;:LPRINT USING "##.###";IR;:PRINT "%"
70 LPRINT "%":PRINT:IF PRT=2 THEN LPRINT CHR$(27) "8" CHR$(28) :GOTO 90
80 LPRINT CHR$(27)"0" CHR$(15)
90 LPRINT:PRINT " Single Payment Uniform Series ":LPRINT " Single Payment Uniform Series Gradient series "
100 PRINT " ------------------- ----------------------------------------- ":LPRINT " ---------------------- ---------------------------------------------------- ----------------------- "
110 PRINT " Compound Present Sinking Capital Compound Present ":LPRINT " Compound Present Sinking Capital Compound Present Gradient Gradient "
120 PRINT " Amount Worth Fund Recovery Amount Worth ":LPRINT " Amount Worth Fund Recovery Amount Worth Uniform Present "
130 PRINT "Years Factor Factor Factor Factor Factor Factor ":LPRINT "Years Factor Factor Factor Factor Factor Factor Series Worth Years"
140 PRINT " N F/P P/F A/F A/P F/A P/A ":LPRINT " N F/P P/F A/F A/P F/A P/A A/G P/G N"
150 PRINT "--- ---------- ---------- ---------- ---------- ---------- ---------- ":LPRINT " --- --------- --------- --------- --------- --------- --------- --------- --------- --- ":FOR S=1 TO 10:PRINT
160 LPRINT:R=5 * S:FOR N=R-4 TO R:FP = (1+I)^N:PF = 1/FP:AF = I/((1+I)^N-1):AP = (I*(1+I)^N)/((1+I)^N-1):FA = 1/AF:PA = 1/AP:AG = 1/I-N/((1+I)^N-1):PG =1/I*(((1+I)^N-1)/I-N)*(1/(1+I)^N):IF AG < 0 THEN AG =0
170 IF PG < 0 THEN PG = 0
180 PRINT USING "###";N;:LPRINT USING "###";N;:PRINT USING "###.##### ";FP,PF,AF,AP,FA,PA:LPRINT USING " ####.##### ";FP,PF,AF,AP,FA,PA,AG,PG;:LPRINT USING " ###";N:NEXT N:NEXT S:LPRINT:FOR N= 55 TO 75 STEP 5:FP = (1+I)^N:PF = 1/FP
190 AF = I/((1+I)^N-1):AP = (I*(1+I)^N)/((1+I)^N-1):FA = 1/AF:PA = 1/AP:AG = 1/I-N/((1+I)^N-1):PG =1/I*(((1+I)^N-1)/I-N)*(1/(1+I)^N):IF AG < 0 THEN AG =0
200 IF PG < 0 THEN PG = 0
210 PRINT USING "###";N;:LPRINT USING "###";N;:PRINT USING "#####.##### ";FP,PF,AF,AP,AG,PG:LPRINT USING "#######.#### ";FP;:LPRINT USING "######.##### ";PF,AF,AP;:LPRINT USING " ######.#### ";FA;:LPRINT USING "######.##### ";PA,AG,PG;
220 LPRINT USING " ###";N:NEXT N:LPRINT:LPRINT "========================================================== IBM Owners Association ================================================":IF PRT=2 THEN LPRINT CHR$(27) "6" CHR$(30) :GOTO 240
230 LPRINT CHR$(18)
240 LPRINT:LPRINT :LPRINT :LPRINT :LPRINT:LPRINT:PRINT :PRINT " EXIT PROGRAM (Y/N) ?";
250 A$=INKEY$: IF A$="" THEN 250
260 IF A$="y" OR A$="Y" THEN CLS:PRINT :FILES:KEY ON:END
270 CLEAR: GOTO 10
10 REM
20 REM INVENPRC
30 REM
40 DIM ITEM$(1000),RECNUM(1000),OPENA(1000)
50 COMMON F$
60 CLS:WIDTH 80:COLOR 7,0:KEY OFF
65 ZZ$="ONE MOMENT PLEASE":LOCATE 12,1:GOSUB 6000
70 OPEN "R",1,F$:OPN=1:FIELD#1,4 AS NREC$,4 AS CITYR$,4 AS COUNTR$,4 AS STATER$,4 AS CITYT$,4 AS COUNTT$,4 AS STATET$,100 AS LFT$
80 FIELD#1,1 AS VCODE$,1 AS ORDCOD$,10 AS STKNUM$,20 AS DESC$,4 AS DCODE$,4 AS LCODE$,4 AS RPT$,4 AS QUANT$,10 AS LDR$,10 AS LDS$,10 AS LDO$,10 AS LPO$,4 AS SP$,4 AS LRC$,20 AS LVO$,4 AS TCOST$,4 AS TOTSLD$,4 AS AMT$
90 FOR I=1 TO 1000:RECNUM(I)=0:OPENA(I)=0:NEXT:NUMREC=LOF(1)/128:NUM=1
98 IF NUMREC=0 THEN 140
99 FOR K=2 TO NUMREC:GET#1,K:VCD$=VCODE$:IF VCD$="D" THEN 110
100 ITEM$(NUM)=STKNUM$:RECNUM(NUM)=K:NUM=NUM+1:GOTO 120
110 OPENA(OPN)=K:OPN=OPN+1
120 NEXT K
125 ZZZ=FRE(" ")
130 IF NUM <> 1 THEN 150
140 ZZ$="***** OPENING NEW FILE *****":LOCATE 12,1:GOSUB 6000:GOSUB 8060:LSET NREC$=MKS$(2):GOSUB 5030:GOSUB 5040:PUT#1,1:GOSUB 2000
150 CLS:PRINT" THE FOLLOWING OPTIONS ARE AVAILABLE: "
160 PRINT
170 PRINT TAB(5);"1....LIST STOCK NUMBER AND DESCRIPTION "
180 PRINT TAB(5);"2....ADD ADDITIONAL STOCK NUMBERS"
190 PRINT TAB(5);"3....STOCK FILE EDITING"
200 PRINT TAB(5);"4....UPDATE STOCK FILE"
205 PRINT TAB(5);"5....SALES TAX EDITING"
210 PRINT TAB(5);"6....TERMINATE PROCESSOR OVERLAY"
220 PRINT:INPUT OPT
230 IF OPT<=0 OR OPT >6 THEN 150
240 IF OPT=1 THEN GOSUB 1000:GOTO 150
250 IF OPT=2 THEN GOSUB 2000:GOTO 150
260 IF OPT=3 THEN GOSUB 3000:GOTO 150
270 IF OPT=4 THEN GOSUB 4000:GOTO 150
275 IF OPT=5 THEN GOSUB 9005:GOTO 150
279 ZZ$="***** ONE MOMENT PLEASE *****":CLS:LOCATE 12,1:GOSUB 6000
280 CLOSE 1:CHAIN "START",120
900 CLS:ZZ$="***** INVENTORY STOCK LIST *****":GOSUB 6000:PRINT
910 PRINT TAB(7);"STOCK NUMBER";TAB(32);"DESCRIPTION";TAB(55);"RECORD NUMBER":PRINT:RETURN
1000 GOSUB 900
1010 FOR LST=1 TO NUM-1
1020 GET#1,LST+1
1030 GOSUB 9000
1040 IF MD=0 AND LST<>1 THEN GOSUB 5000:GOSUB 900
1080 DC$=DESC$:SN$=STKNUM$:VC$=VCODE$:R$=ORDCOD$
1081 CODE$=" ":IF R$="O" THEN CODE$="*"
1082 Q=CVS(QUANT$):R=CVS(RPT$):REO$=" ":IF Q<=R THEN REO$="REORDER"
1085 IF VC$="D" THEN DC$="********************":SN$="*** D ***"
1090 PRINT TAB(8);SN$;TAB(26);DC$;TAB(60);LST+1;TAB(65);CODE$;TAB(66);REO$
1100 NEXT LST
1110 GOSUB 5000:RETURN
2000 CLS:ZZ$="***** INVENTORY INSERTION *****":YY$=ZZ$:GOSUB 6000
2005 RCN=NUM+1
2010 IF OPENA(1)=0 THEN 2040
2020 RCN=OPENA(1):NUM=NUM-1
2025 ZZ$="***** ADJUSTING INVENTORY RECORD DUE TO DELETED ITEM *****":LOCATE 12,1:GOSUB 6000
2030 FOR K=2 TO 1000:OPENA(K-1)=OPENA(K):NEXT:OPENA(1000)=0
2035 ZZ$=YY$:CLS:GOSUB 6000
2040 LOCATE 5,10:PRINT"STOCK NUMBER":LOCATE 5,50
2050 INPUT S$:IF S$<>"" THEN 2065
2055 ZZZ=FRE(" ")
2060 RETURN
2065 W=0:GOSUB 8010
2066 IF W <> 0 THEN RETURN
2070 NUM=NUM+1
2080 LOCATE 7,10:PRINT"DESCRIPTION":LOCATE 7,50:INPUT D$
2090 LOCATE 9,10:PRINT"DEPARTMENT CODE":LOCATE 9,50:INPUT D1$
2100 LOCATE 11,10:PRINT"LOCATION CODE":LOCATE 11,50:INPUT L$
2110 LOCATE 13,10:PRINT"RE-ORDER POINT":LOCATE 13,50:INPUT R
2120 LOCATE 15,10:PRINT"QUANTITY ON HAND":LOCATE 15,50:INPUT Q
2130 LOCATE 17,10:PRINT"SELLING PRICE":LOCATE 17,50:INPUT S
2140 LOCATE 19,10:PRINT"COST OF ITEM":LOCATE 19,50:INPUT C
2150 LOCATE 21,10:PRINT"VENDOR ORDERED FROM":LOCATE 21,50:INPUT V$
2160 LOCATE 23,10:PRINT"TAXABLE ITEM (Y/N) ";:LOCATE 23,50:INPUT T$
2170 IF T$="Y" THEN LSET VCODE$="T" ELSE LSET VCODE$="N"
2180 YY$=S$:QQ=10:GOSUB 5100:LSET STKNUM$=YY$
2190 LSET ORDCOD$="N":YY$=D$:QQ=20:GOSUB 5100:LSET DESC$=YY$
2200 YY$=D1$:QQ=4:GOSUB 5100:LSET DCODE$=YY$:LSET AMT$=MKS$(0)
2210 YY$=L$:GOSUB 5100:LSET LCODE$=YY$
2220 LSET RPT$=MKS$(R)
2230 LSET QUANT$=MKS$(Q)
2240 LSET LDR$=DATE$:ZZ$="**********"
2250 LSET LDS$=ZZ$:LSET LDO$=ZZ$:LSET LPO$=ZZ$
2260 LSET SP$=MKS$(S)
2270 LSET LRC$=MKS$(C)
2280 QQ=20:YY$=V$:GOSUB 5100:LSET LVO$=YY$
2290 LSET TCOST$=MKS$(C*Q)
2300 LSET TOTSLD$=MKS$(0)
2310 PUT#1,RCN:ITEM$(RCN-1)=STKNUM$:GET#1,1
2320 RECNUM(RCN-1)=RCN:LSET NREC$=MKS$(NUM+1):PUT#1,1
2330 GOSUB 8000:GOTO 2005
3000 CLS:ZZ$="***** CORRECTIONS *****"
3010 GOSUB 6000
3020 LOCATE 5,1
3030 PRINT"INPUT STOCK NUMBER ";:INPUT YY$:IF YY$="" THEN RETURN
3035 QQ=10:GOSUB 5100
3040 FOR I=1 TO NUM-1:IF YY$=ITEM$(I) THEN 3080
3060 NEXT I
3070 PRINT "STOCK NUMBER NOT FOUND":GOSUB 5000:GOTO 3000
3080 PRINT "DO YOU WISH TO DELETE THE ITEM (Y/N) ";:INPUT RESP$:IF RESP$<> "Y" THEN 3150
3090 PRINT "ARE YOU SURE (Y/N) ";:INPUT RESP$:IF RESP$ <> "Y" THEN 3150
3100 CLS:ZZ$="***** ONE MOMENT PLEASE *****":LOCATE 10,1:GOSUB 6000:LOCATE 14,1:ZZ$="***** ADJUSTING LOOK-AHEAD INDEX *****":GOSUB 6000
3110 ITEM$(I)="***":GET#1,RECNUM(I):LSET VCODE$="D":PUT#1,RECNUM(I)
3130 FOR J=1000 TO 2 STEP -1
3140 OPENA(J)=OPENA(J-1):NEXT J:OPENA(1)=RECNUM(I):GOTO 3000
3150 PRINT:PRINT "OPTIONS TO CHANGE ARE AS FOLLOWS:":PRINT
3155 GET#1,RECNUM(I)
3160 PRINT "STK NUM(SN), DESC(D), DEPT CODE(DC), LOC CODE(LC), REORD POINT(RP), PRICE(P)"
3165 PRINT "TAX CODE(TC), LAST VENDOR(LV), LAST P.O.(PO), LAST RECEIVED COST(RC)":PRINT
3170 INPUT RESP$:IF RESP$="" THEN RETURN
3180 IF RESP$="SN" THEN 3250
3190 IF RESP$="D" THEN 3310
3200 IF RESP$="DC" THEN 3350
3210 IF RESP$="LC" THEN 3390
3220 IF RESP$="RP" THEN 3430
3230 IF RESP$="P" THEN 3470
3235 IF RESP$="TC" THEN 3510
3236 IF RESP$="LV" THEN 3580
3237 IF RESP$="PO" THEN 3620
3238 IF RESP$="RC" THEN 3660
3240 PRINT "INVALID INPUT":GOTO 3150
3250 STK$=STKNUM$
3260 PRINT"OLD STOCK NUMBER=";STK$;" NEW=";
3270 INPUT YY$:IF YY$="" THEN RETURN
3280 QQ=10:GOSUB 5100:LSET STKNUM$=YY$
3290 PUT#1,RECNUM(I):ITEM$(I)=YY$
3300 GOTO 3000
3310 D$=DESC$
3320 PRINT "OLD DESCRIPTION=";D$;" NEW=";
3330 INPUT YY$:IF YY$=""THEN RETURN
3340 QQ=20:GOSUB 5100:LSET DESC$=YY$:PUT#1,RECNUM(I):GOTO 3000
3350 YY$=DCODE$
3360 PRINT "OLD DEPARTMENT CODE=";YY$;" NEW=";
3370 INPUT YY$:IF YY$="" THEN RETURN
3380 QQ=4:GOSUB 5100:LSET DCODE$=YY$:PUT#1,RECNUM(I):GOTO 3000
3390 YY$=LCODE$
3400 PRINT "OLD LOCATION CODE=";YY$;" NEW=";
3410 INPUT YY$:IF YY$="" THEN RETURN
3420 QQ=4:GOSUB 5100:LSET LCODE$=YY$:PUT#1,RECNUM(I):GOTO 3000
3430 R=CVS(RPT$)
3440 PRINT "OLD RE-ORDER POINT=";R;" NEW=";
3450 INPUT YY$:IF YY$="" THEN RETURN
3460 R=VAL(YY$):LSET RPT$=MKS$(R):PUT#1,RECNUM(I):GOTO 3000
3470 S=CVS(SP$)
3480 PRINT "OLD SELLING PRICE=";S;" NEW=";
3490 INPUT YY$:IF YY$="" THEN RETURN
3500 S=VAL(YY$):LSET SP$=MKS$(S):PUT#1,RECNUM(I):GOTO 3000
3510 V$=VCODE$
3520 A$="TAXABLE ITEM"
3530 IF V$="N" THEN A$="NON-"+A$
3540 PRINT A$;" NEW (T/N)=";
3550 INPUT YY$:IF YY$="" THEN RETURN
3560 YY$=LEFT$(YY$,1):IF YY$="T" OR YY$="N" THEN 3570 ELSE GOTO 3510
3570 LSET VCODE$=YY$:PUT#1,RECNUM(I):GOTO 3000
3580 YY$=LVO$
3590 PRINT "LAST VENDOR ORDERED FROM= ";YY$;" NEW=";
3600 INPUT YY$:IF YY$="" THEN RETURN
3610 QQ=20:GOSUB 5100:LSET LVO$=YY$:PUT#1,RECNUM(I):GOTO 3000
3620 YY$=LPO$
3630 PRINT "LAST P.O. = ";YY$;" NEW= ";
3640 INPUT YY$:IF YY$="" THEN RETURN
3650 QQ=10:GOSUB 5100:LSET LPO$=YY$:PUT#1,RECNUM(I):GOTO 3000
3660 COST=CVS(LRC$)
3670 PRINT "LAST RECEIVED COST=";COST;" NEW=";
3680 INPUT YY$:IF YY$="" THEN RETURN
3690 CST=VAL(YY$):SELL=CVS(SP$)
3700 IF SELL <= CST THEN PRINT"COST <= SELL":GOTO 3670
3710 IF CST <= 0 THEN PRINT "IMPOSSIBLE COST":GOTO 3670
3720 LSET LRC$=MKS$(CST):PUT#1,RECNUM(I):GOTO 3000
4000 CLS
4010 ZZ$="***** STOCK UPDATE *****":GOSUB 6000
4020 LOCATE 5,1:PRINT" INPUT STOCK NUMBER TO UPDATE ";:INPUT YY$:IF YY$="" THEN RETURN
4030 QQ=10:GOSUB 5100
4040 FOR I=1 TO NUM-1
4050 IF ITEM$(I)=YY$ THEN 4080
4060 NEXT I
4070 PRINT "ITEM NOT FOUND":GOSUB 5000:GOTO 4000
4080 NRC=RECNUM(I):GET#1,NRC
4090 A$="TAX":V$=VCODE$:IF V$="N" THEN A$="NON-"+A$
4110 B$="ON ORDER":ORD$=ORDCOD$:IF ORD$="N" THEN B$="NOT "+B$
4120 C$=STKNUM$:D$=DESC$:E$=DCODE$
4130 FF$=LCODE$:G=CVS(RPT$):H=CVS(QUANT$):I$=LDR$:J$=LDS$
4140 K$=LDO$:L$=LPO$:M=CVS(SP$)
4150 N=CVS(LRC$):O$=LVO$:P=CVS(TCOST$):Q=CVS(TOTSLD$):R=CVS(AMT$)
4160 CLS:ZZ$="***** ITEM LIST *****":GOSUB 6000:PRINT
4170 PRINT A$;" ITEM";SPACE$(10);B$
4180 PRINT "STOCK NUMBER";TAB(50);C$
4190 PRINT "DESCRIPTION";TAB(50);D$
4200 PRINT "DEPARTMENT CODE";TAB(50);E$
4210 PRINT "LOCATION CODE";TAB(50);FF$
4220 PRINT "RE-ORDER POINT ";TAB(50);G
4230 PRINT "QUANTITY ON HAND";TAB(50);H
4240 PRINT "LAST DATE RECEIVED";TAB(50);I$
4250 PRINT "LAST DATE SOLD";TAB(50);J$
4260 PRINT "LAST DATE ORDERED";TAB(50);K$
4270 PRINT "LAST PURCHASE ORDER NUMBER";TAB(50);L$
4280 PRINT "SELLING PRICE";TAB(50);M
4290 PRINT "LAST RECEIVED COST";TAB(50);N
4300 PRINT "LAST VENDOR ORDERED FROM";TAB(50);O$
4310 PRINT "TOTAL COST OF ITEM TO DATE";TAB(50);P
4320 PRINT "TOTAL SOLD IN DOLLARS TO DATE";TAB(50);Q
4325 PRINT "AMOUNT STILL ON ORDER (NOT ADDED TO INV)";TAB(50);R
4330 PRINT:GOSUB 5000
4340 ZZ$=YY$+SPACE$(10)+D$:CLS:GOSUB 6000
4350 PRINT:PRINT:PRINT "THE FOLLOWING OPTIONS ARE AVAILABLE:"
4360 PRINT
4370 PRINT TAB(5);"1.....ORDER MORE STOCK"
4380 PRINT TAB(5);"2.....RECEIVE STOCK"
4390 PRINT TAB(5);"3.....SELL STOCK"
4400 PRINT TAB(5);"4.....RETURN STOCK"
4405 PRINT TAB(5);"5.....TERMINATE UPDATE"
4410 PRINT:PRINT "INPUT YOUR CHOICE ";:INPUT CHOICE
4420 IF CHOICE <1 OR CHOICE >5 THEN 4340
4430 IF CHOICE=1 THEN 4500
4440 IF CHOICE=2 THEN 4570
4450 IF CHOICE=3 THEN 4740
4455 IF CHOICE=4 THEN 10000
4460 RETURN
4500 CLS:ZZ$="***** STOCK ORDER *****":GOSUB 6000:PRINT:PRINT
4510 PRINT TAB(5);"INPUT AMOUNT ORDERED";TAB(50);:INPUT AMOUNT:AM=CVS(AMT$):AMOUNT=AMOUNT+AM
4520 PRINT TAB(5);"INPUT PURCHASE ORDER NUMBER";TAB(50);:INPUT PO$
4530 LSET ORDCOD$="O":LSET AMT$=MKS$(AMOUNT)
4540 LSET LDO$=DATE$:QQ=10:YY$=PO$:GOSUB 5100:LSET LPO$=YY$
4550 PRINT TAB(5);"INPUT THE NAME OF THE VENDOR";TAB(50);:INPUT YY$:QQ=20
4560 GOSUB 5100:LSET LVO$=YY$:PUT#1,NRC:RETURN
4570 CLS:ZZ$="***** RECEIVED STOCK *****":GOSUB 6000:PRINT:PRINT
4580 PRINT TAB(5);"INPUT AMOUNT RECEIVED";TAB(50);:INPUT X
4590 PRINT TAB(5);"INPUT UNIT COST";TAB(50);:INPUT C
4600 OK=0
4610 IF C>M THEN PRINT "COST IS GREATER THAN SELLING PRICE":OK=1
4620 IF X>R THEN PRINT "YOU RECEIVED MORE THAN WHAT IS LISTED ON ORDER":OK=OK+10
4630 IF OK=0 THEN 4670
4640 PRINT "DO YOU WISH TO ABORT THE RECEIVE OPTION (Y/N) ";:INPUT A$
4650 IF A$="N" THEN 4670
4660 RETURN
4670 LSET LDR$=DATE$
4680 LSET LRC$=MKS$(C)
4690 H=H+X:LSET QUANT$=MKS$(H)
4700 P=P+(C*X):LSET TCOST$=MKS$(P)
4710 R=R-X:LSET AMT$=MKS$(R)
4720 IF R<=0 THEN LSET ORDCOD$="N"
4730 PUT#1,NRC:RETURN
4740 CLS:ZZ$="***** SELL STOCK *****":GOSUB 6000:PRINT:PRINT:FLAG=0
4750 PRINT "INPUT QUANTITY SOLD";TAB(50);:INPUT C
4770 IF C>H THEN PRINT "YOU SOLD MORE THAN IS LISTED TO BE IN STOCK"
4780 IF C<=H THEN 4820
4790 PRINT "DO YOU WISH TO ABORT THE SELL OPTION (Y/N) ";:INPUT A$
4800 IF A$="N" THEN 4820
4810 RETURN
4820 Q=Q+(M*C):LSET TOTSLD$=MKS$(Q)
4830 H=H-C:LSET QUANT$=MKS$(H)
4840 V$=VCODE$:IF FLAG=0 THEN LSET LDS$=DATE$
4850 PUT#1,NRC
4851 IF V$="N" THEN 4860
4852 PRINT "DO YOU WISH TO INCLUDE THE SALES TAX ENTRIES (Y/N) ";:INPUT A$
4853 IF A$ <> "Y" THEN 4860
4854 INPUT "PRIMARY OR ALTERNATE TAX BASE (P/A) ";TB$:GET#1,1
4855 RCITY=CVS(CITYR$):RCOUNT=CVS(COUNTR$):RSTATE=CVS(STATER$):GOSUB 10200
4856 TCITY=CVS(CITYT$):TCOUNT=CVS(COUNTT$):TSTATE=CVS(STATET$)
4857 TCITY=TCITY+RCITY*C*M:LSET CITYT$=MKS$(TCITY)
4858 TCOUNT=TCOUNT+RCOUNT*C*M:LSET COUNTT$=MKS$(TCOUNT)
4859 TSTATE=TSTATE+RSTATE*C*M:LSET STATET$=MKS$(TSTATE):PUT#1,1
4860 IF H<=G THEN PRINT "***** WARNING ***** STOCK IS BELOW RE-ORDER POINT":GOSUB 5000
4870 RETURN
5000 PRINT "TYPE A KEY ON THE KEYBOARD TO CONTINUE";
5010 QX$=INKEY$:IF QX$="" THEN 5010
5020 RETURN
5030 LSET CITYT$=MKS$(0):LSET COUNTT$=MKS$(0):LSET STATET$=MKS$(0):RETURN
5040 CLS:ZZ$="***** TAX RATE TABLE GENERATION *****":GOSUB 6000
5050 LOCATE 5,1
5060 PRINT TAB(5);"INPUT CITY TAX IN PERCENT";TAB(50);:INPUT R
5065 PRINT TAB(5);"INPUT ALTERNATE CITY TAX IN PERCENT";TAB(50);:INPUT R1:LSET CITYR$=MKS$(R/100+R1*100)
5070 PRINT TAB(5);"INPUT COUNTY TAX IN PERCENT";TAB(50);:INPUT R
5075 PRINT TAB(5);"INPUT ALTERNATE COUNTY TAX RATE IN PERCENT";TAB(50);:INPUT R1:LSET COUNTR$=MKS$(R/100+R1*100)
5080 PRINT TAB(5);"INPUT STATE TAX IN PERCENT";TAB(50);:INPUT R
5085 PRINT TAB(5);"INPUT ALTERNATE STATE TAX RATE IN PERCENT";TAB(50);:INPUT R1:LSET STATER$=MKS$(R/100+R1*100)
5090 RETURN
5100 IF LEN(YY$)<QQ THEN YY$=YY$+SPACE$(QQ-LEN(YY$))
5110 RETURN
6000 COLOR 0,7:NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):PRINT SPACE$(NZ);ZZ$;SPACE$(NZ):COLOR 7,0:RETURN
7000 NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):ZZ$=SPACE$(NZ)+ZZ$:RETURN
8000 FOR LL=5 TO 23:LOCATE LL,50:PRINT SPACE$(30):NEXT:RETURN
8010 QQ=10:YY$=S$:GOSUB 5100
8020 FOR Z=1 TO NUM
8030 IF ITEM$(Z) <> YY$ THEN 8080
8032 CLS
8035 ZZ$="********** E R R O R **********":LOCATE 10,1:GOSUB 6000
8040 ZZ$="********** D U P L I C A T E S T O C K N U M B E R **********"
8045 W=1
8050 LOCATE 12,1:GOSUB 6000
8060 LOCATE 20,1:GOSUB 5000:RETURN
8080 NEXT Z
8090 RETURN
9000 MD=LST MOD 14:MD=MD-1:RETURN
9005 CLS:ZZ$="***** SALES TAX EDITOR *****":GOSUB 6000:LOCATE 5,1
9010 GET#1,1:PRINT "THE FOLLOWING OPTIONS ARE AVAILABLE:"
9020 PRINT TAB(5);"1.....LIST SALES TAX RECORD"
9030 PRINT TAB(5);"2.....ZERO OUT ACCUMULATED SALES TAX ENTRIES"
9040 PRINT TAB(5);"3.....GENERATE TAX RATE TABLE"
9050 PRINT TAB(5);"4.....TERMINATE THE SALES TAX EDITOR"
9060 PRINT:PRINT:PRINT
9070 INPUT "INPUT YOUR OPTION";OPT:IF OPT <1 OR OPT>4 THEN 9005
9080 IF OPT=1 THEN 9200
9090 IF OPT=2 THEN 9900
9100 IF OPT=3 THEN GOSUB 5040:PUT#1,1:GOTO 9005
9110 RETURN
9200 CLS:ZZ$="***** SALES TAX RECORD *****":GOSUB 6000:GET#1,1
9210 RCITY=CVS(CITYR$):RCOUNT=CVS(COUNTR$):RSTATE=CVS(STATER$)
9215 GOSUB 10100
9220 TCITY=CVS(CITYT$):TCOUNT=CVS(COUNTT$):TSTATE=CVS(STATET$)
9230 LOCATE 5,1
9240 PRINT TAB(5);"CITY TAX RATE IN PERCENT";TAB(50);:PRINT USING "##.##";RCITY*100
9250 PRINT TAB(5);"COUNTY TAX RATE IN PERCENT";TAB(50);:PRINT USING "##.##";RCOUNT*100
9260 PRINT TAB(5);"STATE TAX RATE IN PERCENT";TAB(50);:PRINT USING "##.##";RSTATE*100:PRINT:PRINT
9261 PRINT TAB(5);"ALTERNATE CITY TAX RATE IN PERCENT";TAB(50);:PRINT USING "##.##";RCITYA*100
9262 PRINT TAB(5);"ALTERNATE COUNTY TAX RATE IN PERCENT";TAB(50);:PRINT USING "##.##";RCOUNA*100
9263 PRINT TAB(5);"ALTERNATE STATE TAX RATE IN PERCENT";TAB(50);:PRINT USING "##.##";RSTATA*100
9270 PRINT:PRINT:PRINT TAB(5);"ACCUMULATED CITY TAX";TAB(50);:PRINT USING "######.##";TCITY
9280 PRINT TAB(5);"ACCUMULATED COUNTY TAX";TAB(50);:PRINT USING "######.##";TCOUNT
9290 PRINT TAB(5);"ACCUMULATED STATE TAX";TAB(50);:PRINT USING "######.##";TSTATE:PRINT:PRINT:PRINT
9300 GOSUB 5000:GOTO 9005
9900 PRINT "ARE YOU SURE (Y/N) ":INPUT RESP$
9910 IF RESP$="Y" THEN GOSUB 5030
9915 PUT#1,1
9920 GOTO 9005
10000 CLS:ZZ$="***** RETURN STOCK *****":GOSUB 6000:PRINT:PRINT:FLAG=1
10010 PRINT "INPUT QUANTITY RETURNED";TAB(50);:INPUT C:C=-C:GOTO 4820
10100 RCITYA=INT(RCITY)/10000:RCOUNA=INT(RCOUNT)/10000:RSTATA=INT(RSTATE)/10000
10110 RCITY=RCITY-INT(RCITY):RCOUNT=RCOUNT-INT(RCOUNT):RSTATE=RSTATE-INT(RSTATE)
10120 RETURN
10200 GOSUB 10100:IF TB$="A" THEN RCITY=RCITYA:RSTATE=RSTATA:RCOUNT=RCOUNA
10210 RETURN
1 ON ERROR GOTO 9000
10 REM
20 REM INVENRPT
30 REM
40 DIM ITEM$(1000),REC(1000):COMMON F$
50 GOSUB 6050
60 OPEN "R",1,F$:FIELD#1,4 AS NREC$,4 AS CITYR$,4 AS COUNTR$,4 AS STATER$,4 AS CITYT$,4 AS COUNTT$,4 AS STATET$,100 AS LFT$
70 FIELD#1,1 AS VCODE$,1 AS ORDCOD$,10 AS STKNUM$,20 AS DESC$,4 AS DCODE$,4 AS LCODE$,4 AS RPT$,4 AS QUANT$,10 AS LDR$,10 AS LDS$,10 AS LDO$,10 AS LPO$,4 AS SP$,4 AS LRC$,20 AS LVO$,4 AS TCOST$,4 AS TOTSLD$,4 AS AMT$
80 NUMREC=LOF(1)/128
90 IF NUMREC<2 THEN 296
100 CLS:PRINT "THE FOLLOWING OPTIONS ARE AVAILABLE:"
110 PRINT:NUM=0
120 PRINT TAB(5);"1....UNSORTED INVENTORY REPORT"
130 PRINT TAB(5);"2....SORT ON STOCK NUMBER INVENTORY REPORT"
140 PRINT TAB(5);"3....SORT ON DEPARTMENT CODE/STOCK NUMBER INVENTORY REPORT"
150 PRINT TAB(5);"4....SORT ON LOCATION CODE/STOCK NUMBER INVENTORY REPORT"
160 PRINT TAB(5);"5....REORDER REPORT/ON ORDER REPORT (SORTED ON STOCK NUM)"
170 PRINT TAB(5);"6....USAGE REPORT (SORTED ON STOCK NUMBER)"
180 PRINT TAB(5);"7....SALES TAX SUMMARY REPORT"
190 PRINT TAB(5);"8....BACK ORDER REPORT (SORTED ON STOCK NUMBER)"
200 PRINT TAB(5);"9....TERMINATE THE REPORT OVERLAY"
210 PRINT:PRINT
220 INPUT "INPUT OPTION ";OPT:SWITCH=1
230 IF OPT < 1 OR OPT > 9 THEN 100
240 IF OPT=1 THEN 300
250 IF OPT=2 THEN 340
260 IF OPT=3 THEN 390
270 IF OPT=4 THEN 450
280 IF OPT=5 THEN 510
290 IF OPT=6 THEN 620
292 IF OPT=7 THEN 670
294 IF OPT=8 THEN 1000
296 CLOSE 1:GOSUB 6010:CHAIN "START",120
300 GOSUB 6010:FOR R=2 TO NUMREC:GET#1,R
310 V$=VCODE$:IF V$="D" THEN 330
320 NUM=NUM+1:REC(NUM)=R
330 NEXT R:XX$="***** UNSORTED INVENTORY REPORT *****":GOSUB 8000:GOTO 100
340 GOSUB 6010: FOR R=2 TO NUMREC:GET#1,R
350 V$=VCODE$:IF V$="D" THEN 370
360 NUM=NUM+1:REC(NUM)=R:ITEM$(NUM)=STKNUM$
370 NEXT R
380 GOSUB 6020:GOSUB 5050:XX$="***** INVENTORY REPORT---SORTED ON STOCK NUMBER *****":GOSUB 8000:GOTO 100
390 GOSUB 6010:FOR R=2 TO NUMREC:GET#1,R
400 V$=VCODE$:IF V$="D" THEN 430
410 NUM=NUM+1:REC(NUM)=R
420 D$=DCODE$:S$=STKNUM$:ITEM$(NUM)=D$+S$
430 NEXT R
440 GOSUB 6020:GOSUB 5050:XX$="***** INVENTORY REPORT---SORTED ON DEPARTMENT CODE *****":GOSUB 8000:GOTO 100
450 GOSUB 6010: FOR R=2 TO NUMREC:GET#1,R
460 V$=VCODE$:IF V$="D" THEN 490
470 NUM=NUM+1:REC(NUM)=R
480 L$=LCODE$:S$=STKNUM$:ITEM$(NUM)=L$+S$
490 NEXT R
500 GOSUB 6020:GOSUB 5050:XX$="***** INVENTORY REPORT----SORTED ON LOCATION CODE *****":GOSUB 8000:GOTO 100
510 SWITCH=2:GOSUB 6010:FOR R=2 TO NUMREC:GET#1,R
520 V$=VCODE$:IF V$="D" THEN 570
530 O$=ORDCOD$:Q=CVS(QUANT$):RP=CVS(RPT$)
540 IF O$="O" OR Q<=RP THEN 550 ELSE 570
550 NUM=NUM+1:REC(NUM)=R
560 ITEM$(NUM)=STKNUM$
570 NEXT R
580 IF NUM <> 0 THEN 600
590 ZZ$="***** NO ENTRIES TO PRINT *****":GOSUB 5200:GOSUB 5000:GOTO 100
600 GOSUB 6020:GOSUB 5050:ZZ$="***** RE-ORDER ON-ORDER REPORT---SORTED ON STOCK NUMBER *****"
610 XX$=ZZ$:GOSUB 8000:GOTO 100
620 SWITCH=3:GOSUB 6010:FOR R=2 TO NUMREC:GET#1,R
630 V$=VCODE$:IF V$="D" THEN 650
640 NUM=NUM+1:REC(NUM)=R:ITEM$(NUM)=STKNUM$
650 NEXT R
660 GOSUB 6020:GOSUB 5050:XX$="***** USAGE REPORT---SORTED ON STOCK NUMBER *****":GOSUB 8000:GOTO 100
670 GOSUB 6010:GET#1,1
680 RCITY=CVS(CITYR$):RCOUNT=CVS(COUNTR$):RSTATE=CVS(STATER$):GOSUB 10000
690 TCITY=CVS(CITYT$):TCOUNT=CVS(COUNTT$):TSTATE=CVS(STATET$)
700 D$=DATE$
710 XX$="***** SALES TAX SUMMARY *****":GOSUB 7010:GOSUB 7020
720 FOR Z=1 TO 10:LPRINT:NEXT
730 LPRINT TAB(40);"CITY TAX RATE";TAB(70);:LPRINT USING "##.##";RCITY
740 LPRINT TAB(40);"COUNTY TAX RATE";TAB(70);:LPRINT USING "##.##";RCOUNT
750 LPRINT TAB(40);"STATE TAX RATE";TAB(70);:LPRINT USING "##.##";RSTATE
751 LPRINT:LPRINT
752 LPRINT TAB(40);"ALTERNATE CITY TAX RATE";TAB(70);:LPRINT USING "##.##";RCITYA
753 LPRINT TAB(40);"ALTERNATE COUNTY TAX RATE";TAB(70);:LPRINT USING "##.##";RCOUNA
754 LPRINT TAB(40);"ALTERNATE STATE TAX RATE";TAB(70);:LPRINT USING "##.##";RSTATA
760 LPRINT:LPRINT:LPRINT
770 LPRINT TAB(40);"ACCUMULATED CITY TAX";TAB(70);:LPRINT USING "$$#####.##";TCITY
780 LPRINT TAB(40);"ACCUMULATED COUNTY TAX";TAB(70);:LPRINT USING "$$#####.##";TCOUNT
790 LPRINT TAB(40);"ACCUMULATED STATE TAX";TAB(70);:LPRINT USING "$$#####.##";TSTATE
800 GOSUB 6040:GOTO 100
1000 ZZ$=DATE$:GOSUB 2000
1010 DAYS=((VAL(YR$)-1982)*365)+((VAL(MO$)-1)*30)+VAL(DA$)
1020 CLS:LOCATE 12,1:INPUT "INPUT NUMBER OF DAYS FROM ORDER DATE EQUALS A BACK ORDER";NUMDAY
1030 SWITCH=2:GOSUB 6010:FOR R=2 TO NUMREC:GET #1,R
1035 V$=VCODE$:IF V$="D" THEN 1100
1040 O$=ORDCOD$:Q=CVS(QUANT$):RP=CVS(RPT$):ZZ$=LDO$:GOSUB 2000
1050 ORDDAT=((VAL(YR$)-1982)*365)+((VAL(MO$)-1)*30)+VAL(DA$)
1060 DIFDAT=DAYS-ORDDAT
1070 IF O$="O" AND DIFDAT => NUMDAY THEN 1080 ELSE 1100
1080 NUM=NUM+1:REC(NUM)=R
1090 ITEM$(NUM)=STKNUM$
1100 NEXT R:ZZZ=FRE(" ")
1110 IF NUM=0 THEN 590
1120 GOSUB 6020:GOSUB 5050
1130 ZZ$="***** BACK ORDER REPORT BASED ON A "+STR$(NUMDAY)+" DAY PERIOD *****"
1140 XX$=ZZ$:GOSUB 8000:GOTO 100
2000 MO$=LEFT$(ZZ$,2):DA$=MID$(ZZ$,4,2):YR$=RIGHT$(ZZ$,4):RETURN
5000 LOCATE 23,1:PRINT "TYPE A KEY ON THE KEYBOARD TO CONTINUE ";
5010 QX$=INKEY$:IF QX$="" THEN 5010 ELSE RETURN
5020 REM
5030 REM SORT DATA
5040 REM
5050 ZZZ=FRE(" ")
5055 M%=NUM:N%=M%
5060 M%=INT(M%/2)
5070 IF M%=0 THEN 5160
5080 K%=N%-M%:J%=1
5090 I%=J%
5100 L%=I%+M%
5110 IF ITEM$(I%)<=ITEM$(L%)THEN 5140
5120 SWAP ITEM$(I%),ITEM$(L%):SWAP REC(I%),REC(L%):I%=I%-M%
5130 IF I%>=1 THEN 5100
5140 J%=J%+1
5150 IF J%<=K% THEN 5090 ELSE 5060
5155 ZZZ=FRE(" ")
5160 RETURN
5200 CLS:LOCATE 12,1:GOSUB 6000:RETURN
6000 COLOR 0,7:NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):PRINT SPACE$(NZ);ZZ$;SPACE$(NZ):COLOR 7,0:RETURN
6010 ZZ$="***** ONE MOMENT PLEASE *****":GOSUB 5200:ZZZ=FRE(" "):RETURN
6020 ZZ$="***** SORTING DATA *****":GOSUB 5200:RETURN
6030 ZZ$="***** REPORT PRINTING *****":GOSUB 5200:LPRINT CHR$(15);:RETURN
6040 LPRINT CHR$(12);:RETURN
6050 WIDTH "LPT1:",132:WIDTH 80:CLS:SCREEN 0,0,0:COLOR 7,0:KEY OFF:RETURN
6060 LENGTH=80:GOSUB 7000:RETURN
6070 LENGTH=132:GOSUB 7000:RETURN
7000 NZ=LEN(ZZ$):NZ=LENGTH-NZ:NZ=INT(NZ/2):ZZ$=SPACE$(NZ)+ZZ$:RETURN
7010 ZZ$="***** BE SURE THAT THE LINE PRINTER IS READY *****":GOSUB 5200:GOSUB 5000:ZZ$="***** ALIGN LINE PRINTER PAPER TO TOP OF FORM *****":GOSUB 5200:GOSUB 5000:RETURN
7020 LPRINT:LPRINT:ZZ$=XX$:LENGTH=132:GOSUB 7000:XX$=ZZ$:GOSUB 6030
7030 LPRINT XX$:D$="REPORT DATE "+D$
7040 ZZ$=D$:GOSUB 7000:LPRINT ZZ$:LPRINT:LPRINT:LPRINT:RETURN
8000 YY$=XX$:GOSUB 7010
8010 FOR I=1 TO NUM
8020 GET#1,REC(I):IF I MOD 45 =1 THEN XX$=YY$:GOSUB 8500
8030 V$=VCODE$:O$=ORDCOD$:STK$=STKNUM$
8040 D$=DESC$:DP$=DCODE$:L$=LCODE$
8050 REORD=CVS(RPT$):Q=CVS(QUANT$):DR$=LDR$
8060 DS$=LDS$:DO$=LDO$:PO$=LPO$
8070 SELL=CVS(SP$):COST=CVS(LRC$):VNDR$=LVO$
8080 TOTCST=CVS(TCOST$):TOTALS=CVS(TOTSLD$):AMOUNT=CVS(AMT$)
8090 IF SWITCH <> 1 THEN 8130
8110 LPRINT TAB(10);STK$;TAB(24);D$;TAB(48);DP$;TAB(57);L$;TAB(67);:LPRINT USING "####";REORD;:LPRINT TAB(79);:LPRINT USING "####";Q;:LPRINT TAB(90);:LPRINT USING "$$####.##";SELL;:LPRINT TAB(102);:LPRINT USING "$$####.##";COST;:LPRINT TAB(120);V$
8120 GOTO 8190
8130 IF SWITCH <> 2 THEN 8170
8140 D$=LEFT$(D$,10)
8150 LPRINT TAB(2);STK$;TAB(17);D$;TAB(31);:LPRINT USING "####";REORD;:LPRINT TAB(42);:LPRINT USING "####";Q;:LPRINT TAB(53);DO$;TAB(68);O$;TAB(76);PO$;TAB(89);VNDR$;TAB(117);:LPRINT USING "####";AMOUNT
8160 GOTO 8190
8170 D$=LEFT$(D$,11)
8180 LPRINT TAB(2);STK$;TAB(15);D$;TAB(31);DR$;TAB(48);DS$;TAB(63);:LPRINT USING "$$####.##";SELL;:LPRINT TAB(79);:LPRINT USING "$$#####.##";TOTCST;:LPRINT TAB(98);:LPRINT USING "$$#####.##";TOTALS;:LPRINT TAB(121);:LPRINT USING "####";Q
8190 NEXT I
8200 GOSUB 6040:LPRINT CHR$(18);:RETURN
8500 D$=DATE$
8510 IF I <> 1 THEN GOSUB 6040
8515 GOSUB 7020
8520 IF SWITCH <> 1 THEN 8550
8530 LPRINT TAB(9);"STOCKNUMBER";TAB(28);"DESCRIPTION";TAB(48);"DCODE";TAB(57);"LCODE";TAB(66);"REORD PT";TAB(78);"QUANTITY";TAB(90);"SELLPRICE";TAB(103);"LAST COST";TAB(116);"TAX/NOTAX"
8540 GOTO 8590
8550 IF SWITCH <> 2 THEN 8580
8560 LPRINT "STOCKNUMBER";TAB(16);"DESCRIPTION";TAB(30);"REORDPT";TAB(40);"QUANTITY";TAB(52);"LAST DTE ORD";TAB(66);"ON ORD";TAB(75);"LAST PO NUMR";TAB(91);"LAST VENDOR USED";TAB(112);"AMOUNT NOT RECVD"
8570 GOTO 8590
8580 LPRINT "STOCKNUMBER";TAB(15);"DESCRIPTION";TAB(29);"LAST RECVD DATE";TAB(46);"LAST SOLD DATE";TAB(63);"SELL PRICE";TAB(76);"TOT COST TO DTE";TAB(94);"TOT SOLD IN DOLLARS";TAB(116);"QUANTITY ON HAND"
8590 LPRINT:RETURN
8600 END
9000 IF ERR=24 THEN RESUME
9010 IF ERR=27 THEN ZZ$="***** T U R N O N L I N E P R I N T E R *****":GOSUB 5200:RESUME
9020 AB$=STR$(ERR):ZZ$="***** E R R O R "+AB$+" *****":GOSUB 5200:GOSUB 5000:RESUME 296
10000 RCITYA=INT(RCITY)/100:RCOUNA=INT(RCOUNT)/100:RSTATA=INT(RSTATE)/100
10010 RCITY=(RCITY-INT(RCITY))*100:RSTATE=(RSTATE-INT(RSTATE))*100:RCOUNT=(RCOUNT-INT(RCOUNT))*100
10020 RETURN
OPERATIONAL GUIDELINES FOR THE INVENTORY CONTROL PROGRAM
GENERATING INVENTORY CONTROL DISKETTE
1. Copy the basic DOS with BASIC to your designated inventory
control diskette (refer to the DOS manual).
2. Then, copy over the files that are on the supplied inventory
control diskette. Your new inventory control diskette will automatically
load the inventory control system.
3. This program runs most efficiently under DOS 1.1. However,
it will run under DOS 1.0.
OPERATION OF THE INVENTORY CONTROL SYSTEM
1. Be sure that the inventory control diskette is in DRIVE A.
2. If possible, use a new formatted diskette in DRIVE B to hold
the master inventory file that the program generates. This will
give you the maximum number of line items. If you have only one
disk drive, you can still run the inventory control system but
the number of line items will be greatly reduced.
3. When the system BOOTS, the AUTOEXEC.BAT file will request
the date and time because these variables are necessary for the
operation of the inventory control program.
4. When requested, input the inventory control file name (your
choice). If the master inventory file resides/is to reside on
DRIVE B, type B: before the inventory file name.
5. This will bring you to the MENU in the MAIN MODULE.
MAIN MODULE
1. PROCESSING OVERLAY Transfers control to the proce
ssing module
2. REPORTING OVERLAY Transfers control to the repor
ting module
3. INVENTORY FILE BACK UP This sub-module will automati
cally copy the master invento
ry file to the new back up
file. Upon completion of copy,
the back up will be compared
to the original for verifica
tion.
4. CHANGE TO ANOTHER
INVENTORY FILE You will be taken back to ini
tial starting point of the MAIN
MODULE.
5. CASH REGISTER OVERLAY Transfers control to the CASH
REGISTER MODULE
6. PICK LIST FILE GENERATION
OVERLAY Transfers control to the PICK
LIST GENERATION MODULE
7. PICK LIST TRANSACTION
OVERLAY Transfers control to the PICK
LIST TRANSACTION MODULE
8. TERMINATE You will be returned to PC DOS.
PROCESSING MODULE
1. LIST STOCK NUMBER AND DESCRIPTION - On the screen will be
displayed:the stock number, the description, the record number,
if the item is on order (presented by an asterisk), if the item
is to be re-ordered, and the record number within the random
access file.
2. ADD ADDITIONAL STOCK NUMBERS - You will be queried by the
following questions: stock number, description, department code,
location code,re-order point, quantity on hand, selling price,
cost of item, and if the item is taxable.
3. STOCK FILE EDITING - This sub-module gives you the option of
deleting a particular stock item or modifying the following
parameters: stock number, description, department code, location
code, re-order point, price, tax code, and last vendor ordered
from.
4. UPDATE STOCK FILE - After requested stock number is found, a
file listing of all inventory parameters will be presented on the
screen. These parameters are: if the item is taxable or not, if
the item is on order or not, the stock number, the description,
the department code, the location code, the re-order point, the
quantity on hand, the last date received, the last date sold, the
last date ordered, the last purchase order number, the selling
price, the received cost, the last vendor ordered from, the total
cost of item to date, the total sold in dollars to date. A menu
of four items will then be presented:
A. ORDER MORE STOCK - Input the amount ordered and the P.O.
number.
B. RECEIVE STOCK - Input the amount received and the unit
cost. If you receive more than what was ordered, or if
your cost is greater than the selling price, you will be
given the option of aborting this catagory or continuing
on.
C. SELL STOCK - Input the quantity sold. If you sold more
than you have in stock, you will be warned. If the item
is taxable, you will be asked if you wish to include the
sales tax entries which will update the sales tax re
cord. If your quantity on hand drops equal to or below
your re-order point, you will be warned.
D. RETURN STOCK - Input the quantity returned. The stock
will be added back to the quantity on hand. If sales tax
were paid, the tax will be subtracted from the sales tax
record. Accumulated total sold in dollars to date will
be adjusted.
E. TERMINATE UPDATE - You will be returned to the MAIN
PROCESSOR MENU.
5. SALES TAX EDITING - A menu of four items will be presented:
A. LIST SALES TAX RECORD - City, county, and state tax in
percent (primary and alternate) and accumulated city,
county, and state tax.
B. ZERO-OUT ACCUMULATED SALES TAX ENTRIES
C GENERATE TAX RATE TABLE - For primary and alternate tax
rates.
D. TERMINATE SALES TAX EDITOR - You will be returned to the
MAIN PROCESSOR MENU
6. TERMINATE THE PROCESSOR MODULE - You will be returned to the
MAIN MENU.
AUTOMATIC FEATURES BUILT INTO THE PROCESSOR MODULE:
A. To abort any function, when the stock number is reques
ted, depress ENTER. When in the editing sub-module,
depress ENTER when the stock number is requested or when
a parameter is requested for editing.
B. If you input a file name that does not exist, the
processor module will assume that this is a new file
generation and will automatically enter the SALES TAX
sub-module and will request the sales tax parameters.
Upon completion of the SALES TAX sub-module, it will
automatically enter the ADD ADDITIONAL STOCK sub-module.
It will then display the MAIN PROCESSOR MENU.
C. When a stock number is deleted from the stock file, a
hole exists in the file. The program will take the next
ADD ADDITIONAL STOCK entry and fill the hole. This
prevents wasting space on the diskette.
D. If you enter a duplicate stock number in the ADD ADDITIO
NAL STOCK sub-module, you will receive an ERROR MESSAGE
and you will be returne to the MAIN PROCESSOR MENU.
DESCRIPTION OF RANDOM ACCESS VARIABLE PARAMETERS:
A. City, county, and state tax rate - any numeric string
B. Stock number - ten characters
C. Description - twenty characters
D. Department code - four characters
E. Location code - four characters
F. Re-order point - any numeric string
G. Quantity on hand - any numeric string
H. Last P.O. number - ten characters
I. Selling price - any numeric string
J. Last received cost - any numeric string
K. Last vendor ordered from - twenty characters
NOTE: The number of characters mentioned above are the maximum
but may be less. All other variables are supplied by the program.
REPORTING MODULE
1. UNSORTED INVENTORY REPORT
2. SORTED ON STOCK NUMBER INVENTORY REPORT
3. SORTED ON DEPARTMENT CODE/STOCK NUMBER INVENTORY REPORT
4. SORTED ON LOCATION CODE/STOCK NUMBER INVENTORY REPORT
5. RE-ORDER/ON ORDER REPORT (SORTED ON STOCK NUMBER)
6. USAGE REPORT (SORTED ON STOCK NUMBER)
7. SALES TAX SUMMARY REPORT
8. BACK ORDER REPORT
9. TERMINATE THE REPORT OVERLAY - return to the menu in the MAIN
MODULE
Reports one thru four have the same format; howvever, the stock
numbers are sorted differently. These reports contain the follo
wing
parameters: stock number, description, department code,
location code, re-order point, quantity on hand, selling price,
last cost, and taxable/non-taxable.
Report five will give a listing of stock items to be re-orderd or
are on order. The items will be presented in the following for
mat:
stock number, description, re-order point, quantity on hand,
last date ordered, if on order, last P.O. number, last vendor
used, and amount not received.
Report six will give a listing of all stock items present in the
following format: stock number, description, last received date,
last sold date, selling price, total cost to date, total sold in
dollars to date, and quantity on hand.
Report seven will give a listing of city, county, and state tax
rates (primary and alternate) in percent and the accumulated
city, county, and state taxes.
Report eight has the exact same format as report five except the
user must specify the number of days that constitutes if an item
is on back order. Only items that have been ordered and not
recieved and the period is equal to or longer than the specified
number of days will be printed.
NOTE:If the reporting module can not find the master file, it
will return control back to the MAIN MODULE.
CASH REGISTER MODULE
1. DAILY INITIALIZATION - Deletes the prior TRANSACTION FILE and
initializes daily sum totals in the MASTER FILE. It also generates
a new DAILY TRANSACTION FILE with the same name as the
Master File except for the last three letters. They will always
be DLY. It also accepts the store parameters to be typed on the
invoices. You need only type the parameters one time. They will
be stored in the master inventory file for future use.
2. SELL STOCK - This sub-module emulates the N.C.R. automatic
cash register technique. Input answers to questions as they are
presented on the screen. This sub-module verifies the authentici
ty
of the the stock number and that there is sufficient quantity
to support the amount sold. This sub-module prints out an invoice
per customer and updates the transaction register and the master
inventory file. Important features are:
A. Automatic invoice generation
B. Immediate update to master inventory file
C. Automatic sales tax calculation on taxable items if
requested. You may choose either the primary or alternate
tax table.
D. Entry available for freight cost
E. Automatic discounting
F. Generation of invoice number which includes the present
date
3. RETURN STOCK - This sub-module is identical to the SELL STOCK
sub-module but in reverse.
4. PRINT OUT TRANSACTION REGISTER - Prints out the daily transa
ctions
and totals.
5. TERMINATE OVERLAY - Returns you back to the main module
PICK LIST GENERATION MODULE
This module would be used primarily by the wholesale distributor.
It generates a pick list file which contains the desired stock
and quantity which the user desires. The overlay will generate a
report for the ware-houseman or clerk to be used to fill an
order. In this report the desired quantity, stocknumber,
description, department code, and location code are printed for
each item. A space is provided after each line item for the
actual quantity or weight that will be shipped. This amount may
be different from the desired amount. This is hand entered by the
individual who is filling the order.
This report is headed by the customer's name, the file name, and
the date and time that the report is generated. At the end, a
line is provided for the name of the person who filled the order.
The pick list file may be any name that the operator desires;
however, if the file is to reside on drive A, A: must be typed
prior to entering the file name. Likewise, if the file is to
reside on drive B, B: must be typed prior to entering the file
name. This file will automatically be deleted by the PICK LIST
TRANSACTION OVERLAY after the information has been utilized. This
module will verify the stock number and if there is sufficient
stock on hand. WARNING: NO INVENTORY ADJUSTMENT IS PERFORMED BY
THIS MODULE!
PICK LIST TRANSACTION MODULE
This module has all the features of the CASH REGISTER MODULE
except that the customer's name, stock number, and desired
quantity are read from the pick list file that the PICK LIST
GENERATION MODULE originated. The operator will use the pick list
report that contains the hand written amount to be sold for each
line item. The operator will use this amount for the invoice
generation. Since the pick list report contains the name of the
pick list file, the operator simply types the name from the
report when requested by the module. Remember to use A: or B:
when necessary. When all the information is utilized from the
pick list file, this module will delete the file from the disk so
that unclaimed disk space may be recovered.
1 ON ERROR GOTO 9000
10 REM
20 REM PICKER
30 REM
40 DIM ITEM$(1000),REC(1000):COMMON F$
50 GOSUB 6050
60 OPEN "R",1,F$:FIELD#1,4 AS NREC$,4 AS CITYR$,4 AS COUNTR$,4 AS STATER$,4 AS CITYT$,4 AS COUNTT$,4 AS STATET$,100 AS LFT$
70 FIELD#1,1 AS VCODE$,1 AS ORDCOD$,10 AS STKNUM$,20 AS DESC$,4 AS DCODE$,4 AS LCODE$,4 AS RPT$,4 AS QUANT$,10 AS LDR$,10 AS LDS$,10 AS LDO$,10 AS LPO$,4 AS SP$,4 AS LRC$,20 AS LVO$,4 AS TCOST$,4 AS TOTSLD$,4 AS AMT$
80 NUMREC=LOF(1)/128
90 IF NUMREC<2 THEN 10000
100 ZZ$="PICK GENERATION":GOSUB 6000
110 LOCATE 10,1:PRINT "WHEN SPECIFYING A FILE BE SURE TO INCLUDE EITHER A: OR B:"
120 LOCATE 14,1:INPUT "INPUT FILE NAME FOR PICKER LIST ";PK$
130 OPEN PK$ FOR APPEND AS #2
140 NR=LOF(2)/128
150 IF NR > 0 THEN CLS:ZZ$="***** DUPLICATE FILE NAME *****":LOCATE 12,1:GOSUB 6000:GOSUB 10100:CLOSE 1,#2:GOTO 10010
160 GOSUB 6010:NUM=0
170 FOR R=2 TO NUMREC:GET#1,R
180 V$=VCODE$:IF V$="D" THEN 200
190 NUM=NUM+1:REC(NUM)=R:ITEM$(NUM)=STKNUM$
200 NEXT R
210 CLS:LOCATE 12,1:INPUT "INPUT CUSTOMERS NAME ";YY$:WRITE#2,YY$:K=0
220 CLS:ZZ$="TO TERMINATE THE INPUT JUST DEPRESS THE RETURN WHEN STOCK NUMBER IS REQUESTED":GOSUB 6000:GOSUB 7010:LOCATE 12,1:PRINT SPACE$(80);:LOCATE 22,1:PRINT SPACE$(80);
224 CLS:ZZ$="TO TERMINATE THE INPUT JUST DEPRESS THE RETURN WHEN STOCK NUMBER IS REQUESTED":GOSUB 6000
225 LPRINT:LPRINT:ZZ$="PICK SHEET":GOSUB 6060:LPRINT ZZ$:PS$=ZZ$
226 ZZ$="CUSTOMER'S NAME "+YY$:GOSUB 6060:LPRINT ZZ$:CN$=ZZ$:ZZ$="PICK FILE "+PK$:GOSUB 6060:LPRINT ZZ$:PF$=ZZ$
227 X$=TIME$:Y$=DATE$:ZZ$=Y$+" "+X$:GOSUB 6060:LPRINT ZZ$:DT$=ZZ$:LPRINT:LPRINT
229 LPRINT "QUANT";TAB(10);"STK NUM";TAB(25);"DESCRIPTION";TAB(50);"DEPT";TAB(60);"LOC";TAB(70);"ACT QUANT":LPRINT
230 LOCATE 10,1:PRINT SPACE$(80)
240 LOCATE 14,1:PRINT SPACE$(80)
250 LOCATE 10,1:PRINT "INPUT STOCK NUMBER OF ITEM REQUIRED";:LOCATE 10,50:INPUT STK$:IF STK$="" THEN 360 ELSE IF LEN(STK$)<10 THEN STK$=STK$+SPACE$(10-LEN(STK$))
260 FOR I=1 TO NUM
270 IF ITEM$(I)=STK$ THEN 300
280 NEXT I
290 ZZ$="***** INVALID STOCK NUMBER *****":LOCATE 10,1:GOSUB 6000:GOSUB 10100:LOCATE 22,1:PRINT SPACE$(80);:GOTO 230
300 GET#1,REC(I):D$=DESC$:DC$=DCODE$:L$=LCODE$:Q=CVS(QUANT$)
310 LOCATE 14,1:PRINT "INPUT QUANTITY REQUIRED";:LOCATE 14,50:INPUT QQ
320 IF QQ<1 OR QQ>Q THEN ZZ$="***** INVALID QUANTITY *****":LOCATE 14,1:GOSUB 6000:GOSUB 10100:LOCATE 22,1:PRINT SPACE$(80);:LOCATE 14,1:PRINT SPACE$(80);:GOTO 310
330 WRITE#2,STK$:WRITE#2,QQ
340 LPRINT QQ;TAB(10);STK$;TAB(25);D$;TAB(50);DC$;TAB(60);L$;TAB(70);STRING$(9,95):LPRINT:K=K+1
345 BB=K MOD 20:IF BB=0 THEN LPRINT CHR$(12);:LPRINT:LPRINT:LPRINT PS$:LPRINT CN$:LPRINT PF$:LPRINT DT$:LPRINT:LPRINT:GOSUB 9229
350 GOTO 230
360 WRITE#2,"ZYXZYXZYXZ":CLOSE 2:LPRINT:LPRINT:LPRINT TAB(10);"FILLED BY ________________________________";CHR$(12);:CLOSE 1:GOTO 10010
5200 CLS:LOCATE 12,1:GOSUB 6000:RETURN
6000 COLOR 0,7:NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):PRINT SPACE$(NZ);ZZ$;SPACE$(NZ):COLOR 7,0:RETURN
6010 ZZ$="***** ONE MOMENT PLEASE *****":GOSUB 5200:RETURN
6020 ZZ$="***** SORTING DATA *****":GOSUB 5200:RETURN
6030 ZZ$="***** PICK REPORT PRINTING *****":GOSUB 5200:LPRINT CHR$(18);:RETURN
6040 LPRINT CHR$(12);:RETURN
6050 WIDTH "LPT1:",80:WIDTH 80:CLS:SCREEN 0,0,0:COLOR 7,0:KEY OFF:RETURN
6060 LENGTH=80:GOSUB 7000:RETURN
6070 LENGTH=132:GOSUB 7000:RETURN
7000 NZ=LEN(ZZ$):NZ=LENGTH-NZ:NZ=INT(NZ/2):ZZ$=SPACE$(NZ)+ZZ$:RETURN
7010 ZZ$="***** BE SURE THAT THE LINE PRINTER IS READY *****":GOSUB 5200:GOSUB 10100:ZZ$="***** ALIGN LINE PRINTER PAPER TO TOP OF FORM *****":GOSUB 5200:GOSUB 10100:RETURN
7020 LPRINT:LPRINT:ZZ$=XX$:LENGTH=132:GOSUB 7000:XX$=ZZ$:GOSUB 6030
7030 LPRINT XX$:D$="REPORT DATE "+D$
7040 ZZ$=D$:GOSUB 7000:LPRINT ZZ$:LPRINT:LPRINT:LPRINT:RETURN
9000 IF ERR=24 THEN RESUME
9010 IF ERR=27 THEN ZZ$="***** T U R N O N L I N E P R I N T E R *****":GOSUB 5200:RESUME
9020 AB$=STR$(ERR):ZZ$="***** E R R O R "+AB$+" *****":GOSUB 5200:GOSUB 10100:RESUME 10010
9229 LPRINT "QUANT";TAB(10);"STK NUM";TAB(25);"DESCRIPTION";TAB(50);"DEPT";TAB(60);"LOC";TAB(70);"ACT QUANT":LPRINT:RETURN
10000 KILL F$:ZZ$="***** MASTER INVENTORY FILE NOT FOUND *****":GOSUB 6000:GOSUB 10010
10010 CHAIN "START",120
10100 LOCATE 22,1:PRINT "TYPE A CHARACTER TO CONTINUE";
10110 QX$=INKEY$:IF QX$="" THEN 10110 ELSE RETURN
1 ON ERROR GOTO 9000
10 REM
20 REM PICKTRAN
30 REM
40 DIM ITEM$(1000),REC(1000),CITM(50),QNT(50):COMMON F$:X=0
50 FF$=F$:I=LEN(FF$):G$=LEFT$(FF$,2)
60 IF G$="B:" OR G$="A:" THEN X=2
70 IF I-X>3 THEN 100
80 GG$="DLY":IF X=2 THEN GG$=G$+GG$
90 GOTO 110
100 GG$=LEFT$(FF$,I-3)+"DLY"
110 WIDTH "LPT1:",80:WIDTH 80:SCREEN 0,0,0:COLOR 7,0:KEY OFF:GOSUB 6010
120 OPEN "R",1,F$:FIELD#1,4 AS NREC$,4 AS CITYR$,4 AS COUNTR$,4 AS STATER$,4 AS CITYT$,4 AS COUNTT$,4 AS STATET$,18 AS COMPNM$,19 AS ADDR$,18 AS TOWN$,2 AS STT$,5 AS ZIP$,10 AS TELE$,4 AS VISA$,4 AS MC$,4 AS AE$,4 AS DIN$,4 AS STORE$,4 AS GC$,4 AS OTHER$
130 FIELD#1, 1 AS VCODE$,1 AS ORDCOD$,10 AS STKNUM$,20 AS DESC$,4 AS DCODE$,4 AS LCODE$,4 AS RPT$,4 AS QUANT$,10 AS LDR$,10 AS LDS$,10 AS LDO$,10 AS LPO$,4 AS SP$,4 AS LRC$,20 AS LVO$,4 AS TCOST$,4 AS TOTSLD$,4 AS AMT$
140 NUMREC=LOF(1)/128:IF NUMREC <> 0 THEN 160
150 CLOSE 1:KILL F$:CLS:ZZ$="***** NO MASTER INVENTORY FILE *****":GOSUB 6020:GOSUB 6060:CHAIN "START",120
160 NUM=0:FOR I=2 TO NUMREC:GET#1,I:V$=VCODE$:IF V$="D" THEN 170
165 NUM=NUM+1:ITEM$(NUM)=STKNUM$:REC(NUM)=I
170 NEXT I:OPEN GG$ AS 2 LEN=16:FIELD#2,10 AS STKNN$,2 AS QNTSLD$,2 AS INITS$,2 AS INNUM$:FIELD#2,10 AS DTE$,2 AS NUMTRN$,4 AS TRN$:FIELD#2,4 AS DLYSIS$,4 AS TAXES$,4 AS TOTDSC$,4 AS FRATE$
180 CLS:PRINT "THE FOLLOWING OPTIONS ARE AVAILABLE:":PRINT:PRINT
190 PRINT TAB(5);"1....DAILY INITIALIZATION"
200 PRINT TAB(5);"2....SELL STOCK"
205 PRINT TAB(5);"3....RETURN STOCK"
210 PRINT TAB(5);"4....PRINT OUT TRANSACTION REGISTER"
220 PRINT TAB(5);"5....TERMINATE THE PICK TRANSACTION OVERLAY":PRINT:PRINT
230 INPUT "INPUT YOUR OPTION ";OPT
240 IF OPT < 1 OR OPT > 5 THEN 180
250 IF OPT=1 THEN 290
260 IF OPT=2 THEN 470
265 IF OPT=3 THEN 9050
270 IF OPT=4 THEN 1330
280 CLOSE 1,#2:GOSUB 6010:CHAIN "START",120
290 ZZ$="***** INITIALIZING TRANSACTION REGISTER *****"
300 CLS:LOCATE 12,1:INPUT "ARE YOU SURE? (Y/N) ";A$:IF A$ <> "Y" THEN 180 ELSE GOSUB 6020
310 CLOSE 2:KILL GG$:OPEN GG$ AS 2 LEN=16:YY$=DATE$:QQ=10:GOSUB 6080:LSET DTE$=YY$:LSET NUMTRN$=MKI$(0):LSET TRN$=MKS$(2):PUT#2,1
320 GET#1,1:LSET VISA$=MKS$(0):LSET MC$=MKS$(0):LSET AE$=MKS$(0):LSET DIN$=MKS$(0):LSET STORE$=MKS$(0):LSET GC$=MKS$(0):LSET OTHER$=MKS$(0):PUT#1,1
325 LSET DLYSIS$=MKS$(0):LSET TAXES$=MKS$(0):LSET TOTDSC$=MKS$(0):LSET FRATE$=MKS$(0):PUT#2,2
330 CLS:LOCATE 12,1:INPUT "DO YOU WISH TO ENTER THE STORE PARAMETERS? (Y/N) ";A$:IF A$ <> "Y" THEN 180
340 CLS:ZZ$="***** STORE PARAMETERS *****":GOSUB 6000:LOCATE 5,1
350 PRINT "COMPANY NAME";:LOCATE 5,50:LINE INPUT YY$:QQ=18:GOSUB 6080:LSET COMPNM$=YY$
360 LOCATE 7,1:PRINT "ADDRESS";:LOCATE 7,50:LINE INPUT YY$:QQ=19:GOSUB 6080:LSET ADDR$=YY$
370 LOCATE 9,1:PRINT "CITY";:LOCATE 9,50:LINE INPUT YY$:QQ=18:GOSUB 6080:LSET TOWN$=YY$
380 LOCATE 11,1:PRINT "STATE (TWO CHARACTER ABBREV.)";:LOCATE 11,50:LINE INPUT YY$:QQ=2:GOSUB 6080:LSET STT$=YY$
390 LOCATE 13,1:PRINT "ZIP CODE";:LOCATE 13,50:LINE INPUT YY$:QQ=5:GOSUB 6080:LSET ZIP$=YY$
400 LOCATE 15,1:PRINT "TELEPHONE AREA CODE";:LOCATE 15,50:LINE INPUT A$:A$=LEFT$(A$,3)
410 LOCATE 17,1:PRINT "TELEPHONE THREE DIGIT PREFIX";:LOCATE 17,50:LINE INPUT B$:B$=LEFT$(B$,3)
420 LOCATE 19,1:PRINT "TELEPHONE FOUR DIGIT SUFFIX";:LOCATE 19,50:LINE INPUT C$:C$=LEFT$(C$,4)
430 YY$=A$+B$+C$:QQ=10:GOSUB 6080:LSET TELE$=YY$
440 LOCATE 21,25:PRINT "TELEPHONE NUMBER=";LEFT$(YY$,3);"-";MID$(YY$,4,3);"-";RIGHT$(YY$,4)
450 LOCATE 23,1:INPUT "ARE THE STORE PARAMETERS CORRECT (Y/N) ";A$:IF A$="Y" THEN 460 ELSE GOTO 340
460 PUT#1,1:GOTO 180
470 ZZ$="***** SELL STOCK *****":CLS:GOSUB 6000
471 LOCATE 10,1:PRINT "REMEMBER TO INCLUDE A: OR B: WHEN SPECIFYING THE FILE"
472 LOCATE 14,1:PRINT "INPUT THE PICK LIST FILE ";:INPUT PCKLST$
473 OPEN PCKLST$ FOR INPUT AS #3:LOCATE 10,1:PRINT SPACE$(80);:LOCATE 14,1:PRINT SPACE$(80);
480 X=0:FLAG=0
490 LOCATE 5,1:PRINT "CUSTOMERS NAME":LOCATE 5,50:INPUT#3,NME$:PRINT NME$:GOTO 500
491 LOCATE 5,1:PRINT "CUSTOMERS NAME":LOCATE 5,50:LINE INPUT NME$
500 LOCATE 6,1:PRINT"METHOD OF PAYMENT"
510 LOCATE 8,1:PRINT "CASH(CA), CHECK(CK), CREDIT CARD(CC)":LOCATE 8,50:LINE INPUT TY$
520 IF TY$="CA" THEN 620
530 IF TY$="CK" THEN 610
540 IF TY$="CC" THEN 560
550 LOCATE 8,50:PRINT SPACE$(30);:GOTO 510
560 LOCATE 10,1
570 PRINT "INPUT CREDIT CARD TYPE: VISA(V), MASTER CARD(M), AMERICAN EXPRESS(A)"
580 PRINT "DINERS(D), STORE CHARGE(S), GAS CARD(G)"
590 PRINT "OTHER(O)":LOCATE 12,50:LINE INPUT CRD$
600 LOCATE 13,1:PRINT "INPUT CHARGE ACCOUNT NUMBER":LOCATE 13,50:LINE INPUT CNUM$
605 LOCATE 13,1:PRINT SPACE$(80);:LOCATE 13,1:PRINT "INPUT EXPIRATION DATE";:LOCATE 13,50:LINE INPUT PERD$:GOTO 620
610 LOCATE 10,1:PRINT "INPUT CHECK NUMBER";:LOCATE 10,50:LINE INPUT CNUM$
620 LOCATE 14,1:PRINT "INPUT CUSTOMERS DISCOUNT IN PERCENT";:LOCATE 14,50:INPUT DCOUNT:DCOUNT=DCOUNT/100
630 IF FLAG=1 THEN LOCATE 18,1:PRINT "INPUT STOCK NUMBER OF ITEM";:LOCATE 18,50:INPUT YY$:IF YY$=""THEN 720
631 IF FLAG=0 THEN LOCATE 18,1:PRINT "STOCK NUMBER OF ITEM";:LOCATE 18,50:INPUT#3,YY$:IF YY$="ZYXZYXZYXZ" THEN 10100 ELSE PRINT YY$
640 X=X+1:QQ=10:GOSUB 6080
650 FOR I= 1 TO NUM:IF ITEM$(I)=YY$ THEN 680
660 NEXT I
670 ZZ$="***** INVALID STOCK NUMBER OPERATION TERMINATED *****":GOSUB 6020:GOSUB 6060:GOTO 180
680 CITM(X)=I
690 IF FLAG=1 THEN LOCATE 20,1:PRINT "QUANTITY PURCHASED";:LOCATE 20,50:INPUT QNT(X):CITYR=0:COUNTR=0:STATER=0:GOSUB 7000:IF MV <> 0 THEN 6251
691 IF FLAG=0 THEN INPUT #3,Q:LOCATE 20,1:PRINT "QUANTITY REQUESTED=";Q:LOCATE 20,50:INPUT" QUANTITY PURCHASED";QNT(X):CITYR=0:COUNTR=0:STATER=0:GOSUB 7000:IF MV <> 0 THEN 6251
695 IF FLAG=1 THEN QNT(X)=-QNT(X)
700 IF X=50 THEN 720
710 LOCATE 18,50:PRINT SPACE$(30);:LOCATE 20,50:PRINT SPACE$(30);:GOTO 630
720 IF X=0 THEN 180 ELSE GOTO 6180
730 LOCATE 22,1:PRINT SPACE$(80);:LOCATE 22,1:PRINT "INCLUDE SALES TAX (Y/N) ";
740 LOCATE 22,50:INPUT A$:CT=0:CCT=0:ST=0:GET#2,1:YY$=DATE$:QQ=10:GOSUB 6080:D$=DTE$:SUM=0:SUMX=0:IPX=0:IF D$=YY$ THEN 745 ELSE GOTO 6170
745 IF A$="Y" THEN LOCATE 22,1:PRINT SPACE$(80);:LOCATE 22,1:PRINT "PRIMARY OR ALTERNATE TAX RATE (P/A) ";:LOCATE 22,50:INPUT TB$
750 GOSUB 6090:GOSUB 6050:GOSUB 6110
760 FOR I=1 TO X:N=CITM(I):GET#1,REC(N)
765 IF I MOD 14=1 AND I <> 1 THEN LPRINT CHR$(12);:LPRINT:GOSUB 6120
770 Q=CVS(QUANT$):T=CVS(TOTSLD$):SP=CVS(SP$):SPX=SP:SP=SP-SP*DCOUNT:RP=CVS(RPT$):Q=Q-QNT(I):T=T+SP*QNT(I)
775 IF Q<0 THEN 6251
780 LSET QUANT$=MKS$(Q):LSET TOTSLD$=MKS$(T)
790 IF FLAG=0 THEN QQ=10:YY$=DATE$:GOSUB 6080:LSET LDS$=YY$
795 PUT#1,REC(N):V$=VCODE$:DCS$=DESC$:DSC$=DESC$
800 IF V$="N" OR A$ <> "Y" THEN 940
810 GET#1,1
820 CITYR=CVS(CITYR$):COUNTR=CVS(COUNTR$)
830 STATER=CVS(STATER$):CITYT=CVS(CITYT$)
840 COUNTT=CVS(COUNTT$):STATET=CVS(STATET$)
845 GOSUB 10000
850 CITYT=CITYT+SP*CITYR*QNT(I)
860 COUNTT=COUNTT+SP*COUNTR*QNT(I)
870 STATET=STATET+SP*STATER*QNT(I)
880 LSET STATET$=MKS$(STATET)
890 LSET COUNTT$=MKS$(COUNTT)
900 LSET CITYT$=MKS$(CITYT):PUT#1,1
910 CT=CT+SP*CITYR*QNT(I)
920 CCT=CCT+SP*COUNTR*QNT(I)
930 ST=ST+SP*STATER*QNT(I)
940 SUM=SUM+SP*QNT(I):N=CITM(I):SUMX=SUMX+SPX*QNT(I)
950 LPRINT ITEM$(N);TAB(15);DCS$;TAB(38);:LPRINT USING "####";QNT(I);:LPRINT TAB(48);:LPRINT USING "$$####.##";SP;:LPRINT TAB(63);:LPRINT USING "$$####.##";SP*QNT(I)
960 GET#2,1:TRN=CVS(TRN$):TRN=TRN+1:LSET TRN$=MKS$(TRN):PUT#2,1
970 LSET STKNN$=ITEM$(N):LSET QNTSLD$=MKI$(QNT(I)):LSET INITS$=IN$:LSET INNUM$=MKI$(NX)
980 PUT#2,TRN
990 NEXT I
995 DIFSUM=SUMX-SUM:SUM1=INT(DIFSUM*100):SUM2=DIFSUM*100:IF SUM2<>SUM1 THEN SUM1=SUM1+1
996 DIFSUM=SUM1/100
1000 LPRINT:SUM1=INT(SUM*100):SUM2=SUM*100
1010 IF SUM2 <> SUM1 THEN SUM1=SUM1+1
1020 SUM=SUM1/100
1030 LPRINT TAB(45);"UNTAXED PURCHASE";TAB(62);:LPRINT USING "$$#####.##";SUM
1040 CT1=INT(CT*100):CT2=CT*100
1050 CCT1=INT(CCT*100):CCT2=CCT*100
1060 ST1=INT(ST*100):ST2=ST*100
1070 IF ST2-ST1 >=0.5 THEN ST1=ST1+1
1080 IF CCT2-CCT1 >=0.5 THEN CCT1=CCT1+1
1090 IF CT2-CT1 >=0.5 THEN CT1=CT1+1
1100 CT=CT1/100:CCT=CCT1/100:ST=ST1/100
1110 LPRINT TAB(45);"CITY TAX";TAB(63);:LPRINT USING "$$####.##";CT
1120 LPRINT TAB(45);"COUNTY TAX";TAB(63);:LPRINT USING "$$####.##";CCT
1130 LPRINT TAB(45);"STATE TAX";TAB(63);:LPRINT USING "$$####.##";ST
1133 IF FLAG=1 THEN FRATE=-FRATE
1135 LPRINT TAB(45);"FREIGHT CHARGE";TAB(63);:LPRINT USING "$$####.##";FRATE
1140 TOTAL=SUM+CT+CCT+ST+FRATE
1145 GET#2,2:LSET DLYSIS$=MKS$(CVS(DLYSIS$)+SUM):LSET TAXES$=MKS$(CVS(TAXES$)+CT+CCT+ST):LSET TOTDSC$=MKS$(CVS(TOTDSC$)+DIFSUM):LSET FRATE$=MKS$(CVS(FRATE$)+FRATE):PUT#2,2
1150 LPRINT TAB(45);"TOTAL PURCHASE";TAB(62);:LPRINT USING "$$#####.##";TOTAL
1160 LPRINT:LPRINT "TYPE OF PURCHASE ";
1170 IF TY$="CA" THEN LPRINT "CASH"
1180 IF TY$="CK" THEN LPRINT "CHECK *** CHECK NUMBER ";CNUM$;" ***"
1190 IF TY$ <> "CC" AND FLAG=0 THEN 1280
1195 IF TY$ <> "CC" THEN 1275
1200 GET#1,1:IF CRD$="V" THEN LPRINT "VISA *** ACCOUNT NUMBER ";:LSET VISA$=MKS$(CVS(VISA$)+TOTAL)
1210 IF CRD$="M" THEN LPRINT "MASTER CARD *** ACCOUNT NUMBER ";:LSET MC$=MKS$(CVS(MC$)+TOTAL)
1220 IF CRD$="A" THEN LPRINT "AMERICAN EXPRESS *** ACCOUNT NUMBER ";:LSET AE$=MKS$(CVS(AE$)+TOTAL)
1230 IF CRD$="D" THEN LPRINT "DINERS CLUB *** ACCOUNT NUMBER ";:LSET DIN$=MKS$(CVS(DIN$)+TOTAL)
1240 IF CRD$="S" THEN LPRINT "STORE CHARGE *** ACCOUNT NUMBER ";:LSET STORE$=MKS$(CVS(STORE$)+TOTAL)
1250 IF CRD$="G" THEN LPRINT "GAS CARD *** ACCOUNT NUMBER ";:LSET GC$=MKS$(CVS(GC$)+TOTAL)
1260 IF CRD$="O" THEN LPRINT "CREDIT CARD *** ACCOUNT NUMBER ";:LSET OTHER$=MKS$(CVS(OTHER$)+TOTAL)
1270 LPRINT CNUM$;" ***":PUT#1,1
1273 LPRINT "EXPIRATION DATE ";PERD$:IF FLAG=0 THEN 1280
1275 LPRINT:LPRINT:LPRINT:X$="***** R E T U R N E D M E R C H A N D I S E *****":GOSUB 6250:X$="ORIGINAL INVOICE "+ORIG$:GOSUB 6250
1280 CLS:LPRINT CHR$(12);
1290 IF TY$ <> "CA" THEN 180
1292 IF FLAG=1 THEN 9060
1295 LOCATE 10,1:PRINT "PURCHASE COST=";TOTAL
1300 LOCATE 12,1:INPUT "INPUT CASH RECEIVED FROM THE CUSTOMER ";CASH
1305 LFT=CASH-TOTAL:LFT=INT(LFT*100):LFT=LFT/100
1310 PRINT "RETURN CHANGE=";LFT
1320 GOSUB 6060:GOTO 180
1330 GOSUB 6010:GET#1,1:GET#2,1:TRN=CVS(TRN$):VISA=CVS(VISA$):MC=CVS(MC$):AE=CVS(AE$):DIN=CVS(DIN$):STORE=CVS(STORE$):GC=CVS(GC$):OTHER=CVS(OTHER$):NUMINV=CVI(NUMTRN$):GOSUB 6090:GOSUB 6040:SUM=0
1340 D$=DATE$:D1$=DTE$:T$=TIME$
1345 GET#2,2:DLYSIS=CVS(DLYSIS$):TAXES=CVS(TAXES$):TOTDSC=CVS(TOTDSC$):FRATE=CVS(FRATE$)
1350 IF D$=D1$ THEN 1370
1360 ZZ$="***** DATE MISMATCH *****":GOSUB 6020:GOSUB 6060:GOTO 180
1370 FOR I=1 TO TRN-2:GET#2,I+2
1380 IF I MOD 40=1 AND I <> 1 THEN LPRINT CHR$(12);
1390 IF I MOD 40=1 THEN GOSUB 6190
1400 S$=STKNN$:FOR J=1 TO NUM:IF S$=ITEM$(J) THEN 1430
1410 NEXT J
1420 ZZ$="***** STOCK NUMBER ERROR *****":GOSUB 6020:GOSUB 6060:LPRINT CHR$(12);:GOTO 180
1430 GET#1,REC(J):DSC$=DESC$:SP=CVS(SP$)
1440 Q=CVI(QNTSLD$):A$=INITS$:INV=CVI(INNUM$)
1450 LPRINT TAB(2);S$;TAB(19);DSC$;TAB(45);:LPRINT USING "####";Q;:LPRINT TAB(60);:LPRINT USING "####";INV;:LPRINT TAB(75);A$
1460 NEXT I:LPRINT CHR$(12);
1470 X$="TRANSACTION REGISTER TOTALS":LPRINT:GOSUB 6250
1480 X$=D1$+SPACE$(5)+T$:GOSUB 6250
1490 LPRINT:LPRINT:X$="TOTALS"
1500 GOSUB 6250:LPRINT:LPRINT
1510 X$="CHARGES":GOSUB 6250
1515 BB=VISA:GOSUB 8000:VISA=BB:BB=MC:GOSUB 8000:MC=BB:BB=AE:GOSUB 8000:AE=BB:BB=DIN:GOSUB 8000:DIN=BB:BB=STORE:GOSUB 8000:STORE=BB:BB=GC:GOSUB 8000:GC=BB:BB=OTHER:GOSUB 8000:OTHER=BB
1520 LPRINT "VISA";TAB(40);:LPRINT USING "$$#####.##";VISA
1530 LPRINT "MASTER CARD";TAB(40);:LPRINT USING "$$#####.##";MC
1540 LPRINT "AMERICAN EXPRESS";TAB(40);:LPRINT USING "$$#####.##";AE
1550 LPRINT "DINERS CLUB";TAB(40);:LPRINT USING "$$#####.##";DIN
1560 LPRINT "STORE CHARGE";TAB(40);:LPRINT USING "$$#####.##";STORE
1570 LPRINT "GAS CARDS";TAB(40);:LPRINT USING "$$#####.##";GC
1580 LPRINT "OTHER CHARGES";TAB(40);:LPRINT USING "$$#####.##";OTHER
1585 LPRINT:TCHARG=VISA+MC+AE+DIN+STORE+GC+OTHER
1587 LPRINT "TOTAL CHARGES";TAB(40);:LPRINT USING "$$#####.##";TCHARG
1590 LPRINT:LPRINT
1600 LPRINT "NUMBER OF INVOICES=";:LPRINT USING "####";NUMINV
1610 LPRINT:LPRINT
1619 BB=DLYSIS:GOSUB 8000:DLYSIS=BB:BB=TAXES:GOSUB 8000:TAXES=BB:BB=FRATE:GOSUB 8000:FRATE=BB:BB=TOTDSC:GOSUB 8000:TOTDSC=BB
1620 LPRINT "TOTAL DAILY SALES";TAB(40);:LPRINT USING "$$#####.##";DLYSIS
1622 LPRINT "TOTAL TAXES COLLECTED";TAB(40);:LPRINT USING "$$#####.##";TAXES
1623 LPRINT "TOTAL FREIGHT COLLECTED";TAB(40);:LPRINT USING "$$#####.##";FRATE
1624 LPRINT "TOTAL DISCOUNTS ALLOWED";TAB(40);:LPRINT USING "$$#####.##";TOTDSC
1625 TCASH=DLYSIS+TAXES+FRATE-TCHARG
1626 LPRINT
1627 LPRINT "TOTAL CASH AND CHECKS";TAB(40);:LPRINT USING "$$#####.##";TCASH
1630 LPRINT CHR$(12);:GOTO 180
6000 COLOR 0,7:NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):PRINT SPACE$(NZ);ZZ$;SPACE$(NZ):COLOR 7,0:RETURN
6010 ZZ$="***** ONE MOMENT PLEASE *****":GOSUB 6020:RETURN
6020 CLS:LOCATE 12,1:GOSUB 6000:RETURN
6030 ZZ$="***** SORTING DATA *****":GOSUB 6020:RETURN
6040 ZZ$="***** PRINTING DATA *****":GOSUB 6020:LPRINT CHR$(18);:RETURN
6050 ZZ$="***** PRINTING THE INVOICE *****":GOSUB 6020:LPRINT CHR$(18);:RETURN
6060 LOCATE 23,1:PRINT "TYPE A KEY ON THE KEYBOARD TO CONTINUE ";
6070 QX$=INKEY$:IF QX$="" THEN 6070 ELSE RETURN
6080 IF LEN(YY$)<QQ THEN YY$=YY$+SPACE$(QQ-LEN(YY$))
6085 RETURN
6090 ZZ$="BE SURE THAT THE LINE PRINTER IS READY":GOSUB 6020:GOSUB 6060:ZZ$="ALIGN LINE PRINTER PAPER TO TOP OF FORM":GOSUB 6020:GOSUB 6060:RETURN
6100 NZ=LEN(XX$):XXX$="":FOR P=1 TO NZ:XXX$=SPACE$(P):XXY$=RIGHT$(XX$,P)
6101 IF XXX$ <> XXY$ THEN XX$=LEFT$(XX$,NZ-P+1):GOTO 6109
6102 NEXT P
6109 NZ=LEN(XX$):NZ=80-NZ:NZ=INT(NZ/2):LPRINT TAB(NZ);XX$:RETURN
6110 GET#1,1:LPRINT:NM$=COMPNM$:AD$=ADDR$:TN$=TOWN$:STA$=STT$:ZP$=ZIP$:TL$=TELE$
6120 XX$=NM$:GOSUB 6161:XX$=AD$:GOSUB 6100:XX$=TN$+SPACE$(4)+STA$:GOSUB 6100
6130 XX$=ZP$:GOSUB 6100:XX$=LEFT$(TL$,3)+"-"+MID$(TL$,4,3)+"-"+RIGHT$(TL$,4):GOSUB 6100:LPRINT
6132 XX$=STRING$(23,42):GOSUB 6100
6133 XX$="***"+SPACE$(17)+"***":GOSUB 6100:GOSUB 6100
6134 XX$="*** I N V O I C E ***":GOSUB 6100
6135 XX$="***"+SPACE$(17)+"***":GOSUB 6100:GOSUB 6100
6136 XX$=STRING$(23,42):GOSUB 6100:LPRINT:LPRINT:LPRINT:LPRINT
6137 XX$=STRING$(80,42):GOSUB 6100:LPRINT:LPRINT
6140 IF IPX=0 THEN IPX=1:NX=CVI(NUMTRN$):NX=NX+1:LSET NUMTRN$=MKI$(NX):PUT#2,1
6150 XX$="INVOICE NUMBER "+DATE$+"-"+STR$(NX):GOSUB 6100:LPRINT:LPRINT
6151 XX$="CUSTOMER'S NAME "+NME$:GOSUB 6100:LPRINT
6155 LPRINT "STOCK NUMBER";TAB(17);"DECRIPTION";TAB(39);"QNT";TAB(48);"UNIT COST";TAB(62);"QUANT COST"
6160 RETURN
6161 NZ=LEN(XX$):XXX$="":FOR P=1 TO NZ:XXX$=SPACE$(P):XXY$=RIGHT$(XX$,P)
6162 IF XXX$ <> XXY$ THEN XX$=LEFT$(XX$,NZ-P+1):GOTO 6164
6163 NEXT P
6164 NZ=LEN(XX$):NZ=40-NZ:NZ=INT(NZ/2):LPRINT CHR$(14);TAB(NZ);XX$:LPRINT:RETURN
6170 ZZ$="*** ERROR ***TRANSACTION FILE MISMATCH ***":GOSUB 6020:GOSUB 6060:GOTO 180
6180 LOCATE 20,1:PRINT" INPUT YOUR FIRST AND LAST INITIAL":LOCATE 20,50:INPUT YY$:QQ=2:GOSUB 6080:IN$=YY$
6181 LOCATE 22,1:PRINT "INPUT FREIGHT CHARGE";:LOCATE 22,50:INPUT FRT$:FRATE=VAL(FRT$):GOTO 730
6190 LPRINT:LPRINT CHR$(18);:LPRINT
6200 X$="TRANSACTION REGISTER":GOSUB 6250
6210 X$=D1$+SPACE$(5)+T$:GOSUB 6250
6220 LPRINT:LPRINT
6230 LPRINT "STOCK NUMBER";TAB(20);"DESCRIPTION";TAB(40);"QUANTITY SOLD";TAB(55);"INVOICE NUMBER";TAB(73);"INITIAL"
6240 LPRINT:RETURN
6250 NZ=LEN(X$):NZ=80-NZ:NZ=INT(NZ/2):LPRINT TAB(NZ);X$:RETURN
6251 ZZ$="***** ILLEGIAL QUANTITY ERROR SELL TERMINATED *****":GOSUB 6020:GOSUB 6060:LPRINT CHR$(12);:GOTO 180
7000 GET#1,REC(I):QUANT=CVS(QUANT$):MV=0:IF QNT(X) > QUANT THEN MV=1
7010 RETURN
8000 QWE=INT(BB*100):QWR=BB*100:IF QWR-QWE >=0.5 THEN QWE=QWE+1
8010 BB=QWE/100:RETURN
9000 IF ERR=24 THEN RESUME
9005 IF ERR=53 THEN CLS:ZZ$="***** FILE NOT FOUND *****":LOCATE 12,1:GOSUB 6000:GOSUB 6060:CLOSE:CHAIN "START",120
9010 IF ERR=27 THEN ZZ$="***** T U R N O N L I N E P R I N T E R *****":GOSUB 6020:RESUME
9020 AB$=STR$(ERR):ZZ$="***** E R R O R "+AB$+" *****":GOSUB 6020:GOSUB 6060:CHAIN "START",120
9050 FLAG=1:ZZ$="***** RETURN STOCK *****":CLS:GOSUB 6000:LOCATE 10,1:INPUT "INPUT ORIGINAL INVOICE NUMBER ";ORIG$:LOCATE 10,1:PRINT SPACE$(80):X=0:GOTO 491
9060 LOCATE 10,1:TOT=ABS(TOTAL):PRINT "CASH RETURNED TO CUSTOMER=";TOT:GOTO 1320
10000 RCITYA=INT(CITYR)/10000:RCOUNA=INT(COUNTR)/10000:RSTATA=INT(STATER)/10000
10010 CITYR=CITYR-INT(CITYR):COUNTR=COUNTR-INT(COUNTR):STATER=STATER-INT(STATER)
10020 IF TB$="A" OR TB$="a" THEN CITYR=RCITYA:COUNTR=RCOUNA:STATER=RSTATA
10030 RETURN
10100 CLOSE 3:KILL PCKLST$:GOTO 720
20 COMMON F$
40 CLS:SCREEN 0,0,0:WIDTH 80:COLOR 7,0:KEY OFF
41 ZZ$="***** A L P H A C O M P U T E R S E R V I C E *****":LOCATE 2,1:GOSUB 480:LOCATE 4,1:ZZ$="***** I N V E N T O R Y C O N T R O L *****":GOSUB 480
50 LOCATE 8,1:ZZ$="***** BE SURE YOUR KEYBOARD IS IN UPPER CASE *****":GOSUB 480
60 LOCATE 14,1:COLOR 7,0:PRINT "INPUT MASTER FILE NAME"
80 PRINT "(INCLUDE DISK DRIVE LETTER AND COLON) ";:COLOR 7,0
100 INPUT F$
120 CLS:SCREEN 0,0,0:WIDTH 80:COLOR 7,0:KEY OFF:RESET
140 LOCATE 2,1
160 ZZ$="INVENTORY CONTROL PROGRAM MENU"
180 GOSUB 480
200 PRINT:PRINT
220 ZZ$="OPTIONS AVAILABLE ARE:"
240 COLOR 0,7
260 PRINT TAB(5);"1.....INVENTORY PROCESSING"
280 PRINT
300 PRINT TAB(5);"2.....INVENTORY REPORTING"
320 PRINT
322 PRINT TAB(5);"3.....MASTER INVENTORY FILE BACK UP (DISK COPY)":PRINT
324 PRINT TAB(5);"4.....CHANGE TO ANOTHER INVENTORY FILE":PRINT
330 PRINT TAB(5);"5.....CASH REGISTER TRANSACTIONS":PRINT
331 PRINT TAB(5);"6.....GENERATE PICK LIST":PRINT
332 PRINT TAB(5);"7.....PICK LIST TRANSACTION":PRINT
340 PRINT TAB(5);"8.....TERMINATE INVENTORY CONTROL"
360 COLOR 7,0
380 PRINT:PRINT:INPUT "INPUT YOUR CHOICE";CHOICE
390 IF CHOICE=6 THEN CHAIN "PICKER"
395 IF CHOICE=7 THEN CHAIN "PICKTRAN"
400 IF CHOICE=8 THEN SYSTEM
410 IF CHOICE=5 THEN CHAIN "CASHREG"
420 IF CHOICE=1 THEN CHAIN "INVENPRC"
430 IF CHOICE=2 THEN CHAIN "INVENRPT"
440 IF CHOICE=4 THEN 40
441 IF CHOICE=3 THEN 500
450 GOTO 120
480 COLOR 0,7:NZ=LEN(ZZ$):NZ=80-NZ:NZ=INT(NZ/2):PRINT SPACE$(NZ);ZZ$;SPACE$(NZ):COLOR 7,0:RETURN
500 CLS:ZZ$="***** MASTER INVENTORY COPY ROUTINE *****":GOSUB 480
510 OPEN "R",1,F$:FIELD#1,128 AS BUFF1$:NUMREC=LOF(1)/128:IF NUMREC=0 THEN 600
520 LOCATE 12,1:INPUT "INPUT THE NEW FILE NAME ";G$
530 OPEN "R",2,G$:FIELD#2,128 AS BUFF2$
534 LOCATE 12,1
535 ZZ$="***** DISK COPY *****":GOSUB 480
540 FOR I=1 TO NUMREC:GET#1,I:LSET BUFF2$=BUFF1$:PUT#2,I:NEXT
550 LOCATE 12,1
560 ZZ$="***** FILE COMPARE *****":GOSUB 480
570 FOR I=1 TO NUMREC:GET#1,I:GET#2,I:A$=BUFF1$:B$=BUFF2$:IF A$=B$ THEN 590
580 ZZ$="***** FILES DO NOT COMPARE *****":GOSUB 480:GOSUB 900:GOTO 950
590 NEXT I:ZZ$="***** FILES COMPARE *****":GOSUB 480:GOSUB 900:GOTO 950
600 CLS:LOCATE 12,1:ZZ$="***** MASTER FILE DOES NOT CONTAIN ANY DATA *****":GOSUB 480:GOSUB 900:GOTO 960
900 LOCATE 20,1:PRINT "TYPE A KEY ON THE KEYBOARD TO CONTINUE";
910 QZ$=INKEY$:IF QZ$="" THEN 910 ELSE RETURN
950 CLOSE 2
960 CLOSE 1:GOTO 120
999 END
Volume in drive A has no label
Directory of A:\
B1 BAS 1024 11-26-81
B10 BAS 512 4-14-82
B11 BAS 768 4-14-82
B12 BAS 768 4-14-82
B13 BAS 640 4-14-82
B14 BAS 896 4-14-82
B15 BAS 896 4-14-82
B16 BAS 1024 4-14-82
B17 BAS 1024 4-14-82
B18 BAS 768 4-14-82
B19 BAS 1536 4-14-82
B2 BAS 512 4-14-82
B20 BAS 1850 7-16-86 2:04p
B3 BAS 896 4-14-82
B4 BAS 896 4-14-82
B5 BAS 896 4-14-82
B6 BAS 896 4-14-82
B7 BAS 512 4-14-82
B8 BAS 640 4-16-82
B9 BAS 3072 4-15-82
BUSIN BAS 896 11-29-83 8:39p
CASHREG BAS 12416 1-02-84 2:58a
FILES171 TXT 2048 11-14-86 4:23p
FINANCE BAS 17920 11-29-83 8:44p
INTEREST BAS 3200 1-01-80
INVENPRC BAS 12032 1-02-84 2:39a
INVENRPT BAS 7070 1-02-84 2:47a
INVENTRY DOC 13568 1-02-84 2:50p
PICKER BAS 3456 1-02-84 3:03a
PICKTRAN BAS 13056 1-02-84 3:01a
START BAS 2048 1-02-84 2:35a
31 file(s) 107736 bytes
48128 bytes free