Télécharger anno.eso

Retour à la liste

Numérotation des lignes :

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

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