Я бы использовал операторы EQUATE для создания констант, и если вы хотите, чтобы они были доступны нескольким программам, вы должны поместить их в свои собственные записи и использовать оператор $ INCLUDE для переноса определений в другие программы.Обратите внимание, что все значения будут установлены во время компиляции.
Что касается «констант», которые устанавливаются в другое время, отличное от времени компиляции, или косвенно ссылаются на значения через теги (передавая постоянную ссылку),большинство программистов U2 используют какие-то контрольные записи.Поскольку файловая система и язык программирования в U2 настолько взаимосвязаны, никто никогда не задумывается об этом.В большинстве систем, которые я использовал, есть один или несколько файлов, называемых что-то вроде «SOMETHING.OR.OTHER.CTRL» со структурами записи в свободной форме.Редактор используется для вставки данных в записи в управляющем файле с помощью клавиш, описывающих функцию, например, «INVENTORY.CONSTANTS».
Для косвенных ссылок установите запись с первым атрибутом, имеющим «константу»Имена многозначные и второе поле с «постоянными» значениями, также многозначными.Например:
INVENTORY.CONSTANTS:
001: JOHN*PAUL*GEORGE*RINGO
001: 100*57*83*19833
(где "*" на самом деле является меткой значения).
Тогда программа сделает следующее:
SUBROUTINE SAMPLE(CONSTANT.NAME)
.
.
.
OPEN "","SOMETHING.OR.OTHER.CONTROL" TO CTRL.FILE ELSE BOMB
READ CONST.REC FROM CTRL.FILE, "INVENTORY.CONTSTANTS" THEN
LOCATE CONSTANT.NAME IN CONST.REC<1> SETTING CONST.POS THEN
CONST.VALUE = CONST.REC<2,CONST.POS>
END ELSE
BOMB
END
END ELSE
BOMB
END