indeta
C INDETA SOURCE JC220346 18/12/04 21:15:29 9991 SUBROUTINE INDETA C----------------------------------------------------------------------- C FABRIQUE L'INDEX D'UNE TABLE DANS UNE TABLE | C RECUPERE TOUS LES OBJETS NOMMES D'UN TYPE DANS UNE TABLE | C----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCNOYAU -INC SMTABLE -INC PPARAM -INC CCOPTIO -INC TMLNOMS LOGICAL LOGI,LVAL REAL*8 XVA CHARACTER*(1) CHARI CHARACTER*512 IMO CHARACTER*(LONOM) CNOM CHARACTER*8 CTYP,CTYP2,CVAL PARAMETER (NMO=36) CHARACTER*(8) LISMO(NMO) DATA LISMO / 'MOT ','ENTIER ','FLOTTANT','LOGIQUE ', $ 'MAILLAGE','LISTENTI','POINT ','LISTREEL', $ 'CHPOINT ','RIGIDITE','TEXTE ','STRUCTUR', $ 'ATTACHE ','SOLUTION','BASEMODA','--------', $ '--------','VECTDOUB','LISTMOTS','DEFORME ', $ 'LISTCHPO','CHARGEME','EVOLUTIO','--------', $ 'VECTEUR ','TABLE ','PROCEDUR','ELEMSTRU', $ 'BLOQSTRU','MCHAML ','MMODEL ','ANNULE ', $ 'NUAGE ','MATRIK ','OBJET ','ESCLAVE ' / C Syntaxe qui fait l'index d'un type d'OBJET Cast3M (Indexation par leurs noms dans la pile des objets nommes) IF(IERR.NE.0) RETURN IF ((IRETOU .EQ. 0) .OR. (IMO(1:1).NE.'*')) GOTO 100 CTYP = IMO(2:9) IF (CTYP .EQ. ' ') THEN C Lecture OBLIGATOIRE d'un autre MOT ENDIF C Creation de la TABLE de resultats M=0 SEGINI,MTABLE C Recuperation de la liste des noms des objets de ce type IF (LINOMS(/2) .EQ. 0) THEN C Cas où la liste est vide MOTERR(1:8)=CTYP ELSE C Cas où la liste n'est pas vide DO I=1,LINOMS(/2) C Recherche du numero de pointeur associe au nom CTYP2=' ' CNOM=LINOMS(I) IVAL=0 RVAL=0.D0 CVAL=' ' LVAL=.FALSE. IOBJ=0 C Ecriture dans la table du TYPE CTYP & CTYP,IVAL,RVAL,CVAL,LVAL,IOBJ) ENDDO ENDIF SEGSUP MLNOMS C Ecriture de l'objet TABLE resultat 20 CONTINUE RETURN 100 CONTINUE C Syntaxe qui fait l'index d'une table (Indexation par des entiers) IF(IERR.NE.0) RETURN MTABLE=ITAB SEGACT MTABLE NB=MLOTAB IF(NB.EQ.0) GOTO 99 M=NB SEGINI MTAB1 MTAB1.MLOTAB=M DO 10 IJ=1,NB MTAB1.MTABTI(IJ)='ENTIER ' MTAB1.MTABII(IJ)=IRET MTAB1.MTABTV(IJ)=MTABTI(IJ) IF (MTABTI(IJ).EQ.'FLOTTANT') THEN MTAB1.RMTABV(IJ)=RMTABI(IJ) ELSE MTAB1.MTABIV(IJ)=MTABII(IJ) ENDIF 10 CONTINUE SEGDES MTAB1,MTABLE RETURN 99 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales