double arrow

Правила трансляции

А. Входные форматы

А 1. Имена объектов СЧА, а также метки блоков могут содержать от одного до семи буквенно-цифровых символов, первый из которых обязательно должен быть буквой. Имя не может начинаться с букв, которые закреплены за объектами языка (см. табл. 5.4). Так РАМ, CPU, D1-правильно, Х 125, 1В, TOOLONGNAME - неправильно.

А 2. Формат величин. Целые числа положительные или отрицательные могут содержать до десяти десятичных чисел (±232). Число с плавающей точкой (все промежуточные вычисления производятся с реальным числом, а окончательный результат имеет целочисленное значение) имеет знак, целую часть до десяти десятичных чисел и дробную часть также до десяти десятичных чисел. Экспонента может иметь значение до двух десятичных чисел.

A 3. Формат исходных файлов. Все операторы языка должны быть записаны заглавными буквами. строчные буквы приводят к ошибке. Длина файлов может быть переменной и фиксированной. Линия данных может содержать до 132 символов. Обычная длина 72 символа.

А 4. Формат операторов. В языке GPSS/H символ OPERCOL (OPER and start COL umn) обозначает по умолчанию 25 меток колонок, где ведётся поиск первого операнда будь это свободный или фиксированный формат. Значение OPERCOL может переназначаться командой OPERCOL n, где n - целое число в интервале от 10 до 60.

Для лучшей читаемости модели, при освоении правил написания модели, следует использовать фиксированный формат. При записи в фиксированном формате:

- метки размещаются начиная со 2-ой колонки по 8-ю, причём блоки обычно не имеют метки, операторы описания TABLE всегда имеют метку, a STORAGE имеют метку в специальных случаях;

- код операции, являющийся именем всех операторов, начинается с 10-ой колонки и отделяется от кода метки по крайней мере одним пробелом;

-операнды кодируются начиная с OPERCOL (25 колонка)..Первый операнд называется А, второй В и т. д. и отделяются запятой без пробела

- комментарий отделяется от последнего операнда одним пробелом и от макрокоманд двумя и не может начинаться раньше OPERCOL +1. Другой способ записи комментарий - печать символа * в 1-ой колонке перед текстом комментария.

При записи в свободном формате:

- метка начинается в колонке 1 или 2 и может иметь 1-8 символов для записи символического имени или номера описываемого объекта.

- код операции для записи типа объекта или операторов отделяется от метки одним или более пробелами, если метка отсутствует код операции может начинаться с колонки 3. При наличии OPERCOL код операции не может в нём находиться.

- вспомогательный код может быть записан непосредственно за кодом операции или отделяться от него пробелом, в пространстве OPERCOL находиться не может.

-Операнды (см. А5) отделяются от кода операции или вспомогательного одним или несколькими пробелами, операнды могут начинаться внутри OPERCOL, но чаще после него. При большом числе операндов их запись может занять несколько строк.

- Комментарий отделяется от операндов по крайней мере одним пробелом, в случае использования макрокоманд не менее чем двумя пробелами. В случае если оператор не имеет операндов, комментарий может записываться в любом месте строки.

- Текст отчёта может быть размещён в нескольких строках.

А 5. Метки. Метка должна записываться в виде символа или числа. Числа обычно используются для операторов управления и практически не используются для блоков. В большинстве языков программирования использование одинаковых меток недопустимо, но в GPSS /Н дубликаты меток используются для переопределения объектов.

А 6. Операционные коды могут быть сокращены до 4 букв, но в больших моделях этого следует избегать. Для некоторых операторов типа BGETLIST, BGETSTRING сокращения исключаются. Вспомогательные команды в силу их краткости также не сокращаются.

А 7. Операнды. Служат для записи разнообразной информации об операторах Большую гибкость языку придаёт возможность в качестве операнда использовать аналитические выражения, которые указывают, какие действия необходимо совершать, включая действия в скобках, например:

SAVEVALUE (РНЗ-5) - (РНЗ + 5),25,ХН

где А- имя ячейки с указанием изменения её содержимого, В - число либо СЧА используемое для изменения содержимого, С - тип формата.

А 8. Комментарий улучшает читаемость модели, указанием, над чем и какие действия производятся. В данной версии языка комментарии воспринимаются на русском языке.

А 9. Запись функций. Задаётся в первом модуле оператором описания FUNCTION формата < n FUNCTION A,B> n - номер или имя функции, А - операнд, указывающий на аргумент функции обычно СЧА, В- тип функции (Dm, Cm) - дискретная или непрерывная с числом точек табуляции - m. Функция может быть записана в фиксированном формате, что практикуется при передаче данных в программы записанные не на GPSS, но чаще используется свободный формат, в нём нет ограничений на разрядность числа. Правила записи сводятся к следующему

- запись начинается с 1-ой колонки и следует не далее 71.

- координаты точки разделяются запятой, а пары чисел слэшем ‘/ ‘

- Х записываются в порядке возрастания.

Пример: 1 FUNCTION RN1.D5

0,0/.5, 26.0/.83,40.8/.89,6.08/.995,5.0

Б. Запись СЧА и СЛА - они могут быть встроены в конструкцию языка или вводиться в процессе моделирования в любое время и в любом месте указанием имени СЧА-СЛА.

Б 1. Ссылка на постоянную величину позволяет ввести целочисленное значение в имя желаемого СЧА. Например, XI означает полнословную сохраняемую величину с номером 1.

Б 2. Язык позволяет делать записи, используя нотацию, принятую в УЯП. Например, Х(РН(X1+3)+2) или МН(XI + 7,1,2), последний пример обозначает полусловную матрицу, номер которой равен содержимому полнословной ячейки 1 плюс 7, с одной строкой и двумя столбцами.

Б З. Запись символических имён. При одновременной записи символического и мнемонического обозначений последнее отделяется символом $, так XF$TERM- полнословная ячейка с именем TERM

Б 4. Запись амперпеременных - АМП (переменные, введённые только в GPSS /Н от названия & - амперсенд и нотируются символом &). Они следуют сразу за именем СЧА, например F (&I) - устройство, номер которого задан амперпеременной с именем I.

В. Контекстно - зависимые ссылки. Позволяют осуществлять специальные действия компилятора при адресации посредством операндов блоков, СЧА или операторов описания и управления.

В 1. Назначение величин символов. Каждый символ, используемый в модели, должен иметь какую-то величину. Компилятор не распознаёт значения символов, конфликтующих с постоянными ссылками. Следовательно, надо избегать одинаковых символов для различных объектов.

В 2. Автоматическое перераспределение объектов. При моделировании число объектов какого-либо типа заданных командой SIZE может быть изменено командой REALLOCATE

В 3. Представление значений транзакта. Язык поддерживает 4 формата представления значения транзакта: B - байт ±(27 - 1), H - полуслово ±(215 - 1), F - слово ±(231 - 1), L - плавающая точка ± (224- 1), причём транзакты могут иметь более одного параметра в разных форматах. Уточнение достигается за счёт помещения суффикса формата в операнд блока (см. П.5). При буквенном обозначении параметра ставится разделитель $, например МАRК ТIМЕIN$РН. При цифровом обозначении разделитель не используется: МАRК 1РН.

B 4. Макрокоманды (макросы). Если в модели какие-либо инструкции повторяются часто, полезно использовать макросы. При этом вначале необходимо определить макрос по правилам определения операторов, а затем вызвать командой МАСRO. Начало определения задаётся командой STARTMACRO со своими операндами (в пособии не рассматриваются), а окончание определения задаётся командой ENDMACRO.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: