Download @HISTOGR.procedur

Back to the list

   1 : * @HISTOGR  PROCEDUR  JC220346  12/05/02    21:15:01     7366           
   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 :  
   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 = ' ' ;
 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' NOM1 LX NOM1 LY ;
 199 :     EVOHIS = EVOHIS ET EVO1 ;
 200 :     TABHIS . 'TITRE' . &BLOHIS = CHAI NOM1 ;
 201 :     TABHIS . &BLOHIS = MOT 'REMP' ;
 202 : FIN BLOHIS ;
 203 : 
 204 : 
 205 : * ===================
 206 : * FIN DE LA PROCEDURE
 207 : * ===================
 208 : 
 209 : SI (BDES1) ;
 210 :     DESS EVOHIS TABHIS (TEXT MDES1) ;
 211 : FINS ;
 212 : 
 213 : SI (BSOR1) ;
 214 :     RESP EVOHIS TABHIS ;
 215 : FINS ;
 216 : 
 217 : FINP ; 
 218 :  

© Cast3M 2003 - All rights reserved.
Disclaimer