C OPERFL SOURCE BP208322 16/05/24 21:15:12 8932 C======================================================================= C C CONVERTIT : - UN ENTIER EN FLOTTANT C - OU UN LISTENTI/MOT/LISTMOTS EN LISTREEL C C======================================================================= SUBROUTINE OPERFL IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO c REAL*8 X1 c CHARACTER*32 CH REAL*8 XVALRE CHARACTER*32 CHARIN CHARACTER*8 CHA8 C======================================================================= C LECTURE DES OBJETS EN ENTREE + CONVERSION EN FLOTTANT C======================================================================= CALL QUETYP(CHA8,0,IRETOU) IF (IRETOU.EQ.0) GOTO 998 * Conversion d'un LISTENTI en LISTREEL IF (CHA8.EQ.'LISTENTI') THEN CALL LIROBJ('LISTENTI',MLENTI,1,IRETOU) IF (IERR.NE.0) RETURN c SEGACT MLENTI c JG=LECT(/1) c SEGINI MLREEL c DO IG=1,JG c PROG(IG)=LECT(IG) c ENDDO c SEGDES MLREEL c SEGDES MLENTI IOBIN=MLENTI CALL FLOT(CHA8,IVALIN,CHARIN,IOBIN,XVALRE,IOBRE) MLREEL=IOBRE CALL ECROBJ('LISTREEL',MLREEL) RETURN * Conversion d'un ENTIER ou d'un FLOTTANT en FLOTTANT c ELSEIF (CHA8.EQ.'ENTIER'.OR.CHA8.EQ.'FLOTTANT') THEN c CALL LIRREE(X1,1,IRETOU) c IF (IERR.NE.0) RETURN c CALL ECRREE(X1) c RETURN * Conversion d'un ENTIER en FLOTTANT : on passe par FLOT ELSEIF (CHA8.EQ.'ENTIER') THEN CALL LIRENT(IVALIN,1,IRETOU) IF (IERR.NE.0) RETURN CALL FLOT(CHA8,IVALIN,CHARIN,IOBIN,XVALRE,IOBRE) CALL ECRREE(XVALRE) RETURN * Conversion d'un FLOTTANT en FLOTTANT : on ne passe pas dans FLOT ! ELSEIF (CHA8.EQ.'FLOTTANT') THEN CALL LIRREE(XVALRE,1,IRETOU) IF (IERR.NE.0) RETURN CALL ECRREE(XVALRE) RETURN * Conversion d'un LISTMOTS en LISTREEL ELSEIF (CHA8.EQ.'LISTMOTS') THEN CALL LIROBJ('LISTMOTS',MLMOTS,1,IRETOU) IF (IERR.NE.0) RETURN c SEGACT MLMOTS c JG=MOTS(/2) c SEGINI MLREEL c DO IG=1,JG c READ(MOTS(IG),FMT='(F4.0)',ERR=999) PROG(IG) c ENDDO c SEGDES MLREEL c SEGDES MLMOTS IOBIN=MLMOTS CALL FLOT(CHA8,IVALIN,CHARIN,IOBIN,XVALRE,IOBRE) MLREEL=IOBRE CALL ECROBJ('LISTREEL',MLREEL) RETURN * Conversion d'un MOT en FLOTTANT ELSEIF (CHA8.EQ.'MOT') THEN c CALL LIRCHA(CH,1,IRETOU) c WRITE(CHA8,FMT='("(F",I2,".0)")') IRETOU c READ(CH(1:IRETOU),FMT=CHA8,ERR=999) X1 CALL LIRCHA(CHARIN,1,IVALIN) IF (IERR.NE.0) RETURN CALL FLOT(CHA8,IVALIN,CHARIN,IOBIN,XVALRE,IOBRE) CALL ECRREE(XVALRE) RETURN ENDIF C======================================================================= C ERREURS C======================================================================= * /!\ ERREUR : AUCUN OBJET COMPATIBLE TROUVE 998 MOTERR(1:40)='ENTIER FLOTTANTLISTENTIMOT LISTMOTS' CALL ERREUR(471) RETURN c * /!\ ERREUR LORS DE LA CONVERSION MOT=>FLOTTANT c 999 CALL ERREUR(21) c RETURN END