IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

Question sur les tableaux


Sujet :

Cobol

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Question sur les tableaux
    Bonjour tout le monde,

    J'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           01 COTATION-EXA.
              02 TRIMESTRE OCCURS 4 TIMES.
                 03 NOTE-ELEVE PIC 99V99 OCCURS 3 TIMES.
    On a donc une structure ici ?

    Une structure qui est un tableau ?

    Je ne comprends pas pourquoi on met OCCURS 4 TIMES, ça veut dire qu'on a 4 lignes ? pourquoi ne met-on pas de masque ici alors que dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 03 NOTE-ELEVE PIC 99V99 OCCURS 3 TIMES
    on a un masque 99V99.

    Merci d'avance pour votre aide.

    beegees

  2. #2
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par beegees Voir le message
    Bonjour tout le monde,
    Bonjour beegees.
    J'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           01 COTATION-EXA.
              02 TRIMESTRE OCCURS 4 TIMES.
                 03 NOTE-ELEVE PIC 99V99 OCCURS 3 TIMES.
    On a donc une structure ici ?
    Oui
    Une structure qui est un tableau ?
    Oui, si tu veux.
    Je ne comprends pas pourquoi on met OCCURS 4 TIMES, ça veut dire qu'on a 4 lignes ? pourquoi ne met-on pas de masque ici alors que dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 03 NOTE-ELEVE PIC 99V99 OCCURS 3 TIMES
    on a un masque 99V99.
    Oui, on a une première occurence de 4 (4 lignes), mais chaque ligne est à son tour décomposée (structure=groupe), et donc on ne met pas de masque qui ne se met que sur les composants (zones) élémentaires.

    Ici chaque ligne est décomposée en 3 fois NOTE-ELEVE (2è niveau d'occurence)

    En récap, on a ceci :

    - ligne 1 = TRIMESTRE (1) contient {NOTE-ELEVE(1,1) NOTE-ELEVE(1,2) NOTE-ELEVE(1,3)}

    - ligne 2 = TRIMESTRE (2) contient {NOTE-ELEVE(2,1) NOTE-ELEVE(2,2) NOTE-ELEVE(2,3)}

    - ligne 3 = TRIMESTRE (3) contient {NOTE-ELEVE(3,1) NOTE-ELEVE(3,2) NOTE-ELEVE(3,3)}

    - ligne 4 = TRIMESTRE (4) contient {NOTE-ELEVE(4,1) NOTE-ELEVE(4,2) NOTE-ELEVE(4,3)}

    Si j'essaie de comprendre l'exemple : Il y a 4 trimestres, dans chaque trimestre l'élève a 3 notes (ça peut être une note d'une matière pour chaque mois ou les notes de 3 matières).

    A+

  3. #3
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Pourquoi pas. On peut faire des tableaux à plusieurs dimensions. Dans l'exemple il est facile de déduire des noms de données que l'on veut gérer une table des notes des élèves par trimestre et mois dans le trimestre, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           01 COTATION-EXA.
              02 TRIMESTRE OCCURS 4 TIMES.
                 03 NOTE-ELEVE PIC 99V99 OCCURS 3 TIMES.
    On a donc un tableau des trimestres, donc 4 occurrences, chacune décomposées par les 3 notes mensuelles de l'élève pour le trimestre. Au plan réservation mémoire il reviendrait au même de déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           01 COTATION-EXA.
                 03 NOTE-ELEVE-MOIS PIC 99V99 OCCURS 12 TIMES.
    C'est cependant fonctionnellement différent. Dans le premier cas on accédera à une note d'après le trimestre et le mois dans le trimestre (donc OBLIGATOIREMENT via 2 indices, du niveau le plus haut jusqu'au plus bas (inversement proportionnel au niveau de la picture COBOL)
    ex: MOVE NOTE-ELEVE(MY-TRIMESTRE,1) to NOTE-ELEVE-MOIS1-DU-TRIMESTRE
    Dans le second cas on accédera directement par le mois
    ex : MOVE NOTE-ELEVE(1) to NOTE-ELEVE-JANVIER

    Maintennant, même si la réservations mémoire est identique, quand on peut éviter de multiplier le nombre de dimensions d'un tableau, c'est mieux pour les performances, mais c'est un exemple basique, dans la réalité des besoins fonctionnels ce n'est pas si toujours si simple. Dans le cas présent il est évident qu'il suffisait de recalculer le mois d'après le trimestre et le mois du trimestre pour pouvoir travailler avec un indice simple
    qque chose du genre :
    Compute MY-MOIS = ((MY-TRIMESTRE * 4) + MOIS-TRIM ) -4)
    Move NOTE-ELEVE(MY-MOIS) to NOTE-ELEVE-MOIS1-DU-TRIMESTRE
    Mais quelque part on voit bien que la lisibilité du code s'en ressent.

    Nb, j'ai vu au dernier moment qu'une réponse venait d'être ajoutée. Celle-ci fait double emploi mais je vais tt de même l'envoyer rien que pour la reflexion sur les compromis choix fonctionnels lisibilité du code et performances

  4. #4
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Bonjour beegees.

    Oui

    Oui, si tu veux.


    Oui, on a une première occurence de 4 (4 lignes), mais chaque ligne est à son tour décomposée (structure=groupe), et donc on ne met pas de masque qui ne se met que sur les composants (zones) élémentaires.

    Ici chaque ligne est décomposée en 3 fois NOTE-ELEVE (2è niveau d'occurence)

    En récap, on a ceci :

    - ligne 1 = TRIMESTRE (1) contient {NOTE-ELEVE(1,1) NOTE-ELEVE(1,2) NOTE-ELEVE(1,3)}

    - ligne 2 = TRIMESTRE (2) contient {NOTE-ELEVE(2,1) NOTE-ELEVE(2,2) NOTE-ELEVE(2,3)}

    - ligne 3 = TRIMESTRE (3) contient {NOTE-ELEVE(3,1) NOTE-ELEVE(3,2) NOTE-ELEVE(3,3)}

    - ligne 4 = TRIMESTRE (4) contient {NOTE-ELEVE(4,1) NOTE-ELEVE(4,2) NOTE-ELEVE(4,3)}

    Si j'essaie de comprendre l'exemple : Il y a 4 trimestres, dans chaque trimestre l'élève a 3 notes (ça peut être une note d'une matière pour chaque mois ou les notes de 3 matières).

    A+
    Citation Envoyé par Homer-ac Voir le message
    Pourquoi pas. On peut faire des tableaux à plusieurs dimensions. Dans l'exemple il est facile de déduire des noms de données que l'on veut gérer une table des notes des élèves par trimestre et mois dans le trimestre, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           01 COTATION-EXA.
              02 TRIMESTRE OCCURS 4 TIMES.
                 03 NOTE-ELEVE PIC 99V99 OCCURS 3 TIMES.
    On a donc un tableau des trimestres, donc 4 occurrences, chacune décomposées par les 3 notes mensuelles de l'élève pour le trimestre. Au plan réservation mémoire il reviendrait au même de déclarer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           01 COTATION-EXA.
                 03 NOTE-ELEVE-MOIS PIC 99V99 OCCURS 12 TIMES.
    C'est cependant fonctionnellement différent. Dans le premier cas on accédera à une note d'après le trimestre et le mois dans le trimestre (donc OBLIGATOIREMENT via 2 indices, du niveau le plus haut jusqu'au plus bas (inversement proportionnel au niveau de la picture COBOL)
    ex: MOVE NOTE-ELEVE(MY-TRIMESTRE,1) to NOTE-ELEVE-MOIS1-DU-TRIMESTRE
    Dans le second cas on accédera directement par le mois
    ex : MOVE NOTE-ELEVE(1) to NOTE-ELEVE-JANVIER

    Maintennant, même si la réservations mémoire est identique, quand on peut éviter de multiplier le nombre de dimensions d'un tableau, c'est mieux pour les performances, mais c'est un exemple basique, dans la réalité des besoins fonctionnels ce n'est pas si toujours si simple. Dans le cas présent il est évident qu'il suffisait de recalculer le mois d'après le trimestre et le mois du trimestre pour pouvoir travailler avec un indice simple
    qque chose du genre :
    Compute MY-MOIS = ((MY-TRIMESTRE * 4) + MOIS-TRIM ) -4)
    Move NOTE-ELEVE(MY-MOIS) to NOTE-ELEVE-MOIS1-DU-TRIMESTRE
    Mais quelque part on voit bien que la lisibilité du code s'en ressent.

    Nb, j'ai vu au dernier moment qu'une réponse venait d'être ajoutée. Celle-ci fait double emploi mais je vais tt de même l'envoyer rien que pour la reflexion sur les compromis choix fonctionnels lisibilité du code et performances
    Bonjour,

    Un tout GRAND merci à vous deux pour vos réponses très complètes qui m'en disent beaucoup plus sur les tableaux maintenant.

    J'ai super bien compris, je vous en remercie encore.

    Attendez-vous à me voir encore sur ce forum, j'ai un examen de COBOL dans deux semaines.

    Merci encore pour tout.

    beegees

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question sur les tableaux
    Par scolopendra dans le forum Langage
    Réponses: 4
    Dernier message: 12/06/2007, 15h15
  2. Question sur les tableaux
    Par Chii-san dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/03/2007, 11h48
  3. Réponses: 9
    Dernier message: 13/06/2006, 21h52
  4. [Tableaux] Question sur les tableaux
    Par Shandler dans le forum Langage
    Réponses: 16
    Dernier message: 21/04/2006, 00h15
  5. question sur les tableaux
    Par Neko dans le forum C++
    Réponses: 13
    Dernier message: 14/02/2006, 02h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo