oooadg
C OOOADG SOURCE PV090527 26/04/24 08:22:59 12524 SUBROUTINE OOOADG (ISSG,TYLN,NELM,IDOB,IDOA) C---------------------------------------------------------------------- C C DECALAGE A GAUCHE POUR OOOYAD C XXX(IDOB+I)=XXX(IDOA+I) POUR : I=1,NELM C C ISSG POINTEUR SUR LE SEGMENT CONTENANT LA ZONE A DECALER C IDOB DEPLACEMENT DESTINATION DANS LE SEGMENT C IDOA DEPLACEMENT EMISSION DANS LE SEGMENT C NELM NOMBRE D'ELEMENTS A DEPLACER C TYLN TYPE DES ELEMENTS DU SEGMENT (1 A 13) (LOGICAL A CHARACTER) C * avec unrolling PV 1/2020 MACRO , ( LOGICAL , LOGICAL 2 , LOGICAL 1 2 , INTEGER , INTEGER 2 , INTEGER 1 3 , REAL , REAL 8 , REAL 16 4 , COMPLEX , COMPLEX16 , COMPLEX32 5 , CHARACTER ) C SEGMENT , LLL(0)*L , LL2(0)*L2 , LL1(0)*L1 SEGMENT , RRR(0)*R , RR8(0)* D , R16(0)* Q SEGMENT , CCC(0)*C , C16(0)*CD , C32(0)*CQ SEGMENT /SCH/ (CAR *(1)) EQUIVALENCE ( LLL , LL2 , LL1 ,ISEG) EQUIVALENCE ( III , II2 , II1 ,ISEG) EQUIVALENCE ( RRR , RR8 , R16 ,ISEG) EQUIVALENCE ( CCC , C16 , C32 ,ISEG) EQUIVALENCE ( SCH ,ISEG) C CHARACTER*1 H1 INTEGER TYLN SEGMENT , ISSG(0)*I , ISEG(0)*I C ISEG=ISSG CASE , TYLN WHEN , LOGICAL DO I=1,NELM LLL(IDOB+I)=LLL(IDOA+I) ENDDO WHEN , LOGICAL 2 DO I=1,NELM LL2(IDOB+I)=LL2(IDOA+I) ENDDO WHEN , LOGICAL 1 DO I=1,NELM LL1(IDOB+I)=LL1(IDOA+I) ENDDO WHEN , INTEGER ** DO I=1,NELM ** III(IDOB+I)=III(IDOA+I) ** ENDDO DO I=1,NELM-3,4 III(IDOB+I)=III(IDOA+I) III(IDOB+I+1)=III(IDOA+I+1) III(IDOB+I+2)=III(IDOA+I+2) III(IDOB+I+3)=III(IDOA+I+3) ENDDO j=i DO i=j,NELM III(IDOB+i)=III(IDOA+i) ENDDO WHEN , INTEGER 2 DO I=1,NELM II2(IDOB+I)=II2(IDOA+I) ENDDO WHEN , INTEGER 1 DO I=1,NELM II1(IDOB+I)=II1(IDOA+I) ENDDO WHEN , REAL ** DO I=1,NELM ** RRR(IDOB+I)=RRR(IDOA+I) ** ENDDO DO I=1,NELM-3,4 RRR(IDOB+I)=RRR(IDOA+I) RRR(IDOB+I+1)=RRR(IDOA+I+1) RRR(IDOB+I+2)=RRR(IDOA+I+2) RRR(IDOB+I+3)=RRR(IDOA+I+3) ENDDO j=i DO I=j,NELM RRR(IDOB+I)=RRR(IDOA+I) ENDDO WHEN , REAL 8 ** DO I=1,NELM ** RR8(IDOB+I)=RR8(IDOA+I) ** ENDDO DO I=1,NELM-3,4 RR8(IDOB+I)=RR8(IDOA+I) RR8(IDOB+I+1)=RR8(IDOA+I+1) RR8(IDOB+I+2)=RR8(IDOA+I+2) RR8(IDOB+I+3)=RR8(IDOA+I+3) ENDDO j=i DO I=j,NELM RR8(IDOB+I)=RR8(IDOA+I) ENDDO WHEN , REAL 16 DO I=1,NELM R16(IDOB+I)=R16(IDOA+I) ENDDO WHEN , COMPLEX DO I=1,NELM CCC(IDOB+I)=CCC(IDOA+I) ENDDO WHEN , COMPLEX16 DO I=1,NELM C16(IDOB+I)=C16(IDOA+I) ENDDO WHEN , COMPLEX32 DO I=1,NELM C32(IDOB+I)=C32(IDOA+I) ENDDO WHEN , CHARACTER DO I=1,NELM H1 =CAR(IDOA+I:IDOA+I) CAR(IDOB+I:IDOB+I)=H1 ENDDO ENDCASE RETURN C----------------------------------------------------------------------- C C DECALAGE A DROITE POUR OOOYAD C XXX(IDOB+I)=XXX(IDOA+I) POUR : I=NELM,1,-1 C ENTRY OOOADD (ISSG,TYLN,NELM,IDOB,IDOA) C ISEG=ISSG CASE , TYLN WHEN , LOGICAL DO I=NELM,1,-1 LLL(IDOB+I)=LLL(IDOA+I) ENDDO WHEN , LOGICAL 2 DO I=NELM,1,-1 LL2(IDOB+I)=LL2(IDOA+I) ENDDO WHEN , LOGICAL 1 DO I=NELM,1,-1 LL1(IDOB+I)=LL1(IDOA+I) ENDDO WHEN , INTEGER ** DO I=NELM,1,-1 ** III(IDOB+I)=III(IDOA+I) ** ENDDO DO I=NELM,3,-4 III(IDOB+I)=III(IDOA+I) III(IDOB+I-1)=III(IDOA+I-1) III(IDOB+I-2)=III(IDOA+I-2) III(IDOB+I-3)=III(IDOA+I-3) ENDDO j=i DO i=j,1,-1 III(IDOB+i)=III(IDOA+i) ENDDO WHEN , INTEGER 2 DO I=NELM,1,-1 II2(IDOB+I)=II2(IDOA+I) ENDDO WHEN , INTEGER 1 DO I=NELM,1,-1 II1(IDOB+I)=II1(IDOA+I) ENDDO WHEN , REAL ** DO I=NELM,1,-1 ** RRR(IDOB+I)=RRR(IDOA+I) ** ENDDO DO I=NELM,3,-4 RRR(IDOB+I)=RRR(IDOA+I) RRR(IDOB+I-1)=RRR(IDOA+I-1) RRR(IDOB+I-2)=RRR(IDOA+I-2) RRR(IDOB+I-3)=RRR(IDOA+I-3) ENDDO j=i DO I=j,1,-1 RRR(IDOB+I)=RRR(IDOA+I) ENDDO WHEN , REAL 8 ** DO I=NELM,1,-1 ** RR8(IDOB+I)=RR8(IDOA+I) ** ENDDO DO I=NELM,3,-4 RR8(IDOB+I)=RR8(IDOA+I) RR8(IDOB+I-1)=RR8(IDOA+I-1) RR8(IDOB+I-2)=RR8(IDOA+I-2) RR8(IDOB+I-3)=RR8(IDOA+I-3) ENDDO j=i DO I=j,1,-1 RR8(IDOB+I)=RR8(IDOA+I) ENDDO WHEN , REAL 16 DO I=NELM,1,-1 R16(IDOB+I)=R16(IDOA+I) ENDDO WHEN , COMPLEX DO I=NELM,1,-1 CCC(IDOB+I)=CCC(IDOA+I) ENDDO WHEN , COMPLEX16 DO I=NELM,1,-1 C16(IDOB+I)=C16(IDOA+I) ENDDO WHEN , COMPLEX32 DO I=NELM,1,-1 C32(IDOB+I)=C32(IDOA+I) ENDDO WHEN , CHARACTER DO I=NELM,1,-1 H1 =CAR(IDOA+I:IDOA+I) CAR(IDOB+I:IDOB+I)=H1 ENDDO ENDCASE RETURN C----------------------------------------------------------------------- C C REMISE A 0 OU BLANC POUR OOOYAD C XXX(IDOB+I)= NULL? POUR : I=1,NELM C ENTRY OOOADZ (ISSG,TYLN,NELM,IDOB) C ISEG=ISSG CASE , TYLN WHEN , LOGICAL DO I=1,NELM LLL(IDOB+I)=.FALSE. ENDDO WHEN , LOGICAL 2 DO I=1,NELM LL2(IDOB+I)=.FALSE. ENDDO WHEN , LOGICAL 1 DO I=1,NELM LL1(IDOB+I)=.FALSE. ENDDO WHEN , INTEGER DO I=1,NELM III(IDOB+I)=0 ENDDO WHEN , INTEGER 2 DO I=1,NELM II2(IDOB+I)=0 ENDDO WHEN , INTEGER 1 DO I=1,NELM II1(IDOB+I)=0 ENDDO WHEN , REAL DO I=1,NELM RRR(IDOB+I)=0. ENDDO WHEN , REAL 8 DO I=1,NELM RR8(IDOB+I)=0. ENDDO WHEN , REAL 16 DO I=1,NELM R16(IDOB+I)=0. ENDDO WHEN , COMPLEX DO I=1,NELM CCC(IDOB+I)=(0.,0.) ENDDO WHEN , COMPLEX16 DO I=1,NELM C16(IDOB+I)=(0.,0.) ENDDO WHEN , COMPLEX32 DO I=1,NELM C32(IDOB+I)=(0.,0.) ENDDO WHEN , CHARACTER DO I=1,NELM CAR(IDOB+I:IDOB+I)=' ' ENDDO ENDCASE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales