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

DB2 Discussion :

Besoin d'éclairage sur un type de données DB2/MVS


Sujet :

DB2

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Besoin d'éclairage sur un type de données DB2/MVS
    Bonjour,

    J'ai un soucis de compréhension par rapport à l'affectation d'une donnée provenant de la base, de type CHAR(1), vers un champ dans un fichier texte de type S9(004) COMP. par le biais d'un programme Cobol.

    Lorsque j'envoie un espace, j'ai bien sûr un 0C7, jusque la tout est normal. Par contre si j'envoi un caractère alphanumérique 'N', celui-ci est accepté et là je suis surpris.

    Quelqu'un peut il m'en expliquer la raison ?
    J'ai recherché sur le site IBM sans résultat.

    Merci par avance.

    Serge

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    7 559
    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 : 7 559
    Points : 25 309
    Points
    25 309
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Ce n'est pas lié à DB2, mais aux types de données COBOL.

    Le type COMP est du numérique binaire, il accepte toutes les valeurs de low-value (X'0000') à high-value (X'FFFF') en passant par toutes les valeurs intermédiaires.
    Dans votre cas, c'est du S9(4) COMP, donc du binaire sur deux octets.

    L'espace en EBCDIC sur deux octets est codé X'4040', or X'4040' en binaire c'est 16448 en base 10, une valeur numérique tout à fait valide !

    De la même façon, le caractère 'N' EBCDIC correspond à la valeur X'004E' c'est à dire 78 en base 10, une autre valeur numérique tout à fait valide.

    Ce qui est possible, c'est que l'instruction "MOVE SPACE TO VARCOMP" (avec VARCOMP de type COMP) soit refusée par le compilateur (à vérifier).
    Mais dans l'absolu, il n'existe pas de valeur invalide pour une variable de type COMP, toute valeur hexa a un sens.

    Il ne faut pas confondre valeur binaire et caractère EBCDIC éventuellement associé

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

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

    Informations forums :
    Inscription : octobre 2006
    Messages : 937
    Points : 2 021
    Points
    2 021
    Par défaut
    Pour expliquer le 0c7, il faut savoir comment tu "transformes" la zone CHAR en COMP (même si le COMP n'a rien à faire dans un fichier de type TXT) et sur quelle instruction COBOL le 0C7 se produit.

    et +1 pour escartefigue.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    septembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Remerciements
    Bonjour et merci à vous deux.

    Je comprends bien mieux comment cela fonctionne.
    L'instruction utilisée qui renvoie un 0C7 est un 'move'.
    Elle est bien refusée par le compilateur dans le cas d'une valeur égale à 'Space'.

    Serge

Discussions similaires

  1. Replace sur un type de donnée text
    Par zut94 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/11/2008, 21h32
  2. Réponses: 3
    Dernier message: 19/06/2008, 19h39
  3. Requête sur un type de donnée
    Par Coocky10 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/11/2007, 16h32
  4. [SQL 2000] Question sur les types de données
    Par Angath dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/11/2006, 14h05
  5. Besoin d'éclairage sur une applet
    Par cassboul dans le forum Applets
    Réponses: 4
    Dernier message: 01/08/2006, 18h33

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