C MASCHP SOURCE CHAT 05/01/13 01:31:29 5004 SUBROUTINE MASCHP( X1,IPCH,ICLE,IRET,ISOM) * * sous routine pour l'opérateur masque: chpo et reel en argument * * ipch pointeur sur le champ par point argument * isom doit on sommer les 0 et les 1 * icle type de comparaison * x1 valeur à comparer * iret pointeur sur le nouveau chpo ou valeur de la somme * IMPLICIT INTEGER(I-N) REAL*8 X1 -INC CCOPTIO -INC SMCHPOI -INC SMELEME MCHPOI =IPCH IRET=0 SEGACT MCHPOI IF (ISOM.EQ.0) THEN SEGINI,MCHPO1=MCHPOI ENDIF DO 1 I=1,IPCHP(/1) MSOUPO=IPCHP(I) SEGACT MSOUPO IF(ISOM.EQ.0) THEN SEGINI,MSOUP1=MSOUPO MCHPO1.IPCHP(I)=MSOUP1 ENDIF MELEME=IGEOC SEGACT MELEME IF(ISOM.EQ.0) THEN SEGINI,IPT1=MELEME SEGDES IPT1,MELEME MSOUP1.IGEOC=IPT1 ENDIF MPOVAL=IPOVAL SEGACT MPOVAL N= VPOCHA(/1) NC=VPOCHA(/2) IF(ISOM.EQ.1) GO TO 10 SEGINI MPOVA1 MSOUP1.IPOVAL=MPOVA1 SEGDES MSOUP1,MSOUPO IF(ICLE.EQ.1) THEN DO 2 K=1,NC DO 2 L=1,N IF(VPOCHA(L,K).GT.X1) MPOVA1.VPOCHA(L,K)=1.D0 2 CONTINUE ELSEIF ( ICLE.EQ.2) THEN DO 3 K=1,NC DO 3 L=1,N IF(VPOCHA(L,K).GE.X1) MPOVA1.VPOCHA(L,K)=1.D0 3 CONTINUE ELSEIF ( ICLE.EQ.3) THEN DO 4 K=1,NC DO 4 L=1,N IF(VPOCHA(L,K).EQ.X1) MPOVA1.VPOCHA(L,K)=1.D0 4 CONTINUE ELSEIF ( ICLE.EQ.4) THEN DO 5 K=1,NC DO 5 L=1,N IF(VPOCHA(L,K).LE.X1) MPOVA1.VPOCHA(L,K)=1.D0 5 CONTINUE ELSEIF ( ICLE.EQ.5) THEN DO 6 K=1,NC DO 6 L=1,N IF(VPOCHA(L,K).LT.X1) MPOVA1.VPOCHA(L,K)=1.D0 6 CONTINUE ELSEIF ( ICLE.EQ.6) THEN DO 7 K=1,NC DO 7 L=1,N IF(VPOCHA(L,K).NE.X1) MPOVA1.VPOCHA(L,K)=1.D0 7 CONTINUE ENDIF SEGDES MPOVA1 GO TO 20 * * on cherche suelement la somme 10 CONTINUE IF(ICLE.EQ.1) THEN DO 12 K=1,NC DO 12 L=1,N IF(VPOCHA(L,K).GT.X1) IRET=IRET+1 12 CONTINUE ELSEIF ( ICLE.EQ.2) THEN DO 13 K=1,NC DO 13 L=1,N IF(VPOCHA(L,K).GE.X1) IRET=IRET+1 13 CONTINUE ELSEIF ( ICLE.EQ.3) THEN DO 14 K=1,NC DO 14 L=1,N IF(VPOCHA(L,K).EQ.X1) IRET=IRET+1 14 CONTINUE ELSEIF ( ICLE.EQ.4) THEN DO 15 K=1,NC DO 15 L=1,N IF(VPOCHA(L,K).LE.X1) IRET=IRET+1 15 CONTINUE ELSEIF ( ICLE.EQ.5) THEN DO 16 K=1,NC DO 16 L=1,N IF(VPOCHA(L,K).LT.X1) IRET =IRET+1 16 CONTINUE ELSEIF ( ICLE.EQ.6) THEN DO 17 K=1,NC DO 17 L=1,N IF(VPOCHA(L,K).NE.X1) IRET=IRET+1 17 CONTINUE ENDIF 20 CONTINUE SEGDES MPOVAL 1 CONTINUE SEGDES MCHPOI IF(ISOM.EQ.0) THEN SEGDES MCHPO1 IRET=MCHPO1 ENDIF RETURN END