next up previous contents
След.: Упражнение Выше: Выражения и присваивания Пред.: Присваивание производных типов по   Содержание


Оператор и конструкция WHERE

Существует оператор и конструкция присваивания массивам под управлением логической маски WHERE. Оператор имеет вид

WHERE(логическое выражение) оператор присваивания

Например [14],

WHERE (TEMP >= 100.0) TEMP = TEMP - REDUCE_TEMP

Здесь TEMP и REDUCE_TEMP -- массивы одинаковой конфигурации. Еще пример:

WHERE(A >= 0) SQA = SQRT(A)

Конструкция имеет вид

[имя:]WHERE(логическая маска)

тело конструкции: оператор(ы) присваивания массивам

[ELSEWHERE[(необязательная маска)]]

тело конструкции: оператор(ы) присваивания массивам

END WHERE [имя конструкции]

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

Например, [14]

WHERE (PRESSURE <= 1.0)

PRESSURE = PRESSURE + INC_PRESSURE

TEMP = TEMP - 5.0

ELSEWHERE

RAINING = .TRUE.

END WHERE

После ELSEWHERE с маской могут быть еще ELSEWHERE. Пример:

WHERE (A > 0.0)

A = LOG(A)

ELSEWHERE (A < 0)

A = -LOG(-A)

ELSEWHERE

A = 7.40

END WHERE

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



Подсекции

Ilya A. Chernov 2012-12-19
X