Télécharger @HISTOGR.procedur

Retour à la liste

Numérotation des lignes :

  1. * @HISTOGR PROCEDUR BP208322 19/08/23 21:15:01 10289
  2. ************************************************************************
  3. * NOM : @HISTOGR
  4. * DESCRIPTION : Création/Tracé de données sous forme d'histogramme
  5. ************************************************************************
  6. * HISTORIQUE : 2/05/2012 : JCARDO : création de la procédure
  7. * HISTORIQUE : 22/08/2019 : BP
  8. * HISTORIQUE :
  9. ************************************************************************
  10. * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES
  11. * en cas de modification de ce sous-programme afin de faciliter
  12. * la maintenance !
  13. ************************************************************************
  14. * ENTRÉES :: LVAL1*'LISTREEL' = données à tracer
  15. * TOPT1/'TABLE' = mise en forme des barres du graphique
  16. * LSOR1/'LOGIQUE' = renvoyer des objets en sortie ?
  17. * SORTIES :: EVOHIS/'EVOLUTION' = courbes à transmettre à DESS
  18. * TABHIS/'TABLE' = options de format à transmettre à DESS
  19. ************************************************************************
  20. * SYNTAXE (GIBIANE) :
  21. *
  22. * (EVOHIS TABHIS) = @HISTOGR LVAL1 (TOPT1) (LSOR1)
  23. *
  24. ************************************************************************
  25.  
  26. DEBP @HISTOGR LVAL1*'LISTREEL' TOPT1/'TABLE' LSOR1/'LOGIQUE' ;
  27.  
  28. EVO1 = VIDE 'EVOLUTIO' ;
  29.  
  30. * ==========================================
  31. * RÉCUPÉRATION ET VÉRIFICATION DES ARGUMENTS
  32. * ==========================================
  33.  
  34. NVAL1 = DIME LVAL1 ;
  35. SI (NVAL1 EGA 0) ;
  36. QUIT @HISTO ;
  37. FINS ;
  38.  
  39. * Renvoyer une EVOLUTION et une TABLE en sortie ?
  40. BSOR1 = FAUX ;
  41. SI (EXIS LSOR1) ;
  42. BSOR1 = LSOR1 ;
  43. FINS ;
  44.  
  45. * Parcours de la table d'options TOPT1
  46. * ----------------------------------------------------------------
  47. * 'COUL' [MOT ou LISTMOTS] = Couleur(s) des barres (défaut='DEFA')
  48. * 'NOMS' [TABLE] = Noms des barres (défaut=aucun)
  49. * 'LARG' [LISTREEL] = Largeurs des barres (défaut=0.8)
  50. * 'ESPA' [FLOTTANT] = Espace entre 2 barres (défaut=0.2)
  51. * 'HPOS' [FLOTTANT] = Décalage horizontal (défaut=0.)
  52. * 'INVE' [LOGIQUE] = De droite à gauche ? (défaut=FAUX)
  53. * 'DESS' [MOT] = Options passées à DESS (défaut=' ')
  54. * ----------------------------------------------------------------
  55. SI (NON (EXIS TOPT1)) ;
  56. TOPT1 = TABL ;
  57. FINS ;
  58.  
  59. * COUL
  60. * ---------------------------------------------------------------------
  61. LCOUL = MOTS 'DEFA' 'BLEU' 'ROUG' 'ROSE' 'VERT' 'TURQ' 'JAUN' 'BLAN'
  62. 'NOIR' 'VIOL' 'ORAN' 'AZUR' 'OCEA' 'CYAN' 'OLIV' 'GRIS' ;
  63. COUMULT = FAUX ;
  64. LCOU1 = MOTS 'DEFA' ;
  65. SI (EXIS TOPT1 'COUL') ;
  66. SI (EGA (TYPE (TOPT1 . 'COUL')) 'MOT') ;
  67. LCOU1 = MOTS (TOPT1 . 'COUL') ;
  68. SINON ;
  69. SI (EGA (TYPE (TOPT1 . 'COUL')) 'LISTMOTS') ;
  70. COUMULT = VRAI ;
  71. LCOU1 = TOPT1 . 'COUL' ;
  72. SINON ;
  73. MESS 'Indice "COUL" : type d objet incorrect' ;
  74. QUIT @HISTO ;
  75. FINS ;
  76. FINS ;
  77. FINS ;
  78.  
  79. * NOMS
  80. * ---------------------------------------------------------------------
  81. BNOM1 = FAUX ;
  82. SI (EXIS TOPT1 'NOMS') ;
  83. SI (EGA (TYPE (TOPT1 . 'NOMS')) 'TABLE') ;
  84. TNOM1 = TOPT1 . 'NOMS' ;
  85. BNOM1 = VRAI ;
  86. SINON ;
  87. MESS 'Indice "NOMS" : type d objet incorrect' ;
  88. QUIT @HISTO ;
  89. FINS ;
  90. FINS ;
  91.  
  92. * LARG
  93. * ---------------------------------------------------------------------
  94. LLAR1 = PROG NVAL1*0.8 ;
  95. SI (EXIS TOPT1 'LARG') ;
  96. SI (EGA (TYPE (TOPT1 . 'LARG')) 'LISTREEL') ;
  97. LLAR1 = TOPT1 . 'LARG' ;
  98. SI (NEG (DIME LLAR1) NVAL1) ;
  99. MESS 'Indice "LARG" : liste de longueur incorrecte' ;
  100. QUIT @HISTO ;
  101. FINS ;
  102. SINON ;
  103. MESS 'Indice "LARG" : type d objet incorrect' ;
  104. QUIT @HISTO ;
  105. FINS ;
  106. FINS ;
  107.  
  108. * ESPA
  109. * ---------------------------------------------------------------------
  110. ESPA1 = 0.2 ;
  111. SI (EXIS TOPT1 'ESPA') ;
  112. SI (EGA (TYPE (TOPT1 . 'ESPA')) 'FLOTTANT') ;
  113. ESPA1 = ABS TOPT1 . 'ESPA' ;
  114. SINON ;
  115. MESS 'Indice "ESPA" : type d objet incorrect' ;
  116. QUIT @HISTO ;
  117. FINS ;
  118. FINS ;
  119.  
  120. * HPOS
  121. * ---------------------------------------------------------------------
  122. HPOS1 = 0. ;
  123. SI (EXIS TOPT1 'HPOS') ;
  124. SI (EGA (TYPE (TOPT1 . 'HPOS')) 'FLOTTANT') ;
  125. HPOS1 = TOPT1 . 'HPOS' ;
  126. SINON ;
  127. MESS 'Indice "HPOS" : type d objet incorrect' ;
  128. QUIT @HISTO ;
  129. FINS ;
  130. FINS ;
  131.  
  132. * INVE
  133. * ---------------------------------------------------------------------
  134. DIR1 = 1. ;
  135. SI (EXIS TOPT1 'INVE') ;
  136. SI (EGA (TYPE (TOPT1 . 'INVE')) 'LOGIQUE') ;
  137. SI (EGA (TOPT1 . 'INVE') VRAI) ;
  138. DIR1 = -1. ;
  139. FINS ;
  140. SINON ;
  141. MESS 'Indice "INVE" : type d objet incorrect' ;
  142. QUIT @HISTO ;
  143. FINS ;
  144. FINS ;
  145.  
  146. * DESS
  147. * ---------------------------------------------------------------------
  148. BDES1 = FAUX ;
  149. MDES1 = ' ' ;
  150. SI (EXIS TOPT1 'DESS') ;
  151. SI (EGA (TYPE (TOPT1 . 'DESS')) 'MOT') ;
  152. BDES1 = VRAI ;
  153. MDES1 = TOPT1 . 'DESS' ;
  154. SINON ;
  155. MESS 'Indice "DESS" : type d objet incorrect' ;
  156. QUIT @HISTO ;
  157. FINS ;
  158. FINS ;
  159.  
  160.  
  161. * ============================
  162. * FABRICATION DE L'HISTOGRAMME
  163. * ============================
  164.  
  165. EVOHIS TABHIS = VIDE 'EVOLUTIO' 'TABLE' ;
  166. TABHIS . 'TITRE' = TABL ;
  167.  
  168. XPOS = DIR1*HPOS1 ;
  169. REPE BLOHIS NVAL1 ;
  170.  
  171. * Récupération des paramètres de la barre
  172. VAL1 = EXTR LVAL1 &BLOHIS ;
  173. LAR1 = EXTR LLAR1 &BLOHIS ;
  174. MCOU1 = EXTR LCOU1 ((@MOD (&BLOHIS - 1) (DIME LCOU1)) + 1) ;
  175. NOM1 = CHAI &BLOHIS ;
  176. SI (BNOM1) ;
  177. SI (EXIS TNOM1 &BLOHIS) ;
  178. NOM1 = CHAI TNOM1 . &BLOHIS ;
  179. FINS ;
  180. FINS ;
  181.  
  182. * Création des listes LX et LY
  183. LX = PROG ;
  184. LY = PROG ;
  185. SI (ESPA1 > 0.) ;
  186. XPOS = XPOS + (0.5*DIR1*ESPA1) ;
  187. FINS ;
  188. LX = LX ET XPOS ;
  189. LY = LY ET VAL1 ;
  190. XPOS = XPOS + (DIR1*LAR1) ;
  191. LX = LX ET XPOS ;
  192. LY = LY ET VAL1 ;
  193. SI (ESPA1 > 0.) ;
  194. XPOS = XPOS + (0.5*DIR1*ESPA1) ;
  195. FINS ;
  196.  
  197. * Mise à jour de EVOHIS et TABHIS
  198. EVO1 = EVOL MCOU1 'MANU' 'TYPE' 'HIST' 'LEGE' NOM1 LX LY ;
  199. EVOHIS = EVOHIS ET EVO1 ;
  200. TABHIS . 'TITRE' . &BLOHIS = CHAI NOM1 ;
  201. TABHIS . &BLOHIS = MOT 'REMP' ;
  202.  
  203. FIN BLOHIS ;
  204.  
  205.  
  206. * ===================
  207. * FIN DE LA PROCEDURE
  208. * ===================
  209.  
  210. SI (BDES1) ;
  211. DESS EVOHIS TABHIS (TEXT MDES1) ;
  212. FINS ;
  213.  
  214. SI (BSOR1) ;
  215. RESP EVOHIS TABHIS ;
  216. FINS ;
  217.  
  218. FINP ;
  219.  
  220.  
  221.  

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