RDi: percorsi di migrazione – 90) da quello che non esisteva a…

Nelle pagine precedenti di questo percorso di migrazione ho illustrato come lavorare con RDi in modo parallelo rispetto ai tool tradizionali green screen.

Quindi il primo step verso l’uso di strumenti di sviluppo moderni è compiuto: sono in grado di fare tutto ciò che facevo prima.

Non è sufficiente. Perché usare un tool moderno e nuovo (con tutta la relativa fatica per imparare ad usarlo) se poi faccio le stesse cose di prima? Non sarebbe logico.

Ma RDi va ben oltre a quello che si poteva fare con gli strumenti tradizionali. Già nei vari capitoli precedenti vi sarete accorti di alcune novità e funzioni che non esistevano in precedenza e che non sono solo “carine” ma sono delle caratteristiche che rivoluzionano il modo di lavorare rendendolo più produttivo.

Parlando di LPEX vi invito a rileggere il paragrafo “Tutto ciò che nel SEU era un sogno…”

Cerco ora di elencare quelle funzionalità che RDi introduce per agevolare la vita del programmatore.

Frammenti e modelli di codice

Molto spesso scrivendo del codice ci si trova nella situazione di dover digitare e digitare più volte porzioni uguali o molto simili.

La consuetudine vuole che si vada in giro a cercare nei sorgenti scritti in precedenza per fare del sano copia/incolla.

RDi offre due alternative molto interessanti al copia/incolla di codice: i frammenti (o snippets) e i modelli.

Modelli

I modelli offrono un metodo comodo e rapido per inserire qualche riga di codice salvata in precedenza. Esistono già alcuni modelli predefiniti. Questo metodo è per esempio molto comodo per inserire la struttura dei costrutti iterativi o condizionali. Oppure scheletri di istruzioni SQL. E così via.

I modelli si applicano a sorgenti RPG IV (anche embedded SQL) scritti in formato libero.

I modelli si definiscono aprendo dal menu Finestra la voce Preferenze. A questo punto aprire la scheda Sistemi remoti > Editor LPEX Sistemi remoti > Parser IBM i > ILE RPG > Modelli.

Come mostrato nella figura precedente il modello del costrutto condizionale IF … ELSE … ENDIF è composta da 5 righe di codice che aiutano il programmatore a ricordare la sintassi e preimpostare tutte le keyword necessarie. Chi non ha mai aperto un IF dimenticandosi di chiuderlo con il corrispondente ENDIF?

La parola chiave ${CURSOR} indica dove verrà posizionato il cursore dopo aver inserito il modello nel sorgente.

Si possono creare nuovi modelli a proprio piacimento (cliccare sul pulsante Nuovo) oppure anche modificare quelli esistenti (clicca sul pulsante Modifica).

Come si inseriscono i modelli nel nostro sorgente? E’ molto semplice. E’ sufficiente cominciare a digitare le prime lettere (p.es. IF) e poi premere Ctrl+Spazio per aprire il menu del context assistant che propone oltre al codice operativo IF anche i modelli il cui nome comincia con IF:

Frammenti

I frammenti hanno lo stesso scopo dei modelli (ovvero memorizzare porzioni di codici da riutilizzare spesso) ma hanno un livello di sofisticazione superiore.

I frammenti non sono limitati ai sorgenti di tipo RPG IV, ma in generale in un frammento si può memorizzare qualsiasi tipo di codice.

Per lavorare con i frammenti innanzitutto bisogna aprire la vista Frammenti.

Facendo clic destro in un’area vuota della vista si accede al menu contestuale, scegliendo Personalizza si accede alla finestra per creare/modificare i frammenti.

Nella figura seguente si vede un esempio di frammento per la porzione di codice per spostare un campo numerico in un campo alfanumerico senza utilizzare il codice operativo MOVEL/MOVE.

Notiamo subito che i frammenti a differenza dei modelli non definiscono un contesto (free-form…).

Per comodità i frammenti possono essere organizzati in gruppi omogenei (detti cassetti). Nell’esempio c’è il cassetto RPG IV e il cassetto JSP. All’interno di ogni cassetto si creano i diversi frammenti.

La porzione di codice che si memorizza nel frammento può anche contenere dei segnaposto variabili che verranno sostituiti al momento dell’inserimento nel sorgente. I segnaposto vanno dichiarati nella frame Variabili e possono anche essere preimpostati con un valore predefinito.

Per inserire un frammento in un sorgente bisogna aprire la vista Frammenti, fare clic destro sul frammento desiderato e scegliere Inserisci. Se il frammento contiene dei segnaposto variabili viene richiesto come riempirli. Digitando i valori delle variabili viene mostrato nel riquadro Origine il codice risultante. Una volta terminato premere Ins per inserire il codice nel sorgente,

Nota bene: il codice viene inserito a partire dalla posizione in cui si trova il cursore.