C CDPILI    SOURCE    PV        17/12/05    21:15:08     9646           
      subroutine cdpili(argume,jcolac,diff)
C=======================================================================
C  Sous-programme cdpili (Collaborateur Difference PIle LIste)
C  Recheche les objets de la liste argume qui ne sont pas dans la pile
C  jcolac. Le resultat est enregistre dans la liste diff
C=======================================================================
      integer iArgu,nArgu
      integer nArg
      integer iPile,iPoPi
      integer nObj
      integer iPoint
      character*(8) typNom

-INC PPARAM
-INC CCOPTIO
-INC TMCOLAC
      segment LISARG
         character*8 nom(nArg)
         integer     adress(nArg)
      endsegment
      pointeur jcolac.ICOLAC
      pointeur pile.ITLACC
      pointeur argume.LISARG
      pointeur diff.LISARG
C      write(ioimp,*) 'Entree dans CDPILI'
      nArgu=argume.adress(/1)
      if(iimpi.ge.7) then
         write(ioimp,*) 'Nombe d objets a verifier',nArgu
      endif
      nArg0=diff.adress(/1)
      nArg=nArg0+nArgu

      segadj diff
      narg=nArg0

C pour chaque argument
      do iArgu =1,nArgu
C        recuperer son type
         typNom = argume.nom(iArgu)
         if(iimpi.gt.0) then
                  if (typnom.ne.'POINT') then
            write(ioimp,*) 'Objet ',iArgu,' de type ',typnom
               endif
         endif
C        recuper le numero de pile associe
         call typfil (typNom,iPile)
         iPopi = argume.adress(iArgu)
         pile=jcolac.kcola(iPile)
         nObj=pile.itlac(/1)
         if(iPopi.gt.0.and.iPopi.le.nObj)  then
            iPoint=pile.itlac(iPopi)
            if(iPoint.le.0) then
               if(iimpi.ge.7) then
                  write(ioimp,*) 'A recevoir  en memoire'
                  write(ioimp,*) 'Pointeur nul'
               endif
               nArg=nArg+1
               diff.nom(nArg)=argume.nom(iArgu)
               diff.adress(nArg)=argume.adress(iArgu)
            else
               if(iimpi.gt.0) then
                  if (typnom.ne.'POINT') then
                  write(ioimp,*) ' deja en memoire'
               endif
               endif

            endif
         else
            if(iimpi.ge.7) then
                  write(ioimp,*) 'A recevoir  en memoire'
              write(ioimp,*) 'Position en dehors des limites',iPoPi,'/',
     &nObj
            endif
            nArg=nArg+1
            diff.nom(nArg)=argume.nom(iArgu)
            diff.adress(nArg)=argume.adress(iArgu)
         endif
      enddo
      segadj diff

C      write(ioimp,*) 'Sortie de CDPILI'
      end



 
 
