REM  *****************************
REM  SORT UTILITY
REM  (c) 1990   J. Ansell
REM  *****************************
:
ON ERROR PRINT '"BASIC error from SORT":REPORT:PRINT " at line ";ERL:END
:
SORTMAX%=10000                           :REM  Maximum Lines
SORTFILEIN$="<SORT$IN>"
SORTFILEOUT$="<SORT$OUT>"
DIM SORT$(SORTMAX%)
PROCREAD
:
REPEAT
FOR J%=I%-2 TO 0 STEP -1
IF SORT$(J%)>SORT$(J%+1)THEN
  L$=SORT$(J%)
  SORT$(J%)=SORT$(J%+1)
  SORT$(J%+1)=L$
ENDIF
NEXT
SP%=FALSE
FOR J%=0 TO I%-2
IF SORT$(J%)>SORT$(J%+1)THEN
  SP%=TRUE
  L$=SORT$(J%)
  SORT$(J%)=SORT$(J%+1)
  SORT$(J%+1)=L$
ENDIF
NEXT
UNTIL SP%=FALSE
:
PROCWRITE
END
:
DEF PROCREAD                             :REM  Read File
LOCAL CHANNEL%
CHANNEL%=OPENIN SORTFILEIN$
I%=0
REPEAT
SORT$(I%)=GET$#CHANNEL%
I%+=1
UNTIL EOF#CHANNEL%
CLOSE#CHANNEL%
ENDPROC
:
DEF PROCWRITE                            :REM  Read File
LOCAL CHANNEL%
CHANNEL%=OPENOUT SORTFILEOUT$
J%=0
REPEAT
BPUT#CHANNEL%,SORT$(J%)
J%+=1
UNTIL J%=I%
CLOSE#CHANNEL%
OSCLI("SETTYPE "+SORTFILEOUT$+" TEXT")
ENDPROC
