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 :

variable binary en cobol


Sujet :

Cobol

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 48
    Points : 35
    Points
    35
    Par défaut variable binary en cobol
    Bonjour,

    J'ai une variable en entré VAR-IN de PIC 9(16)V9(2) et un variable en sortie : VAR-OUT PIC S9(16)V9(2) BINARY.

    exemple de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    01 VAR-IN de PIC 9(16)V9(2).
    01 VAR-OUT  PIC S9(16)V9(2) BINARY.
    
    MOVE 100000000000002070 TO  VAR-IN.
    MOVE  VAR-IN                    TO VAR-OUT
    quand j'affiche display :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VAR-IN    :  000000000000207000
    VAR-OUT :  0000000000000207000
    mais pourquoi j'ai 000000000000207000 et non 10000000000000207000
    car le 1er chiffre est disparu.
    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 060
    Points
    32 060
    Par défaut
    parceque ton 1 est hors format.

    Ton format, c'est 16 chiffres avant la virgule, et 2 chiffres après.

    Ton '1', il est 18 chiffres avant la virgule. sur des S9(18), tu l'aurais gardé. Là, tu perds les 2 premiers caractères.
    Tu as en mémoire +0000000000207000,00 après ton MOVE.

    d'ailleurs, mettre des virgules sur du Binary, et surtout un non-multiple de 4, c'est pas franchement un usage correct du binary.
    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
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Merci pour l'information.

    alors c'est impossible de garder le 1er chifre?
    Merci

  4. #4
    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 060
    Points
    32 060
    Par défaut
    Avec ce format de données, c'est impossible. Binary ou pas.

    D'une manière générale, les numériques en COBOL sont limités à 18 chiffres. Si tu veux 2 chiffres après la virgule, alors tu seras limité à 16 chiffres devant.
    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.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Alors même si je fait par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    01 VAR-IN de PIC 9(16)V9(2).
    01 VAR-OUT  PIC S9(16)V9(2) BINARY.
    
    MOVE 1000000002070 TO  VAR-IN.
    MOVE  VAR-IN                    TO VAR-OUT
    alors je veux avoire 0100000000207000 et no 0000207000000000000

    ou c'est impossible d'avoire 0100000000207000

  6. #6
    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 060
    Points
    32 060
    Par défaut
    Ton jeu-test n'est pas excellent. Essaye donc un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MOVE 1234567812345678.99 TO  VAR-IN
    DISPLAY VAR-IN
    MOVE  VAR-IN                    TO VAR-OUT
    DISPLAY VAR-OUT
    .
    en remplaçant 1234567812345678.99 par 1234567812345678,99 si DECIMAL-POINT IS COMMA


    Et comme ça, on saura précisément ou sont les décalages, si il y en a. Avec tous ces zéros, on ne voit rien. Parceque là, je ne vois pas ou tu veux en venir, ni quel est exactement ton problème. Et essaye avec des non-binary en cible, juste pour voir la différence.
    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.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    ALors moi j'ai besoin de saisir en entré : 123456781234567899 et je veux en sortie 1234567812345678,99

    mais en entré j'ai :

    VAR-IN :123456781234567899

    Avec un move direct j'ai : 610106595025276171O

    quand je passe avec une variable intermidiére :

    WS-ZONE PIC 9(16)V9(2).

    j'ai en sortie : VAR-OUT : 0345678123456789900

    ce code me donne un message d'erreur de compilation car VAR-IN et de PIC X(18).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MOVE 1234567812345678.99 TO  VAR-IN
    DISPLAY VAR-IN
    MOVE  VAR-IN                    TO VAR-OUT
    DISPLAY VAR-OUT
    .
    mais le probléme j'ai en entré PIX X(18) et en sortie S9(16)V9(2) BINARY

    comment jouer avec les variable working pour avoir le bonne résultat

    Merci Bcp

  8. #8
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonjour

    Avec MOVE, tu n'y arrivera pas (à vérifier, pas fait de cobol depuis..... longtemps)

    Pourquoi ne pas faire une division par 100?

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Quel OS ?

    Quel COBOL ?

    " ed_slapper " a raison. Pourquoi passer par du BINARY ?

    A mon sens, BINARY sert plutôt à stocker des valeurs entières signées. L'équivalent d'INTEGER dans d'autres langages.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Meerci pour les information.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/06/2012, 23h46
  2. Cobol/SQL - Utilisation host variable
    Par dude_dev dans le forum Cobol
    Réponses: 7
    Dernier message: 04/05/2011, 10h14
  3. Cobol et variables booléennes
    Par TSalm dans le forum Cobol
    Réponses: 4
    Dernier message: 02/06/2009, 10h40
  4. Paramètres variables en Cobol
    Par xfanx dans le forum Cobol
    Réponses: 2
    Dernier message: 29/07/2008, 12h59
  5. Comparaison sur variable de type Binary (32)
    Par krapno dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/10/2005, 12h48

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