10 REM POKE 3,&HD7 'ENABLE PRINTER 20 LPRINT CHR$(27);CHR$(64);'RESETS PRINTER 30 '******************** INVOICE ************************* 40 REM G.A.STEVENS DECEMBER 1981. 50 REM TO PRODUCE FORMATTED INVOICES FOR `REDIFORM' VAT INVOICE/DELIVERY 4 PART FORMS TYPE RS304 60 ' PRODUCED ON MIMI 802G UNDER CP/M USING EPSON MX80FT/2 WRITTEN USING MBASIC ISSUE 5.2 70 REM 80 REM 90 REM MAY BE ADAPTED FOR OTHER BUSINESSES BY CHANGING THE 100 REM THE FORMATTING DETAILS STARTING AT LINE 2710. 110 REM CONTROL CODES WILL NEED TO BE CHANGED FOR USE 120 REM WITH OTHER TYPES OF PRINTER. 130 REM 140 REM 150 REM 160 REM 170 REM START OF PROGRAMME 180 PRINT CHR$(26) 190 PRINT "INSERT INVOICE BLANK & TURN ON PRINTER (PRESS ANY KEY TO CONTINUE)" 200 A$=INKEY$:IF A$="" THEN 200 210 PRINT CHR$(26) 220 CLEAR 230 D$="DELIVERY ADDRESS" 240 REM 1-499 MENU OPTION 250 PRINT" SELECT OPTION" 260 PRINT :PRINT 270 PRINT "1 FIND COMPANY" 280 PRINT "2 LIST ALL COMPANIES" 290 PRINT "3 ADD NEW COMPANY" 300 PRINT "4 AMEND COMPANY DETAILS" 310 PRINT "5 DELETE COMPANY" 320 PRINT "6 `ONE OFF' DELIVERY (NOT STORED)" 330 PRINT "7 EXIT" 340 PRINT : PRINT 350 INPUT " PLEASE INPUT MENU OPTION NUMBER ",MENU 360 PRINT CHR$(26) 370 ON MENU GOTO 400,400,970,400,400,1410,4160 380 ' 390 REM 400 '************** ACCESS FILE & SEARCH FOR COMPANY DETAILS ************ 410 CLOSE:FILEND=0 420 PRINT CHR$(26) 430 ON ERROR GOTO 910 440 IF MENU<>2 THEN INPUT "NAME OF COMPANY ";REQNAM$ 450 PRINT CHR$(26) 460 OPEN "I",#1,"INVOICE" 470 IF EOF(1) THEN GOTO 950 480 IF EOF(1) THEN CLOSE: FILEND=1 490 IF MENU=1 AND FILEND=1 THEN GOTO 880 500 IF MENU=2 AND FILEND=1 THEN PRINT "END OF FILE - RETURN TO MENU ?":GOTO 520 510 GOTO 530 520 A$=INKEY$:IF A$="" THEN 520 ELSE 210 530 LINE INPUT #1,CONAME$ 540 LINE INPUT #1,AD1$ 550 LINE INPUT #1,AD2$ 560 LINE INPUT #1,AD3$ 570 LINE INPUT #1,AD4$ 580 LINE INPUT #1,AD5$ 590 LINE INPUT #1,DELAD$ 600 IF MENU=2 THEN 610 610 IF MENU=1 AND FILEND=1 THEN 880 620 IF NOCOM=1 THEN GOTO 880 630 IF MENU<>2 AND REQNAM$<>LEFT$(CONAME$,LEN(REQNAM$)) THEN 470 640 IF MENU>3 THEN MOD1$=CONAME$:MOD2$=AD1$:MOD3$=AD2$:MOD4$=AD3$:MOD5$=AD4$ :MOD6$=AD5$:MOD7$=DELAD$ 650 PRINT TAB(30) CONAME$ 660 PRINT TAB(30) AD1$ 670 PRINT TAB(30) AD2$ 680 PRINT TAB(30) AD3$ 690 PRINT TAB(30) AD4$ 700 PRINT TAB(30) AD5$ 710 PRINT 720 IF DELAD$<>" " THEN PRINT D$;TAB(30) DELAD$ 730 PRINT:PRINT 740 IF MENU=4 THEN PRINT "IS THE ABOVE THE COMPANY TO BE AMENDED ?" 750 IF MENU=4 THEN GOSUB 4080 760 IF YN$="Y" AND MENU=4 THEN 970 770 IF MENU=5 THEN PRINT "IS THE ABOVE THE COMPANY TO BE DELETED ?" 780 IF MENU=5 THEN GOSUB 4080 790 IF YN$="Y" AND MENU=5 THEN 970 800 IF MENU=2 THEN PRINT "NEXT ? ":PRINT:PRINT 810 IF MENU=2 THEN K$=INKEY$ : IF K$="" THEN 810 820 IF MENU=2 THEN PRINT CHR$(26):GOTO 480 830 IF MENU=1 THEN PRINT "IS THE ABOVE CORRECT ?" 840 GOSUB 4080 850 IF YN$="Y" THEN 1710 860 IF YN$="N" THEN PRINT CHR$(26):GOTO 470 870 PRINT CHR$(26): GOTO 830 880 PRINT CHR$(26) 890 CLOSE 900 PRINT " COMPANY NOT LISTED - PLEASE INPUT FULL DETAILS": GOTO 970 910 IF ERR=53 AND ERL=460 THEN NOCOM=1: RESUME 880 920 IF ERR=62 AND ERL=530 THEN CLOSE : FILEND=1 : RESUME 500 930 CLOSE 940 ON ERROR GOTO 0 950 CLOSE:PRINT:PRINT" END OF FILE - COMPANY NOT FOUND":PRINT:PRINT:PRINT:GOTO 220 960 REM 970 '****************** ADDING/DELETING ROUTINE ************************* 980 CLOSE: PRINT :PRINT : PRINT 990 IF MENU<>4 THEN 1220 1000 PRINT "PLEASE INDICATE LINES TO BE AMENDED (INPUT`9' TO EXIT)" 1010 PRINT:PRINT 1020 PRINT "LINE 1 ";MOD1$ 1030 PRINT "LINE 2 ";MOD2$ 1040 PRINT "LINE 3 ";MOD3$ 1050 PRINT "LINE 4 ";MOD4$ 1060 PRINT "LINE 5 ";MOD5$ 1070 PRINT "LINE 6 ";MOD6$ 1080 PRINT "LINE 7 ";MOD7$ 1090 PRINT:PRINT 1100 INPUT "ERRONIOUS LINE NUMBER ";ELN 1110 IF ELN>9 OR ELN=8 THEN 970 1120 IF ELN=9 THEN 1220 1130 INPUT "CORRECT DETAILS ";CD$:IF CD$="" THEN CD$=CHR$(32) 1140 IF ELN=1 THEN CONAME$=CD$ ELSE CONAME$=MOD1$ 1150 IF ELN=2 THEN AD1$=CD$ ELSE AD1$=MOD2$ 1160 IF ELN=3 THEN AD2$=CD$ ELSE AD2$=MOD3$ 1170 IF ELN=4 THEN AD3$=CD$ ELSE AD3$=MOD4$ 1180 IF ELN=5 THEN AD4$=CD$ ELSE AD4$=MOD5$ 1190 IF ELN=6 THEN AD5$=CD$ ELSE AD5$=MOD6$ 1200 IF ELN=7 THEN AD6$=CD$ ELSE AD6$=MOD7$ 1210 GOTO 1100 1220 ON ERROR GOTO 1670 1230 OPEN "I",#1,"INVOICE" 1240 REM IF FILE EXISTS,WRITE IT TO `COPY' 1250 OPEN "O",#2,"COPY" 1260 IF EOF(1) THEN 1310 1270 LINE INPUT#1,A$ 1280 IF MENU>3 AND A$=MOD1$ OR A$=MOD2$ OR A$=MOD3$ OR A$=MOD4$ OR A$=MOD5$ OR A$=MOD6$ OR A$=MOD7$ THEN 1300 1290 PRINT#2,A$ 1300 GOTO 1260 1310 CLOSE #1 1320 KILL"INVOICE" 1330 IF DEL=2 THEN 1630 1340 IF MENU=5 THEN 1630 1350 REM ADD NEW ENTRIES TO FILE 1360 PRINT CHR$(26) 1370 IF DEL=1 THEN PRINT"PLEASE INPUT AMENDED DETAILS OF COMPANY":DEL=0:PRINT:PRINT:GOTO 1420 1380 IF MENU=5 THEN 1630 1390 IF MENU=4 THEN 1540 1400 PRINT "DETAILS OF COMPANIES TO BE ADDED TO FILE":PRINT:PRINT 1410 IF MENU=6 THEN PRINT CHR$(26) 1420 LINE INPUT "COMPANY NAME ",CONAME$ 1430 IF CONAME$="" THEN 1630 1440 LINE INPUT "ADDRESS LINE 1 ",AD1$:IF AD1$="" THEN AD1$=CHR$(32) 1450 LINE INPUT "ADDRESS LINE 2 ",AD2$:IF AD2$="" THEN AD2$=CHR$(32) 1460 LINE INPUT "ADDRESS LINE 3 ",AD3$:IF AD3$="" THEN AD3$=CHR$(32) 1470 LINE INPUT "ADDRESS LINE 4 ",AD4$:IF AD4$="" THEN AD4$=CHR$(32) 1480 LINE INPUT "ADDRESS LINE 5 ",AD5$:IF AD5$="" THEN AD5$=CHR$(32) 1490 LINE INPUT "DELIVERY ADDRESS (IF DIFFERENT) ",DELAD$:IF DELAD$="" THEN DELAD$=CHR$(32) 1500 IF MENU=6 THEN PRINT:PRINT:PRINT "IS THE ABOVE CORRECT ? ":GOSUB 4080 1510 IF MENU=6 AND YN$="Y" THEN 1710 1520 IF MENU=6 AND YN$="N" THEN 1410 1530 IF MENU=6 THEN 1500 1540 PRINT#2,CONAME$ 1550 PRINT#2, AD1$ 1560 PRINT#2, AD2$ 1570 PRINT#2, AD3$ 1580 PRINT#2, AD4$ 1590 PRINT#2, AD5$ 1600 PRINT#2, DELAD$ 1610 IF DEL=1 THEN 1630 1620 IF DEL>0 THEN 1420 1630 CLOSE 1640 REM CHANGE FILENAME BACK TO "INVOICE" 1650 NAME "COPY" AS "INVOICE" 1660 IF MENU=3 AND CONAME$<>"" THEN CLOSE : GOTO 970 1670 IF ERR=53 AND ERL=1230 THEN OPEN "O",#2,"COPY":RESUME 1420 1680 CLOSE 1690 ON ERROR GOTO 0 1700 GOTO 210 1710 '*************** SELECTING PRODUCTS FOR INVOICING ****************** 1720 DIM PROD$(25),QUANT(9),PRICE(9),SERNO(9),REPNO$(9),REPNOS$(9) 1730 DIM PRD$(25) 1740 GOTO 1840 1750 REM CRT INVERT S/R 1760 INV$="" 1770 FOR R = 1 TO LEN(PROD$) 1780 V$=MID$(PROD$,R,1) 1790 IF ASC(V$)>31 AND ASC(V$)<126 THEN V$=CHR$(128+ASC(V$)) 1800 INV$=INV$+V$ 1810 NEXT 1820 V$="" 1830 RETURN 1840 PRINT CHR$(26) 1850 LINITM=0 1860 PROD$(0)="NON STANDARD - TO BE SPECIFIED" 1870 PROD$(1)="Flashmeter FM-1" 1880 PROD$(2)="Photometer timer PT-250" 1890 PROD$(3)="Enlarger timer SST-250" 1900 PROD$(4)="Analogue timer" 1910 PROD$(5)="3 Pin plug" 1920 PROD$(6)="4 Pin plug" 1930 PROD$(7)="Diffuser" 1940 PROD$(8)="Relay box" 1950 PROD$(9)="Digital timer" 1960 PROD$(10)="PEC assy.D5945" 1970 PROD$(11)="PSU module.D5946" 1980 PROD$(12)="Digital PCB.D5947" 1990 PROD$(13)="Analogue PCB.D5948" 2000 PROD$(14)="Plug-in module.D5949" 2010 PROD$(15)="Pot assy.D5959" 2020 PROD$(16)="Multi-prog module .D5995" 2030 REM 2040 REM 2050 REM 2060 REM 2070 REM 2080 REM 2090 REM 2100 REM 2110 PROD$(25)="" 2120 PRODNUM=0 2130 IF PROD$(PRODNUM)="" THEN 2150 2140 PRODNUM=PRODNUM+1:GOTO 2130 2150 N=25:PRODCD$="" 2160 FOR P =0 TO PRODNUM-1 2170 IF P=N THEN PROD$=PROD$(P):GOSUB 1750 2180 IF P=N THEN PRD$(P)=INV$ 2190 IF PRD$(P)="" THEN PRD$(P)=PROD$(P) 2200 PRINT P;TAB(10) PRD$(P) 2210 NEXT 2220 LINITM=LINITM+1 2230 PRINT:PRINT 2240 INPUT" PLEASE SELECT REQUIRED ITEM NUMBER (PRESS `RETURN' ONLY TO EXIT) ",N$ 2250 PRINT CHR$(26) 2260 IF LEN(N$)=0 THEN 2500 2270 N=VAL(N$):IF ASC(N$)>57 OR ASC(N$)<48 THEN 2240 2280 IF N=0 THEN INPUT "PLEASE INPUT DESCRIPTION OF ITEM...", PROD$(PRODNUM) 2290 IF N=0 THEN N=PRODNUM:PRODNUM=PRODNUM+1 2300 PRINT CHR$(26) 2310 PRINT PROD$(N):PRINT:PRINT 2320 IF N>0 AND LEN(PRODCD$)>9 THEN PRINT "MAXIMUM OF 9 LINE ITEMS PER INVOICE": N=25:PRINT:PRINT:GOTO 2160 2330 PRODCD$=PRODCD$+CHR$(N+100) 2340 INPUT "QUANTITY ON INVOICE ",QUANT(LINITM) 2350 PRINT:PRINT 2360 INPUT "UNIT PRICE (DECIMAL #) ",PRICE(LINITM) 2370 PRICE(LINITM)=INT((100*PRICE(LINITM))+.5)/100 2380 PRINT:PRINT 2390 IF PRICE(LINITM)=0 THEN PRINT "ARE THE ABOVE REPAIRS ?" 2400 IF PRICE(LINITM)=0 THEN GOSUB 4080 2410 IF PRICE(LINITM)=0 AND YN$="Y" THEN PRINT:PRINT:LINE INPUT "PLEASE ENTER REPAIR NOTE NUMBERS ",REPNO$(LINITM):PRINT:PRINT 2420 IF PRICE(LINITM)=0 AND YN$="Y" THEN REP$(LINITM)="YES" 2430 PRINT:PRINT 2440 IF N=16 THEN 2460 2450 IF N<10 OR N>13 THEN 2470 2460 INPUT "INITIAL SER. NO. ",SERNO(LINITM) 2470 PRINT CHR$(26) 2480 REPNOS$=REPNOS$+REPNO$(LINITM) 2490 GOTO 2160 2500 REM 2510 LINE INPUT "DATE OF INVOICE ",INVDAT$ 2520 PRINT:PRINT 2530 LINE INPUT "DATE OF DELIVERY (IF DIFFERENT) ",DELDAT$ 2540 IF DELDAT$="" THEN DELDAT$=INVDAT$ 2550 PRINT:PRINT 2560 LINE INPUT "ORDER NUMBER ",ORDNUM$ 2570 PRINT:PRINT 2580 INPUT "INPUT VAT RATE (RETURN ONLY GIVES 15%) ",VAT$ 2590 IF VAT$="" THEN VAT=15 ELSE VAT=VAL(VAT$) 2600 VAT=VAT/100 2610 PRINT:PRINT 2620 PRINT "IS PAYMENT BY:-" TAB(40) "1 ACCOUNT" TAB(40) "2 CASH WITH ORDER" TAB(40) "3 CREDIT SALE" 2630 PRINT:PRINT:INPUT " ";ACCT 2640 IF ACCT<1 OR ACCT>3 THEN PRINT:GOTO 2620 2650 PRINT:PRINT 2660 PRINT "ARE THE ABOVE DETAILS CORRECT ?" 2670 GOSUB 4080 2680 PRINT CHR$(26) 2690 IF YN$="Y" THEN 2710 ELSE 2500 2700 PRINT:GOTO 2660 2710 '******************* FORMATTING & PRINTING INVOICE ***************** 2720 WIDTH LPRINT 123 2730 LPRINT CHR$(27)+"P";'PRINTS COMPRESSED CHARACTERS 2740 LPRINT CHR$(27)+"G";'SETS DOUBLE STRIKE MODE ON PRINTER 2750 GOTO 2780:REM AVOIDING LINE SPACE S/R 2760 LNSPC$=CHR$(27)+CHR$(65)+CHR$(SPACE) 2770 RETURN 2780 REM 2790 SPACE=14 2800 GOSUB 2760 2810 LPRINT :LPRINT 2820 LPRINT TAB(10) "TO:-" TAB(20) CONAME$ TAB(75) "FROM:-" TAB(85) "MASSODAX LTD." 2830 LPRINT TAB(20) AD1$ TAB(85) "84 KINGS ROAD" 2840 LPRINT TAB(20) AD2$ TAB(85) "BERKHAMSTED" 2850 LPRINT TAB(20) AD3$ TAB(85) "HERTS. HP4 3BP." 2860 LPRINT TAB(20) AD4$ TAB(85) 2870 LPRINT TAB(20) AD5$ TAB(85) "REGD.NO. 1240109" 2880 IF DELAD$<>" " THEN LPRINT TAB(10) "GOODS TO:-": LPRINT TAB(20) DELAD$ TAB(85) "VAT NO. 290 5205 72" 2890 IF DELAD$=" " THEN LPRINT:LPRINT TAB(85) "VAT NO. 290 5205 72" 2900 LPRINT CHR$(27);CHR$(56);'ENABLES PRINTER EVEN IF OUT OF PAPER 2910 LPRINT:LPRINT:LPRINT 2920 ' TABXXX= TABS TO CENTRE DATES & ORDER NOS> UNDER HEADINGS 2930 TABORD=20-INT(LEN(ORDNUM$)/2+.5) 2940 TABDDT=48-INT(LEN(DELDAT$)/2+.5) 2950 TABIVD=75-INT(LEN(INVDAT$)/2+.5) 2960 LPRINT TAB(TABORD) ORDNUM$ TAB(TABDDT) DELDAT$ TAB(TABIVD) INVDAT$ 2970 LPRINT LNSPC$ CHR$(32) 2980 SPACE=30:GOSUB 2760 2990 LPRINT 3000 SPACE=24:GOSUB 2760 3010 ON ERROR GOTO 3260 3020 LINITM=0 3030 LPRINT CHR$(27);CHR$(50)'SETS PRINTER TO 6 LINES/INCH 3040 LINITM=LINITM+1 3050 SERNOS$="" 3060 SERHI=SERNO(LINITM)+QUANT(LINITM)-1 3070 IF SERNO(LINITM)>0 THEN SERNOS$=" S/N's"+STR$(SERNO(LINITM))+" TO"+ STR$(SERHI) 3080 IF SERNOS$="" AND REP$(LINITM)="YES" THEN SERNOS$="REPAIRS - NO CHARGE" 3090 TOT=INT(100*QUANT(LINITM)*PRICE(LINITM)+.5)/100 3100 TOT#=INT(TOT):TOTD=INT(100*(TOT-TOT#)+.5) 3110 PRODNUM=ASC(MID$(PRODCD$,LINITM,1))-100 3120 N=PRICE(LINITM):GOSUB 3890 3130 PRICE$(LINITM)=N$ 3140 N=TOTD: GOSUB 3840 3150 TOTD$=N$ 3160 N=TOT#: GOSUB 4000 3170 TOTP$=N$ 3180 N=QUANT(LINITM):GOSUB 4000 3190 QUANT$(LINITM)=N$ 3200 LPRINT TAB(10) QUANT$(LINITM) TAB(25) PROD$(PRODNUM) TAB(60) SERNOS$ TAB(98) PRICE$(LINITM) TAB(110) TOTP$ TAB(120) TOTD$ 3210 LPRINT 3220 TOTINV#=INT(TOTINV):TOTINVD=TOTINV-TOTINV# 3230 TOTINV=TOTINV+(TOT#+TOTD/100) 3240 SERNO=0:TOT=0 3250 IF LINITM<9 THEN 3040 3260 IF (ERR=5) AND (ERL=3110) AND REPNOS$<>"" THEN 3710 3270 IF (ERR=5) AND (ERL=3110) AND REPNOS$="" THEN LPRINT LNSPC$ CHR$(32): RESUME 3240 3280 ON ERROR GOTO 0 3290 TOTINV#=INT(TOTINV):TOTINVD=INT(100*(TOTINV-TOTINV#)+.5) 3300 IF LEFT$(CONAME$,7)="DE VERE" OR ACCT=2 THEN DISCOUNT$="NO" 3310 IF TOTINV<20 THEN DISCOUNT$="NO" 3320 IF DISCOUNT$="NO" THEN VATAMT=TOTINV*VAT ELSE VATAMT=TOTINV*VAT*.95 3330 VATAMT=INT((VATAMT*100)+.5)/100 3340 VATAMT#=INT(VATAMT):VATAMTD=INT(100*(VATAMT-VATAMT#)+.5) 3350 VTINV=TOTINV+VATAMT 3360 VTINV#=INT(VTINV):VTINVD=INT(100*(VTINV-VTINV#)+.5) 3370 DSCT=INT((TOTINV*100*.05)+.5)/100 3380 N=DSCT:GOSUB 3890 3390 DSCT$=N$ 3400 DISC$="FOR PAYMENT WITHIN 7 DAYS DEDUCT "+DSCT$+" FROM AMOUNT DUE." 3410 TERMS1$="OTHERWISE NET 28 DAYS" 3420 TERMS2$="TERMS NET 28 DAYS" 3430 N=VTINV 3440 GOSUB 3890 3450 VTINV$=N$ 3460 CASHREC$="CHEQUE RECEIVED TO THE VALUE OF "+VTINV$ 3470 IF DISCOUNT$="NO" THEN VATAMT=TOTINV*VAT ELSE VATAMT=TOTINV*VAT*.95 3480 VTINV=TOTINV+VATAMT 3490 IF DISCOUNT$="NO" THEN DISC$="" 3500 IF ACCT=2 THEN DISC$=CASHREC$ 3510 N=TOTINV#:GOSUB 4000 3520 TOTINVP$=N$ 3530 N=TOTINVD:GOSUB 3840 3540 TOTINVD$=N$ 3550 LPRINT TAB(25)DISC$ TAB(110) TOTINVP$ TAB(120) TOTINVD$ 3560 IF DISCOUNT$="NO" THEN TMS$=TERMS2$ ELSE TMS$=TERMS1$ 3570 IF ACCT=2 THEN TMS$="" 3580 N=VATAMT#:GOSUB 4000 3590 VATAMTP$=N$ 3600 N=VATAMTD:GOSUB 3840 3610 VATAMTD$=N$ 3620 LPRINT TAB(45) TMS$ TAB(101) (100*VAT) TAB(110) VATAMTP$ TAB(120) VATAMTD$ 3630 N=VTINV#:GOSUB 4000 3640 VTINVP$=N$ 3650 N=VTINVD:GOSUB 3840 3660 VTINVD$=N$ 3670 LPRINT TAB(110) VTINVP$ TAB(120) VTINVD$ 3680 LPRINT CHR$(27)+"@" 3690 END 3700 REPLN=1 3710 REM PRINTING REPAIR NOS. 3720 LPRINT CHR$(27);CHR$(49) 3730 REPNOS$="REP.NOS:- "+REPNOS$ 3740 RPLEN=1+INT((LEN(REPNOS$)+1)/65) 3750 FOR REPLN=0 TO RPLEN 3760 LPRINT TAB(25) MID$(REPNOS$,(65*REPLN+1),65) 3770 LPRINT:LPRINT 3780 NEXT 3790 REPNOS$="" 3800 GOTO 3810 3810 ' 3820 LINITM=LINITM+RPLEN 3830 RESUME 3240 3840 REM S/R TO PRINT ALL PENCE VALUES TO TWO SIG.FIGS. 3850 N$=STR$(N) 3860 N$=RIGHT$(N$,(LEN(N$)-1)) 3870 IF N<10 THEN N$=CHR$(48)+N$ 3880 RETURN 3890 REM S/R TO `NEATIFY' CASH (# XX.YY) FIGURES 3900 N$=STR$(N) 3910 IF N=INT(N) THEN N$=N$+".00" 3920 IF MID$(N$,(LEN(N$)-1),1)="." THEN N$=N$+"0" 3930 N$=RIGHT$(N$,(LEN(N$)-1)) 3940 IF N<1 AND N>0 THEN N$="0"+N$ 3950 FOR C= 1 TO 6-LEN(N$) 3960 N$=CHR$(32)+N$ 3970 NEXT 3980 N$="#"+N$ 3990 RETURN 4000 REM S/R TO ALIGN # FIGURES 4010 N$=STR$(N) 4020 N$=RIGHT$(N$,(LEN(N$)-1)) 4030 IF N<1 AND N>0 THEN N$="0"+N$ 4040 FOR C = 1 TO 5-LEN(N$) 4050 N$=CHR$(32)+N$ 4060 NEXT 4070 RETURN 4080 ' Y/N SUBROUTINE 4090 YN$=INKEY$:IF YN$="" THEN 4090 4100 IF YN$="y" THEN YN$="Y" 4110 IF YN$="n" THEN YN$="N" 4120 IF YN$<>"Y" AND YN$<>"N" THEN 4090 4130 RETURN 4140 REM 4150 REM 4160 END