mercoledì 9 dicembre 2015

L'SQL senza l'SQL

SQL, da pronunciare rigorosamente siquel, è l'acronimo di Structured Query Language.
È uno strumento fondamentale per interrogare e fare manutenzione del Data Base sulla maggior parte delle piattaforme software: DB2, Windows, Linux comprendono strumenti per utilizzare questo linguaggio. Ci sono piccole differenze di sintassi, ma nulla che non si possa superare con un minimo di attenzione.

Chi si occupa di manutenzione software, e ha bisogno di uno strumento veloce per analizzare un archivio, per fare ricerche, per controllare informazioni e fare modifiche "al volo", deve saperlo utilizzare, almeno per quanto riguarda le funzioni base.

Un caso plausibile

Ora, provate a immaginare una situazione come questa: il consulente arriva dal cliente, dotato di un sistema iSeries, fa un po' di analisi della situazione, e vede che deve modificare sull'anagrafico Clienti un campo che chiameremo "flag di cliente vecchio", per tutti quelli che non hanno ordini nell'ultimo anno.
Ovviamente il nostro consulente sa che per fare questo è sufficiente lanciare un unico comando SQL, qualcosa del genere

Update Clienti set Cliente_Vecchio='S'
where Codice_Cliente not in 

(Select Codice_Cliente from Ordini where data >= data_di_un_anno_fa)

Non è dei più semplici, ma in pratica mette il flag su tutti i clienti il cui codice NON compare nella lista estratta dal comando in parentesi, che contiene tutti i codici cliente che hanno un ordine a partire dalla data di un anno fa.
Più semnplice da capire che da spiegare :-)

Ora però il nostro consulente va sulla riga comandi, scrive STRSQl (start SQL) e riceve il messaggio: "SQL for DB2 not installed".

Accidenti, e adesso?

Ovviamente si dovrà scrivere un programma, sempre che il cliente abbia installato il compilatore RPG o Cobol, a seconda delle capacità specifiche del professionista.

Soluzione alternativa (e divertente)

Oppure si può risolvere in un modo più elegante e tutto sommato divertente, basta avere installato sul proprio PC il modulo Operation Navigator nella sua versione completa.

Selezionate la vostra macchina nella lista a sinistra, aprite il gruppo Database, quindi cliccate con il pulsante destro del mouse sul nome della macchina: si aprirà un menù contestuale come nell'immagine.
Selezionate Esegui script SQL...

Comparirà un pannello simile a quello riportato qui sotto, nel quale potete già vedere alcune cose interessanti: vediamole.

Innanzi tutto, nella parte superiore potete inserire un qualsiasi comando SQL, che verrà eseguito sul sistema iSeries selezionato. Dovete solo fare attenzione a scrivere i nom delle Tabelle nel formato libreria.tabella e non con quella standard dell'AS/400 con la barra tra nome della libreria e nome del file.


Una volta selezionato il pulsante  Esegui script, una piccola clessidra, vedrete il risultato nella parte inferiore, con tutti i campi scelti nella clausola select.






Conclusioni

Questa funzione permette di fare un sacco di cose, oltre all'esecuzione pura e semplice di uno script, per esempio la possibilità di salvare un comando dentro un file di testo, per poterlo riutilizzare sempre qui oppure sull'iSeries, con un semplice taglia-incolla.

Vi ho incuriositi?
Lo spero, e vi invito a usare questo "trucchetto": fatemi sapere le vostre opinioni e se scoprite qualcos'altro, fatemelo sapere, così potrò aggiungerlo qui (ovviamente prendendomene il merito... :-D)

Un abbraccio

lunedì 7 dicembre 2015

iSeries e chiavette USB

Non so quanti di voi abbiano mai pensato: "Ma a cosa servono tutte quelle prese USB sull'AS/400 se poi non si possono utilizzare?!"

Bene, le cose non stanno esattamente così, se avete un Power7 e almeno la V7R1.

Vi faccio la versione breve:

1) prendete una chiavetta USB (o un disco con porta USB, come volete)
2) controllate che il valore di sistema QAUTOCFG sia impostato a "1"
3) inserite la chiavetta (o il disco, ma da qui in avanti parliamo di chiavetta), nella porta USB
4) aspettate qualche secondo, quindi controllate che il device RMS01 esista
5) lanciate INZOPT NEWVOL('USB01') DEV(RMS01) CHECK(*NO) MEDFMT(*UDF)

Da questo momento in avanti, la vostra chiavetta (che ovviamente sarà stata "pulita" dall'inizializzazione) potrà essere usata come device di salvataggio di QUALSIASI cosa, basterà utilizzarla come unità ottica riscrivibile.
Quindi SAVLIB, SAVOBJ, SAVSYS.
Ovviamente, se RMS01 non vi piace, nessuno vi vieta di ridenominarlo come USB01.

Inoltre, essendo un device accessibile da IFS, potrete utilizzarlo come target IMGCLG, quindi, tanto per fare un esempio, potrete creare un IMGCLG sulla chiavetta, definendolo come "virtual tape", e farci i vostri preziosissimi salvataggi serali, quadagnandoci in velocità e sicurezza.

Solo la fantasia può frenarvi, a questo punto!

Aggiungo che la chiavetta, formattata in questo modo, sarà perfettamente leggibile anche da PC e da MAC.

Cosa volete di più?