Code opération RPG III / RPG/400 · IBM i (AS/400) · Sous-programmes et appels
DUMP
Imprimer l'état du programme
Écrit dans un spoule QPPGMDMP l'état du programme et la valeur de toutes ses zones ; la spécification de contrôle doit avoir un 1 en colonne 15.
Syntaxe
C ident DUMP
C DUMP
H 1
- Facteur 1 (18-27)
- Facultatif : une étiquette de 8 caractères, imprimée en titre du bloc.
- Indicateurs de conditionnement (9-17)
- Facultatifs : on conditionne souvent le
DUMPpar un indicateur d'erreur. - Spécification H, colonne 15
- Doit contenir
1. Sans lui, leDUMPest ignoré (deuxième exemple). - Effet
- Un fichier spoule
QPPGMDMPest créé : état du programme (nom, instruction en erreur, nombre de paramètres, dates), puis un tableauNAME OFFSET ATTRIBUTES VALUEavec chaque zone du programme, son adresse, son type et sa valeur. Le programme continue ensuite normalement.
À quoi ça sert
Quand un programme donne un résultat faux et qu'on n'a pas de débogueur, DUMP donne toutes les valeurs au même instant. On le place avant l'opération douteuse, on regarde le spoule, puis on le retire.
Exemple 1 : Un instantané
H* DUMP : instantane des zones du programme dans un spoule
H 1
C Z-ADD1250 SOLDE 72
C MOVEL'DUPONT' NOM 10
C 'POINT1' DUMP
C 'Apres' DSPLY
C SETON LR
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :
Apres
Extrait du cliché (spoule QPPGMDMP)
POINT1
NAME OFFSET ATTRIBUTES VALUE
NOM 00ABFA CHAR(10) 'DUPONT '
SOLDE 00ABF6 PACKED(7,2) 1250.
La spécification H porte un 1 en colonne 15. Le DUMP étiqueté POINT1 crée le spoule dont l'extrait suit : on y lit NOM (zone de 10 caractères) et SOLDE (décimal condensé, 7 chiffres dont 2 décimales, valeur 1250). Le spoule complet contient aussi le nom du travail, de l'utilisateur et les zones internes du programme : seule la partie utile est conservée ici.
Exemple 2 : Sans le 1 en colonne 15
H* DUMP : sans le 1 en colonne 15, DUMP est ignore
H
C Z-ADD1250 SOLDE 72
C MOVEL'DUPONT' NOM 10
C 'POINT1' DUMP
C 'Apres' DSPLY
C SETON LR
Résultat réel, compilé par CRTRPGPGM et exécuté sur IBM i 7.5 :
Apres
La spécification H est vide. Le compilateur accepte le programme (avertissement QRG5152, gravité 00) mais le DUMP ne produit rien : aucun spoule, seul Apres est affiché.
Le piège
Sans le 1 en colonne 15 de la spécification H, DUMP ne fait rien et ne le dit pas. Seul un message sans conséquence signale le défaut à la compilation : QRG5152 (gravité 00), « Une opération DEBUG ou DUMP est utilisée mais non définie dans la spécification de contrôle. » Le programme s'exécute sans erreur, mais le spoule n'existe pas.
Le spoule contient des données. Il reproduit les zones du programme telles quelles, donc des numéros de client, des soldes. Supprimez-le après lecture.
En RPG ILE full free
L'opération DUMP existe toujours en RPG IV. Pour regarder des valeurs, on préfère aujourd'hui le débogueur du système (STRDBG), qui les montre une à une sans modifier le programme.