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 :

[COBOL/SQL] sqlcode -408


Sujet :

Cobol

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Points : 25
    Points
    25
    Par défaut [COBOL/SQL] sqlcode -408
    Hello tlm,

    J'ai un SQLCODE -408 lors de la compilation de mon programme.
    Voici la description officielle de l'erreur :
    SQL0408N A value is not compatible with the data type of its assignment target. Target name is "<name>".

    Explanation: The data type of the value to be assigned to the column, parameter, SQL variable, or transition variable by the SQL statement is incompatible with the declared data type of the assignment target. Both must be:
    • Numeric
    • Character
    • Graphic
    • Dates or character
    • Times or character
    • Timestamps or character
    • Datalinks
    • The same distinct types
    • Reference types where the target type of the value is a subtype of the target type of the column.
    • The same user-defined structured types. Or, the static type of the value must be a subtype of the static type (declared type) of the target.
    The statement cannot be processed.

    User Response: Examine the statement and possibly the target table or view to determine the target data type. Ensure the variable, expression, or literal value assigned has the proper data type for the assignment target.
    Je fais un select into d'un décimal dans un integer (en fait l'équivalent d'un integer en cobol : généré par DCLGEN) et l'erreur survient lors de l'INSERT qui suit (alors que la colonne est en integer et que la variable hote aussi, DCLGEN oblige).

    Vous avez une idée parce que là je sais plus quoi faire

    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    J'ai le problème pour 7 des colonnes de ma table, comme par hasard c'est toutes les colonnes en numérique (INTEGER ou DECIMAL).
    j'ai beau remplacer les variables hôte (remplies avec des select) par des constantes au bon format, ça ne marche toujours pas...
    toujours ce sqlcode -408

    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
    EXEC SQL INSERT INTO TKODTABL
    (  ANNEE_EXT                 
    ...
    , PTC
    ...
     , INVS_1   
     , INVS_2 
     , INVS_3   
     , INVS_4
     , INVS_5   
     , INVS_6   
     , DATE_MODIF    
    )                
    VALUES     
     ( :WS-SSAA
    ...
      , :WS-COMPIL-INT
    ...
      , :WS-COMPIL-DEC    
      , :WS-COMPIL-DEC    
      , :WS-COMPIL-DEC    
      , :WS-COMPIL-DEC    
      , :WS-COMPIL-DEC    
      , :WS-COMPIL-DEC    
      , CURRENT TIMESTAMP 
     )                    
     END-EXEC.
    qqu'un a une idée ?

  3. #3
    Scorpi0
    Invité(e)
    Par défaut
    Bonjour,

    Je pense que vous aurez plus de réponse dans le forum COBOL :
    http://www.developpez.net/forums/f15...angages/cobol/.

    Ce n'est pas vraiment un problème SQL, plutôt un problème de type de variable dans la liaison COBOL->SQL, ce qui entraîne qu'aucun développeur SQL ne connaissant pas COBOL ne peut vous aider.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Le plus simple serait de caster vos colonnes dans la requête si vous ne voulez pas changer le type COBOL.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  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
    Je dirais que l'erreur doit être du genre pouillèmique.....méthode de recherche :

    1) vérifier que le DCLGEN utilisé en compil correspond exactement à la table que l'on accède(cas classique : on a pris un DCLGEN de prod, et la table a étée agrandie en développement.....)

    2)vérifier, donnée par donnée, le format des données que l'on rentre. un autre coup classique : une longueur n'est pas bonne. Si le DCLGEN est un PIC 9(5), mais qu'on y met un PIC9(6), alors bobo. Pareil avec les PIC X. Il suffit qu'un seul type ou une seule longueur soit décalée pour tout planter.

    3)avant insertion, faire un DISPLAY, donnée par donnée, de toutes les values. Et vérifier qu'il n'y a rien de suspect.....

    les points 2 à 3 sont longs et chiants, mais ils permettent de trouver plein de problèmes.....
    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.

    A priori les zones d'origine et cibles ne sont pas de même types, entre autres, * Numeric, * Character, *dates, * Timestamps, etc...
    On ne parle pas de longueur ni d'Integer ou decimal apparemment.

    Assure toi que les colonnes numériques recoivent bien des variables numériques et surtout que DATE_MODIF est bien de type *TIMESTAMP

  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 Définition des variables
    Colle ici la définition de chacune de tes variables WS-SSAA, WS-COMPIL-INT et WS-COMPIL-DEC ainsi que ton instruction SELECT INTO.

  8. #8
    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
    Citation Envoyé par Jean_Peuplus Voir le message
    ... Je fais un select into d'un decimal dans un integer (en fait l'équivalent d'un integer en cobol : généré par DCLGEN)
    et l'erreur survient lors de l'INSERT qui suit (alors que la colonne est en integer et que la variable hote aussi, DCLGEN oblige).
    Comme dit Mercure, il faudrait voir la description des variables hôtes. J'y ajouterais aussi la description des colonnes de la table.
    Maintenant, la description des variables hôtes peut être bonne ( surtout si elle est issue d'un DCLGEN et qu'aucun WARNING n'a été signalé à la pré-compilation ) et c'est alors le contenu qui est mauvais ( une absence d'initialisation par exemple ). Un usage judicieux du test IF ... NOT NUMERIC peut aider à diagnostiquer l'incident ...

  9. #9
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    effectivement c'est un problème d'initialisation.

    je débute dans le COBOL SQL et manifestement la compil ne prend pas en compte le fait que j'initialise toutes les variables par des select avant l'insert, il faut ajouter une initialisation statique pour que la compil se fasse sans ce message d'erreur...

    merci beaucoup à tous

  10. #10
    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
    Citation Envoyé par Jean_Peuplus Voir le message
    ... je débute dans le COBOL SQL et manifestement la compil ne prend pas en compte le fait que j'initialise toutes les variables par des select avant l'insert, il faut ajouter une initialisation statique pour que la compil se fasse sans ce message d'erreur...
    on n'initialise pas des variables dans un programme pas un SELECT ...

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

Discussions similaires

  1. [COBOL/SQL] sqlcode -408
    Par Jean_Peuplus dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/09/2008, 12h11
  2. Pbl requete SQL SQLCODE: -338, SQLSTATE: 42972
    Par zope72 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/08/2007, 11h01
  3. Help ! Communication Cobol - SQL Server
    Par bobbyO dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/04/2007, 22h11
  4. [Sql] SQLCODE -1001
    Par frglyon dans le forum Oracle
    Réponses: 3
    Dernier message: 16/02/2006, 07h35
  5. Script SQL avec des EXIT SQL.SQLCODE
    Par fidififouille dans le forum Oracle
    Réponses: 14
    Dernier message: 23/04/2004, 16h45

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