Содержание

Назад Вперед

5.2.4. Вызов раздела

call-part :
COMPUTE name-part [ ( actual-parameters )]
actual-parameters :
[ list-in-parameter ] [ RESULT list-out-parameter ]
out-parameter :
name-scalar
name-variable-on-domain ON domain-of-parameter
iterated-variable-on-domain ON domain-of-parameter

Фактическими параметрами раздела могут быть арифметические выражения, имена разделов и функций, либо величины на областях (массивы).

Фактические параметры раздела могут быть объявлены исходными или результатами при помощи ключевого слова RESULT . Например:

COMPUTE Velocity ( Delta+0.5, Fi ON Oijk RESULT V ON Oij).

Первые два параметра являются исходными, третий - результат. Побочный эффект невозможен - если множества исходных параметров и параметров-результатов пересекаются, то это приводит к повторному присваиванию значений величинам, что в Норме запрещено.

Следует отметить, что вызов раздела, по существу, является развитием понятия соотношения, используемого в операторе ASSUME, так как дает возможность получать несколько результатов (значений различных величин) сразу. Вызов раздела вне оператора ASSUME является развитием понятия скалярного оператора.

Способы задания исходных фактических параметров раздела совпадают со способами задания фактических параметров функции, описанными в п. 5.2.3.3.

Фактическими параметрами-результатами могут быть скаляры, величины с индексами (быть может, заданными правилом умолчания индексов), величины на областях (массивы).

Если вызов раздела находится в теле оператора ASSUME, то параметрами результатами не могут быть скаляры и величины на статических областях (которые не меняются при различных значениях индексов из заголовка оператора ASSUME) - это заведомо приводит к переприсваиванию.

Если вызов раздела находится вне тела оператора ASSUME , то параметрами результатами могут быть только имена скаляров, величины с индексами-константами и величины на статических областях.

Пример различных способов задания фактических параметров при вызове раздела.

VARIABLE A,B DEFINED ON Grid: (Oi: (I=1..N);Oj: (J=1..M) ).
VARIABLE X,Y DEFINED ON Oi. VARIABLE T DEFINED ON Oj.
VARIABLE Gamma DOUBLE.
INPUT A ON Grid ,Y ON Oi,T ON OJ. INPUT Gamma.
OUTPUT X ON Oi, B ON Grid /J=2..12.
DOMAIN PARAMETERS N =10, M =20.
EXTERNAL PART DzDy.
FOR Oi ASSUME
COMPUTE TEST ( DzDy, T ON Oj, Y RESULT X, B ON Grid /J=I+2).
COMPUTE SCALAR( A ON Grid RESULT Gamma, B ON Grid /J=2).

В операторе ASSUME описано правило вычисления вектора Xi, i=1,...,10 и части матрицы B: Bi,j, i=,...,10, j=3,...,12 .

Скалярный вызов раздела SCALAR определяет скаляр Gamma и второй столбец матрицы B.

Правила соответствия формальных и фактических исходных параметров раздела совпадает с правилами соответствия для функции, описанными в п. 5.2.3.

Правила соответствия формальных и фактических параметров-результатов являются частным случаем правил п. 5.2.3:

Формальный параметрФактический параметр
скалярскаляр
скалярвеличина с индексами-константами
величина на областивеличина на области

Содержание

Назад Вперед