Service SQL IBM i (AS/400) · Fonction table
QSYS2.STACK_INFO
Pile d'appels d'un travail
Affiche la pile d'appels d'un travail, avec programmes, modules, procédures et numéros d'instruction : un équivalent SQL de l'option Afficher la pile d'appels.
À quoi ça sert
STACK_INFO renvoie une ligne par entrée de la pile d'appels d'un travail, dans l'ordre (ORDINAL_POSITION), avec le type d'entrée, le programme et sa bibliothèque, le module, la procédure, le groupe d'activation et les identifiants d'instruction. Des colonnes dédiées couvrent les piles Java (classe, méthode, ligne), PASE et code interne sous licence.
Le paramètre JOB_NAME vaut '*' par défaut (le travail courant) ; sinon on passe le nom qualifié d'un autre travail. THREAD_ID cible une unité d'exécution précise, et IGNORE_ERRORS (par défaut 'YES') évite l'échec si le travail n'est plus accessible.
On l'utilise pour diagnostiquer un travail bloqué ou en boucle : on voit exactement où il se trouve, sans l'interrompre.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM TABLE(QSYS2.STACK_INFO('*')) X
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| THREAD_ID Identifiant de l'unité d'exécution | THREAD_TYPE Type d'unité d'exécution | ORDINAL_POSITION Position ordinale | ENTRY_TYPE Type de l'entrée | PROGRAM_NAME Nom du programme | PROGRAM_LIBRARY_NAME Nom de la bibliothèque du programme | STATEMENT_IDENTIFIERS Identifiants des instructions | REQUEST_LEVEL Niveau de la demande | CONTROL_BOUNDARY Limite de contrôle | PROGRAM_ASP_NAME Nom de l'ASP du programme | PROGRAM_ASP_NUMBER Numéro de l'ASP du programme | MODULE_NAME Nom du module | MODULE_LIBRARY_NAME Bibliothèque du module | PROCEDURE_NAME Nom de la procédure | ACTIVATION_GROUP_NUMBER Numéro du groupe d'activation | ACTIVATION_GROUP_NAME Nom du groupe d'activation | MI_INSTRUCTION_NUMBER Numéro d'instruction MI | JAVA_LINE_NUMBER Numéro de ligne Java | JAVA_BYTE_CODE_OFFSET Décalage dans le bytecode Java | JAVA_METHOD_TYPE Type de la méthode Java | JAVA_CLASS_NAME Nom de la classe Java | JAVA_METHOD_NAME Nom de la méthode Java | JAVA_METHOD_SIGNATURE Signature de la méthode Java | JAVA_FILE_NAME Nom du fichier Java | JAVA_SOURCE_FILE_NAME Nom du fichier source Java | PASE_LINE_NUMBER Numéro de ligne PASE | PASE_INSTRUCTION_ADDRESS Adresse d'instruction PASE | PASE_INSTRUCTION_OFFSET Décalage d'instruction PASE | PASE_KERNEL_CODE Code noyau PASE | PASE_BIT_CODE Code binaire PASE | PASE_ALTERNATE_RESUME_POINT Point de reprise alternatif PASE | PASE_PROCEDURE_NAME Nom de la procédure PASE | PASE_LOAD_MODULE_NAME Nom du module chargé PASE | PASE_LOAD_MODULE_PATH Chemin du module chargé PASE | PASE_SOURCE_PATH_AND_FILE Chemin et fichier source PASE | LIC_INSTRUCTION_OFFSET Décalage d'instruction du code interne sous licence | LIC_PROCEDURE_NAME Nom de procédure du code interne sous licence | LIC_LOAD_MODULE_NAME Nom du module de chargement du code interne sous licence |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2153 | NULL | 44 | LIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 460 | cblabranch | cblabranch |
| 2153 | NULL | 43 | LIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 236 | aiuser_program_call_portal | aiuser_program_call_portal |
| 2153 | NULL | 42 | ILE | QDBSSUDF2 | QSYS | 0000003086 | NULL | NO | *SYSBAS | 1 | QSQSTKINFO | QBUILDSS1 | RETRIEVE_CALL_STACK | 1 | *DFTACTGRP | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2153 | NULL | 41 | ILE | QDBSSUDF2 | QSYS | 0000002631 | NULL | NO | *SYSBAS | 1 | QSQSTKINFO | QBUILDSS1 | OPEN_CALL | 1 | *DFTACTGRP | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 2153 | NULL | 40 | ILE | QDBSSUDF2 | QSYS | 0000002525 | NULL | NO | *SYSBAS | 1 | QSQSTKINFO | QBUILDSS1 | QSQSTKINFO | 1 | *DFTACTGRP | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Afficher la pile d'appels du travail courant.
-- Description: Display the call stack for the current job.
SELECT * FROM TABLE(QSYS2.STACK_INFO('*')) X;
Bon à savoir
Les colonnes Java, PASE et code interne ne sont renseignées que pour les entrées de ce type : filtrez sur ENTRY_TYPE pour ne garder que les programmes ILE ou OPM d'un travail applicatif.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
JOB_NAME |
VARCHAR(28) | '*' | Nom du travail |
THREAD_ID |
VARCHAR(20) | NULL | Identifiant de l'unité d'exécution |
IGNORE_ERRORS |
VARCHAR(3) | 'YES' | Ignorer les erreurs |
Colonnes renvoyées (38)
Afficher les 38 colonnes
| Colonne | Type | Signification |
|---|---|---|
THREAD_ID |
BIGINT | Identifiant de l'unité d'exécution |
THREAD_TYPE |
VARCHAR(6) | Type d'unité d'exécution |
ORDINAL_POSITION |
INTEGER | Position ordinale |
ENTRY_TYPE |
VARCHAR(4) | Type de l'entrée |
PROGRAM_NAME |
VARCHAR(10) | Nom du programme |
PROGRAM_LIBRARY_NAME |
VARCHAR(10) | Nom de la bibliothèque du programme |
STATEMENT_IDENTIFIERS |
VARCHAR(109) | Identifiants des instructions |
REQUEST_LEVEL |
INTEGER | Niveau de la demande |
CONTROL_BOUNDARY |
VARCHAR(3) | Limite de contrôle |
PROGRAM_ASP_NAME |
VARCHAR(10) | Nom de l'ASP du programme |
PROGRAM_ASP_NUMBER |
INTEGER | Numéro de l'ASP du programme |
MODULE_NAME |
VARCHAR(10) | Nom du module |
MODULE_LIBRARY_NAME |
VARCHAR(10) | Bibliothèque du module |
PROCEDURE_NAME |
VARCHAR(4096) | Nom de la procédure |
ACTIVATION_GROUP_NUMBER |
DECIMAL(20, 0) | Numéro du groupe d'activation |
ACTIVATION_GROUP_NAME |
VARCHAR(10) | Nom du groupe d'activation |
MI_INSTRUCTION_NUMBER |
INTEGER | Numéro d'instruction MI |
JAVA_LINE_NUMBER |
INTEGER | Numéro de ligne Java |
JAVA_BYTE_CODE_OFFSET |
INTEGER | Décalage dans le bytecode Java |
JAVA_METHOD_TYPE |
VARCHAR(9) | Type de la méthode Java |
JAVA_CLASS_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Nom de la classe Java |
JAVA_METHOD_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Nom de la méthode Java |
JAVA_METHOD_SIGNATURE |
DOUBLE-BYTE CHAR LARGE OBJECT | Signature de la méthode Java |
JAVA_FILE_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Nom du fichier Java |
JAVA_SOURCE_FILE_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Nom du fichier source Java |
PASE_LINE_NUMBER |
BIGINT | Numéro de ligne PASE |
PASE_INSTRUCTION_ADDRESS |
DECIMAL(20, 0) | Adresse d'instruction PASE |
PASE_INSTRUCTION_OFFSET |
BIGINT | Décalage d'instruction PASE |
PASE_KERNEL_CODE |
VARCHAR(3) | Code noyau PASE |
PASE_BIT_CODE |
INTEGER | Code binaire PASE |
PASE_ALTERNATE_RESUME_POINT |
VARCHAR(3) | Point de reprise alternatif PASE |
PASE_PROCEDURE_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Nom de la procédure PASE |
PASE_LOAD_MODULE_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Nom du module chargé PASE |
PASE_LOAD_MODULE_PATH |
DOUBLE-BYTE CHAR LARGE OBJECT | Chemin du module chargé PASE |
PASE_SOURCE_PATH_AND_FILE |
DOUBLE-BYTE CHAR LARGE OBJECT | Chemin et fichier source PASE |
LIC_INSTRUCTION_OFFSET |
BIGINT | Décalage d'instruction du code interne sous licence |
LIC_PROCEDURE_NAME |
VARCHAR(4096) | Nom de procédure du code interne sous licence |
LIC_LOAD_MODULE_NAME |
VARCHAR(64) | Nom du module de chargement du code interne sous licence |