C NOMOBJ    SOURCE    CB215821  24/07/17    21:15:12     11961          
      SUBROUTINE NOMOBJ(MTX,NAM,IVAL)
      IMPLICIT INTEGER(I-N)

-INC PPARAM
-INC CCOPTIO
-INC CCNOYAU
-INC SMBLOC
      CHARACTER*(*) NAM ,MTX
      CHARACTER*(8)      MTY,MTZ
      LOGICAL ZCACHE

C RECHERCHE DU NOM DANS LA PILE DES NOMS
      MTY=MTX
      IL=LEN(NAM)
      DO 765 I=IL,1,-1
      IF(NAM(I:I).NE.' ') GO TO 764
  765 CONTINUE
      I=1
  764 IL=I
      ier=345
      CALL POSCHA(NAM(1:IL),IPOSCH)
      MAA=MDEOBJ
      itrouv=0
*     LES PROCEDURES PEUVENT ETRE DES OBJETS LOCAUX
*     => On parcourt le debut de la pile uniquement pour la
*        mise en cache des procedures definies dans UTILPROC
*        ou GIBI.PROC
      ZCACHE=((IOLEC.LT.0).OR.(IOLEC.GT.654321))
      IF ((MTY.EQ.'PROCEDUR').AND.ZCACHE) MAA=1
      DO 3 I =MAA,LMNNOM
      IF(IPOSCH.EQ.INOOB1(I)) THEN
C ON A TROUVE
          itrouv=1
          MTZ=INOOB2(I)
          INOOB2(I)=MTY
          IF(MTY.NE.'PROCEDUR') THEN
             IOUEP2(I)=IVAL
          ELSE
             IF (ZCACHE) THEN
c              IF(MTZ.EQ.'PROCEDUR')THEN
                IPP=IOUEP2(I)
                IPIPR1(IPP) = IVAL
             ELSE
                IPIPRL=IPIPRL+1
                IF(IPIPRL.GT.IPIPR1(/1))  THEN
                   LM=IPIPR1(/1)+100
                   SEGADJ IPIPRO
                ENDIF
                IOUEP2(I)=IPIPRL
                IPIPR1(IPIPRL)=IVAL
             ENDIF
          ENDIF
          if(MTZ.ne.'PROCEDUR') RETURN
      ENDIF
   3  CONTINUE
      if(itrouv.eq.1) return
C IL FAUT CREER LE NOM
      LMNNOM=LMNNOM+1
      IO=IOUEP2(/1)
      IF(LMNNOM.GT.IO) THEN
         N=LMNNOM+50
         SEGADJ ITABOB,ITABOC,ITABOD
      ENDIF
      N=LMNNOM
      INOOB1(N)=IPOSCH
      INOOB2(N)=MTY
      IF(MTY.NE.'PROCEDUR')THEN
          IOUEP2(N)=IVAL
      ELSE
          IPIPRL=IPIPRL+1
          IF(IPIPRL.GT.IPIPR1(/1))  THEN
              LM=IPIPR1(/1)+100
              SEGADJ IPIPRO
          ENDIF
          IOUEP2(N)=IPIPRL
          IPIPR1(IPIPRL)=IVAL
      ENDIF
      RETURN
      END



 
 
 
 
