Безусловная или вероятностная (статистическая) передача транзактов, как отмечалось выше, осуществляется в блоке GOTO. Однако в практике разработки сложных моделей часто возникает необходимость совершить переход с учетом какого-либо условия (условный переход). Для этого используется блок IF, который имеет два режима работы: SNA (режим отношения) и SERVER (режим присвоения).
В SNA-режиме, операнды А и В связаны заданным отношением. В зависимости от того, выполняется ли это отношение, осуществляется (или не осуществляется) передача транзакта. Формат блока IF в SNA?режиме:
IF A*B,C
В приведенной записи символом «*» обозначен знак проверяемого отношения между операндами А и В, которые являются константами или СЧА. Допустимые отношения: > (больше), >= (больше или равно), = (строгое равенство), <> (неравенство), < (меньше), <= (меньше или равно). Операнд С - это адрес блока, в который транзакт должен перейти, если проверка отношения дает результат «true» (истина), в противном случае транзакт переходит в следующий блок. Ниже приведен пример записи блока IF:
IF Q$lin=4,bye
Приведенная запись обозначает следующее: если в очереди lin есть 4 транзакта,то перейти к блоку с адресом (меткой) bye.
Отношение может быть выражено также одним из следующих кодов:
1. U (The facility is in Use - прибор занят).
2. NU (The facility is Not in Use - прибор не занят).
3. E (The storage is Empty - МНУ пустое).
4. NE (The storage is Not Empty - МНУ не пустое)
5. F (The storage is Full - МНУ заполнено)
6. NF (The storage is Not Full - МНУ не заполнено)
В случае использования этой группы отношений операнд А - это имя прибора или МНУ, операнд В содержит один из вышеперечисленных кодов и формат блока будет следующим :
IF A=код,C
Так, например, запись
IF sal=U,bye
означает следующее: если прибор sal занят, то перейти к блоку с меткой bye.