*COMDECK ALSORTARY
      SUBROUTINE SORTARY(ARRAY,NUM,TYPE)
C 
C 
C 
C        THIS ROUTINE IS USED TO SORT VARIOUS ARRAYS.  IT DOES
C        NOT MOVE THE ARRAYS, BUT RATHER FILLS ANOTHER ARRAY
C        WITH POINTERS TO THE SORTED ARRAY.  'ARRAY' IS THE ARRAY 
C        OF POINTERS, 'NUM' THE NUMBER OF ELEMENTS TO SORT, AND 
C        'TYPE' IS THE TYPE OF SORT.    (A SHELL-METZGER SORT)
C 
C 
C        TYPE 
C 
C        1 - SORT MODULES NAMES ALPHABETICALLY
C        2 - SORT RESERVED ARRAY
C        3 - SORT APPLICTIONS BY LENGTH IN REVERSE ORDER
C        4 - SORT MODTABL BY LOAD ADDRESS 
C        5 - SORT MODULES BY LENGTH IN REVERSE ORDER. 
*        6 - SORT MODULES BY DECREASING MODULO LENGTH 
C 
C 
*CALL ALCOMMON
      DIMENSION ARRAY(NUM)
C 
C 
C 
      DO 1 I=1,NUM
   1  ARRAY(I) = I
      LDIST = NUM 
   2  LDIST = LDIST/2 
      IF (LDIST .EQ. 0) RETURN
      ITER = NUM - LDIST
      DO 30 I=1,ITER
      INDX1 = I 
   3  INDX2 = INDX1 + LDIST 
      GO TO (5,6,7,8,9,10), TYPE
* 
   5  IF (AND(MODTABL(1,ARRAY(INDX1)),MODNAME) .LE. 
     X    AND(MODTABL(1,ARRAY(INDX2)),MODNAME))    GO TO 30 
      GO TO 20
* 
   6  IF (RESERVD(1,ARRAY(INDX1)) .LE. RESERVD(1,ARRAY(INDX2))) 
     X     GO TO 30 
      GO TO 20
* 
   7  IF (AND(APPLNAM(ARRAY(INDX1)),APLNMSK) .GE. 
     X    AND(APPLNAM(ARRAY(INDX2)),APLNMSK))   GO TO 30
      GO TO 20
* 
   8  IF (OR(SHIFT(AND(MODTABL(1,ARRAY(INDX1)),LDADMSK),
     1    12),ARRAY(INDX1)) .LE.
     2    OR(SHIFT(AND(MODTABL(1,ARRAY(INDX2)),LDADMSK),
     3    12),ARRAY(INDX2)))   GO TO 30 
      GO TO 20
* 
   9  IF (MODTABL(2,ARRAY(INDX1)) .GE.
     X    MODTABL(2,ARRAY(INDX2))) GO TO 30 
         GO TO 20 
* 
10    IF (OR(SHIFT(AND(MODTABL(4,ARRAY(INDX1)),MDUMASK),
     1    12),ARRAY(INDX1)) .GE.
     2    OR(SHIFT(AND(MODTABL(4,ARRAY(INDX2)),MDUMASK),
     3    12),ARRAY(INDX2)))   GO TO 30 
   20 TEMP = ARRAY(INDX1) 
      ARRAY(INDX1) = ARRAY(INDX2) 
      ARRAY(INDX2) = TEMP 
      INDX1 = INDX1 - LDIST 
      IF (INDX1 .GE. 1) GO TO 3 
   30 CONTINUE
      GO TO 2 
      END 
C 
C 
C 
