Доступ к элементам возвращаемого массива в Фортране

Как получить доступ к элементу массива, который возвращается из функции? Например,shape() возвращает массив целых чисел Как сравнить элемент этого массива с целым числом? Следующее не компилируется:

integer :: a
integer, dimension(5) :: b

a = 5
if (a .eq. shape(b)) then
    print *, 'equal'
end if

Ошибка:

if (a .eq. shape(c)) then
    1
Error: IF clause at (1) requires a scalar LOGICAL expression

Я понимаю, что это потому, чтоshape(c) возвращает массив. Однако доступ к элементу массива не представляется возможным, например, так:shape(c)(1)

Теперь, если я добавлю эти две строки:

integer, dimension(1) :: c
c = shape(b)

... и изменитьif пункт к этому:

if (a .eq. c(1)) then

... тогда это работает. Но действительно ли я должен объявить дополнительную переменную массива для хранения возвращаемого значенияshape()или есть другой способ сделать это?

Ответы на вопрос(4)

Ваш ответ на вопрос