anchor.diff:    !                    on exit      solution vector
     !           iv       communication array
     !======================================================================!
  -  subroutine NUSOL0(R_h_s,Ir)
  +  subroutine NUSOL0(R_h_s,NEQns,NDEg,NSTop,IPErm,XLNzr,COLno,DIAg,ZLN,DSLn,STAge,Ir)
       use HECMW_UTIL
       implicit none
       !------
  +    integer, intent(in):: NEQns
  +    integer, intent(in):: NDEg
  +    integer, intent(in):: NSTop
  +    integer, intent(in):: IPErm(:)
  +    integer, intent(in):: XLNzr(:)
  +    integer, intent(in):: COLno(:)
  +    real(kind=8), intent(in):: DIAg(:)
  +    real(kind=8), intent(in):: ZLN(:)
  +    real(kind=8), intent(in):: DSLn(:)
  +    integer, intent(inout):: STAge
       integer, intent(out):: Ir
       real(kind=8), intent(inout):: R_h_s(*)
       !------
  -    integer:: lwk
       integer:: ndegl
  +    integer:: ierror
       real(kind=8), pointer :: wk(:)
   
       if ( STAge/=30 .and. STAge/=40 ) then
  
positive.code:     if ( STAge==30 ) write (6,*) 'warning a matrix was build up '//'but never solved.'
      if ( STAge==10 ) then
        allocate (DIAg(NEQns*ndeg2l),stat=IERror)
        RALoc = RALoc + NEQns*ndeg2l
        allocate (ZLN(LEN_colno*ndeg2),stat=IERror)
  
        RALoc = RALoc + LEN_colno*ndeg2
        allocate (DSLn(LEN_dsln*ndeg2),stat=IERror)
  
        if ( IERror/=0 ) stop "Allocation error dsln"
  
        RALoc = RALoc + LEN_dsln*ndeg2
      endif
      if ( STAge/=20 ) then
  
negative.code:         deallocate (XLEaf)
          deallocate (LEAf)
          deallocate (BTRee)
          !rmem
          left = (left+neqns1) + lncol
          !rmiv
  