C OPERFL SOURCE JC220346 12/06/19 21:15:04 7405 C CONVERTIT UN ENTIER EN FLOTTANT C OU UN LISTENTI/MOT/LISTMOTS EN LISTREEL C SUBROUTINE OPERFL IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER(I-N) -INC CCOPTIO -INC SMLENTI -INC SMLREEL -INC SMLMOTS REAL*8 X1 CHARACTER*32 CH CHARACTER*8 CHA8 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) SEGACT MLENTI JG=LECT(/1) SEGINI MLREEL DO IG=1,JG PROG(IG)=LECT(IG) ENDDO SEGDES MLREEL SEGDES MLENTI CALL ECROBJ('LISTREEL',MLREEL) RETURN * Conversion d'un LISTMOTS en LISTREEL ELSEIF (CHA8.EQ.'LISTMOTS') THEN CALL LIROBJ('LISTMOTS',MLMOTS,1,IRETOU) 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 CALL ECROBJ('LISTREEL',MLREEL) RETURN * Conversion d'un MOT en FLOTTANT ELSEIF (CHA8.EQ.'MOT') THEN CALL LIRCHA(CH,1,IRETOU) WRITE(CHA8,FMT='("(F",I2,".0)")') IRETOU READ(CH(1:IRETOU),FMT=CHA8,ERR=999) X1 CALL ECRREE(X1) RETURN * Conversion d'un ENTIER en FLOTTANT ELSEIF (CHA8.EQ.'ENTIER'.OR.CHA8.EQ.'FLOTTANT') THEN CALL LIRREE(X1,1,IRETOU) IF (IERR.NE.0) RETURN CALL ECRREE(X1) RETURN ENDIF * /!\ 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