Dopo aver visto un esempio del calcolo dell'irraggiamento termico in COBOL, vediamo ora un altro caso interessante (non è stato semplice affrontare i vari errori di compilazione!!) ovvero il calcolo del potere calorifico superiore, un parametro fisico/chimico, utile anche in ambito ingegneristico. Indica la quantità di calore che si può ottenere dalla combustione di una determinata sostanza (priva di umidità, altrimenti occorre sottrarre un altro valore), conoscendo la composizione chimica.
Per il caso in esame, è stato considerato l'alcol etilico, etanolo (CH3CH2OH, ovvero C2H6O). Dalla letteratura sappiamo che il valore risultante è circa 30 MJ/kg e tramite approssimazione empirica (formula di Dulong (approfondimento) si arriva a questo risultato.
Prima di riportare il codice, una spiegazione (in modo da poterlo eventualmente adattare alle proprie esigenze): il programma è valido per una sostanza composta da carbonio, idrogeno e ossigeno; come valore iniziale è già stata calcolata la frazione di massa di ognuno, rispetto al totale. Partendo dalla formula chimica (quindi se si volesse cambiare molecola), le operazioni eventualmente da fare sono:
- massa = numero moli * peso molecolare
- massa ossigeno = numero moli ossigeno * 16, dato che l'ossigeno ha numero atomico 8, quindi molecola da 8 protoni e 8 neutroni
- massa carbonio = numero moli carbonio * 6
- massa idrogeno = numero moli idrogeno * 1
- dopodiché la frazione di massa per ognuno è la stessa, divisa per il totale (in questo caso il totale è 46 essendo (2 * 12) + (6 * 1) + (8 * 2) = 24 + 6 + 16 = 46)
Siamo pronti per riportare il codice. Solo un'ultima domanda: perché usare COBOL per la chimica? La risposta è semplice, proprio perché non ha alcun senso! È completamente fuori luogo, scomodo e inefficace. Per questo è divertente, per questo lo usiamo (PS: in Python sarebbe troppo semplice 😅): per sport!
Ecco il codice, spero sia di vostro gradimento ("utile" non lo dico, so già la risposta 😁). Mi raccomando ricordatevi la riga vuota alla fine e attenzione ai commenti, se non sono allineati nella colonna corretta, da errore di compilazione (giusto per rendere l'idea del linguaggio).
IDENTIFICATION DIVISION.
PROGRAM-ID. PCS-CHIMICA.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MC PIC 99V99.
01 MH PIC 99V99.
01 MO PIC 99V99.
01 PCS PIC 999V99 VALUE 0.
PROCEDURE DIVISION.
COMPUTE MC=24.00.
COMPUTE MH=6.00.
COMPUTE MO=16.00
COMPUTE MC=MC/46.00.
COMPUTE MH=MH/46.00.
COMPUTE MO=MO/46.00.
MULTIPLY 32.79 BY MC GIVING PCS.
MULTIPLY 150.4 BY MH GIVING MH.
MULTIPLY 13.83 BY MO.
ADD MH TO PCS GIVING PCS.
SUBTRACT MO FROM PCS GIVING PCS.
DISPLAY "PCS=" PCS "MJ/kg".
STOP RUN.