anchor.diff:  c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   c
   c
  -      subroutine lnklst(lm,lmx,indx,link,nbrs,nee,neq,numel,iwork,
  -     & nsizea,nnz)
  +      subroutine lnklst(neq,lm,lmx,infiel,nconsz,numelt,infetype,indx,
  +     & link,nbrs,iwork,nsizea,nnz,numsn,ierr,errstrng)
   c
   c      program to create a linked list of nonzero row and column entries
   c
  
positive.code: c
  c...  parameter definitions
  c
        include "nconsts.inc"
  c
  c...  subroutine arguments
  c
        integer nee,neq,numel,iwork,nsizea
        integer lm(nee,numel),lmx(nee,numel),indx(neq),link(iwork)
        integer nbrs(iwork)
  c
  c...  intrinsic functions
  c
  
negative.code:       call ifill(nbrs,izero,iwork)
  c
        inext=ione
        do iel=1,numelt
  c
  c      check that available storage is not exceeded
  c*     Temporary output to stdout that should be replaced by an
  c*     exception.
  c
          if(inext.gt.iwork) then
            ierr=300
            write(errstrng,700) inext-iwork
            return
          end if
          indien=infiel(1,iel)
          ietype=infiel(3,iel)
          nee=infetype(4,ietype)
          neeq=nee
          if(numsn.ne.izero) neeq=itwo*nee
  c
          do i=1,neeq
            ii=indien+i-1
            if(i.le.nee) irow=lm(ii)
            if(i.gt.nee) irow=abs(lmx(ii-nee))
            if(irow.ne.izero) then
              loc=indx(irow)
              do j=1,neeq
                jj=indien+j-1
                if(j.le.nee) icol=lm(jj)
                if(j.gt.nee) icol=abs(lmx(jj-nee))
  cdebug            write(6,*) "i,j,irow,icol,loc:",i,j,irow,icol,loc
                if(icol.ne.izero.and.icol.ne.irow) then
                  if(loc.eq.izero) then
                    loc=inext
                    indx(irow)=inext
                    nbrs(inext)=icol
                    link(inext)=-irow
                    inext=inext+1
                  else
                    loctmp=loc
   40               continue
                      ival=nbrs(loctmp)
                      if(icol.eq.ival) goto 30
                      locsav=loctmp
                      loctmp=link(loctmp)
                    if(loctmp.gt.izero) goto 40
                    link(locsav)=inext
                    nbrs(inext)=icol
                    link(inext)=-irow
                    inext=inext+1
                  end if
                end if
   30           continue
              end do
            end if
          end do
        end do
        nsizea=inext-ione
        nnz=nsizea+neq+ione
   700  format("lnklst:  Working storage exceeded by ",i7)
        return
        end
  c
  c version
  c $Id: lnklst.f,v 1.3 2004/07/16 16:02:21 willic3 Exp $
  c
  c Generated automatically by Fortran77Mill on Wed May 21 14:15:03 2003
  c
  