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 :

Initialisation d'une zone sans utiliser INITIALIZE


Sujet :

Cobol

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Macao

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut Initialisation d'une zone sans utiliser INITIALIZE
    Bonjour,

    Je demande si y'a un autre moyen plus pratique d'initialiser une zone sans passer par INITIALIZE, et sans passer par une initialisation ( variable par variable ).

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    01  MXXXXXX-OP01.
       03 OP01-D-REF.
            05 C-FORMT-D PIC 9(4) COMP-4.
                 88 ED-ISO VALUE 0.
                 88 ED-XXX VALUE 1.  
                 88 ED-YYY VALUE 2.
            05 D-ISO.
                 06 D-ISO-AAAA PIC 9(4).
                 06 D-ISO-CT1 PIC X.
                 06 D-ISO-MM PIC 9(2).
                 06 D-ISO-CT2 PIC X. 
                 06 D-ISO-JJ PIC 9(2).
    Ceci est mon premier post sur ce forum, montrez moi votre chaleur d'accueil

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur et formateur Mainframe
    Inscrit en
    Février 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur et formateur Mainframe
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 44
    Par défaut
    Bonjour oviich

    Non il n'y a pas de commande autre que l'INITIALIZE et le MOVE variable par variable permettant d'initialiser une variable.

    Ce qui peut être fait en revanche c'est valoriser tes variables en les déclarant. Si on reprend ton code en exemple ça donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    01  MXXXXXX-OP01.
       03 OP01-D-REF.
            05 C-FORMT-D PIC 9(4) COMP-4.
                 88 ED-ISO VALUE 0.
                 88 ED-XXX VALUE 1.  
                 88 ED-YYY VALUE 2.
            05 D-ISO.
                 06 D-ISO-AAAA PIC 9(4) VALUE 0.
                 06 D-ISO-CT1  PIC X    VALUE SPACE.
                 06 D-ISO-MM   PIC 9(2) VALUE 0.
                 06 D-ISO-CT2  PIC X    VALUE SPACE. 
                 06 D-ISO-JJ   PIC 9(2) VALUE 0.
    Mais je ne vois pas en quoi l'INITIALIZE ne te semble pas pratique. Un INITIALIZE sur une zone groupe initialise les variables élémentaires selon leur PICTURE.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Sujet récurrent, dont voici l'un des clones http://www.developpez.net/forums/d13...on-initialize/

    Le souci éventuel d'initialize est la présence de redefines, auquel cas il faut faire les move avec les valeurs souhaitées (numérique par exemple)

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Macao

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour

    Sujet récurrent, dont voici l'un des clones http://www.developpez.net/forums/d13...on-initialize/

    Le souci éventuel d'initialize est la présence de redefines, auquel cas il faut faire les move avec les valeurs souhaitées (numérique par exemple)
    Merci escartefigue, je vais y jeter un coup d'oeil.

    Citation Envoyé par BernardBZH Voir le message
    Bonjour oviich

    Mais je ne vois pas en quoi l'INITIALIZE ne te semble pas pratique. Un INITIALIZE sur une zone groupe initialise les variables élémentaires selon leur PICTURE.
    INITIALIZE c'est pratique, mais le client avec lequel je travaille m'a demandé de ne pas l'utiliser, peut être, çà consôme trop en memoire. Vu qu'on travaille avec des copy oû y'a beaucoup de zones, et juste quelques unes qui seront utilisées à chaque traitement, c'est pas la peine de initializer 1000 variable si on ne va utiliser que 40 par exemple.

    Merci pou votre passage

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Citation Envoyé par oviich Voir le message
    (.../...)
    INITIALIZE c'est pratique, mais le client avec lequel je travaille m'a demandé de ne pas l'utiliser, peut être, çà consôme trop en memoire. Vu qu'on travaille avec des copy oû y'a beaucoup de zones, et juste quelques unes qui seront utilisées à chaque traitement, c'est pas la peine de initializer 1000 variable si on ne va utiliser que 40 par exemple.

    Merci pou votre passage
    Il est louche, le client. 99% des problèmes de perf, c'est de l'entrée/sortie en trop grand nombre. les 1% restants étant généralement des algorithmes aberrants(j'ai pratiqué, honte à moi). Franchement, l'emprunte d'un initialize, par rapport à une entrée sortie, c'est peanuts.

    Après, si il te fait chier là dessus, ben, pas d'autre choix que de faire un MOVE correspondant à la valeur à initialiser. Mais c'est vraiment chercher à économiser des grains de sables dans le Sahara...

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Macao

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    ... pas d'autre choix que de faire un MOVE correspondant à la valeur à initialiser. Mais c'est vraiment chercher à économiser des grains de sables dans le Sahara...
    Y'a rien de plus chiantque ces MOVE.. TO pour initializer. Y'avais vraiment beaucoup d'allez retour concernant ce sujet, mais ce client insiste pour ne pas utiliser INITIALIZE. Je pense que je n'ai pas d'autre choix.

    Merci pour ton passage

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 780
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 780
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Franchement, l'emprunte d'un initialize, par rapport à une entrée sortie, c'est peanuts.
    Il y a quand même le cas des initialize de tableaux (à outrance) qui peuvent être très coûteux. Suite à une modification sur ce genre d'initialize j'ai eu une fois un gain avec un facteur 100 niveau temps CPU.

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    Il est louche, le client. 99% des problèmes de perf, c'est de l'entrée/sortie en trop grand nombre. les 1% restants étant généralement des algorithmes aberrants(j'ai pratiqué, honte à moi). Franchement, l'emprunte d'un initialize, par rapport à une entrée sortie, c'est peanuts.
    Tout à fait d'accord concernant les I/O qui représentent le plus clair du temps de traitement, mais les développeurs oublient trop souvent l'impact du format des données.
    Ce n'est guère surprenant, ce genre de subtilités n'est plus enseigné, mais il faut quand même rappeler que les mêmes instructions appliquées sur des montants binaires, packés ou étendus n'ont pas du tout le même coût.
    Le format étendu, tant prisé par les débutants car facile à lire dans les dumps, coûte 8 fois plus cher que du binaire, et 3 fois plus que du packé !
    Le gain n'est pas toujours marginal, certains traitements qui font essentiellement du calcul, méritent qu'on soigne aussi cet aspect du code.

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

Discussions similaires

  1. [AC-2000] Re-initialisation d'une zone utilisée dans un select
    Par JP64700 dans le forum IHM
    Réponses: 3
    Dernier message: 26/06/2010, 06h11
  2. Réponses: 11
    Dernier message: 18/02/2007, 23h20
  3. Pause dans une application sans utiliser Sleep()
    Par CriPpLe dans le forum MFC
    Réponses: 9
    Dernier message: 25/03/2006, 11h00
  4. Réponses: 18
    Dernier message: 03/03/2006, 18h19
  5. Réponses: 9
    Dernier message: 30/11/2005, 18h18

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