4. Операнд А имеет впереди символы RT (arrival rate), что обозначает определение доли приходов (относительной частоты) в какой то интервал. При этом варианте операндом Е оговаривается интервал времени являющийся шагом таблицы. Этот вид используется для определения такой статистики как « приход в течении часа » . Счётчик приходов ОБ TABULATE при каждом исполнении ОУ TABLE увеличивается на единицу. После того как определена таблица, управление осуществляется с помощью «контролёра транзактов », располагающегося в СБС, где к текущему значению абсолютного времени прибавляется значение времени, стоящее в операнде Е. При этом каждый раз производятся следующие действия: накопленное время записывается в таблицу, счётчик приходов обнуляется, контролируемый транзакт включается в СБС со временем равным текущему значению абсолютного времени плюс значение операнда Е.
В - не имеет значения по умолчанию, определяет собой верхнее значение первого ( нижнего ) интервала частот, в GPSS/H допускается использование числа с плавающей точкой. Первый интервал может простираться до минус бесконечности.
С – не имеет значения по умолчанию, представляет собой ширину интервала и постоянен для всех интервалов кроме первого и последнего. Естественно, что ширина интервала должна быть больше нуля и может представляться числом с плавающей точкой. (Для лучшего восприятия таблицы следует использовать целочисленные значения).
D – не имеет значения по умолчанию, определяет число частотных интервалов таблицы. Если первый символ операнда D буквенный - а именно W, то такая таблица является взвешенной . При этом ОБ TABULATE, используя свой операнд В создаёт взвешенные значения средних величин, стандартных отклонений, количества наблюдений. На рис. 3.2 приведена схема построения таблицы
1-ый 2-ой 3-ий D-1- ый Последний
С-
В В+С В+2С В+(D-2)C B+(D-1)CПри построении таблицы используются следующие правила :
· Если, записываемое в таблицу значение меньше или равно верхней границе первого интервала, оно записывается в этот первый интервал ,
· Если, записываемое в таблицу значение больше верхней границы предпоследнего интервала, оно записывается в последний интервал ,
· Все другие значения включаются в свои частотные интервалы, по принципу меньше или равно значению верхнего предела промежуточного интервала,
· Когда происходит запись наблюдаемого значения, показания счётчика частотного интервала увеличивается на единицу.
Рассмотрим примеры записи ОУ TABLE :
1. SAM TABLE M1,100,100,10
2. SAM TABLE M1,100,100,W10
3. 10 TABLE IA,50,50,5
4. ARRIV TABLE RT50,50,10,1000
Первый и второй примеры для таблицы SAM, отличаются только тем, что вторая таблица взвешенная. В них верхняя граница первого интервала равна 100 , ширина промежуточных интервалов равна 100, число интервалов 10. В третьем примере для таблицы с номером 10, определяются промежутки между приходами транзактов, верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50, число интервалов равно 5. В четвёртом примере для таблицы с именем ARRIV определяется доля приходов в долях 1000 ( операнд Е ), верхняя граница первого интервала равна 50, ширина промежуточных интервалов равна 50 , число интервалов равно 10.
В. Операторы управления логикой моделирования
< [label] DO A,B,[C] >
< [label] ENDDO >
label - не обязательный ярлык , который чаще всего отсутствует, характеризует собой имя организуемой пели ,
А - не имеет значения по умолчанию, символизирует собой индекс начала петли, представляющий собой целочисленную скалярную АМП, записываемый в виде &I=1.
B - не имеет значения по умолчанию, характеризует собой предельный номер конечного члена петли,
С – не обязательный операнд, по умолчанию равен единице, задаёт приращение индекса.
Когда индекс достигает предельного значения , исполняется ОУ ENDDO и петля управления прекращает своё существование. Если значения заданы числом с плавающей точкой, то число усекается до целого значения, отрицательные приращения программой не поддерживаются. Количество петель управления может достигать 19, причём они вкладываются друг в друга, создавая своеобразную иерархию, второстепенные петли в МФ изображаются с отступом вправо от основной петли, следующая вложенная петля также отступает вправо. Между ОУ DO/ENDDO размещаются другие ОУ , например CLEAR/START. Отметим важные особенности петли ОУ DO/ENDDO :
· DO/ENDDO создают структуру петли управления, а не петли транзактов, поэтому в петле присутствуют только ОУ, а не ОБ.
· Необходимо помнить, что операнды в петле должны записываться по правилам записи операндов, предусмотренных программой, т.е. без пробелов, появление пробела справа воспринимается программой как начало комментарий.
Рассмотрим пример записи петли управления:
DO &I=1,10,1
START 1
CLEAR
ENDDO
END
В примере петля управления задана операндами ОУ DO, операнд D можно было бы не писать, так как его значение по умолчанию и так равно 1, петля начинается с первого шага и заканчивается на 10 -м шаге. При каждом значении индекса происходит исполнение ОУ START/CLEAR . При отсутствии петли управления эту пару ОУ надо было бы написать 10 раз подряд. Отметим также, что при введении петли управления на первое место в модуле управления встаёт ОУ DO.
ОУ DO/ENDDO являются важными компонентами мощного и гибкого языка операторов управления (control statement language -CSL), являющегося частью GPSS/H .
Другие ОУ управления логикой
Другими компонентами CLS являются ОУ, обеспечивающий простоту вычислений - LET, ОУ ввода и вывода информации – GETLIST и PUTPIC, логические операторы IF,ELSEIF,ELSE ,ENDIF, ОУ способный обращаться и вызывать внешние подпрограммы - CALL , ОУ безусловного обращения GOTO . Все эти операторы представляют несомненный интерес , но их рассмотрение выходит за рамки предлагаемого материала.
Ниже рассмотрим только основные ОО, которые будут использоваться в материале, приводимые ОО даются в алфавитном порядке.
INTEGER
Этот ОО используется для описания целочисленных АМП, представляющих собою скалярную одноразмерную переменную. Все целочисленные АМП должны быть определены в ОО INTEGER до их первого появления в МФ. Формат записи ОО INTEGER имеет вид :
< INTEGER A,B,C,… >
label - не имеет значения по умолчанию, появление ярлыка воспринимается как ошибка компиляции.
А – не имеет значения по умолчанию, отсутствие операнда воспринимается как ошибка компиляции, определяет имя целочисленной АМП.
В,С - имеют тот же смысл, что и операнд А и при необходимости определяют дополнительные целочисленные АМП.
Таким образом, ОУ INTEGER может определять несколько АМП одновременно. При этом АМП разделяются запятыми, если определяется одноразмерный массив, то число членов массива заключается в круглые скобки. Рассмотрим пример использования ОУ INTEGER
1. INTEGER &I,&J,&K
2. INTEGER &IVEC(25)
В первом примере задаются 3 различных АМП, во втором примере определяется массив, включающий в себя 25 членов. Существует ещё четыре ОО, описывающие другие типы АМП ( см.3.3.4).
OPERCOL ( переназначить начало записи операндов )
Этот ОО используется для переназначения стартовой позиции записи операндов, которая по умолчанию начинается с 25-ой колонки ( подробнее см. параграф 3.4) и может меняться от 10-ой до 60-ой колонки. Формат записи ОО OPERCOL (ORERand start COLumn ) имеет вид:
< OPERCOL A >,
А – по умолчанию равен 25, при наличии операнда меняет позицию начала записи операндов, в соответствии с числом стоящим в поле операнда (10 –60 ).
Приведём пример записи ОО OPERCOL :
OPERCOL 35
В примере стартовая позиция начала записи операндов изменена на 35.
Применение ОО OPERCOL особенно полезно, когда создаются одинарные или вложенные петли управления, ОО OPERCOL располагается в модуле описания.
REALLOCATE ( перераспределять )
Этот ОО используется для указания об увеличении общей памяти, которая в студенческой версии имеет объём равный 32720 байт, а обычно используется 10000 байт. Располагается ОО REALLOCATE в любом месте МФ, но разумней располагать его в модуле описания, чтобы не дожидаться появления сообщения об ошибке № 411 –« out of COMMON »- переполнение общей памяти. Формат записи ОО REALLOCATE имеет вид :