Dove si trova il sorgente
SQL per trovare dove sono e quante copie esistono di un sorgente
Molto spesso ci si può trovare di fronte a domande del tipo:
- Non so dove si trova Sorgente di un Oggetto
- Non so quante copie del Sorgente esistono
- Non so quante versioni del Sorgente esistono.
- Non so quale sia il Sorgente corretto, ovvero il sorgente che ha generato l’oggetto in esecuzione
Nel caso quindi dovesse essere necessario sapere dove e quante copie / versioni ci sono dello stesso Sorgente di un Programma, File, DSPF, ecc, può risultare utile il seguente comando SQL:
SELECT TABSCHEMA, TABNAME , TABPART , PARTTYPE , PARTNBR , DSTPARTS , CARD , NPAGES , FPAGES , OVERFLOW , CLUSTERED , ACTBLOCKS , ACROWSIZE, ACROWRATIO, AVGROWSIZE, PCTCROWS , PCTPGSAVED, DELETED , SIZE , VLSIZE , VLSEGMENTS, FLEXTENTS , VLEXTENTS , CSTATSSIZE, MTISIZE , DISTINCTIX, OPENS , CLOSES , INSERTS , BLKIOPS , BLKIROW , UPDATES , DELETES , DSCLEARS , DSCOPIES , DSREORGS , DSINXBLDS, LGLREADS , PHYREADS , SEQREADS , RANREADS , CREATED , LASTCHG , LASTSAVE , LASTRST , LASTUSED , DAYSUSED , LASTRESET , NEXTVALUE, LOWINCL , LOWVALUE , HIGHINCL , HIGHVALUE , NBRPKEYS , PARTKEYS , KEEPINMEM , MEDIAPREF , LASTSRCUPD, SRCTYPE , "VOLATILE", "LABEL" , PARTIALTX , APYRCVLIB , APYRCVNAME, SYS_DNAME , SYS_TNAME , SYS_MNAME FROM QSYS2.SYSPARTITIONSTAT WHERE SYSTEM_TABLE_MEMBER = 'MENU' ORDER BY 1, 2, 3
Nell’esempio il sorgente cercato ha il nome ‘MENU’
TABSCHEMA TABNAM TABPART PARTNBR CARD SIZE LASTSAVE SRCTYPE LABEL SYS_DNAME SYS_TNAME SYS_MNAME LIBSR1 QCMDSR MENU 27 4 8192 09/05/2023 23:49 CMD Avvio Menu LIBSR1 QCMDSRC MENU LIBSR1 QRPGSR MENU 91 986 98304 09/05/2023 23:49 RPG Programma di gestione menu LIBSR1 QRPGSRC MENU HALSRC HALOBJ MENU 66 1170 151552 10/05/2023 08:33 RPGLE Programma di gestione menu HALSRC HALOBJ MENU LIBBCK001 HALOBJ MENU 73 1017 139264 09/05/2023 23:49 RPGLE Programma di gestione menu LIBBCK001 HALOBJ MENU LIBBCK015 HALOBJ MENU 1 1176 155648 09/05/2023 23:49 RPGLE Programma di gestione menu LIBBCK015 HALOBJ MENU LIBBCK065 HALOBJ MENU 1 1018 139264 09/05/2023 23:49 RPGLE Programma di gestione menu LIBBCK065 HALOBJ MENU LIBBCK112 HALOBJ MENU 1 1138 155648 09/05/2023 23:49 RPGLE Programma di gestione menu LIBBCK112 HALOBJ MENU LIBBCK114 HALOBJ MENU 1 1176 155648 09/05/2023 23:49 RPGLE Programma di gestione menu LIBBCK114 HALOBJ MENU LIBBCK156 HALOBJ MENU 1 1170 155648 09/05/2023 23:49 RPGLE Programma di gestione menu LIBBCK156 HALOBJ MENU LIBSRC_OLD HALOBJ MENU 1 1138 155648 09/05/2023 23:49 RPGLE Programma di gestione menu LIBSRC_OLD HALOBJ MENU
Esempio di alcune colonne del risultato
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)”.