Tous les articles par Mr COBOL

CODE RETOUR -905

UNSUCCESSFUL EXECUTION DUE TO RESOURCE LIMIT BEING EXCEEDED, RESOURCE NAME nom-ressource LIMIT ” limite-1 CPU SECONDS (limite-2 SERVICE UNITS) DERIVED FROM source-limite

Explication :

L’exécution d’un ordre SQL est interrompue par un dépassement de limite de ressource.

Le nom de la ressource pour laquelle la limite est dépassée est ‘nom-ressource’. C’est aussi le nom de la colonne de la table de spécification des limites des ressources. La limite dépassée en secondes CPU est ‘limite-1′ et en unités de service ‘limite-2’. Le ‘nom- ressource’ peut être ASUTIME et correspond dans ce cas au nombre de secondes CPU permis pour chaque ordre SQL. Le nombre maximum de secondes CPU est ‘limite-1′. Le nombre maximum en unités de service est ‘limite-2’.

La source de dérivation de la limite est ‘source-limite’ et correspond au nom de la table de spécification des limites des ressources, ou à un paramètre système. Si la source est un paramètre système, la table de spécification ne contient pas d’entrée applicable ou une erreur s’est produite pendant l’accès à cette table. Dans les deux cas. la limite est obtenue à partir d’un paramètre d’installation.

Action système:

L’exécution de l’ordre est interrompue. Un enregistrement détaillant l’anomalie est généré. Si un curseur est assodé à l’instruction abandonnée, sa position reste inchangée et une commande CLOSE ou PREPARE peut être émise. Toute autre opération sur le curseur est non exécutable et provoque le code -905. S’il n’y a pas de curseur, l’ordre est annulé (ROLLBACK).

Réponse programmeur :

Déterminer pourquoi cet ordre SQL est si long, et prendre l’action appropriée. Considérer une simplification de l’ordre, une restructuration des tables et des index, ou contacter le groupe d’installation responsable de la maintenance des tables de spécification des limites des ressources.

Un programme d’application recevant ce code peut exécuter d’autres ordres SQL.

CODE RETOUR -904

UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON code-raison, TYPE OF RESOURCE type-ressource, AND RESOURCE NAME nom-ressource

Explication :

L’ordre SQL ne peut être exécuté du fait que la ressource ‘nom-ressource’ de type ‘type- ressource’ est indisponible pour la raison indiquée par ‘code-raison’.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Vérifier l’identité de la ressource indisponible. La raison d’indisponibilité figure dans la documentation ” DB2 Codes “.

CODE RETOUR -818

THE PRECOMPILER-GENERATED TIMESTAMP horodatage-1 IN THE LOAD MODULE IS DIFFERENT FROM THE BIND TIMESTAMP hondatage-2 BUILT FROM THE DBRM

Explication :

Le précompilateur SQL place un ‘horodatage-2’ dans le DBRM et un ‘horodatage-1’

dans la liste des paramètres de chaque ordre SQL du programme. Au moment du BIND. DB2 enregistre l’horodatage du DBRM pour l’utiliser à l’exécution. A l’exécution, ‘horodatage-1’ de l’ordre SQL est comparé à ‘horodatage-2’ dérivé du DBRM lors du BIND. Si les deux horodatages sont différents, le DBRM et le programme ne sont pas issus de la même précompilation.

Causes possibles de l’erreur :

  • Précompilation, compilation et linkedit, sans BIND de l’application,
  • Précompilation et BIND, sans compilation et linkedit,
  • BIND de l’application avec un DBRM résultant d’une précompilation différente de celle utilisée pour la préparation de l’application.

Les horodatages sont internes à DB2 et ne possèdent pas d’interprétation externe.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Exécuter un BIND de l’application en utilisant le DBRM du programme correspondant au module objet.

CODE RETOUR -817

THE INSERT, UPDATE, DELETE, DDL, OR AUTHORIZATION STATEMENT CANNOT BE EXECUTED BECAUSE THE IMS/VS TRANSACTION IS INQUIRY ONLY

Explication :

Une application définie comme transaction d’interrogation uniquement, tente d’exécuter un ordre INSERT, UPDATE, DELETE, ou un ordre du LDD (CREATE, ALTER ou DROP), ou un ordre du LCD (GRANT ou REVOKE). Les ordres de ce type entraînent des mises à jour des données utilisateur ou du catalogue DB2 et par conséquent ne peuvent être exécutés sous des transactions d’interrogation.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Consulter le programmeur système IMS/VS pour qu’il change le statut de la transaction en vue d’accepter ces mises à jour.

CODE RETOUR -815

A GROUP BY OR HAVING CLAUSE IS IMPLICITLY OR EXPLICITLY SPECIFIED IN AN EMBEDDED SELECT STATEMENT OR A SUBQUERY OF A BASIC PREDICATE

Explication :

Un ordre SELECT INTO ou une sous-requête d’un prédicat mono-valué, contient directement une clause GROUP BY ou HAVING, ou utilise une vue comportant une clause GROUP BY ou HAVING. Ces codifications sont interdites.

Action système :

L’ordre ne peut être exécuté. Aucune donnée n’est extraite.

Réponse programmeur :

Cette fonction n’est pas supportée par DB2. Dans le cas d’une vue, les ordres SELECT intégrés ne peuvent pas extraire des données de cette vue.

CODE RETOUR -811

THE RESULT OF AN EMBEDDED SELECT STATEMENT IS A TABLE OF MORE THAN ONE ROW, OR THE RESULT OF THE SUBQUERY OF A BASIC PREDICATE IS MORE THAN ONE VALUE

Explication :

Un ordre SELECT INTO retourne plus d’une ligne, ou une sous-requête produit plus d’une valeur sur un prédicat mono-valué.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Examiner la syntaxe de l’ordre en s’assurant qu’il contient les bonnes spécifications des conditions. Le problème peut venir d’un résultat non prévu sur les données. Un résultat multi-ligne sur un ordre SELECT doit être géré par un curseur.

CODE RETOUR -805

PROGRAM NAME nom-programme NOT FOUND IN PLAN nom-plan

Explication :

Tentative d’exécution du programme d’application ‘nom-programme’ avec un DBRM non “bindé” avec le plan ‘nom-plan’.

Action système :

L’ordre ne peut être exécuté.

Réponse programmeur :

Faire un rebind de l’application. Vérifier que tous les DBRMs de l’application sont spécifiés dans la commande BIND (y compris les sous-programmes).

CODE RETOUR -803

AN INSERTED OR UPDATED VALUE IS INVALID BECAUSE THE INDEX nom-index CONSTRAINS COLUMNS OF THE TABLE SUCH THAT NO TWO ROWS CAN CONTAIN DUPLICATE VALUES IN THOSE COLUMNS. RID OF EXISTING ROW IS X’numéro-rid’

Explication :

La table touchée par une opération INSERT ou UPDATE possède une contrainte d’unicité sur certaines colonnes, gérée par un UNIQUE INDEX de nom ‘nom-index’. Le résultat de la demande se traduirait par des valeurs dupliquées sur la ligne identifiée par ‘numéro-rid’

Si l’objet de la mise à jour est une vue, c’est la table définissant cette vue qui possède la contrainte. La mise à jour peut aussi être induite par une opération DELETE sur une ligne parent liée à une ligne dépendante par une règle de destruction SET NULL.

Action système :

L’ordre INSERT, UPDATE ou DELETE ne peut être exécuté. La table reste inchangée.

Réponse programmeur :

Examiner la définition de l’index ‘nom-index” pour déterminer la contrainte d’unicité imposée.

Pour un ordre UPDATE, vérifier que l’opération est compatible avec la contrainte d’unicité. Le cas échéant, examiner la table pour déterminer la cause du problème.

Pour un ordre INSERT, examiner la table pour déterminer les valeurs qui enfreignent la contrainte d’unicité. Si l’ordre INSERT contient une sous-requête, croiser le résultat de la sous-requête avec le contenu de la table afin de déterminer la cause du problème.

Pour un ordre DELETE, examiner les colonnes clés de la table qui définissent l’index. Ces colonnes contiennent une clé étrangère qui, lors d’un DELETE en cascade avec mise à NULL des valeurs, provoque une duplication de valeurs.

CODE RETOUR -802

EXCEPTION ERROR type-exception HAS OCCURRED DURING type-opération OPERATION ON type-donnée DATA, POSITION numéro-position

Explication:

Le traitement d’une fonction ou d’une expression arithmétique figurant dans la liste d’un ordre SELECT, ou dans une condition de recherche d’un ordre SELECT. UPDATE ou DELETE. ou pendant l’évaluation d’une fonction de colonne, ou dans la clause SET d’un ordre UPDATE, a détecté une erreur d’exception, éventuellement indiquée par ‘type- exception’. Les ‘type-exception’ possibles sont : FIXED POINT OVERFLOW, DECIMAL OVERFLOW, DIVIDE EXCEPTION, et EXPONENT OVERFLOW. ‘type- donnée’ peut indiquer les types de donnée des éléments en cours de manipulation et ‘type-opération’ peut préciser l’opération en cours de traitement au moment de l’erreur. Si l’erreur se produit sur un SELECT externe, ‘numéro-position’ indique la position de l’expression incriminée dans la liste du SELECT.

Les ‘type-donnée’ possibles sont : INTEGER, SMALLINT. DECIMAL ou FLOAT. Le type de donnée peut être différent de celui de la colonne ou du littéral incriminé dans le cas de conversions par DB2. Les ‘type-opération’ possibles sont : ADDITION, SUBTRACTION, MULTIPLICATION. DIVISION et NEGATION.

Un FIXED POINT OVERFLOW peut apparaître dans une opération sur des champs INTEGER ou SMALLINT.

Un DECIMAL OVERFLOW peut apparaître lors de la perte de chiffres significatifs, due à une longueur trop courte du champ destiné à accueillir le résultat.

Un DIVIDE EXCEPTION peut apparaître lors d’une division par zéro d’un champ numérique, ou lorsque le quotient de la division dépasse la taille du champ spécifié.

Un EXPONENT OVERFLOW peut apparaître dans une opération en virgule flottante lorsque la mantisse dépasse 127 alors que l’exposant n’est pas zéro.

Note :

Les informations ‘type-exception’, ‘type-donnée’, ‘type-opération’, ‘numéro-position’ peuvent ne pas être retournées en SQLCA, en fonction du moment de détection de l’erreur.

Action système :

L’ordre ne peut être exécuté. Dans le cas d’un ordre UPDATE ou DELETE, aucune donnée n’est mise à jour ou détruite. Si l’ordre est un FETCH, le curseur reste ouvert. Si l’ordre est un OPEN, le curseur reste fermé.

Réponse programmeur :

Examiner l’ordre SQL pour déterminer la cause du problème. Le problème peut être dépendant des données. Analyser les données incriminées lors de la détection de l’erreur.

Si l’expression arithmétique en erreur figure sur la liste d’un SELECT externe, il est recommandé de coder une variable indicateur pour chaque expression de la liste. Cette méthode permet de poursuivre le traitement et de fournir une valeur pour toutes les colonnes et expressions non erronées.

Voir l’explication du code -405 pour les plages de valeurs des différents types de donnée.

CODE RETOUR -601

THE NAME OF THE OBJECT TO BE CREATED IS IDENTICAL TO THE EXISTING NAME nom OF THE OBJECT TYPE type-objet

Explication :

L’ordre CREATE tente de créer un objet ‘nom’ de type ‘type-objet qui est déjà un objet de ce type avec le même nom dans le sous-système DB2. Si ‘type-objet’ est un nom de contrainte, le ‘nom’ a été spécifié sur la clause FOREIGN KEY d’un ordre CREATE ou ALTER TABLE.

Action système :

L’ordre CREATE ou ALTER ne peut être exécuté. Aucun nouvel objet n’est créé, et l’objet existant n’est pas altéré.

Réponse programmeur :

L’objet existant doit être détruit, ou un autre nom doit être choisi. Si ‘type-objet’ est un dataset, un IDCAMS DELETE doit être exécuté avant le CREATE. Se référer à la codification des noms d’objets DB2.