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 :

[AS/400]Convesion de donnée de type comp-3


Sujet :

Cobol

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 52
    Points : 34
    Points
    34
    Par défaut [AS/400]Convesion de donnée de type comp-3
    Bonjour,
    Je suis trés novice en AS/400 et cobol.
    j'ai un fichier sur as/400 contenant des données cobol de type comp-3.
    je voudrais savoir comment faire pour transformer ces données en des données numériques signées.

    Merci d'avance

  2. #2
    Expert confirmé
    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
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Il suffit de faire un Move de la zone comp-3 vers la zone numérique étendue. Ce n'est pas propre ni à Cobol ni à l'AS/400.

  3. #3
    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
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .....
    01 VALEUR-ANCIENNE PIC S9(7) COMP-3.
    01 VALEUR-NOUVELLE PIC S9(7).
    .....
    MOVE VALEUR-ANCIENNE TO VALEUR-NOUVELLE
    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.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Citation Envoyé par Kirou
    j'ai un fichier sur as/400 contenant des données cobol de type comp-3. je voudrais savoir comment faire pour transformer ces données en des données numériques signées.
    Les zones au format COMP-3 (COMPUTATIONAL-3) sont déjà numériques. Il s'agit de données au format "décimal condensé", encore appelé "packé", qui contient 2 chiffres par octet avec le demi-octet le plus à droite réservé au signe (sur AS/400 : "F" --> signe plus ou valeur absolue, "D" --> signe moins).
    Un MOVE n'est utile que si on veut convertir ces zones du format décimal condensé au format décimal étendu, c'est à dire un chiffre par octet. Même remarque à propos du signe pour ce format.
    La présence du signe est conditionnée par la PICTURE qui est déclarée avec ou sans le "S" pour le signe. Les valeurs des zones dont la picture est déclarée sans le "S" sont en valeur absolue (non signées --> signe "F").

    Exemple :
    Valeur "123456" dans une zone signée de 7 chiffres au format packé (PIC S9(7) COMP-3 --> "01.23.45.6F"). Cette zone n'occupe en fait que 4 octets en mémoire et les valeurs limites pouvant y être contenues varient de -9999999 à +9999999 (7 chiffres), soit de 99.99.99.9D à 99.99.99.9F.

    Valeur "123456" dans une zone signée de 7 chiffres au format décimal étendu (PIC S9(7) --> "F0.F1.F2.F3.F4.F5.F6"). Cette zone occupe tous les 7 octets en mémoire et les valeurs limites pouvant y être contenues sont les mêmes que pour le format packé. Elles varient donc de -9999999 à +9999999 (7 chiffres), soit de F9.F9.F9.F9.F9.F9.D9 à F9.F9.F9.F9.F9.F9.F9.

  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
    petite précision à ce qui est écrit au-dessus : si "D"(débit) veut dire moins, "C"(crédit) veut dire plus, et "F" non signé(donc plus aussi). Cette information inutile vous était offerte par le pichouilleur de service.....
    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
    Expert confirmé
    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
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Un petit complément à ce qu'ont dit Mercure et el_slapper qui ont tous les deux raison.

    En interne l'AS/400 utilise le "F" et le "D" et reconnait en externe le "C" et le "F" pour les positifs et le "D" pour les négatifs et ce aussi bien pour l'Usage Display que le Comp-3. Ce n'est pas tout d'ailleurs.
    A méditer :
    Citation Envoyé par Doc IBM
    Sign Representation and Processing
    Sign representation affects the processing and interaction of your numeric data.
    Given X’sd’, where s is the sign representation and d represents the digit, the valid sign representations for external decimal (USAGE DISPLAY) without the SIGN IS SEPARATE clause) are :
    Positive: A, C, E, and F.
    Negative: B and D.

    Signs generated internally are F for positive and unsigned, and D for negative.
    Given X’ds’, where d represents the digit and s is the sign representation, the valid sign representations for internal decimal (USAGE PACKED-DECIMAL) ILE COBOL data are:
    Positive: A, C, E, and F.
    Negative: B and D.

    Signs generated internally are F for positive and unsigned, and D for negative.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Une autre petite précision sur la petite précision apportée ci-dessus

    C'est sur les mainframes qu'on trouve le code signe "C" pour "plus", pas sur AS/400-iSeries-System i. Autrement dit, ce dernier OS ne connaît pas "C" et met "F" à la place, comme pour la valeur absolue (non signé). Toutefois, et c'est là que réside la petite précision supplémentaire, cet OS "sait" lire les zones qui sont signées "C", mais soyez ultra prudents et conscients que si elles sont destinées à être déclarées en tant que zones clé dans une table ou fichier, le signe "C" peut vous jouer de (vilains) tours. Aussi, de préférence, convertir le "C" en "F" avant d'alimenter les clés.

  8. #8
    Expert confirmé
    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
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par Mercure Voir le message
    Une autre petite précision sur la petite précision apportée ci-dessus

    C'est sur les mainframes qu'on trouve le code signe "C" pour "plus", pas sur AS/400-iSeries-System i. Autrement dit, ce dernier OS ne connaît pas "C" et met "F" à la place, comme pour la valeur absolue (non signé). Toutefois, et c'est là que réside la petite précision supplémentaire, cet OS "sait" lire les zones qui sont signées "C", mais soyez ultra prudents et conscients que si elles sont destinées à être déclarées en tant que zones clé dans une table ou fichier, le signe "C" peut vous jouer de (vilains) tours. Aussi, de préférence, convertir le "C" en "F" avant d'alimenter les clés.
    4è Niveau de précision :

    Tu as raison, sauf qu'à partir du moment où la donnée réside sur l'AS/400, il n'y aura que le "F" et le "D" (Représentation interne). Les autres sont pour la repésentation externe.
    Given X’sd’, where s is the sign representation and d represents the digit, the valid sign representations for external decimal (USAGE DISPLAY) without the SIGN IS SEPARATE clause) are :
    Positive: A, C, E, and F.
    Negative: B and D.

  9. #9
    Membre confirmé Avatar de Homer-ac
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 449
    Points : 586
    Points
    586
    Par défaut
    Juste pour noter que si la règle de gestion des signes est dépendante de la plateforme, elle l'est aussi des options de compilations installées avec le ompilateur COBOL, justement pout tenter d'assurer autant que possible la compatibilité avec des sources externes. C'est le cas sur z/OS avec l'option de compilation NUMPROC PFD/NOPFD ou MIG, spécifiquement pour la gestion des signes des données en COMP-3. Je suis à peu près certain que Hédhili Jaïdane pourra noter une option de compilation approchante sur AS/400.

  10. #10
    Expert confirmé
    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
    Points : 4 155
    Points
    4 155
    Par défaut
    Effectivement il y a une option de compilation ou directive dans process :
    CHGPOSSGN : permet de mettre un "C" à la place du "F" pour l'enregistrement des nombres positifs.
    Par défaut c'est NOCHGPOSSGN pour mettre un "F" (option par défaut du système d'exploitation).

    Cette option est apparue dans le Ile Cobol avec la V3R1. Elle s'applique aux MOVE, ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE, INITIALIZE et VALUE.

    Personnellement, j'essaie toujours et autant que faire se peut d'utiliser les options par défaut sauf dans des cas de traitements exceptionnels.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 176
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par Kirou Voir le message
    Je suis trés novice en AS/400 et cobol.
    Bande de bourrins !

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

Discussions similaires

  1. API pour Conversion de données de type comp-3(Cobol)
    Par Kirou dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 01/05/2012, 19h35
  2. [Access] Enregistrer des données de type Texte RTF
    Par portu dans le forum Bases de données
    Réponses: 22
    Dernier message: 27/10/2005, 22h54
  3. Réponses: 5
    Dernier message: 13/07/2005, 10h03
  4. Type pour données de type email avec @
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/01/2004, 14h50
  5. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

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