Структура программы на языке GPSS
Идеи, заложенные в систему моделирования GPSS, относятся к семидесятым годам, когда высокоуровневые языки программирования по существу только начали развиваться. Поэтому с точки зрения программиста модель на языке GPSS по структуре близка к программе на языке ассемблера: каждое предложение занимает одну строку, содержащую либо управляющий оператор (например, REALLOCATE, SIMULATE, START, END), либо объявление имени объекта, либо функциональный оператор (БЛОК).
Комментарий к блоку может быть написан в этой же строчке после символа “;” (точка с запятой). Если комментария в строке нет, то точка с запятой может не ставиться. Отдельная строка-комментарий должна начинаться символом “*”, располагающимся в первой позиции строки.
Структура программы на языке GPSS состоит из следующих разделов:
— раздел объявлений и описаний, содержащий:
. объявление символических имен объектов по форме:
имя_объекта EQU порядковый_номер_объекта_данного_типа
. описание функций;
. описание зависимых переменных (для вычисления по формулам);
. задание предельной емкости памяти;
. инициализация ячеек и логических ключей;
SIMULATE
— раздел операторов, содержащий:
. последовательность блоков, т.е. последовательность функциональных операторов, по сути представляющих собой программу моделирования;
START – управляющий оператор;
END – оператор окончания программы.
Функциональные операторы или блоки являются собственно языком описания модели. Каждый блок занимает одну строку GPSS-программы и имеет следующую структуру:
[метка] идентификатор_блока список_полей [; комментарий]
Поля в списке отделяются друг от друга запятой и имеют фиксированные позиции, назначение и количество полей зависит от типа блока. С точки зрения программиста блоки являются именами подпрограмм, а поля блока – параметрами подпрограммы.
Все блоки можно разделить на группы:
• блоки, отображающие работу объектов устройство, память, очередь, логический ключ, ячейка, переменная, таблица, функция, которые имитируют состав и структуру моделируемой системы и обеспечивают при моделировании сбор и обработку экспериментальных данных;
• блоки, влияющие на значения атрибутов и параметров транзактов;
• блоки, влияющие на изменение направления перемещения транзактов по модели;
• блоки, обеспечивающие копирование и синхронизацию перемещения транзактов по модели.