        subroutine DESOUT(INDX,NAME,len,TTYOUT)
      include 'MODNAM.INC'
        integer I, LRAIL, K, TTYOUT, INDX, len, COL, ENDCOL
        character NAME(6)*1,OUTLIN*80,TYDAT(5)*17,STTYP(4)*6,TEMP*3
        data TYDAT/' Complex         ',' Double Precision',
     &' Real            ',' Integer         ',
     &' Character       '/
        data STTYP/'Scalar','Vector','Matrix','Table '/
      OUTLIN = ' '
      write (OUTLIN,5000) (NAME(I),I=1,len)
5000  format (6A1)
      COL = len+2
      OUTLIN(COL:COL+3) = 'is a'
      COL = COL+4
      if (TD(INDX).eq.4) then
         OUTLIN(COL:COL) = 'n'
         COL = COL+1
      endif
      OUTLIN(COL:COL+16) = TYDAT(TD(INDX))
      COL = COL+18
      OUTLIN(COL:COL+5) = STTYP(TS(INDX))
      COL = COL+7
      if (TS(INDX).eq.1) then
         OUTLIN(COL-1:COL-1) = '.'
         go to 130
      endif
      OUTLIN(COL:COL+4) = 'with '
      COL = COL+5
      if (TS(INDX).eq.4) then
         OUTLIN(COL:COL+11) = 'dimensions ('
         COL = COL+12
      endif
      write (TEMP,5010) TCL1(INDX)
5010  format (I3)
      do 100 I = 1, 3
         if (TEMP(I:I).ne.' ') then
            OUTLIN(COL:COL) = TEMP(I:I)
            COL = COL+1
         endif
100   continue
      if (TS(INDX).eq.2) then
         OUTLIN(COL:COL+9) = ' elements.'
         go to 130
      endif
      if (TS(INDX).eq.3) then
         OUTLIN(COL:COL+9) = ' rows and '
         COL = COL+10
      else
         OUTLIN(COL:COL) = ','
         COL = COL+1
      endif
      write (TEMP,5010) TCL2(INDX)
      do 110 I = 1, 3
         if (TEMP(I:I).ne.' ') then
            OUTLIN(COL:COL) = TEMP(I:I)
            COL = COL+1
         endif
110   continue
      if (TS(INDX).eq.3) then
         OUTLIN(COL:COL+8) = ' columns.'
         go to 130
      else
         OUTLIN(COL:COL) = ','
         COL = COL+1
      endif
      write (TEMP,5010) TCL3(INDX)
      do 120 I = 1, 3
         if (TEMP(I:I).ne.' ') then
            OUTLIN(COL:COL) = TEMP(I:I)
            COL = COL+1
         endif
120   continue
      OUTLIN(COL:COL+1) = ').'
130   continue
      ENDCOL = LRAIL(OUTLIN,80)
      if (ENDCOL.eq.80) ENDCOL = 79
      do 160 I = 1, 79
140      continue
         if (OUTLIN(I:I+1).eq.'  ') then
            do 150 K = I+1, ENDCOL
               OUTLIN(K:K) = OUTLIN(K+1:K+1)
150         continue
            OUTLIN(ENDCOL:ENDCOL) = ' '
            ENDCOL = ENDCOL-1
            go to 140
         endif
         if (I.ge.ENDCOL) go to 170
160   continue
170   continue
      ENDCOL = LRAIL(OUTLIN,80)
      if (ENDCOL.eq.80) ENDCOL = 79
      write (TTYOUT,5020) (OUTLIN(1:ENDCOL))
5020  format (/1X,A)
      return
      end
