* Arborescence
NUM_BIN_4  WID_NOEUD
NUM_BIN_4  WID_NOEUD_A_SUPP
NUM_BIN_4  WID_PARENT
NUM_BIN_4  WID_PARENT_1
NUM_BIN_2  WPOS_NOEUD
ALPHA(250) WTXT_NOEUD
 
* Images
NUM_BIN_4  WIMG(4)


* Vider l'arborescence

WID_NOEUD = _ARB_RACINE
APPELER_METHODE ARBO SUPPRIMER WID_NOEUD NB2

 

* Expanser l'arborescence à l'initialisation

* Une fois l'arborescence remplie, expanser le noeud racine :
APPELER_METHODE ID_FEN0.ARBO EXPANSER ID_RACINE WEXPANSE RETOUR_NB2

 

 

Exemple 1 : CALENDRIER

Remplissage de l'arborescence ARBO à partir de la liste des mois de l'année (WLST_MOIS),

puis séquentiellement avec les jours de la semaine.

 

 

**********************************************
* Ajouter le noeud racine : MOIS
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'MOIS'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
SI NB2 = 1
   * On va ajouter des noeuds enfants à MOIS
   * Donc, on mémorise l'ID du noeud MOIS, qui devient noeud parent des mois de l'année
   WID_PARENT_1 = WID_NOEUD
 
   LECTURE_LST WLST_MOIS
      * On va ajouter un noeud correspondant à chaque mois sous le parent MOIS
      WID_PARENT = WID_PARENT_1
      WPOS_NOEUD = _ARB_POS_FIN
      WTXT_NOEUD = WMOIS
      APPELER_METHODE ARBO AJOUTER WARBO_ID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
      SI NB2 = 1
         WID_PARENT = WID_NOEUD
 
         * Sous le noeud du mois de l'année, on va ajouter 1 noeud enfant :
         *  - le n° du mois
         WPOS_NOEUD = _ARB_POS_FIN
         WTXT_NOEUD = &NUM_ALPHA(WMOIS_NO)
         SI WMOIS_NO <= 9
            WTXT_NOEUD = '0' /// WTXT_NOEUD
         FIN
         APPELER_METHODE ARBO AJOUTER WARBO_ID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
         * A ce noeud "n° du mois", on a ajouter 1 noeud frère :
         *  - le nb de jours
         SI NB2 = 1
            WID_PARENT = WID_NOEUD
 
            WPOS_NOEUD = _ARB_POS_APRES
            WTXT_NOEUD = &NUM_ALPHA(WNB_JOURS)
            WTXT_NOEUD = WTXT_NOEUD /// ' jours'
            APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
         FIN
      FIN
   FIN_LECTURE_LST
FIN
 
**********************************************
* On ajoute un 2nd noeud racine : JOURS DE LA SEMAINE
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'JOURS DE LA SEMAINE'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
* On va ajouter un noeud correspondant à chaque jour sous le parent JOURS DE LA SEMAINE
SI NB2 = 1
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_FIN
   WTXT_NOEUD = 'Lundi'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
  
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_APRES
   WTXT_NOEUD = 'Mardi'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_APRES
   WTXT_NOEUD = 'Mercredi'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_APRES
   WTXT_NOEUD = 'Jeudi'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
  
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_APRES
   WTXT_NOEUD = 'Vendredi'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_APRES
   WTXT_NOEUD = 'Samedi'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
   WID_PARENT = WID_NOEUD
   WPOS_NOEUD = _ARB_POS_APRES
   WTXT_NOEUD = 'Dimanche'
   APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
   WID_PARENT = WARBO_ID_NOEUD
FIN

 

 

 

Exemple 2 : NOMBRES

Remplissage de l'arborescence ARBO à partir de la liste des nombres (WLST_NB) de 1 à 1000, écrits en chiffres (WNB_CH) et en lettres (WNB_LTR).

 

 

* Ajouter le noeud racine : NOMBRES
WID_PARENT = _ARB_RACINE
WTXT_NOEUD = 'NOMBRES'
WPOS_NOEUD = _ARB_POS_FIN
APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
SI NB2 = 1
   * On mémorise l'ID du noeud racine NOMBRES, qui sera parent pour le nombre 1
   WID_PARENT = WID_NOEUD
 
   LECTURE_LST WLST_NB
      * On initialise le texte du noeud : le nombre aligné à droite, suivi de sa valeur en texte
      WTXT_NOEUD = &NUM_ALPHA(WNB_CH)
      SI WNB_CH <= 9
         WTXT_NOEUD = '   ' // WTXT_NOEUD
      SINON_SI WNB_CH <= 99
         WTXT_NOEUD = '  ' // WTXT_NOEUD
      SINON_SI WNB_CH <= 999
         WTXT_NOEUD = ' ' // WTXT_NOEUD
      FIN
      WTXT_NOEUD = WTXT_NOEUD /// ' -> ' // WNB_LTR
 
      * Si nombre 1, on va insérer un noeud enfant
      * Pour les autres nombres, on va insérer un noeud frère
      SI WNB_CH = 1
         WPOS_NOEUD = _ARB_POS_FIN
      SINON
         WPOS_NOEUD = _ARB_POS_APRES
      FIN
 
      * On insère le noeud
      APPELER_METHODE ARBO AJOUTER WID_PARENT WPOS_NOEUD WTXT_NOEUD *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
 
      * On mémorise l'ID du dernier noeud inséré afin de lui ajouter un noeud frère
      SI NB2 = 1
         WID_PARENT = WID_NOEUD
      FIN
   FIN_LECTURE_LST
FIN

 

 

 

Exemple 3 : ARBORESCENCE AVEC IMAGE

Les noeuds de l'aborescence sont précédés d'une image.

Le texte de chaque noeud est d'une couleur différente.

 

 

 

* Initialisation de la liste d'images
WIMG = 0
APPELER_METHODE ARBO AJOUTER_IMAGE 'Printemps.jpg' WIMG(1) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Eté.jpg' WIMG(2) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Automne.jpg' WIMG(3) NB2
APPELER_METHODE ARBO AJOUTER_IMAGE 'Hiver.jpg' WIMG(4) NB2
 
* Initialisation de l'arborescence ARBO
APPELER_METHODE ARBO SUPPRIMER _ARB_RACINE NB2
APPELER_METHODE ARBO AJOUTER _ARB_RACINE _ARB_POS_FIN 'Saisons' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_SYSTEME NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD 0 _ARB_TOUS_ETATS NB2
 
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_FIN 'Printemps' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_VERTFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(1) _ARB_TOUS_ETATS NB2
 
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Eté' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_BLEUFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(2) _ARB_TOUS_ETATS NB2
  
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Automne' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_ROUGEFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(3) _ARB_TOUS_ETATS NB2
  
APPELER_METHODE ARBO AJOUTER WID_NOEUD _ARB_POS_APRES 'Hiver' *AUCUN *AUCUN *AUCUN WID_NOEUD NB2
APPELER_METHODE ARBO FIXER_COULEUR_TEXTE WID_NOEUD _ARB_COUL_GRISFONCE NB2
APPELER_METHODE ARBO FIXER_IMAGE WID_NOEUD WIMG(4) _ARB_TOUS_ETATS NB2

 

 

Articles connexes