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