Manuale Sist.Strumenti Customizzazione W
Transcript
Manuale Sist.Strumenti Customizzazione W
Strumenti di Customizzazione – Manuale Sistemista Strumenti di Customizzazione Paragrafo-Pagina di Pagine 1-1 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista SOMMARIO 1 INTRODUZIONE ................................................................................................................1-3 2 STRUMENTI DI CUSTOMIZZAZIONE ..................................................................................2-3 2.1 2.1.1 2.2 Editor SQL ........................................................................................................................................... 2-3 Specifiche Visualizzazione SQL ........................................................................................................... 2-6 Gestione Interrogazioni Generiche (G5)................................................................................................... 2-11 2.2.1 Default Parzializzazione Interrogazione .............................................................................................. 2-13 2.2.2 Funzioni di Parzializzazione .............................................................................................................. 2-14 2.2.3 2.3 2.3.1 2.4 Comando esecuzione interrogazioni EXEEG5 ....................................................................................... 2-15 Manutenzione Procedure e Funzioni SQL (Stored Procedures e UDF) (HU) .................................................... 2-15 Debug procedure ............................................................................................................................ 2-18 Gestione programmi EXIT (HX) .............................................................................................................. 2-20 2.4.1 Schema di funzionamento ................................................................................................................ 2-24 2.4.2 Utilizzo delle Formule ...................................................................................................................... 2-25 2.4.3 Inner Join ...................................................................................................................................... 2-26 2.4.4 Utilizzo funzioni SUF_ in istruzioni SQL............................................................................................... 2-26 2.4.5 Variabili disponibili .......................................................................................................................... 2-27 2.5 Manutenzione File Messaggi (EP) ............................................................................................................ 2-27 2.6 Fast Query (Vedi manuale specifico) ....................................................................................................... 2-29 2.7 Aggiunta Colonne SubFile con Webgate400.............................................................................................. 2-29 2.7.1 Valorizzazione del campo tramite espressioni SQL ............................................................................... 2-31 2.7.2 Valorizzazione tramite formula.......................................................................................................... 2-33 2.7.3 Valorizzazione di campi da Programmi esterni ..................................................................................... 2-33 2.7.4 Trattamento dei campi UNICODE (tipo G) ........................................................................................... 2-34 2.7.5 Aggiunta di una colonna LINK e/o Immagine....................................................................................... 2-34 2.7.6 Aggiunta di una colonna ICONA ........................................................................................................ 2-36 2.8 Command Services .............................................................................................................................. 2-37 2.8.1 Comman Services di tipo Drag and Drop ............................................................................................ 2-38 2.8.2 Tips .............................................................................................................................................. 2-40 2.9 Sintassi delle Variabili e Campi............................................................................................................... 2-40 2.10 Monitor Data Base (STRDBMON) ........................................................................................................... 2-40 2.11 Interrogazione LOG dall‟Applet .............................................................................................................. 2-41 Paragrafo-Pagina di Pagine 1-2 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista 1 INTRODUZIONE Gli strumenti illustrati di seguito hanno lo scopo di facilitare i reparti di consulenza e assistenza nel soddisfare le richieste dei clienti sia in termini di aderenza alle specifiche esigenze che di tempestività dell‟intervento. Al tempo stesso, servono per mantenere la politica dello sviluppo standard senza gravare lo stesso di funzionalità e forme di visualizzazione di scarso rilievo per l‟interesse collettivo. Questo obiettivo, si rivela particolarmente importante al fine di non far proliferare all‟infinito campi, colonne, opzioni, tasti di funzione che alla lunga rendono poco intuitivo l‟uso del prodotto. A CHI È DESTINATO Agli operatori di applicativi gestionali che per la mansione assegnata consultano oggetti dati supportati dal sistema informativo aziendale. CONSIGLI Quando si decide di utilizzare sul proprio sistema questi strumenti, ricordarsi di aggiungere nei salvataggi serali delle librerie WEBG4FD e WGFRnnnnD se non è già stato previsto. Se si utilizzano dei *MSGF Custum creati nelle librerie in lingua come ad esempio WGLANGITA ricordarsi che anche queste librerie vanno salvate. COME RAGGIUNGERE LE FUNZIONI Semplicemente dal Menù di WEGGATECVT in : Menù ambiente Applicazioni->Strumenti Customizzazione 2 STRUMENTI DI CUSTOMIZZAZIONE 2.1 Editor SQL E‟ disponibile su svariati elaborati di Customizzazione, in gestione attributi oggetti e in Query Command, richiede però come prerequisito “Microsoft NET Framework 4” installato. Consente l‟inserimento di una o più istruzioni SQL concatenate, in un formato semplice e facile da leggere. E‟ possibile inserire comunque l‟istruzione scrivendo tutto di seguito,ci pensa poi l‟editor a formattarla e renderla più facilmente leggibile e ad eseguire in automatico i controlli di sintassi e di rispetto della lunghezza delle istruzioni ove ci fossero queste restrizioni, come nel caso dello statement “CREATE PROCEDURE” o “CREATE FUNCTION” se il testo eccedente gli 80 caratteri, questo viene evidenziato in rosso. Ove presenti dei parametri nell‟istruzione , questi sono evidenziati con un diverso colore. Nella cornice in alto, ci sono delle icone che richiamano alcuni dei comandi disponibili anche con “Clik Sinistro” sulla finestra nera dell‟editor. Figura 2.1-I (RFQX04FM/W11) Paragrafo-Pagina di Pagine 2-3 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista “Espandi/Riduci” consente di passare dall‟immagine ristretta, al formato esteso (e viceversa) per consentire la lettura completa anche di stringhe di comando lunghe “Formatta” dove inserite istruzioni SQL compattate, spezzetta le istruzioni presentandole in un formato più leggibile e facile da interpretare ad eccezione di statement di tipo “CREATE PROCEDURE” e “CREATE FUNCTION”. Questa funzione parte anche in automatico ogni volta che si entra in un oggetto SQL già salvato. “Verifica Query” in fase di stesura dei comandi SQL, lanciando questa funzione è possibile verificare eventuali errori di sintassi dei comandi inseriti. Per ogni statement, viene mostrato il risultato di tale analisi ed in caso di errore, selezionando il MSG presentato, viene suggerita/evidenziata all‟interno dell‟Editor la riga trovata in errore. “Esegui SQL” sempre in fase di stesura delle istruzioni SQL , consente di eseguire l‟istruzione SQL e visualizzarne il risultato ottenuto. Con la versione 8.0.0.52 di Webgate è possibile richiedere l'esecuzione di una query che contiene parametri, anche se non è previsto che questi vengano richiesti da prompt come potrebbe essere quando i parametri provengono da Videate. Il sistema automaticamente rileva tutti i parametri query e propone di inserire un valore da utilizzare durante l'esecuzione. “Aggiungi Specifiche” permette di richiamare la finestra in cui impostare le “Specifiche di Visualizzazione SQL”. Vedremo in seguito come viene compilata “Visualizza Specifiche” consente di visualizzare le specifiche inserite nell‟istruzione SQL secondo ancora il vecchio formato. Queste, ove possibile, andrebbero rimosse e convertite secondo il nuovo formato che vedremo tra poco. “Intellisense” ( non disponibile con icona ) consente di richiedere al programma il suggerimento dei nomi di campi o file che iniziano con le lettere appena digitate. La funzione sulla base della posizione del cursore all‟interno dello statement, riconosce se la parola che si sta digitando è un nome di file o campo, e filtra di conseguenza i suggerimenti mostrandone il nome e la sua descrizione. Figura 2.1-II (RFQX04FM/W11) “Verifica Lunghezza Stringa” Nel caso lo statement editato sia una “CREATE PROCEDURE” o una “CREATE FUNCTION”, il testo eccedente gli 80 caratteri consentiti dall‟istruzione viene evidenziato in rosso. Queste funzioni non possono essere eseguite direttamente ma devono prima essere salvate su file in AS/400, sottostando al limite imposto dal sistema operativo degli 80 caratteri per riga. “Insert Snippet” ( non disponibile con icona ) consente di inserire all‟interno dell‟editor, nel punto in cui è posizionato il cursore, blocchi predefiniti di codice SQL come potrebbe essere una SELECT, una INSERT, o una CREATE VIEW. “Wizard” consente di inserire all‟interno di una Query SQL una funzione predefinita attraverso un interfaccia che guida la definizione dei suoi parametri richiesti. Per prima cosa viene mostrata una lista di funzioni disponibili da poter utilizzare nelle istruzioni SQL. Evidenziando la riga relativa alla finzione che si vuole utilizzare e premendo il pulsante “Avanti” viene mostrata la funzione ed i parametri richiesti da compilare. Una volta completati, viene reso all‟interno dell‟editor, nel punto dove si è posizionati con il cursore, la stringa compilata della funzione selezionata. Paragrafo-Pagina di Pagine 2-4 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista selezioniamo ad esempio una funzione di interrogazione logistica dichiariamo la variabile e selezioniamo il valore risultato tra quelli disponibili per la funzione l‟istruzione viene quindi compilata e confermando “Ok”, viene riportata all‟interno dell‟editor Su funzioni già presenti all‟interno dell‟istruzione SQL è possibile raggiungere la videata e quindi modificarle in modo rapido evidenziando la funzione dall‟editor con un doppio clik sulla WUF_xxx, premendo poi l‟icona del “Wizard”. “Altro sull‟Editor ..” Le parole chiave, come pure i parametri presenti all‟interno della query vengono riconosciuti dal sistema, e colorate in maniera appropriata per evidenziarli. Paragrafo-Pagina di Pagine 2-5 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista 2.1.1 Specifiche Visualizzazione SQL Utilizzando questa funzione richiamabile dell‟ Editor SQL, si possono attribuite alle colonne dell‟ istruzione SELECT preposta alla visualizzazione dei dati, una serie di funzioni quali parametri, livello di gerachizzazione, calcolo di somma, media minimo, massimo, funzioni relative alla costruzione di grafici, hyperlink, pivot (Cross Query). L‟ associazione tra colonna e funzione, avviene attraverso l‟Alias che deve essere assegnato ad ogni colonna ottenuta attraverso una espressione. Per colonne che devono essere utilizzate dalle funzioni relative a Command Services e Allegati (Gestione Documentale Database Links), devono essere utilizzati Alias corrispondenti ai nomi di variabile (o desinenze delle stesse) o non utilizzati affatto se il nome della colonna corrisponde già a quella definita nel dizionario (vedi colonna XCODAN, XUSERI, ecc…). Figura 2.1-III (RFQM8FM/T2CTL) L‟intestazione se non indicata, viene presa dal dizionario dei campi di data base, diversamente è possibile indicarla all‟interno delle specifiche. Nell‟esempio riportato, alcune colonne sono raggruppate sotto un titolo principale, è il caso di “Dipendente”. Per ottenere questo, si devono tenere distinte le due stringhe di intestazione dai caratteri “//” come “Dipendente//Codice” mentre “Indirizzo E-Mail” o “Telefono cellulare” non appartengono a nessun raggruppamento di colonne. Con “Parametro” viene dichiarato il “Numero” progressivo del parametro ed il “Campo a Video” di destinazione del dato; la codifica è “TEXMAN01” nome del campo a video che riceverà il dato selezionato e “T1CTL.” il suo formato video. Prendiamo come esempio la precedente “Specifica” riportata, applicata come personalizzazione ad un video di ricerca “Clienti/Fornitori”. Selezionando l‟apposita icona presente sull‟interrogazione SQL , il campo mansione esposto in riga è ribaltarlo nel campo T1CTL.TEXMAN01 che corrisponde al primo campo di testata dei filtri per mansione. Paragrafo-Pagina di Pagine 2-6 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Con “Gerarchia” si vanno a numerare i livelli di gerarchia con cui verranno esposti i dati. Nell‟esempio qui riportato, ci si limita a raggruppare per il solo Codice Mansione. Con “Nascondi” è possibile non esporre delle colonne estratte perché necessarie per altri scopi come potrebbero essere i campi Hyerlink come vedremo. Attraverso “Funzione” si possono effettuare calcoli di riepilogo delle colonne come “T_otale” , “M_edia” , “C_onteggio” , “M_assimo” e “M_inimo”. Attraverso “Hyperlink” è possibile ottenere che i dati delle colonne configurate possano essere selezionabili e richiamino dei comandi secondo quanto configurato nell‟istruzione SQL. Vediamo un esempio e cerchiamo di chiarire come funziona. Questa è un interrogazione sul mansionario dei Clienti/Fornitori dove possiamo vedere all‟interno dei campi della SELECT due comandi “EXEC://” che richiamano dei programmi, ad essi sono stati associati degli ALIAS. Paragrafo-Pagina di Pagine 2-7 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Come si vede, attraverso una numerazione, sono stati correlati tra loro il campo “Descrittivo” di hyperlink con il campo che contiene il comando relativo che sarà eseguito quando selezionato il campo descrittivo. Si può anche notare nell‟esempio, che il campo contenete il comando è nascosto. Nella Query quindi troveremo il campo “Dipendente” e “Utente” che saranno selezionabili e riconoscibili a video dalla “sottolineatura”. Il comando previsto nell‟esempio è una registrazione di una bolletta , e quindi selezionandolo avremo ……… Oltre al comando “EXEC://” sono possibili anche altri comandi. La lista e la loro sintassi è possibile trovarla nel “Manuale Webgate400 Converter Tutorial”, riportiamo comunque uno stralcio. Comando Tipo „http://www.webgate400.com‟ URL „/webgate400/images/rubinetto.gif‟ URL – IFS iSeries Server „EXEC://CALL PGM(ABCV) PARM(„1‟ „DD‟)‟ CALL RPG con emissione nuova finestra „EXEB://CALL PGM(ABCV) PARM(„1‟ „DD‟)‟ CALL RPG batch (senza video) „EXEI://CALL PGM(ABCV) PARM(„1‟ „DD‟)‟ CALL RPG che produce un output da gestire (vedere inserzione script) „SQLI:// SELECT‟ SQL su nuova finestra Esempio Attraverso “Chart” è possibile configurare i campi su cui poi poter ottenere dei grafici, con la funzione disponibile sull‟applet. Vediamo come impostare i dati , attraverso un semplice esempio, analisi del venduto per anno suddiviso per classe. Paragrafo-Pagina di Pagine 2-8 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Il campo XCLASS , codice della classe è estratto , ma non visibile, la sua descrizione è definita come un elemento di gerarchia, del Valore vogliamo il totale. Nei parametri “Chart” andiamo a definire come comporre il grafico, con “Categoria” impostiamo l‟asse “X” del grafico, campo DCLASS, con “Valore 1” l‟asse “Y”, campo XPREZE totalizzato e con “Serie” definiamo il campo XANFAT su cui dovranno essere generati più grafici. Questo è il risultato applicato su una TAB inserita come personalizzazione di un elaborato, richiamando la funzione “Grafico” dell‟applet. Il campo “Serie” come si vede, ha generato più grafici di colori diversi. Paragrafo-Pagina di Pagine 2-9 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Attraverso i parametri “Pivot” è possibile costruire una Query SQL a campi incrociati. In “Ruolo” si indica la natura del campo che può essere “Pivot” per cui ogni valore verrà esposto su una colonna nuova, “Riga” (Massimo 3 campi) che servono come chiave di raggruppamento dei dati di lettura (è possibile una gerarchizzazione), “Dati” (Massimo 5 campi) che sono i campi dei dati visualizzati sotto il “Pivot” per ognuno dei quali è possibile impostare varie tipologie di “Azioni” come chiedere che il campo sia “Decodificato” con un limite di “Lunghezza” della stringa esposta. In riferimento ai campi definiti come “Dati” si possono chiedere calcoli come lo scostamento a valore e/o in percentuale tra una colonna “Pivot” e l‟altra. E‟ anche possibile chiedere di omettere il “Totale Generale” delle colonne totalizzate esposte per ogni raggruppamento “Pivot”. Figura 2.1-IV (RFQM08FM/T2CTL) Riportiamo qui un esempio di utilizzo di questa tecnica. Cliente XCODAN e Classe XCLASS sono campi “Gerarchizzati di livello 1 e 2”, sono definiti come campi di riferimento di “Riga (ruolo) ” nella struttura dalle Cross Query e se ne chiede la decodifica che viene limitata a 30 caratteri (effetto finale evidenziato in Rosso e Verdone). L‟anno di fatturazione XANFAT è il campo “Pivot (ruolo)” della query e lo vediamo come testata del gruppo di colonne (effetto finale evidenziato in Fuxia). I campi XPRZTE, XNUMER e XPNET sono campi “Dati (ruolo)” della Cross Query, di questi viene chiesto il totale e solo per XPRZTE viene chiesto lo scostamento a “Valore” e “Percentuale” (effetto finale evidenziato in Viola). Nella definizione di “Pivot” è richiesto di omettere il totale generale di tutti gli anni estratti per il campo XPNET ed infatti la colonna “Peso” la troviamo per ogni anno raggruppato, ma non tra le colonne di Totale Generale (effetto finale evidenziate in Verde). Figura 2.1-V (RFQX07FM/T2) Attraverso “Modificabile” è possibile dichiarare che alcuni campi esposti a video possono essere modificabili dall‟operatore. E‟ necessario dichiarare anche il file di destinazione del dato modificato, questo potrebbe essere un limite se i campi che si vogliono modificare provengono da più files. Il programma che recepisce la modifica, crea una “chiave” di filtro dei record da aggiornare combinando tutti i campi appartenenti al file dichiarato, con i relativi valori ripresi della riga selezionata e procede aggiornando tutti i record che entrano in tale filtro, è quindi opportuno valutare con attenzione come si imposta attiva questa funzione per non ottenere spiacevoli risultati, un consiglio potrebbe essere quello di inserire, eventualmente come campo nascosto, la chiave effettiva del file che si andrà ad aggiornare. Figura 2.1-VI (RFQM08FM/T2CTL) Paragrafo-Pagina di Pagine 2-10 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Con un “doppio click” sul numero riga che si vuole selezionare, si richiama la finestra di aggiornamento dei dati. Solo selezionando “Salva/Continua” o “Salva” i dati vengono aggiornati fisicamente sul file. Riportiamo qui un esempio realizzato come personalizzazione di una TAB di un elaborato dove è prevista la possibilità di aggiornare il campo “Utente”. Per concludere, vediamo le impostazioni dei dati di testata “ID” e dei “Parametri Generali” Con “Applicazione” viene indicato l‟ambiente applicativo a cui si riferisce la query SQL, “002” indica lo WEBGATE, “006” indica il Dblink, ecc…con “Descrizione” si imposta il titolo della Query SQL che verrà esposto a video all‟utilizzatore. L‟ impostazione di “Standard” è riservata a EDM e riguarda tutti quegli SQL che vengono rilasciati ai clienti con gli aggiornamenti. Se si seleziona “Emissione Sincrona” significa che l‟ istruzione SQL è contemporanea all‟emissione del video, viene elaborata subito, se non selezionato, parte solo su richiesta dell‟operatore quando apre la TAB che interessa. “Condizioni Esecuzione” consente di eseguire l‟interrogazione SQL solo “Se cambiato” il valore del campo di riferimento, solo “Se richiesto” dall‟operatore oppure “Sempre” eseguita ad ogni azione sul video da parte dell‟operatore. 2.2 Gestione Interrogazioni Generiche (G5) L‟ elaborato “G5” consente la creazione e l‟ archiviazione di interrogazioni personalizzate ad uso dell‟operatore. Le interrogazioni, possono essere ricercate e richiamate attraverso l‟apposito pulsante oppure con il tasto funzione F2. Dalla ricerca è possibile selezionare un‟interrogazione per eseguirla “1”, modificarla “2”, copiarla “3”, cancellarla “4” o semplicemente visualizzarla per interrogare le istruzione SQL impostate “5”. Utilizzando il tasto F6 è possibile creare una interrogazione nuova identificabile da un “Codice” ed una “Descrizione” Figura 2.2-I (RFQX04FM/W11) Paragrafo-Pagina di Pagine 2-11 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista ed una “Sezione” facoltativa, che in realtà molto utile per raggruppare per categoria le interrogazioni e/o racchiudere tutte le interrogazioni per utente o area aziendale a cui sono destinate. La “Sezione” è utilizzabile anche per bloccare l‟accesso ad un solo gruppo di interrogazioni per uno o più utenti impedendo di vedere tutto, agendo attraverso la manutenzione attributo oggetti del video, fissando il campo T2CTL.VVXIGSEZ con il nome della “Sessione” desiderata come valore forzato e protetto. Figura 2.2-II (RGBMS4FM/T2CTL) Il “Tipo” di Query ne indica la caratterizza ed il tipo di utilizzo. Le “Query Embedded” sono riservate a EDM e sono utilizzate da alcuni elaborati, esempio ZR, come supporto per velocizzare le interrogazioni, le “Query Custom” hanno il medesimo scopo, in più riportano delle specifiche di personalizzazione realizzate per soddisfare le esigenze dell‟Utente o/o dell‟Azienda e possono essere selezionate dall‟operatore in alternativa alle “Embedded” al momento dell‟interrogazione (per ora solo da ZR , tasto “F11 – Scelta SQL”). La “Query Interattiva” è l‟interrogazione tradizionale, eseguita interattivamente, il cui risultato viene mostrato direttamente a Video. Può essere eseguita direttamente da G5 o richiamata come ultimo step di una procedura GK per visualizzare il risultato finale ottenuto. Il codice “Applicazione” viene indicato per indicare l‟ambiente di lavoro sul quale lavora la query. “Record Standard” è un‟opzione solo ad uso EDM e consente di creare delle interrogazioni che verranno rilasciate a tutti i clienti attraverso gli aggiornamenti periodici di WEBGATE. Il “Numero Query” e la relativa “Descrizione” servono per organizzare delle ulteriori interrogazioni G5, visibili secondo la modalità TAB, che si alimentano automaticamente dai dati risultato della query principale dall‟apposita icona di selezione della riga. Di seguito un esempio dell‟effetto visivo che si può ottenere. Le query TAB vengono popolate tutte contemporaneamente in modo da velocizzarne la consultazione e quindi non è necessario prima selezionarla e poi scegliere il soggetto dalla Query Principale. Figura 2.2-III (RFQX07FM/T2T0) Attraverso l‟editor SQL è possibile inserire la/e istruzioni SQL che comporranno l‟interrogazione e definirne le “Specifiche” (si rimanda ai capitoli specifici del manuale). Riguardo le “Specifiche di Visualizzazione” dell‟interrogazione SQL è opportuno però precisare bene la modalità con cui devono essere codificati i parametri che la Query Base passa alle TAB secondarie. Paragrafo-Pagina di Pagine 2-12 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.2-IV (RFQM08FM/T2CTL) Qui vediamo un esempio. I parametri previsti per sono 9 in tutto e si chiamano da T2T0.SQXP1 a T2T0.SQXP9 dove T2T0 é il nome del formato video della Query Base e SQXP1 - P9 è il nome del parametro che si associa al campo di Data Base. Questi parametri non possono superare al massimo i 20 caratteri. Con il video “Gestione Istruzione” del “G5”, il tasto “F2 – Custom e Default” è possibile richiamare una finestra attraverso la quale “Personalizzare “ l‟utilizzo dell‟interrogazione. Figura 2.2-V (RFQM04FM/W12) In “Customizzazione” attivando opportunamente i campi è possibile vincolare e limitare l‟utilizzo della Query. Solo per Query Custom ed Embedded (ad oggi sono quelle utilizzate da “ZR”), in “Parzializzazione File/Formato” si deve indicare il file video ed il formato al quale si aggancerà l‟istruzione SQL in oggetto. In “Parzializzazione” è possibile impostare i valori assunti per difetto dai campi ed in genere delle variabili utilizzate nella interrogazione. In “Visualizzazione” è possibile per le query tipo “Multitab” definire la posizione iniziale del gruppo consentendo così a seconda della natura dell‟interrogazione, di riservare più o meno spazio alla Query Principale. 2.2.1 Default Parzializzazione Interrogazione Consente di impostare i valori assunti per difetto dai campi di parzializzazione ed in genere delle variabili utilizzate nella interrogazione. Il singolo valore è composto da “Nome Variabile” e “Valore” della Variabile separati da un “=” uguale). Le variabili vanno separate tra di loro da “;” un punto e virgola. Per i campi data, è disponibile una speciale sintassi come quella utilizzata per i calcoli sulle date nella “WUF_DCA” (la documentazione è disponibile in linea richiamando “Help Navigator”) Paragrafo-Pagina di Pagine 2-13 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista CODARF=ART01;CODART=ART02; ecc (Esempio di Variabili passate all‟istruzione SQL) Select XCODAR "P5_Codice", XDSART "Descrizione Articolo", XCLASS, WUF_DEC('001','CLASS',XCLASS) "Descrizione Classe", XDISEG, 'PARAR' "P1_File", '*BLNK' "P2_Id", '*BLNK' "P3_Flaga", '*BLNK' "P4_Codic" FROM PARAR WHERE XCODAR BETWEEN '%('CODARF','*DICT:Da Codice Articolo','001','CODAR')' AND '%('CODART','*DICT:A Codice Articolo','001','CODAR')' DATADA=*STRYEAR -12 *M (Inizio anno precedente) DATADA=*TODAY -30 *D (30 giorni prima di oggi) DATADAC=*STRYEAR *NONE;DATAALC=*ENDYEAR *NONE;DATADAP=*STRYEAR -12 *M;DATAALP=*ENDYEAR -12 *M (Calcola due intervalli di date con anno in corso e anno precedente) 2.2.2 Funzioni di Parzializzazione Sintassi dell’istruzione con l’utilizzo di campi SENZA dizionario (BM) %(„Nome Variabile‟,„Testo Prompt‟,‟Lunghezza‟,‟Tipo‟,‟Confronto‟) …dove : Nome Variabile = nome max lungo 9 posizioni (senza prefisso %) Testo Prompt = E‟ il testo che descrive la variabile Lunghezza = Lunghezza complessiva del campo Tipo = A - Alfa; N - Numero; D - Data (per editare e rovesciare su prompt). Confronto = Utilizzato per facilitare la immissione ed il controllo delle variabili immesse a video. Valori disponibili sono : 1. Bianco o non specificato, non esegue controlli o automatismi. 2. >= Limite Inferiore (anche valore inferiore between) 3. <= Limite Superiore (anche valore superiore between) 4. LIKE utilizzato con LIKE Esempio SELECT XCODIP , SUM(XMLAVN * %COR1/%COR2) FROM OPERA WHERE XDATAB >= %('DATA1','Dalla Data','8','D','>=') AND XDATAB < %('DATA2','Alla Data','8','D','<=') GROUP BY XCODIP Sintassi dell’istruzione con l’utilizzo di campi CON dizionario (BM) %(„Nome Variabile‟,‟*DICT‟,‟Codice Applicazione‟,‟Nome Campo in Dizionario‟, ‟Confronto‟) dove : Nome Variabile = nome max lungo 9 posizioni (senza prefisso %) *DICT oppure *DICT:Testo = Costante che indica l‟uso del dizionario Codice Applicazione = E‟ il codice della applicazione con cui è definito il campo del dizionario Nome Campo in Dizionario = E‟ il nome del campo definito nel dizionario Confronto = Utilizzato per facilitare la immissione ed il controllo delle variabili immesse a video. Valori disponibili come indicato precedentemente. Paragrafo-Pagina di Pagine 2-14 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Esempio 1 (usa testo prelevato da Dizionario) SELECT XCODIP , SUM(XMLAVN) FROM OPERA WHERE XCODIP = '%('DIPEND','*DICT','001','CODIP')' GROUP BY XCODIP Esempio 2 (Usa testo definito DOPO *DICT:) SELECT XCODIP , SUM(XMLAVN) FROM OPERA WHERE XCODIP = '%('DIPEND','*DICT:Da Cod.Dipen.','001','CODIP')' GROUP BY XCODIP 2.2.3 Comando esecuzione interrogazioni EXEEG5 Attraverso il comando EXEEG5 è possibile schedulare in AS400 oppure richiamare in HX l‟esecuzione di un‟ Interrogazione G5. Il comando prevede possibilità di passare una variabile da 500 caratteri contenente le variabili dell‟interrogazione codificate secondo la sintassi descritta nel paragrafo “Default Parzializzazione Interrogazione”. EXEEG5 IGUNI(Nome Interrogazione) NUMAZ(Azienda) “Facoltativo” IGPMF(Variabili dell‟interrogazione) “Possono essere passate anche variabili calcolate” Esempio : EXEEG5 IGUNI(INTERROGAZIONE) NUMAZ(002) IGPMF('CODCLI=000123;CODART=ART01;DATABOLLA=*TODAY -30 *D') 2.3 Manutenzione Procedure e Funzioni SQL (Stored Procedures e UDF) (HU) Sull‟argomento, è bene vedere anche l‟ Help “DB2 for i- SQL Stored Procedure” La/e “Stored Procedure” non sono altro che dei PROGRAMMI a tutti gli effetti richiamabili tramite una SQL CALL Statement. Consentono l‟utilizzo al loro interno di parametri di Input passati per l‟esecuzione delle istruzioni SQL e di Output estratti come risultato di SQL. Rispettano i modelli di sicurezza dei dati IBM-i garantendo il controllo dell‟accesso ai dati e la loro integrità. Con un‟unica richiesta consentono di avviare transazioni multiple e processi e sono anche utili in quanto sono facilmente trasportabili quando si lavora in ambienti distribuiti. Paragrafo-Pagina di Pagine 2-15 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.3-I (RDBS01FM/T2CTL) Entrando nell‟elaborato, vengono mostrate tutte le procedure già inserite. Il simbolo di spunta vuole indicare le procedure standard rilasciate da EDM aggiornabili solo caricando le nuove versioni di WEBGATE che vengono rilasciate. Con l‟opzione “3” è possibile copiarne una esistente oppure con il tasto funzione F6 crearne una nuova. Figura 2.3-II (RDBS01FM/W1) Inseriamo la descrizione della procedura, che ci consentirà di riconoscerla, dei commenti che ne spieghino le caratteristiche ed incominceremo ad inserire gli Statement della procedura. I campi attributo, sono gestiti interamente dal programma ed indica Utente, Data e Ora dell‟ultimo salvataggio della procedura, mentre il parametro “Standard” gestibile solo da EDM sta ad indicare se la procedura verrà o meno rilasciata con gli aggiornamenti WEBGATE e sarà resa disponibile a tutti. “Sintax to Copy” è utile quando si riprendono istruzioni SQL da altri ambienti e si vuole fare una veloce verifica della sitassi per utilizzarla corretta all0interno della nostra procedura. “Istruzioni di DROP” è utile prima di CREARE nuovamente la procedura, cancellare tutti i vecchi riferimenti e questo lo facciamo con questa istruzione DROP PROCEDURE RTKA14. Cerchiamo ora di vedere come sono strutturate e scritte queste procedure. Paragrafo-Pagina di Pagine 2-16 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista CREATE PROCEDURE RTKA14 (IN UNID CHAR(18)) Il programma inizia con questa istruzione, dove definiamo il Nome della procedura “RTKA14” (non più lungo di 10 caratteri) e la lista dei parametri in IN_put , OUT_put, INOUT input/output definiti attraverso il nome dalla variabile “UNID” la sua natura e dimensione “CHAR(18)” LANGUAGE SQL Dichiara il linguaggio utilizzato. BEGIN Definisce l‟inizio della prodedura DECLARE SQLSTATE CHAR(5); DECLARE SQLCODE INTEGER; La dichiarazione di queste due variabili “convenzionali” ci consente all‟interno della procedura di poter controllare eventuali condizioni o errori durante l‟esecuzione di uno statement SQL. DB2 provvede automaticamente ad aggiornare il valore delle due variabili dopo l‟esecuzione di ogni statement DECLARE EOF_REACHED CONDITION FOR SQLSTATE '02000'; Questa forma di definizione consente di associare ad una condizione “SQLSTATE = 02000” un nome da utilizzare all‟interno della procedura che ci può facilitare nella stesura del programma stesso e ci può renderlo maggiormente comprensibile quando andremo a riprenderlo per una manutenzione. Per chi programma in linguaggio COBOL è l‟equivalente dei livelli 88. DECLARE V_XKEY01 CHAR(20); Alfanumerico da 20 caratteri DECLARE V_XXDALL DECIMAL(8, 0); Numerico da 8 interi e 0 decimali Questo è il modo per definire le variabili che si utilizzeranno all‟interno della procedura. Queste variabili possono anche essere inizializzate al caricamento iniziale del programma codificando il valore che vogliamo attribuirgli. DECLARE BREAK_LOOP INT DEFAULT 0; La variabile viene caricata inizialmente con il valore Zero. -- Questa procedura controlla l'usura di Attrezzature Numerate……………. /* Questa procedura controlla l'usura di Attrezzature Numerate…………….*/ Iniziando la riga con due caratteri “meno” oppure racchiudendo il testo all‟interno di “/* che facilitano la documentazione della procedura. */” è possibile inserire commenti -- Cursor declaration for EACS structure DECLARE C1 CURSOR FOR SELECT I.XUNIDE, T.XKEY01, T.XKEY02, T.XKEY03, T.XKEY04, T.XKEY05, T.XKEY06, T.XNMFLI, I.XXDALL, I.XXOALL FROM EACSI I INNER JOIN EACST T ON T.XUNIDE=I.XUNIDE WHERE I.XUNIDE=UNID AND (T.XNMFLI='ATNUM' OR T.XNMFLI='PACAT') FOR READ ONLY; -- Handler declaration for EOF condition detected DECLARE CONTINUE HANDLER FOR EOF_REACHED SET BREAK_LOOP = 1; OPEN C1; READ_LOOP: Questa è una TAG del programma LOOP FETCH FROM C1 INTO V_XUNIDE, V_XKEY01, V_XKEY02, V_XKEY03, V_XKEY04, V_XKEY05, V_XKEY06, V_XNMFLI, V_XXDALL, V_XXOALL; IF BREAK_LOOP = 1 THEN LEAVE READ_LOOP; ELSE ………………………………… END LOOP; CLOSE C1; END; Nello stralcio precedente vediamo un Declare Cursor sul Data Base ed un Loop controllato di lettura. Da notare l‟istruzione “FOR READ ONLY” nella SELECT ad indicare l‟accesso in sola lettura dei dati, consigliata per le particolari performance che si ottengono nell‟accesso al data base. Attraverso la “DECLARE CONTINUE ….” Viene controllato SQLSTATE per determinare la fine lettura ed attivare la condizione che controllata con IF fa uscire dal Loop di lettura “LEAVE READ_LOOP”. Paragrafo-Pagina di Pagine 2-17 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista SET V_ALLARM_ON = 0; Attraverso l‟istruzione SET è possibile impostare il valore alla variabile. CALL RIQIAT(V_RATMATRA, V_RATDACER, 'N', ' ', V_RATVALOR, V_RATESITO); Con il commando CALL è possibile richiamare qualsiasi programma API Standard o altri applicativi. CASE V_PCXATUTI WHEN 'a' THEN SET V_RAUXFATT = 'S'; WHEN 'A' THEN SET V_RAUXFATT = 'S'; WHEN 'e' THEN SET V_RAUXFLAV = 'S'; SET V_RAUXFATT = 'S'; WHEN 'E' THEN SET V_RAUXFLAV = 'S'; SET V_RAUXFATT = 'S'; WHEN 'l' THEN SET V_RAUXFLAV = 'S'; END CASE; Qui mostriamo un caso di condizionamento attraverso l‟istruzione CASE. SUCCESS: RETURN 0; INS_FAILURE: RETURN 900; UPD_FAILURE: RETURN 901; Questo è un‟ esempio di uscita/e dal programma restituendo un codice di ritorno opportunamente valorizzato. Ultimata la stesura della Procedura si può salvare e compilare con F1 e creare l‟oggetto eseguibile con F2. 2.3.1 Debug procedure Eseguire una copia della procedura, per poterla modificare e togliere l’attributo “Standard” ed inserire la vista di debug. Procedura Standard Figura 2.3-III (RDBS01FM/W1) Paragrafo-Pagina di Pagine 2-18 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista SET OPTION DBGVIEW=*SOURCE SP:BEGIN Procedura modificata per il Debug Figura 2.3-IV (RDBS01FM/W1) Utilizzando l’opzione “X” si crea la procedura con viste di debug (Viene sostituito l’oggetto dalla libreria QGPL) Figura 2.3-V (RDBS01FM/T2CTL) Attivare il debug con STRDBG PGM(QGPL/RTKA14) Per per vedere durante il Debug il valore delle variabili utilizzare questa sintassi : Variabile numerica EVAL SP.V_ALLARM_ON Variabile alfanumerica EVAL *SP.V_RATESITO:S Paragrafo-Pagina di Pagine 2-19 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista (si usufruisce del prefisso indicato prima di istruzione BEGIN per richiamare la variabile del programma) Ultimato il debug e corretta la procedura, si crea nuovamente la procedura dopo aver tolto le istruzioni per generare le viste di debug. (Si utilizza sempre l’opzione “X”) 2.4 Gestione programmi EXIT (HX) Figura 2.4-I (RCKRM1FM/T2CTL) I programmi EXIT sono “gruppi di comandi condizionati” eseguiti se considerati eleggibili dalle verifiche descritte di seguito, verifiche eseguite ogni volta che il controllo passa dal client webgate400 al programma RPG. Ad ogni ENTER o tasto di funzione premuto (F1…..F24), vengono eseguiti i seguenti due controlli : 1. 2. Verifica se esistono programmi abilitati per : (A) o il file video corrente. o il formato record corrente o la company corrente o la lingua corrente o l‟utente corrente o il gruppo di utenti correnti Verifica inoltre se è stato premuto uno dei tasti di funzione previsti per quel programma. (B) Le informazioni sulla eleggibilità del programma EXIT (condizioni di esecuzione), sono aggiornabili con il tasto di funzione F9 oppure con la opzione X Paragrafo-Pagina di Pagine 2-20 di 43 . Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.4-II (RCKRM2FM/W1) Figura 2.4-III (RCKRM1FM/W1) Quando il programma risulta elegibile, vengono eseguite le seguenti fasi : 1. Reperimento delle variabili di tutti i formati record 2. Esecuzione di tutti i comandi contenuti nel programma non sospesi … visibili a video (o per cui è stata effettuata una operazione write) … nelle sequenza indicata (4) dall‟apposito campo fino all‟ultimo della lista o fino al comando contrassegnato con il flag “Ultimo se valido” (5), svolgendo le seguenti fasi : Paragrafo-Pagina di Pagine 2-21 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista o Sostituzione delle variabili contenute nella istruzione SQL di validazione (1) (a questo punto della elaborazione sono presenti le variabili del video oppure se programma chiamato da API RCKR02, le variabili passate con i parametri VVAR E NVAR). o Esecuzione dell‟istruzione sql di validazione e reperimento delle variabili. (tutte le colonne del primo record). (1) Se vera (la istruzione restituisce almeno 1 record), o Esecuzione Istruzione SQL Reperimento Variabili (F2) e reperimento delle variabili. (tutte le colonne del primo record). o Visualizzazione dell‟eventuale prompt (2). o Sostituzione delle variabili contenute nel comando. (a questo punto sono disponibili : le variabili del video/parametri le variabili reperite dalla istruzione SQL di validazione (1). Le variabili reperite dall‟”istruzione SQL di reperimento variabili”. o Esecuzione della formule 1 e 2 o Esecuzione del comando. (3) Se falsa o risposta a prompt non consente prosecuzione legge prossimo comando. “Sospeso” consente di non cancellare la EXIT ma di sospenderne l‟esecuzione. “Ultimo se valido” (5) consente di interrompere la catena dei programmi di controllo e di uscire, utile quando si devono effettuare controlli in cascata le cui condizioni possono essere considerate come in “*OR”. Nell‟istruzione di SELECT vediamo l‟utilizzo della variabile %T2CTL. Questa è la sintassi da utilizzate per riferirsi alla “table” che contiene l‟intero formato video T2CTL come pure potrebbe essere %T1 quando ci si vuole riferire direttamente ad una finestra video normale. Non è necessario definire “Nome Video” e/o “Libreria” per esplicito, è il programma che recepisce queste variabili e automaticamente le associa alle risorse fisiche corrette nelle librerie dell‟ambiente attivo al momento. L‟istruzione SQL di validazione, può anche essere di tipo composita, ossia il risultato di più SQL concatenate in cascata tra loro. Queste istruzioni SQL vanno separate dal carattere “;”. Sono possibili due modi diversi per codificare il messaggio da esporre all‟operatore: codificando una chiamata al programma API “RIQIH2” nell‟apposito campo “Comando da eseguire” , oppure indicando in “Prompt Conferma se SQL valido (2)” un messaggio “USER” codificato in un MSGFile Custom (esempio USRMSG001) con l‟elaborato “EP”. Nella composizione del testo è possibile inserire variabili reperite con il comando SQL e/o disponibili dal lavoro HX. I campi da compilare nel caso di messaggio codificato sono : MSG File. Nome del file Messaggi. Se non esiste si può creare per esempio con il comando CRTMSGF MSGF(WGLANGITA/USRMSG001) TEXT('Messaggi Utente') NB Si consiglia di creare il file messaggi nella libreria già contenente i messaggi della specifica lingua (nel caso in esempio WGLANGITA) in modo da rendere possibile la gestione multilingua anche delle customizzazioni. Nella codifica di questi USRMSG potreste seguire le logiche già adottate da EDM per i suoi EDMMSG distinguendo con 001 i messaggi dedicati allo Spi, 003 per quelli del PSG, 006 per quelli di Dblink e 020 per quelli della GeA. ATTENZIONE : I files messaggi TXTMSG… sono rigorosamente riservati ai soli TEST di EDM. ID. Id Messaggio. Se non esiste, creare con il comando Opzioni. Opzioni disponibili. WRKMSGF MSGF(WGLANGITA/USRMSG001) oppure con l‟elaborato EP Possono essere definiti più valori contemporaneamente Possono essere definiti valori maiuscoli e minuscoli per scegliere su quale pulsante sarà posizionato il focus. I Valori possibili sono i seguenti : Se è prevista la opzione di uscita “C” (Esci) e questa viene scelta, il controllo torna al video SENZA passare dal programma RPG. Se è prevista la opzione di uscita “I” (Ignora) e questa viene scelta, il controllo passa al prossimo comando saltando quello corrente. Se è prevista la opzione di uscita “G” (Go) e questa viene scelta, il comando viene eseguito. Se è prevista la opzione di uscita “R” (Retry) e questa viene scelta, il comando di validazione viene nuovamente eseguito. Esempio : se il campo Opzioni è valorizzato con 'IGR ' il programma renderà disponibili solo 3 delle risposte disponibili; il cursore si posizionerà sulla risposta Ignora. Paragrafo-Pagina di Pagine 2-22 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista se il campo Opzioni è valorizzato con con 'iRc ' il programma renderà disponibili solo 3 delle risposte disponibili; il cursore si posizionerà sulla risposta Riprova. Riportiamo uno stralcio della documentazione per l‟utilizzo dell‟ API – RIQIH2 per la gestione messaggi. CALL PGM(RIQIH2) PARM(„Testo del messaggio‟ „IGRC‟ „Titolo della Finestra‟ „ „) #==================================================================================# ! P A R A M E T R I ! +----------+----+--+---------------------------------+-------------------------+---+ !TXTMSG ! 250! !Messaggio Finestra oppure ! !DFTRIS ! 4! !Risposte !A Scelta fra I, G, R e C.! I ! !TITLE ! 30! !RISPOS ! 1! Visualizzate ! I ! !Titolo Finestra ! ! I ! !Risposta Fornita ! ! O ! +----------+----+--+---------------------------------+-------------------------+---+ Dall‟ interrogazione HX parzializzabile per “Company” , “Lingua” , “Utente” , “Gruppo” per rendere più facile la ricerca, è possibile procedere con il comando di riga “+” per dupplicare integralmente la EXIT attribuendogli una sequenza successiva oppure con il comando “3” dove viene proposta la copia della EXIT consentendone la modifica e l‟attribuzione di una nuova sequenza a nostra discrezione. Con “X” è possibile interrogare le condizioni per cui si attiva la EXIT, modificarle e/o aggiungerne di nuove con il tasto F6. Figura 2.4-IV (RCKRM2FM/T2CTL) NB. Esiste l‟ API “RCKR02” ricercabile con l‟ apposita funzione di menu “EK” che consente di eseguire direttamente da programma, uno o più programmi EXIT qui descritti. NB. Se scelta l‟ opzione “LOG” (5) per ogni Programma eseguito, viene emessa una registrazione nel LOG di AS400 visibile con opzione 10 dai lavori attivi WRKACTJOB, oppure dalle “System Utilities (Strumenti>SystemUtilities>DisplayJobLog)” dell‟applet, contenente le seguenti informazioni : 1. Id Programma 2. Descrizione 3. Sequenza 4. Eventuale Messaggio Emesso 5. Eventuale Risposta Immessa dall‟operatore 6. SQL di validazione 7. SQL reperimento Variabili 8. Comando Eseguito NB. Le variabili reperite, sono utilizzabili anche nel testo del messaggio emesso dal prompt. Paragrafo-Pagina di Pagine 2-23 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista 2.4.1 Schema di funzionamento Client webgate400 Pressione ENTER, F1-F24 da Client webgate400 Scrittura Database Video Controllo EXIT se elegibile : Prompt Programma 1 o Comando 1 o Comando 2 o Comando 3 se elegibile : Programma 2 o Comando 1 o Comando 2 Programma RPG Lettura Database Video. Esecuzione operazioni RPG Paragrafo-Pagina di Pagine 2-24 di 43 Versione 2 del 22/12/2016 Ogni Comando SQL Validazione Prompt (se opzione C torna a Client) SQL Dati Formula 1 Formula 2 Comando/SQL Strumenti di Customizzazione – Manuale Sistemista 2.4.2 Utilizzo delle Formule Dalla “Gestione Comandi di Programmi EXIT – HX” con il tasto “F2-SQL Variabili” è possibile richiamare la funzione che consente di gestire delle due variabili %FOR1 e %FOR2 oggetto di formule di calcolo più o meno complesse. Queste variabili possono poi essere riprese all‟interno delle istruzioni SQL o comando da eseguire quando le condizioni sono VERE. Figura 2.4-V (RCKRM1FM/W3) Nell‟esempio qui riportato attraverso l‟istruzione SQL viene ricavato il campo “Sconto Prezzo Pieno” dal file CLIAD e su questo viene applicato un “-5” attraverso la Formula UNO (Variabile %FOR1). Figura 2.4-VI (RCKRM1FM/W1) Paragrafo-Pagina di Pagine 2-25 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Il valore ottenuto, viene poi ripreso con la variabile “%FOR1” per aggiornare il campo “Sconto 2” del video T1. 2.4.3 Inner Join Figura 2.4-VII (RCKRM1FM/W1) Quando è necessario utilizzare una INNER JOIN per collegare la tabella Video “%T1” con dei data base ponendo delle condizioni tra i campi, è necessario che la variabile proveniente da T1 venga utilizzata come valore di riferimento perché l‟istruzione funzioni correttamente, come evidenziato nell‟esempio qui riportato. 2.4.4 Utilizzo funzioni SUF_ in istruzioni SQL E‟ disponibile una funzione che consente di richiamare una “facility” che consente un inserimento guidato di funzioni SUF_ ed è richiamabile dall‟editor SQL con il pulsante “ Wizard”. Figura 2.4-VIII (RFQM04FM/W11) Dopo aver selezionato la funzione con un doppio click del mouse, viene mostrata una maschera in cui si possono inserire i parametri da utilizzare. Con un Enter il programma compila il comando ed evidenzia parametri non riconosciuti. Si conferma con F1 per ritornare all‟istruzione SQL di HX. Paragrafo-Pagina di Pagine 2-26 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.4-IX (RFQM04FM/W11) 2.4.5 Variabili disponibili Il programma che gestisce le EXIT, mette a disposizione una serie di variabili che possono essere richiamate all‟interno delle istruzioni SQL, queste sono : Variabile Descrizione DSYUSER Utente DSYGRPID Gruppo DSYCOMPID Company DSYLANGID Lingua DSYJOBNR JOB Number DSYAPPLI Applicazione DSYIND24 Schiera F1-24 1=ON DSYK18 ID Univoco JOB Webgate DSYP18 ID Univoco Livello di chiamata Note ESEMPIO : Si vuole vincolare l‟utilizzo di un campo a video di “0I-Anagrafica GeA” ad un solo operatore. SELECT * FROM %JSTDABDA T1 LEFT OUTER JOIN JFANA00F T2 ON T1.VANTAN=T2.JANTAN AND T1.VANCAN=T2.JANCAN AND T2.JANSOC='EDM' WHERE T1.VANFAC='1' AND T2.JANFAC<>'1' AND '%DSYUSER'<>'ROBERTO' Se l‟operatore non è “ROBERTO” viene emesso un messaggio a video e viene impedita la manutenzione del campo JANFAC. 2.5 Manutenzione File Messaggi (EP) Una volta creati il/i file USGMSG nelle opportune librerie, è possibile inserire i messaggi personalizzati che utilizzeremo nelle nostre procedure. Con F6 aggiungiamo un nuovo messaggio. Figura 2.5-I (WGEDTMSGD/T2CTL) Paragrafo-Pagina di Pagine 2-27 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Con F6 aggiungiamo un nuovo messaggio. Il codice del messaggio è un campo composto formato dai primi tre caratteri che ne identificano il GRUPPO e dai successivi quattro caratteri che indicano il NUMERO progressivo del messaggio. Lo standard adottato da EDM utilizza il gruppo per identificare il Modulo Applicativo di appartenenza del messaggio (alfanumerico) e i successivi quattro caratteri per il progressivo dei messaggi (numerico). Figura 2.5-II (WGEDTMSGD/T1) Si compila semplicemente indicando il testo del messaggio e confermando con F1. Ignorate la tabella di destra relativa alla lista di elementi, ad oggi è solo uso interno EDM per la programmazione. E‟ possibile tenere traccia delle risposte fornite ai Messaggi visualizzati tramite Window Standard Messaggi. La Funzionalità può essere attivata per i messaggi codificati in File Messaggi aggiungendo la costante „(%LOG)‟. Costante Attivazione LOG I dati del Messaggio e la Risposta selezionata sono rintracciabili attraverso la Visualizzazione LOG. Per la ricerca del Nr.Messaggio trovato nel LOG si può utilizzare in EP la funzione di scansione oppure, Paragrafo-Pagina di Pagine 2-28 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Si può personalizzare la Finestra Messaggi per visualizzare anche i campi contenenti i Riferimenti del Messaggio (Nome File Messaggi VVXMSGNA e ID Messaggio VVXMSGID), campi che vengono compilati direttamente dal programma quando reperisce il testo del Messaggio. Riferimenti File Messaggi e ID Messaggio 2.6 Fast Query (Vedi manuale specifico) Per questo argomento, fare riferimento al “Manuale Utente” e “Manuale Sistemista – Fast Query” 2.7 Aggiunta Colonne SubFile con Webgate400 Solo se dal profilo Utente “RunTime WEBGATE” si è autorizzati a modificare i formati video e si sta utilizzando la modalità TABLE di WEBGATE è possibile richiamare la funzione di aggiunta colonne del “Menù” dell‟applet grafica selezionando “Strumenti” + “Personalizzazioni” + “Aggiunta colonne”. E‟ necessario essere posizionati sulla finestra aperta su cui si vuole aggiungere la/e colonne. Verrà presentata una prima finestra attraverso la quale andremo a definire dove e come applicare la personalizzazione che andremo a realizzare che sicuramente sarà per “Formato” come livello minimo e per “Sistema Informativo” e/o “Utente” oppure “Gruppo” come specializzazione. La selezione va fatta premendo gli appositi pulsanti che varieranno tonalità di grigio quando selezionati. Si procede poi con “Conferma”. Qui di seguito mostriamo un esempio della videata che verrà mostrata, in questo caso con già dei record di personalizzazione inseriti, riferiti all‟elaborato ZR “Interrogazione documenti”. Paragrafo-Pagina di Pagine 2-29 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.7-I (WGDSAHAND/T1CTL) F6 per aggiungere una nuova colonna. Figura 2.7-II (WGDSAHAND/GENERAL) Va indicato un nome di “Campo”, la “Dimensione”, il numero di “Decimali” se il formato del campo è numerico, il “Tipo campo” e “Intestazione” che assumerà la colonna aggiunta. Sono disponibili poi dei bottoni, secondo le modalità che vorremo utilizzare per valorizzare il campo, “Exit Program” , “Formula Matematica” , o “Istruzione SQL”. L‟esempio seguente è di un campo con definito che ha un istruzione SQL. Figura 2.7-III (WGDSAHAND/GENERAL) Paragrafo-Pagina di Pagine 2-30 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista 2.7.1 Valorizzazione del campo tramite espressioni SQL E‟ possibile attivare una funzione di valorizzazione dei campi aggiunti tramite istruzioni SQL. La convenzione di scrittura prevede la possibilità di parametrizzare la query includendo campi presenti a video utilizzando la forma &nome_formato.nome_campo. Ove venga omesso il nome_formato si assume che il campo a cui ci si vuole riferire appartenga al formato corrente su cui stiamo aggiungendo la/e colonne. Esempio : SELECT XPREZE FROM CLBAS WHERE XKKKKK = &XKKKKK Equivale anche a ……. SELECT XPREZE FROM CLBAS WHERE XKKKKK = &T21SFL.XKKKKK Figura 2.7-IV (WGDSAHAND/GENERAL) Qualora il campo video di riferimento sia espresso in formato alfanumerico, va indicato nell‟istruzione chiuso tra apici (apice semplice) es. „&T21SFL.DCODAR‟ Il nome del campo video deve corrispondere al nome visualizzato sul campo della richiesta “Proprietà” sul campo video. La colonna aggiunta può essere anche composta da più campi (multipli) del file esposti in blocco. In questo caso SELECT potrebbe essere per esempio : la SELECT XZONA1, XAGEN1, XAGEN2 FROM CLBAS WHERE XKKKKK=&T21SFL.XKKKKK La colonna aggiunta comprenderà tutti e tre i campi. Questo è sufficiente se abbiamo l‟esigenza di aggiungere una sola colonna, ma se dobbiamo aggiungerne altre, oppure vogliamo tenere i campi separati a differenza dell‟esempio appena descritto, è deleterio per i tempi di risposta nell‟utilizzo dell‟applicazione definire più campi ognuno con una sua SELECT se provengono dallo stesso file, è preferibile risolvere tutto con un‟unica istruzione SQL. A questo punto si può procedere secondo due modalità : Modalità 1: Corrispondenza tra Nome_campo aggiunto e Nome _campo della SELECT. Paragrafo-Pagina di Pagine 2-31 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Definisco il campo con modalità “Master” ossia con una espressione “SELECT” riferita a tutti i campi che voglio esporre. Attraverso l‟espressione SQL “as” associo al campo fisico che estraggo dal file, il campo ( Nome libero ) che utilizzerò poi per definire le ulteriori colonne aggiunte. Nell‟esempio riportato XCOSTR è il campo stesso che sto estraendo nella colonna “Marca” (Master) mentre XCATAL, XNACAD e ESIDI sono campi che finiranno nelle colonne video aggiunte che chiamerò rispettivamente come nome di campo “CATALOGO” , “CAD” e “GIACENZA”. Figura 2.7-V (WGDSAHAND/WGGENERAL) Definisco poi gli altri campi (“slave”), indicandoli con il nome dei campi presi dalla espressione di SELECT assegnata al “Master” , che come dall‟ esempio saranno “CATALOGO” , “CAD” e “GIACENZA”. Quindi, sempre con la stessa modalità precedentemente descritta, aggiungo una nuova colonna indicando nel “Campo” il nome campo “as” dichiarato nella SELECT (es. CATALOGO) corrispondente al campo di data base che voglio esporre, definisco la “Intestazione” della colonna, la “Dimensione” ed il “Tipo campo” e nella espressione SELECT scriverò il valore convenzionale *SQLF. Figura 2.7-VI (WGDSAHAND/GENERAL) Dopo l‟esecuzione della SELECT legata a “MARCA” verranno valorizzati i campi “CATALOGO” , “CAD” e “GIACENZA”. Paragrafo-Pagina di Pagine 2-32 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Per risolvere eventuali omonimie si può usare questo metodo di codifica dell‟istruzione SQL : SELECT F1 AS “C1”, SUBSTR(F2, 2, 2) AS “C2”, MAX(F3) AS “C3” FROM FILEX WHERE F4=‟&FMT1.V1‟ Dove F1, F2, F3, F4 sono i campi fisici del database FILEX , C1, C2, C3 il nome dei rispettivi campi delle tre colonne aggiunte e V1 è il campo a video di confronto. Modalità 2: Utilizzo dell‟espressione SELECT per creare le corrispondenze tra Nomi_Campo. Definisco un campo “Master” al quale assegno l‟ espressione SELECT e poi gli altri campi (“slave”), definendoli con nomi diversi dai campi utilizzati nell‟ espressione di SELECT assegnata al “Master”. Nella espressione SELECT dei campi “slave” scrivo il nome del campo “Master” e il nome del campo di riferimento nella SELECT, separati da due punti. Esempio : Aggiungo il campo “MARCA” (Master) con la seguente espressione SQL Aggiungo il campo “CATALOGO” (“slave”) con l‟ espressione SQL : MARCA:XCATAL Aggiungo il campo “CAD” (“slave”) con l‟ espressione SQL : MARCA:XNACAD Dopo l‟esecuzione della SELECT legata a “MARCA” verranno valorizzati i campi “CATALOGO” , “CAD” e “GIACENZA”. Il primo campo della SELECT è sempre riferito al primo campo “Master” dell‟aggiunta colonne. 2.7.2 Valorizzazione tramite formula E‟ possibile attivare una funzione di valorizzazione dei campi aggiunti tramite formula. La convenzione di scrittura prevede la possibilità di parametrizzare la formula includendo campi diversi presenti a video utilizzando la forma &Nome_Formato_Video.Nome_Campo : (&T21SFL.DNUMER * T21SFL.DPREZE) 2.7.3 Valorizzazione di campi da Programmi esterni Per chi è in grado di programmare, è possibile realizzare un programma richiamabile come EXIT PROGRAM il cui risultato valorizzerà la colonna. La convenzione sui parametri di chiamata è la seguente: Valore del campo Buffer video Descrizione del buffer video puntatore ad una struttura di tipo WGTDBENTRY_CUSTOM_FIELDS_EXITPGM_PARMS_t. Standard in linguaggio „C‟ typedef struct { char WGFLDE[10]; /* Field name . . . . . . . . . */ char WGBUFF[5]; /* Buffer start position. . . . */ char WGFLDB[5]; /* Field length in bytes. . . . */ char WGFLDD[2]; /* Digits . . . . . . . . . . . */ char WGFLDP[2]; /* Decimal positions. . . . . . */ char WGFLDT[1]; /* Field type ADFIMNSWXYEJOG. . */ char WGFTYP[1]; /* Type simple A=char S=zoned . */ char WGCSID[5]; /* CSSID */ } WGTDBENTRY_SIMPLE_FIELD_DESCRIPTION_t; Paragrafo-Pagina di Pagine 2-33 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista typedef struct { char WGNOFE[5]; /* Total Number of Entries */ char WGESIZ[5]; /* Size of each entries */ char WGLDIX[5]; /* Index of target field */ char WGOFST[5]; /* Offset from start of this struct to the first element of the list */ WGTDBENTRY_SIMPLE_FIELD_DESCRIPTION_t sfdList[1]; /* Simple field description List */ } WGTDBENTRY_CUSTOM_FIELDS_EXITPGM_PARMS_t; Standard in linguaggio RPG DS WGNOFE S 50 WGESIZ S 50 WGLDIX S 50 WGOFST S 50 WGFLDE A 10 /* Field name . . . . . . . . . */ WGBUFF S 5 /* Buffer start position. . . . */ WGFLDB S 5 /* Field length in bytes. . . . */ WGFLDD S 2 /* Digits . . . . . . . . . . . */ WGFLDP S 2 /* Decimal positions. . . . . . */ WGFLDT A 1 /* Field type ADFIMNSWXYEJOG. . */ WGFTYP A 1 /* Type simple A=char S=zoned . */ WGCSID S 5 /* CSSID */ DS 2.7.4 Trattamento dei campi UNICODE (tipo G) I campi di tipo G supportati sono quelli che contengono dati in UNICODE. Questi dati vengono memorizzati nelle tabelle di transito in formato UTF-EBCDIC, per ragioni di efficienza nella fase di costruzione e di esecuzione delle query, che quindi vengono trattate sempre e comunque nel CCSID 037. La particolare caratteristica di codifica di UTF-EBCDIC consente di mantenere l‟ordine alfabetico utilizzando una sort sequenze apposita. 2.7.5 Aggiunta di una colonna LINK e/o Immagine Tra la possibilità di tipi di campi da poter utilizzare nell‟aggiunta colonna, è possibile inserire campi “Link” che consentono di agganciare un allegato DBLink attraverso il suo percorso, oppure dei campi “Immagine” che vengono direttamente esposte a video come potrebbero essere delle fotografie o disegni di articoli. Figura 2.7-VII (WGDSAHAND/GENERAL) Paragrafo-Pagina di Pagine 2-34 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Questi campi devono essere definiti con queste caratteristiche : Deve essere un campo alfanumerico Hidden sufficientemente grande da contenere il percorso dell‟allegato. Nel riquadro intitolato “Link” si definisce il nome del campo; è un campo aggiunto a tutti gli effetti che non può essere gestito singolarmente. Se si definisce un campo di tipo “LINK” che attraverso un‟icona richiama un documento DBLINK si deve definire il codice, la descrizione e le dimensioni dell‟icona che è associata al “Link” dell‟allegato. Se si definisce un campo di tipo “IMMAGINE” e quindi il valore della colonna aggiunta è il percorso di un‟immagine, la si definisce all‟interno del riquadro intitolato “Immagine” indicandone la dimensione in Altezza e Larghezza A seguire riportiamo un‟ esempio del video con i campi delle colonne aggiunte con “Link Allegato” e “Immagine” e di una istruzione SQL per ricavare il percorso da DBLINK per l‟immagine e/o per il documento allegato. select XPALNK from linhe as a inner join links b on a.xkeyun=b.xkeyun and a.xflnam='PARAR' and a.xflk01='*BLNK' and a.xflk02='*BLNK' and a.xflk03='*BLNK' and a.xflk04='&t21sfl.VVCODAR' and b.xclsdo='ST' Per rendere più semplice le istruzioni SQL che rintracciano documenti DBLINK sono disponibili anche delle nuove UDF la WUF_PAL che rende il percorso dell‟allegato Dblink avendo come dato XKEYUN e WUF_PAH che rende il percorso dell‟allegato Dblink avendo gli estremi del record di categorizzazione (chiave di LINHE). WUF_PAL(XKEYUN,XTPARE) Parametro Formato Significato XKEYUN Alfanumerico Id Univoco Allegato XTPARE Alfanumerico Tipo Parametro Reso Valori Disponibili „P‟ Assunto per difetto = Percorso documento Pubblico (se esiste PDF o altro) „E‟ = Percorso Oggetto Editabile. Esempio dove viene reso il percorso Pubblico Select XCODAR, XCOCLI, WUF_PAL(XKEYUN,’P’) from OPERA WUF_PAH(XFLNAM,XFLK01,XFLK02,XFLK03,XFLK04,XFLK05,XFLK06,XFLK07,XFLK08,XFLK09,XFLK10,XCLSDO,X LIVME,XTPARE) Paragrafo-Pagina di Pagine 2-35 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Parametro Formato Significato Valori Disponibili XFLNAM Alfanumerico Nome File XFLK01-10 Alfanumerico Valore Campo Chiave 1-10 XCLSDO Alfanumerico Classe Documento (opzionale) XLIVME Alfanumerico Livello di modifica Documento X.XX (ES. 1.01) = Specifica Revisione LAST = Ultima Revisione. DATA lunga 8 rovesciata = Revisione valida alla data indicata. XTPARE Alfanumerico Tipo Parametro Reso „P‟ Assunto per difetto = Percorso documento Pubblico (se esiste PDF o altro) „E‟ = Percorso Oggetto Editabile. Esempio dove viene reso il percorso pubblico del documento allegato al file PARAR all‟articolo indicato dal campo XCODAR per la classe documenti CO. Select XCODAR, XDSART, WUF_PAH(‘PARAR’,XCODAR,’’,’’,’’,’’,’’,’’,’’,’’,’’,’CO’,’LAST’,’P’) from PARAR 2.7.6 Aggiunta di una colonna ICONA Tra la possibilità di tipi di campi da poter utilizzare nell‟aggiunta colonna, è possibile inserire campi “ICONA” informativi che siano da richiamo agli utenti nelle righe di Subfile. Di seguito presentiamo un esempio realizzato sull‟elaborato QC. Il cliente ha chiesto che nell‟esplosione di distinta vengano segnalati i componenti provenienti da Padre Fittizio. Figura 2.7-VIII (WGDSAHAND/GENERAL) La logica di compilazione dei campi è analoga a quanto descritto nel capitolo precedente riguardo alle colonne Link Immagine, cambia soltanto l‟istruzione SQL che viene lanciata. Quella è libera e dipende dalla condizione che si vuole controllare, se vera viene emessa l‟ ICONA, se falsa ( non trovo record ) il campo aggiunto rimane vuoto. Paragrafo-Pagina di Pagine 2-36 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.7-IX (WGDSAHAND/STRSQL) 2.8 Command Services La manutenzione dei “Command Service” viene lanciata dall‟apposita voce di Menù accedendo con il profilo WEBGATECVT. Serve per definire “Comandi” da rendere disponibili sulle videate dell‟ applicazione e le condizioni di ambiente necessarie per la loro esecuzione. Per ambiente si intende l‟insieme delle variabili presenti nel file video sia visibili che invisibili (hidden). Partendo dal presupposto che un comando (per comodità di riferiamo alla chiamata di un programma tradizionalmente eseguita con un codice operativo “CALL” all‟interno di un programma RPG) può essere eseguito se sono disponibili i valori necessari per popolare i suoi parametri obbligatori, in questa videata, sono definiti i metodi per il reperimento di tali valori. E‟ quindi necessario identificare tutte le variabili che contengono valori di cui sopra e questo avviene compilando la sezione “Nomi Campi” considerando le seguenti regole : Un comando diventa eseguibile in un formato video quando : Esistono tutte le variabili indicate (implicitamente necessarie). Il campo soddisfa i requisiti (lunghezza, tipo, posizioni decimali) Il campo, se obbligatorio, non è uguale a zero o bianco. Il campo soddisfa le regole di selezione indicate (vedere help specifico) Paragrafo-Pagina di Pagine 2-37 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.8-I (WGCMDD/EC2) I questo esempio, il comando, sarà disponibile in tutti i display files della libreria CLX che contengono i campi che terminano per FLAGA oppure FLAG ed i campi che terminano per CODIC o COCLI. Entrambe i campi devono non possono essere vuoti (Obbligatorio=Y) ed il primo campo dovrà contenere il valore C. Il comando sarà disponibile cliccando con il tasto destro sul campo o nella command bar e sarà eseguito in modo interattivo su iSeries (Secondo l‟impostazione del parametro MODO). Prima di eseguire il “Command” sarà lanciato il programma RQF00C di preparazione ambiente (facoltativo, indicato solo a titolo di esempio). Il “Comando o Istruzione SQL” può contenere un comando in formato iSeries o in formato PC. Per quanto riguarda l‟iSeries, le modalità di codifica del comando sono le stesse che si andrebbero ad utilizzare se il programma fosse lanciato da una riga comandi , mentre per quanto riguarda i comandi PC, valgono le regole definite per il prompt “ESEGUI” di Windows. I parametri dei comandi eseguiti, possono essere valorizzati dai campi (nominati con i riferimenti %1-%9) specificati nella apposita sezione “Variabili”. Oltre ai comandi, si possono inserire anche istruzioni SQL che generano windows indipendenti, contenenti l‟output dell‟SQL. Esempio di un programma con più parametri Questo comando dispone di 5 parametri. CALL PGM(SAMPLE) PARM(„ „ „%1‟ X'%2F' X„0%3F‟ X'00000000236F' X'00000000236F' „PARM‟) 1. Parametro lasciato in bianco 2. Parametro alfanumerico valorizzato dal primo (%1) campo della lista 3. Parametro numerico lungo 11 (dispari) posizioni valorizzato dal secondo (%2) campo della lista. 4. Parametro numerico lungo 10 (pari) posizioni valorizzato dal terzo campo della lista. 5. Parametro numerico lungo 11 posizioni costante. 6. Parametro numerico lungo 10 posizioni costante. 7. Parametro alfanumerico costante. NB In un parametro numerico, le posizioni passate devono sempre risultare pari (compresa la F finale). Notare lo 0 (zero) aggiunto all‟ inizio del numero o prima della sintassi di sostituzione se la lunghezza del numero è pari. Esempio di un istruzione SQL SQLI://SELECT DIGITS(XTIGES) AS "TIPO", XDEDES AS "DESCRIZIONE", DECIMAL(SUM(XESIDI), 10, 3) AS "GIACENZA" FROM SALPR INNER JOIN DECOD ON DIGITS(XTIGES)=XDECOD WHERE XDECAM='TIGES' AND XANNOC=0 AND XCODAR='%1' GROUP BY XTIGES, XDEDES Esempio di un comando per allegati DBLINKS CALL PGM(RLKM01) PARM(' ' ' ' 'filename' '%1' '%2' '%3' '%4' '*NULL' '*BLNK' ' ' ' ' ' ' ' ') 2.8.1 Comman Services di tipo Drag and Drop Per comprendere il loro utilizzo, fondiamo la descrizione su un esempio applicativo. Si tratta di copiare uno o più legami di distinta base da un assieme ad un altro. Il programma (ADDLEG) che eseguirà questa funzione, dovrà avere 3 parametri (tutti alfanumerici). Paragrafo-Pagina di Pagine 2-38 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista 1. Codice Articolo Padre Legame da cui copiare (%1) 2. Codice Articolo Figlio Legame da cui copiare 3. Codice Articolo Padre su cui copiare il legame (&3) (%2) Dal punto di vista operativo, dovrà essere possibile eseguire una selezione multipla su un subfile che visualizzi una lista di componenti Associati di un Assieme e trascinarla su un altro video che contenga un codice articolo. Questa azione, comporterà la esecuzione del programma che eseguirà la operazione descritta (utilizzando i 3 parametri) e quindi la aggiunta dei componenti “draggati” al codice identificato dalla azione “Drop”. Nell‟ apposito campo, dovrà essere codificato il comando nel modo seguente : CALL PGM(ADDLEG) PARM(‟*DS‟ „%1‟ „%2‟ „&3‟) Esistono due differenze tra questo ed altri tipi di Command Service : Primo parametro = „*DS‟ (lungo 100 posizioni alfanumerico) E‟ un parametro obbligatorio che contiene il numero totale dei comandi in esecuzione ed il numero del comando corrente utili in caso di selezione multipla sulle righe di subfile. Infatti, se l‟utente copierà con una sola operazione 10 componenti da una distinta ad un‟altra, potrebbe essere utile identificare (per esempio) l‟ultima ricorrenza in modo da emettere un prompt per avvisare della buona riuscita della operazione oppure un prompt che consenta la modifica dei coefficienti di impiego dei componenti copiati. La definizione di questo parametro è descritta da una DS da codificare all‟interno di un programma utente. Pos. DA Pos. A 1 3 Numero Totale delle ricorrenze 4 6 Numero della ricorrenza corrente 7 9 Codice azione comune : DLT = Delete EDT = Modifica PRT = Stampa 10 100 Riservato Parametro &3 (Parametro di Drop) Indica il campo che deve essere trovato nella ubicazione di “drop” per rendere eseguibile il comando. Quindi i parametri necessari per abilitare la operazione di “drag” sono identificati dal prefisso % ed i parametri necessari per abilitare la operazione di “drop” sono identificati dal prefisso &. Segue l‟esempio di command service copia/cancella legami distinta base. Figura 2.8-II (WGCMDD/EC2) Paragrafo-Pagina di Pagine 2-39 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Nella sezione tasti e azioni comuni è possibile, per questo tipo di comando, configurare la visualizzazione di una window al momento del trascinamento che visualizza alcune icone (selezionabili) relative ad azioni comuni quali Cancellazione (Delete), Stampa (Print) e Modifica Edit. La selezione di una della Icone, manda in esecuzione il comando valorizzando il parametro *DS nella porzione denominata “codice azione comune” con il valore relativo all‟icona scelta (DLT, EDT, PRT …..). Caratteristiche di esecuzione del comando : I comandi eseguiti durante la operazione di Drag and Drop, sono eseguiti sequenzialmente all‟interno di un unico job. Quindi se il programma oggetto del comando viene chiuso con “return” (obbligatorio) tutte le variabili dello stesso saranno conservate. Gli eventuali comandi “PRE” e “POST” saranno eseguiti una sola volta prima del primo comando (ricorrenza) e dopo l‟ultimo. Il “Tasto Post”, verrà eseguito una sola volta una volta evasa l‟ultima ricorrenza. 2.8.2 Tips E‟ consigliabile, per i comandi che prevedono un prompt di conferma, passare un parametro che consenta omettere lo stesso qualora l‟utente, per questioni di efficienza lo richieda. In questo caso, sarà sufficiente ridefinire nella sezione custom lo stesso comando con tale parametro compilato in modo opportuno. 2.9 Sintassi delle Variabili e Campi Il NOME che si attribuisce ad una variabile, è sempre codificato senza caratteri speciali nel prefisso come ad esempio CLIENTE, PREZZO, IMPORTO, ARTICOLO. Quando ci riferiamo invece al “Valore / Contenuto” della variabile, il NOME va prefissato con il carattere % come ad esempio %CLIENTE, %PREZZO, %IMPORTO, %ARTICOLO. Nelle condizioni WHERE delle istruzioni SQL, fare attenzione al formato del campo di confronto. Per i campi numerici la variabile di confronto non ha bisogno di particolari sintassi come ad esempio XPREZE<>%PREZZO mentre per i campi alfanumerici la variabile di confronto deve essere racchiusa tra apici come XCODIC=‟%CLIENTE‟. Quando è necessario passare i valori delle variabili a programmi chiamati, si devono adottare degli accorgimenti. Mostriamo qui attraverso un esempio tutte le possibilità. CALL PGM(SAMPLE) PARM(„ „ „%CLIENTE‟ X'%PREZZOF' X„0%IMPORTOF‟ X'00000000236F' X'00000000236F' „COSTANTE‟) 1. Parametro lasciato in bianco 2. Parametro alfanumerico valorizzato dalla variabile %CLIENTE 3. Parametro numerico lungo 11 (dispari) posizioni valorizzato dalla variabile %PREZZO 4. Parametro numerico lungo 10 (pari) posizioni valorizzato dalla variabile %IMPORTO 5. Parametro numerico lungo 11 posizioni valorizzato con una costante numerica 6. Parametro numerico lungo 10 posizioni valorizzato con una costante numerica 7. Parametro alfanumerico valorizzato con una costante In un parametro numerico, le posizioni passate devono sempre risultare pari (compresa la F finale). Notare lo 0 (zero) aggiunto all‟ inizio del numero o prima della sintassi di sostituzione se la lunghezza del numero è pari. 2.10 Monitor Data Base (STRDBMON) Il comando di avvio del Monitor di database (STRDBMON) da 5250 consente di avviare la raccolta di statistiche sulle prestazioni del database per un lavoro specifico, per tutti i lavori sul sistema o per un gruppo selezionato di posti di lavoro. Le statistiche vengono inserite in un file specificato dall'utente. Se il file non esiste, ne viene creato uno basato sul file QAQQDBMN in libreria QSYS. Se il file esiste, viene verificato il formato di registrazione per assicurare sia la stessa. Per ogni monitor avviato utilizzando STRDBMON, il sistema genera un ID monitor che può essere utilizzato per identificare univocamente ogni singolo monitor. L'ID monitor può essere utilizzato nel comando ENDDBMON per identificare quale monitor deve essere terminato. L'ID del monitor viene restituito nel messaggio informativo CPI436A che viene generato per ogni comando STRDBMON lanciato. L'ID monitor può anche essere trovato nella colonna QQC101 del record del database QQQ3018 monitor. Presentiamo di seguito alcuni esempi di utilizzo del comando Esempio 1 : Avvio di Monitoraggio di database per tutti i processi STRDBMON OUTFILE(QGPL/FILE1) OUTMBR(MEMBER1 *ADD) JOB(*ALL) FRCRCD(10) Questo comando avvia il monitoraggio del database per tutti i processi del sistema. Le statistiche sulle prestazioni vengono aggiunte al membro nominato member1 nel file denominato FILE1 nella libreria QGPL. Verranno tenuti 10 record nel buffer prima di forzare la scrittura del file. Paragrafo-Pagina di Pagine 2-40 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Example 2: Avvio di Monitoraggio del database per un lavoro specifico STRDBMON OUTFILE(*LIBL/FILE3) OUTMBR(MEMBER2) JOB(134543/QPGMR/DSP01) FRCRCD(20) Questo comando avvia il monitoraggio del database per il numero di lavoro 134543. Il nome del lavoro è DSP01 ed è stato avviato dall'utente denominato QPGMR. Le statistiche sulle prestazioni vengono aggiunte al membro MEMBER2 nel file denominato FILE3. Verranno tenuti 20 record nel buffer prima di forzare la scrittura del file. Example 3: Avvio di Monitoraggio del database per un lavoro specifico in un file in una libreria in un ASP STRDBMON OUTFILE(LIB41/DBMONFILE) JOB(134543/QPGMR/DSP01) Questo comando avvia il monitoraggio del database per il numero di lavoro 134543. Il nome del lavoro è DSP01 ed è stato avviato dall'utente denominato QPGMR. Le statistiche sulle prestazioni vengono aggiunte al membro DBMONFILE (non essendo stato specificato OUTMBR) nel file DBMONFILE nella libreria LIB41. Example 4: Avvio di Monitoraggio di database per tutti i processi che iniziano con 'QZDA' STRDBMON OUTFILE(LIB41/DBMONFILE) JOB(*ALL/*ALL/QZDA*) Questo comando avvia il monitoraggio del database per tutti i numeri lavoro, per tutti gli utenti e per il nome lavoro che inizia con 'QZDA'. Le statistiche delle prestazioni (record monitor) vengono aggiunte al membro DBMONFILE (non essendo stato specificato OUTMBR) nel file DBMONFILE nella libreria LIB41. Example 5: Avvio di Monitoraggio di database per tutti i lavori e Filtraggio istruzioni SQL il cui tempo stimato di esecuzione è più di 10 secondi STRDBMON OUTFILE(LIB41/DBMONFILE) JOB(*ALL) RUNTHLD(10) Example 6: Avvio di Monitoraggio del database per il lavoro corrente e applicazione di filtri su un file specifico STRDBMON OUTFILE(LIB41/DBMONFILE) JOB(*) FTRFILE(LIB41/TABLE1) Questo comando avvia il monitoraggio del database per il lavoro corrente. I record di Monitor sono creati solo per i comandi SQL che utilizzano LIB41/TABLE1 file. Example 7: Avvio di Monitoraggio del database per il lavoro corrente e l'utente corrente STRDBMON OUTFILE(LIB41/DBMONFILE) JOB(*) FTRUSER(*CURRENT) Questo comando avvia il monitoraggio del database per il lavoro corrente. I record di Monitor sono creati solo per quelle istruzioni SQL che vengono eseguite dall'utente corrente. Example 8: Avvio di Monitoraggio del database Per lavori che iniziano con 'QZDA' con Filtraggio nel tempo di esecuzione e file STRDBMON OUTFILE(LIB41/DBMONFILE) JOB(*ALL/*ALL/QZDA*) RUNTHLD(10) + FTRUSER(DEVLPR1) FTRFILE(LIB41/TTT*) Questo comando avvia il monitor del database per tutti i lavori che hanno il nome che inizia per „QZDA‟ Monitor vengono scritti solo se i comandi SQL rispettano tutte le seguenti condizioni : o Il tempo di funzionamento stimato, calcato da Query Optimizer, è pari o supera i 10 Secondi o E‟ stato lanciato dall‟utente “DEVLPR1” o Utilizza files il cui nome inizia per “TTT” e risiedono nella libreria LIB41 I dati del Per ulteriori approfondimenti sull‟utilizzo del comando e di tutti i parametri disponibili, si rimanda agli Help in linea di AS400 ed ai manuali IBM di AS400. 2.11 Interrogazione LOG dall‟Applet E‟ richiamabile in due modi diversi, da “Strumenti” “System Utilities” “Display job Log” oppure direttamente dall‟ icona posta sulla cornice dell‟applet. Perché sia attiva l‟opzione di scelta, è necessario sia aperto almeno un lavoro (es. “VA”) I dati visualizzati al richiamo della funzione, si riferiscono al lavoro che in quel momento è attivo. Nell‟esempio che stiamo facendo vediamo il LOG dell‟elaborato “VA”. Paragrafo-Pagina di Pagine 2-41 di 43 Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Figura 2.11-I (RODM01FM/T2CTL) Una volta richiamata la funzione, è possibile modificare i criteri di ricerca ed analizzare il LOG di qualsiasi lavoro. Normalmente rimangono salvati i messaggi fino a tre mesi. All‟ interno del LOG troviamo sia i messaggi di AS400 che i messaggi scritti dalle procedure SQL (iniziano per Lxxxxxxx) , questi ultimi evidenziati in azzuro. Figura 2.11-II (RODM01FM/T2CTL) Non indicando il “Nome Lavoro” ed il “Numero” è possibile analizzare il LOG ad esempio del solo utente, che può anche essere diverso da quello con cui si è aperto l‟applet. E‟ opportuno impostare anche un‟ intervallo di date per evitare che la ricerca sia troppo lunga ed i dati esposti siano troppi. Se si conosce parte del testo del messaggio che si vuole ricercare o il codice del messaggi, è possibile utilizzare i filtri “Scansione” e/o “Id Messaggio”. Selezionando anche il “Tipo” (anche più di uno) Paragrafo-Pagina di Pagine 2-42 di 43 si riduce ulteriormente la lista. Versione 2 del 22/12/2016 Strumenti di Customizzazione – Manuale Sistemista Attivando “SOLO Messaggi Speciali” vengono elencati solo i messaggi generati dalle procedure SQL. (quelli evidenziati in azzurro). Per analizzare il dettaglio del messaggio selezionare la riga con l‟opzione “5” Figura 2.11-III (RODM01FM/W1) Paragrafo-Pagina di Pagine 2-43 di 43 Versione 2 del 22/12/2016