10
20
30
40 REPEAT
50 PROCdown
60 PROCup
70 PROCtest
80 UNTIL J%>A% OR K%=0
90 END
100
110 DEFPROCdown
120 J%=0
130 REPEAT
140 J%=J%+1
150 UNTIL J%>A% OR A$(J%)>A$(1)
160 ENDPROC
170
180 DEFPROCup
190 K%=A%+1
200 REPEAT
210 K%=K%-1
220 UNTIL K%=0 OR A$(K%)<A$(1)
230 ENDPROC
240
250 DEFPROCtest
260 IF J%>A%:ENDPROC
270 IF K%=0:ENDPROC
280 IF J%<K%:PROCswap(J%,K%):ENDPROC
290 IF A$(J%)<A$(K%):PROCswap(1,J%) ELSE PROCswap(1,K%)
300 ENDPROC
310
320 DEFPROCswap(L%,M%)
330 temp$ = A$(L%)
340 A$(L%) = A$(M%)
350 A$(M%) = temp%
360 ENDPROC