Complément sur les tables en Cobol

BoTTom |    Changer de couleur
 
                          COMPLEMENTS SUR LES TABLES
 
 
 1) INDEXATION
 
  VOUS SAVEZ ACCEDER A UN POSTE D'UNE TABLE grâce A UN INDICE
   (ZONE NUMERIQUE SANS LIEN PARTICULIER AVEC LA TABLE)
 
  NOUS POUVONS AUSSI UTLISER L'INDEXATION POUR ACCEDER AUX ELEMENTS
  D'UNE TABLE.
 
  UN INDEX EST UNE ZONE DE MEMOIRE PERMETTANT D'IDENTIFIER L'ELEMENT
  D'UNE TABLE. SON CONTENU EST GERÉ PAR L'ORDINATEUR QUI Y RANGE
  L'ADRESSE REELLE DE L'ELEMENT, CELA PERMET D'ACCELERER LES
  RECHERCHES EN TABLE.
 
  UN INDEX DOIT être DEFINI DANS LA CLAUSE OCCURS PAR LA CLAUSE
  INDEXED BY. IL NE PEUT être MODIFIE QUE PAR LES INSTRUCTIONS
  SET, SEARCH, PERFORM.
 
 


|    Changer de couleur
 
 2 LA CLAUSE OCCURS
 
 TROIS OPTIONS PERMETTENT D'ETENDRE LES FONCTIONS DE CETTE CLAUSE.
 
 2.1 INDEXED BY
 
 CETTE OPTION PERMET D'ASSOCIER A UNE TABLE UN INDEX.
 
 LE NOM DE L'INDEX NE DOIT PAS être DEFINI A UN AUTRE ENDROIT DE
 LA DATA DIVISION, IL EST GERE PAR LE COMPILATEUR.
 
 
 Exemple:
 
 01  TB-1.
     05  EL-1 PIC X(5) OCCURS 10 INDEXED BY IND-1.
 
 
 
     MOVE EL-1(IND-1) TO ZONE.
 


|    Changer de couleur
 
 2.2 L'OPTION KEY
 
 CETTE OPTION PERMET D'INDIQUER QUE LES DONNEES RANGEES DANS LA TABLE
 SONT CLASSEES PAR ORDRE CROISSANT OU DECROISSANT SELON LA VALEUR
 CONTENUE DANS UNE OU PLUSIEURS ZONES APPARTENANT A LA TABLE.
 
 
 01  TB-2.
     05  EL-2 PIC OCCURS 10 ASCENDING KEY D2 D3
                            INDEXED BY IND-2.
         10  D1     PIC X(10).
         10  D2     PIC X(5).
         10  D3     PIC X(55).
 
 
 
 
 
 
 
 


|    Changer de couleur
 
 2.3 L'OPTION DEPENDING ON
 
 CETTE OPTION S'EMPLOIE LORSQUE L'ON NE PEUT DETERMINER DIRECTEMENT
 LE NOMBRE D'ELEMENTS CONTENUS DANS UNE TABLE.
 
  Format
 
    OCCURS litteral-1 TO littéral-2 TIMES DEPENDING ON zone-1.
 
 CETTE FONCTION INDIQUE QUE LE NOMBRE D'ELEMENTS DÉFINI PAR LA CLAUSE
 OCCURS EST VARIABLE.
 
 77  NB PIC 9(3).
 01  TB3.
     05  ELS OCCURS 10 TO 100 DEPENDING ON NB.
         10  DON4  PIC X(10).
         10  DON5  PIC X(20).
 
     MOVE 75 TO NB.
    cette instruction aura pour effet d'indiquer que la table contient     75 éléments.

|    Changer de couleur
 
 3 L'INSTRUCTION SET.
 
 CETTE INSTRUCTION PERMET DE MANIPULER LES DONNEES INDEX EN LEUR
 AFFECTANT UNE VALEUR, OU EN INCREMENTANT OU DECREMENTANT LEUR VALEUR.
 
 1er format
 
                  __               __
      ( zone-1    ! zone-2  ------  !       ( zone-3
 SET  (           !                 !    TO ( litteral-1
      ( index-1   ! index-2 ------  !       ( index-3
 
 
 
 TOUS LES IDENTIFICATEURS DOIVENT être DES NOMS D'INDEX OU DES
 VALEURS NUMERIQUES ENTIERES
 
 SI LA ZONE PRECEDANT LE TO EST UNE ZONE NUMERIQUE ET LA ZONE SUIVANT
 LE TO EST UNE ZONE INDEX LA ZONE NUMERIQUE RECEVRA LE RANG
 REFERENCÉ PAR LA ZONE INDEX.
 


|    Changer de couleur
 
          SET IND-1 TO 1.
 
          SET ZONE TO IND-1.
 
              ZONE sera égal à 1.
 
 
 2ème format
 
 
                  __               __
      ( zone-1    ! zone-2  ------  !   UP BY  ( zone-3
 SET  (           !                 !          ( litteral-1
      ( index-1   ! index-2 ------  ! DOWN BY  ( index-3
                  !_               _!
 
 
 Le contenu des zones ou index placés avant le TO sont incrémentés
 (UP BY) ou décrémentés (DOWN BY) de la valeur correspondant au
 rang indiqué par la valeur des zones constantes ou index placés
 après le TO


|    Changer de couleur
 
 4 L'INSTRUCTION SEARCH
 
 CETTE INSTRUCTION PERMET DE RECHERCHER DANS UNE TABLE INDEXÉE UN
 ÉLÉMENT SATISFAISANT A UNE CONDITION INDIQUÉE ET D'ASSOCIER A L'INDEX
 LE RANG DE L'ÉLÉMENT SATISFAISANT CETTE CONDITION.
 
  Format 1
                  __                 __                          __  __
                  !         ( zone-2 !                            !   !
   SEARCH zone-1  ! VARYING (        !  AT END instruction COBOL  !   !
                  !_        (index-1 !_                          _!  _!
 
                                   ( instruction COBOL
                  WHEN condition-1 (
                                   ( NEXT SENTENCE
 
             __                                         __
             !                     ( instruction COBOL   !
             !    WHEN condition-2 (                     !  ...
             !                     ( NEXT SENTENCE       !
             !_                                         _!


|    Changer de couleur
 
   zone-1 désigne une table avec la clause INDEXED BY
   zone-2 doit être une zone numérique entière
 
 
 LORSQUE L'ON EXÉCUTE UNE INSTRUCTION SEARCH LA RECHERCHE COMMENCE
 PAR LE POSTE INDIQUÉ DANS L'INDEX (si l'index indique le rang 2 la
 recherche commencera au 2ème poste), SI L'INDEX A UNE VALEUR >
 AU NOMBRE DE POSTES DANS LA TABLE LA RECHERCHE S'ARRETE IMMEDIATEMENT
  ET SI LA CLAUSE AT END EST SPECIFIEE IL EXÉCUTERA L'INSTRUCTION
 
 AUTREMENT, IL SE POSITIONNERA SUR L'ÉLÉMENT INDIQUE PAR L'INDEX
 (si VARYING non spécifié il utilise l'index associé à la table)
 ET ÉVALUE LES CONDITIONS SPECIFIÉES DANS L'ORDRE SPECIFIÉ.
 
 SI AUCUNE N'EST SATISFAITE, IL CONTINUE LA RECHERCHE EN PRENANT
 L'ÉLÉMENT SUIVANT ET AINSI DE SUITE JUSQU'A CE QU'UNE CONDITION
 SOIT SATISFAITE OU QUE LE RANG INDIQUE PAR L'INDEX SOIT > AU NOMBRE
 D'ÉLÉMENTS DANS LA TABLE.
 
 SI LA CONDITION EST SATISFAITE IL ARRETE LA RECHERCHE ET EXÉCUTE
 L'INSTRUCTION PLACÉE APRES LE WHEN.


|    Changer de couleur
 
 Ex:
 
    01  ENTREE.
        05  E-PROD       PIC 9(4).
        05  E-QTE        PIC 9(5).
    01  S-PRIX           PIC 9(7)V99.
    01  TB-PROD.
        05  PRODUIT OCCURS 100 INDEXED BY IND-PROD.
            10  NUM-PROD PIC 9(4).
            10  PRI-PROD PIC 9(3)V99.
 
 
        SET IND-PROD TO 1.
        SEARCH PRODUIT  AT END DISPLAY 'PRODUIT INCONNU'
                        WHEN NUM-PROD(IND-PROD) = E-PROD
                        COMPUTE S-PRIX = E-QTE * PRI-PROD(IND-PROD).
 
 
 
 
 


|    Changer de couleur
 
  Format 2
 
                       __                       __
                       !                         !
   SEARCH ALL zone-1   !AT END instruction COBOL !
                       !_                       _!
 
                                   ( instruction COBOL
                  WHEN condition-1 (
                                   ( NEXT SENTENCE
 
 
  SEARCH ALL PERMET UNE RECHERCHE PLUS RAPIDE DES ELEMENTS
  DANS LA TABLE ELLE NE NECESSITE PAS DE POSITIONNER L'INDEX
  A UNE VALEUR (généralement la recherche est dichotomique)
  PAR CONTRE LA TABLE DOIT UTILISE LA CLAUSE ASCENDING KEY OU
  DECENDING KEY.
 
  Une seule condition peut être indiquée ne comportant que l'EGALITE.
  la condition supporte le AND  

T(IND-1) = ZONREC AND B(IND-1) = ZONRE2
 





©AF400