home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG041.ARK / BMAINT.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  12KB  |  479 lines

  1.  
  2. REM    JIM'S VERSION OF WARD'S MAILING LIST MAINTENANCE PROGRAM
  3.  
  4. REM    11/05/77 ADD NOTIFY COMMAND
  5.  
  6. REM    01/16/78 ADD COMPUTER AND PHONE TO NOTIFY
  7.  
  8. REM    02/18/78 ADD PHONE DIALING FUNCTION USING \
  9.     TARBELL OUTPUT PORT AND RELAY+390 OHM RESISTOR \
  10.     ACROSS PHONE LINE
  11.  
  12. REM    4/1/78 PUT IN MUST.WRITE$ & MUST.UPDATE$ FLAGS
  13.  
  14. REM    4/2/78 MAKE 'NOTIFY' COMMAND PRINT ENTIRE PAGE
  15.  
  16. REM    9/2/79 CHANGE VALUES OF KB AND ABORT VARIABLES. \
  17.     ADD LOWER CASE COMMANDS TO COMMAND ROUTINE. \
  18.     ADD OPTION OF SPECIFYING FILE NAME AND SIZE. \
  19.     ADD CLEAR SCREEN FUNCTIONS FOR USE WITH ADM-3A. \
  20.     MODIFIED FOR USE BY AMATEUR RADIO CLUBS. \
  21.     THESE CHANGES, ADDITIONS, MODIFICATIONS BY JAMES K. MILLS.
  22.  
  23.     PRINT    CHR$(26); CHR$(0);
  24.     PRINT    "MAINT VERSION 1.8"
  25.     FILE.NAME$ = "BARSLIST"
  26.     FILE.SIZE = 512
  27.     REC.LENG = 128
  28.     KB = 5 :REM KEYBOARD INPUT
  29.     ABORT = 32  :REM PRESS SPACE BAR TO ABORT
  30.     FIELD.COUNT = 10 :REM # FIELDS IN RECORD
  31.     FILE FILE.NAME$(REC.LENG)
  32.     DIM FIELD.NAME$(FIELD.COUNT)
  33.     DIM RECORD$(FIELD.COUNT)
  34.     DIM MAC.COMD$(11)
  35. REM    READ FIELD NAMES
  36.     DATA SORT,CALL,NAME,STREET,CITY,ZIP,\
  37.         PHONE,CLASS,PAID,TYPE
  38.     FOR I = 1 TO FIELD.COUNT
  39.         READ FIELD.NAME$(I)
  40.     NEXT I
  41.     MUST.UPDATE$ = "N"
  42.     MUST.WRITE$ = "N"
  43.  
  44. REM    MAIN PROCESSING LOOP
  45.  
  46. 100    IF (INP(KB) AND 127) = ABORT THEN MAC.COUNT = 0
  47.     IF MAC.COUNT > 0 THEN 8100
  48.     INPUT "COMMAND--->";C$
  49.     IF C$="MACRO" THEN 8000
  50.     IF C$="macro" THEN 8000
  51. 110    IF C$="HELP" THEN 200
  52.     IF C$="help" THEN 200
  53.      IF LEFT$(C$,2)="C " THEN 1300
  54.     IF LEFT$(C$,2)="c " THEN 1300
  55.     IF C$="LIST" THEN 1400
  56.     IF C$="list" THEN 1400
  57.     IF C$="FREE" THEN PRINT FRE:GOTO 100
  58.     IF C$="free" THEN PRINT FRE:GOTO 100
  59.     IF C$="CANCEL" THEN 2100
  60.     IF C$="cancel" THEN 2100
  61.     IF C$="WRITE" THEN 1700
  62.     IF C$="write" THEN 1700
  63.     IF C$="VERIFY" THEN 2200
  64.     IF C$="verify" THEN 2200
  65.  
  66.     IF MUST.WRITE$ = "N" THEN 120
  67.     PRINT "RECORD MUST BE WRITTEN TO DISK"
  68.     PRINT "VALID COMMANDS:"
  69.     PRINT "HELP, VERIFY, FREE, C, CANCEL, LIST, WRITE"
  70.     GOTO 100
  71.  
  72. 120    IF C$="UPDATE" THEN GOSUB 9100:GOTO 100
  73.     IF C$="update" THEN GOSUB 9100:GOTO 100
  74.     IF MUST.UPDATE$ = "N" THEN 130
  75.     PRINT "MUST UPDATE OR CANCEL"
  76.     GOTO 100
  77.  
  78. 130    IF LEFT$(C$,5)="FIND " THEN 1000
  79.     IF LEFT$(C$,5)="find " THEN 1000
  80.     IF LEFT$(C$,5)="READ " THEN 1100
  81.     IF LEFT$(C$,5)="read " THEN 1100
  82.     IF LEFT$(C$,5)="DUMP " THEN 1200
  83.     IF LEFT$(C$,5)="dump " THEN 1200
  84.     IF LEFT$(C$,2)="? " THEN 1500
  85.      IF LEFT$(C$,2)="F " THEN 1600
  86.     IF LEFT$(C$,2)="f " THEN 1600
  87.     IF C$="ADD" THEN 1800
  88.     IF C$="add" THEN 1800
  89.     IF C$="ERASE" THEN 1900
  90.     IF C$="erase" THEN 1900
  91.     IF C$="CALL" OR C$="DIAL" THEN 2000
  92.     IF C$="call" OR C$="dial" THEN 2000
  93.     IF LEFT$(C$,7)="NOTIFY " THEN 9200
  94.     IF LEFT$(C$,7)="notify " THEN 9200
  95.     IF LEFT$(C$,6)="PURGE " THEN 9200
  96.     IF LEFT$(C$,6)="purge " THEN 9200
  97.     IF C$="END" THEN 9999
  98.     IF C$="end" THEN 9999
  99. 199    PRINT "INVALID COMMAND ";C$
  100.     MAC.COUNT = 0
  101.     GOTO 200
  102. REM    GIVE HELP
  103. 200    PRINT "SUBSTITUTE PROPER VALUES ";\
  104.         "FOR THOSE IN PARENTHESES."
  105.     PRINT "FIND (NAME)  SEE NOTE 1"
  106.     PRINT "READ (REC #)"
  107.     PRINT "DUMP (REC #)  SEE NOTE 1"
  108.     PRINT "C (FIELD NAME) (VALUE)  CHANGE"
  109.     PRINT "LIST"
  110.     PRINT "? (FIELD NAME) (VALUE) SEE NOTE 2"
  111.     PRINT "F (FIELD NAME) (VALUE) SEE NOTE 3"
  112.     PRINT "WRITE      RANDOMIZE AND WRITE (USE AFTER ADD)"
  113.     PRINT "ADD        ADD A NEW RECORD"
  114.     PRINT "CANCEL     CANCEL REQUIRED WRITE OR UPDATE"
  115.     PRINT "ERASE      ERASES CURRENT RECORD"
  116.     PRINT "FREE       HOW MUCH SPACE FREE IN MEM"
  117.     PRINT "DIAL       DIAL PHONE OF CURRENT RECORD"
  118.     PRINT "UPDATE     REWRITES CURRENT RECORD"
  119.     PRINT "PURGE YYDD PURGE FILE FOR A MONTH"
  120.     PRINT "NOTIFY YYDD PRINT EXPIRATION NOTIFICATIONS"
  121.     PRINT "END        END OF PROGRAM"
  122.     PRINT "NOTE 1:  PRESS DEL TO STOP"
  123.     PRINT "NOTE 2:  ? MATCHES STARTING IN COL. 1"
  124.     PRINT "NOTE 3:  F SCANS ENTIRE FIELD"
  125.     GOTO 100
  126. REM    FIND RECORD
  127. 1000    KEY$=MID$(C$,6,99)
  128.     GOSUB 8700
  129.     IF FLAG = 0 THEN\
  130.         PRINT "NO RECORD FOUND" :\
  131.         GOTO 100
  132.     GOSUB 9000
  133.     GOTO 100:    REM READ BY RECORD NUMBER
  134. 1100    KEY=VAL(MID$(C$,6,99))
  135.     IF KEY < 1 OR KEY > 512 THEN \
  136.         PRINT "INVALID KEY":GOTO 100
  137.     GOSUB 8800
  138.     IF FLAG = 1 THEN\
  139.         GOSUB 9000
  140.     GOTO 100
  141. REM DUMP FILE
  142. 1200    KEY=VAL(MID$(C$,6,99))
  143.     IF KEY<1 OR KEY>FILE.SIZE THEN \
  144.         PRINT "INVALID KEY":\
  145.         GOTO 100
  146. 1210    GOSUB 8800
  147.     IF FLAG = 1 THEN GOSUB 9000
  148.     IF (INP(KB) AND 127)=ABORT THEN 100
  149.     KEY = KEY + 1
  150.     IF KEY >FILE.SIZE THEN \
  151.          KEY = 1 :\
  152.         MAC.COUNT = 0
  153.     GOTO 1210
  154. REM    SCAN FILE FOR MATCHING FIELD
  155. 1300    GOSUB 8910
  156.     PRINT "FIELD WAS: ";RECORD$(FIELD.NO)
  157.     IF LEFT$(FIELD.VALUE$,1)="/" THEN 1320
  158.     RECORD$(FIELD.NO)=FIELD.VALUE$
  159. 1310    GOSUB 9000
  160.     IF MUST.WRITE$ = "N" THEN MUST.UPDATE$ ="Y"
  161.     GOTO 100
  162.     REM FIELD CHANGE BY CHAR SUBSTITUTION
  163. 1320    IF RIGHT$(FIELD.VALUE$,1)="/" THEN \
  164.         FIELD.VALUE$ = LEFT$(FIELD.VALUE$,\
  165.         LEN(FIELD.VALUE$)-1)
  166.     FIELD.VALUE$=MID$(FIELD.VALUE$,2,99)
  167.     FOR I=LEN(FIELD.VALUE$) TO 1 STEP -1
  168.     IF MID$(FIELD.VALUE$,I,1)="/" THEN \
  169.         FROM$=LEFT$(FIELD.VALUE$,I-1):\
  170.         TO$=MID$(FIELD.VALUE$,I+1,99)
  171.     NEXT I
  172.     TEMP$=RECORD$(FIELD.NO)
  173.     FOR I=1 TO LEN(TEMP$)-LEN(FROM$)+1
  174.     IF MID$(TEMP$,I,LEN(FROM$))=FROM$ THEN 1330
  175.     NEXT I
  176.     PRINT "NOT FOUND"
  177.     GOTO 100
  178. 1330    RECORD$(FIELD.NO)=""
  179.     IF I=1 THEN 1340
  180.     RECORD$(FIELD.NO)=LEFT$(TEMP$,I-1)
  181. 1340    RECORD$(FIELD.NO)=RECORD$(FIELD.NO)+TO$+\
  182.         MID$(TEMP$,I+LEN(FROM$),99)
  183.     GOTO 1310
  184.  
  185. REM    PRINT RECORD
  186. 1400    GOSUB 9000
  187.     GOTO 100
  188.  
  189. REM    SCAN FILE FOR VALUE
  190. 1500    FIND.FLAG = 0
  191. 1505    GOSUB 8910 :REM GET NO. ,VALUE
  192.     PRINT "SCANNING FROM ";\
  193.         KEY;"FOR ";FIELD$;\
  194.         "=";FIELD.VALUE$
  195.     NUMBER.SCANNED = 0
  196.     LENGTH = LEN(FIELD.VALUE$)
  197. 1510    NUMBER.SCANNED = NUMBER.SCANNED + 1
  198.     IF NUMBER.SCANNED = FILE.SIZE THEN\
  199.         PRINT "NOT FOUND":\
  200.         GOTO 100
  201.     IF (INP(KB) AND 127)=ABORT THEN 100
  202.     KEY=KEY+1
  203.     IF KEY>FILE.SIZE THEN\
  204.         KEY=1:\
  205.         MAC.COUNT = 0
  206.     GOSUB 8800
  207.     IF FLAG = 0 THEN 1510
  208.     PRINT KEY,RECORD$(FIELD.NO)
  209.     IF FIND.FLAG = 1 THEN 1550
  210.     IF LEFT$(RECORD$(FIELD.NO),LENGTH)\
  211.         =FIELD.VALUE$ THEN\
  212.         GOSUB 9000:\
  213.         GOTO 100
  214.     GOTO 1510
  215.     REM SCAN THE FIELD FOR THE VALUE
  216. 1550    TEMP$=RECORD$(FIELD.NO)
  217.     IF LENGTH > LEN(TEMP$) THEN 1510
  218.     FOR I=1 TO 1+LEN(TEMP$)-LENGTH
  219.     IF MID$(TEMP$,I,LENGTH)\
  220.         =FIELD.VALUE$ THEN\
  221.         GOSUB 9000:\
  222.         GOTO 100
  223.     NEXT I
  224.     GOTO 1510
  225. REM    FIND VALUE IN FILE FOR PARTICULAR FIELD
  226. 1600    FIND.FLAG = 1
  227.     GOTO 1505
  228. REM    RANDOMLY WRITE A RECORD
  229. 1700    KEY$=RECORD$(2)
  230.     GOSUB 8900 :REM CALCULATE KEY
  231. 1710    PRINT KEY
  232.     READ #1,KEY;FLAG
  233.     IF FLAG = 0 THEN\
  234.         GOSUB 9100:\
  235.         GOTO 100
  236.     KEY = KEY + 1
  237.     IF KEY > FILE.SIZE THEN \
  238.         KEY = 1 :\
  239.         MAC.COUNT = 0
  240.     IF (INP(KB) AND 127) = ABORT THEN 100
  241.     GOTO 1710
  242. REM    INPUT A NEW RECORD (ADD)
  243. 1800    FOR I=1 TO FIELD.COUNT
  244.     PRINT FIELD.NAME$(I);" ";
  245.     INPUT RECORD$(I)
  246.     IF RECORD$(I)="QUIT" THEN 100
  247.     NEXT I
  248.     GOSUB 9000
  249.     MUST.WRITE$ = "Y"
  250.     GOTO 100
  251. REM    ERASE A RECORD
  252. 1900    IF KEY < 1 OR KEY > FILE.SIZE THEN 199
  253.     PRINT #1,KEY;0,RECORD$(2)
  254.     PRINT "DELETED"
  255.     GOTO 100
  256.  
  257. REM    DIAL A PHONE NUMBER
  258. 2000    IF FLAG=0 THEN \
  259.         PRINT "NO RECORD" :\
  260.         GOTO 100
  261.     PRINT "DIALING ";
  262.     OUT 108,1
  263.     FOR K=1 TO 300 : NEXT
  264.     S=1
  265.     IF LEN(PHONE$)<6 THEN 100
  266.     IF LEFT$(PHONE$,5)="(312)" THEN S=6
  267.     FOR I=S TO LEN(PHONE$)
  268.     D=ASC(MID$(PHONE$,I,1))
  269.     PRINT CHR$(D);
  270.     IF D >= ASC("0") AND D<= ASC("9") THEN \
  271.         GOSUB 2010
  272.     NEXT I
  273.     PRINT "    PICK UP PHONE"
  274.     FOR K=1 TO 300:NEXT K
  275.     OUT 108,0
  276.     GOTO 100
  277. 2010    D=D-48
  278.     IF D=0 THEN D=10
  279.     FOR J=1 TO D
  280.         OUT 108,0
  281.         FOR K=1 TO 7 : NEXT K
  282.         OUT 108,1
  283.         FOR K=1 TO 7 : NEXT K
  284.     NEXT J
  285.     FOR K=1 TO 100 : NEXT K
  286.     RETURN
  287.  
  288. REM    CANCEL MUST.UPDATE$ AND MUST.WRITE$
  289. 2100    MUST.UPDATE$ = "N"
  290.     MUST.WRITE$ = "N"
  291.     GOTO 100
  292.  
  293. REM    VERIFY A NEW RECORD
  294. 2200    FOR I=1 TO FIELD.COUNT
  295.     PRINT FIELD.NAME$(I);" ";
  296.     INPUT TEMP$
  297.     IF TEMP$="QUIT" THEN 100
  298.     IF LEN(TEMP$)<>LEN(RECORD$(I)) THEN 2210
  299.     IF TEMP$=RECORD$(I) THEN 2220
  300. REM    FIELD FAILED TO VERIFY
  301. 2210    PRINT "INVALID FIELD"
  302.     PRINT "ORIG: ";RECORD$(I)
  303.     PRINT "VER:  ";TEMP$
  304.     INPUT "KEEP OR CHANGE";C$
  305.     IF LEFT$(C$,1)="K" THEN 2220
  306.     IF LEFT$(C$,1)<>"C" THEN 2220
  307.     RECORD$(I)=TEMP$
  308. 2220    NEXT I
  309.     PRINT "VERIFIED"
  310.     GOTO 100
  311.  
  312. REM    INIT MACRO PROCESSING
  313. 8000    INPUT "NUMBER OF TIMES TO REPEAT";MAC.COUNT
  314.     FOR I=1 TO 10
  315.     INPUT "MACRO COMMAND";MAC.COMD$(I)
  316.     IF MAC.COMD$(I)="END" THEN 8010
  317.     NEXT I
  318.     MAC.COMD$(11)="END"
  319. 8010    INPUT "OK TO START";ANS$
  320.     IF LEFT$(ANS$,1)="Y" THEN \
  321.         MAC.NO = 1 :\
  322.         GOTO 100
  323. 8020    MAC.COUNT = 0
  324.     PRINT "MACRO ABORTED"
  325.     GOTO 100
  326. REM    MACRO COMMANDS
  327. 8100    C$=MAC.COMD$(MAC.NO)
  328.     MAC.NO = MAC.NO + 1
  329.     IF C$<>"END" THEN \
  330.         GOTO 110
  331.     MAC.COUNT = MAC.COUNT -1
  332.     IF MAC.COUNT = 0 THEN 8020
  333.     MAC.NO = 1
  334.     GOTO 8100
  335. REM    READ RECORD K$
  336. 8700    GOSUB 8900 :REM CALCULATE KEY
  337.     TRIES = 0 :REM ALLOW UP TO 100 TRIES
  338. 8710    GOSUB 8800
  339.     IF FLAG = 1 AND KEY$=NAME$ THEN RETURN
  340.     IF FLAG =1 THEN PRINT KEY;NAME$
  341.     TRIES = TRIES + 1
  342.     IF (INP(KB) AND 127)=ABORT THEN 8750
  343.     KEY = KEY + 1
  344.     IF KEY > FILE.SIZE THEN \
  345.         KEY = 1
  346.     IF TRIES < 100 THEN 8710
  347.     REM CAN'T FIND RECORD
  348. 8750    FLAG = 0 :REM SHOW NOT FOUND
  349.     RETURN
  350. REM    PHYSICAL READ RECORD # IN KEY
  351. 8800    READ #1,KEY;FLAG
  352.     IF FLAG=0 THEN RETURN
  353.     READ #1,KEY;\
  354.         FLAG,\
  355.         RECORD$(1),\
  356.         RECORD$(2),\
  357.         RECORD$(3),\
  358.         RECORD$(4),\
  359.         RECORD$(5),\
  360.         RECORD$(6),\
  361.         RECORD$(7),\
  362.         RECORD$(8),\
  363.         RECORD$(9),\
  364.         RECORD$(10)
  365. REM    SET VARIABLE NAMES FROM RECORD$(N)
  366. 8850    SORT$=RECORD$(1)
  367.     NAME$=RECORD$(2)
  368.     ORG$=RECORD$(3)
  369.     STREET$=RECORD$(4)
  370.     CITY$=RECORD$(5)
  371.     ZIP$=RECORD$(6)
  372.     PHONE$=RECORD$(7)
  373.     COM$=RECORD$(8)
  374.     PAID$=RECORD$(9)
  375.     TYPE$=RECORD$(10)
  376.     RETURN
  377. REM    KEY CALCULATING ROUTINE - INPUT IN KEY$
  378. 8900    KEY=0
  379.     FOR I=1 TO LEN(KEY$) 
  380.     KEY=2*KEY+(15 AND ASC(MID$(KEY$,I,1)))
  381.     NEXT I
  382.     KEY = KEY-FILE.SIZE*INT(KEY/FILE.SIZE)
  383.     KEY = INT(KEY+.1)
  384.     IF KEY = 0 THEN KEY = 1
  385.     PRINT "RANDOMIZED TO ";KEY
  386.     RETURN
  387. REM    EXTRACT FIELD NAME, VALUE FROM C$
  388. 8910    C$=MID$(C$,3,99)
  389.     BP=0
  390.     REM FIND BLANK AFTER FIELD NAME
  391.     FOR I=LEN(C$) TO 1 STEP -1
  392.     IF MID$(C$,I,1)=" " THEN BP=I
  393.     NEXT I
  394.     IF BP<2 THEN 199
  395.     BP=BP-1
  396.     FIELD$=LEFT$(C$,BP)
  397.     FIELD.NO = 0
  398.     FOR I=1 TO FIELD.COUNT
  399.     IF LEFT$(FIELD.NAME$(I),BP)=FIELD$ THEN\
  400.         FIELD.NO = I
  401.     NEXT I
  402.     IF FIELD.NO=0 THEN\
  403.         PRINT "NO SUCH FIELD ";FIELD$:\
  404.         GOTO 100
  405.     FIELD.VALUE$=MID$(C$,BP+2,99)
  406.     FIELD$=FIELD.NAME$(FIELD.NO)
  407.     RETURN
  408. REM    RECORD PRINT ROUTINE
  409. 9000    PRINT
  410.     PRINT "RECORD #";KEY;" ";RECORD$(1) :REM SORT
  411.     PRINT RECORD$(2) :REM NAME
  412.     PRINT RECORD$(3) :REM ORG
  413.     PRINT RECORD$(4) :REM STREET
  414.     PRINT RECORD$(5);" ";RECORD$(6)
  415.     PRINT RECORD$(7);";";\
  416.         RECORD$(8);";";\
  417.         RECORD$(9);";";\
  418.         RECORD$(10)
  419.     PRINT
  420.     RETURN
  421. REM    WRITE RECORD(KEY)
  422. 9100    IF KEY < 1 OR KEY > FILE.SIZE THEN\
  423.         PRINT "INVALID KEY FOR WRITE":\
  424.         GOTO 100
  425.     MUST.WRITE$="N":MUST.UPDATE$="N"
  426.     PRINT #1,KEY;1,RECORD$(1),\
  427.         RECORD$(2),\
  428.         RECORD$(3),\
  429.         RECORD$(4),\
  430.         RECORD$(5),\
  431.         RECORD$(6),\
  432.         RECORD$(7),\
  433.         RECORD$(8),\
  434.         RECORD$(9),\
  435.         RECORD$(10)
  436.     RETURN
  437.  
  438. REM    FILE PURGE OR NOTIFY BY DATE
  439. 9200    DEL.DATE$=MID$(C$,7,99)
  440.     IF LEFT$(C$,1)="N" THEN\
  441.          DEL.DATE$=MID$(DEL.DATE$,2,99)
  442.     PRINT:PRINT "TURN ON PRINTER."
  443.     INPUT"STARTING, ENDING RECORD";STARTING,ENDING
  444.     FOR I=STARTING TO ENDING
  445.     READ #1,I;FLAG
  446.     IF FLAG=0 THEN 9205
  447.     READ #1,I;FLAG,SO$,NA$,OR$,ST$,CI$,ZI$,PH$,CO$,PA$,TY$
  448.     IF PA$<>DEL.DATE$ THEN 9205
  449.     IF LEFT$(C$,1)="N" THEN 9220
  450.     PRINT "DELETED ";PA$;" ";NA$
  451.     FLAG=0
  452.     PRINT #1,I;FLAG,SO$,NA$,OR$,ST$,CI$,ZI$,PH$,CO$,PA$,TY$
  453. REM    CHECK FOR ABORT
  454. 9205    IF (INP(KB) AND 127)=ABORT THEN 100
  455. 9210    NEXT I
  456.     PRINT "END OF PURGE"
  457.     GOTO 100
  458. 9220    PRINT CHR$(14);"B.A.R.S."
  459.     PRINT "P. O. BOX 94864"
  460.     PRINT "SCHAUMBURG, IL  60194"
  461.     FOR C=1 TO 5:PRINT:NEXT C
  462.     PRINT TAB(20);NA$
  463.     PRINT TAB(20);OR$
  464.     PRINT TAB(20);ST$
  465.     PRINT TAB(20);CI$;" ";ZI$
  466.     FOR C=1 TO 34:PRINT:NEXT C
  467.     PRINT "YOUR MEMBERSHIP IN THE BOLINGBROOK AMATEUR ";\
  468.     "RADIO SOCIETY HAS AN EXPIRATION DATE (YYMM) OF "
  469.     PRINT PA$;".";"  TO RENEW, SEND $30 WITH THIS NOTE TO:"
  470.     PRINT
  471.     PRINT CHR$(14);"B.A.R.S."
  472.     PRINT "P. O. BOX 94864"
  473.     PRINT "SCHAUMBURG, IL  60194
  474.     PRINT:PRINT"IF YOU HAVE QUESTIONS, CALL THE SECRETARY:"
  475.     PRINT "JIM, WB9KFP AT 312-980-3228."
  476.     PRINT CHR$(12)
  477.     GOTO 9205
  478. 9999    END
  479.