PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #171)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “FINANCE AND INVENTORY”

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.

B1.BAS

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"

B10.BAS

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"

B11.BAS

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"

B12.BAS

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"

B13.BAS

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"

B14.BAS

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"

B15.BAS

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"

B16.BAS

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"

B17.BAS

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"

B18.BAS

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"

B19.BAS

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"

B2.BAS

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"

B20.BAS

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"

B3.BAS

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"

B4.BAS

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"

B5.BAS

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"

B6.BAS

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"

B7.BAS

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"

B8.BAS

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"

B9.BAS

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"

BUSIN.BAS

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"

CASHREG.BAS

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

FILES171.TXT

----------------------------------------------------------------------------
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

FINANCE.BAS

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

INTEREST.BAS

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

INVENPRC.BAS

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

INVENRPT.BAS

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

INVENTRY.DOC



    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.


PICKER.BAS

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

PICKTRAN.BAS

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

START.BAS

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

Directory of PC-SIG Library Disk #0171

 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