ooomwf
C OOOMWF SOURCE PV090527 26/04/24 08:23:18 12524 SUBROUTINE OOOMWF (LRET,NMOTS) C--------------------------------------------------------------- C C FAIRE DE LA PLACE EN ZONE MEMOIRE DYNAMIQUE C POUR AGRANDIR LA ZONE MEMOIRE FIXE C C ->LRET 1 PLUS DE PLACE MEMOIRE C 2 OK C C NMOTS NOMBRE DE MOTS DESIRES C C METHODE UTILISEE : C C ON DEPLACE LES SEGMENTS EN FIN DE ZONE DYNAMIQUE . C LE PROCESSUS S' ARRETE LORSQUE LE TROU AINSI CREE DEVIENT C SUFFISANT : ON FAIT ALORS PASSER LA PARTIE NECESSAIRE C EN ZONE FIXE , LE RESTE DU TROU RESTANT EN ZONE DYNAMIQUE. C C------------------------------------------------------------------- C %INC IOOADR %INC IOOADZ %INC IOOSGM %INC IOOTRO %INC IOOTF1 %INC IOOTF2 C LT0 =0 LSG =((NMOTS+MSLSM-1)/MSLSM)*MSLSM C IT =MZDLIM(IZA) C C***** TROU A GAUCHE ? : ON L'ISOLE C SEGMENT ? : ON LE DEPLACE C DO WHILE (LT0.LT.LSG) IF (MTROUG(IT)) THEN LT=-MTLTP(IT) IT=IT-LT IF (MZITS0(IZA,ZMEMDYN).EQ.IT) THEN MZITS0(IZA,ZMEMDYN)=MTITS(IT) ENDIF MTF1 , IZA(IT,LT) MZLTROU(IZA,ZMEMDYN)=MZLTROU(IZA,ZMEMDYN)-LT LT0=LT0+LT ELSE LS = MSLSP(IT) IS = IT-LS IDE = MSIDE(IS) CALL OOOXMV (LRET,IDE,LS-(MSLCZ)) IF (LRET.EQ.1) RETURN ENDIF ENDDO C C****** TRANSPORT DU TROU NECESSAIRE C LT=LT0-LSG ITF=IT+LT MTF2 , IZA(ZMEMFIX,ITF,LSG) MZLTROU(IZA,ZMEMFIX)=MZLTROU(IZA,ZMEMFIX)+LSG MZITS0(IZA,ZMEMFIX)=ITF MZDLIM(IZA)=ITF IF (LT.GT.0) THEN MTF2 , IZA(ZMEMDYN,IT,LT) MZLTROU(IZA,ZMEMDYN)=MZLTROU(IZA,ZMEMDYN)+LT ENDIF LRET = 2 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales