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

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut Numérique condensé COBOL

    Bonjour,
    Je uis très débutant en cobol et j'ia besoin d'aide.
    J'ai un programme cobol qui sert a sortir un fichier Excel avec des données proviennent de différents tables de base de données.
    Le but qui je doit alimenter une colonne avec un valeur d'une rubrique vient d'une table cette rubrique est sous la format Numérique condensé de longueur 11 dont 2 décimale(s) en gros elle est présenter sous cette format :
    "MONTAN NOT NULL NUMBER(11,2)"

    Dans mon programme cobol j'ai crée une première variable comme suit :
    05 H-ZYSR-MONTAN PIC S9(11)V9(2) PACKED-DECIMAL.

    Une deuxième variable pour remplir la colonne comme suit :
    * Taux 22
    05 W-Z22 PIC -ZZZZZZZZZZZ,99.
    05 FILLER PIC X(001) VALUE ';'.


    Le but que je doit faire un move de ma rubrique MONTAN dans la variable H-ZYSR-MONTAN puis move de H-ZYSR-MONTAN dans W-Z22 voilà le code :

    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
    17
    ALIM-WZ22 SECTION.
                     MOVE Z-ZYSR-NOMBRE TO IZYSR.
                     MOVE ZERO TO H-ZYSR-MONTAN.
    
                  IF Z-ZYSR-NOMBRE > ZERO
                     PERFORM VARYING IZYSR FROM Z-ZYSR-NOMBRE BY -1 UNTIL
                                     IZYSR = ZERO
                        IF Z-ZYSR-CODRUB(IZYSR) = 'THF'
                           MOVE Z-ZYSR-MONTAN(IZYSR) TO
                                H-ZYSR-MONTAN
    
                           MOVE ZERO TO IZYSR
                        END-IF
                     END-PERFORM
                       MOVE H-ZYSR-MONTAN TO W-Z22
                       END-IF.

    Ma question comment je peux affiché les bons valeurs de la rubrique MONTAN car ma décalaration est fausse apparement ca me donne pas les bonnes valeurs
    Par exemple :

    J'ai un montant = 1234,55 la valeur de sortie Z22 = 0.12 alors que je voulais que ca soit 1234,55 le meme que montan sans avoir la signe plus mais la signe négatif doit s'afficher.

    Besoin d'aide.

    Déja j'ai essayé de cette façon :
    05 H-ZYSR-MONTAN PIC +++++9.99


    * Taux
    05 W-Z22 PIC -ZZZZ9.99 VALUE ZEROS.
    05 FILLER PIC X(001) VALUE ';'.


    Resultat :

    Z22
    0.45
    - 88.57
    0.00
    0.00
    0.00
    0.00
    0.00
    0.00
    0.00
    0.00
    10.57
    0.00
    10.65
    10.57

  2. #2
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 118
    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 : 4 118
    Points : 9 691
    Points
    9 691
    Billets dans le blog
    1

    Par défaut

    Bonjour,

    Si le séparateur utilisé est la virgule, alors il faut déclarer dans le paragraphe "SPECIAL-NAMES" de l'environment division la clause "DECIMAL-POINT IS COMMA "

    PS : je vois que vous utilisez des sections dans la PROCEDURE DIVISION, ça n'a plus d'intérêt de nos jours mais ça n'est pas génant, sous réserve de bien se souvenir que si on appelle par "PERFORM" l'exécution d'une section, ce sont TOUS les paragraphes de cette section qui seront exécutés

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Bonjour ,
    Merci d'avoir répondu mais je n'ai pas compris, moi mon problème est que je n'arrive pas à trouver la bonne déclaration.
    Par exemple :
    Ma donnée saisie dans la table principale est comme suit :
    2223,55
    -10,98
    -1,08
    82,61
    Je fais un move dans une autre variable j’essaye de trois manières différentes mais ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     * Taux 20
                05  W-Z20                  PIC S9(11)V9(2) VALUE SPACES.
                05  FILLER                 PIC X(001) VALUE ';'.
           Taux 21
               05  W-Z21                  PIC S9(11)V9(2) VALUE SPACES.
               05  FILLER                 PIC X(001) VALUE ';'.
          * Taux 22
                05  W-Z22                  PIC -ZZZZZZZ9,99 VALUE SPACES.
                05  FILLER                 PIC X(001) VALUE ';'.

    sachant que ma valeur de base est de la forme numérique condensée : MONTAN : NOT NULL NUMBER(11,2)

  4. #4
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 118
    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 : 4 118
    Points : 9 691
    Points
    9 691
    Billets dans le blog
    1

    Par défaut

    Avez vous vérifié la présence de la clause "DECIMAL-POINT IS COMMA" comme je vous le demandai dans ma réponse précédente ?
    Il faut commencer par là.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Bonjour
    Non ca existe pas DECIMAL-POINT IS COMMA

  6. #6
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 118
    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 : 4 118
    Points : 9 691
    Points
    9 691
    Billets dans le blog
    1

    Par défaut

    Et bien ajoutez cette clause...

    Elle se code sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ENVIRONMENT DIVISION.
    CONFIGURATION SECTION.
    SPECIAL-NAMES.
        DECIMAL-POINT IS COMMA.

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Par contre j'ai des autres colonnes qui sont alimenté avec des valeurs en ","

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Comment je l'ajoute c'est nécessaire , car le programme est déja long

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Il faut que j'ajoute :
    DECIMAL-POINT IS COMMA.

    dans la zone ou il y a SPECIAL-NAMES c'est bien ça , voila début de mon programme actuel :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    *            *                                      *            *
          ******************************************************************
           ENVIRONMENT DIVISION.
           CONFIGURATION SECTION.
           SPECIAL-NAMES.
           INPUT-OUTPUT SECTION.
           FILE-CONTROL.
                  SELECT FICSOR ASSIGN FICSOR FILE STATUS FISTAT-FICSOR.
           DATA DIVISION.
           FILE SECTION.
           FD  FICSOR
               RECORDING F
               BLOCK 0
               RECORD 2100
               LABEL RECORDS STANDARD.
           01  WFICSOR.
               05  FILLER                   PIC X(2515).
          *
          ******************************************************************
           WORKING-STORAGE  SECTION.
          ******************************************************************
          *    * Modif - 18002020
             01  U-Z16.
               05  U-ZYWB-CACADR           PIC X(003) VALUE SPACES.
               05  U-ZYWB-CABONU           PIC X(002) VALUE SPACES.
    
          * Définition de SQLCA
               EXEC SQL
                    INCLUDE SQLCA
               END-EXEC.
          * Déclaration des Host Variables pour SQL
               EXEC SQL
                    BEGIN DECLARE SECTION
               END-EXEC.
           01  H-WORKING.
               05  H-SQLCODE               PIC S9(003) COMP-3.
               05  H-ZY00-NUDOSS           PIC S9(009) COMP.
               05  H-ZY00-SOCCLE           PIC X(003) VALUE SPACES.
               05  H-ZY00-MATCLE           PIC X(012) VALUE SPACES.

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    C'est fait et après comment je dois faire stp,

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    
    
      ENVIRONMENT DIVISION.
           CONFIGURATION SECTION.
           SPECIAL-NAMES.
            DECIMAL-POINT IS COMMA.
           INPUT-OUTPUT SECTION.
           FILE-CONTROL.
                  SELECT FICSOR ASSIGN FICSOR FILE STATUS FISTAT-FICSOR.
           DATA DIVISION.
           FILE SECTION.
           FD  FICSOR
               RECORDING F
               BLOCK 0
               RECORD 2100
               LABEL RECORDS STANDARD.
           01  WFICSOR.
               05  FILLER                   PIC X(2515).
          *
          ******************************************************************
           WORKING-STORAGE  SECTION.
          ******************************************************************
          *    * Modif - 18002020
             01  U-Z16.
               05  U-ZYWB-CACADR           PIC X(003) VALUE SPACES.
               05  U-ZYWB-CABONU           PIC X(002) VALUE SPACES.

  11. #11
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 118
    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 : 4 118
    Points : 9 691
    Points
    9 691
    Billets dans le blog
    1

    Par défaut

    recompiler et relancer

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    ça change rien voilà la résultat que je trouve :

    Z18
    €
    " "
    0
    0
    @
    
    0
    P
    @
    0
    0
    
    P
    @
    p
    
    @
    €
    0
    @


    rien que s'affiche

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        05  H-ZYSR-MONTAN           PIC S9(11)V9(2) COMP-3.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    * Taux horaire formation
                05  W-Z18                  PIC S9(11)V9(2) COMP-3.
                05  FILLER                 PIC X(001) VALUE ';'.
    comment je doit déclaré mes variables , voila le programme après déclaration :

    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
    17
     ALIM-WZ18 SECTION.
                     MOVE Z-ZYSR-NOMBRE TO IZYSR.
                     MOVE ZERO TO H-ZYSR-MONTAN.
    
                  IF Z-ZYSR-NOMBRE > ZERO
                     PERFORM VARYING IZYSR FROM Z-ZYSR-NOMBRE BY -1 UNTIL
                                     IZYSR = ZERO
                        IF Z-ZYSR-CODRUB(IZYSR) = 'THF'
                           MOVE Z-ZYSR-MONTAN(IZYSR) TO
                                H-ZYSR-MONTAN
    
                           MOVE ZERO TO IZYSR
                        END-IF
                     END-PERFORM
                       MOVE H-ZYSR-MONTAN TO W-Z18
                       END-IF.
    Mes données de base sont les données de cette rubrique Z-ZYSR-MONTAN(IZYSR) qui sont de la format numérique condensé :
    MONTAN NOT NULL NUMBER(11,2)


    C'est quoi la bonne type que je dois donné a mes variables pour avoir la bonne résultat ?

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2012
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 148
    Points : 55
    Points
    55

    Par défaut

    Vous avez une idée comment faire?

    doc qui explique mieux
    Fichiers attachés Fichiers attachés

  15. #15
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 118
    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 : 4 118
    Points : 9 691
    Points
    9 691
    Billets dans le blog
    1

    Par défaut

    Pour obtenir le symbole virgule "," dans le résultat en sortie, il ne faut pas utiliser un type de données numérique mais une picture d'édition.
    Les types numériques n'ont qu'une virgule Virtuelle représentée par le V dans la clause PICTURE.

    Voici ce que vous devez faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    01  FILLER.
        02 MA-VARIABLE-PACKEE   PIC S9(11)V99   VALUE +0.
    
    01  WS-FICHIER-CSV.
        02 MA-VARIABLE-EDITION  PIC -9(11),99.
        02 FILLER               PIC X   VALUE ';'.
    [...]
    MOVE   MA-COLONNE-BDD      TO  MA-VARIABLE-PACKEE
    MOVE   MA-VARIABLE-PACKEE  TO  MA-VARIABLE-EDITION
    WRITE  MON-FICHIER-CSV  FROM  WS-FICHIER-CSV
    .

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

Discussions similaires

  1. Conversion numérique signé de cobol en java
    Par jmmaugis dans le forum Cobol
    Réponses: 8
    Dernier message: 02/05/2013, 23h14
  2. [z/OS] Correspondance formats numériques COBOL / PL/1
    Par Pico----- dans le forum Cobol
    Réponses: 2
    Dernier message: 23/08/2011, 12h56
  3. Réponses: 33
    Dernier message: 01/07/2011, 11h32
  4. [Delphi 6] EditBox -> valeurs numériques ?
    Par JBrek dans le forum Composants VCL
    Réponses: 9
    Dernier message: 02/12/2002, 14h08

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