Visible to Intel only — GUID: GUID-757B2FC1-24C5-40A5-9823-47BC9B0F719F
Visible to Intel only — GUID: GUID-757B2FC1-24C5-40A5-9823-47BC9B0F719F
SEQUENCE
Statement: Preserves the storage order of a derived-type definition.
SEQUENCE
Description
The SEQUENCE statement allows derived types to be used in common blocks and to be equivalenced.
The SEQUENCE statement appears only as part of derived-type definitions. It causes the components of the derived type to be stored in the same sequence they are listed in the type definition. If you do not specify SEQUENCE, the physical storage order is not necessarily the same as the order of components in the type definition.
If a derived type is a sequence derived type, then any other derived type that includes it must also be a sequence type.
Example
!DIR$ PACK:1
TYPE NUM1_SEQ
SEQUENCE
INTEGER(2)::int_val
REAL(4)::real_val
LOGICAL(2)::log_val
END TYPE NUM1_SEQ
TYPE num2_seq
SEQUENCE
logical(2)::log_val
integer(2)::int_val
real(4)::real_val
end type num2_seq
type (num1_seq) num1
type (num2_seq) num2
character*8 t, t1
equivalence (num1,t)
equivalence (num2,t1)
num1%int_val=2
num1%real_val=3.5
num1%log_val=.TRUE.
t1(1:2)=t(7:8)
t1(3:4)=t(1:2)
t1(5:8)=t(3:6)
print *, num2%int_val, num2%real_val, num2%log_val
end