C OPERIN SOURCE JC220346 12/06/19 21:15:05 7405 C CONVERTIT UN FLOTTANT EN ENTIER C OU UN LISTREEL EN LISTENTI C SUBROUTINE OPERIN 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 LISTREEL en LISTENTI IF (CHA8.EQ.'LISTREEL') THEN CALL LIROBJ('LISTREEL',MLREEL,1,IRETOU) SEGACT MLREEL JG=PROG(/1) SEGINI MLENTI DO IG=1,JG LECT(IG)=int(PROG(IG)) ENDDO SEGDES MLREEL SEGDES MLENTI CALL ECROBJ('LISTENTI',MLENTI) RETURN * Conversion d'un LISTMOTS en LISTENTI ELSEIF (CHA8.EQ.'LISTMOTS') THEN CALL LIROBJ('LISTMOTS',MLMOTS,1,IRETOU) SEGACT MLMOTS JG=MOTS(/2) SEGINI MLENTI DO IG=1,JG READ(MOTS(IG),FMT='(I4)',IOSTAT=IOS) LECT(IG) IF (IOS.NE.0) THEN READ(MOTS(IG),FMT='(F4.0)',ERR=999) X1 LECT(IG)=int(X1) ENDIF ENDDO SEGDES MLENTI SEGDES MLMOTS CALL ECROBJ('LISTENTI',MLENTI) RETURN * Conversion d'un MOT en ENTIER ELSEIF (CHA8.EQ.'MOT') THEN CALL LIRCHA(CH,1,IRETOU) WRITE(CHA8,FMT='("(I",I2,")")') IRETOU READ(CH(1:IRETOU),FMT=CHA8,IOSTAT=IOS) I1 IF (IOS.NE.0) THEN WRITE(CHA8,FMT='("(F",I2,".0)")') IRETOU READ(CH(1:IRETOU),FMT=CHA8,ERR=999) X1 I1=int(X1) ENDIF CALL ECRENT(I1) RETURN * Conversion d'un FLOTTANT en ENTIER ELSEIF (CHA8.EQ.'ENTIER'.OR.CHA8.EQ.'FLOTTANT') THEN CALL LIRREE(X1,1,IRETOU) IF (IERR.NE.0) RETURN I1=int(X1) CALL ECRENT(I1) 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