Базирование многосекционной программы

Для каждой программной секции должен быть определен свой регистр базы (или, если это требуется, несколько регистров базы). Первый операнд команды, определяющий регистр базы для некоторой секции, должен обозначать адрес из этой секции (в частности, первым операндом может быть символическое имя предложения START, CSECT или DSECT). Команды, которые определяют базовые регистры для каждой секции, и машинные команды, которые загружают эти базовые регистры, могут располагаться за пределами секции. Адресные константы, которые были использованы с целью загрузки регистров для второй и третьей секций, располагаются в первой секции. Определяющие команды и загрузки регистров первой и второй секций находятся в «своих» секциях. Далее по аналогии — предложения для 3-ей секции помещены во второй секции.
При выборе мест расположения команд USING и команд загрузки базовых регистров надо стремиться к тому, чтобы к моменту употребления неявного адреса в какой-либо секции этот адрес был обеспечен определенным и загруженным базовым регистром.
Константы, а точнее их адреса, которые были получены с использованием литералов, также должны быть обеспечены базовыми регистрами. Это очень важный момент, когда принимается решение, включать ли в исходный модуль (и если да, то где располагать) предложения. Заметим, что если данные предложения не используются, то адреса констант, полученных от литералов и употребленными в любом месте исходного модуля, будут базироваться с помощью регистров (базовых) первой секции. На это необходимо обращать внимание, когда выбираются числа этих регистров и значения базовых адресов. Допустим, что команда I какой-либо программной секции S1 использует неявный адрес из другой программной секции S2. Это значит, что значения в базовых регистрах для S2 не должны изменяться командами S1, предшествующими I по выполнению. По такой же аналогии происходит ремонт кухни. Если две секции кухонного гарнитура после ремонта поменять местами (в нашем случае изменить адрес), то данная замена в большинстве случаев будет неадекватной.
Такая тесная связь между программными секциями одного и того же исходного модуля, и в связи с этим недопустимость употребления в разных программных секциях одних и тех же символических имен в поле названия, создает затруднения в разделении работы по составлению программы между разными программистами. Связь между секциями и сопутствующие ей неудобства в значительной мере ослабляются путем выделения секций в различные (независимо транслируемые) исходные модули.