Rileva le operazioni su variabili intere per le quali un valore troncato potrebbe
essere assegnato a una variabile di tipo REAL.
Giustificazione: L'analisi statica genera un errore quando il risultato di un calcolo
intero viene assegnato a una variabile REAL o LREAL. Il programmatore deve essere avvisato di una possibile interpretazione errata di
questo tipo di assegnazione: lrealvar := dintvar1 * dintvar2. Poiché l'intervallo di valori di LREAL è maggiore di quello di DINT, si potrebbe supporre che il risultato del calcolo possa sempre essere rappresentato
in LREAL. Ma non è questo il caso. Il processore calcola il risultato della moltiplicazione
come un numero intero e poi lo lancia a LREAL. Un overflow nel calcolo dei numeri interi andrebbe perso. Per aggirare il problema,
il calcolo deve essere eseguito come operazione REAL: lreal_var := TO_LREAL(dintvar1) * TO_LREAL(dintvar2).
Importanza: Alto
Esempio
PROGRAM PLC_PRG VAR rx : LREAL; di : DINT; END_VAR rx := di * di // SA0020 rx := TO_LREAL(di) * TO_LREAL(di) // No message --> SA0020: Possibly assignment of truncated value to REAL variable