kusano 7d535a
      program f77_main
kusano 7d535a
      integer maxn, maxnz
kusano 7d535a
      parameter ( maxn = 10000, maxnz = 100000 )
kusano 7d535a
      integer rowind(maxnz), colptr(maxn)
kusano 7d535a
      real*8  values(maxnz), b(maxn)
kusano 7d535a
      integer n, nnz, nrhs, ldb, info
kusano 7d535a
      integer factors(8), iopt
kusano 7d535a
*
kusano 7d535a
      call hbcode1(n, n, nnz, values, rowind, colptr)
kusano 7d535a
*
kusano 7d535a
      nrhs = 1
kusano 7d535a
      ldb = n
kusano 7d535a
      do i = 1, n
kusano 7d535a
         b(i) = 1
kusano 7d535a
      enddo
kusano 7d535a
*
kusano 7d535a
* First, factorize the matrix. The factors are stored in factor() handle.
kusano 7d535a
      iopt = 1
kusano 7d535a
      call c_fortran_dgssv( iopt, n, nnz, nrhs, values, rowind, colptr, 
kusano 7d535a
     $                      b, ldb, factors, info )
kusano 7d535a
*
kusano 7d535a
      if (info .eq. 0) then
kusano 7d535a
         write (*,*) 'Factorization succeeded'
kusano 7d535a
      else
kusano 7d535a
         write(*,*) 'INFO from factorization = ', info
kusano 7d535a
      endif
kusano 7d535a
*
kusano 7d535a
* Second, solve the system using the existing factors.
kusano 7d535a
      iopt = 2
kusano 7d535a
      call c_fortran_dgssv( iopt, n, nnz, nrhs, values, rowind, colptr, 
kusano 7d535a
     $                      b, ldb, factors, info )
kusano 7d535a
*
kusano 7d535a
      if (info .eq. 0) then
kusano 7d535a
         write (*,*) 'Solve succeeded'
kusano 7d535a
         write (*,*) (b(i), i=1, 10)
kusano 7d535a
      else
kusano 7d535a
         write(*,*) 'INFO from triangular solve = ', info
kusano 7d535a
      endif
kusano 7d535a
kusano 7d535a
* Last, free the storage allocated inside SuperLU
kusano 7d535a
      iopt = 3
kusano 7d535a
      call c_fortran_dgssv( iopt, n, nnz, nrhs, values, rowind, colptr, 
kusano 7d535a
     $                      b, ldb, factors, info )
kusano 7d535a
*
kusano 7d535a
      stop
kusano 7d535a
      end
kusano 7d535a
kusano 7d535a