Nella parte dichiarativa di un programma, blocco funzione, metodo o funzione, è possibile definire le variabili di ingresso. Quando si chiamano oggetti di questo tipo, occorre specificare i valori di ingresso. Quando si chiama un metodo o una funzione, i valori di ingresso vengono copiati nello stack. Tali valori (area di memoria) sono utilizzati solo dalla chiamata di funzione o metodo.
Rispetto ai programmi dove esiste esattamente un'istanza nella memoria (o blocchi funzione istanziati più volte memoria), i programmi o blocchi funzione possono essere chiamati più volte, da più task e si utilizza la stessa posizione di memoria per la variabile di ingresso (in parallelo).
Per la stabilità di esecuzione dell'applicazione, la variabile di ingresso deve essere scritta solo dal chiamante (dall'esterno) del programma o blocco funzione.
Ogni accesso in scrittura a una variabile di ingresso dall'interno del blocco funzione è segnalato come violazione della convenzione.
SR_Main
VAR
fbTest: FB_Test;
xTest: BOOL;
END_VAR
// call of FB method without calling FB (Body) before
fbTest(TRUE);
//potential violation reading outside the construct
xTest := fbTest.i_xEnable ;
FB_Test
VAR_INPUT
i_xEnable: BOOL;
END_VAR
// potential violation. Now the input value has changed its value.
i_xEnable := FALSE;