10 REM MIS2 CLARK BAKER 8/73 DSAA 11 REM ALPHA SORT FIXED 6/74 CLARK BAKER DSAA: PROJECT DELTA 15 DIM S(2500) 16 D1$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC":X$=X$+CHR$(X%) FOR X%=0% TO 96%:X$=X$+CHR$(X%) FOR X%=65% TO 90% 20 OPEN "MIS"+MID(NUM$(100%+ASCII(SYS(CHR$(6%)+CHR$(9%)))),2%,2%)+".TMP" FOR INPUT AS FILE 1%:DIM #1%,F$(2%)=32%,Q%(20%), M%(1%),P%(40%),Z%(2500%):OPEN F$(1%) FOR INPUT AS FILE 2%:OPEN F$(2%) FOR INPUT AS FILE 3%:INPUT #3%,R%,N%: FOR X%=1% TO N%:INPUT #3%,N$(X%),S1%(X%),L%(X%),T%(X%): NEXT X% 30 Z%=Z%(0%)-1%:P%=P%(0%)-1%:IF M%(1%)=0% THEN 50 40 E%=M%(1%):GOSUB 200:IF Z%>M%(0%) THEN Z%=M%(0%) 50 FOR S%=Q%(0%)-1% TO 1% STEP -1% 60 E%=Q%(S%):GOSUB 200 80 NEXT S% 85 OPEN F$(0%) FOR OUTPUT AS FILE 4% 90 FOR Z1%=1% TO Z% 95 R1%=Z%(Z1%):GOSUB 900 100 FOR X%=1% TO P% 120 PRINT #4%,MID(R$,S1%(P%(X%)),L%(P%(X%)));" "; 130 NEXT X%:PRINT #4%:NEXT Z1%:PRINT #4%,CHR$(26%); 140 CLOSE 1%,2%,3%,4%:KILL "MIS"+MID(NUM$(100%+ASCII(SYS(CHR$(6%)+ CHR$(9%)))),2%,2%)+".TMP":CHAIN "MIS" 15% 200 FOR X%=1% TO Z%:R1%=Z%(X%):GOSUB 900:S$=MID(R$,S1%(ABS(E%)), L%(ABS(E%))):T1%=T%(ABS(E%)):ON T1% GO TO 210,220,230 210 S(X%)=VAL(S$):GO TO 240 220 S(X%)=ASCII(S$)*256+ASCII(MID(S$,2%,1%)):GO TO 240 230 S(X%)=FND(S$) 240 NEXT X% 250 C%=1%:B%=Z%-1%:A%=1% 260 F%=-1% 270 FOR X%=A% TO B% STEP C% 280 ON SGN(E%)+2% GO TO 290,285,310 285 STOP 290 IF S(X%)S(X%+1%) THEN T%=Z%(X%):Z%(X%)=Z%(X%+1%):Z%(X%+1%)=T%: T=S(X%):S(X%)=S(X%+1%):S(X%+1%)=T:F%=0% 320 IF T1%=2% THEN IF S(X%)=S(X%+1%) THEN R1%=Z%(X%):GOSUB 900:S1$= MID(R$,S1%(ABS(E%)),L%(ABS(E%))):R1%=Z%(X%+1%):GOSUB 900:S2$= MID(R$,S1%(ABS(E%)),L%(ABS(E%))):ON SGN(E%)+2% GO TO 350,285,370 330 NEXT X%:IF F% THEN RETURN ELSE C%=C%*-1%:D%=B%:B%=A%:A%=C%+D%: GO TO 260 350 IF S1$S2$ THEN T%=Z%(X%):Z%(X%)=Z%(X%+1%):Z%(X%+1%)=T%:T=S(X%): S(X%)=S(X%+1%):S(X%+1%)=T:F%=0% 380 GO TO 330 390 C%=C%*-1%:D%=B%:B%=A%:A%=C%+D%:N=N+1% 400 GO TO 340 900 R$="":R4=R%:R3=R1%*R4-R4 910 IF R2%<>INT(R3/512)+1% THEN R2%=INT(R3/512)+1%:GET #2%,RECORD R2% 920 IF R3-INT(R3/512)*512+R4<=512% THEN FIELD #2%,R3-INT(R3/512)*512 AS R1$,R4 AS R2$:R$=R$+R2$:RETURN 930 R5%=512%-R3+INT(R3/512)*512:FIELD #2%,512%-R5% AS R1$,R5% AS R2$:R$=R$+R2$:R3=R3+R5%:R4=R4-R5%:GO TO 910 940 DEF FND(D$)=VAL(RIGHT(D$,8%))*32*12+((INSTR(1%,D1$,XLATE(MID(D$,4% ,3%),X$))-1%)/3%+1%)*32+VAL(LEFT(D$,2%)) 9999 END