Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UP_s_num_1.doc
Скачиваний:
35
Добавлен:
20.12.2018
Размер:
2.93 Mб
Скачать

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

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

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

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

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

А 4. Формат операторов. В языке GPSS/H символ OPERCOL ( OPERand start COLumn ) обозначает по умолчанию 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]