Я был удивлен, что вы не можете поместить элемент массива в качестве управляющей переменной сделать петлю, как это:Использование элемента массива в качестве управляющей переменной сделать петлю в Фортран
program test
integer, dimension(2) :: i
do i(1) = 1, 3
do i(2) = 1, 3
! anything here
write(*, *) i
end do
end do
end program
Мой вопрос, почему не допускается ?
Редактировать: Или разрешено, но я делаю неправильно?
Сообщение об ошибке от ifort против 11.1:
test.f90(4): error #5082: Syntax error, found IDENTIFIER 'I' when expecting one of: (% : . = =>
do i(1) = 1, 3
-------^
test.f90(4): error #5082: Syntax error, found ',' when expecting one of: <END-OF-STATEMENT> ;
do i(1) = 1, 3
---------------^
test.f90(5): error #5082: Syntax error, found IDENTIFIER 'I' when expecting one of: (% : . = =>
do i(2) = 1, 3
-------^
test.f90(5): error #5082: Syntax error, found ',' when expecting one of: <END-OF-STATEMENT> ;
do i(2) = 1, 3
---------------^
test.f90(4): error #6535: This variable or component must be of a derived or structure type [DO]
do i(1) = 1, 3
----^
test.f90(4): error #6460: This is not a field name that is defined in the encompassing structure. [I]
do i(1) = 1, 3
-------^
test.f90(8): error #6099: An ENDDO statement occurred without a corresponding DO or DO WHILE statement.
end do
----^
test.f90(9): error #6099: An ENDDO statement occurred without a corresponding DO or DO WHILE statement.
end do
----^
Сообщение об ошибке от gfortran V4.5.1 & 4.8.3 является:
test.f90:4.4:
do i(1) = 1, 3
1
Error: Unclassifiable statement at (1)
test.f90:5.4:
do i(2) = 1, 3
1
Error: Unclassifiable statement at (1)
test.f90:8.7:
end do
1
Error: Expecting END PROGRAM statement at (1)
test.f90:9.7:
end do
1
Error: Expecting END PROGRAM statement at (1)
Не могли бы вы привести источник вашего заявления? –
Я использовал ifort v 11.1 и gfortran 4.5.1 и 4.8.3 для компиляции кода выше. Я скоро добавлю сообщение об ошибке в вопрос – user3136376