C FLOT      SOURCE    BP208322  16/05/24    21:15:07     8932           
C

C=======================================================================
C
C   CONVERTIT : - UN ENTIER EN FLOTTANT
C               - OU UN LISTENTI/MOT/LISTMOTS EN LISTREEL
C
C=======================================================================

      SUBROUTINE FLOT(CHA8,IVALIN,CHARIN,IOBIN,XVALRE,IOBRE)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER(I-N)
      

-INC PPARAM
-INC CCOPTIO
-INC SMLENTI
-INC SMLREEL
-INC SMLMOTS

      REAL*8       XVALRE
      CHARACTER*32 CHARIN
      CHARACTER*8  CHA8,CHAFMT
      
*     Initialisations
      XVALRE=0.D0
      IOBRE=0

*     Conversion d'un LISTENTI en LISTREEL
      IF (CHA8.EQ.'LISTENTI') THEN
          MLENTI=IOBIN
          SEGACT MLENTI
          JG=LECT(/1)
          SEGINI MLREEL
          DO IG=1,JG
             PROG(IG)=LECT(IG)
          ENDDO
          SEGDES MLREEL
          SEGDES MLENTI
          IOBRE=MLREEL          
          RETURN
          
*     Conversion d'un ENTIER en FLOTTANT
      ELSEIF (CHA8.EQ.'ENTIER') THEN
          XVALRE=IVALIN
          RETURN

*     Conversion d'un LISTMOTS en LISTREEL
      ELSEIF (CHA8.EQ.'LISTMOTS') THEN
          MLMOTS=IOBIN
          SEGACT MLMOTS
          JG=MOTS(/2)
          SEGINI MLREEL
          DO IG=1,JG
             READ(MOTS(IG),FMT='(F4.0)',ERR=999) PROG(IG)
          ENDDO
          SEGDES MLREEL
          SEGDES MLMOTS
          IOBRE=MLREEL          
          RETURN

*     Conversion d'un MOT en FLOTTANT
      ELSEIF (CHA8.EQ.'MOT') THEN
          WRITE(CHAFMT,FMT='("(F",I2,".0)")') IVALIN
          READ(CHARIN(1:IVALIN),FMT=CHAFMT,ERR=999) XVALRE
          RETURN            
          
      ENDIF
      
C=======================================================================
C     ERREURS
C=======================================================================

* /!\ ERREUR : AUCUN OBJET COMPATIBLE TROUVE
 998  MOTERR(1:40)='ENTIER  FLOTTANTLISTENTIMOT     LISTMOTS'
      CALL ERREUR(471)
      RETURN

* /!\ ERREUR LORS DE LA CONVERSION MOT=>FLOTTANT
 999  CALL ERREUR(21)
      RETURN
      
      END 
