Introduction
This is a sample of an OmniMark routine that can be used to sort a stream shelf based on the item key value.
Sample
  define function quicksort
           modifiable  stream   a
     from  value       counter  l     optional initial {1}
     to    value       counter  r-opt optional
  as
     ;
     ; Local variables
     ;
     local counter i
     local counter j
     local counter r
     local stream x
     local stream w
     local stream v
     ;
     ; Initialize variables
     ;
     do when r-opt is specified
        set r to r-opt
     else
        set r to (number of a)
     done
     set i to l
     set j to r
     set x to a@((i+j)/2)
     set key of x to key of a@((i+j)/2)
     repeat
        repeat
           do when (key of a@i) < (key of x)
              increment i
           else
              exit
           done
        again
        repeat
           do when (key of x) < (key of a@j)
              decrement j
           else
              exit
           done
        again
        do when i <= j
           set w to a@i
           set key of w to key of a@i
           set key of v to key of a@j
           remove key of a@j
           set a@i to a@j
           set key of a@i to key of v
           set a@j to w
           set key of a@j to key of w
           increment i
           decrement j
        done
        exit when i > j
     again
     ;
     ; Recurse
     ;
     quicksort a from l to j when l < j
     quicksort a from i to r when i < r
  return
Generated: April 21, 1999 at 2:01:46 pm
If you have any comments about this section of the documentation, send email to [email protected]
 Copyright © OmniMark Technologies Corporation, 1988-1999.