Recette SQL IBM i (AS/400) · Messages
Les messages de QSYSOPR qui attendent une réponse
Les messages d'interrogation de QSYSOPR qui n'ont pas encore reçu de réponse : la requête que tout pupitreur devrait avoir sous la main.
Le besoin
Un message d'interrogation sans réponse bloque le travail qui l'a envoyé (bande à monter, fichier plein, erreur de programme). Il faut les retrouver vite, sans faire défiler tout DSPMSG QSYSOPR.
La requête
SELECT MESSAGE_TIMESTAMP, MESSAGE_ID, FROM_JOB, SEVERITY, MESSAGE_TEXT
FROM QSYS2.MESSAGE_QUEUE_INFO
WHERE MESSAGE_QUEUE_LIBRARY = 'QSYS' AND MESSAGE_QUEUE_NAME = 'QSYSOPR'
AND MESSAGE_TYPE = 'INQUIRY'
AND MESSAGE_KEY NOT IN (SELECT ASSOCIATED_MESSAGE_KEY FROM QSYS2.MESSAGE_QUEUE_INFO
WHERE MESSAGE_QUEUE_LIBRARY = 'QSYS' AND MESSAGE_QUEUE_NAME = 'QSYSOPR'
AND MESSAGE_TYPE = 'REPLY' AND ASSOCIATED_MESSAGE_KEY IS NOT NULL)
ORDER BY MESSAGE_TIMESTAMP DESC
FETCH FIRST 10 ROWS ONLY
Dans QSYS2.MESSAGE_QUEUE_INFO, une réponse est une ligne REPLY dont ASSOCIATED_MESSAGE_KEY pointe vers la question. On garde donc les messages INQUIRY dont la clé n'apparaît dans aucune réponse.
Le résultat sur un IBM i 7.5
La requête n'a renvoyé aucune ligne.
Aucune ligne au moment de notre test : aucune question n'attendait de réponse dans QSYSOPR.
Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.
L'adapter à votre système
Changez la file pour une file de messages applicative. Pour répondre en SQL à une liste de messages connus, voyez SYSTOOLS.REPLY_INQUIRY_MESSAGES.