64000 REM MAGSAMRO 4.2 - MAGSAM HIGH-SPEED FILE REORGANIZATION SUBROUTINE
64001 REM
64002 REM PROPRIETARY SOFTWARE OF:
64003 REM
64004 REM    MICRO APPLICATIONS GROUP
64005 REM    7300 CALDUS AVENUE
64006 REM    VAN NUYS, CA 91406
64007 REM
64008 REM (C) COPYRIGHT 1981 MAG    ALL RIGHT RESERVED
64009 REM 
64010 MAGSAM$="(C) COPYRIGHT 1981 MICRO APPLICATIONS GROUP"
64012 MAGSAM%(8)=0:MAGSAM%(9)=0
64020 GOSUB 65450:GOSUB 64100
64022 IF MAGSAM%(8)<>0 THEN GOTO 64090
64024 GOSUB 64330
64026 IF MAGSAM%(8)<>0 THEN GOTO 64090
64028 IF MAGSAM$(1)="RO" THEN GOSUB 64610:GOTO 64090
64030 MAGSAM%(8)=41
64090 RETURN
64100 IF LEN(MAGSAM$(1))<>2 THEN GOTO 64210
64102 IF MAGSAM$(1)<>"RO" THEN GOTO 64210
64104 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 64210
64106 IF MAGSAM%(5)<1 OR MAGSAM%(5)>15 OR MAGSAM%(6)<1 OR MAGSAM%(6)>15 THEN GOTO 64210
64108 IF MAGSAM%(7)>=0 AND MAGSAM%(7)<=50 THEN GOTO 64220	
64210 MAGSAM%(8)=41
64220 RETURN
64230 GET#MAGSAM%(3),MAGSAM%(0)
64232 MAGSAM$(12)=MAGSAM.O01$
64234 GOSUB 65510
64236 RETURN
64330 GET#MAGSAM%(1),1
64332 MAGSAM%(10)=CVI(MAGSAM.H04$):MAGSAM%(11)=CVI(MAGSAM.H05$)
64334 MAGSAM%(12)=CVI(MAGSAM.H06$):MAGSAM%(19)=CVI(MAGSAM.H07$)
64336 MAGSAM%(18)=CVI(MAGSAM.H08$)
64338 IF MAGSAM%(4)<>MAGSAM%(10) THEN GOTO 64360
64340 GOTO 64380
64360 MAGSAM%(8)=41:GOTO 64390
64380 MAGSAM%(13)=INT(249\(MAGSAM%(4)+5))-1
64390 RETURN
64560 GET#MAGSAM%(1),MAGSAM%(17)
64562 MAGSAM$(12)=MAGSAM.I01$	
64564 GOSUB 65510
64566 RETURN
64610 MAGSAM%(15)=(MAGSAM%(13)-INT(MAGSAM%(13)*MAGSAM%(7)\100))*(MAGSAM%(4)+5)+1
64612 GOSUB 64820
64614 MAGSAM%(16)=2:MAGSAM%(17)=2:MAGSAM%(19)=1:MAGSAM$(16)="I"
64616 MAGSAM$(12)="":MAGSAM%(14)=3:MAGSAM$(13)=""
64650 IF MAGSAM%(17)>MAGSAM%(11)+1 THEN GOTO 64700
64652 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)="" THEN GOSUB 64850
64654 IF MID$(MAGSAM$(12),MAGSAM%(14)-1,1)<>"O" THEN GOTO 64660
64656 MAGSAM%(0)=VAL(MID$(MAGSAM$(12),MAGSAM%(14)+MAGSAM%(4),4))
64658 GOSUB 64230:MAGSAM%(14)=3:GOTO 64690
64660 IF MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))=MAGSAM$(13) AND MAGSAM$(16)="I" THEN GOSUB 65100:GOTO 64690
64662 IF LEFT$(MAGSAM$(11),1)="O" THEN GOSUB 65400	
64664 MAGSAM$(13)=MID$(MAGSAM$(12),MAGSAM%(14),MAGSAM%(4))
64666 MAGSAM$(16)=MAGSAM$(16)+MID$(MAGSAM$(12),MAGSAM%(14)-1,MAGSAM%(4)+5)
64668 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
64670 IF LEN(MAGSAM$(16))>=MAGSAM%(15) THEN GOSUB 64800:MAGSAM$(11)=MAGSAM$(16):MAGSAM$(16)="I":MAGSAM%(16)=MAGSAM%(16)+1
64690 GOTO 64650
64700 IF LEN(MAGSAM$(16))>1 THEN GOSUB 64800:MAGSAM%(16)=MAGSAM%(16)+1
64702 MAGSAM%(11)=MAGSAM%(16)-1
64704 IF MAGSAM%(18)<>0 THEN GOSUB 64750	
64706 GOSUB 64820
64708 RETURN					
64750 MAGSAM%(0)=MAGSAM%(18):MAGSAM%(18)=MAGSAM%(19)
64760 GOSUB 64230
64762 IF LEN(MAGSAM$(12))<6 THEN GOTO 64780
64764 IF MID$(MAGSAM$(12),2,1)="N" THEN MAGSAM%(0)=VAL(MID$(MAGSAM$(12),3,4)):GOTO 64760
64766 IF MID$(MAGSAM$(12),LEN(MAGSAM$(12))-4,1)<>"N" THEN GOTO 64780
64768 MAGSAM%(0)=VAL(RIGHT$(MAGSAM$(12),4))
64770 MAGSAM$(16)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-4)+RIGHT$("0000"+STR$(MAGSAM%(19)+1),4)
64772 GOSUB 64810:MAGSAM%(19)=MAGSAM%(19)+1:GOTO 64760
64780 MAGSAM$(16)=MAGSAM$(12):GOSUB 64810:MAGSAM%(19)=MAGSAM%(19)+1
64790 RETURN
64800 LSET MAGSAM.NI01$=MAGSAM$(16)
64802 PUT#MAGSAM%(5),MAGSAM%(16)
64804 RETURN
64810 LSET MAGSAM.NO01$=MAGSAM$(16)
64812 PUT#MAGSAM%(6),MAGSAM%(19)
64814 RETURN
64820 LSET MAGSAM.NI01$=""
64822 LSET MAGSAM.NH01$="H":LSET MAGSAM.NH02$=MKI$(256):LSET MAGSAM.NH03$=MKI$(0)
64824 LSET MAGSAM.NH04$=MKI$(MAGSAM%(4)):LSET MAGSAM.NH05$=MKI$(MAGSAM%(11))
64826 LSET MAGSAM.NH06$=MKI$(MAGSAM%(12)):LSET MAGSAM.NH07$=MKI$(MAGSAM%(19))
64828 LSET MAGSAM.NH08$=MKI$(MAGSAM%(18)):LSET MAGSAM.NH09$=MKI$(0)
64832 LSET MAGSAM.NH10$=MKI$(0):LSET MAGSAM.NH11$=MKI$(0)
64834 PUT#MAGSAM%(5),1
64836 RETURN
64850 IF MAGSAM%(17)<=MAGSAM%(11) THEN GOSUB 64560:MAGSAM%(14)=3
64852 MAGSAM%(17)=MAGSAM%(17)+1:RETURN
65100 MAGSAM$(16)=MAGSAM$(11)
65102 IF LEFT$(MAGSAM$(16),1)="O" THEN GOSUB 65200 ELSE GOSUB 65300
65104 MAGSAM$(16)=MAGSAM$(16)+MID$(MAGSAM$(12),MAGSAM%(14)-1,MAGSAM%(4)+5)
65106 MAGSAM%(14)=MAGSAM%(14)+MAGSAM%(4)+5
65108 MAGSAM$(11)=MAGSAM$(16):MAGSAM$(16)="I"
65110 RETURN
65200 IF LEN(MAGSAM$(16))<MAGSAM%(13)*(MAGSAM%(4)+5)+1 THEN GOTO 65290
65202 MAGSAM$(15)=RIGHT$(MAGSAM$(16),MAGSAM%(4)+5)
65204 MAGSAM$(16)=LEFT$(MAGSAM$(16),LEN(MAGSAM$(16))-(MAGSAM%(4)+5))+"O"+MAGSAM$(13)+RIGHT$("0000"+STR$(MAGSAM%(19)+1),4)
65206 GOSUB 64810:MAGSAM%(19)=MAGSAM%(19)+1
65208 MAGSAM$(16)="O"+MAGSAM$(15)
65290 RETURN
65300 MAGSAM$(15)=RIGHT$(MAGSAM$(16),MAGSAM%(4)+5)
65302 MAGSAM$(16)=LEFT$(MAGSAM$(16),LEN(MAGSAM$(16))-(MAGSAM%(4)+5))+"O"+MAGSAM$(13)+RIGHT$("0000"+STR$(MAGSAM%(19)),4)
65304 MAGSAM%(16)=MAGSAM%(16)-1:GOSUB 64800:MAGSAM%(16)=MAGSAM%(16)+1
65306 MAGSAM$(16)="O"+MAGSAM$(15)
65308 RETURN
65400 MAGSAM$(16)=MAGSAM$(11):GOSUB 64810
65402 MAGSAM%(19)=MAGSAM%(19)+1
65404 MAGSAM$(11)="I":MAGSAM$(16)="I"
65406 RETURN
65450 FIELD MAGSAM%(1),1 AS MAGSAM.H01$,2 AS MAGSAM.H02$,2 AS MAGSAM.H03$,2 AS MAGSAM.H04$,2 AS MAGSAM.H05$
65451 FIELD MAGSAM%(1),9 AS MAGSAM.DUM$,2 AS MAGSAM.H06$,2 AS MAGSAM.H07$,2 AS MAGSAM.H08$,2 AS MAGSAM.H09$
65452 FIELD MAGSAM%(1),17 AS MAGSAM.DUM$,2 AS MAGSAM.H10$,2 AS MAGSAM.H11$
65453 FIELD MAGSAM%(1),255 AS MAGSAM.I01$
65454 FIELD MAGSAM%(3),255 AS MAGSAM.O01$
65460 FIELD MAGSAM%(5),1 AS MAGSAM.NH01$,2 AS MAGSAM.NH02$,2 AS MAGSAM.NH03$,2 AS MAGSAM.NH04$,2 AS MAGSAM.NH05$
65461 FIELD MAGSAM%(5),9 AS MAGSAM.NDUM$,2 AS MAGSAM.NH06$,2 AS MAGSAM.NH07$,2 AS MAGSAM.NH08$,2 AS MAGSAM.NH09$
65462 FIELD MAGSAM%(5),17 AS MAGSAM.NDUM$,2 AS MAGSAM.NH10$,2 AS MAGSAM.NH11$
65463 FIELD MAGSAM%(5),255 AS MAGSAM.NI01$
65464 FIELD MAGSAM%(6),255 AS MAGSAM.NO01$
65466 RETURN
65510 FOR MAGSAM.I%=2 TO 249 STEP MAGSAM%(4)+5
65512 IF MID$(MAGSAM$(12),MAGSAM.I%,1)=" " THEN GOTO 65516
65514 NEXT MAGSAM.I%
65516 MAGSAM$(12)=LEFT$(MAGSAM$(12),MAGSAM.I%-1)
65518 RETURN
