10 REM SORTCORE Snabb sortering i minnet i korrekt alfabetisk ordning av fil 15 REM Program av Gunnar Tidner 20 REM Key P9%,L9% Recordl{ngd R9% 30 M%=14500% : REM anpassas efter tillg{ngligt minne 40 ; "Infil:"; : INPUT F1$ 50 ; "Recordl{ngd exkl CRLF:"; : INPUT R9% 60 ; "Sorteringsnyckel (startpos,l{ngd):"; : INPUT P9%,L9% 70 N%=M%/(R9%+L9%+4%) 80 ; "Kan sortera h|gst";N%;" records" 90 DIM Q$(N%)=R9%,S$(N%)=L9%+4%,B$=119% 100 OPEN F1$ ASFILE 1 110 ; "Utfil (om ej=Infil):"; : INPUT F3$ 120 IF LEN(F3$)=0 THEN F3$=F1$ 130 ONERRORGOTO 220 140 FOR I%=1% TO N% 150 INPUTLINE #1,B$ : B$=LEFT$(B$,LEN(B$)-2%) 160 IF RIGHT$(B$,LEN(B$))=" " THEN B$=LEFT$(B$,LEN(B$)-1%) : GOTO 160 170 B$=B$+SPACE$(R9%-LEN(B$)) 180 Q$(I%)=B$ 190 A$=MID$(B$,P9%,L9%) 200 S$(I%)=SPACE$(5%-LEN(NUM$(I%)))+RIGHT$(NUM$(I%),2%)+A$ 210 NEXT I% 220 IF ERRCODE=34% THEN CLOSE 1 : N%=I%-1% ELSE ; "Fel nr";ERRCODE 230 ; "Byt skiva f|r utfil?"; : OUT 6,131 : GET C$ : ; C$ 240 ; "Start sortering" 250 M%=N% : J9%=0% 260 M%=M%/2% 270 IF M%=0% THEN 360 280 FOR J%=1% TO N%-M% 290 FOR I%=J% TO 1% STEP -M% 300 K%=I%+M% 310 J9%=J9%+1% 320 IF RIGHT$(S$(I%),5%)<=RIGHT$(S$(K%),5%) THEN 350 330 T$=S$(K%) : S$(K%)=S$(I%) : S$(I%)=T$ 340 NEXT I% 350 NEXT J% : GOTO 260 360 OUT 6,131 : ; "Sorterat";N%;" records" 370 ; J9%;" j{mf|relser" 380 ONERRORGOTO 480 390 PREPARE F3$ ASFILE 1 400 FOR I%=1% TO N% 410 J%=VAL(LEFT$(S$(I%),4%)) 420 B$=Q$(J%) 430 ; #1,B$ 440 NEXT I% 450 CLOSE 1 460 ; "Sorterad fil: ";F3$ 470 END 480 ; "Fel nr";ERRCODE : STOP