Первый более эффективен, если только VAR-A не равен , никогда false (в этом случае просто отбросьте его).Условие должно всегда выполняться, и всегда должно выполняться одно присвоение, так что это оптимально:
IF VAR-A = FALSE
MOVE VAR-C TO VAR-B
ELSE
MOVE VAR-A TO VAR-B
END-IF
Лично я предпочитаю сначала оценивать условия TRUE, для простоты чтения.
IF VAR-A = TRUE
MOVE VAR-A TO VAR-B
ELSE
MOVE VAR-C TO VAR-B
END-IF
Нет разницы в производительности, потому что в любом случае это одна ветвь.Если вы проверяли наличие нескольких значений, вам всегда нужно ставить самые общие на первый план.
EVALUATE TRUE
WHEN VAR-A = TRUE
MOVE VAR-A TO VAR-B
WHEN VAR-C = TRUE
MOVE VAR-C TO VAR-B
WHEN OTHER
this is slower, because it had to do two condition checks to get here
MOVE VAR-C TO VAR-B
END-EVALUTE
Но это не относится к простому IF, как вы можете видеть:
IF condition
no effort to get here
assignment cost is constant
one go-to to get to the next line
ELSE
one go-to to get here
assignment cost is constant
no effort to get to the next line
END-IF
Но это действительно все придирки.Мы говорим о паре инструкций здесь.Если это не выполняется по внутреннему циклу, который выполняется 1 000 000 раз в минуту, даже не думайте об этом.