Télécharger indeta.eso

Retour à la liste

Numérotation des lignes :

indeta
  1. C INDETA SOURCE PV090527 25/09/04 07:28:15 12356
  2.  
  3. C-----------------------------------------------------------------------
  4. C FABRIQUE L'INDEX D'UNE TABLE DANS UNE TABLE |
  5. C RECUPERE TOUS LES OBJETS NOMMES D'UN TYPE DANS UNE TABLE |
  6. C-----------------------------------------------------------------------
  7. SUBROUTINE INDETA
  8.  
  9. IMPLICIT INTEGER(I-N)
  10. IMPLICIT REAL*8(A-H,O-Z)
  11.  
  12. -INC PPARAM
  13. -INC CCOPTIO
  14. -INC CCNOYAU
  15.  
  16. -INC SMTABLE
  17.  
  18. -INC TMLNOMS
  19.  
  20. LOGICAL LOGI,LVAL
  21. CHARACTER*(LOCHAI) IMO
  22. CHARACTER*(LONOM) CNOM
  23. CHARACTER*8 CTYP,CTYP2,CVAL
  24.  
  25. PARAMETER (NMO=35)
  26. CHARACTER*(8) LISMO(NMO)
  27. DATA LISMO / 'MOT ','ENTIER ','FLOTTANT','LOGIQUE ',
  28. $ 'MAILLAGE','LISTENTI','POINT ','LISTREEL',
  29. $ 'CHPOINT ','RIGIDITE','TEXTE ','STRUCTUR',
  30. $ 'ATTACHE ','SOLUTION','BASEMODA','OBJET ',
  31. $ 'LISTOBJE','VECTDOUB','LISTMOTS','DEFORME ',
  32. $ 'LISTCHPO','CHARGEME','EVOLUTIO','ANNOTATI',
  33. $ 'VECTEUR ','TABLE ','PROCEDUR','ELEMSTRU',
  34. $ 'BLOQSTRU','MCHAML ','MMODEL ','ANNULE ',
  35. $ 'NUAGE ','MATRIK ','ESCLAVE ' /
  36.  
  37. C -2- Syntaxe qui fait l'index des objets d'un type Cast3M donne
  38. C (Indexation par leur nom dans la pile des objets nommes)
  39. CALL LIRCHA(IMO,0,iretou)
  40. IF (Iretou.eq.0) goto 200
  41.  
  42. IF (IMO(1:1).EQ.'*') THEN
  43. CTYP = IMO(2:9)
  44. C Lecture OBLIGATOIRE d'un autre MOT
  45. IF (CTYP .EQ. ' ') THEN
  46. CALL LIRCHA(IMO,1,iret)
  47. IF (IERR.NE.0) RETURN
  48. CTYP = IMO(1:8)
  49. ENDIF
  50. CALL PLAMO8(LISMO,NMO,iret,CTYP)
  51. LOGI = (iret.LE.0)
  52. MOTERR = '*'//CTYP(1:8)//' '
  53. ELSE
  54. LOGI = .TRUE.
  55. MOTERR = IMO
  56. ENDIF
  57. IF (LOGI) THEN
  58. CALL ERREUR(7)
  59. WRITE(IOIMP,110) (' *'//LISMO(ij),ij=1,NMO)
  60. 110 FORMAT(6A)
  61. RETURN
  62. ENDIF
  63.  
  64. C Recuperation de la liste des noms des objets de ce type
  65. CALL REPLIS(CTYP,MLNOMS)
  66. IF (IERR.NE.0) RETURN
  67.  
  68. NB = mlnoms.LINOMS(/2)
  69. IF (NB .EQ. 0) THEN
  70. C Cas où la liste est vide
  71. MOTERR(1:8)=CTYP
  72. CALL ERREUR(-14)
  73. ENDIF
  74.  
  75. C Creation de la TABLE de resultats
  76. M = 0
  77. SEGINI,MTAB1
  78. mtab1.MLOTAB = 0
  79.  
  80. DO IJ = 1, NB
  81. C Recherche du numero de pointeur associe au nom
  82. CNOM = mlnoms.LINOMS(IJ)
  83. CTYP2=' '
  84. IVAL=0
  85. RVAL=0.D0
  86. CVAL=' '
  87. LVAL=.FALSE.
  88. IOBJ=0
  89. CALL CQUOI(CNOM,CTYP2,IVAL,RVAL,CVAL,LVAL,IOBJ)
  90.  
  91. C Ecriture dans la table de l'objet de NOM CNOM et de TYPE CTYP
  92. CTYP2='MOT '
  93. CALL ECCTAB(MTAB1,CTYP2,0,0.d0,CNOM,LOGI,0,
  94. & CTYP,IVAL,RVAL,CVAL,LVAL,IOBJ)
  95. ENDDO
  96.  
  97. SEGSUP,MLNOMS
  98. GOTO 900
  99. 200 CONTINUE
  100. C -1- Creation de l'index d'une table
  101. C (Indexation par des entiers)
  102. CTYP = 'TABLE '
  103. CALL LIROBJ(CTYP,ITAB,1,iret)
  104. IF (IERR.NE.0) RETURN
  105.  
  106. MTABLE = ITAB
  107. SEGACT,MTABLE
  108. NB = mtable.MLOTAB
  109.  
  110. M = NB
  111. SEGINI,MTAB1
  112. MTAB1.MLOTAB = NB
  113.  
  114. CTYP = 'ENTIER '
  115. DO IJ = 1, NB
  116. CALL QUERAN(IRET,CTYP,IJ,RVAL,CVAL,LVAL,IOBJ)
  117. MTAB1.MTABTI(IJ) = CTYP
  118. MTAB1.MTABII(IJ) = IRET
  119. MTAB1.MTABTV(IJ) = mtable.MTABTI(IJ)
  120. IF (mtable.MTABTI(IJ).EQ.'FLOTTANT') THEN
  121. MTAB1.RMTABV(IJ) = mtable.RMTABI(IJ)
  122. ELSE
  123. MTAB1.MTABIV(IJ) = mtable.MTABII(IJ)
  124. ENDIF
  125. ENDDO
  126.  
  127. SEGDES,MTABLE
  128. GOTO 900
  129.  
  130.  
  131. C Ecriture de l'objet TABLE resultat
  132. 900 CONTINUE
  133. SEGDES,MTAB1
  134. CALL ECROBJ('TABLE ',MTAB1)
  135.  
  136. c RETURN
  137. END
  138.  
  139.  
  140.  
  141.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales