3.2.3. Продвижение сообщений

Как было сказано выше, если сообщение всписке текущих событий находится в активном состоянии, интерпретатор пытается его продвинуть. Если сообщение может двигаться, интерпретатор его двигает и выполняет операции, соответствующие проходимому сообщением блоку. После этого интерпретатор определяет, не относится ли блок, в который вошло сообщение, к специальному типу BUFFER. Если да, то интерпретатор немедленно прекращает обработку сообщения и начинает просмотр сначала списка текущих событий.

Если блок, в который вошло сообщение, не является блоком типа BUFFER, интерпретатор проверяет, не произошло ли при выполнении предыдущего блока изменение состояния оборудования. Если изменение произошло, интерпретатор устанавливает в "1" флаг изменения состояния, устанавливает в "0" индикаторы просмотра для всех сообщений, находящихся вспискезадержки, связанном с соответствующей единицей оборудования.

Если в выполняемом блоке не задана явным образом задержка сообщения, интерпретатор сразу же пытается продвинуть сообщение через следующий блок. Этот процесс продолжается до тех пор, пока сообщение не получает отказ при попытке войти вблок, не встречает блок ADVANCE с заданной явно задержкой во времени или не уничтожается блоком TERMINATE или ASSEMBLE.

Если движение сообщения блокируется из-за состояния оборудования, то индикатор просмотра для этого сообщения устанавливается в "1", это означает, что сообщение перешло в состояние задержки. Сообщение помещается в соответствующий список задержки, изатем интерпретатор определяет, произошло ли изменение состояния оборудования во время обработки этого сообщения. Если движение сообщения прекращено из-за заданной для него задержки во времени, оно помещается в список будущих событий, изатем интерпретатор также проверяет, не изменилось ли состояние оборудования.

Если при обслуживании текущего активного сообщения произошло изменение состояния оборудования, просмотр     начинается    сначала,    иснова  обслуживаются все сообщения списка текущих событий, находящиеся в активном состоянии. Если изменение состояния оборудования не происходило, интерпретатор снова обращается ксписку текущих событий и проверяет, остались ли внем сообщения, которые нужно обработать.

Описанная выше последовательность событий происходит для каждого нового момента условного времени до тех пор, пока счетчик завершения моделирования не станет равным 0; по выполнении этого условия моделирование прекращается.