Я пытаюсь понять, как фортран передает частичный контекст массива другому.
«myarray» имеет 8 измерений (или 8 из 3 значений), а «myarray1» имеет одно (или одно из 3 значений).Один выбранный контекст myarray будет иметь значение 3 и должен иметь возможность передавать этот контекст myarra1.Однако фортран не может преобразовать это и передать его.
function function1(start) result(out1)
implicit none
type array
character list1
integer list2
integer list3
end type array
type(array), dimension(8) :: myarray
integer :: start;
integer :: out1;
myarray=[array('A',1,3), array('C',2,3), array('B',3,3), &
array('E',4,3), array('F',4,3), array('G',5,3), &
array('H',6,3), array('I',5,3)]
out1=function2(start);
contains
function function2(list2) result(list1)
implicit none
type array1
character lista
integer list21
integer list31
end type array1
type(array1), dimension(1) :: myarray1
integer :: start1;
integer :: out11;
integer, intent(in) :: list2; ! input
integer :: list1; ! output
logical :: done;
integer, dimension(1,1) :: ra;
real :: rnd1;
integer :: test;
myarray1=[array1('a',0,0)]
done = .FALSE.
call random_number(rnd1);
ra = nint(rnd1*size(myarray));
print*, "marray is ", myarray;
print*, "myarray(ra) is ", myarray(1);
print*, "myarray1 is ", myarray1;
myarray1 = myarray(1); !<------ source of error.
print*, "the new myarray1 is ", myarray1;
start1=1;
out11=start1;
test=1;
list1=test+list2;
end function function2
end function function1
program test1
use iso_fortran_env
implicit none
integer :: start, xout;
integer :: function1;
start = 1;
xout=function1(2);
print*, "my output is ", xout;
end program test1
Значение myarray1 должно иметь любое значение (1 из 3) контекста из myarray.Как правильно написать эту строку "myarray1 = myarray (1)".