Aller au contenu

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.