home *** CD-ROM | disk | FTP | other *** search
- 10 '*************************************************************************
- 20 '* SAVINGS BOND PROGRAM *
- 30 '* WRITTEN 12-10-86 BY DICK STUBBS *
- 40 '* 400 NO. STUBBS BAY ROAD *
- 50 '* LONG LAKE, MINN. 55356 *
- 60 '*************************************************************************
- 70 '
- 80 '*************************************************************************
- 90 '* THIS PROGRAM IS A MENU DRIVEN PROGRAM THAT ALLOWS YOU TO KEEP TRACK *
- 100 '* OF YOUR INVESTMENT IN U.S. SAVINGS BONDS BY SELECTING AMONG VARIOUS *
- 110 '* OPTIONS OFFERED TO YOU ON THE MAIN MENU. ALL SELECTIONS ARE SELF- *
- 120 '* EXPLANATORY, AND PROMPT YOU FOR THE REQUIRED INPUT. *
- 130 '*************************************************************************
- 140 '
- 150 '*************************************************************************
- 160 '* VARIABLES USED: *
- 170 '* AGAIN$=PROGRAM CONTROL VARIABLE, AMOUNT$=AMOUNT ARRAY *
- 180 '* A$=AMOUNT STRING, BD$=BOND DATE *
- 190 '* BPM$=BOND PRINT MASK, BVPM$=BOND VALUE PRINT MASK *
- 200 '* CAT$=CATEGORY NAME, CATNAME$=TITLE OF CATEGORY *
- 210 '* CD$=CORRECTED DATA, CONTINUE$=CONTROL VARIABLE *
- 220 '* COST$=ORIGINAL COST ARRAY, C$=COST STRING *
- 230 '* D=COUNTER, D$=DATE STRING *
- 240 '* DATE$=DATE ARRAY, DI=COUNTER *
- 250 '* EE=NUMBER OF EE BONDS, EN=NUMBER OF E BONDS *
- 260 '* EV=VALUE OF EE BONDS, FILENAME$=FILENAME *
- 270 '* FLAG=CONTROL VARIABLE, FV=FACE VALUE *
- 280 '* I$=INPUT STRING, IN$=INPUT ARRAY *
- 290 '* JD=JULIAN DATE, LN=LINE NUMBER *
- 300 '* LR=LAST RECORD, M$=MATURE DATE STRING *
- 310 '* MATURE$=MATURE DATE ARRAY, MB=NUMBER OF MATURE BONDS *
- 320 '* MN$=MONTH NAME, MN=MONTH COUNTER *
- 330 '* MO$=MONTH STRING, MONTH=MONTH NUMBER *
- 340 '* MV=MATURE VALUE, MY$=CURRENT MONTH,YEAR *
- 350 '* N$=BOND NUMBER, NUMBER$=BOND NUMBER ARRAY *
- 360 '* OK$=CONTROL VARIABLE, OP$=OPTION SELECTION STRING *
- 370 '* OP=OPTION SELECTION VALUE, PAGENO=PAGE NUMBER *
- 380 '* R=RECORD NUMBER, RN=RECORD NUMBER *
- 390 '* SD$=SEARCH DATE, T$=BOND TYPE *
- 400 '* TYPE$=BOND TYPE ARRAY, TA=TOTAL AMOUNT *
- 410 '* V=VALUE OF E BONDS *
- 420 '*************************************************************************
- 430 '
- 440 '*************************************************************************
- 450 '* INITIALIZE VARIABLES, CHOOSE INPUT FILE & DEFINE ARRAYS *
- 460 '*************************************************************************
- 470 '
- 480 CLEAR
- 490 FULLW 2:WIDTH 80:WIDTH LPRINT 80
- 500 OPTION BASE 1
- 510 DIM DATE$(100),TYPE$(100),COST$(100),NUMBER$(100),AMOUNT$(100)
- 520 DIM MATURE$(100),IN$(100)
- 530 DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
- 540 BPM$="####"
- 550 BVPM$="$$##,###.##"
- 560 FLAG=1
- 570 WHILE FLAG=1
- 580 CLEARW 2:GOTOXY 25,1:PRINT "SAVINGS BOND PROGRAM":GOTOXY 6,5
- 590 INPUT "WHAT IS THE NAME OF THE FILE YOU'LL BE WORKING WITH";FILENAME$
- 600 GOTOXY 23,10:PRINT "FILE NAME IS '";FILENAME$;"'"
- 610 GOTOXY 11,16
- 620 LINE INPUT "IF CORRECT INPUT 'Y' <RETURN>, ELSE 'N' <RETURN> ";CORRECT$
- 630 IF CORRECT$="Y" THEN FLAG=0
- 640 WEND
- 650 '
- 660 '*************************************************************************
- 670 '* DISPLAY MENU & CHOOSE OPTION *
- 680 '*************************************************************************
- 690 '
- 700 CLEARW 2:GOTOXY 15,1:PRINT "DO YOU WANT TO --":PRINT
- 710 PRINT TAB(25);"(1) CREATE A NEW FILE"
- 720 PRINT TAB(25);"(2) ADD TO AN EXISTING FILE"
- 730 PRINT TAB(25);"(3) LIST/CORRECT INDIVIDUAL BONDS"
- 740 PRINT TAB(25);"(4) DELETE ITEMS FROM FILE"
- 750 PRINT TAB(25);"(5) LIST ENTIRE FILE"
- 760 PRINT TAB(25);"(6) LIST BOND SUMMARY"
- 770 PRINT TAB(25);"(7) PRINT ENTIRE FILE"
- 780 PRINT TAB(25);"(8) PRINT BOND SUMMARY"
- 790 PRINT TAB(25);"(9) PRINT MATURE BOND LIST"
- 800 PRINT TAB(25);"(10) USE ANOTHER FILE"
- 810 PRINT TAB(25);"(11) EXIT PROGRAM
- 820 GOTOXY 24,15:LINE INPUT "OPTION DESIRED? ";OP$:OP=VAL(OP$)
- 830 IF OP<1 OR OP>11 THEN 820
- 840 ON OP GOTO 870,1010,1230,1830,2220,2540,2730,3080,3360,3770,3830
- 850 '
- 860 '*************************************************************************
- 870 '* CREATE A NEW FILE ROUTINE *
- 880 '*************************************************************************
- 890 '
- 900 GOSUB INPUTDATA
- 910 CLEARW 2:GOTOXY 23,7:PRINT "NOW RECORDING FILE '";FILENAME$;"'"
- 920 OPEN "R",#1,FILENAME$,47
- 930 FIELD #1,47 AS IN$
- 940 FOR R=1 TO X-1
- 950 LSET IN$=IN$(R)
- 960 PUT #1,R
- 970 NEXT R
- 980 CLOSE #1
- 990 GOTO 700
- 1000 '
- 1010 '*************************************************************************
- 1020 '* ROUTINE FOR ADDING DATA *
- 1030 '*************************************************************************
- 1040 '
- 1050 CLEARW 2:GOTOXY 26,7:PRINT "CHECKING LAST RECORD ON FILE"
- 1060 OPEN "R",#1,FILENAME$,47
- 1070 FIELD #1,47 AS IN$
- 1080 GET #1,LOF(1)
- 1090 LR=LOF(1)
- 1100 CLEARW 2:GOTOXY 5,8
- 1110 PRINT "LAST DATE ON FILE IS ";LEFT$(IN$,10);" AND LISTS BOND NUMBER ";
- 1120 PRINT MID$(IN$,18,15):GOTOXY 25,15
- 1130 PRINT "PRESS <RETURN> TO CONTINUE ";:LINE INPUT CONTINUE$
- 1140 GOSUB INPUTDATA
- 1150 CLEARW 2:GOTOXY 31,8:PRINT "NOW UPDATING FILE"
- 1160 FOR R=1 TO X-1
- 1170 LSET IN$=IN$(R)
- 1180 PUT #1,R+LR
- 1190 NEXT R
- 1200 CLOSE #1
- 1210 GOTO 700
- 1220 '
- 1230 '*************************************************************************
- 1240 '* ROUTINE FOR MAKING CORRECTIONS *
- 1250 '*************************************************************************
- 1260 '
- 1270 OPEN "R",#1,FILENAME$,47
- 1280 FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
- 1290 CLEARW 2:GOTOXY 23,1:PRINT "BOND DATA LIST/CORRECTION ROUTINE":PRINT
- 1300 PRINT TAB(7);"DATE OF BOND DATA TO BE LISTED (ENTER AS 'MONTH,YEAR') ";
- 1310 LINE INPUT BD$:SD$=LEFT$(BD$+" ",10)
- 1320 CLEARW 2:GOTOXY 31,8:PRINT "NOW SEARCHING FILE"
- 1330 FOR R=1 TO LOF(1)
- 1340 GET #1,R
- 1350 IF D$=SD$ THEN 1430
- 1360 NEXT R
- 1370 CLEARW 2:GOTOXY 20,1:PRINT "'";BD$;"' IS NOT ON FILE '";FILENAME$;"
- 1380 PRINT TAB(18);"DO YOU WANT TO TRY ANOTHER DATE (Y OR N)? ";
- 1390 LINE INPUT AGAIN$
- 1400 IF AGAIN$="Y" THEN 1300
- 1410 IF AGAIN$="N" THEN 1800
- 1420 IF AGAIN$<>"Y" OR AGAIN$<>"N" THEN 1370
- 1430 CLEARW 2:GOTOXY 10,1:PRINT "BOND DATA FOR FILE '";FILENAME$;"'";
- 1440 PRINT TAB(43);"RECORD NUMBER";R
- 1450 PRINT TAB(4);"ISSUE DATE";TAB(18);"TYPE";TAB(26);"$COST";TAB(39);"NUMBER";
- 1460 PRINT TAB(53);"$AMOUNT";TAB(64);"MATURES ON"
- 1470 PRINT TAB(4);"__________";TAB(18);"____";TAB(26);"_____";TAB(39);"______";
- 1480 PRINT TAB(53);"_______";TAB(64);"__________"
- 1490 PRINT
- 1500 PRINT TAB(4);D$;TAB(19);T$;TAB(26);C$;TAB(36);N$;TAB(55);A$;TAB(64);M$
- 1510 PRINT:PRINT TAB(18);"ENTER THE NAME OF THE CATEGORY TO BE CHANGED"
- 1520 PRINT TAB(13);"('NONE' IF NO CHANGES ARE TO BE MADE), A PLUS SIGN (+)";
- 1530 PRINT TAB(12);"TO DISPLAY THE NEXT RECORD, A MINUS SIGN (-) TO DISPLAY"
- 1540 PRINT TAB(15);"THE PREVIOUS RECORD, OR AN 'A' TO SHOW ANOTHER BOND."
- 1550 PRINT TAB(16);"CATEGORY NAMES ARE: 'D' FOR ISSUE DATE, 'T' FOR"
- 1560 PRINT TAB(14);"BOND TYPE, 'C' FOR ORIGINAL COST, 'N' FOR BOND NUMBER,"
- 1570 PRINT TAB(14);"'V' FOR FACE VALUE (AMOUNT), AND 'M' FOR MATURE DATE."
- 1580 PRINT TAB(20);"ENTER CATEGORY (OR FUNCTION) DESIRED ";:LINE INPUT CAT$
- 1590 IF CAT$="NONE" OR CAT$="A" OR CAT$="+" OR CAT$="-" OR CAT$="D" THEN 1620
- 1600 IF CAT$="T" OR CAT$="C" OR CAT$="N" OR CAT$="V" OR CAT$="M" THEN 1620
- 1610 PRINT TAB(22);"'";CAT$;"' IS INVALID. PLEASE ENTER AGAIN":GOTO 1580
- 1620 IF CAT$="NONE" THEN 1800
- 1630 IF CAT$="+" THEN R=R+1:GET #1,R:GOTO 1430
- 1640 IF CAT$="-" THEN R=R-1:GET #1,R:GOTO 1430
- 1650 IF CAT$="A" THEN 1290
- 1660 IF CAT$="D" THEN CATNAME$="ISSUE DATE"
- 1670 IF CAT$="T" THEN CATNAME$="BOND TYPE"
- 1680 IF CAT$="C" THEN CATNAME$="ORIGINAL COST"
- 1690 IF CAT$="N" THEN CATNAME$="BOND NUMBER"
- 1700 IF CAT$="V" THEN CATNAME$="FACE VALUE (AMOUNT)"
- 1710 IF CAT$="M" THEN CATNAME$="MATURE DATE"
- 1720 PRINT:PRINT TAB(20);"WHAT IS THE CORRECT ";CATNAME$;"? ";:LINE INPUT CD$
- 1730 IF CAT$="D" THEN LSET D$=LEFT$(CD$+" ",10)
- 1740 IF CAT$="T" THEN LSET T$=LEFT$(CD$+" ",2)
- 1750 IF CAT$="C" THEN LSET C$=LEFT$(CD$+" ",5)
- 1760 IF CAT$="N" THEN LSET N$=LEFT$(CD$+" ",15)
- 1770 IF CAT$="V" THEN LSET A$=LEFT$(CD$+" ",5)
- 1780 IF CAT$="M" THEN RSET M$=RIGHT$(" "+CD$,10)
- 1790 PUT #1,R:GOTO 1430
- 1800 CLOSE #1
- 1810 GOTO 700
- 1820 '
- 1830 '*************************************************************************
- 1840 '* ROUTINE FOR DELETING ITEMS *
- 1850 '*************************************************************************
- 1860 '
- 1870 CLEARW 2:GOTOXY 13,1:PRINT "ENTER DATE(S) TO BE DELETED. ";
- 1880 PRINT "INPUT 'Q' WHEN FINISHED.":X=1:PRINT
- 1890 PRINT TAB(30);"DATE? ";:LINE INPUT DATE$(X)
- 1900 IF DATE$(X)="Q" THEN 1940
- 1910 DATE$(X)=LEFT$(DATE$(X)+" ",10)
- 1920 X=X+1
- 1930 GOTO 1890
- 1940 CLEARW 2:GOTOXY 25,1:PRINT "ALL DATA FILED UNDER DATE(S):":PRINT
- 1950 FOR DI=1 TO X-1
- 1960 PRINT TAB(35);DATE$(DI)
- 1970 NEXT DI
- 1980 PRINT:PRINT TAB(20);"WILL BE DELETED. IS THAT OK (Y OR N)? ";
- 1990 LINE INPUT OK$
- 2000 IF OK$="Y" THEN 2030
- 2010 IF OK$="N" THEN 1830
- 2020 IF OK$<>"Y" OR OK$<>"N" THEN 1940
- 2030 CLEARW 2:GOTOXY 31,7:PRINT "NOW UPDATING FILE"
- 2040 OPEN "R",#1,FILENAME$,47
- 2050 FIELD #1,47 AS I$
- 2060 OPEN "R",#2,"UPDATED.DAT",47
- 2070 FIELD #2,47 AS IN$
- 2080 FOR R=1 TO LOF(1)
- 2090 GET #1,R
- 2100 FOR DI=1 TO X-1
- 2110 IF LEFT$(I$,10)=DATE$(DI) THEN 2160
- 2120 NEXT DI
- 2130 LSET IN$=I$
- 2140 RN=RN+1
- 2150 PUT #2,RN
- 2160 NEXT R
- 2170 CLOSE
- 2180 KILL FILENAME$
- 2190 NAME "UPDATED.DAT" AS FILENAME$
- 2200 GOTO 700
- 2210 '
- 2220 '************************************************************************
- 2230 '* ROUTINE TO LIST ENTIRE FILE *
- 2240 '************************************************************************
- 2250 '
- 2260 CLEARW 2:GOTOXY 30,8:PRINT "NOW READING FILE"
- 2270 OPEN "R",#1,FILENAME$,47
- 2280 FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
- 2290 CLEARW 2:LR=LOF(1)
- 2300 R=1
- 2310 WHILE R<=LR
- 2320 PAGENO=PAGENO+1
- 2330 GOTOXY 18,1:PRINT "BOND DATA FOR FILE '";FILENAME$;"'";
- 2340 PRINT TAB(49);"PAGE";PAGENO
- 2350 PRINT TAB(4);"ISSUE DATE";TAB(18);"TYPE";TAB(26);"COST";TAB(39);"NUMBER";
- 2360 PRINT TAB(53);"AMOUNT";TAB(63);"MATURES ON"
- 2370 PRINT TAB(4);"__________";TAB(18);"____";TAB(26);"____";TAB(39);"______";
- 2380 PRINT TAB(53);"______";TAB(63);"__________"
- 2390 PRINT
- 2400 FOR LN=1 TO 10
- 2410 GET #1,R
- 2420 PRINT TAB(4);D$;TAB(19);T$;TAB(25);"$";C$;TAB(36);N$;
- 2430 PRINT TAB(54);"$";A$;TAB(63);M$
- 2440 R=R+1
- 2450 IF R>LR THEN LN=13
- 2460 NEXT LN
- 2470 PRINT:PRINT TAB(5);"PRESS <RETURN> TO CONTINUE OR ENTER 'X' ";
- 2480 PRINT "TO RETURN TO THE MAIN MENU ";:LINE INPUT CONTINUE$
- 2490 IF CONTINUE$="X" THEN R=LR+1
- 2500 CLEARW 2
- 2510 WEND
- 2520 CLOSE #1:PAGENO=0:GOTO 700
- 2530 '
- 2540 '************************************************************************
- 2550 '* ROUTINE TO LIST BOND SUMMARY *
- 2560 '************************************************************************
- 2570 '
- 2580 GOSUB INPUTDATE
- 2590 GOSUB BONDSUM
- 2600 CLEARW 2:GOTOXY 24,1:PRINT "SUMMARY OF FILE NAMED '";FILENAME$;"'":PRINT
- 2610 PRINT TAB(14);"TOTAL FACE VALUE OF YOUR SAVINGS BONDS: ";
- 2620 PRINT USING BVPM$;FV
- 2630 PRINT TAB(14);"NUMBER OF 'E' BONDS:";TAB(49);:PRINT USING BPM$;EN
- 2640 PRINT TAB(14);"NUMBER OF 'EE' BONDS:";TAB(49);:PRINT USING BPM$;EE
- 2650 PRINT TAB(14);"FACE VALUE OF 'E' BONDS:";TAB(42);:PRINT USING BVPM$;V
- 2660 PRINT TAB(14);"FACE VALUE OF 'EE' BONDS:";TAB(42);:PRINT USING BVPM$;EV
- 2670 PRINT:PRINT TAB(27);MB;"BONDS MATURE BY ";MY$
- 2680 PRINT TAB(18);"YOU HAVE ";:PRINT USING BVPM$;MV;
- 2690 PRINT " WORTH OF MATURE BONDS!!!"
- 2700 PRINT:PRINT TAB(26);"PRESS <RETURN> TO CONTINUE";:LINE INPUT CONTINUE$
- 2710 GOTO 700
- 2720 '
- 2730 '************************************************************************
- 2740 '* ROUTINE TO PRINT ENTIRE FILE *
- 2750 '************************************************************************
- 2760 '
- 2770 CLEARW 2:GOTOXY 14,6:PAGENO=0:FV=0:EN=0:EE=0:V=0:EV=0:MB=0:MV=0
- 2780 PRINT "TURN ON THE PRINTER. LINE UP THE FOLD IN THE PAPER"
- 2790 PRINT TAB(22);"WITH THE TOP OF THE PRINT HEAD GUARD."
- 2800 PRINT TAB(26);"PRESS <RETURN> WHEN READY ";:LINE INPUT CONTINUE$
- 2810 GOSUB INPUTDATE
- 2820 CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING TITLES"
- 2830 GOSUB HEADINGS
- 2840 CLEARW 2:GOTOXY 31,7:PRINT "NOW PRINTING FILE"
- 2850 OPEN "R",#1,FILENAME$,47
- 2860 FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
- 2870 FOR R=1 TO LOF(1)
- 2880 GET #1,R
- 2890 LPRINT TAB(1);D$;TAB(17);T$;TAB(27);"$";C$;TAB(40);N$;TAB(59);"$";A$;
- 2900 LPRINT TAB(69);M$
- 2910 PL=PL+1
- 2920 IF PL=63 THEN GOSUB NEWPAGE
- 2930 NEXT R
- 2940 CLOSE #1
- 2950 CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING SUMMARY
- 2960 FOR LF=1 TO 66-PL
- 2970 LPRINT
- 2980 NEXT LF
- 2990 GOSUB BONDSUM
- 3000 PAGENO=PAGENO+1
- 3010 LPRINT TAB(7);CHR$(27);"W1";CHR$(27);"E";"PRINTOUT OF FILE NAMED ";
- 3020 LPRINT FILENAME$:LPRINT CHR$(27);"W0";
- 3030 LPRINT TAB(31);"(AS OF ";MY$;")";TAB(73);"PAGE";PAGENO:LPRINT CHR$(27);"F"
- 3040 LPRINT CHR$(27);"-1";CHR$(27);"E";CHR$(27);"D";CHR$(33);CHR$(0);
- 3050 LPRINT CHR$(9);"BOND SUMMARY";CHR$(27);"-0";CHR$(27);"F";CHR$(27);"@"
- 3060 LPRINT:GOTO 3220
- 3070 '
- 3080 '*************************************************************************
- 3090 '* ROUTINE TO PRINT BOND SUMMARY *
- 3100 '*************************************************************************
- 3110 '
- 3120 CLEARW 2:GOTOXY 14,6
- 3130 PRINT "TURN ON THE PRINTER. LINE UP THE FOLD IN THE PAPER"
- 3140 PRINT TAB(22);"WITH THE TOP OF THE PRINT HEAD GUARD."
- 3150 PRINT TAB(26);"PRESS <RETURN> WHEN READY ";:LINE INPUT CONTINUE$
- 3160 GOSUB INPUTDATE
- 3170 GOSUB BONDSUM
- 3180 CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING SUMMARY
- 3190 LPRINT TAB(6);CHR$(27);"W1";CHR$(27);"E";"SUMMARY OF FILE NAMED '";
- 3200 LPRINT FILENAME$;"'";CHR$(27);"W0";
- 3210 LPRINT TAB(31);"(AS OF ";MY$;")";CHR$(27);"F":LPRINT
- 3220 LPRINT TAB(23);"TOTAL FACE VALUE OF BONDS:";TAB(54);
- 3230 LPRINT USING BVPM$;FV
- 3240 LPRINT TAB(23);"NUMBER OF 'E' BONDS HELD:";TAB(61);:LPRINT USING BPM$;EN
- 3250 LPRINT TAB(23);"NUMBER OF 'EE' BONDS HELD:";TAB(61);:LPRINT USING BPM$;EE
- 3260 LPRINT TAB(23);"TOTAL VALUE OF 'E' BONDS HELD:";TAB(54);
- 3270 LPRINT USING BVPM$;V
- 3280 LPRINT TAB(23);"TOTAL VALUE OF 'EE' BONDS HELD:";TAB(54);
- 3290 LPRINT USING BVPM$;EV
- 3300 LPRINT TAB(23);"NUMBER OF MATURE BONDS:";TAB(61);:LPRINT USING BPM$;MB
- 3310 LPRINT TAB(23);"FACE VALUE OF MATURE BONDS:";TAB(54);
- 3320 LPRINT USING BVPM$;MV
- 3330 LPRINT CHR$(12):FV=0:EN=0:EE=0:V=0:EV=0:MB=0:MV=0
- 3340 GOTO 700
- 3350 '
- 3360 '*************************************************************************
- 3370 '* ROUTINE TO PRINT MATURE BOND LIST *
- 3380 '*************************************************************************
- 3390 '
- 3400 CLEARW 2:GOTOXY 14,6
- 3410 PRINT "TURN ON THE PRINTER. LINE UP THE FOLD IN THE PAPER"
- 3420 PRINT TAB(22);"WITH THE TOP OF THE PRINT HEAD GUARD."
- 3430 PRINT TAB(26);"PRESS <RETURN> WHEN READY ";:LINE INPUT CONTINUE$
- 3440 GOSUB INPUTDATE
- 3450 CLEARW 2:GOTOXY 30,7:PRINT "NOW PRINTING TITLES"
- 3460 LPRINT TAB(13);CHR$(27);"W1";CHR$(27);"E";"'";FILENAME$;
- 3470 LPRINT "' MATURE BOND LIST"
- 3480 LPRINT CHR$(27);"W0";TAB(31);"(AS OF ";MY$;")";CHR$(27);"F":LPRINT
- 3490 LPRINT CHR$(27);"D";CHR$(17);CHR$(31);CHR$(52);CHR$(67);CHR$(0)
- 3500 LPRINT CHR$(27);"-1";"DATE ISSUED";CHR$(9);"TYPE";CHR$(9);
- 3510 LPRINT "BOND NUMBER";CHR$(9);"AMOUNT";CHR$(9);"DATE MATURE"
- 3520 LPRINT CHR$(27);"-0";CHR$(27);"@"
- 3530 CLEARW 2:GOTOXY 32,7:PRINT "NOW READING FILE"
- 3540 OPEN "R",#1,FILENAME$,47
- 3550 FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
- 3560 CLEARW 2:GOTOXY 31,7:PRINT "NOW PRINTING LIST"
- 3570 FOR R=1 TO LOF(1)
- 3580 GET #1,R
- 3590 FOR D=1 TO 12
- 3600 READ MO$
- 3610 IF MO$=LEFT$(D$,3) THEN 3630
- 3620 NEXT D
- 3630 RESTORE:JD=VAL(RIGHT$(M$,4))+D/100
- 3640 IF JD>YM THEN 3690
- 3650 LPRINT TAB(2);D$;TAB(19);T$;TAB(32);N$;TAB(53);
- 3660 LPRINT USING "$$##";VAL(A$);
- 3670 LPRINT TAB(68);M$:TA=TA+VAL(A$):MB=MB+1
- 3680 NEXT R
- 3690 CLOSE #1:LPRINT:LPRINT:LPRINT
- 3700 LPRINT TAB(17);"TOTAL NUMBER OF MATURE BONDS:";TAB(58);
- 3710 LPRINT USING BPM$;MB
- 3720 LPRINT TAB(17);"TOTAL FACE VALUE OF MATURE BONDS:";TAB(51);
- 3730 LPRINT USING BVPM$;TA
- 3740 LPRINT CHR$(12):FV=0:EN=0:EE=0:V=0:EV=0:MB=0:MV=0
- 3750 GOTO 700
- 3760 '
- 3770 '************************************************************************
- 3780 '* ROUTINE TO USE ANOTHER FILE *
- 3790 '************************************************************************
- 3800 '
- 3810 CLEARW 2:GOTO 560
- 3820 '
- 3830 '************************************************************************
- 3840 '* ROUTINE TO END PROGRAM *
- 3850 '************************************************************************
- 3860 '
- 3870 GOTO 5140
- 3880 '
- 3890 '************************************************************************
- 3900 '* INPUTDATA SUBROUTINE *
- 3910 '************************************************************************
- 3920 '
- 3930 INPUTDATA:
- 3940 X=1
- 3950 CLEARW 2:GOTOXY 29,1:PRINT "INPUT BOND INFORMATION"
- 3960 PRINT TAB(24);"INPUT 'Q' <RETURN> WHEN FINISHED"
- 3970 PRINT TAB(16);"ISSUE DATE (ENTER AS 'MONTH,YEAR')? ";:LINE INPUT DATE$(X)
- 3980 RESTORE:IF DATE$(X)="Q" THEN 4470
- 3990 IF LEN(DATE$(X))<8 OR LEN(DATE$(X))>10 THEN 4040
- 4000 FOR MONTH=1 TO 12
- 4010 READ MN$
- 4020 IF MN$=LEFT$(DATE$(X),3) THEN 4080
- 4030 NEXT MONTH
- 4040 PRINT TAB(23);"'";DATE$(X);"' IS AN INVALID DATE!!"
- 4050 PRINT TAB(16);"USE AT LEAST 8 BUT NOT MORE THAN 10 CHARACTERS"
- 4060 PRINT TAB(16);"WHAT IS THE CORRECT DATE (ENTER AS MONTH,YEAR)? ";
- 4070 LINE INPUT DATE$(X):GOTO 3980
- 4080 PRINT TAB(28);"BOND TYPE (E OR EE)? ";:LINE INPUT TYPE$(X)
- 4090 IF TYPE$(X)="E" OR TYPE$(X)="EE" THEN 4140
- 4100 PRINT TAB(17);"'";TYPE$(X);"' IS AN INVALID BOND TYPE!!! ";
- 4110 PRINT "USE 'E' OR 'EE'"
- 4120 PRINT TAB(26);"WHAT IS THE CORRECT TYPE? ";:LINE INPUT TYPE$(X)
- 4130 GOTO 4090
- 4140 PRINT TAB(21);"ORIGINAL COST (ENTER AS $XX.XX)? $";:LINE INPUT COST$(X)
- 4150 IF LEN(COST$(X))<=5 AND VAL(RIGHT$(COST$(X),3))<1 THEN 4180
- 4160 PRINT TAB(23);"'$";COST$(X);"' IS AN INCORRECT AMOUNT!!!"
- 4170 PRINT TAB(24);"ENTER CORRECT AMOUNT AS '$XX.XX'":GOTO 4140
- 4180 PRINT TAB(21);"BOND NUMBER? ";:LINE INPUT NUMBER$(X)
- 4190 IF LEN(NUMBER$(X))>8 AND LEN(NUMBER$(X))<15 THEN 4260
- 4200 PRINT TAB(15);"'";NUMBER$(X);"' IS AN INVALID BOND SERIAL ";
- 4210 PRINT "NUMBER!!!"
- 4220 PRINT TAB(16);"THE NUMBER MUST BE BETWEEN 9 AND 15 DIGITS LONG."
- 4230 PRINT TAB(27);"YOU TRIED TO USE";LEN(NUMBER$(X));"DIGITS."
- 4240 PRINT TAB(21);"WHAT IS THE CORRECT NUMBER? ";:LINE INPUT NUMBER$(X)
- 4250 GOTO 4190
- 4260 PRINT TAB(21);"BOND AMOUNT (ENTER AS $XXX)? $";:LINE INPUT AMOUNT$(X)
- 4270 IF LEN(AMOUNT$(X))<=3 THEN 4310
- 4280 PRINT TAB(23);"'$";AMOUNT$(X);"' IS AN INCORRECT AMOUNT!!!"
- 4290 PRINT TAB(15);"MAXIMUM OF 3 DIGITS ALLOWED. ";
- 4300 PRINT "YOU TRIED TO USE";LEN(AMOUNT$(X)):GOTO 4260
- 4310 RESTORE:PRINT TAB(19);"DATE MATURE (ENTER AS MONTH,YEAR)? ";
- 4320 LINE INPUT MATURE$(X)
- 4330 IF LEN(MATURE$(X))<8 OR LEN(MATURE$(X))>10 THEN 4380
- 4340 FOR MN=1 TO 12
- 4350 READ MN$
- 4360 IF MN$=LEFT$(MATURE$(X),3) THEN 4410
- 4370 NEXT MN
- 4380 PRINT TAB(23);"'";MATURE$(X);"' IS AN INVALID DATE!!!"
- 4390 PRINT TAB(17);"USE AT LEAST 8 BUT NOT MORE THAN 10 CHARACTERS"
- 4400 GOTO 4310
- 4410 LI$=LEFT$(DATE$(X)+" ",10)+LEFT$(TYPE$(X)+" ",2)
- 4420 MI$=LI$+LEFT$(COST$(X)+" ",5)+LEFT$(NUMBER$(X)+" ",15)
- 4430 IN$(X)=MI$+LEFT$(AMOUNT$(X)+" ",5)+RIGHT$(" "+MATURE$(X),10)
- 4440 X=X+1
- 4450 LI$="":MI$=""
- 4460 GOTO 3950
- 4470 RETURN
- 4480 '
- 4490 '*************************************************************************
- 4500 '* INPUT DATE ROUTINE *
- 4510 '*************************************************************************
- 4520 '
- 4530 INPUTDATE:
- 4540 CLEARW 2:GOTOXY 10,1:PRINT "ENTER CURRENT MONTH AND YEAR ";
- 4550 LINE INPUT "(AS MONTH,YEAR) ";MY$
- 4560 IF LEN(MY$)<8 OR LEN(MY$)>10 THEN 4610
- 4570 FOR Z=1 TO 12
- 4580 READ MN$
- 4590 IF MN$=LEFT$(MY$,3) THEN 4620
- 4600 NEXT Z
- 4610 CLEARW 2:GOTOXY 24,1:PRINT "'";MY$;"' IS AN INVALID DATE!!!"
- 4620 MN=Z:RESTORE:YM=VAL(RIGHT$(MY$,4))+MN/100
- 4630 RETURN
- 4640 '
- 4650 '*************************************************************************
- 4660 '* BOND SUMMARY ROUTINE *
- 4670 '*************************************************************************
- 4680 '
- 4690 BONDSUM:
- 4700 CLEARW 2:GOTOXY 30,7:PRINT "NOW READING FILE"
- 4710 OPEN "R",#1,FILENAME$,47
- 4720 FIELD #1,10 AS D$,2 AS T$,5 AS C$,15 AS N$,5 AS A$,10 AS M$
- 4730 FOR R=1 TO LOF(1)
- 4740 GET #1,R
- 4750 FOR D=1 TO 12
- 4760 READ MO$
- 4770 IF MO$=LEFT$(D$,3) THEN 4790
- 4780 NEXT D
- 4790 RESTORE
- 4800 JD=VAL(RIGHT$(M$,4))+(D/100)
- 4810 FV=FV+VAL(A$)
- 4820 IF T$="E " THEN EN=EN+1:V=V+VAL(A$)
- 4830 IF T$="EE" THEN EE=EE+1:EV=EV+VAL(A$)
- 4840 IF JD<=YM THEN MB=MB+1:MV=MV+VAL(A$)
- 4850 NEXT R
- 4860 CLOSE #1:RETURN
- 4870 '
- 4880 '*************************************************************************
- 4890 '* NEWPAGE ROUTINE *
- 4900 '*************************************************************************
- 4910 '
- 4920 NEWPAGE:
- 4930 LPRINT:LPRINT:LPRINT
- 4940 GOSUB HEADINGS
- 4950 RETURN
- 4960 '
- 4970 '*************************************************************************
- 4980 '* HEADINGS SUBROUTINE *
- 4990 '*************************************************************************
- 5000 '
- 5010 HEADINGS:
- 5020 PAGENO=PAGENO+1
- 5030 LPRINT TAB(7);CHR$(27);"W1";CHR$(27);"E";"PRINTOUT OF FILE NAMED ";
- 5040 LPRINT FILENAME$:LPRINT CHR$(27);"W0";
- 5050 LPRINT TAB(31);"(AS OF ";MY$;")";TAB(73);"PAGE";PAGENO:LPRINT CHR$(27);"F"
- 5060 LPRINT TAB(16);"BOND";TAB(26);"ORIGINAL";TAB(59);"FACE"
- 5070 LPRINT CHR$(27);"D";CHR$(15);CHR$(27);CHR$(39);CHR$(58);CHR$(68);CHR$(0);
- 5080 LPRINT CHR$(27);"-1";"DATE ISSUED";CHR$(9);"TYPE";CHR$(9);"COST";
- 5090 LPRINT CHR$(9);"BOND NUMBER";CHR$(9);"VALUE";CHR$(9);"DATE MATURE"
- 5100 LPRINT CHR$(27);"-0";CHR$(27)"@":PL=6
- 5110 RETURN
- 5120 '
- 5130 '*************************************************************************
- 5140 END
- ə