5 DIM MAGSAM$(20),MAGSAM%(20)
10 GOTO 500
15 REM ********* PERMANENT SUBROUTINE TO PUT MAGSAM INTO OPERATION *********
20 REM
25 REM - MAGSAM FILE OPEN
30 OPEN "R",IFN%,FILE1$,256
35 OPEN "R",DFN%,FILE2$,256
40 OPEN "R",OFN%,FILE3$,256
45 RETURN
50 REM - SET MAGSAM KEYS
55 MAGSAM%(1) = IFN%:REM INDEX FILE NUMBER
60 MAGSAM%(2) = DFN%: REM DATA FILE NUMBER
65 MAGSAM%(3) = OFN%:REM OVERFLOW FILE NUMBER
70 MAGSAM%(4) = KL%: REM KEY LENGTH
75 MAGSAM$(1)=FUN$:REM FUNCTION CODE
80 MAGSAM$(2)=KEY$:REM KEY VALUE
85 MGFLAG = 0
87 RETURN
90 GOSUB 60000: REM INITIATE MAGSAM
95 REM - ERROR ROUTINES
100 IF MAGSAM%(8)<>0 THEN MGFLAG = 1: PRINT "ERROR ENCOUNTERED":PRINT "MAGSAM%(8) = ";MAGSAM%(8): RETURN
105 RETURN
110 REM - FIELD STATEMENT
115 FIELD #2, 25 AS FDTF$,8 AS FDTN$,12 AS FDTA$:RETURN
120 GET # MAGSAM%(2), MAGSAM%(9): REM GET DATA RECORD
130 RETURN
131 LSET FDTF$=DTF$:LSET FDTN$=DTN$:LSET FDTA$=DTA$:RETURN
135 REM - WRITE DATA RECORD
140 PUT MAGSAM%(2),MAGSAM%(9)
145 RETURN
150 REM - CLOSE ROUTINES
155 CLOSE IFN%,DFN%,OFN%
160 RETURN
165 KL%=5:KEY$="00001":IFN% = 1:DFN% = 2: OFN% = 3
170 FILE1$="B:DATE.I":FILE2$="B:DATE.DAT":FILE3$="B:DATE.O"
172 GOSUB 55
175 GOSUB 30
180 GOSUB 115
185 GOSUB 90
190 IF LEFT$(FUN$,1) = "R" THEN GOSUB 120
191 IF LEFT$(FUN$,1) = "W" THEN GOSUB 135
195 RETURN
500 REM 
510 REM------------ MASTER INDEX PROGRAM OF COMPUTER ROUTINES
520 REM 
530 REM----------------  OTHER THAN LETTERS AND FORMS
540 REM 
550 REM------------------- STORED AS "A:INDEX.BAS"
560 REM 
570 REM------------  USES ALL DATA FILES ON GENERAL DATA DISK
580 FUN$="RN":GOSUB 165
600 PRINT CHR$(27);"*"
610 PRINT :PRINT :PRINT :PRINT :PRINT :PRINT 
620 PRINT :PRINT :PRINT :PRINT 
630 PRINT TAB(E%+12) "LIFE ASSOCIATES, INC. INDEX OF COMPUTER ROUTINES"
640 PRINT TAB(D%+7) "Other Than Letters and Forms"
650 PRINT 
660 PRINT TAB(D%+4) "TODAY'S DATE IS "; FDTF$
680 PRINT TAB(D%+4) "UPDATE EACH MORNING BY TYPING IN 11"
700 PRINT TAB(10) "CLIENTS"
710 PRINT 
720 PRINT TAB(15) "1) Basic Information"
730 PRINT TAB(15) "2) Basic Information - Lists"
740 PRINT TAB(15) "3) Additional Information for Client Cards"
750 PRINT TAB(15) "4) Additional Information for Client Cards - Lists"
760 PRINT 
770 PRINT TAB(10) "PROSPECTS"
780 PRINT 
790 PRINT TAB(15) "5) Basic Information and Card Printing"
800 PRINT TAB(15) "6) Enter New Census or Add to Existing Census"
810 PRINT TAB(15) "7) Change an Employee's Census Data"
820 PRINT TAB(15) "8) Run Proposal"
830 PRINT :PRINT :PRINT 
840 R1% = 0
850 PRINT "Select the routine you wish to perform"
860 INPUT "Hit the RETURN  KEY for next page of the INDEX";R1%
870 IF R1% = 0 THEN PRINT CHR$(27);"*"
880 IF R1%<> 0 THEN GOTO 1220
890 GOSUB 110
900 PRINT TAB(10) "EMPLOYEE FILES"
910 PRINT 
920 PRINT TAB(14) "12) Produce Annual Reports"
930 PRINT TAB(14) "13) Create New or Add to an Existing Data File"
940 PRINT TAB(14) "14) Change An Employee's Data"
950 PRINT TAB(14) "15) Calculate Insurance Amounts on Anniversary"
960 PRINT TAB(14) "16) Obtain Listings from Employee Data Files"
970 PRINT TAB(14) "17) Annual Update (GRI Face & Old Contribution)"
980 PRINT TAB(14) "18) Locate Employees Reaching Postponed Retirement"
990 PRINT TAB(14) "19) Figure Accumulated Contributions for an Employee"
1000 PRINT :PRINT :PRINT :PRINT 
1010 R1% = 0
1020 PRINT "Select the routine you wish to perform"
1030 INPUT "Hit the RETURN  KEY for next page of the INDEX";R1%
1040 IF R1% = 0 THEN PRINT CHR$(27);"*"
1050 IF R1%<> 0 THEN GOTO 1220
1060 GOSUB 110
1070 PRINT TAB(10) "PREMIUM LOG - AUTHORITY & INDIVIDUAL"
1080 PRINT 
1090 PRINT TAB(14) "20) Record Monthly Payments By AUTHORITY"
1100 PRINT TAB(14) "21) Record Monthly Payments for EMPLOYEE"
1110 PRINT TAB(14) "22) Record Monthly Allocation to FIXED FUND"
1120 PRINT TAB(14) "24) Printout Log"
1130 PRINT TAB(14) "25) Annual Update to Zero Out All Entries"
1140 PRINT 
1150 PRINT TAB(10) "MISCELLANEOUS PROGRAMS"
1160 PRINT 
1170 PRINT TAB(14) "28) License Files"
1180 PRINT TAB(14) "27) Retirement Quote Letter"
1190 PRINT "Select the routine you wish to perform"
1200 INPUT "Hit the RETURN  KEY for next page of the INDEX";R1%
1210 IF R1% = 0 THEN GOTO 830
1220 ON R1% GOTO 1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1440,1450,1460,1470,1480,1490
1230 RUN "A:CLIFILE.BAS"
1240 RUN "A:CLISEAR.BAS"
1250 RUN "A:CARDFILE.BAS"
1260 RUN "A:CARDSEAR.BAS"
1270 RUN "A:PROSFILE.BAS"
1280 RUN "A:SAVECEN.BAS"
1290 RUN "A:CENCHA.BAS"
1300 RUN "A:RUNPRO.BAS"
1310 PRINT "NO SUCH OPTION":GOTO 840
1320 PRINT "NO SUCH OPTION":GOTO 840
1330 GOTO 1510
1340 RUN "A:ANLREP.BAS"
1350 RUN "A:EMPADD.BAS"
1360 RUN "A:EMPCHA.BAS"
1370 RUN "A:INSPUR.BAS"
1380 RUN "A:EMPSEAR.BAS"
1390 RUN "A:ANLUPDAT.BAS"
1400 RUN "A:PPRDATES.BAS"
1410 RUN "A:EMPCONTR.BAS"
1420 PRINT "NO SUCH OPTION":GOTO 840
1430 PRINT "NO SUCH OPTION":GOTO 840
1440 PRINT "NO SUCH OPTION":GOTO 840
1450 RUN "A:PREMLOG.BAS"
1460 RUN "A:PREMPRIN.BAS"
1470 RUN "A:PREMZERO.BAS"
1480 RUN "A:LICENSE.BAS"
1490 RUN "A:RETQUOTE.BAS"
1500 REM 
1510 REM ---------- SUBROUTINE TO UPDATE TODAYS DATE
1520 REM
1600 PRINT:PRINT:PRINT
1620 PRINT :PRINT :PRINT :PRINT :PRINT 
1630 PRINT CHR$(27);"*"
1640 PRINT TAB(D%) "Do You Wish to Change:  "
1650 PRINT TAB(D%+3) "1) The Day of the Month"
1660 PRINT TAB(D%+3) "2) The Month AND the Day of the Year"
1670 PRINT TAB(D%+3) "3) The Month, Day, and Year
1680 INPUT R2%
1681 DM$ = LEFT$(FDTF$,3)
1682 DY$ = RIGHT$(FDTF$,4)
1690 INPUT "What is the new Day of the month? ";DD$
1700 IF R2% = 2 OR R2% = 3 THEN INPUT "What is the correct month? ";DM$
1710 IF R2% = 3 THEN INPUT "What is the correct year? ";DY$
1711 FOR I = 1 TO LEN(DFT$)
1712 IF MID$(DFT$,I,1=" ",THEN DM$ = LEFT$(DTF$,I-1)
1713 NEXT I
1730 IF LEFT$(DM$,3) = "Jan" THEN DMN$ = "1" : DM$ = "January"
1740 IF LEFT$(DM$,3) = "Feb" THEN DMN$ = "2" : DM$ = "February"
1750 IF LEFT$(DM$,3) = "Mar" THEN DMN$ = "3" : DM$ = "March"
1760 IF LEFT$(DM$,3) = "Apr" THEN DMN$ = "4" : DM$ = "April"
1770 IF LEFT$(DM$,3) ="May"  THEN DMN$ = "5" : DM$ = "May"
1780 IF LEFT$(DM$,3) ="Jun"  THEN DMN$ = "6" : DM$ = "June"
1790 IF LEFT$(DM$,3) ="Jul"  THEN DMN$ = "7" : DM$ = "July"
1800 IF LEFT$(DM$,3) ="Aug"  THEN DMN$ = "8" : DM$ = "August"
1810 IF LEFT$(DM$,3) ="Sep"  THEN DMN$ = "9" : DM$ = "September"
1820 IF LEFT$(DM$,3) ="Oct"  THEN DMN$ = "10" : DM$ = "October"
1830 IF LEFT$(DM$,3) ="Nov"  THEN DMN$ = "11" : DM$ = "November"
1840 IF LEFT$(DM$,3) ="Dec"  THEN DMN$ = "12" : DM$ = "December"
1841 IF R2%=>2 AND VAL(DMN$)<1 THEN PRINT "MONTH NOT FOUND-TRY AGAIN":GOTO 1690
1845 DMA$ = LEFT$(DM$,3)
1850 DY1$ = RIGHT$(DY$,2)
1860 DTF$ = DM$+" "+DD$+", "+DY$
1870 DTN$ = DMN$+"/"+DD$+"/"+DY1$
1880 DTA$ = DMA$+"."+DD$+", "+DY$
1900 CLOSE
1940 FUN$="WL":GOSUB 131
1950 GOSUB 165
1990 GOTO 600
60000 REM MAGSAM III 4.2 - MULTI-KEYED FILE MANAGEMENT FOR CP/M AND MICROSOFT
60001 REM
60002 REM PROPRIETARY SOFTWARE OF:
60003 REM  MICRO APPLICATIONS GROUP
60004 REM  7300 CALDUS AVENUE
60005 REM  VAN NUYS, CA 91406
60006 REM
60007 REM (C) COPYRIGHT 1978, 1979, 1981 MAG 
60008 REM 
60009 MAGSAM$="(C) COPYRIGHT 1978, 1979, 1981 MICRO APPLICATIONS GROUP"
60010 MAGSAM%(8)=0:MAGSAM%(9)=0:MAGSAM%(10)=0:MAGSAM$(18)=""
60012 GOSUB 61900
60020 GOSUB 61450:GOSUB 60100
60022 IF MAGSAM%(8)<>0 THEN GOTO 60090
60024 GOSUB 60530
60026 IF MAGSAM%(8)<>0 THEN GOTO 60090
60028 IF MAGSAM$(1)="RK" THEN GOSUB 60230:GOTO 60090
60032 IF MAGSAM$(1)="RN" THEN GOSUB 60300:GOTO 60090
60034 IF MAGSAM$(1)="RG" THEN GOSUB 60340:GOTO 60090
60036 IF MAGSAM$(1)="WL" THEN GOSUB 60380:GOTO 60090
60038 IF MAGSAM$(1)="WA" THEN GOSUB 60410:GOTO 60090
60042 IF MAGSAM$(1)="DR" THEN GOSUB 61500:GOTO 60090
60044 IF MAGSAM$(1)="KD" THEN GOSUB 61500:GOTO 60090
60046 MAGSAM%(8)=41
60090 RETURN
60100 IF LEN(MAGSAM$(1))<>2 THEN GOTO 60210
60102 IF MAGSAM%(1)<1 OR MAGSAM%(1)>15 OR MAGSAM%(2)<1 OR MAGSAM%(2)>15 OR MAGSAM%(3)<1 OR MAGSAM%(3)>15 THEN GOTO 60210
60104 IF MAGSAM%(4)>110 THEN GOTO 60210
60106 IF MAGSAM$(1)="RN" THEN GOTO 60220
60108 IF MAGSAM%(4)=0 THEN GOTO 60210
60112 IF LEN(MAGSAM$(2))=MAGSAM%(4) THEN GOTO 60220
60210 MAGSAM%(8)=41
60220 RETURN
60230 MAGSAM%(0)=0:GOSUB 60260
60232 IF MAGSAM%(8)=0 THEN MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
60234 RETURN
60260 GOSUB 60840
60265 GOSUB 60850:GOSUB 60860:GOSUB 60870
60266 IF MAGSAM%(10)=0 THEN GOTO 60265
60268 IF MAGSAM%(10)<>99 THEN MAGSAM%(8)=51
60269 RETURN
60300 IF MAGSAM%(0)=0 THEN GOSUB 61320 ELSE GOSUB 61410
60302 RETURN
60340 MAGSAM%(0)=0:GOSUB 60260:MAGSAM%(8)=0
60342 IF MAGSAM%(10)=99 THEN GOSUB 61445 ELSE GOSUB 60300
60344 RETURN
60380 GOSUB 60600
60385 GOSUB 60620:MAGSAM%(17)=MAGSAM%(11):GOSUB 60750:GOSUB 60760:RETURN
60410 GOSUB 60600:GOSUB 60260
60412 IF MAGSAM%(10)=99 THEN MAGSAM%(8)=61:GOTO 60510
60414 MAGSAM%(8)=0
60416 IF MAGSAM%(10)=0 THEN MAGSAM%(8)=99:GOTO 60510
60418 IF MAGSAM%(10)=20 AND (MAGSAM%(17)=MAGSAM%(11) OR MAGSAM%(11)=0) THEN GOSUB 60385:GOTO 60510
60422 IF MAGSAM%(10)=20 THEN MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:GOSUB 60860
60424 IF MID$(MAGSAM$(12),(MAGSAM%(13)-1)*(MAGSAM%(4)+5)+2,MAGSAM%(4))="" THEN GOSUB 61120:GOTO 60500
60426 GOSUB 61060:GOSUB 61080:GOSUB 61090
60428 IF LEFT$(MAGSAM$(12),1)="I" THEN GOSUB 60750
60432 IF LEFT$(MAGSAM$(12),1)="O" THEN GOSUB 61310
60500 GOSUB 60760
60510 RETURN
60530 GET#MAGSAM%(1),1
60532 MAGSAM%(6)=CVI(MAGSAM.H04$):MAGSAM%(11)=CVI(MAGSAM.H05$)
60534 MAGSAM%(12)=CVI(MAGSAM.H06$):MAGSAM%(19)=CVI(MAGSAM.H07$)
60536 MAGSAM%(18)=CVI(MAGSAM.H08$)
60538 IF MAGSAM%(11)=0 THEN GOTO 60560
60542 IF MAGSAM%(4)<>MAGSAM%(6) THEN MAGSAM%(8)=41
60544 GOTO 60580
60560 MAGSAM%(10)=0:MAGSAM%(11)=0:MAGSAM%(12)=1:MAGSAM%(18)=0:MAGSAM%(19)=1
60562 GOSUB 60760
60580 MAGSAM%(13)=INT(249\(MAGSAM%(4)+5))-1
60582 RETURN
60600 IF MAGSAM$(18)="S" AND MAGSAM%(5)>=MAGSAM%(12) THEN MAGSAM%(9)=MAGSAM%(5):MAGSAM%(12)=MAGSAM%(5)+1:GOTO 60609
60602 IF MAGSAM$(18)="S" THEN MAGSAM%(9)=MAGSAM%(5):GOTO 60609
60604 IF MAGSAM%(18) = 0 THEN MAGSAM%(9)=MAGSAM%(12):MAGSAM%(12)=MAGSAM%(12)+1 ELSE GOSUB 61800
60609 MAGSAM$(10)=STR$(MAGSAM%(9))
60610 MAGSAM$(10)=RIGHT$(MAGSAM$(10),LEN(MAGSAM$(10))-1)
60612 MAGSAM$(10)=RIGHT$("0000"+MAGSAM$(10),4)	
60614 RETURN
60620 GOSUB 60790
60622 MAGSAM$(12)=MAGSAM$(12)+"I"+MAGSAM$(2)+MAGSAM$(10)
60624 RETURN
60750 LSET MAGSAM.I01$=MAGSAM$(12)
60752 PUT#MAGSAM%(1),MAGSAM%(17)
60754 RETURN
60760 LSET MAGSAM.I01$=""
60762 LSET MAGSAM.H01$="H":LSET MAGSAM.H02$=MKI$(256):LSET MAGSAM.H03$=MKI$(0)
60764 LSET MAGSAM.H04$=MKI$(MAGSAM%(4)):LSET MAGSAM.H05$=MKI$(MAGSAM%(11))
60766 LSET MAGSAM.H06$=MKI$(MAGSAM%(12)):LSET MAGSAM.H07$=MKI$(MAGSAM%(19))
60768 LSET MAGSAM.H08$=MKI$(MAGSAM%(18)):LSET MAGSAM.H09$=MKI$(0)
60772 LSET MAGSAM.H10$=MKI$(0):LSET MAGSAM.H11$=MKI$(0)
60774 PUT#MAGSAM%(1),1
60776 RETURN
60790 IF MAGSAM%(11)=0 THEN MAGSAM%(11)=1:GOTO 60820
60792 GET#MAGSAM%(1),MAGSAM%(11)
60794 MAGSAM$(12)=MAGSAM.I01$	
60796 GOSUB 61910
60798 IF LEN(MAGSAM$(12))<MAGSAM%(4)+6 THEN GOTO 60830
60802 MAGSAM%(14)=LEN(MAGSAM$(12))-(MAGSAM%(4)+3)
60804 IF MID$(MAGSAM$(12),(MAGSAM%(13)-1)*(MAGSAM%(4)+5)+2,MAGSAM%(4))="" AND MID$(MAGSAM$(12),MAGSAM%(14)-1,1)<>"O" THEN

 GOTO 60830
60820 MAGSAM%(11)=MAGSAM%(11)+1:MAGSAM$(12)="I"
60830 RETURN
60840 MAGSAM%(15)=2:MAGSAM%(16)=MAGSAM%(11):MAGSAM$(12)="":RETURN
60850 MAGSAM%(17)=INT((MAGSAM%(16)-MAGSAM%(15))\2)+MAGSAM%(15):RETURN
60860 GET#MAGSAM%(1),MAGSAM%(17)
60862 MAGSAM$(12)=MAGSAM.I01$
60864 GOSUB 61910
60866 RETURN
60870 MAGSAM%(14)=(MAGSAM%(13)-1)*(MAGSAM%(4)+5)+3
60872 IF MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))="" THEN GOTO 60875
60874 IF MAGSAM$(2)>MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5:GOTO 60950
60875 MAGSAM%(14)=3
60876 WHILE MAGSAM%(14) <= 249
60878 IF MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))="" THEN GOTO 60950
60882 IF MAGSAM$(2)>MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61020:GOTO 60940
60884 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="O" THEN GOTO 60955
60886 IF MAGSAM$(2)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 60970:GOTO 60960
60888 IF MAGSAM$(2)<MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 60980:GOTO 60960
60940 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
60942 WEND
60950 GOSUB 61020:GOTO 60960
60955 IF MAGSAM$(2)<=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61180
60960 RETURN
60970 MAGSAM%(9)=VAL(MID$(MAGSAM$(12),MAGSAM%(14)+MAGSAM%(4),4)):MAGSAM%(10)=99
60972 RETURN
60980 MAGSAM%(16)=MAGSAM%(17)-1
60982 IF MAGSAM%(16)<MAGSAM%(15) THEN MAGSAM%(10)=10 ELSE MAGSAM%(10)=0
60984 RETURN
61020 MAGSAM%(15)=MAGSAM%(17)+1
61022 IF MAGSAM%(15)>MAGSAM%(16) THEN MAGSAM%(10)=20 ELSE MAGSAM%(10)=0
61024 RETURN
61060 MAGSAM$(15)=MID$(MAGSAM$(12),MAGSAM%(14)-1,LEN(MAGSAM$(12))-MAGSAM%(14)+2)
61062 MAGSAM$(15)="I"+MAGSAM$(2)+MAGSAM$(10)+MAGSAM$(15)
61064 MAGSAM$(14)=RIGHT$(MAGSAM$(15),(MAGSAM%(4)+5)*2) 
61068 MAGSAM$(16)="O"+MAGSAM$(14):RETURN
61080 LSET MAGSAM.O01$=MAGSAM$(16)
61082 PUT#MAGSAM%(3),MAGSAM%(19)
61084 MAGSAM%(19)=MAGSAM%(19)+1:RETURN
61090 MAGSAM$(13)=LEFT$(MAGSAM$(12),MAGSAM%(14)-2)
61092 MAGSAM$(10)=STR$(MAGSAM%(19)-1)	
61094 MAGSAM$(10)=RIGHT$(MAGSAM$(10),LEN(MAGSAM$(10))-1)
61096 MAGSAM$(10)=RIGHT$("0000"+MAGSAM$(10),4)	
61098 MAGSAM%(15)=LEN(MAGSAM$(15))-(MAGSAM%(4)+5)*2 
61112 MAGSAM$(17)=LEFT$(MAGSAM$(15),MAGSAM%(15))
61114 MAGSAM$(12)=MAGSAM$(13)+MAGSAM$(17)+"O"+MID$(MAGSAM$(14),MAGSAM%(4)+7,MAGSAM%(4))+MAGSAM$(10)
61116 RETURN
61120 MAGSAM$(13)=LEFT$(MAGSAM$(12),MAGSAM%(14)-2)
61122 MAGSAM$(15)=MID$(MAGSAM$(12),MAGSAM%(14)-1,LEN(MAGSAM$(12))-MAGSAM%(14)+2)
61124 MAGSAM$(12)=MAGSAM$(13)+"I"+MAGSAM$(2)+MAGSAM$(10)+MAGSAM$(15)
61126 IF LEFT$(MAGSAM$(12),1)="I" THEN GOSUB 60750
61128 IF LEFT$(MAGSAM$(12),1)="O" THEN GOSUB 61310
61132 RETURN
61180 MAGSAM$(11)=MAGSAM$(12)
61190 GOSUB 61220:GOSUB 61230:GOSUB 61240
61192 IF MAGSAM%(10)=0 OR MAGSAM%(10)=20 THEN GOTO 61190
61194 IF MAGSAM%(10)=99 THEN GOSUB 60970
61196 RETURN
61220 MAGSAM%(0)=VAL(MID$(MAGSAM$(12),MAGSAM%(14)+MAGSAM%(4),4)):RETURN
61230 GET#MAGSAM%(3),MAGSAM%(0)
61232 MAGSAM$(12)=MAGSAM.O01$
61234 GOSUB 61910
61236 RETURN
61240 MAGSAM%(14)=3
61242 WHILE MAGSAM%(14) <= 249
61244 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="O" THEN GOSUB 61220:GOTO 61300
61246 IF MAGSAM$(2)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 60970:GOTO 61300
61248 IF MAGSAM$(2)<MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN MAGSAM%(10)=10:GOTO 61300
61252 MAGSAM$(19)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))
61254 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
61256 WEND
61258 MAGSAM%(8)=99
61300 RETURN
61310 LSET MAGSAM.O01$=MAGSAM$(12)
61312 PUT#MAGSAM%(3),MAGSAM%(0)
61314 RETURN
61320 IF MAGSAM%(14)>MAGSAM%(13)*(MAGSAM%(4)+5)+1 THEN MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1
61322 IF MAGSAM%(14)<3 THEN MAGSAM%(14)=3
61324 IF MAGSAM%(17)<2 THEN MAGSAM%(17)=2
61350 IF MAGSAM%(17)>MAGSAM%(11) THEN MAGSAM%(8)=51:GOTO 61400
61352 GOSUB 60860
61354 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="" THEN MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:GOTO 61350
61356 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="I" THEN GOSUB 60970:GOTO 61390
61358 GOSUB 61220:MAGSAM%(14)=3:GOSUB 61430:GOTO 61400
61390 GOSUB 61445
61400 RETURN
61410 IF MAGSAM%(14)>MAGSAM%(13)*(MAGSAM%(4)+5)+1 THEN

 MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:MAGSAM%(0)=0:GOSUB 61320:GOTO 61440
61412 IF MAGSAM%(14)<3 THEN MAGSAM%(14)=3
61430 GOSUB 61230
61432 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="" THEN

 MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:MAGSAM%(0)=0:GOSUB 61320:GOTO 61440
61434 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="I" THEN GOSUB 60970:GOSUB 61445:GOTO 61440
61436 GOSUB 61220:MAGSAM%(14)=3:GOTO 61430
61440 RETURN
61445 MAGSAM$(2)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))
61446 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
61448 RETURN
61450 IF LEFT$(MAGSAM$(1),1)<>"S" THEN GOTO 61460
61452 MAGSAM$(18)="S"
61454 MAGSAM$(1)=RIGHT$(MAGSAM$(1),1)
61456 IF MAGSAM$(1)="K" OR MAGSAM$(1)="G" OR MAGSAM$(1)="N" THEN MAGSAM$(1)="R"+MAGSAM$(1):GOTO 61460
61458 IF MAGSAM$(1)="L" OR MAGSAM$(1)="A" THEN MAGSAM$(1)="W"+MAGSAM$(1):GOTO 61460
61459 IF MAGSAM$(1)="D" THEN MAGSAM$(1)="K"+MAGSAM$(1)
61460 RETURN
61500 MAGSAM$(11)="":MAGSAM$(19)="":GOSUB 60260
61502 IF MAGSAM%(8)<>0 THEN GOTO 61590
61504 MAGSAM$(13)=LEFT$(MAGSAM$(12),MAGSAM%(14)-2)
61506 MAGSAM$(12)=MAGSAM$(13)+RIGHT$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(14)+MAGSAM%(4)+3))
61508 IF LEFT$(MAGSAM$(12),1)="I" THEN GOSUB 60750 ELSE GOSUB 61310:GOSUB 61600
61512 IF MAGSAM$(1)="DR" THEN GOSUB 61700
61514 GOSUB 60760
61590 RETURN
61600 IF "O"+MAGSAM$(2)<> MID$(MAGSAM$(11),LEN(MAGSAM$(11))-(MAGSAM%(4)+4),MAGSAM%(4)+1) THEN GOTO 61650
61602 IF MAGSAM$(19)="" THEN MAGSAM$(12)=LEFT$(MAGSAM$(11),LEN(MAGSAM$(11))-(MAGSAM%(4)+5)):GOSUB 60750:GOTO 61650
61604 MAGSAM$(12)= LEFT$(MAGSAM$(11),LEN(MAGSAM$(11))-(MAGSAM%(4)+4))+MAGSAM$(19)+RIGHT$(MAGSAM$(11),4)
61606 GOSUB 60750
61610 MAGSAM%(0)=VAL(RIGHT$(MAGSAM$(12),4))
61615 GOSUB 61230
61616 IF LEN(MAGSAM$(12))<MAGSAM%(4)+6 THEN GOTO 61650
61618 IF "O"+MAGSAM$(2)<> MID$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(4)+4),MAGSAM%(4)+1) THEN GOTO 61650
61622 IF MAGSAM$(11)="END" THEN

 MAGSAM%(10)=VAL(RIGHT$(MAGSAM$(12),4)):MAGSAM$(12)="O":GOSUB 61310:MAGSAM%(0)=MAGSAM%(10):GOTO 61615
61624 IF LEN(MAGSAM$(12))<(2*MAGSAM%(4)+9) THEN GOSUB 61660:GOSUB 61310:GOTO 61610
61626 IF MAGSAM$(19)<>MID$(MAGSAM$(12),LEN(MAGSAM$(12))-(2*MAGSAM%(4)+8),MAGSAM%(4)) THEN

 GOSUB 61660:GOSUB 61310:GOTO 61610
61628 MAGSAM$(11)="END"
61632 GOSUB 61670:GOSUB 61310:MAGSAM%(0)=MAGSAM%(10):GOTO 61615
61650 RETURN
61660 MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(4)+4))+MAGSAM$(19)+RIGHT$(MAGSAM$(12),4)
61662 RETURN
61670 MAGSAM%(10)=VAL(RIGHT$(MAGSAM$(12),4))
61672 MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(4)+5))
61674 RETURN
61700 IF MAGSAM%(18)=0 THEN GOSUB 61770:MAGSAM%(18)=MAGSAM%(0) ELSE MAGSAM%(0)=MAGSAM%(18):GOSUB 61230
61720 IF LEN(MAGSAM$(12))<240 THEN GOTO 61730
61722 IF MID$(MAGSAM$(12),LEN(MAGSAM$(12))-4,1)="N" THEN MAGSAM%(0)=VAL(RIGHT$(MAGSAM$(12),4)):GOSUB 61230:GOTO 61720
61724 GOSUB 61750:GOTO 61740
61730 IF LEN(MAGSAM$(12))<6 THEN GOSUB 61790:GOTO 61740 
61732 IF MID$(MAGSAM$(12),LEN(MAGSAM$(12))-4,1)="N" THEN

 GOSUB 60609:MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-5)+"D"+MAGSAM$(10)+RIGHT$(MAGSAM$(12),5) ELSE GOSUB 61790
61740 GOSUB 61310
61742 RETURN
61750 MAGSAM$(11)="D"+RIGHT$(MAGSAM$(12),5)
61752 MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-5)
61754 GOSUB 61780:GOSUB 61310:GOSUB 61770
61756 MAGSAM$(12)=MAGSAM$(11):GOSUB 61790
61758 RETURN
61770 MAGSAM%(0)=MAGSAM%(19):MAGSAM%(19)=MAGSAM%(19)+1:MAGSAM$(12)="D"
61772 RETURN
61780 MAGSAM$(10)=STR$(MAGSAM%(19))	
61782 MAGSAM$(10)=RIGHT$(MAGSAM$(10),LEN(MAGSAM$(10))-1)
61784 MAGSAM$(10)=RIGHT$("0000"+MAGSAM$(10),4)	
61786 MAGSAM$(12)=MAGSAM$(12)+"N"+MAGSAM$(10)
61788 RETURN
61790 GOSUB 60609	
61792 MAGSAM$(12)=MAGSAM$(12)+"D"+MAGSAM$(10)
61794 RETURN
61800 MAGSAM%(0)=MAGSAM%(18)
61810 GOSUB 61230
61812 IF MID$(MAGSAM$(12),2,1)="D" THEN MAGSAM%(9)=VAL(MID$(MAGSAM$(12),3,4)):

MAGSAM$(12)="D"+RIGHT$(MAGSAM$(12),LEN(MAGSAM$(12))-6):GOSUB 61310:GOTO 61890 
61814 IF MID$(MAGSAM$(12),2,1)="N" THEN MAGSAM%(0)=VAL(MID$(MAGSAM$(12),3,4)):GOTO 61810
61816 MAGSAM%(9)=MAGSAM%(12):MAGSAM%(12)=MAGSAM%(12)+1
61890 RETURN
61900 FIELD MAGSAM%(1),1 AS MAGSAM.H01$,2 AS MAGSAM.H02$,2 AS MAGSAM.H03$,2 AS MAGSAM.H04$,2 AS MAGSAM.H05$
61901 FIELD MAGSAM%(1),9 AS MAGSAM.DUM$,2 AS MAGSAM.H06$,2 AS MAGSAM.H07$,2 AS MAGSAM.H08$,2 AS MAGSAM.H09$
61902 FIELD MAGSAM%(1),17 AS MAGSAM.DUM$,2 AS MAGSAM.H10$,2 AS MAGSAM.H11$
61903 FIELD MAGSAM%(1),255 AS MAGSAM.I01$
61904 FIELD MAGSAM%(3),255 AS MAGSAM.O01$
61906 RETURN
61910 FOR MAGSAM.I%=2 TO 249 STEP MAGSAM%(4)+5
61912 IF MID$(MAGSAM$(12),MAGSAM.I%,1)=" " THEN GOTO 61916
61914 NEXT MAGSAM.I%
61916 MAGSAM$(12)=LEFT$(MAGSAM$(12),MAGSAM.I%-1)
61918 RETURN
M$(12),MAGSAM.I%,1)=" " THEN GOTO 61916
61914 NEXT MAGSAM.I%
61916 MAGSAM$(1