1 ON ERROR GOTO 1930                                                 
5 DIM MAGSAM$(20),MAGSAM%(20)
10 REM
15 REM ********* PERMANENT SUBROUTINE TO PUT MAGSAM INTO OPERATION *********
20 REM
25 REM - MAGSAM FILE OPEN
30 OPEN "R",1,FILE1$,256
35 OPEN "R",2,FILE2$,256
40 OPEN "R",3,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
90 GOSUB 60030: 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, 10 AS FX$, 4 AS FY$, 4 AS FZ$:RETURN
120 GET #2, MAGSAM%(9): REM GET DATA RECORD
125 X$=FX$:Y$=FY$:Z$=FZ$
130 RETURN
135 REM - WRITE DATA RECORD
140 PUT MAGSAM%(2),MAGSAM%(9)
145 RETURN
150 REM - CLOSE ROUTINES
155 CLOSE 1,2,3
160 RETURN
165 KL%=5: FUN$="RN":KEY$="00001":IFN% = 1:DFN% = 2: OFN% = 3
170 FILE1$="B:DATE.I":FILE2$="B:DATE.DAT":FILE3$="B:DATE.O"
175 GOSUB 30
180 GOSUB 115
185 GOSUB 55
190 IF MGFLAG = 0 THEN GOSUB 120
195 GOSUB 150
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 OPEN "I",#1,"DATE"
590 INPUT #1, DD$, DM$, DY$
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 IF LEFT$(DM$,3) ="May"  THEN Z$= "5"
670 IF LEFT$(DM$,3) ="Jun"  THEN Z$= "6"
680 IF LEFT$(DM$,3) ="Jul"  THEN Z$= "7"
690 IF LEFT$(DM$,3) ="Aug"  THEN Z$= "8"
700 IF LEFT$(DM$,3) ="Sep"  THEN Z$= "9"
710 IF LEFT$(DM$,3) ="Oct"  THEN Z$= "10"
720 IF LEFT$(DM$,3) ="Nov"  THEN Z$= "11"
730 IF LEFT$(DM$,3) ="Dec"  THEN Z$= "12"
740 DT$ = DM$+" "+DD$+", "+DY$
750 DT2$ = Z$+"/"+DD$+"/"+DY$
760 PRINT TAB(D%+4) "TODAY'S DATE IS "; DT$;" ("; DT2$;")"
770 PRINT TAB(D%+4) "UPDATE EACH MORNING BY TYPING IN 11"
780 CLOSE #1
790 PRINT TAB(10) "CLIENTS"
800 PRINT 
810 PRINT TAB(15) "1) Basic Information"
820 PRINT TAB(15) "2) Basic Information - Lists"
830 PRINT TAB(15) "3) Additional Information for Client Cards"
840 PRINT TAB(15) "4) Additional Information for Client Cards - Lists"
850 PRINT 
860 PRINT TAB(10) "PROSPECTS"
870 PRINT 
880 PRINT TAB(15) "5) Basic Information and Card Printing"
890 PRINT TAB(15) "6) Enter New Census or Add to Existing Census"
900 PRINT TAB(15) "7) Change an Employee's Census Data"
910 PRINT TAB(15) "8) Run Proposal"
920 PRINT :PRINT :PRINT 
930 R% = 0
940 PRINT "Select the routine you wish to perform"
950 INPUT "Hit the RETURN  KEY for next page of the INDEX";R%
960 IF R% = 0 THEN PRINT CHR$(27);"*"
970 IF R%<> 0 THEN GOTO 1310
980 GOSUB 110
990 PRINT TAB(10) "EMPLOYEE FILES"
1000 PRINT 
1010 PRINT TAB(14) "12) Produce Annual Reports"
1020 PRINT TAB(14) "13) Create New or Add to an Existing Data File"
1030 PRINT TAB(14) "14) Change An Employee's Data"
1040 PRINT TAB(14) "15) Calculate Insurance Amounts on Anniversary"
1050 PRINT TAB(14) "16) Obtain Listings from Employee Data Files"
1060 PRINT TAB(14) "17) Annual Update (GRI Face & Old Contribution)"
1070 PRINT TAB(14) "18) Locate Employees Reaching Postponed Retirement"
1080 PRINT TAB(14) "19) Figure Accumulated Contributions for an Employee"
1090 PRINT :PRINT :PRINT :PRINT 
1100 R% = 0
1110 PRINT "Select the routine you wish to perform"
1120 INPUT "Hit the RETURN  KEY for next page of the INDEX";R%
1130 IF R% = 0 THEN PRINT CHR$(27);"*"
1140 IF R%<> 0 THEN GOTO 1310
1150 GOSUB 110
1160 PRINT TAB(10) "PREMIUM LOG - AUTHORITY & INDIVIDUAL"
1170 PRINT 
1180 PRINT TAB(14) "20) Record Monthly Payments By AUTHORITY"
1190 PRINT TAB(14) "21) Record Monthly Payments for EMPLOYEE"
1200 PRINT TAB(14) "22) Record Monthly Allocation to FIXED FUND"
1210 PRINT TAB(14) "24) Printout Log"
1220 PRINT TAB(14) "25) Annual Update to Zero Out All Entries"
1230 PRINT 
1240 PRINT TAB(10) "MISCELLANEOUS PROGRAMS"
1250 PRINT 
1260 PRINT TAB(14) "28) License Files"
1270 PRINT TAB(14) "27) Retirement Quote Letter"
1280 PRINT "Select the routine you wish to perform"
1290 INPUT "Hit the RETURN  KEY for next page of the INDEX";R%
1300 IF R% = 0 THEN GOTO 920
1310 ON R% GOTO 1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470,1480,1490,1500,1510,1530,1540,1550,1560,1570,1580
1320 RUN "A:CLIFILE.BAS"
1330 RUN "A:CLISEAR.BAS"
1340 RUN "A:CARDFILE.BAS"
1350 RUN "A:CARDSEAR.BAS"
1360 RUN "A:PROSFILE.BAS"
1370 RUN "A:SAVECEN.BAS"
1380 RUN "A:CENCHA.BAS"
1390 RUN "A:RUNPRO.BAS"
1400 PRINT "NO SUCH OPTION":GOTO 930
1410 PRINT "NO SUCH OPTION":GOTO 930
1420 GOTO 1600
1430 RUN "A:ANLREP.BAS"
1440 RUN "A:EMPADD.BAS"
1450 RUN "A:EMPCHA.BAS"
1460 RUN "A:INSPUR.BAS"
1470 RUN "A:EMPSEAR.BAS"
1480 RUN "A:ANLUPDAT.BAS"
1490 RUN "A:PPRDATES.BAS"
1500 RUN "A:EMPCONTR.BAS"
1510 PRINT "NO SUCH OPTION":GOTO 930
1520 PRINT "NO SUCH OPTION":GOTO 930
1530 PRINT "NO SUCH OPTION":GOTO 930
1540 RUN "A:PREMLOG.BAS"
1550 RUN "A:PREMPRIN.BAS"
1560 RUN "A:PREMZERO.BAS"
1570 RUN "A:LICENSE.BAS"
1580 RUN "A:RETQUOTE.BAS"
1590 REM 
1600 REM ---------- SUBROUTINE TO UPDATE TODAYS DATE
1610 REM
1620  OPEN "I",#1, "DATE"
1630 IFN% = 1
1640 OPEN "O",#2,"COPY":REM IF FILE EXISTS, WRITE IT TO COPY
1650 IF EOF (1) THEN 1690
1660 INPUT#1,DD$,DM$,DY$
1670 PRINT#2,DD$;",";DM$;",";DY$
1680 GOTO 1650
1690 REM CLOSE #1
1700 KILL "DATE"
1710 PRINT :PRINT :PRINT :PRINT :PRINT 
1720 PRINT CHR$(27);"*"
1730 PRINT TAB(D%) "Do You Wish to Change:  "
1740 PRINT TAB(D%+3) "1) The Day of the Month"
1750 PRINT TAB(D%+3) "2) The Month AND the Day of the Year"
1760 PRINT TAB(D%+3) "3) The Month, Day, and Year
1770 INPUT CI
1780 INPUT "What is the new Day of the month? ";DD$
1790 IF CI = 2 OR CI = 3 THEN INPUT "What is the correct month? ";DM$
1800 IF CI = 3 THEN INPUT "What is the correct year? ";DY$
1810 PRINT #2,DD$;",";DM$;",";DY$
1820 PRINT DT$,DT2$
1830 CLOSE
1840 NAME "COPY" AS "DATE"
1850 END
1860 LSET FX$=X$:LSET FY$=Y$:LSET FZ$=Z$
1870 FUN$="WA"
1880 GOSUB 55
1890 GOSUB 115:MAGSAM%(9)=1 
1900 GOSUB 140
1910 GOSUB 150
1920 GOTO 750
1930 IF ERR=53 AND ERL=1620 THEN OPEN "O",#2,"COPY":RESUME 1800
1940 ON ERROR GOTO 0
1950 OPEN "O",#1,"DATA"
1960 PRINT#1,"ZZ";"set";"DFG"
60000 REM
60010 REM ----------------- MAGSAM SUBROUTINE
60020 REM
60030 REM MAGSAM III 4.2 - MULTI-KEYED FILE MANAGEMENT FOR CP/M AND MICROSOFT
60040 MAGSAM%(8)=0:MAGSAM%(9)=0:MAGSAM%(10)=0:MAGSAM$(18)=""
60050 GOSUB 62490
60060 GOSUB 61860:GOSUB 60190
60070 IF MAGSAM%(8)<>0 THEN GOTO 60180
60080 GOSUB 60550
60090 IF MAGSAM%(8)<>0 THEN GOTO 60180
60100 IF MAGSAM$(1)="RK" THEN GOSUB 60280:GOTO 60180
60110 IF MAGSAM$(1)="RN" THEN GOSUB 60360:GOTO 60180
60120 IF MAGSAM$(1)="RG" THEN GOSUB 60380:GOTO 60180
60130 IF MAGSAM$(1)="WL" THEN GOSUB 60410:GOTO 60180
60140 IF MAGSAM$(1)="WA" THEN GOSUB 60430:GOTO 60180
60150 IF MAGSAM$(1)="DR" THEN GOSUB 61930:GOTO 60180
60160 IF MAGSAM$(1)="KD" THEN GOSUB 61930:GOTO 60180
60170 MAGSAM%(8)=41
60180 RETURN
60190 IF LEN(MAGSAM$(1))<>2 THEN GOTO 60250
60200 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 60250
60210 IF MAGSAM%(4)>110 THEN GOTO 60250
60220 IF MAGSAM$(1)="RN" THEN GOTO 60270
60230 IF MAGSAM%(4)=0 THEN GOTO 60250
60240 IF LEN(MAGSAM$(2))=MAGSAM%(4) THEN GOTO 60270
60250 MAGSAM%(8)=41
60260 PRINT "60215   ";MAGSAM%(8)
60270 RETURN
60280 MAGSAM%(0)=0:GOSUB 60310
60290 IF MAGSAM%(8)=0 THEN MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
60300 RETURN
60310 GOSUB 60960
60320 GOSUB 60970:GOSUB 60980:GOSUB 61020
60330 IF MAGSAM%(10)=0 THEN GOTO 60320
60340 IF MAGSAM%(10)<>99 THEN MAGSAM%(8)=51
60350 RETURN
60360 IF MAGSAM%(0)=0 THEN GOSUB 61660 ELSE GOSUB 61760
60370 RETURN
60380 MAGSAM%(0)=0:GOSUB 60310:MAGSAM%(8)=0
60390 IF MAGSAM%(10)=99 THEN GOSUB 61830 ELSE GOSUB 60360
60400 RETURN
60410 GOSUB 60660
60420 GOSUB 60730:MAGSAM%(17)=MAGSAM%(11):GOSUB 60760:GOSUB 60790:RETURN
60430 GOSUB 60660:GOSUB 60310
60440 IF MAGSAM%(10)=99 THEN MAGSAM%(8)=61:GOTO 60540
60450 MAGSAM%(8)=0
60460 IF MAGSAM%(10)=0 THEN MAGSAM%(8)=99:GOTO 60540
60470 IF MAGSAM%(10)=20 AND (MAGSAM%(17)=MAGSAM%(11) OR MAGSAM%(11)=0) THEN GOSUB 60420:GOTO 60540
60480 IF MAGSAM%(10)=20 THEN MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:GOSUB 60980
60490 IF MID$(MAGSAM$(12),(MAGSAM%(13)-1)*(MAGSAM%(4)+5)+2,MAGSAM%(4))="" THEN GOSUB 61370:GOTO 60530
60500 GOSUB 60625:GOSUB 61260:GOSUB 61290
60510 IF LEFT$(MAGSAM$(12),1)="I" THEN GOSUB 60760
60520 IF LEFT$(MAGSAM$(12),1)="O" THEN GOSUB 61630
60530 GOSUB 60790
60540 RETURN
60550 GET#MAGSAM%(1),1
60560 MAGSAM%(6)=CVI(MAGSAM.H04$):MAGSAM%(11)=CVI(MAGSAM.H05$)
60570 MAGSAM%(12)=CVI(MAGSAM.H06$):MAGSAM%(19)=CVI(MAGSAM.H07$)
60580 MAGSAM%(18)=CVI(MAGSAM.H08$)
60590 IF MAGSAM%(11)=0 THEN GOTO 60620
60600 IF MAGSAM%(4)<>MAGSAM%(6) THEN MAGSAM%(8)=41
60610 GOTO 60640
60620 MAGSAM%(10)=0:MAGSAM%(11)=0:MAGSAM%(12)=1:MAGSAM%(18)=0:MAGSAM%(19)=1
60630 GOSUB 60790
60640 MAGSAM%(13)=INT(249\(MAGSAM%(4)+5))-1
60650 RETURN
60660 IF MAGSAM$(18)="S" AND MAGSAM%(5)>=MAGSAM%(12) THEN MAGSAM%(9)=MAGSAM%(5):MAGSAM%(12)=MAGSAM%(5)+1:GOTO 60690
60670 IF MAGSAM$(18)="S" THEN MAGSAM%(9)=MAGSAM%(5):GOTO 60690
60680 IF MAGSAM%(18) = 0 THEN MAGSAM%(9)=MAGSAM%(12):MAGSAM%(12)=MAGSAM%(12)+1 ELSE GOSUB 62430
60690 MAGSAM$(10)=STR$(MAGSAM%(9))
60700 MAGSAM$(10)=RIGHT$(MAGSAM$(10),LEN(MAGSAM$(10))-1)
60710 MAGSAM$(10)=RIGHT$("0000"+MAGSAM$(10),4)	
60720 RETURN
60730 GOSUB 60870
60740 MAGSAM$(12)=MAGSAM$(12)+"I"+MAGSAM$(2)+MAGSAM$(10)
60750 RETURN
60760 LSET MAGSAM.I01$=MAGSAM$(12)
60770 PUT#MAGSAM%(1),MAGSAM%(17)
60780 RETURN
60790 LSET MAGSAM.I01$=""
60800 LSET MAGSAM.H01$="H":LSET MAGSAM.H02$=MKI$(256):LSET MAGSAM.H03$=MKI$(0)
60810 LSET MAGSAM.H04$=MKI$(MAGSAM%(4)):LSET MAGSAM.H05$=MKI$(MAGSAM%(11))
60820 LSET MAGSAM.H06$=MKI$(MAGSAM%(12)):LSET MAGSAM.H07$=MKI$(MAGSAM%(19))
60830 LSET MAGSAM.H08$=MKI$(MAGSAM%(18)):LSET MAGSAM.H09$=MKI$(0)
60840 LSET MAGSAM.H10$=MKI$(0):LSET MAGSAM.H11$=MKI$(0)
60850 PUT#MAGSAM%(1),1
60860 RETURN
60870 IF MAGSAM%(11)=0 THEN MAGSAM%(11)=1:GOTO 60940
60880 GET#MAGSAM%(1),MAGSAM%(11)
60890 MAGSAM$(12)=MAGSAM.I01$	
60900 GOSUB 62550
60910 IF LEN(MAGSAM$(12))<MAGSAM%(4)+6 THEN GOTO 60950
60920 MAGSAM%(14)=LEN(MAGSAM$(12))-(MAGSAM%(4)+3)
60930 IF MID$(MAGSAM$(12),(MAGSAM%(13)-1)*(MAGSAM%(4)+5)+2,MAGSAM%(4))="" AND MID$(MAGSAM$(12),MAGSAM%(14)-1,1)<>"O" THEN

 GOTO 60950
60940 MAGSAM%(11)=MAGSAM%(11)+1:MAGSAM$(12)="I"
60950 RETURN
60960 MAGSAM%(15)=2:MAGSAM%(16)=MAGSAM%(11):MAGSAM$(12)="":RETURN
60970 MAGSAM%(17)=INT((MAGSAM%(16)-MAGSAM%(15))\2)+MAGSAM%(15):RETURN
60980 GET#MAGSAM%(1),MAGSAM%(17)
60990 MAGSAM$(12)=MAGSAM.I01$
61000 GOSUB 62550
61010 RETURN
61020 MAGSAM%(14)=(MAGSAM%(13)-1)*(MAGSAM%(4)+5)+3
61030 IF MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))="" THEN GOTO 61050
61040 IF MAGSAM$(2)>MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5:GOTO 61140
61050 MAGSAM%(14)=3
61060 WHILE MAGSAM%(14) <= 249
61070 IF MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))="" THEN GOTO 61140
61080 IF MAGSAM$(2)>MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61220:GOTO 61120
61090 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="O" THEN GOTO 61150
61100 IF MAGSAM$(2)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61170:GOTO 61160
61110 IF MAGSAM$(2)<MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61190:GOTO 61160
61120 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
61130 WEND
61140 GOSUB 61220:GOTO 61160
61150 IF MAGSAM$(2)<=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61430
61160 RETURN
61170 MAGSAM%(9)=VAL(MID$(MAGSAM$(12),MAGSAM%(14)+MAGSAM%(4),4)):MAGSAM%(10)=99
61180 RETURN
61190 MAGSAM%(16)=MAGSAM%(17)-1
61200 IF MAGSAM%(16)<MAGSAM%(15) THEN MAGSAM%(10)=10 ELSE MAGSAM%(10)=0
61210 RETURN
61220 MAGSAM%(15)=MAGSAM%(90617! ";MAGSAM%(8)
61230 RETURN
61240 MAGSAM$(15)=MID$(MAGSAM$(12),MAGSAM%(14)-1,LEN(MAGSAM$(12))-MAGSAM%(14)+2)
61250 MAGSAM$(15)="I"+MAGSAM$(2)+MAGSAM$(10)+MAGSAM$(15)
61260 MAGSAM$(14)=RIGHT$(MAGSAM$(15),(MAGSAM%(4)+5)*2) 
61270 MAGSAM$(16)="O"+MAGSAM$(14):RETURN
61280 LSET MAGSAM.O01$=MAGSAM$(16)
61290 PUT#MAGSAM%(3),MAGSAM%(19)
61300 MAGSAM%(19)=MAGSAM%(19)+1:RETURN
61310 MAGSAM$(13)=LEFT$(MAGSAM$(12),MAGSAM%(14)-2)
61320 MAGSAM$(10)=STR$(MAGSAM%(19)-1)	
61330 MAGSAM$(10)=RIGHT$(MAGSAM$(10),LEN(MAGSAM$(10))-1)
61340 MAGSAM$(10)=RIGHT$("0000"+MAGSAM$(10),4)	
61350 MAGSAM%(15)=LEN(MAGSAM$(15))-(MAGSAM%(4)+5)*2 
61360 MAGSAM$(17)=LEFT$(MAGSAM$(15),MAGSAM%(15))
61370 MAGSAM$(12)=MAGSAM$(13)+MAGSAM$(17)+"O"+MID$(MAGSAM$(14),MAGSAM%(4)+7,MAGSAM%(4))+MAGSAM$(10)
61380 RETURN
61390 MAGSAM$(13)=LEFT$(MAGSAM$(12),MAGSAM%(14)-2)
61400 MAGSAM$(15)=MID$(MAGSAM$(12),MAGSAM%(14)-1,LEN(MAGSAM$(12))-MAGSAM%(14)+2)
61410 MAGSAM$(12)=MAGSAM$(13)+"I"+MAGSAM$(2)+MAGSAM$(10)+MAGSAM$(15)
61420 IF LEFT$(MAGSAM$(12),1)="I" THEN GOSUB 60770
61430 IF LEFT$(MAGSAM$(12),1)="O" THEN GOSUB 61650
61440 RETURN
61450 MAGSAM$(11)=MAGSAM$(12)
61460 GOSUB 61500:GOSUB 61510:GOSUB 61550
61470 IF MAGSAM%(10)=0 OR MAGSAM%(10)=20 THEN GOTO 61460
61480 IF MAGSAM%(10)=99 THEN GOSUB 61180
61490 RETURN
61500 MAGSAM%(0)=VAL(MID$(MAGSAM$(12),MAGSAM%(14)+MAGSAM%(4),4)):RETURN
61510 GET#MAGSAM%(3),MAGSAM%(0)
61520 MAGSAM$(12)=MAGSAM.O01$
61530 GOSUB 62590
61540 RETURN
61550 MAGSAM%(14)=3
61560 WHILE MAGSAM%(14) <= 249
61570 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="O" THEN GOSUB 61500:GOTO 61640
61580 IF MAGSAM$(2)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN GOSUB 61180:GOTO 61640
61590 IF MAGSAM$(2)<MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4)) THEN MAGSAM%(10)=10:GOTO 61640
61600 MAGSAM$(19)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))
61610 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
61620 WEND
61630 MAGSAM%(8)=99
61640 RETURN
61650 LSET MAGSAM.O01$=MAGSAM$(12)
61660 PUT#MAGSAM%(3),MAGSAM%(0)
61670 RETURN
61680 IF MAGSAM%(14)>MAGSAM%(13)*(MAGSAM%(4)+5)+1 THEN MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1
61690 IF MAGSAM%(14)<3 THEN MAGSAM%(14)=3
61700 IF MAGSAM%(17)<2 THEN MAGSAM%(17)=2
61710 IF MAGSAM%(17)>MAGSAM%(11) THEN MAGSAM%(8)=51:GOTO 61770
61720 GOSUB 60990
61730 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="" THEN MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:GOTO 61710
61740 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="I" THEN GOSUB 61180:GOTO 61760
61750 GOSUB 61500:MAGSAM%(14)=3:GOSUB 61800:GOTO 61770
61760 GOSUB 61850
61770 RETURN
61780 IF MAGSAM%(14)>MAGSAM%(13)*(MAGSAM%(4)+5)+1 THEN

 MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:MAGSAM%(0)=0:GOSUB 61680:GOTO 61840
61790 IF MAGSAM%(14)<3 THEN MAGSAM%(14)=3
61800 GOSUB 61510
61810 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="" THEN

 MAGSAM%(14)=3:MAGSAM%(17)=MAGSAM%(17)+1:MAGSAM%(0)=0:GOSUB 61680:GOTO 61840
61820 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="I" THEN GOSUB 61180:GOSUB 61850:GOTO 61840
61830 GOSUB 61500:MAGSAM%(14)=3:GOTO 61800
61840 RETURN
61850 MAGSAM$(2)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))
61860 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
61870 PRINT "MAGSAM 60936";MAGSAM%(8)
61880 RETURN
61890 IF LEFT$(MAGSAM$(1),1)<>"S" THEN GOTO 61950
61900 MAGSAM$(18)="S"
61910 MAGSAM$(1)=RIGHT$(MAGSAM$(1),1)
61920 IF MAGSAM$(1)="K" OR MAGSAM$(1)="G" OR MAGSAM$(1)="N" THEN MAGSAM$(1)="R"+MAGSAM$(1):GOTO 61950
61930 IF MAGSAM$(1)="L" OR MAGSAM$(1)="A" THEN MAGSAM$(1)="W"+MAGSAM$(1):GOTO 61950
61940 IF MAGSAM$(1)="D" THEN MAGSAM$(1)="K"+MAGSAM$(1)
61950 RETURN
61960 MAGSAM$(11)="":MAGSAM$(19)="":GOSUB 60310
61970 IF MAGSAM%(8)<>0 THEN GOTO 62030
61980 MAGSAM$(13)=LEFT$(MAGSAM$(12),MAGSAM%(14)-2)
61990 MAGSAM$(12)=MAGSAM$(13)+RIGHT$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(14)+MAGSAM%(4)+3))
62000 IF LEFT$(MAGSAM$(12),1)="I" THEN GOSUB 60770 ELSE GOSUB 61650:GOSUB 62040
62010 IF MAGSAM$(1)="DR" THEN GOSUB 62230
62020 GOSUB 60800
62030 RETURN
62040 IF "O"+MAGSAM$(2)<> MID$(MAGSAM$(11),LEN(MAGSAM$(11))-(MAGSAM%(4)+4),MAGSAM%(4)+1) THEN GOTO 62170
62050 IF MAGSAM$(19)="" THEN MAGSAM$(12)=LEFT$(MAGSAM$(11),LEN(MAGSAM$(11))-(MAGSAM%(4)+5)):GOSUB 60770:GOTO 62170
62060 MAGSAM$(12)= LEFT$(MAGSAM$(11),LEN(MAGSAM$(11))-(MAGSAM%(4)+4))+MAGSAM$(19)+RIGHT$(MAGSAM$(11),4)
62070 GOSUB 60770
62080 MAGSAM%(0)=VAL(RIGHT$(MAGSAM$(12),4))
62090 GOSUB 61510
62100 IF LEN(MAGSAM$(12))<MAGSAM%(4)+6 THEN GOTO 62170
62110 IF "O"+MAGSAM$(2)<> MID$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(4)+4),MAGSAM%(4)+1) THEN GOTO 62170
62120 IF MAGSAM$(11)="END" THEN

 MAGSAM%(10)=VAL(RIGHT$(MAGSAM$(12),4)):MAGSAM$(12)="O":GOSUB 61650:MAGSAM%(0)=MAGSAM%(10):GOTO 62090
62130 IF LEN(MAGSAM$(12))<(2*MAGSAM%(4)+9) THEN GOSUB 62180:GOSUB 61650:GOTO 62080
62140 IF MAGSAM$(19)<>MID$(MAGSAM$(12),LEN(MAGSAM$(12))-(2*MAGSAM%(4)+8),MAGSAM%(4)) THEN

 GOSUB 62180:GOSUB 61650:GOTO 62080
62150 MAGSAM$(11)="END"
62160 GOSUB 62200:GOSUB 61650:MAGSAM%(0)=MAGSAM%(10):GOTO 62090
62170 RETURN
62180 MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(4)+4))+MAGSAM$(19)+RIGHT$(MAGSAM$(12),4)
62190 RETURN
62200 MAGSAM%(10)=VAL(RIGHT$(MAGSAM$(12),4))
62210 MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-(MAGSAM%(4)+5))
62220 RETURN
62230 IF MAGSAM%(18)=0 THEN GOSUB 62360:MAGSAM%(18)=MAGSAM%(0) ELSE MAGSAM%(0)=MAGSAM%(18):GOSUB 61510
62240 IF LEN(MAGSAM$(12))<240 THEN GOTO 62270
62250 IF MID$(MAGSAM$(12),LEN(MAGSAM$(12))-4,1)="N" THEN MAGSAM%(0)=VAL(RIGHT$(MAGSAM$(12),4)):GOSUB 61510:GOTO 62240
62260 GOSUB 62310:GOTO 62290
62270 IF LEN(MAGSAM$(12))<6 THEN GOSUB 62430:GOTO 62290 
62280 IF MID$(MAGSAM$(12),LEN(MAGSAM$(12))-4,1)="N" THEN

 GOSUB 60700:MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-5)+"D"+MAGSAM$(10)+RIGHT$(MAGSAM$(12),5) ELSE GOSUB 62430
62290 GOSUB 61650
62300 RETURN
62310 MAGSAM$(11)="D"+RIGHT$(MAGSAM$(12),5)
62320 MAGSAM$(12)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-5)
62330 GOSUB 62380:GOSUB 61650:GOSUB 62360
62340 MAGSAM$(12)=MAGSAM$(11):GOSUB 62430
62350 RETURN
62360 MAGSAM%(0)=MAGSAM%(19):MAGSAM%(19)=MAGSAM%(19)+1:MAGSAM$(12)="D"
62370 RETURN
62380 MAGSAM$(10)=STR$(MAGSAM%(19))	
62390 MAGSAM$(10)=RIGHT$(MAGSAM$(10),LEN(MAGSAM$(10))-1)
62400 MAGSAM$(10)=RIGHT$("0000"+MAGSAM$(10),4)	
62410 MAGSAM$(12)=MAGSAM$(12)+"N"+MAGSAM$(10)
62420 RETURN
62430 GOSUB 60700	
62440 MAGSAM$(12)=MAGSAM$(12)+"D"+MAGSAM$(10)
62450 RETURN
62460 MAGSAM%(0)=MAGSAM%(18)
62470 GOSUB 61510
62480 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 61650:GOTO 62510 
62490 IF MID$(MAGSAM$(12),2,1)="N" THEN MAGSAM%(0)=VAL(MID$(MAGSAM$(12),3,4)):GOTO 62470
62500 MAGSAM%(9)=MAGSAM%(12):MAGSAM%(12)=MAGSAM%(12)+1
62510 RETURN
62520 FIELD MAGSAM%(1),1 AS MAGSAM.H01$,2 AS MAGSAM.H02$,2 AS MAGSAM.H03$,2 AS MAGSAM.H04$,2 AS MAGSAM.H05$
62530 FIELD MAGSAM%(1),9 AS MAGSAM.DUM$,2 AS MAGSAM.H06$,2 AS MAGSAM.H07$,2 AS MAGSAM.H08$,2 AS MAGSAM.H09$
62540 FIELD MAGSAM%(1),17 AS MAGSAM.DUM$,2 AS MAGSAM.H10$,2 AS MAGSAM.H11$
62550 FIELD MAGSAM%(1),255 AS MAGSAM.I01$
62560 FIELD MAGSAM%(3),255 AS MAGSAM.O01$
62570 PRINT "MAGSAM 61281  ";MAGSAM%(8)
62580 RETURN
62590 FOR MAGSAM.I%=2 TO 249 STEP MAGSAM%(4)+5
62600 IF MID$(MAGSAM$(12),MAGSAM.I%,1)=" " THEN GOTO 62620
62610 NEXT MAGSAM.I%
62620 MAGSAM$(12)=LEFT$(MAGSAM$(12),MAGSAM.I%-1)
62630 RETURN
M$(12),MAGSAM.I%,1)=" " THEN GOTO 62620
62610 NEXT MAGSAM.I%
62620 MA