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.

Articoli simili