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 :

cherche syntaxe sur zone occurs


Sujet :

Cobol

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut cherche syntaxe sur zone occurs
    hello,

    j'ai une structure d'un fichier de la sorte;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    NLG NIVEAU      RUBRI. OCC   F. INTERNE U  LONG   POS  F. ENTREE   LONG   POS
    005 10          TIKODE       999        D     3     1  999            3     1
    010 10          SECNBR       99         D     2     4  99             2     4
    015 10          SEC052       X(52)      D    52     6  X(52)         52     6
    020 10          SEC022       X(22)      D    22    58  X(22)         22    58
    025 10          SEC006       X(06)      D     6    80  X(06)          6    80
    030 10          SEC007       X(07)      D     7    86  X(07)          7    86
    035 10          SEC039   7   X(39)      D    39    93  X(39)         39    93
    040 10          SEC021       X(21)      D    21   366  X(21)         21   366
    045 10          SEC39A  41   X(39)      D    39   387  X(39)         39   387
    je souhaite en cobol atteindre la zone sec039(1) (qui est occursé 7 fois) sur la position 1 a 2.

    comment s'ecrit l'instruction SVP ?

    par avance merci

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MOVE SEC39 (1) (1:2) TO WHATEVER
    mais c'est moche, l'idéal est de découper SEC39 en sous-variables, la première étant de longueur 2.
    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.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    oui c est moche et c est pour ca que je n ai meme pas osé l essayer

    bon si ca marche ca me va ...

    j essai ...

    et merci

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    bon effectivement ca marche. cool.

    j ai une autre question !

    comment faire un move d une zone occursé vers une autre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    exemple;
    
    01 toto pic x(39) occurs 41
    01 titi pic x(39) occurs 41
    move toto to titi donne l erreur suivante ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table item not subscripted or indexed.  First occurrence assumed
    merci par avance

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    01 TOTO. 
        05 TOTO-L PIC X(39) OCCURS 41.
    01 TITI.
        05 TITI-L PIC X(39) OCCURS 41.
    (.../...)
        MOVE TOTO TO TITI
        .
    ton erreur vient de ce que ta donnée est occursée dès le niveau 01. C'est généralement interdit, pour des questions de lisibilité. Et surtout, ça interdit de manipuler l'ensemble. En fait, une version vraiment propre serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    01 TOTO. 
        05 TOTO-LIGNE OCCURS 41.
            10 TOTO-DONNEE PIC X(39).
    01 TITI.
        05 TITI-LIGNE OCCURS 41.
            10 TITI-DONNEE PIC X(39).
    (.../...)
        MOVE TOTO TO TITI
        .
    Tu as toujours le même découpage, mais tu dégages ainsi la donnée complète, l'occurence complète, et la donnée de l'occurence. On peut pousser le vice :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    01 TOTO. 
        05 TOTO-LIGNE OCCURS 41.
            10 TOTO-DONNEE PIC X(39).
            10 TOTO-RED REDEFINES TOTO-DONNEE.
                15 TOTO-1-2 PIC X(2).
                15 FILLER PIC X(37).
    01 TITI.
        05 TITI-LIGNE OCCURS 41.
            10 TITI-DONNEE PIC X(39).
            10 TITI-RED REDEFINES TITI-DONNEE.
                15 TITI-1-2 PIC X(2).
                15 FILLER PIC X(37).
    (.../...)
        MOVE TOTO-1-2 (1) TO TITI-1-2 (1)
        .
    Et tu as la réponse à tes deux questions, bien plus propre que l'infâme solution ci-dessus.

    EDIT : si tu n'as pas la permission de modifier la définition des données(par exemple si elle appartient à une autre équipe), alors tu devras ruser brutalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    77 COMPTEUR PIC X9(8).
    (.../...)
        PERFORM VARYING COMPTEUR FROM 1 BY 1 UNTIL COMPTEUR > 41
          MOVE TOTO(COMPTEUR) TO TITI(COMPTEUR)
        END-PERFORM
        .
    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.

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 193
    Points : 76
    Points
    76
    Par défaut
    super merci
    avec ca je vais faire un carton, surtout mon prog va resembler qlq chose de propre

    a+

  7. #7
    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
    Citation Envoyé par nenekes Voir le message
    super merci
    avec ca je vais faire un carton, surtout mon prog va resembler qlq chose de propre

    a+
    C'est bien pour ça que j'ai pris le temps de détailler une solution propre. Si ça se trouve, un jour, j'aurais à maintenir ton code..... Le découpage des données est primordial en COBOL, il permet parfois de diviser par 10 le temps de maintenance. les niveaux 88 sont importants aussi Exemple vécu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    01 DONNEES-CARTE.
        (.../...)
        05 TYPE-CARTE PIC X(3).
            88 CARTE-BLEUE VALUE '001'.
            88 CARTE-PREMIER VALUE '002'.
            88 CARTE-YYY VALUE '003'.
            88 CARTE-RETRAIT-INTERNE VALUES '001' '002'.
            88 CARTE-RETRAIT-EXTERNE VALUES '001' '002'.
            88 CARTE-PAIEMENT VALUES '001' '002'.
            88 CARTE-DEPOT-POSSIBlE VALUES '002' '003'.
    Ensuite, quand le client va au GAB, le programme teste si son action est permise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        IF CARTE-RETRAIT-EXTERNE (.../...)
    Et le jour ou on ajoute une carte de retrait "privative" limitée aux GAB de la banque emettrice, on a juste à changer la définition de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    01 DONNEES-CARTE.
        (.../...)
        05 TYPE-CARTE PIC X(3).
            88 CARTE-BLEUE VALUE '001'.
            88 CARTE-PREMIER VALUE '002'.
            88 CARTE-YYY VALUE '003'.
            88 CARTE-PRIVATIVE VALUE '004'.
            88 CARTE-RETRAIT-INTERNE VALUES '001' '002' '004'.
            88 CARTE-RETRAIT-EXTERNE VALUES '001' '002'.
            88 CARTE-PAIEMENT VALUES '001' '002'.
            88 CARTE-DEPOT-POSSIBlE VALUES '002' '003'.
    alors que si on avait codé des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        IF TYPE-CARTE = '001' OR '002'
    il aurait fallu, partout, les modifier. Si en plus ta définition de données est centralisée dans une COPY, ne reste plus qu'à recompiler tous les programmes utilisant le type de carte.
    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.

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

Discussions similaires

  1. Evènement sur zone de liste
    Par Mout85 dans le forum IHM
    Réponses: 3
    Dernier message: 20/06/2005, 11h44
  2. Cherche livre sur une méthodologie de conception de sgbd
    Par aronnax dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 25/01/2005, 08h32
  3. cherche conseil sur livre pour jbuilder
    Par med1 dans le forum JBuilder
    Réponses: 3
    Dernier message: 09/06/2004, 13h33
  4. [WIN32]Cherche cours sur Richedit
    Par Invité dans le forum Windows
    Réponses: 2
    Dernier message: 07/06/2004, 22h54

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