C CLILIS    SOURCE    GF238795  18/01/22    21:15:00     9702           
      subroutine clilis(argume,jcolac)
C=======================================================================
C  Sous-programme clilis (COLlaborateur LIEr Liste)
C  Lie les objets recus a leur pointeur Esope
C=======================================================================
      integer iPile,iPoPi
      integer iPoint
      integer iargu,narg
      character*(8) typNom


-INC PPARAM
-INC CCOPTIO
-INC TMCOLAC
      segment LISARG
         character*8 nom(nArg)
         integer     adress(nArg)
      endsegment
      pointeur argume.LISARG
      pointeur jcolac.ICOLAC
      pointeur pile.ITLACC

C      write(ioimp,*) 'Entree dans CLILIS'

      nArg=argume.adress(/1)
      do 3 iArgu =1,nArg
C        recuperer son type
         typNom = argume.nom(iArgu)
C        recuper le numero de pile associe
         call typfil (typNom,iPile)
         pile=jcolac.kcola(iPile)
         iPoPi =  argume.adress(iArgu)
         if(iimpi.ge.7) then
            write(ioimp,*) 'Recollage d un objet ',typNom, iPoPi
         endif
         if(iPile.ge.24.and.iPile.le.27) goto 3
         if(iPoPi.eq.0) then
            if(iimpi.ge.7) then
               write(ioimp,*) 'Position dans la pile incorrecte'
               write(ioimp,*) 'Passage a l objet suivant'
            endif
            goto    3
         endif
c         iPoint=pile.itlac(iPoPi)
c         on deplace la recuperation de la valeur du pointeur dans le
c         switch pour eviter de planter en accedant a des piles non gerees         
*         if(iPoint.eq.0) then
*            if(iimpi.ge.7) then
*               write(ioimp,*) 'Pointeur de segment incorrect'
*            endif
*            goto    2
*         endif


C Redirection vers le traitement correspondant au type de la pile
c a toutes fins utiles, les etiquettes suivantes sont ranges par ligne de 10
         goto(
     &      0100, 0200, 0300, 0400, 0500, 0600, 0700, 0800, 0900, 1000,
     &      1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000,
     &      2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900, 3000,
     &      3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000,
     &      4100, 4200, 4300, 4400, 4500, 4600, 4700), iPile
         goto 2
c     ******************** meleme ********************
0100     continue
         iPoint=pile.itlac(iPoPi)
         call climel(iPoint,jcolac)
         goto 1
c     ******************** chpoint  ********************
0200     continue
         iPoint=pile.itlac(iPoPi)
         call clicpo(iPoint,jcolac)
         goto 1
c     ******************** mrigid   ********************
0300     continue
         iPoint=pile.itlac(iPoPi)
         call clirig(iPoint,jcolac)
         goto 1
c     ********************          ********************
0400     continue
         goto 1
c     ********************          ********************
0500     continue
         goto 1
c     ******************** bloq     ********************
0600     continue
         goto 1
c     ******************** elem     ********************
0700     continue
         goto 1
c     ******************** msolut   ********************
0800     continue
         goto 1
c     ******************** mstruc   ********************
0900     continue
         goto 1
c     ******************** mtable   ********************
1000     continue
         goto 1
c     ********************          ********************
1100     continue
         goto 1
c     ******************** msostu   ********************
1200     continue
         goto 1
c     ******************** imatri   ********************
1300     continue
         goto 1
c     ******************** mjonct   ********************
1400     continue
         goto 1
c     ******************** mattac   ********************
1500     continue
         goto 1
c     ******************** mmatri   ********************
1600     continue
         goto 1
c     ******************** mdefor   ********************
1700     continue
         goto 1
c     ******************** mlreel   ********************
1800     continue
         goto 1
c     ******************** mlenti   ********************
1900     continue
         goto 1
c     ******************** mcharg   ********************
2000     continue
         goto 1
c     ********************          ********************
2100     continue
         goto 1
c     ******************** mevoll   ********************
2200     continue
         goto 1
c     ******************** superele ********************
2300     continue
         goto 1
c     ******************** logique  ********************
2400     continue
         goto 1
c     ******************** flottant ********************
2500     continue
         goto 1
c     ******************** entier   ********************
2600     continue
         goto 1
c     ******************** mot      ********************
2700     continue
         goto 1
c     ******************** texte    ********************
2800     continue
         goto 1
c     ******************** listmots ********************
2900     continue
         goto 1
c     ******************** vecteur  ********************
3000     continue
         goto 1
c     ******************** vectd    ********************
3100     continue
         goto 1
c     ******************** point    ********************
3200     continue
         goto 1
c     ******************** config   ********************
3300     continue
         iPoint=pile.itlac(iPoPi)
         call clicfg(iPoint,jcolac)
         goto 1
c     ******************** mlchpo   ********************
3400     continue
         goto 1
c     ******************** mbasem   ********************
3500     continue
         goto 1
c     ******************** procedur ********************
3600     continue
         goto 1
c     ******************** bloc     ********************
3700     continue
         goto 1
c     ******************** mmodel   ********************
3800     continue
         iPoint=pile.itlac(iPoPi)
         call climod(iPoint,jcolac)
         goto 1
c     ******************** mchaml   ********************
3900     continue
         iPoint=pile.itlac(iPoPi)
         call clichm(iPoint,jcolac)
         goto 1
c     ******************** minte    ********************
4000     continue
C         write(ioimp,*) 'Recollage des mintes: Rien a faire'
         goto 1
c     ******************** nuage    ********************
4100     continue
         goto 1
c     ******************** matrak   ********************
4200     continue
         goto 1
c     ******************** matrik   ********************
4300     continue
         goto 1
c     ******************** objet    ********************
4400     continue
         goto 1
c     ******************** methode  ********************
4500     continue
         goto 1
c     ******************** esclave  ********************
4600     continue
         goto 1
c     ******************** fantome  ********************
4700     continue
         goto 1
c     **************************************************
C     Gestion des erreurs
2        continue
         write(ioimp,*) 'Probleme dans la pile',typNom, iPile
         moterr(1:8)=typNom
         call erreur (336)
         goto 1
C  Fin du case
1     continue
      if(iimpi.ge.7) then
         write(ioimp,*) 'Objet recolle.'
      endif

C  Fin de la boucle sur les piles
3     continue
C      write(ioimp,*) 'Sortie de CLILIS'
      end


 
 
 
