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 :

Tableau à deux dimensions


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 Tableau à deux dimensions
    Bonjour tout le monde,

    Je voudrais savoir ce que le All et le I veulent dire par rapport à un tableau à deux dimensions dans l'expression suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOVE FUNCTION MAX(TA2(ALL,I)) TO TABMAX(I)
    ALL s'est la colonne et I la ligne ou le contraire ?

    Merci d'avance.

    beegees

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    Euh ... ça dépend de comment tu penses xD

    Par cela, j'entends que pour une définition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    01      Table.
     02     indice1 occurs 5 times.
      03    indice2 occurs 5 times.
       04   var pic X.
    la réponse à ta question dépend de ce qui est représenté par une ligne dans ton esprit : l'indice 1 ou l'indice 2. Cela semble bête ... mais pour moi, le premier indice est la ligne (car quand je n'ai qu'une dimension, je parle de ligne ... et de plus on me l'a enseigné comme ça ^^ ) cependant , j'ai déjà croisé des personnes qui réfléchissaient autrement et pour qui le premier indice représentait la colonne ... (je vous raconte pas les quiproquo ....)

    La règle est qu'il faut exprimer les indices dans l'ordre croissant de leur niveau (le plus bas niveau sera donc le premier).
    Donc dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    move  var(all, i) to machintruc
    all se réfère à l'indice1, et i à l'indice 2

    Personnellement, je conseille de ne pas réfléchir "en ligne et colonne" puisque ce mode de réflexion n'est valable que pour les tableaux à 2 dimensions, or on peut mettre N dimensions (il me semble que la limite est 24 sur du z/OS, valeur seulement définie par la limite de taille pouvant atteindre une zone lvl1)

  3. #3
    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
    Salut,

    Merci pour ta réponse.

    Voici le code de mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           01 Tableau.
               02 LIGNES OCCURS 3 TIMES.
                   03 COLONNES PIC 9 OCCURS 5 TIMES.
    et les données sont ceci :

    15624
    79356
    15877

    Qu'en penses-tu ?

    Encore merci pour ton aide.

    beegees

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    j'en pense que dans ton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MOVE FUNCTION MAX(TA2(ALL,I)) TO TABMAX(I)
    le ALL c'est la ligne, et le I c'est la colonne ...

  5. #5
    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 Pico----- Voir le message
    ... j'ai déjà croisé des personnes qui réfléchissaient autrement et pour qui le premier indice représentait la colonne ... (je vous raconte pas les quiproquo ....)
    Entièrement d'accord.

    Citation Envoyé par Pico----- Voir le message
    La règle est qu'il faut exprimer les indices dans l'ordre croissant de leur niveau (le plus bas niveau sera donc le premier).
    Personnellement je n'aime pas trop cette règle parce qu'on confond souvent la valeur du nombre niveau et sa profondeur, donc entre le "plus bas"se comprendrait le "plus profond". Je dirais premier déclaré = premier indicé (premier indice écrit).

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 138
    Points : 266
    Points
    266
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Je dirais premier déclaré = premier indicé (premier indice écrit).
    C'est pas mal aussi, voir mieux

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    En fait, on revient sur la problématique de nommage qui m'est chère.

    Si dans ton tableau, tu gères, disons, des usines, composées d'ateliers, alors tu auras une structure de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           01 Tableau.
               02 USINE OCCURS 3 TIMES.
                   03 ATELIER PIC 9 OCCURS 5 TIMES.
    ...USINE au singulier, et non au pluriel comme les LIGNES de beegees car LIGNE (1) représente une seule ligne !

    ... et tes indices pourront s'appeler IND-USI, IND-ATE par exemple.

    Comme ça, oubliés les noeuds au cerveau pour savoir ce qui est une ligne et ce qui est une colonne.

    Dans le même ordre d'idées, les noms des indices ALL et I étaient particulièrement mal choisis :
    • ALL est un mot réservé du COBOL ;
    • I, c'est génial, essaie de faire un FIND I sur un programme (et même un FIND I WORD) !

  8. #8
    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 fremen167 Voir le message
    ....
    ALL est un mot réservé du COBOL ;
    Oui, effectivement et il signifie ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOVE FUNCTION MAX(TA2(ALL,I)) TO TABMAX(I)
    le MAX, pour un I fixé, de tous TA2(I1,I), I1 variant de 1 à 3.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 362
    Points : 419
    Points
    419
    Par défaut
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Oui, effectivement et il signifie ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOVE FUNCTION MAX(TA2(ALL,I)) TO TABMAX(I)
    le MAX, pour un I fixé, de tous TA2(I1,I), I1 variant de 1 à 3.
    Tiens, j'ai appris quelque chose aujourd'hui !!

    Merci

  10. #10
    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 fremen167 Voir le message
    Merci
    Il n'y a pas de quoi, je suis sûr que tu feras la même chose pour moi.
    Amitiés.

    Edit : on peut faire ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MOVE FUNCTION MAX(TA2(ALL,ALL)) TO WMAX
    pour rechercher le maximu de toute la matrice. (tableau)

  11. #11
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    reste que I comme compteur, je reserve ça aux initialisations. Dès que le compteur a un sens fonctionnel, je lui donne un vrai nom. Sinon, je me tire une balle.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  12. #12
    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 el_slapper Voir le message
    reste que I comme compteur, je reserve ça aux initialisations. Dès que le compteur a un sens fonctionnel, je lui donne un vrai nom. Sinon, je me tire une balle.
    Et ça te fera une belle jambe

    Bien sûr tant qu'à faire, les noms des variables, y compris les indices et les index, doivent être explicites. Bon les I, J, K, L, M, N comme indices sont un héritage des matheux et des fortranistes. Je rejoins fremen167 dans la façon de nommer les indices/index : I-Usine, I-Atelier, I-Machine, etc... ou I-Elève, I-Mois, I-Note, etc...

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

Discussions similaires

  1. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 14h27
  2. Affichage d'un tableau à deux dimensions.
    Par Allan dans le forum C
    Réponses: 3
    Dernier message: 11/12/2005, 18h29
  3. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50

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