      subroutine istkpr
      common /cstak / dstak(500)
      integer istats(6), isize(5)
      double precision dstak
      integer istak(1000)
      logical init
      external i1mach
c
      equivalence (dstak(1), istak(1))
      equivalence (istak(1), lout)
      equivalence (istak(2), lnow)
      equivalence (istak(3), lused)
      equivalence (istak(4), lbnd)
      equivalence (istak(5), lmax)
      equivalence (istak(6), lalc)
      equivalence (istak(7), lneed)
      equivalence (istak(8), lbook)
      equivalence (istak(11), isize(1))
c
      data init / .true. /
c
      if (init) call i0tk00 (init, 500, 4)
c
      lperm = lmax - lbnd + 1
      ltotal = lused + lperm
c
      iunit = i1mach (2)
      write (iunit, 10) lout, lalc, lnow, lused, lperm, ltotal, lmax
 10   format (///5x, 28h---- storage statistics ----
     1  //35h number of active stack allocations, 7x, i8
     2   /35h total number of allocations so far, 7x, i8
     3  //41h current active length of dynamic storage, 1x, i8
     4   /39h maximum length of dynamic storage used, 3x, i8
     5  //42h current = max length of permanent storage, i8
     6  //27h total maximum storage used, 15x, i8
     7   /30h total maximum storage allowed, 12x, i8 /)
c
      return
      end
