SEQUENCE

Statement: Preserves the storage order of a derived-type definition.

Syntax

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

!DEC$ 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

See Also