inser4
C INSER4 SOURCE FD218221 26/09/21 21:15:08 12652 SUBROUTINE INSER4 (MLOBJE,IEME,IPOBJE,XREE,MLOBJ1) ************************************************************************ * * I N S E R 4 * ----------- * * FONCTION: * --------- * * INSERER UN OBJET EN I-EME POSITION DANS UN OBJET DE TYPE LISTOBJE. * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * MLOBJE ENTIER (E) POINTEUR DE LA LISTE DE TYPE "LISTOBJE". * SUPPOSE ACTIF * IEME ENTIER (E) POSITION D'INSERTION DE L'OBJET DANS * LA LISTE DE TYPE "LISTOBJE" * IPOBJE ENTIER (E) POINTEUR DE L'OBJET A INSERER, SUPPOSE DU * MEME TYPE QUE CEUX CONTENUS DANS MLOBJE * SERA IGNORE SI LE TYPE D'OBJETS CONTENUS * DANS MLOBJE = 'FLOTTANT' * XREE REEL DP (E) FLOTTANT A INSERER * SERA IGNORE SI LE TYPE D'OBJETS CONTENUS * DANS MLOBJE != 'FLOTTANT' * MLOBJ1 ENTIER (S) POINTEUR DE LA LISTE DE TYPE "LISTOBJE" CREE * * SOUS-PROGRAMMES APPELES: * ------------------------ * * ERREUR * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 22 FEVRIER 1985 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLOBJE REAL*8 XREE * SEGACT,MLOBJE LDIM = 0 * Cas des LISTOBJE de FLOTTANT IF (TYPOBJ.EQ.'FLOTTANT') THEN LDIM = RLIREE(/1) * Et des autres ELSE LDIM = LISOBJ(/1) ENDIF LDIM1 = LDIM + 1 * * IF (0 .LT. IEME .AND. IEME .LE. LDIM1) THEN * Cas des LISTOBJE de FLOTTANT IF (TYPOBJ.EQ.'FLOTTANT') THEN NOBJ = 0 NREE = LDIM1 * Et des autres ELSE NOBJ = LDIM1 NREE = 0 ENDIF SEGINI MLOBJ1 MLOBJ1.TYPOBJ = TYPOBJ * Cas des LISTOBJE de FLOTTANT IF (TYPOBJ.EQ.'FLOTTANT') THEN MLOBJ1.RLIREE(IEME) = XREE IF ( IEME .GT . 1 ) THEN DO 100 I=1 ,(IEME-1) MLOBJ1.RLIREE(I) = MLOBJE.RLIREE(I) 100 CONTINUE ENDIF IF ( IEME .LT .LDIM1) THEN DO 110 I= IEME , LDIM MLOBJ1.RLIREE(I + 1 ) = MLOBJE.RLIREE(I) 110 CONTINUE ENDIF * Et des autres ELSE MLOBJ1.LISOBJ(IEME) = IPOBJE IF ( IEME .GT . 1 ) THEN DO 200 I=1 ,(IEME-1) MLOBJ1.LISOBJ(I) = MLOBJE.LISOBJ(I) 200 CONTINUE ENDIF IF ( IEME .LT .LDIM1) THEN DO 210 I= IEME , LDIM MLOBJ1.LISOBJ(I + 1 ) = MLOBJE.LISOBJ(I) 210 CONTINUE ENDIF ENDIF SEGDES,MLOBJ1 ELSE INTERR(1) = IEME NUMERR = 36 ENDIF SEGDES,MLOBJE * * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales