Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0028/sort.sno
There are 2 other files named sort.sno in the archive. Click here to see a list.
* BUBBLE SORT PROGRAM SIMILIAR TO THE ONE ON PAGE 111
* OF THE REFERENCE MANUAL. IT SORTS A TWO DIMENSIONAL ARRAY.
* THE ARGUMENTS ARE
*       ARRAY NAME
*
*       L.P. WADE 3-20-70 DEC
*

        SORTPAT = BREAK(',') . DIM1 ',' REM . DIM2
        DEFINE('SORT(NAME)I,J')
        DEFINE('SWITCH(NAME,DIM1,DIM2,VAR)I,TEMP')
        DEFINE('BUBBLE(NAME,DIM1,DIM2,VAR)')    :(DEFEND)

SORT PROTOTYPE(NAME) SORTPAT    :S(SORT1)
        OUTPUT = 'SORT CANNOT HANDLE THE ARRAY NAMED ' I
        OUTPUT = 'ILLEGAL PROTOTYPE = ' PROTOTYPE(NAME)
.               :(FRETURN)
SORT1   I = LE(I,DIM1) I + 1    :F(RETURN)
	IDENT(NAME<I + 1,1>) :S(RETURN)
        LGT(NAME<I,1>,NAME<I + 1,1>)    :F(SORT1)
        SWITCH(NAME,DIM1,DIM2,I)
        BUBBLE(NAME,DIM1,DIM2,I)        :(SORT1)

SWITCH  I = LE(I,DIM2) I + 1    :F(RETURN)
        TEMP = NAME<VAR,I>
        NAME<VAR,I> = NAME<VAR + 1,I>
        NAME<VAR + 1,I> = TEMP  :(SWITCH)

BUBBLE  VAR = GT(VAR,1) VAR - 1 :F(RETURN)
        LGT(NAME<VAR,1>,NAME<VAR + 1,1>)        :F(RETURN)
        SWITCH(NAME,DIM1,DIM2,VAR)      :(BUBBLE)
DEFEND
        TAB = ' '
        DEFINE('PRINTARRAY(NAME)TEMP,I,J') :(PRINTEND)

PRINTARRAY PROTOTYPE(NAME) SORTPAT      :S(PRINT1)
        OUTPUT = 'PRINTARRAY CANNOT HANDLE ARRAY ' 
        OUTPUT = 'ILLEGAL PROTOTYPE = ' PROTOTYPE(NAME)

                :(FRETURN)
PRINT1  I = NULL
        TEMP = NULL
        J = LE(J,DIM1) J + 1    :F(RETURN)
PRINT2  I = LE(I,DIM2) I + 1    :F(PRINT3)
	EQ(I,1) IDENT(NAME<J,I>) :S(PRINT1)
        TEMP = TEMP TAB NAME<J,I>  :(PRINT2)
PRINT3  OUTPUT = TEMP   :(PRINT1)
PRINTEND









*