Elenco Lavori Attivi

Un sistema alternativo e utile per essere utilizzato al bisogno in Programmi di monitoraggio del Sistema, è il seguente comando SQL che elenca tutti i lavori “utente” (NON di Sistema) che stanno “girando”:

SELECT 
       JOB_NAME, JOB_NAME_SHORT, JOB_USER, JOB_NUMBER, JOB_INFORMATION,
       JOB_STATUS, JOB_TYPE, JOB_TYPE_ENHANCED, JOB_SUBSYSTEM, JOB_DATE,
       JOB_DESCRIPTION_LIBRARY, JOB_DESCRIPTION, JOB_ACCOUNTING_CODE,
       SUBMITTER_JOB_NAME, SUBMITTER_MESSAGE_QUEUE_LIBRARY,
       SUBMITTER_MESSAGE_QUEUE, SERVER_TYPE, JOB_ENTERED_SYSTEM_TIME,
       JOB_SCHEDULED_TIME, JOB_ACTIVE_TIME, JOB_END_TIME,
       JOB_END_SEVERITY, COMPLETION_STATUS, JOB_END_REASON,
       JOB_QUEUE_LIBRARY, JOB_QUEUE_NAME, JOB_QUEUE_STATUS,
       JOB_QUEUE_PRIORITY, JOB_QUEUE_TIME, JOB_MESSAGE_QUEUE_MAXIMUM_SIZE,
       JOB_MESSAGE_QUEUE_FULL_ACTION, ALLOW_MULTIPLE_THREADS,
       PEAK_TEMPORARY_STORAGE, DEFAULT_WAIT, MAXIMUM_PROCESSING_TIME_ALLOWED,
       MAXIMUM_TEMPORARY_STORAGE_ALLOWED, TIME_SLICE, JOB_SWITCHES,
       ROUTING_DATA, CCSID, CHARACTER_IDENTIFIER_CONTROL,
       SORT_SEQUENCE_LIBRARY, SORT_SEQUENCE_NAME, LANGUAGE_ID, COUNTRY_ID,
       DATE_FORMAT, DATE_SEPARATOR, TIME_SEPARATOR, DECIMAL_FORMAT,
       TIME_ZONE_DESCRIPTION_NAME, MESSAGE_LOGGING_LEVEL,
       MESSAGE_LOGGING_SEVERITY, MESSAGE_LOGGING_TEXT,
       LOG_CL_PROGRAM_COMMANDS, STATUS_MESSAGE, INQUIRY_MESSAGE_REPLY,
       BREAK_MESSAGE, JOB_LOG_OUTPUT, JOB_LOG_PENDING, OUTPUT_QUEUE_PRIORITY,
       OUTPUT_QUEUE_LIBRARY, OUTPUT_QUEUE_NAME, SPOOLED_FILE_ACTION,
       PRINTER_DEVICE_NAME, PRINT_KEY_FORMAT, PRINT_TEXT, DEVICE_NAME,
       DEVICE_RECOVERY_ACTION, DDM_CONVERSATION, MODE_NAME, UNIT_OF_WORK_ID,
       CHAR(INTERNAL_JOB_ID) C_INTERNAL_JOB_ID
  FROM TABLE(QSYS2.JOB_INFO(JOB_STATUS_FILTER => '*ACTIVE',     
                            JOB_USER_FILTER => '*ALL')) 
 WHERE (JOB_TYPE NOT IN('ASJ', 'BCI', 'SYS', 'PJ'))
   AND LEFT(JOB_USER, 1) <> 'Q'
 ORDER BY JOB_USER, JOB_N00001

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:

  • Voglio sapere quanti lavori sono attivi
  • Voglio sapere se un lavoro è attivo
  • Voglio sapere se un Utente ha dei Lavori attivi
  • Voglio vedere se un lavoro sta girando
  • Voglio vedere se un lavoro è finito
  • Voglio rendermi conto perché il Sistema è rallentato

Articoli simili