      subroutine tgslc(a,x,r,m,l,lda)
      integer m,l,lda
      complex a(lda,1),x(m,l),r(1)
c
c     tgslc calls tgslc1 to solve the complex linear system
c     a * x = b
c     with the tg - matrix a .
c
c     on entry
c
c        a       complex(m**2,2*l - 1)
c                the first row of blocks of the tg - matrix
c                followed by its first column of blocks beginning
c                with the second block. each block is represented
c                by columns. on return a is unaltered .
c
c        x       complex(m*l)
c                the right hand side vector b .
c
c        r       complex(m**2*(2*l + 3) + m)
c                a work vector .
c
c        m       integer
c                the order of the blocks of the matrix a .
c
c        l       integer
c                the number of blocks in a row or column
c                of the matrix a .
c
c        lda     integer
c                the leading dimension of the array a .
c
c     on return
c
c        x       the solution vector .
c
c     toeplitz package. this version dated 07/23/82 .
c
c     subroutines and functions
c
c        toeplitz package ... tgslc1
c
c     internal variables
c
      integer mm,mml,mml1,mml2,mml3,mml4,mml5,mml6
c
c     call subroutine tgslc1
c
      mm = m**2
      mml = mm*(l - 1) + 1
      mml1 = 2*mml - 1
      mml2 = mml1 + mm
      mml3 = mml2 + mm
      mml4 = mml3 + mm
      mml5 = mml4 + mm
      mml6 = mml5 + mm
c
      call tgslc1(a,a(1,l+1),x,x,r,r(mml),r(mml1),r(mml2),
     *            r(mml3),r(mml4),r(mml5),r(mml6),m,l,lda)
c
      return
      end