Il titolo fa un pochino di clickbait, lo so, ho avuto un'idea malsana ma interessante ๐ dopo aver parlato di Pyscript: Python in HTML, ho deciso di creare un mio programmino (ovviamente ancora in fase Alpha) per tradurre il linguaggio COBOL in JavaScript! Nel mio caso poi lo stampo a video, volendo si potrebbe anche eseguire il codice JavaScript risultante tramite funzione eval()
.
Premessa: COBOL รจ un linguaggio datato 1959, macchinoso e vicino al livello macchina, oggi obsoleto e piuttosto odiato (trova applicazione solo in ambito finanziario), quindi diciamo pure che questo programma รจ... "just for fun"!
Il mio programma รจ in fase iniziale, mi interessava definire un'impostazione di base, che poi volendo si puรฒ migliorare, integrare. Giร cosรฌ rende l'idea ๐
Per ora, il mio programma funziona cosรฌ:
- scriviamo il codice COBOL tutto su una riga, senza andare a capo (nella sintassi ufficiale del linguaggio invece occorre andare a capo)
- non ho ancora considerato tutta la struttura di COBOL (
IDENTIFICATION DIVISION
, WORKING-STORAGE SECTION
, cosรฌ come STOP RUN
), ovviamente se si vuole migliorare la funzionalitร di questo programma, basta aggiungerli (non avendo un equivalente in JavaScript, banalmente li si sostituisce con una stringa vuota)
- le operazioni matematiche in COBOL vanno scritte tramite
COMPUTE
e non altre keyword specifiche del linguaggio (semplicitร , per ora non avevo voglia di stare ad inserire tutti i vari casi)
- analogamente, sempre per semplicitร le variabili le inizializziamo non tramite keyword
SET
, ma a livello di dichiarazione tramite VALUE
- inoltre le variabili le scriviamo in questa forma:
01 X PIC 9(3)V9(2).
e non 01 X PIC 999V99.
(entrambe le sintassi sarebbero valide in COBOL, รจ la procedura per creare una variabile con - al massimo - tre cifre intere, due decimali); ancora da sistemare meglio la questione numeri decimali, per ora funziona perfettamente coi numeri interi
- la funzione
DISPLAY
di COBOL per ora la usiamo per stampare solo i risultati numerici, quindi non del tipo "risultato=..."
Vi riporto il codice del programma (pagina HTML con all'interno tutto quello che ci serve, secondo quanto detto sopra):
<html>
<style>
input{
min-width:50%;
}
</style>
<input name="input-field" placeholder="Inserisci codice COBOL (tutto su una riga)"></input><button id="submit1">Traduci</button>
<h3 id="a"></h3>
<script>
const inputField = document.querySelector('input[name="input-field"]');
document.querySelector('#submit1').addEventListener('click', () => {
const inputValue = inputField.value;
var x=inputValue;
//varie traduzioni COBOL - JavaScript
x=x.replace(/\PIC/g,"");
x=x.replace(/\VALUE/g,"=");
x=x.replace(/\./g,";");
x=x.replace(/\COMPUTE/g,"");
for(i=0;i<10;i++){ //max 10 occorrenze
x=x.replace("01 ","var ");
x=x.replace("V9("+i+")","");
x=x.replace(/DISPLAY\s+(\w+)/, 'document.write($1)');
}
for(i=0;i<10;i++){ //max 10 occorrenze
x=x.replace("9("+i+")","");
}
//stampa traduzione JavaScript
document.getElementById("a").innerHTML="<em>Traduzione JavaScript:</em><br><br>"+x;
});
</script>
</html>
Ecco un'immagine di come si presenta:

Ovviamente ribadisco che รจ in fase iniziale, il codice COBOL sarebbe opportuno scriverlo ovviamente su piรน righe, cosรฌ come con tutta la propria sintassi e struttura. Rende comunque l'idea!
Cosa ne pensate di questa idea di programmazione perversa? Vi piace? ๐