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 :

Déclaration de variable PIC


Sujet :

Cobol

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut Déclaration de variable PIC
    Bonjour,
    Je doit étudier un programme en COBOL et je ne comprend même pas ce que veulent dire les déclarations de variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    05 FIELD-1 PIC Z(5)9.
    05 FIELD-2 PIC £(5)9.99.
    05 FIELD-3 PIC £**,***.99.
    05 FIELD-4 PIC £££,££9.99DB.
    05 FIELD-5 PIC ZZZZ9+.
    Merci d'avance, car le COBOL n'est pas une partie de plaisir.

    Sumoner

  2. #2
    Membre Expert
    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
    Par défaut
    Bonjour.

    Un exemple pour te donner une idée, si tu as besoin d'autres explications, n'hésite pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    FIELD-POS PIC S9(6)V99    = [00012345+] (2 décimales)
    FIELD-1 PIC Z(5)9        = [   123]  Z : Suppression des 0 à gauche
    FIELD-2 PIC $(5)9.99     = [  $123.45]  $ : insertion du symbole monétaire $
    FIELD-3 PIC $**,***.99   = [$***123.45]  insertion du symbole monétaire et remplacement des 0 à gauche par des * 
    FIELD-4 PIC $$$,$$9.99DB = [   $123.45  ]  DB : insertion de BD si négatif 
    FIELD-5 PIC ZZZZ9+       = [  123+]  + : insertion à droite de + si positif et - si négatif 
    ---------------------------------------
    FIELD-NEG PIC S9(6)V99    = [00012345-] (2 décimales)
    FIELD-1 PIC Z(5)9        = [   123]
    FIELD-2 PIC $(5)9.99     = [  $123.45]
    FIELD-3 PIC $**,***.99   = [$***123.45]
    FIELD-4 PIC $$$,$$9.99DB = [   $123.45DB]
    FIELD-5 PIC ZZZZ9+       = [  123-]

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Meci pour votre réponse,
    mais j'ai besoin de complément d'information.
    Comment sont tronqué les chiffres?
    Si il n'y a pas de Z, il y a des zéros partout?

    Prenons trois variable ayant pour valeur: 87654321, 0.756, -253
    et si on utilise "move to" comment sont formaté les variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FIELD-1 PIC Z(5)9.
    54321		0	253
    FIELD-2 PIC £(5)9.99.
    £76543.21	£0.75	£2.53
    FIELD-3 PIC £**,***.99.
    £76,543.21	£**,***.75	£**,**2.53
    FIELD-4 PIC £££,££9.99DB.
    £76,543.21	£0.75	£2.53DB
    FIELD-5 PIC ZZZZ9+.
    54321+		0+	253-
    Merci d'avance.

  4. #4
    Membre Expert
    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
    Par défaut
    Bonjour.

    Au vu de certaines erreurs (virgule et longueur), tu veux bien nous indiquer la description des variables d'origine qui contiennent les trois valeurs 87654321, 0.756 et -253

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Bonjour,
    V1 PIC 9(8). = [87654321]
    V2 PIC 9ES999. = [0.756]
    V3 PIC S9(3). = [253-]

  6. #6
    Membre Expert
    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
    Par défaut
    Citation Envoyé par Sumoner Voir le message
    Bonjour,
    V1 PIC 9(8). = [87654321]
    V2 PIC 9ES999. = [0.756]
    V3 PIC S9(3). = [253-]
    1er Cas : V1 PIC 9(8). = [87654321]
    Donc si je comprends bien : long 8 et sans virgule (point décimal) :

    - FIELD-1 PIC Z(5)9 : supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0
    ===> = 654321 et non 54321.

    - FIELD-2 PIC £(5)9.99 : insérer un £, supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0, 2 chif. après la virgule
    ===> = £54321.00 et non £76543.21.

    - FIELD-3 PIC £**,***.99 : insérer un £, remplacer les 5 premiers 0 de gauche (non significatifs) par *, insérer une virgule entre le 2è et le 3è chif, 2 chif. après la virgule
    ===> = £54,321.00 et non £76,543.21.

    - FIELD-4 PIC £££,££9.99DB : insérer un £, supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0, insérer une virgule entre le 2è et le 3è chif, 2 chif. après la virgule, insérer DB si négatif
    ===> = £54,321.00 et non £76,543.21.

    - FIELD-5 PIC ZZZZ9+ : supprimer les 4 0 de gauche (non significatifs), garder le 5è 0, insérer à droite un + si positif et un - si négatif
    ===> = 54321+ Là on d'accord.


    2è Cas : V2 PIC 9ES999. = [0.756]
    Je ne connais pas cette notation, à la limite 9E+99 ou 9VE-99, et ce n'est valable que pour les "External Edited Numeric" en virgule flottante. Pour l'usage interne on indique juste comp-1 ou comp-2.
    En se basant sur la valeur donnée : long 4 dont 3 décimales :

    - FIELD-1 PIC Z(5)9 : supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0
    ===> = 0 D'accord.

    - FIELD-2 PIC £(5)9.99 : insérer un £, supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0, 2 chif. après la virgule
    ===> = £0.75 D'accord.

    - FIELD-3 PIC £**,***.99 : insérer un £, remplacer les 5 premiers 0 de gauche (non significatifs) par *, insérer une virgule entre le 2è et le 3è chif, 2 chif. après la virgule
    ===> = £**,***.75 D'accord (£******.75 pour certains compilos).

    - FIELD-4 PIC £££,££9.99DB : insérer un £, supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0, insérer une virgule entre le 2è et le 3è chif, 2 chif. après la virgule, insérer DB si négatif
    ===> = £0.75 et non £76,543.21.

    - FIELD-5 PIC ZZZZ9+ : supprimer les 4 0 de gauche (non significatifs), garder le 5è 0, insérer à droite un + si positif et un - si négatif
    ===> = 0+ D'accord.


    3è Cas : V3 PIC S9(3). = [253-]
    long 3 signé sans virgule :

    - FIELD-1 PIC Z(5)9 : supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0
    ===> = 253 D'accord.

    - FIELD-2 PIC £(5)9.99 : insérer un £, supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0, 2 chif. après la virgule
    ===> = £253.00 et non £2.53.

    - FIELD-3 PIC £**,***.99 : insérer un £, remplacer les 5 premiers 0 de gauche (non significatifs) par *, insérer une virgule entre le 2è et le 3è chif, 2 chif. après la virgule
    ===> = £**,253.00 (£***253.00 pour certains compilos) au lieu de £**,**2.53.

    - FIELD-4 PIC £££,££9.99DB : insérer un £, supprimer les 5 premiers 0 de gauche (non significatifs), garder le 6è 0, insérer une virgule entre le 2è et le 3è chif, 2 chif. après la virgule, insérer DB si négatif
    ===> = £253.00DB et non £2.53DB.

    - FIELD-5 PIC ZZZZ9+ : supprimer les 4 0 de gauche (non significatifs), garder le 5è 0, insérer à droite un + si positif et un - si négatif
    ===> = 253- D'accord.

    Tout ceci si tu n'as pas la clause DECIMAL-POINT is COMMA dans SPECIAL-NAMES.

    La première règle du MOVE de numérique à numérique (édité ou non) est la conversion et l'alignement sur le point décimal, puis viennent les troncatures à droite ou à gauche et la complétion à droite ou à gauche.

    PS : Tu peux nous indiquer, s'il te plaît, dans le titre de la discussion (premier post) le système d'exploitation et le compilateur comme indiquée dans cette discussion : Règle Tag [SystèmeExploitation-VersionCompilateur]

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

Discussions similaires

  1. déclaration de variable public
    Par mathieu57 dans le forum MFC
    Réponses: 5
    Dernier message: 15/09/2005, 17h36
  2. [DB2] Ordre de déclaration des variables
    Par Fatah93 dans le forum DB2
    Réponses: 1
    Dernier message: 04/05/2005, 17h18
  3. déclaration de variables de 16, 32 et 128 bits
    Par samipate dans le forum C++
    Réponses: 10
    Dernier message: 30/12/2004, 22h33
  4. [FLASH MX2004] Déclaration de variables sous flash mx
    Par softyClochette dans le forum Flash
    Réponses: 4
    Dernier message: 29/11/2004, 16h11
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 10h43

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