Tous les articles par Mr COBOL

CODE RETOUR -452

UNABLE TO ACCESS THE FILE REFERENCED BY HOST VARIABLE variable-position. REASON CODE: reason-code

Explication

Une erreur s’est produite pendant que Db2 accédait ou tentait d’accéder au fichier référencé par la variable hôte spécifiée.


variable-position
Indique la position de la variable hôte qui a référencé le fichier, en tant que nième variable hôte, où n est la valeur.

reason-code
Une valeur numérique qui indique la raison de l’erreur :

1

Si la longueur du nom de fichier n’est pas valide, le chemin a un format non valide ou un chemin relatif a été spécifié.

2

Si l’option de fichier n’est pas valide (l’option de fichier doit être 2, 8, 16 ou 32) ou si l’option de fichier spécifiée n’est pas cohérente avec l’opération que Db2 a tenté d’effectuer. Par exemple, l’option de fichier FILE_READ est spécifiée dans une instruction FETCH SQL.

3

Si le fichier est introuvable.

4

Si l’option SQL_FILE_CREATE a été spécifiée pour un fichier portant le même nom qu’un fichier existant.

7

Si un disque plein a été rencontré lors de l’écriture dans le fichier.

9

Si une erreur de support s’est produite lors de l’accès au fichier.

12

Si le fichier HFS que Db2 a tenté d’ouvrir pour une opération de lecture, d’ajout ou de réécriture n’est pas un fichier normal :

  • L’ensemble de données BSAM que Db2 a tenté d’ouvrir pour une opération de lecture, d’ajout ou de réécriture n’est pas un ensemble de données séquentiel physique (PS) ou d’organisation de partition (PO).
  • L’ensemble de données BSAM que Db2 a tenté d’ouvrir pour une opération de lecture, d’ajout ou de réécriture n’a pas le format d’enregistrement VB, V ou U.
  • L’option APPEND a été spécifiée pour un ensemble de données avec une organisation de partition (PO).

13

Si des erreurs se sont produites lorsque Db2 a tenté d’OUVRIR, LIRE, ÉCRIRE ou FERMER un fichier HFS ou un ensemble de données BSAM, il peut y avoir un code d’achèvement système sur la console pour indiquer la raison pour laquelle Db2 n’a pas pu effectuer l’opération demandée.

variable-position est défini sur 0 si la position de la variable hôte ne peut pas être déterminée.


Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Effectuez l’une des actions suivantes en fonction de la valeur du code de raison :

1

Corrigez la longueur du nom de fichier, le nom de fichier et le chemin d’accès au fichier. Si un chemin relatif est utilisé pour le fichier HFS, remplacez-le par un chemin absolu.

2

Corrigez l’option de fichier dans l’application.

3

Assurez-vous que le fichier spécifié existe avant de tenter d’accéder au fichier.

4

Supprimez le fichier s’il n’est plus nécessaire ou spécifiez un nom de fichier qui n’existe pas actuellement.

7

Supprimez les fichiers inutiles pour libérer de l’espace disque ou spécifiez un fichier qui réside sur un autre lecteur ou système de fichiers avec suffisamment d’espace disque. Assurez-vous également qu’aucune limite de taille de fichier utilisateur ou de système d’exploitation n’a été atteinte. Si la page de codes de votre application utilise un schéma de codage multi-octets, il est possible que seule une partie du dernier caractère ait été écrite. Assurez-vous que le fichier ne contient que des caractères entièrement formés.

8

La longueur maximale de la colonne de résultat doit être étendue pour permettre l’expansion qui se produit lorsque la chaîne est convertie.

9

Corrigez toutes les erreurs sur le support où le fichier a été lu.

12

Prenez les mesures appropriées :

  • Corrigez le nom du fichier pour qu’il fasse référence à un fichier normal s’il s’agit d’un fichier HFS.
  • Corrigez le nom du fichier pour qu’il fasse référence à un ensemble de données PS ou PO s’il s’agit d’un ensemble de données BSAM.
  • Corrigez l’opération de fichier pour qu’elle contienne l’action correcte.

13

Corrigez l’erreur en fonction du code d’achèvement du système.

SQLSTATE
428A1

CODE RETOUR -451

THE data-item DEFINITION IN THE CREATE OR ALTER STATEMENT FOR routine-name CONTAINS DATA TYPE type WHICH IS NOT SUPPORTED FOR THE TYPE AND LANGUAGE OF THE ROUTINE

Explication
Une erreur s’est produite dans la data-item de l’instruction CREATE ou ALTER pour routine-name. L’instruction contenait un type de données invalide ou contenait un type distinct basé sur le type de données invalide.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Corrigez la spécification de la routine et relancez l’instruction CREATE.

SQLSTATE
42815

CODE RETOUR -450

USER-DEFINED FUNCTION OR STORED PROCEDURE name, PARAMETER NUMBER parmnum, OVERLAYED STORAGE BEYOND ITS DECLARED LENGTH.

Explication
Au retour d’un nom de fonction spécifique name ou d’un nom de procédure stockée name, Db2 a détecté un stockage de superposition au-delà de la longueur déclarée d’un paramètre. Le numéro de paramètre est spécifié pour une procédure stockée ou une fonction. Ceci n’est pas autorisé.

Action du système
L’exécution de l’instruction SQL est terminée.

Réponse du programmeur
Contactez l’auteur de la fonction ou votre administrateur de base de données. Tant qu’elle n’est pas corrigée, la fonction ne doit pas être utilisée.

SQLSTATE
39501

CODE RETOUR -449

CREATE OR ALTER STATEMENT FOR FUNCTION OR PROCEDURE routine-name CONTAINS AN INVALID FORMAT OF THE EXTERNAL NAME CLAUSE OR IS MISSING THE EXTERNAL NAME CLAUSE

Explication
Une erreur a été trouvée dans la clause EXTERNAL NAME de l’instruction CREATE FUNCTION, CREATE PROCEDURE, ALTER FUNCTION ou ALTER PROCEDURE pour routine-name, ou la clause est nécessaire mais n’a pas été spécifiée.

Pour les routines externes avec LANGUAGE JAVA, le nom doit être spécifié et il doit contenir un nom de external-java-routine-name valide de la forme suivante : jar-name:package-id…class-id.method-id(method- Signature)

  • Aucun espace n’est autorisé dans les guillemets simples.
  • Le method-name se compose de la liste des package-idsclass-id et de method-id et ne doit pas dépasser 254 octets.
  • Zéro ou plusieurs package-ids peuvent être spécifiés, précédant class-id.
  • La method-signature est facultative et correspond à une liste de types de données Java™ séparés par des virgules. Si spécifié, la method-signature ne doit pas dépasser 1024 octets.
  • Si plusieurs chaînes sont spécifiées, la longueur totale de toutes les chaînes concaténées pour le external-java-routine-name ne doit pas être supérieure à 1305.

Pour les routines externes avec un langage autre que JAVA, le nom externe doit être un identifiant court avec des lettres ou des chiffres. Le premier caractère doit être une lettre (il s’agit de la convention de nommage MVS™ pour les modules de chargement). Une cause possible de cette erreur est l’inclusion d’un espace dans le nom.

Si la clause est omise, le nom externe est par défaut function-name. Cependant, pour CREATE FUNCTION ou CREATE PROCEDURE, si le nom de la fonction ou de la procédure comporte plus de huit caractères, la clause EXTERNAL NAME doit être explicitement spécifiée pour spécifier un identificateur court valide comme nom externe.

Action du système
L’instruction ne peut pas être traitée.

Réponse de l’utilisateur
Lorsque LANGUE est JAVA, les causes possibles incluent :

  • Omettre la clause EXTERNAL NAME.
  • Y compris un blanc.
  • Avoir le ‘!’ au début ou à la fin du nom.
  • Spécification d’un nom de routine java externe non valide.

Réponse du programmeur
Corrigez la syntaxe de l’instruction SQL.

SQLSTATE
42878

CODE RETOUR -444

USER PROGRAM name COULD NOT BE FOUND

Explication
Db2 a reçu une instruction SQL CALL pour une procédure stockée ou une instruction SQL contenant un appel d’une fonction définie par l’utilisateur et a trouvé la ligne dans la table de catalogue SYSIBM.SYSROUTINES associée au nom de procédure demandé. Cependant, le module de chargement MVS identifié dans la colonne EXTERNAL_NAME de la ligne SYSIBM.SYSROUTINES est introuvable.

name

Le nom du module de chargement MVS introuvable

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Si la valeur de la colonne EXTERNAL_NAME dans la table SYSIBM.SYSROUTINES est incorrecte, utilisez l’instruction ALTER FUNCTION ou ALTER PROCEDURE pour corriger la valeur.

Si la valeur de la colonne EXTERNAL_NAME est correcte, utilisez l’éditeur de liens MVS pour créer le module de chargement MVS requis dans l’une des bibliothèques de chargement MVS utilisées par votre installation pour les procédures stockées.

Cette erreur peut également se produire si vous appelez une procédure stockée gérée par WLM qui n’est pas autorisée par APF et que les bibliothèques de chargement Db2 ne sont pas dans la concaténation STEPLIB car elles sont chargées à partir de LINKLIST. Dans ce cas, si vous souhaitez que le programme de procédure stockée s’exécute avec autorisation APF, éditez-le avec AC=1 dans une bibliothèque autorisée MVS APF. Si vous ne souhaitez pas que le programme de procédure stockée exécute l’APF autorisé, ajoutez la bibliothèque de chargement Db2 à la concaténation STEPLIB du JCL utilisé pour démarrer l’espace adresse géré par WLM.

SQLSTATE
42724

CODE RETOUR -443

ROUTINE routine-name (SPECIFIC NAME specific-name) HAS RETURNED AN ERROR SQLSTATE WITH DIAGNOSTIC TEXT msg-text

Explication
Un SQLSTATE a été renvoyé par la routine routine-name, avec le texte du message  msg-text.

Action du système
L’exécution de l’instruction SQL est terminée.

Réponse du programmeur
Contactez l’auteur de la routine ou votre administrateur de base de données. Tant que le problème n’est pas résolu, la routine ne doit pas être utilisée.

SQLSTATE
xxxxx (le SQLSTATE qui a été renvoyé par la routine).

CODE RETOUR -441

INVALID USE OF ‘DISTINCT’ OR ‘ALL’ WITH FUNCTION function-name

Explication
Cette erreur peut se produire dans les situations suivantes :

  • Le mot clé DISTINCT ou ALL a été détecté entre parenthèses dans une référence à la fonction function-name et la fonction a été résolue en tant que fonction scalaire. L’utilisation des mots clés DISTINCT ou ALL avec la fonction scalaire spécifiée n’est pas valide.
  • Le mot clé DISTINCT a été détecté entre parenthèses dans une référence à la fonction function-name et la fonction a été résolue en tant que fonction d’agrégat. L’utilisation des mots clés DISTINCT avec la fonction d’agrégation spécifiée n’est pas valide.
  • La fonction devait être une fonction d’agrégat prenant en charge le mot clé ALL ou DISTINCT, mais la fonction qui a été résolue n’est pas une fonction d’agrégat.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Prenez les mesures appropriées :

  • Si une fonction scalaire est utilisée, supprimez le mot-clé DISTINCT ou ALL.
  • Si la fonction est une fonction d’agrégat qui ne prend pas en charge les mots clés DISTINCT ou ALL, supprimez le mot clé.
  • Sinon, si une fonction d’agrégat est utilisée, il y a alors un problème avec la résolution de la fonction. Vérifiez votre chemin SQL pour voir si la fonction est dans l’un des schémas, et vérifiez également le catalogue SYSIBM.SYSROUTINES pour l’orthographe du nom de la fonction et le nombre et les types de paramètres.

SQLSTATE
42601

CODE RETOUR -440

NO AUTHORIZED routine-type BY THE NAME routine-name HAVING COMPATIBLE ARGUMENTS WAS FOUND

Explication
Une tentative d’appel d’une routine a été effectuée, mais Db2 n’a pas pu résoudre l’appel d’une routine, y compris la liste d’arguments, en une définition de routine spécifique.

routine-type
Le type de routine, comme FUNCTION ou PROCEDURE.
routine-name or schema-name.routine-name
Le nom de la routine. Si l’instruction d’origine fait référence à un nom qualifié, le nom de la routine dans le texte du message est qualifié par le nom du schéma.

Les causes possibles de cette erreur incluent :

  • Le nom de la routine a été spécifié de manière incorrecte ou n’existe pas dans la base de données.
  • Une référence qualifiée a été utilisée et le qualificateur de schéma a été spécifié de manière incorrecte.
  • Le chemin SQL de l’utilisateur ne contient pas le schéma auquel appartient la fonction et une référence non qualifiée a été utilisée.
  • Le mauvais nombre d’arguments a été inclus.
  • Le bon nombre d’arguments a été inclus dans la référence de routine, mais le type de données d’un ou plusieurs des arguments est incorrect.
  • L’invocateur de la routine n’est pas autorisé à exécuter la routine.
  • CURRENT QUERY ACCELERATION a été défini sur NONE pendant l’exécution d’une expression intermédiaire uniquement.
  • Une application ou un objet SQL a tenté d’utiliser une fonctionnalité qui n’est pas prise en charge par le niveau de compatibilité d’application actuel.
    • Avant l’activation du niveau de fonction 500 ou supérieur, les environnements Db2 doivent utiliser les niveaux de compatibilité des applications des versions précédentes. Après l’activation du niveau de fonction 500 ou supérieur, le niveau de compatibilité des applications peut être équivalent au niveau de fonction actuel, un niveau de fonction inférieur dans la version actuelle ou un niveau de fonction d’une version précédente.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Utilisez le nom de routine identifié dans le message pour trouver l’appel et vérifiez que l’appel peut être résolu en la routine prévue, en fonction des processus de résolution de fonction et de procédure.

Pour vous assurer que la routine prévue est appelée, spécifiez un nom de routine qualifié dans la mesure du possible.
Si vous exécutez une expression intermédiaire uniquement, définissez CURRENT QUERY ACCELERATION sur ELIGIBLE, ENABLE ou ALL.

Si l’erreur peut être due à une fonctionnalité non prise en charge, vérifiez le niveau de compatibilité d’application de votre application ou objet SQL et effectuez l’une des actions suivantes :

  • Reliez l’application ou modifiez l’objet SQL pour utiliser un niveau de compatibilité d’application qui prend en charge la fonctionnalité.
  • Supprimez l’utilisation de la fonctionnalité non prise en charge de l’application ou de l’objet SQL.

SQLSTATE
42884

CODE RETOUR -438

APPLICATION RAISED ERROR WITH DIAGNOSTIC TEXT: text

Explication
Cette erreur s’est produite en raison de la fonction RAISE_ERROR, d’une instruction RESIGNAL, d’une instruction SIGNAL SQLSTATE ou d’une condition non gérée lors du traitement du déclencheur ou de la routine terminé.

text

Texte de diagnostic fourni par l’invocation de la fonction RAISE_ERROR ou de l’instruction SIGNAL SQLSTATE.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Utilisez le texte de diagnostic fourni par l’application, le cas échéant, pour déterminer la cause de l’erreur.

SQLSTATE
Défini par l’application

CODE RETOUR -435

AN INVALID SQLSTATE sqlstate IS SPECIFIED IN A RAISE_ERROR FUNCTION, RESIGNAL STATEMENT, OR SIGNAL STATEMENT

Explication
Le SQLSTATE spécifié dans la fonction RAISE_ERROR, l’instruction RESIGNAL ou l’instruction SIGNAL d’un déclencheur ou d’une routine n’est pas conforme aux règles d’un SQLSTATE valide.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Modifiez le SQLSTATE spécifié dans la fonction RAISE_ERROR, l’instruction RESIGNAL ou l’instruction SIGNAL afin qu’il soit conforme aux règles de l’instruction.

Pour la fonction RAISE_ERROR, le SQLSTATE doit être une chaîne de caractères contenant exactement cinq (5) caractères. Il doit être de type CHAR défini avec une longueur de cinq (5), ou d’un type VARCHAR défini avec une longueur de cinq (5) ou plus. La valeur SQLSTATE doit être conforme aux règles suivantes :

  • Chaque caractère doit appartenir à l’ensemble des chiffres (‘0’ à ‘9’) ou des lettres majuscules non accentuées (‘A’ à ‘Z’).
  • La classe SQLSTATE (les deux premiers caractères) ne peut pas être ’00’, ’01’ ou ’02’ car ces caractères n’indiquent pas les classes d’erreur.
  • Si la classe SQLSTATE (les deux premiers caractères) commence par le caractère ‘0’ à ‘6’ ou ‘A’ à ‘H’, alors la sous-classe (les trois derniers caractères) doit commencer par une lettre dans la plage ‘I’ à ‘Z’.
  • Si la classe SQLSTATE (les deux premiers caractères) commence par le caractère ‘7’, ‘8’, ‘9’ ou ‘I’ à ‘Z’, alors la sous-classe (les trois derniers caractères) doit provenir de l’ensemble de caractères ‘0’ à ‘9’ ou ‘A’ à ‘Z’.

Pour les instructions RESIGNAL et SIGNAL, la valeur SQLSTATE doit être exactement de cinq (5) caractères qui suivent les règles suivantes :
Chaque caractère doit faire partie de l’ensemble de chiffres « 0 » à « 9 » ou de la lettre majuscule non accentuée « A » à « Z ».
La classe SQLSTATE (les deux premiers caractères) ne peut pas être ’00’ car elle représente un achèvement réussi.

SQLSTATE
428B3