Stack di un lavoro
SQL per ricavare lo “Stack” delle chiamate di un Lavoro
Nel caso in cui dovesse essere necessario sapere lo “Stack” delle chiamate che vengono effettuate da un lavoro attivo, potrebbe essere utile utilizzare il seguente comando SQL:
SELECT THREAD_ID , THREAD_TYPE , ORDINAL_POSITION , ENTRY_TYPE , PROGRAM_NAME , PROGRAM_LIBRARY_NAME , STATEMENT_IDENTIFIERS , REQUEST_LEVEL , CONTROL_BOUNDARY , PROGRAM_ASP_NAME , PROGRAM_ASP_NUMBER , MODULE_NAME , MODULE_LIBRARY_NAME , PROCEDURE_NAME , ACTIVATION_GROUP_NUMBER , ACTIVATION_GROUP_NAME , MI_INSTRUCTION_NUMBER , JAVA_LINE_NUMBER , JAVA_BYTE_CODE_OFFSET , JAVA_METHOD_TYPE , JAVA_CLASS_NAME , JAVA_METHOD_NAME , JAVA_METHOD_SIGNATURE , JAVA_FILE_NAME , JAVA_SOURCE_FILE_NAME , PASE_LINE_NUMBER , PASE_INSTRUCTION_ADDRESS, PASE_INSTRUCTION_OFFSET , PASE_KERNEL_CODE , PASE_BIT_CODE , PASE_ALTERNATE_RESUME_POINT, PASE_PROCEDURE_NAME , PASE_LOAD_MODULE_NAME , PASE_LOAD_MODULE_PATH , PASE_SOURCE_PATH_AND_FILE, LIC_INSTRUCTION_OFFSET , LIC_PROCEDURE_NAME , LIC_LOAD_MODULE_NAME FROM TABLE(QSYS2.STACK_INFO('487154/QUSER/QZSCSRVS', 'ALL'))
Result:
--- JOB_NAME JOB_TYPE THREAD_ID THREAD_TYPE ORDINAL_POSITION ENTRY_TYPE PROGRAM_NAME PROGRAM_LIBRARY_NAME STATEMENT_IDENTIFIERS MODULE_NAME MODULE_LIBRARY_NAME PROCEDURE_NAME ACTIVATION_GROUP_NUMBER ACTIVATION_GROUP_NAME MI_INSTRUCTION_NUMBER 190936/USR001/QPADEV0003 INT 126 USER 24 ILE QRNXIO QSYS 63 QRNXWSIO QBUILDSS1 _QRNX_WS_EXFMT 2 *DFTACTGRP 190936/USR001/QPADEV0003 INT 126 USER 23 ILE PGM001 LIBPGM 74400 PGM001 QTEMP PGM001 2 *DFTACTGRP 190936/USR001/QPADEV0003 INT 126 USER 19 OPM PGM000 LIBPGM 600 15 ---
Nota sul comando SQL:
Possono verificarsi dei casi in cui il comando SQL “sembra” non funzionare o peggio ancora che alcuni dati che dovrebbe estrarre non vengano “trovati”.
Questo succede se lo strumento con cui viene eseguito il comando SQL (STRSQL nativo AS400, strumenti esterni via ODBC, JDBC, OLEDB, ecc.) riscontra dei problemi nella conversione dei valori presenti all’interno delle varie colonne estratte (spesso dovuti a CCSID incompatibili fra Sistemi).In circostanze di questo genere è necessario individuare per tentativi quali colonne NON estrarre o tentare di estrarre effettuando la conversione a carattere con la funzione “Char(colonna)”.
Casi in cui può essere utile:
- conoscere quali Funzionalità di un Programma NON vengono MAI utilizzate (e quindi potrebbero essere rimossi dai Sorgenti alleggerendone la gestione)
- conoscere quali Utenti utilizzano determinate Funzionalità di un Programma
- conoscere in quali giorni / orari vengono utilizzate determinate Funzionalità di un Programma.