50pixel.gif (47 byte)

CONVERTITORI DI LINGUAGGIO

indent.gif (45 byte)Nel corso di alcune esperienze maturate presso grosse aziende nell'ambito dei porting di applicativi da sistemi obsoleti a sistemi UNIX, While1 ha potuto sviluppare alcuni tool per la conversione dei linguaggi e in particolare oggi è disponibile uno strumento denominato COBCON in grado di convertire dei programmi scritti utilizzando vecchi linguaggi Cobol (proprietari) in programmi allineati con le specifiche di uno dei nuovi Cobol (Microfocus, Ryan McFarland, ecc.).

indent.gif (45 byte)COBCON è oggi "programmabile": permette, cioè, di modellare la conversione in modo automatico. È possibile definire, dato il layout dello statement (o anche un gruppo di statement) in input, come dovrà essere scritto lo statement in output (o il gruppo di statement).

indent.gif (45 byte)Utilizzando la tecnica sopra descritta, si possono anche risolvere tutti quei problemi di conversione legati a problematiche di statement (es: calls) che facevano riferimento a prestazioni del sistema non più disponibili sul nuovo sistema destinatario. Infatti, in questo caso è possibile convertire le suddette chiamate con altri statement in modo automatico, come evidenzia il seguente esempio:

Esempio di conversione statement READ

indent.gif (45 byte)Sintassi COBOL da convertire:

indent.gif (45 byte)Formato 1 - Accesso ed Organizzazione Sequenziale

READ file-name [ NEXT ] RECORD [ INTO variabile-1 ]

[ AT END statement-1 [ END-READ ] ]

indent.gif (45 byte)Formato 2 - Accesso Sequenziale - Organizzazione relative e con chiave

READ file-name [ NEXT | PREVIOUS ] RECORD [ INTO variabile-1 ]

[ WITH LOCK ]

[ AT END statement-1 [ END-READ ] ]

indent.gif (45 byte)Formato 3 - Accesso Random - Organizzazione Relative

READ file-name RECORD [ INTO variabile-1 ]

[ WITH LOCK ]

[ INVALID KEY statement-1 [ END-READ ] ]

indent.gif (45 byte)Formato 4 - Accesso Random - Organizzazione con Chiave

READ file-name RECORD [ INTO variabile-1 ]

[ WITH LOCK ]

[ KEY IS nome-chiave ]

[ INVALID KEY statement-1 [ END-READ ] ]

Statement READ convertito:

MOVE file-name TO FILE-LOGIC-NAME

SET mod-read TO TRUE

SET mod-lock TO TRUE

MOVE relative-key TO FILE-NUM-REC

MOVE area-rec TO FILE-AREA-REC

MOVE num-key TO FILE-NUMKEY

SET FILE-READ TO TRUE

CALL FILEHAND USING FILE-PARAM

MOVE FILE-STATUS-COBOL TO file-status

IF FILE-STATUS-OK

MOVE FILE-AREA-REC TO area-rec

MOVE FILE-AREA-REC TO variabile-1

MOVE FILE-NUM-REC TO relative-key

END-IF

IF [ AT-END | INVALID-KEY ]

statement-1

END-IF

indent.gif (45 byte)Come si può notare, l'esempio cerca di evidenziare come uno o più statement possano essere considerati per generare una sequenza di nuove istruzioni utilizzando alcuni dati (evidenziati in grassetto) prelevati dagli statement originali. Nell'esempio illustrato si può notare che alcuni di questi dati non appartengono allo statement originale e in questo caso tali informazioni saranno evinte da altri statement Cobol utilizzando una serie di regole prestabilite dalla sintassi e dalla semantica della conversione.

indent.gif (45 byte)COBCON raccoglierà tutte le regole in alcune tabelle opportunamente codificate al suo interno. Con l'esecuzione di due passate potrà ottenere il programma convertito, rispettando anche i commenti e le indentazioni originali.

indent.gif (45 byte)COBCON è anche idoneo ad eseguire analisi di complessità o indagini quantitative e qualitative di programmi scritti in Cobol. Infatti, oltre alla conversione automatica, è possibile programmare lo strumento per ottenere dati sui programmi e sulla loro complessità relativi, ad esempio, all'uso di specifiche variabili o chiamate a specifiche funzioni. (es: dove viene utilizzata la data).

indent.gif (45 byte)Pensando a problematiche oggi molto attuali, come la gestione dell'ANNO 2000 e l'introduzione della moneta unica Europea EURO, l'utilizzo di COBCON potrebbe essere molto vantaggioso essendo in grado sia di quantificare e qualificare il volume degli interventi, sia di implementare automaticamente tutte le regole di conversione come deciso dall'analisi dello specifico applicativo e non solo in generale (come oggi fanno molti strumenti). COBCON non è un black-box ma un sistema aperto di facile adattabilità e programmazione.

indent.gif (45 byte)La versione attuale di COBCON è disponibile su tutti i sistemi UNIX, Microsoft e anche su OS/2. Nel caso in cui la conversione riguardi un sistema non contemplato e non in grado di poter ospitare un porting di COBCON, si potrebbe anche prospettare la soluzione di utilizzare uno dei sistemi elencati come cross-environment (per esempio si potrebbe sviluppare la conversione su UNIX e avere come sistema source l'AS/400 e come target l'HOST IBM).

indent.gif (45 byte)COBCON non viene proposto come prodotto a sé stante, ma viene sempre fornito congiuntamente ad un'attività di consulenza specifica. Tale binomio si rende necessario per ottenere il cosiddetto COBCON-FINAL in un tempo limitato e utilizzando appieno tutte le possibilità offerte dallo strumento. Tale strategia è sempre consigliabile nel mondo delle conversioni, in quanto l'obiettivo finale non è quello di dominare lo strumento di conversione, ma di ottenere un buon risultato sui nuovi sorgenti ottenuti.

indent.gif (45 byte)Il costo dell'oggetto è di conseguenza determinato da un prezzo base più un delta dovuto alla parte di adattamento/programmazione relativa al problema specifico; tale entità dovrà essere quantificata in funzione della complessità del progetto.

indent.gif (45 byte)Essendo lo strumento disponibile sotto forma di sorgenti, è chiaramente possibile estenderne le possibilità senza limite, intervenendo, se necessario, sugli algoritmi del prodotto e inserendo tutte le necessarie nuove regole di conversione per la gestione di casi particolari, non supportati dalla versione standard.


50pixel.gif (47 byte)