1 REM *SORT.BA* 2 REM *SORTS DATA IN DESCENDING ORDER* 3 CLS:CLEAR1000:SCREEN0,0:KEYON:DEFINTI,J 5 ONERRORGOTO63 6 BS$="FILE: [......]"+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8)+CHR$(8) 7 CS$=CHR$(27)+"J":VP$=CHR$(27)+"p":VQ$=CHR$(27)+"q" 8 PRINT@8,CS$;VP$;" SHELL-METZNER SORT ";VQ$ 9 PRINT@120,"0=DISC 1=RAM (DEFAULT=0)":INPUT"FILE TYPE";DV 10 PRINT@80,CS$ 11 IFDVTHENFILESELSELFILES 12 PRINT"SORT ";BS$;:LINEINPUTF$ 13 IFDVTHENF$="RAM:"+F$ELSEF$="0:"+F$ 14 PRINT@120,CS$;F$ 15 PRINT"0=Y 1=X,Y (DEFAULT=0)":INPUT"DATA TYPE";DT:PRINT 16 IFDTTHENPRINT"0=SORT Y 1=SORT X (DEFAULT=0)":INPUT"SORT MODE";S 17 OPENF$FORINPUTAS1 18 LINEINPUT#1,DU$:CT=CT+1 19 IFEOF(1)THEN20ELSE18 20 CLOSE:PRINT@120,CS$;F$:PRINT"COUNT:";CT 21 DIMY(CT):IFDTTHENDIMX(CT) 22 OPENF$FORINPUTAS1 23 FORI=1TOCT 24 IFDTTHENINPUT#1,X(I) 25 INPUT#1,Y(I) 26 NEXT:CLOSE 27 IFSTHENGOSUB67 28 REM SHELL-METZNER SORT 29 PRINT@560,"Sorting..." 30 D1=CT 31 IFD1<=1THEN45 32 D1=INT(D1/2) 33 D2=1 34 FORJ=1TO(CT-D1):PRINT@570,J 35 I=J+D1 36 IFY(J)<=Y(I)THEN41 37 H1=Y(I):IFDTTHENH2=X(I) 38 Y(I)=Y(J):IFDTTHENX(I)=X(J) 39 Y(J)=H1:IFDTTHENX(J)=H2 40 D2=0 41 NEXTJ 42 IFD2=0THEN33 43 GOTO31 44 PRINT@560,CS$;"Done" 45 IFSTHENGOSUB67 46 OPEN"SORT"FOROUTPUTAS1 47 FORI=1TOCT 48 IFDTTHENPRINT#1,X(I);","; 49 PRINT#1,Y(I) 50 NEXT 51 CLOSE 52 PRINT@560,CS$;"DATA IN SORT.DO" 53 PRINT@600,"KILL FILES RUN QUIT 0:TOP"; 54 ONKEYGOSUB56,61,,3,55,,,60:GOTO54 55 MENU 56 PRINT@80,CS$:IFDVTHENFILESELSELFILES 57 PRINT"KILL ";BS$;:LINEINPUTK$ 58 IFDVTHENK$="RAM:"+K$ELSEK$="0:"+K$ 59 K$=K$+".DO":KILLK$:GOTO53 60 RUN"0:TOP" 61 PRINT@80,CS$:IFDVTHENFILESELSELFILES 62 GOTO53 63 REM ERROR 64 IFERR=52THENPRINT@560,CS$;VP$;".DO FILE NOT FOUND";VQ$:RESUME53 65 IFERR=55THENPRINT@560,CS$;VP$;"BAD FILE NAME";VQ$:RESUME53 66 PRINTVP$;"ERROR";ERR;ERL;VQ$:END 67 FORI=1TOCT:S1=Y(I):S2=X(I):Y(I)=S2:X(I)=S1:NEXT:SOUND5000,5:RETURN