C OOOYNF    SOURCE    PV090527  26/04/24    08:23:36     12524          
      SUBROUTINE OOOYNF (LRET,PSEG,LSEG)
C-------------------------------------------------------------------
C
C                  INITIALISATION D'UN SEGMENT FIXE
C
C   ->LRET  1  PLUS DE PLACE MEMOIRE
C           2  OK
C
C   ->PSEG     POINTEUR DESIGNANT LE SEGMENT CREE
C     LSEG     NOMBRE DE MOTS DE DONNEES DU SEGMENT
C
C PROGRAMMEUR : MOUGIN
C       MODIF : 09/01/89    UTILISER  OOOMIN  SIMPLIFIE
C       MODIF : 25/01/89    UTILISER  OOODEX  SIMPLIFIE
C       MODIF : 25/01/89    SUPPRIMER L'ARGUMENT  IRET
C
C-------------------------------------------------------------------
C
%INC IOOADR
%INC IOOADZ
%INC IOODES
%INC IOOSGM
%INC IOOWCOM
      POINTEUR PSEG.PSEG
C
      IF (LSEG.LE.0)                                   GO TO 901
C
C     S'ASSURER QU'IL Y A UN DESCRIPTEUR
C
      IF   (-MDIDS(MZIDE1).EQ.MZIDE1)                  THEN
        IF (TESOOO) CALL OOOWER ('OOOINI => OOODEX : ADD DESCRIPTEURS')
        CALL OOODEX (LRET,MZNDEX)
        IF (TESOOO) CALL OOOWER ('OOOINI <= OOODEX : FIN')
        IF (LRET.EQ.1)                                 RETURN
      ENDIF
C
      LSG = LSEG+MSLCZ
 110  CALL OOOMIN (LRET,ZMEMFIX,ISEG,LSG)
      IF (LRET.EQ.1)                                   THEN
        CALL OOOMWF (LRET,LSG)
        IF (LRET.EQ.1)                                 RETURN
                                                       GO TO 110
      ENDIF
C
C****** ENLEVE LE DESCRIPT DE LA CHAINE DES DESCRIPT. LIBRES
C
      PSEG          = -MDIDS(MZIDE1)
      MDIDS(MZIDE1) =  MDIDS(PSEG)
      MDIDP(-(MDIDS(PSEG)))=-MZIDE1
C
C****** IMPLANTATION SEGMENT
C
C       INDICE:ISEG,LG:LSG,DESCRIPT:PSEG
C       INITIALISER LE DESCRIPTEUR DU SGM:
C       INSERER DANS LA CHAINE DES SEGMENTS ACTIFS
      MDZERO(PSEG)=0
C       IMPLANTATION MEMOIRE DU SGM DE LG (LSG)
      MSIDE(ISEG) = PSEG
      MDISG(PSEG) = ISEG
      MDTYP(PSEG) = MDLTYP(MDFIXE,MDMEM,MDACT,0,0)
C
      IDA    = MDACHN(FIXE)
      MDCHNP , IDA(PSEG)
C       MAJ DES STATS/SGM ET /MOTS:  NBRE ACTUEL ET MAX DEFINI
C                                    NBRE ACTIF ET MAX ACTIF
      MZJSS(ACTUEL) = MZJSS(ACTUEL)+1
      MZJSM(ACTUEL) = MZJSM(ACTUEL)+LSG
      MZJSS(DEF)    = MAX(MZJSS(DEF),MZJSS(ACTUEL))
      MZJSM(DEF)    = MAX(MZJSM(DEF),MZJSM(ACTUEL))
      MZJSS(ACTACTIF)=MZJSS(ACTACTIF)+1
      MZJSS(MAXACTIF)=MAX(MZJSS(MAXACTIF),MZJSS(ACTACTIF))
      MZJSM(ACTACTIF)=MZJSM(ACTACTIF)+LSG
      MZJSM(MAXACTIF)=MAX(MZJSM(MAXACTIF),MZJSM(ACTACTIF))
C
      LRET = 2
                                                       RETURN
C-----------------------------------------------------------------------
C
C                         MESSAGES D'ERREUR
C
 901  CALL OOOERR (LSEG,1,'LONGUEUR DU SEGMENT INVALIDE')
                                                        STOP 16
      END
 
