1	REM MAGSAMX 4.2 - MAGSAM EXERCISER PROGRAM FOR CP/M AND MICROSOFT BASIC
2	REM
3	REM PROPRIETARY SOFTWARE OF:
4	REM  MICRO APPLICATIONS GROUP
5	REM  7300 CALDUS AVENUE
6	REM  VAN NUYS, CA 91406
7	REM
8	REM (C) COPYRIGHT 1978, 1979, 1981 MAG
9	REM 
10	DIM MAGSAM$(20),MAGSAM%(20)
12	PRINT:PRINT:PRINT
14	PRINT "MAGSAMX 4.2 - MAGSAM TUTORIAL PROGRAM"
16	PRINT "(C) COPYRIGHT 1978, 1979, 1981 MICRO APPLICATIONS GROUP"
18	PRINT: INPUT "ENTER INDEX FILE NAME: ",I$
22	MAGSAM%(1)=1: REM INDEX FILE NUMBER
24	PRINT: INPUT "ENTER DATA FILE NAME: ",D$
26	MAGSAM%(2)=2: REM DATA FILE NUMBER
28	PRINT: INPUT "ENTER OVERFLOW FILE NAME: ",O$
32	MAGSAM%(3)=3: REM OVERFLOW FILE NUMBER
100	PRINT: INPUT "ENTER DATA FILE RECORD LENGTH: ",D%
102	IF D%>255 THEN PRINT:PRINT">> RECORD LENGTH LIMITED TO 255.  " + "PLEASE REENTER.":GOTO 100
104	PRINT: INPUT "ENTER KEY LENGTH: ", MAGSAM%(4)
106	OPEN "R",1,I$,256
108	OPEN "R",2,D$,D%
112	OPEN "R",3,O$,256
114	FIELD 2, D% AS DATA.REC$
210	PRINT: INPUT "ENTER FUNCTION CODE OR 'END': ",MAGSAM$(1)
212	IF MAGSAM$(1)="END" THEN GOTO 930
214	IF RIGHT$(MAGSAM$(1),1)="N" THEN GOTO 300
216	PRINT: INPUT "ENTER KEY VALUE: ",MAGSAM$(2)
218	IF MAGSAM$(1)<>"WA" AND MAGSAM$(1)<>"WL" THEN GOTO 250
222	PRINT: LINE INPUT "ENTER DATA RECORD TEXT: ", R$
224	GOTO 300
250	IF MAGSAM$(1)<>"SA" AND MAGSAM$(1)<>"SL" THEN GOTO 300
252	PRINT: INPUT "ENTER DATA RECORD NUMBER: ",MAGSAM%(5)
300	GOSUB 60000: REM MAGSAM 
302	IF MAGSAM%(8)=0 THEN GOTO 400
304	PRINT: PRINT ">> ERROR: ";MAGSAM%(8): GOTO 900
400	IF LEFT$(MAGSAM$(1),1)="R" THEN GOTO 500
402	IF LEFT$(MAGSAM$(1),1)="W" AND MAGSAM$(18)<>"S" THEN GOTO 600 ELSE GOTO 900
500	PRINT:PRINT"DATA RECORD NUMBER = ";MAGSAM%(9)
502	GET # MAGSAM%(2),MAGSAM%(9)
504	PRINT "KEY = ";MAGSAM$(2)
506	PRINT DATA.REC$
508	GOTO 900
600	PRINT:PRINT "DATA RECORD NUMBER = ";MAGSAM%(9)
602	LSET DATA.REC$=R$
604	PUT # MAGSAM%(2),MAGSAM%(9)
900	X$=""
902	GOTO 210
930	PRINT:PRINT"MAGSAMX COMPLETE":PRINT
932	CLOSE MAGSAM%(1),MAGSAM%(2),MAGSAM%(3)
934	END
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
