Paul,
Sorry to continue with this; My understanding is that 'No shape' is required as they are both vectors, although we do need their size, which I assume /check provides.
When compiling with /check, the call 'get_angle_props (tprop(9:12), angle_props)' needs to say that 'tprop(9:12)' is a vector of length 4 and 'angle_props' is a vector of length 9.
The length 4 is not being correctly provided. The value of nd = size(dimen) gives a value of 1.
Is 'call get_angle_props (tprop(9:12), angle_props)' the same as
'call get_angle_props (tprop(9:12), angle_props(1:9) )' ?
Or am I wrong in assuming angle_props means the same as angle_props(1:9) as a subroutine argument ?
It is my assumption that tprop(9:12) should be equivalent to a real*8 1-dimensional array of length 4, but that is not happening. Am I wrong in assuming this ? I thought array sections were themselves arrays.
I again changed the program, and ran it on Ver 4.9.1 with /check /lgo and got some interesting results:
INTEGER*4 SEC_TYPE, UPROP(13)
REAL*8 TPROP(13)
!
tprop = 0
tprop(9:10) = .100
tprop(11:12) = .005
call SECTION_PROP (SEC_TYPE, TPROP, UPROP)
end
SUBROUTINE SECTION_PROP (SEC_TYPE, TPROP, UPROP)
!
! calculate section properties for generic section type
!
INTEGER*4 SEC_TYPE, UPROP(13)
REAL*8 TPROP(13)
real*8 angle_props(9)
!
call get_angle_props (tprop, angle_props, 'tprop, angle_props ')
call get_angle_props (tprop, angle_props(1:9), 'tprop, angle_props(1:9) ')
call get_angle_props (tprop(1:13), angle_props, 'tprop(1:13), angle_props ')
call get_angle_props (tprop, angle_props(4:6), 'tprop, angle_props(4:6) ')
call get_angle_props (tprop, angle_props(2:7), 'tprop, angle_props(2:7) ')
call get_angle_props (tprop, angle_props(1:6), 'tprop, angle_props(1:6) ')
call get_angle_props (tprop(1:13), angle_props(4:6), 'tprop(1:13), angle_props(4:6) ')
call get_angle_props (tprop(1:), angle_props(5:), 'tprop(1:), angle_props(5:) ')
call get_angle_props (tprop(1:8), angle_props(4:6), 'tprop(1:8), angle_props(4:6) ')
call get_angle_props (tprop(4:8), angle_props(4:7), 'tprop(4:8), angle_props(4:7) ')
!
100 RETURN
!
END SUBROUTINE SECTION_PROP
subroutine get_angle_props ( dimen, props, desc )
!
! calculate the properties of an (un)equal angle
!
real*8 dimen(*), props(*)
character desc*(*)
integer nd, np
!
nd = size (dimen)
np = size (props)
write (*,*) 'nd = ',nd,' np = ',np, ' ', desc
!
RETURN
END
The local array 'angle_props' is treated differently that the argument array 'tprop'
It would appear that any angle_props(3:y) gets the same length, irrespective of the value of y,
while any value of tprop(x:y) gets a length of 1
To me this shows that /check is not including the correct length
John