Dai programmi batch a quelli interattivi a quelli Web

L’ elaborazione meccanografica dei dati parte dalla modalità batch, cioè a blocchi, si evolve poi nell’ elaborazione interattiva tramite terminali ed arriva alle attuali elaborazioni WEB.

Ai giorni nostri, in un normale ambiente informatico sono presenti tutte e tre le metodologie. Infatti ad esempio l’ emissione delle fatture con periodicità mensile mentre una volta era una necessità dettata da una tecnologia non ancora sviluppata, oggi la stessa soluzione può essere dettata da esigenze applicative e non più tecnologiche, basti pensare alle fatture relative alle utenze domestiche di energia elettrica, telefonia ecc …  

 

Annunci

L’ elaborazione interattiva

Negli anni settanta furono introdotti i primi terminali (3270) il cui utilizzo rispondeva a tre precise esigenze:

1)      Immissione dei dati con immediata segnalazione degli errori. Questo permetteva un più rapido processo di correzione.

2)      Più semplice accesso ai dati da parte dei vari settori aziendali che non erano più costretti a lavorare  su voluminosi tabulati nei quali andare a cercare l’ informazione desiderata, ma la potevano ora ottenere in maniera molto più diretta e semplice.

3)      Informazioni molto più aggiornate di quelle ottenibili dai tabulati. Questi ultimi infatti venivano generati settimanalmente o mensilmente ed il dato in essi presente era spesso ormai superato. Con i terminali invece era possibile accedere ai dati in “tempo reale” come si diceva a quel tempo.

 

L’ interfaccia hardware e software

L’ introduzione dei terminali evidentemente comportava nuovi aspetti da tenere in considerazione sia come interfacciamento hardware che software che applicativo, il tutto però su un sistema operativo nato quando i terminali ancora non c’ erano e che quindi non poteva certo supportarli.

Allo scopo furono sviluppati i “Monitor TP” (TP sta per Tele Processing) che erano dei grossi programmi di sistema che si curavano dell’ interfacciamento hardware e software dei programmi applicativi con i terminali (locali o remoti). Degli esempi di questi programmi di sistema erano il CICS per i grossi sistemi IBM o il CCP per i medi sistemi IBM (S/3 mod 8,10,12,15).

L’ utilizzo dei Monitor TP introduceva però dei vincoli che, anche per altre motivazioni, di fatto imponevano che l’ inserimento di nuovi programmi o terminali, o la modifica di programmi già esistenti richiedeva la chiusura ed il riavvio del Monitor TP e quindi anche di tutte la applicazioni interattive. Considerato che questo ovviamente interessava anche il test dei programmi, si comprende come fosse molto laborioso lo sviluppo del software in ambiente interattivo. Per alcune applicazioni come ad esempio la vendita al banco, per le quali non era ammissibile nessuna interruzione, si è arrivati a poter lavorare sullo sviluppo software solo all’ intervallo di pranzo o dopo l’ orario normale di lavoro.

Fu quindi accolto come una vera liberazione l’ avvento del S/34 IBM che aveva integrata nel sistema operativo la gestione dei terminali (5250). Con tale elaboratore non sussistevano i gravi vincoli sopra menzionati.

 

L’ accesso al data base per tempi di risposta ragionevoli

Un altro aspetto importante nella programmazione interattiva era la necessità di avere tempi di risposta ragionevoli. Se ad esempio si richiedeva l’ estratto conto di un cliente, era necessario fornire la videata di risposta nel giro di pochi secondi. Viceversa in un’ elaborazione batch la generazione del tabulato settimanale degli estratti conto poteva anche impiegare ore ed un’ ora in più o in meno era del tutto trascurabile per qualcosa che doveva durare una settimana.

La risposta a questa esigenza era un’ opportuna gestione del data base che, nell’ esempio in questione, permettesse di accedere agli archivi (anagrafici e di movimento) per codice cliente.

Il S/34 con la sua sola gestione degli archivi ad indici rispondeva solo in parte a questa esigenza. Vennero quindi ideate tecniche di accesso che tramite catene di puntatori (numero relativo di record) permettevano rapidi accessi al data base, a fronte però di un certo impegno in termini di programmazione.

Un passo avanti fu fatto con il S/36 nel quale venne introdotta  la possibilità di avere indici alternativi, anche con più chiavi, per un file di dati.

Ancor meglio con il S/38 (antesignano dell’ AS/400 e dei Power System con O.S. IBM i) che fu il primo elaboratore dotato di data base relazionale integrato e microcodificato nel sistema operativo (CPF).

Attualmente i moderni sistemi Power System  con O.S. IBM i sono dotati di data base DB2/400 che è l’ attuale edizione del data base relazionale nato con il S/38.  

 

 

 

La riservatezza e la sicurezza degli accessi

Con l’ introduzione dei terminali locali e remoti nacque un nuovo problema: quello della riservatezza e della sicurezza degli accessi al sistema informatico. Infatti prima dell’ avvento dei terminale era il personale del centro meccanografico ad avere accesso al sistema e quindi il problema non sussisteva. Viceversa con l’ introduzione dei terminali l’ accesso al sistema veniva decentrato e non si aveva la sicurezza che davanti al terminale ad operare ci fosse la persona giusta. Questo tanto più quanto più numerosi erano i terminali. Proprio per questo già dal S/34 fu introdotto il concetto di utente e password, che fu poi sempre più sviluppato fino al Power System che ha tutta una serie di strumenti sia per controllare gli accessi che per definire le operazioni autorizzate per ogni singolo oggetto e per ogni singolo utente e questo anche per l’ ambiente WEB di cui si parlerà più avanti. 

L’ elaborazione batch

In tale modalità i dati da elaborare venivano preparati a priori partendo da documenti cartacei e raggruppati su opportuno supporto meccanografico (schede perforate, minidischi, nastri, archivi su disco). Successivamente avveniva la loro  elaborazione che dava luogo all’ aggiornamento di archivi, alla generazione di documenti (fatture, ordini di acquisto ecc..) e liste e tabulati che potevano essere usati nella gestione aziendale (per es. estratti conto).

L’ elaborazione era divisa in due fasi:

1)      Controllo dei dati di input

2)      Elaborazione dei dati

A secondo dei casi la fase 2) si faceva eseguire sui soli dati di input corretti, oppure veniva eseguita solo se tutti i dati di input erano corretti. In entrambi i casi, in presenza di dati errati questi dovevano essere corretti e riproposti per una nuova elaborazione.

Sostanzialmente quindi le fasi 1) e 2) sopra menzionate venivano ripetute più volte fino a che non ci fosse nessun errore sui dati di input e quindi potessero essere tutti elaborati..

E’ evidente  come la correzione dei dati di input fosse particolarmente laboriosa perché comportava la ripresa dalla massa dei documenti cartacei di quello relativo al movimento in errore e l’ individuazione se il problema fosse dovuto ad un errore di battitura a avesse altra motivazione comunque da risolvere. Proprio per limitare la laboriosità della correzione degli errori si usava spesso affiancare  alla funzione di immissione quella della verifica, che in pratica voleva dire digitare due volte i dati da immettere e controllare (automaticamente) che la seconda immissione fosse uguale alla prima. In tal modo si eliminavano in modo pressocchè completo gli errori di battitura poiché era statisticamente estremamente improbabile che nelle due digitazioni di verificasse lo stesso errore di battitura. E’ evidente come però rimanevano scoperti altri tipi di errore come quello di lettura, legato al fatto che i documenti cartacei erano spesso compilati a mano anche con calligrafia non troppo chiara.

L’ elaborazione via WEB

L’ avvento di internet e delle nuove tecnologie introdotte dalle stazioni di lavoro grafiche come i PC hanno portato ad un immediato sviluppo delle elaborazioni via WEB.

Più precisamente è da notare che con il termine “elaborazione WEB” ci si può riferire a due aspetti, spesso congiunti, ma concettualmente diversi, e cioè:

a)      Elaborazione che sfrutta la rete mondiale di internet (World Wide Web) e quindi rende raggiungibile e collegabile qualsiasi angolo del pianeta.

b)      Elaborazione che usa come strumento di interfaccia utente il browser, cioè lo strumento standard (nelle sue varie versioni: I.E., Firefox, Opera ecc..) con cui si accede ad internet. Questo strumento utilizza largamente la tecnologia grafica (bottoni, menu a tendina, immagini, filmati, link, effetti grafici ecc.).

Si può parlare quindi di elaborazioni WEB anche per applicazioni che non utilizzano la rete internet, ma sono destinate ai soli utenti aziendali collegati tra loro e con il sistema centrale tramite una rete locale (intranet). Questo trova giustificazione nel fatto che la stessa applicazione potrebbe tranquillamente girare anche sull’ intera rete mondiale di internet.

Riguardo l’ elaborazione via WEB il sistema AS/400 è quello che meglio si presta allo scopo. Infatti le sue caratteristiche di:

a)      Inattaccabilità da virus, hackers ecc..

b)      Sicurezza degli accessi

c)      Struttura nativa di autorizzazione sugli oggetti

d)      Elevata affidabilità e continuità di servizio

e)      Riutilizzabilità del patrimonio software

f)        Predisposizione nativa e strutturale alla multiutenza

ne fanno la macchina ideale per gestire con sicurezza, affidabilità e flessibilità una situazione di numerosi client in ambiente internet o intranet.

Il sistema AS/400 (oggi Power System con Sistema Operativo IBM i), viene purtroppo ancora associato ai suoi ormai vetusti terminali testuali a caratteri verdi su fondo nero. Questo è come pensare che in America ci siano ancora i Pellerossa o che una nave per galleggiare debba essere fatta di legno. Viceversa oggi esso è in grado di controllare migliaia di stazioni di lavoro collegate contemporaneamente via WEB con sofisticate funzionalità grafiche, e questo lo fa con un elevatissimo livello di sicurezza, continuità di servizio, efficienza e facilità di gestione. E’ bene anche considerare che se questo può essere possibile con migliaia di client, ancor meglio sarà  nel caso di qualche decina di client contemporanei.

Questo elevatissimo livello di prestazioni è possibile proprio grazie agli enormi sviluppi che il sistema ha avuto partendo dai tempi dei terminali monocromatici. Si è passati dalla tecnologia CISC a quella RISC, si sono succeduti tutta una serie di processori il cui ultimo (POWER6) è stato annunciato e reso disponibile proprio nel 2008, con in più la possibilità di averne fino a 64 che lavorano in parallelo sullo stesso sistema, diverse versioni e livelli di sistema operativo la cui ultima (V6R1) è stata resa disponibile anch’ essa proprio nel 2008. Sempre nel 2008 è stato realizzato quello che da sempre è  stato un sogno  per l’ informatica: avere un hardware su cui possano girare contemporaneamente sistemi operativi di piattaforme diverse. Questo è stato realizzato con il sistema Power System sul quale possono essere installati e funzionare contemporaneamente LINUX, AIX (Unix), IBM i (nuovo nome del sistema operativo dell’ AS/400), altro che terminali monocromatici ! E’ anche possibile “vedere” una cpu INTEL con sistema operativo Windows, fornire ad essa una opportuna porzione dei parco dischi e dialogare con essa.

 

Nuove problematiche

Fatta queste premesse, è da notare che l’ elaborazione via WEB da un lato presenta strette analogie con l’ elaborazione interattiva tramite terminale, dall’ altro se ne differenzia per motivi collaterali e legati al contesto in cui avviene l’ elaborazione. In particolare :

1)      L’ elaborazione in termini macroscopici e di programmazione continua ad essere transazionale (anche se per altri motivi è definita più precisamente pseudo-transazionale). Il programma infatti continua a vedere un dispositivo da cui ricevere i dati di input e a cui inviare quelli di output. Nel caso dei terminali l’ I/O dei dati è fatto tramite un oggetto di tipo Display File, nel caso del WEB tramite una pagina HTML. La logica elaborativi quindi non cambia affatto, quel che cambia è lo strumento con cui viene effettuato l’ I/O dei dati. Si vedrà più avanti che potrà essere possibile emettere la pagina HTML con modalità molto simile a quella usata per i terminali 5250. Il grosso valore aggiunto è la possibilità di sfruttare a pieno e direttamente tutta la tecnologia grafica sopra menzionata (bottoni, immagini ecc..)

2)      Il contesto in cui avviene l’ elaborazione presenta degli aspetti nuovi di cui è necessario tener conto se si vogliono ottenere i risultati previsti. In particolare:

a)      L’ utente WEB e la sua stazione di lavoro spesso non sono ben definite ed a volte del tutto sconosciute (come il generico “visitatore” di internet). Per cui mentre in ambiente 5250 le differenze tra una stazione di lavoro e l’ altra sono pressocchè minime, in un contesto WEB numerose sono le caratteristiche del client che potrebbero anche pesantemente influenzare il modo con cui all’ utente si presentano le applicazioni. Queste sono:

·         Il browser utilizzato (Internet Explorer, Firefox ecc …)

·         La risoluzione utilizzata (800×600, 1024×768 ecc..)

·         I font presenti sul client

·         I plug-in installati sul client (Flash, pdf ecc …)

·        La ridimensionabilità della pagina visualizzata con conseguente variazione del layout      

b)      La possibilità di poter inviare pagine con immagini o loghi può comportare un gran traffico di linea, che va tenuto sotto controllo per evitare tempi di attesa insostenibili, tenendo conto che non sempre è nota la velocità di accesso ad internet dei client.

c)      E’ ben noto che andare in internet comporta il rischio di virus, hackers, trojan horses (cavalli di Troia), sniffer. Questi sono rischi concreti e pericolosi solo se si opera su piattaforma Windows. La piattaforma AS/400 (Power System) è notoriamente immune da virus, hackers e trojan horses per dei motivi strutturali che sono da esaminare a parte. Rimane solo da preoccuparsi dello sniffing che non è altro che l’ intercettazione del traffico di rete e che, in quanto tale, avviene fuori dell’ AS/400. Intercettando il traffico è però possibile reperire utente e password ed accedere di conseguenza al sistema. In tal caso occorre intervenire criptando la password o le intere transazioni. Questo è un grossissimo punto di vantaggio della piattaforma AS/400 rispetto a quella Windows. Non passa giorno infatti in cui non vengano rilasciati aggiornamenti su Windows orientati a tappare falle relative alla sicurezza su tale piattaforma, e questo la dice lunga sulla debolezza di Windows in termini di sicurezza.

d)      Poiché una pagina WEB può contenere oggetti di varia natura (immagini, filmati, documenti word, fogli elettronici, file PDF ecc..) occorre che l’ AS/400 faccia da contenitore per tali oggetti. E’ quindi necessario con l’ IFS (Integrated File System) nato proprio per poter contenere, tra gli altri, anche oggetti in formato Windows.

 

Modalità realizzative

Sul sistema AS/400 ( successivamente chiamato iSeries, poi System i ed ora Power System con Sistema Operativo IBM i) la scrittura di programmi e applicazioni WEB è possibile utilizzando tre diverse metodologie:

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

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

Problemi / Soluzioni RPG IV, System i IBM

Se dovessimo scrivere un programma che stampa un prospetto con l’indicazione del numero totale di impiegati e, per ciascuno di essi il nome, il codice, il dipartimento ed il tipo di lavoro che svolge, potremmo partire da una pseudocodifica simile a quella sotto riportata:

  • Stampa l’intestazione
  • Legge un record dell’impiegato
  • Ripeti mentre esistono altri record
    – Conta ogni record impiegato letto
    – Leggi un record dell’impiegato
  • Fine ripeti
  • Stampa il numero totale di impiegati
    Termina il programma

Terminologia
CAMPO – e’ una variabile di programma, corrisponde alla locazione di memoria in cui possono essere memorizzati i dati. I campi devono avere un nome lungo fino a 10 caratteri, la cui iniziale deve essere alfabetica (Da A a Z, $, §, @, _ (underscore)) mentre il resto puo’ essere alfabetico (Da A a Z,$. §, @) o numerico (da 0 a 9). Gli spazi non sono consentiti. Al campo deve essere assegnata una lunghezza ed un tipo dati. E’ possibile anche definire un campo a lunghezza variabile. In tal caso va definita la sua lunghezza massima.
La logica elaborativa puo’ essere definita dal compilatore o dal programmatore. Se si lascia gestire la logica di programma dal compilatore il programma RPG utilizza il CICLO. Il ciclo RPG consiste in una serie di passi predefiniti ed eseguiti automaticamente
• Scrittura d righe di testata e di dettaglio
• Lettura del record di input
• Esecuzione dei calcoli di totale
• Scrittura delle righe di totale
• Controllo dell’indicatore di LR (ultimo record)
• Assegnazione dei dati letti nelle variabili di programma
• Esecuzione dei calcoli di dettaglio

Il programmatore gestisce solo le operazioni eseguite in ciascuno di questi passi.
Quando la logica applicativa e’ controllata dal programmatore si parla di elaborazione procedurale. In questo caso il programma non esegue nulla in automatico, i file definiti nel programma sono dichiarati come “fuli procedural” e l’input o l’output su di essi e’ controllato con espliciti codici operativi (READ, CHAIN, WRITE, UPDATE …).