SSORT: /*@ */ /* Sort a stem array "mlist." */ arg aord /* Ascending or Descending */ ntl = mlist.0-1 /* NextToLast */ do base = 1 to ntl /* all except last */ whereami = base if whereami%10*10 = base then say base do curs = base+1 to mlist.0 /* all except first */ select /* */ when aord='A' then do /* Ascending */ if mlist.base > mlist.curs then do tmp = mlist.base /* save higher in TMP */ mlist.base = mlist.curs /* load lower to BASE */ mlist.curs = tmp /* load TMP to CURS */ end /* */ end /* A */ /* */ when aord='D' then do /* Descending */ if mlist.base < mlist.curs then do tmp = mlist.base /* save lower in TMP */ mlist.base = mlist.curs /* load higher in BASE */ mlist.curs = tmp /* load TMP to CURS */ end /* */ end /* D */ /* */ otherwise do /* parm was invalid */ say 'Sort direction must be A or D.' return 8 /* */ end /* */ end /* select */ /* */ end /* curs */ /* */ end /* base */ /* */ return 0 /*@ SSORT */