Синтаксис
associate (B(0:N-1) => ...)
end associate
недействителен в Фортране: слева от элемента ассоциации должно быть имя. Только с именем (которое здесь будет B
) невозможно указать такие свойства, как границы.
Границы ассоциированного массива сущностей (опять же, здесь B
) задаются результатами использования LBOUND
в правой части (селектор) (Fortran 2018, 11.1.3.3 p.1) :
Нижняя граница каждого параметра является результатом применения встроенной функции LBOUND
(16.9.109) к соответствующему параметру селектора.
Ссылочное описание LBOUND
объясняет, как в этом случае рассчитывается граница.
Поскольку A(0:N-1)
не является целым массивом, LBOUND
возвращает 1
, поэтому нижняя граница B
в этом случае сама равна 1
.
Возможно, что нижняя граница B
будет чем-то отличным от 1
: пусть селектор будет целым массивом. В
associate(B => A)
end associate
B
будет иметь нижнюю границу, чем A
.
В заключение: ассоциированный объект может иметь нижнюю границу, отличную от 1
, но только тогда, когда он связан с целым массивом. В частности, при связывании с частью массива (и это может включать весь массив, например, B => A(:)
, A(:)
не являющийся целым массивом) ассоциированный объект всегда имеет нижнюю границу 1
.
Как говорит Владимир Ф. в другом ответе, указатель может иметь границы, контролируемые как часть назначения указателя.
person
francescalus
schedule
15.01.2021