C VERIMO    SOURCE    CHAT      05/01/13    04:05:38     5004
      SUBROUTINE VERIMO(IBOS,IBONTI,ICHA,ITOUS,ILEX,IPX,ITYPE)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C=======================================================================
C   POUR OPERATEUR EVOL : POUR UN MODE OU UN SOLSSTA,VERIFIE LA
C   COMPATIBILITE DU MSOLUT ET DU LISTENTI .
C   RETOUR :DANS ILEX UN SEGMENT MSOLEN QUI CONTIENT LA LISTE DES CHAMPS
C           A PRENDRE, DANS IPX UN LISTREEL A METTRE DANS LE MEVOLL
C          :ITYPE ='ITYSOL '
C   CREATION    : 14/10/85
C   PROGRAMMEUR : FARVACQUE
C=======================================================================

-INC PPARAM
-INC CCOPTIO
-INC SMELEME
-INC SMSOLUT
-INC SMLREEL
-INC SMLENTI
      CHARACTER*8 ITYPE
C
      IF(IBONTI.EQ.0.AND.ITOUS.EQ.0) THEN
          MOTERR(1:8)='LISTENTI'
          CALL ERREUR(37 )
C         MODE ON ATTEND UN LECT
          GOTO 5000
      ENDIF
C
C **** ON VERIFIE D'ABORD QUE LA SUITE MLENTI EST CROISSANTE
C
      IF(IBONTI.NE.0) THEN
         MLENTI=IBONTI
         SEGACT MLENTI
         LCAS=LECT(/1)
         DO 161 I=2,LCAS
         IF(LECT(I).LE.LECT(I-1)) GOTO 140
  161    CONTINUE
      ENDIF
C
      MSOLUT=IBOS
      SEGACT MSOLUT
      MSOLE1=MSOLIS(ICHA)
      SEGACT MSOLE1
      LTE=MSOLE1.ISOLEN(/1)
      IF (ITOUS.EQ.0) THEN
        N=LCAS
      ELSE
        N=LTE
      ENDIF
      SEGINI MSOLEN
      ILEX=MSOLEN
      JG=0
      SEGINI MLREEL
      IPX=MLREEL
      IF(ITOUS.EQ.1) GOTO 10
C
      IF(LTE.LT.LCAS.OR.LTE.LT.LECT(LCAS)) GOTO 140
C
      INN=0
      DO 1520 I=1,LCAS
      K=MSOLE1.ISOLEN(LECT(I))
      IF(K.NE.0) INN=INN+1
 1520 CONTINUE
      JG0 = PROG(/1)
      JG=JG0 + INN
      SEGADJ MLREEL
      INN=1
      DO 152 I=1,LCAS
      K=MSOLE1.ISOLEN(LECT(I))
      IF(K.EQ.0) GOTO 140
      ISOLEN(I)=K
      PROG(JG0+INN)=LECT(I)
      INN=INN+1
  152 CONTINUE
      SEGDES MLENTI
      GOTO 11
C
  140 CONTINUE
      MOTERR(1:8)='SOLUTION'
      MOTERR(9:16)='LISTENTI'
      CALL ERREUR(135)
      GOTO 5000
C
C  ****** CAS ITOUS=1 *************************
C
   10 CONTINUE
      INN=0
      DO 1010 J=1,LTE
      K=MSOLE1.ISOLEN(J)
      IF(K.NE.0) INN=INN+1
1010  CONTINUE
      JG0= PROG(/1)
      JG=JG0+INN
      SEGADJ MLREEL
      II=0
      DO 101 J=1,LTE
      K=MSOLE1.ISOLEN(J)
      IF(K.EQ.0) GOTO 101
      II=II+1
      PROG(JG0+II)=J
      ISOLEN(II)=K
  101 CONTINUE
      N=II
      SEGADJ MSOLEN
C
  11  CONTINUE
      SEGDES MSOLE1
      SEGDES MLREEL,MSOLEN
      ITYPE=ITYSOL
      SEGDES MSOLUT
 5000 CONTINUE
      RETURN
      END

