Télécharger nommer.eso

Retour à la liste

Numérotation des lignes :

nommer
  1. C NOMMER SOURCE OF166741 23/06/19 21:15:06 11679
  2.  
  3. SUBROUTINE NOMMER
  4. C=======================================================================
  5. C DIRECTIVE NOMMER :
  6. C Creation d'un objet nomme dont le nom est choisi par
  7. C l'utilisateur
  8. C
  9. C SYNTAXE :
  10. C 'NOMMER' MOT1 OBJ1 ;
  11. C
  12. C MOT1 : Nom de l'objet nomme qui sera cree dans Cast3M
  13. C OBJ1 : Objet existant que l'on souhaite egalement nommer MOT1
  14. C
  15. C=======================================================================
  16.  
  17. IMPLICIT INTEGER(I-N)
  18. IMPLICIT REAL*8 (A-H,O-Z)
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC CCNOYAU
  23.  
  24. CHARACTER*(LOCHAI) CHAO
  25. CHARACTER*(LONOM) NOMO
  26. CHARACTER*8 TYPO
  27. LOGICAL LOGO
  28.  
  29. CHAO = ' '
  30. NOMO = ' '
  31. TYPO = ' '
  32. IRETOU = 0
  33.  
  34. c#dbg IF (IIMPI.EQ.12345)
  35. c#dbg CALL QUETYP(TYPO,0,IRETOU)
  36. c#dbg IF (IERR.NE.0) RETURN
  37. c#dbg write(ioimp,*) 'TYPE LU =>'//TYPO//'<='
  38. c#dbg ENDIF
  39.  
  40. C- On commence par lire le nouveau nom de l'objet :
  41. ICOND = 1
  42. C- Avec LIRCHA on lit 1) directement une chaine,
  43. C- ou 2) le contenu d'un mot (converti en chaine).
  44. CALL LIRCHA(CHAO,ICOND,IRETOU)
  45. IF (IERR.NE.0) RETURN
  46. IF (IRETOU.GT.0) THEN
  47. c#dbg IF (IIMPI.EQ.12345)
  48. c#dbg write(ioimp,*) 'Lecture CHAO=',CHAO(1:LONOM),'=',IRETOU,'='
  49. IF (IRETOU.GT.LONOM) THEN
  50. WRITE(ioimp,*) 'Nom = pas plus de ',LONOM,' caracteres'
  51. CALL ERREUR(315)
  52. RETURN
  53. ENDIF
  54. j = INDEX(CHAO(1:IRETOU),' ')
  55. IF (j.NE.0) THEN
  56. WRITE(ioimp,*) 'NOM sans aucun ESPACE / NAME without SPACE'
  57. CALL ERREUR(315)
  58. RETURN
  59. ENDIF
  60. NOMO(1:IRETOU) = CHAO(1:IRETOU)
  61. C-
  62. CALL MINMAJ(NOMO)
  63. c#dbg IF (IIMPI.EQ.12345)
  64. c#dbg write(ioimp,*) 'CHA='//NOMO//'='
  65.  
  66. C- Cas d'un objet quelconque dont on prend le nom (cas non considere)
  67. * ELSE
  68. * Il faudra mettre ICOND = 0 auparavant !
  69. * CALL QUETYP(TYPO,1,IRETOU)
  70. * IF (IERR.NE.0) RETURN
  71. * CALL LIROBJ(TYPO,IPKO,1,IRETOU)
  72. * IF (IERR.NE.0) RETURN
  73. * CALL QUENOM(NOMO)
  74. *c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'OBJ='//NOMO//'='
  75. ENDIF
  76. c#dbg IF (IIMPI.EQ.12345) THEN
  77. IF (NOMO(1:1).EQ.'#') write(ioimp,*) 'Objet temporaire'
  78. c#dbg ENDIF
  79.  
  80. C- Detection du TYPE de l'objet a nommer
  81. TYPO = ' '
  82. IRETOU = 0
  83. CALL QUETYP(TYPO,0,IRETOU)
  84. IF (IERR.NE.0) RETURN
  85. IF (IRETOU.LE.0) THEN
  86. write(ioimp,*) 'Objet a nommer non trouve'//' / '//
  87. & 'Object to be named not found'
  88. CALL ERREUR(21)
  89. RETURN
  90. ENDIF
  91. c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'objet TYPE =>'//TYPO//'<='
  92. C- Lecture de l'objet a nommer PUIS Affectation du nom a l'objet
  93. IF (TYPO.EQ.'ENTIER ') THEN
  94. CALL LIRENT(INTO,1,IRETOU)
  95. IF (IERR.NE.0) RETURN
  96. CALL NOMENT(NOMO,INTO)
  97. c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'objet ENTIER valeur =',INTO
  98. ELSE IF (TYPO.EQ.'FLOTTANT') THEN
  99. CALL LIRREE(REEO,1,IRETOU)
  100. IF (IERR.NE.0) RETURN
  101. CALL NOMREE(NOMO,REEO)
  102. c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'objet FLOTTANT valeur =',REEO
  103. ELSE IF (TYPO.EQ.'LOGIQUE ') THEN
  104. CALL LIRLOG(LOGO,1,IRETOU)
  105. IF (IERR.NE.0) RETURN
  106. CALL NOMLOG(NOMO,LOGO)
  107. c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'objet LOGIQUE valant ',LOGO
  108. ELSE IF (TYPO.EQ.'MOT ') THEN
  109. CALL LIRCHA(CHAO,1,IRETOU)
  110. IF (IERR.NE.0) RETURN
  111. CALL NOMCHA(NOMO,CHAO(1:IRETOU))
  112. c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'objet MOT =',CHAO(1:IRETOU)
  113. ELSE
  114. CALL LIROBJ(TYPO,IPKO,1,IRETOU)
  115. IF (IERR.NE.0) RETURN
  116. IF (TYPO.EQ.'PROCEDUR') IPKO=IPIPR1(IPKO)
  117. CALL NOMOBJ(TYPO,NOMO,IPKO)
  118. c#dbg IF (IIMPI.EQ.12345) write(ioimp,*) 'objet ',TYPO,' pointeur =',IPKO
  119. ENDIF
  120.  
  121. RETURN
  122. END
  123.  
  124.  
  125.  

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