Ранее были рассмотрены прямые способы адресации, когда:
1) номер объекта задается константой
QUEUE 2; Стать в очередь 2
SEIZE 1; Занять устройство 1
2) номер объекта задается СЧА
LEAVE PI; Освободить МКУ с номером, задаваемым параметром 1
Адресация может быть относительной и по отношению к самому блоку. Это осуществляется при помощи записи *+/- n. Например,
TRANSFER,*+2
В этом случае сам блок TRANSFER является ориентировочным блоком. Транзакт пытается войти во второй, относительно блока TRANSFER, блок.
Подобные ссылки не зависят от свойств транзакта, обрабатываемого в данный момент времени. Использование прямой адресации может привести к введению большого числа дополнительных блоков только для того, чтобы записать номера объектов в СЧА, т.е. к увеличению объема модели. Существенным образом сократить объем модели и использовать зависимость номеров объектов от свойств транзактов позволяет косвенная адресация.
Общий формат косвенной адресации:
C4A*CЧAj или СЧА*СЧА<имя>
Там, где допустимо использование СЧА, обычно могут использоваться и СЧА*СЧА.
При использовании косвенной адресации параметр Р может опускаться.
Пример 4.46
SEIZE P*X1
Занять устройство, номер которого содержится в параметре транзакта, а номер параметра определяется значением ячейки XI.
SAVEVALUE 1,Х*Р2
Поместить в ячейку с номером 1 значение, содержащееся в ячейке, номер которой определяется параметром 2.
Пример 4.47
FUNCTION RN1,D3; Функция распределения типов сообщений
0.2,1/0.5,2/0.999999,3
FUNCTION RN2,C20; Функция распределения числа символов
; сообщения типа 1
FUNCTION RN3,C20; Функция распределения числа символов
; сообщения типа 2
FUNCTION RN4,C20; Функция распределения числа символов
; сообщения типа 3
…
GENERATE 100,10