Cet opérateur n'est pas défini par la norme IEC 61131-3. Il sert uniquement à la programmation en langage ST.
L'opérateur OR_ELSE permet d'appliquer une opération OR à des opérandes de type BOOL et BIT en mode court-circuit. Cette opération produit l'effet suivant :
Lorsqu'une opérande au moins est TRUE, l'opération renvoie TRUE. Sinon, le résultat est FALSE.
Lorsqu'une opérande est TRUE, les expressions associées aux autres opérandes ne sont pas évaluées (évaluation paresseuse). L'opérateur OR_ELSE se distingue ainsi de l'opérateur OR défini dans la norme IEC-61131-3 En effet, l'opérateur OR évalue à chaque fois l'ensemble des expressions.
VAR
bEver: BOOL;
bX1: BOOL;
dw: DWORD := 16#000000FF;
END_VAR
bEver := FALSE;
bX := dw.8 OR_ELSE dw.1 OR_ELSE dw.1 OR_ELSE (bEver := TRUE);
dw.8 est FALSE et dw.1 est TRUE. L'opération donne un résultat (bX) TRUE. Par contre, l'expression de la troisième entrée n'est pas exécutée et bEver reste FALSE. Avec l'opérateur OR, bEver aurait été TRUE.