Ключевым понятием при описании прямоугольных областей является понятие одномерной области. Одномерная область служит для задания диапазона точек на некоторой оси координат индексного пространства. В простейшем случае при описании одномерной области указывается имя одномерной области, имя индекса и границы изменения значений индекса:
RegionK: (k =1..15).Имя-одномерной-области может использоваться для ссылки на эту область.
Имя-индекса есть индексная переменная, множество значений которой определяется диапазоном const-expression .. const-expression. Границами диапазона являются целые положительные константные выражения, построенные из целых констант, параметров области и арифметических операций. Требуется, чтобы в программе всем параметрам области были присвоены конкретные значения в описании параметров области. Значение нижней границы диапазона должно быть не больше значения верхней границы.
Многомерная область строится при помощи операции ";" произведения прямоугольных областей.
Пример описания двумерной области, полученной с помощью операции произведения одномерных областей Axis и AxisL:
Square: (AxisK : (k=1..15) ; AxisL : (l=1..5) ) .Область Square может быть описана также другими способами (например, с учетом описания, приведенного выше):
Square : (RegionK ; AxisL : (l=1..5) ).Операция ";" произведения прямоугольных областей обладает следующим свойством: если A и B - области, то A;B=B;A .
Это означает, что порядок направлений индексного пространства при описании области не фиксируется (или, что с точки зрения пользователя то же самое, фиксируется некоторым произвольным образом). Если порядок направлений индексного пространства существенен (например, необходимо согласование направлений при использовании величин на одних и тех же областях в различных разделах), то он может быть задан при помощи описания INDEX (см. п. 5.1.2).
Области, являющиеся операндами операции произведения областей, должны иметь различные имена индексов.
Модификация прямоугольной области может состоять в добавлении некоторого числа точек, в удалении точек или изменении диапазона. Модификация двух первых типов описывается при помощи функций границ LEFT(n) и RIGHT(n). Функция LEFT применяется к левой границе диапазона, функция RIGHT - к правой границе диапазона. Знак "+" перед функцией означает, что к одномерной области добавляются точки, "-" - что из одномерной области удаляются точки. Обе эти функции имеют один параметр n, определяющий число точек, которые необходимо удалить или добавить к области. В качестве фактического параметра функций LEFT и RIGHT может быть задана только целая положительная константа. Обращение к функциям допустимо лишь в контексте с именем одномерной области, задающей модифицируемый диапазон:
name-onedimensional-domain {+,-} LEFT(n)или
name-onedimensional-domain {+,-} RIGHT(n).Например, описание
FlushK : Square / AxisK - LEFT(2) + RIGHT(2).определяет область FlushK, состоящую из точек k=3 .. 17.
Границы диапазона, получаемого в результате применения функций LEFT или RIGHT, должны быть положительными целыми, причем левая граница не должна превосходить правую.
Описание Square2:
Square / AxisK+Left(1)-Right(2) .неверно, так как левая граница получаемого в результате диапазона k=0..13 не является положительной.
Область, модифицируемая при помощи функций Left или Right должна быть многомерной областью.
Можно изменить составляющую одномерную область и путем явного переопределения диапазонов. Для этого в модификации надо указать имя индекса направления и его новое значение. Например:
Newsquare: Square / AxiisK+RIGHT(3), L=50...80.Если список модификаций содержит более одного элемента, то заданные в этом списке модификации действуют на модифицируемую область в порядке написания слева направо.
Кроме определения прямоугольных областей, в Норме имеется возможность задания диагональных областей путем наложения условий на уже определенную область (прямоугольную или диагональную).
Диагональная область определяется при помощи условий на индексы некоторой ранее определенной области D и состоит из тех точек области D, в которых эти условия принимают значение ''истина''. Например, описания
KL: ( (k=1..10) ; (l=1..10) ) . Diagonal: KL/ k=l.задают область Diagonal, состоящую из точек (k=1, l=1), (k=2, l=2), ...., (k=10, l=10).
Индексы величин, используемых при записи условия на индексы, не обязательно должны входить в множество индексов области D, на которую накладываются условия --- это могут быть внешние индексы (см. п. 5.2.3.2).
Допустимый вид условий на индексы позволяет статически определить точки, из которых состоит диагональная область (это возможно, конечно, и для прямоугольной области). Поэтому прямоугольные и диагональные области являются статическими объектами, в отличие от условных областей, рассматриваемых ниже.