А.1 Основные операторы управления
А. Операторы управления
Операторы управления и описания
Введение в рассматриваемой версии языка новых операторов управления и описания, а также расширение возможности уже имеющихся, позволили гораздо удобней взаимодействовать с моделью, что невозможно было сделать раньше. Ниже в тексте наиболее важные и часто употребляемые операторы описаны более подробно.
Для организации имитационных экспериментов программист должен задать управляющей программе (симулятору) дополнительную информацию (например, указать продолжительность счета, сообщить об окончании ввода входных данных и т.д.). Эта информация задается с помощью операторов управления.
SIMULATE — первый оператор в программе, указывающий на необходимость выполнения (счета) программы. Он имеет вид:
л |
< SIMULATE A>
где А — число минут машинного времени, по истечении которого моделирование будет завершено и на печать будет выведена накопленная к этому времени статистическая информация. Если поле А пусто, то работа программы завершается либо по истечении заданного модельного времени моделирования, либо по окончании обслуживания заданного числа транзактов.
START, помещаемый в конце входных данных, указывает, что входные данные получены и можно начинать счет. Наиболее простая форма записи:
<START А >
здесь А — число транзактов, которые должны пройти через систему до выдачи окончательной статистики, так называемый счетчик завершения (СЗ). Счет заканчивается, когда СЗ меньше, либо равен нулю. Значение СЗ уменьшается на величину, указанную в поле А блока TERMINATE.
Примеры:
а) организация завершения моделирования по прохождению в модели заданного числа транзактов:
GENERATE 20, 5 создание транзактов
TERMINATE 1 уничтожение транзакта с вычитанием 1 из СЗ
START 1000 число завершений (СЗ) равно 1000
Моделирование заканчивается после прохождения в модели 1000 транзактов.
б) организация завершения моделирования по времени (Т =3600):
GENERATE ,, 3600
TERMINATE 1
START 1
Заметим, что все остальные блоки TERMINATE, имеющиеся в программах, фрагменты которых приведены в примерах а), б), должны иметь нулевое поле А.
RESET, СLЕАR указывают на проведение нескольких прогонов ИМ в течение одного выполнения программы. По окончании каждого прогона: по команде RESET распечатывается и стирается вся накопленная статистика, обнуляется значение относительного модельного времени С1 (модельного времени для отдельного прогона); по команде CLEAR дополнительно удаляются из модели все имеющиеся транзакты и обнуляется значение абсолютного модельного времени AС l. Операт CLEAR не оказывает влияния на амперпеременные.
END — последний оператор, указывающий на конец входных данных, причем все открытые файлы закрываются.
Таблица 4.6
Языки Функции | GPSS / Н | BASIC | PASCAL | FORTRAN |
Повторение | DO-ENDDO | FOR NEXT | FOR DO | DO |
Условие | IF, ENDIF, ELSE, ELSEIF | IF | THEN | ELSE |
А2. Вновь введённые операторы. Среди вновь введённых в язык операторов управления, отметим 2 группы операторов, выполняющих функции, присущие УЯП.
Формат DO: < DO &index = A, B, C > где
А- число, СЧА , АМП , задающее начальное значение
В- предельное значение повторений (петель),
С- приращение (по умолчанию 1)
Пример: DO &1=1, 50 делать 50 раз
ENDO операндов не имеет и прекращает действие DO.
При использовании DO возможны два случая:
1. Значение А>В, процесс выходит из петли и моделирование продолжается с выполнения следующей после ENDDO директивы
2. АВ, действие DO продолжается до выполнения директивы
Группа операторов условий работает в обычной связке проверки булевских или логических условий: IF - ELSEIF- ELSE - ENDIF, операндами IF, ELSEIF являются проверяемые условия, ELSE, ENDIF операндов не имеют, причём ELSE задаётся один раз.
Среди вновь введённых операторов рассмотрим группу, осуществляющую связь внешних файлов с внутренними файлами модели, среди них FILEDEF, GETLIST, GETSTRING.
FILEDEF служит для соединения внешнего файла с внутренним файлом модели : < имя файла FILEDEF внешний файл >, например
INFILE FILEDEF ‘ trace, dat ‘
GETLIST предназначен для чтения входных величин , записанных в свободном формате : < [ имя ] GETLIST FILE = filename, (входные данные) >, например: GETLIST FILE = MYFILE, (X&,&I =1 ,5).
GETSTRING предназначен для чтения внешних файлов, содержащих АМП, формата :
< [ имя ] GETSTRING FILE = filename, ( &V ) > Прежние версии языка позволяли исполнять операторы последовательно в соответствии с блок-схемой, введение оператора GOTO обеспечивает переход в любую точку модели или отчёта. При чтении отчёта оператор работает только внутри документа, не давая возможности входа извне и выхода во внешние файлы. Формат: < [ имя ] GOTO имя объекта>. Связанный с ним оператор HERE аналогичен оператору CONTINUE в Фортране и указывает точку обращения к модели. Следующие три связанных оператора служат для получения отображения на экране линий данных отчёта: PICTURE, PUTPIC, PUTSTRING. PICTURE служит для создания краткого или полного отчёта с помощью оператора PUTPIC или блока BPUTPIC форматом :
< имя PICTURE [LINES =n] > например MYP PICTURE LINES=3. PUTSTRING используется, когда не нужны возможности PUTPIC.
PICTURE служит для создания краткого или полного отчета с помощью оператора PUTPIC или блока BPUTPIC форматом:
< имя PICTURE [LINES = n] > например MYP PICTURE LINES=3
PUTSTRING используется, когда не нужны возможности PUTPIC.
При работе с моделью часто приходится сохранять результаты, для этих целей существует два оператора SAVE, READ. SAVE позволяет записать образ модели в постоянную память или на дискету для работы с файлом и последующего запуска. Вызов сохранённого файла осуществляет оператор READ. Формат обоих операторов идентичен:
< SAVE [имя] >, например, SAVE RUN 2. Операнд А может отсутствовать.