02 - Database DB2 for i

IBM i & SQL Tips #010 – Localizzare programmi nella Call Stack con STACK_INFO

Last Updated on 2 Novembre 2025 by Roberto De Pedrini

Ciao a tutti,

oggi voglio segnalarvi un altro interessante contributo di Massimo Duca, parte della sua ormai nota serie IBM i & SQL Tips.
In questo articolo Massimo ci mostra come utilizzare la table function QSYS2.STACK_INFO per individuare i programmi presenti nella call stack di un job su IBM i.

🔗 IBM i & SQL Tips #010 – Locate programs in the call stack – Massimo Duca

🧠 Cosa fa STACK_INFO

La funzione QSYS2.STACK_INFO restituisce informazioni dettagliate sui livelli della call stack – cioè la sequenza di programmi e procedure attivi in un determinato job – direttamente tramite SQL.
In pratica, basta una semplice query per sapere chi ha chiamato chi, senza dover intervenire con codice RPG o chiamate a basso livello.

Massimo spiega come filtrare i risultati, interpretare i diversi campi restituiti (programma, libreria, tipo di entry, livello), e come queste informazioni possano essere sfruttate per debug, logging, o per introdurre logiche condizionali basate sul chiamante.

Un articolo chiaro, pratico e immediatamente applicabile — come sempre nel suo stile. Grazie Massimo!

🧩 E le performance?

L’uso di STACK_INFO apre anche la porta a una riflessione interessante: come si comporta in termini di performance rispetto all’uso diretto della storica API QWVRCSTK (Retrieve Call Stack)?

Sebbene l’API fornisca il massimo controllo ed efficienza, il suo utilizzo richiede codice dedicato, gestione di buffer, strutture di dati e parsing complesso.
STACK_INFO, al contrario, permette di ottenere le stesse informazioni in una manciata di righe SQL, con un approccio molto più accessibile.
In ambienti dove la consultazione della stack non è continua o critica per le performance, questa semplicità rappresenta un vantaggio notevole.

💡 Una considerazione più ampia

L’articolo di Massimo è un ottimo esempio del valore degli IBM i Services introdotti negli ultimi anni: un modo moderno, coerente e developer-friendly per accedere a informazioni di sistema che un tempo richiedevano l’uso di API come QUSRJOBI, QWCRSVAL o QWVRCSTK.

Queste funzioni SQL non sempre sostituiscono le API – che restano più performanti e granulari – ma rendono la vita degli sviluppatori molto più semplice, integrandosi naturalmente con gli strumenti moderni come ACS, VS Code e gli ambienti di sviluppo SQL.

In questo senso, articoli come quello di Massimo aiutano la community a scoprire e valorizzare il meglio dei due mondi: la potenza di IBM i e la praticità di SQL.

📘 Leggi il post completo di Massimo Duca:
👉 IBM i & SQL Tips #010 – Locate programs in the call stack

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

--- Roberto De Pedrini Faq400.com
About author

Founder di Faq400 Srl, IBM Champion, ideatore del sito Faq400.com e del Blog blog.faq400.com. Sviluppatore RPG da quando avevo i pantaloni corti, forte sostenitore della piattaforma IBM i (ex AS400), ho sempre cercato di convididere le mie conoscenze con gli altri tramite forum, eventi e corsi. Oggi, tramite Faq400 Srl, cerchiamo di aiutare le aziende a sfruttare al meglio questa fantastica piattaforma IBM i.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *