RPG IV system i IBM – codici operativi aritmetici

  • ADD
  • SUB
  • MULT
  • DIV
  • MVR
  • XFOOT
  • SQRT
  • Z-ADD
  • Z-SUB

Questi codici operativi sono validi solo se eseguiti su campi numerici. I calcoli tengono conto del segno che viene determinato secondo le regole algebriche

esempi

immagine4

Nei calcoli aritmetici l’attenzione deve essere focalizzata sulla definizione dei campi risultato che devono essere grandi a sufficienza per ricevere il valore calcolato ed i suoi decimali

ADD – SUB

immagine5

Nell’ esempio sopra riportato se il contenuto di PayReg deve essere sommato al contenuto di YTDPay l’operazione di ADD puo’ essere semplificata usando solo fattore 2 e risultato La figura mostra le due sintassi a confronto. Sono, dal punto di vista dell’RPG perfettamente equivalenti

MVR

immagine61

MVR muove il resto dell’operazione D immediatamente precedente nel campo del risultato Non devono essere usati Fattore i e Fattore 2

immagine7

  • SQRT calcola la radice quadrata di un numero (fattore 2)
  • Z-ADD azzera il campo risultato e vi aggiunge il fattore 2. Puo’ essere usato per azzerare un campo
  • Z-SUB azzera il campo risultato e vi sottrae il fattore 2 Puo’ essere usato per cambiare il segno di un numero
Annunci

RPG IV system i IBM – codici operativi di calcolo

MOVE – MOVEL – MOVEA

RPG ha tre codici operativi di MOVE

  • MOVE copia i dati dal fattore 2 al risultato allineandoli a destra
  • MOVEL copia i dati dal fattore 2 aI risultato allineandoli a
  • La lunghezza del campo piu’ piccolo determina la quantita’ di dati effettivamente trasferita e quindi gli eventuali troncamenti
  • RPG non inizializza il campo del risultato prima di iniziare l’ operazione di MOVE. Di conseguenza i dati trasferiti nel risultato si sovrappongono a quelli gia’ presenti.
  • Puo’ essere utilizzata un’estensione del codice operativo MOVE (P) per ripulire il contenuto del campo risultato prima di eseguire la MOVE.
  • MOVEA esegue operazioni di copia tra schiere o tra campi e schiere. Verrà esaminato quando si tratteranno le schiere.

 codici operativi di calcolo

immagine21

L’istruzione MOVE esegue automaticamente tutte le conversioni dati necessarie.
E’ possibile anche muovere un campo carattere in uno numerico. Viene in realta’ trasferita solo la porzione digit di ogni byte (il semibyte che contiene la rappresentazione della cifra in un numero zoned) dal campo carattere nella corrispondente porzione del campo numerico. L’ultimo semibyte di destra del campo carattere viene usato per impostare il segno nel campo numerico di destinazione. Se l’ultimo semibyte di destra del campo carattere contiene B o D, il campo numerico diventa negativo.

 immagine31

L’ unica differenza tra MOVEL e MOVE e’ che la copia inizia da sinistra Tutte le conversioni richieste sono eseguite automaticamente.

  • MOVE dipende dalla lunghezza del campo piu’ piccolo
  • La conversione dati e’ automatica
  • §Il campo risultato e’ inizializzato con (P)
  • §Non tiene conto del punto decimale

Leggi anche

RPG IV system i IBM – codici operativi aritmetici

Programmazione RPG CGI

Cosa cambia nella programmazione se si vuole andare in WEB con il linguaggio RPG?
Concettualmente un programma RPG per il WEB deve solo sostituire l’ I/O per il device WORKSTN con l’ I/O verso il browser.
Quindi invece di emettere e ricevere in input formati di un display file deve emettere e ricevere pagine HTML.
Tutto il resto, accesso al data base, logica di calcolo, utilizzo delle funzioni di sistema operativo (autorizzazioni, comit, lock di record, override, lista di librerie, spool ecc.) rimane invariato, a differenza di quanto avviene con altre tecniche

C’ è una discreta analogia tra la gestione dell’ I/O di pagine HTML e quella di un display file gestito internamente. Infatti:

DSPF

  • Lettura record READ + Specif. di input
  • Scrittura record EXCEPT + Specif. di output

HTML

  • Lettura record campo = zhbgetvar(‘campo’)
  • Scrittura callp updhtmlvar(‘campo’:campo) + callp wrtsection(‘formato ‘)

 

Anche la gestione delle varie pagine HTML è del tutto analoga a quella dei DSPF.
Infatti:

  • Anche le pagine HTML sono definite esternamente ai programmi
  • Sono organizzate in “sezioni” del tutto analoghe ai formati dei display file

Ci sono però alcune differenze nella realizzazione di alcune funzioni o effetti come:

  • Subfile – non tanto nella visualizzazione quanto per le tecniche legate ai codici operativi READC, CHAIN e UPDATE
  • Sovrapposizione di formati e finestre
  • Attributi condizionati da indicatori

Un’ altra differenza importante sta nel flusso elaborativo del programma
Infatti per poter emettere una pagina il programma deve andare a fine lavoro (RETURN con LR spento) e successivamente per leggerla riparte dalla prima istruzione di calcolo.
Occorre quindi “veicolare” opportunamente la sequenza elaborativa del programma, per esempio con un tipo record che individui il formato appena letto ed instradi opportunamente la sequenza elaborativa del programma.

Rispetto ad un DSPF la pagina HTML ha funzionalità e gradi di libertà molto maggiori
Un tradizionale campo (di input, output o input-output) ha anche attributi relativi al font, allo stile, alla dimensione del carattere, al colore, alla dimensione e colore del bordo, al colore dello sfondo.
Oltre ai campi nella pagina possono essere presenti altri elementi del tutto nuovi rispetto ai DSPF come link, immagini, filmati, suoni, menu a tendina, check box, effetti grafici ecc..

 Quello che è importante è il fatto che il programma RPG ha il pieno controllo di tutte queste nuove funzionalità, nel senso che può attivarle o no od impostarne l’ opportuna modalità di rappresentazione al verificarsi o meno di certe condizioni applicative.
Questo è di fondamentale importanza. Questo vuol dire avere un programma WEB.
Sul mercato ci sono dei software che intercettano le stringhe 5250 emesse dal programma e le trasformano in html, dando l’ impressione di avere un programma WEB. In realtà non è così perché il programma continua a vedere i formati 5250 e non può pilotare funzionalità che il 5250 non ha. E’ come vedere un film in bianco e nero e, mettendosi lenti colorate, illudersi che il film sia a colori.

ILE CGI vs Java (5) Usabilità delle funzioni del sistema operativo i5/OS

Le funzioni del sistema operativo i5/OS sono ovviamente pienamente disponibili in ambiente ILE-CGI. (immagine di repertorio non pertinente)

Viceversa JAVA “puro”, nell’ ottica della portabilità, prescinde da qualsiasi sistema operativo e di conseguenza non può far uso delle funzioni dell’ i5/OS. E’ però possibile utilizzare il Toolbox for Java che rende disponibili alcune funzioni AS/400, ma non tutte e questo soprattutto perché le funzioni richiamate vengono eseguite in un JOB separato; quindi comandi a livello di JOB come RTVJOBA, CHGJOB o che hanno validità nell’ ambito del JOB come l’ uso della libreria QTEMP, i comandi OVRXXX, ADDLIBLE ecc. non ha senso che siano utilizzati.

Lo stesso discorso vale se si utilizza il nodulo “run”

E’ da sottolineare come l’ uso del Toolbox for Java o del modulo “run” renda l’ applicazione Java non più portabile.

 

ILE CGI vs Java (4) – Separazione della logica di presentazione dalla logica di elaborazione

Su questo punto è nato un grosso equivoco.

Chi propaganda JAVA fa notare ad ogni occasione che la programmazione CGI per il WEB ha all’ interno del programma la costruzione della pagina HTML da visualizzare, con la conseguenza che ogni volta che si debba modificare l’ aspetto grafico occorra metter mano al programma. La logica di presentazione sarebbe quindi all’ interno della logica elaborativi.

Ma questo è vero solo per il generico CGI che dialoga con l’ HTTP Server senza particolari accorgimenti, un po’ come farebbe un RPG 5250 che pilotasse direttamente il video senza usare le DDS. Viceversa il caso che stiamo confrontando con JAVA è quello di CGI arricchito dall’ apposito Open Source fornito dalla stessa IBM. Con l’ utilizzo di tale Open Source la definizione della pagina HTML è esterna al programma in modo del tutto analogo a quanto avviene con l’ uso delle DDS 5250. La logica di presentazione…

 

Leggi il seguito di questo post »

Conversione di programmi RPG 5250 in programmi RPG CGI

Patrimonio software delle aziende
Ogni azienda ha un patrimonio software frutto di anni di esperienza e di continui adeguamenti alle proprie necessità applicative ed organizzative.
E’ vero che in tale patrimonio sono a volte presenti anche programmi o soluzioni tecnico-applicative ormai obsolete.
Ma è anche vero che la parte più significativa di tale patrimonio è costituita da programmi e soluzioni che sono andate sempre più affinandosi per rispondere sempre meglio alle necessità dell’ azienda, a volte addirittura dettando la giusta struttura organizzativa.

Valorizzare il patrimonio aziendale
Se il software di un’ azienda è largamente insoddisfacente è chiaro che va rifondato, con le tecniche che si riterranno più adeguate a seconda del caso in questione.
Ma se non è così (e dovrebbe essere il caso più frequente) non ci si può permettere di gettare alle ortiche il patrimonio accumulato nel corso degli anni.
Tale patrimonio va salvaguardato innestando su di esso le innovazioni introdotte dalle nuove tecnologie.
Solo in tal modo le nuove tecnologie aiutano a crescere, diversamente sono solo delle mode sul cui altare si corre il rischio di sacrificare anni di proficuo lavoro.

Le nuove tecnologie – il web
Andare in WEB non è sicuramente una moda, ma un’ ottima opportunità per accelerare e snellire tutta una serie di operazioni con clienti, fornitori, agenti ecc. Per non parlare del commercio elettronico.
Andare in WEB in maniera intelligente è un valore aggiunto necessario ormai per tutte le aziende.
Andare in WEB “costi quel che costi” è un grave errore.

Le nuove tecnologie – interfaccia utente
Le nuove tecnologie hanno portato nuove vesti grafiche e funzioni di ipertestualità e multimedialità di sicuro interesse e grande funzionalità.
Inserire tali nuove interfacce utente è sicuramente un arricchimento importante del software applicativo
Questo però va fatto senza perdere nulla della funzionalità attualmente esistente.

La problematica
Come entrare nel WEB con le proprie applicazioni RPG 5250 ed introdurre in esse le nuove interfacce utente, magari anche gradualmente, senza perdere nulla della attuali funzionalità e soprattutto senza dover necessariamente riscrivere il software ?

La modifica delle applicazioni 5250
Abbiamo visto che, tutto sommato, non è affatto difficile scrivere programmi RPG CGI che, essendo richiamabili da browser, siano accessibili da WEB ed utilizzino le nuove interfacce tipiche di Windows.
Se invece si vogliono modificare i programmi 5250 già esistenti in modo che l’ I/O con il device WORKSTN sia sostituito da quello con il browser, questo ha qualche complessità in più, ma ha il vantaggio di mantere inalterate logica applicativa e funzionalità dei programmi.

soluzione
grazie al software di conversione denominato appunto “Conversion 5” si è in grado di effettuare automaticamente gran parte del lavoro di conversione. L’ intervento manuale si riduce a casi particolari o dove occorra un minimo di interpretazione della logica elaborativa.

ILE CGI vs Java (3), Personalizzazione post-conversione delle pagine WEB

 Aggiunte funzionali post-conversione (possibilità di crescita tecnico-applicativa dei  programmi convertiti)

 

I programmi RPG 5250 una volta convertiti in ILE CGI sono pienamenti modificabili e arricchibili di nuove funzioni (che ovviamente la versione 5250 non poteva prevedere). Questo perchè si tratta di sorgenti RPG e sorgenti di pagine HTML ben definiti, individuabili  e quindi modificabili, o direttamente aggiungendo sul sorgente gli effetti grafico-funzionali desiderati, o anche utilizzando programmi di editing come “FRONT PAGE”. Per modificare la pagina HTML occorre solo avere conoscenze di HTML. Inoltre il programma RPG ha il pieno controllo di tutti gli elementi della pagina HTML, potendo pilotare e condizionare perfettamente tutti gli effetti grafico-funzionali desiderati.

Molto diverso il discorso nel caso delle conversioni effettuate con il convertitore Java (ed utilizzo del modulo “RUN”).

 

Leggi il seguito di questo post »