Télécharger anno.eso

Retour à la liste

Numérotation des lignes :

anno
  1. C ANNO SOURCE CB215821 24/07/01 21:15:02 11955
  2. C***********************************************************************
  3. C NOM : ANNO
  4. C DESCRIPTION : Cree des objets de type ANNOTATI
  5. C***********************************************************************
  6. SUBROUTINE ANNO
  7.  
  8. IMPLICIT INTEGER(I-N)
  9. IMPLICIT REAL*8(A-H,O-Z)
  10.  
  11.  
  12. -INC PPARAM
  13. -INC CCOPTIO
  14. -INC CCGEOME
  15. -INC SMANNOT
  16. -INC SMCOORD
  17. -INC SMELEME
  18.  
  19. CHARACTER*4 CHA4
  20. CHARACTER*8 CHA8
  21. CHARACTER*(LOCHAI) CH70,TXT
  22. LOGICAL BOOL
  23.  
  24. PARAMETER (NCLE=2)
  25. CHARACTER*4 MCLE(NCLE)
  26. DATA MCLE/'CATE','ETIQ'/
  27.  
  28. PARAMETER (NPOS=9)
  29. CHARACTER*4 MPOS(NPOS)
  30. DATA MPOS/'SO','S','SE','O','C','E','NO','N','NE'/
  31.  
  32.  
  33. C BRANCHEMENT VERS LE SOUS-TYPE DEMANDE
  34. CHA4 = ' '
  35. CALL LIRCHA(CHA4,0,ICLE)
  36. IF (ICLE.GT.0) CALL PLACE(MCLE,NCLE,ICLE,CHA4)
  37. IF(IERR .NE. 0) RETURN
  38. IF (ICLE.EQ.0) THEN
  39. MOTERR(1:4) = CHA4
  40. MOTERR(5:40) = 'CATE ETIQ'
  41. CALL ERREUR(1052)
  42. ENDIF
  43. GOTO (100,200),ICLE
  44.  
  45.  
  46.  
  47. C **************************************************************
  48. C CREATION D'UNE ENTREE DE LEGENDE DE TYPE "CATEGORIE"
  49. C **************************************************************
  50.  
  51. 100 CONTINUE
  52. KTXTD = 0
  53. KCLRD = 0
  54.  
  55. * on veut obligatoirement lire un texte quelconque et une couleur,
  56. * dans n'importe quel ordre
  57. 101 CONTINUE
  58. CALL LIRCHA(CH70,1,LCHA)
  59. IF (IERR.NE.0) RETURN
  60.  
  61. IF (LCHA.LE.4) THEN
  62. CALL PLACE(NCOUL,NBCOUL,ICOUL1,CH70(1:LCHA))
  63. IF (ICOUL1.NE.0) THEN
  64. * CHOIX ARBITRAIRE
  65. * si on trouve deux mots correspondant a des couleurs,
  66. * c'est le premier qui est pris comme texte de la categorie
  67. IF (KCLRD.EQ.1) THEN
  68. TXT = NCOUL(ICOUL)
  69. KTXTD = 1
  70. ELSE
  71. ICOUL = ICOUL1
  72. KCLRD = 1
  73. ENDIF
  74. ENDIF
  75. ELSE
  76. IF (KTXTD.EQ.1) THEN
  77. MOTERR = CH70(1:4)
  78. CALL ERREUR(1055)
  79. RETURN
  80. ELSE
  81. TXT = CH70(1:LCHA)
  82. KTXTD = 1
  83. ENDIF
  84. ENDIF
  85.  
  86. IF (KTXTD.EQ.0.OR.KCLRD.EQ.0) GOTO 101
  87.  
  88. SEGINI,MCATE1
  89. MCATE1.ICLRC = ICOUL - 1
  90. MCATE1.TXCAT = TXT
  91.  
  92. ICLAS1 = 1
  93. ISEGT1 = MCATE1
  94. GOTO 9000
  95.  
  96.  
  97. C **************************************************************
  98. C CREATION D'UNE ETIQUETTE
  99. C **************************************************************
  100.  
  101. 200 CONTINUE
  102.  
  103. IPOS =9
  104. ICOUL=IDCOUL
  105. DIS =0.D0
  106. BOOL =.TRUE.
  107. INUM =0
  108.  
  109. ILOOP = 0
  110. KPOSD = 0
  111. KCLRD = 0
  112. KTXTD = 0
  113. MELEME = 0
  114.  
  115. * les seuls arguments obligatoires sont un POINT et un MOT
  116. * on peut lire en option un MOT pour la couleur et un autre MOT
  117. * pour la position
  118. * on peut aussi lire en option un FLOTTANT et un LOGIQUE
  119. * tous ces objets peuvent etre specifies DANS N'IMPORTE QUEL ORDRE
  120. 201 CONTINUE
  121. ILOOP=ILOOP+1
  122.  
  123. CALL QUETYP(CHA8,0,IRET)
  124. IF (IRET.EQ.0) GOTO 299
  125.  
  126. IF (CHA8.EQ.'MOT') THEN
  127. CALL LIRCHA(CH70,1,LCHA)
  128. IF (IERR.NE.0) RETURN
  129. IF (LCHA.LE.4) THEN
  130. CALL PLACE(MPOS,NPOS,IPOS1,CH70(1:LCHA))
  131. IF (IPOS1.NE.0) THEN
  132. IPOS2 = IPOS1
  133. KPOSD = ILOOP
  134. GOTO 201
  135. ENDIF
  136. CALL PLACE(NCOUL,NBCOUL,ICOUL1,CH70(1:4))
  137. IF (ICOUL1.NE.0) THEN
  138. ICOUL2 = ICOUL1
  139. KCLRD = ILOOP
  140. GOTO 201
  141. ENDIF
  142. ENDIF
  143. TXT = CH70(1:LCHA)
  144. KTXTD = ILOOP
  145.  
  146. ELSEIF (CHA8.EQ.'FLOTTANT') THEN
  147. CALL LIRREE(DIS,1,IRET)
  148. IF (IERR.NE.0) RETURN
  149.  
  150. ELSEIF (CHA8.EQ.'POINT') THEN
  151. CALL LIROBJ('POINT',INUM,1,IRET)
  152. IF (IERR.NE.0) RETURN
  153. * Conversion en MELEME pour des raisons pratiques (il n'y a pas de PILE de POINT)
  154. NBNN = 1
  155. NBELEM = 1
  156. NBSOUS = 0
  157. NBREF = 0
  158. SEGINI,MELEME
  159. MELEME.NUM(1,1)=INUM
  160.  
  161.  
  162. ELSEIF (CHA8.EQ.'LOGIQUE') THEN
  163. CALL LIRLOG(BOOL,1,IRET)
  164. IF (IERR.NE.0) RETURN
  165. ENDIF
  166.  
  167. GOTO 201
  168.  
  169. 299 CONTINUE
  170.  
  171. C Le MAILLAGE doit exister
  172. IF (MELEME .EQ. 0) THEN
  173. MOTERR = 'MAILLAGE'
  174. CALL ERREUR(37)
  175. RETURN
  176. ENDIF
  177.  
  178. IF (KTXTD.GT.0) THEN
  179. IF (KPOSD.GT.0) IPOS = IPOS2
  180. IF (KCLRD.GT.0) ICOUL = ICOUL2 - 1
  181.  
  182. * si le texte n'est pas defini mais que la position ou la couleur
  183. * l'est, c'est parce que l'utilisateur voulait peut-etre afficher
  184. * un mot tel que 'ROUG', 'VERT', 'SE', 'C'...
  185. ELSE
  186. IF (KPOSD.GT.0.OR.KCLRD.GT.0) THEN
  187. * CHOIX ARBITRAIRE
  188. * on utilise le mot (definissant la couleur ou la position)
  189. * apparaissant en premier dans l'instruction pour definir
  190. * le texte (la couleur/position reprend alors sa valeur
  191. * par defaut)
  192. IF (KPOSD.LT.KCLRD) THEN
  193. TXT = MPOS(IPOS2)
  194. ICOUL = ICOUL2 - 1
  195. ELSE
  196. TXT = NCOUL(ICOUL2)
  197. IPOS = IPOS2
  198. ENDIF
  199. ELSE
  200. MOTERR(1:8) = 'MOT'
  201. CALL ERREUR(37)
  202. RETURN
  203. ENDIF
  204. ENDIF
  205.  
  206. SEGINI,METIQ1
  207. METIQ1.INUPT = MELEME
  208. METIQ1.ICLRE = ICOUL
  209. METIQ1.KPOSI = IPOS
  210. METIQ1.DEPOR = DIS
  211. METIQ1.BLIEN = BOOL
  212. METIQ1.TXETI = TXT
  213.  
  214. ICLAS1 = 2
  215. ISEGT1 = METIQ1
  216. GOTO 9000
  217.  
  218.  
  219. C **************************************************************
  220. C CREATION DE L'OBJET ANNOTATION
  221. C **************************************************************
  222.  
  223. 9000 CONTINUE
  224.  
  225. NBANNO = 1
  226. SEGINI,MANNO1
  227. MANNO1.ICLAS(1) = ICLAS1
  228. MANNO1.ISEGT(1) = ISEGT1
  229.  
  230. CALL ACTOBJ('ANNOTATI',MANNO1,1)
  231. CALL ECROBJ('ANNOTATI',MANNO1)
  232.  
  233. END
  234.  
  235.  

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