2017-01-24 1 views
1

L'erreur de données décimales est quelque chose qui arrive très souvent pendant que je fais des tests et débogue des programmes RPG. Parfois, le champ en erreur est très évident et clair comme lorsque vous déboguez un programme et que l'erreur est lancée lors d'une opération EVAL. Mais dans certains autres cas, ce n'est pas clair et une option pour prendre un Dump apparaît. Après avoir pris une décharge, comment comprenez-vous le champ par erreur et où le problème s'est-il produit? Donc, fondamentalement, la question est de savoir comment lire un fichier Spool et comprendre ce qui s'est mal passé. Comment comprendre l'action requise pour corriger le problème. Principalement comment comprendre quel champ est assigné une mauvaise valeur qui a abouti à l'erreur de données Decimal? Quels sont les points importants à surveiller dans la bobine? Ci-dessous un exemple de fichier spool pour référence que j'essaie de comprendre.Comment lire un vidage iSeries après une erreur de données décimales

https://www.dropbox.com/s/qls40890gfije5o/pftest.txt?dl=0

Répondre

2
Statement in Error . . . . . . . . . . : 00100100 

Ce sera soit le numéro de déclaration de la source, si votre programme a été compilé avec option(*SRCSTMT) ou comme cela semble être le cas ici ... la liste de compilation numéro de ligne.

En outre, les éléments suivants sont généralement utiles car un eror de données décimal se produit généralement lors de la lecture des données d'un fichier.

Status that caused RNX9001 . . . . . . : 
Last File Used . . . . . . . . . . . . : 
Last File Status . . . . . . . . . . . : 
Last File Operation . . . . . . . . . : 
Last File Routine . . . . . . . . . . : 
Last File Statement . . . . . . . . . : 
Last File Record Name . . . . . . . . : 
+0

Si vous avez une liste de compilation à portée de main (ou si vous pouvez la régénérer pour qu'elle corresponde à ce qui est déjà en cours d'exécution), recherchez le numéro de requête dans la liste de compilation. Il aura probablement le champ numérique avec le problème. –

+0

Et si l'erreur est levée sur une instruction d'entrée, c'est presque certainement un fichier DDS natif plutôt qu'une table SQL. Les valeurs de champ pour les fichiers natifs sont validées lors de la lecture, mais les colonnes SQL sont validées lorsqu'elles sont écrites (ce qui rend difficile l'obtention de données invalides dans une table en premier lieu). – user2338816

0

RNX9001 Erreur de données décimales. Dans la nature 99% un champ numérique n'a pas été initialisé.

Envisagez d'utiliser l'opcode de réinitialisation. Ceci placera tous les champs dans un format d'enregistrement à leurs valeurs par défaut. Ensuite, remplissez les données.

  RESET   ORDERSF