A structure constructor lets you specify scalar values of a derived
type. It takes the following form:
d-name (expr-list)
d-name Is the name of the derived type.
expr-list Is a list of expressions specifying component
values. The values must agree in number and
order with the components of the derived type.
If necessary, values are converted (according
to the rules of assignment), to agree with their
corresponding components in type and kind type
parameters.
A structure constructor must not appear before its derived type is
defined.
If a component of the derived type is an array, the shape in the
expression list must conform to the shape of the component array.
If a component of the derived type is a pointer, the value in the
expression list must evaluate to an object that would be a valid
target in a pointer assignment statement. (A constant is not a
valid target in a pointer assignment statement.)
If all the values in a structure constructor are constant
expressions, the constructor is a derived-type constant expression.
1 – Examples
Consider the following derived-type definition:
TYPE EMPLOYEE
INTEGER ID
CHARACTER(LEN=40) NAME
END TYPE EMPLOYEE
This can be used to produce the following structure constructor:
EMPLOYEE(3472, "John Doe")
The following example shows a type with a component of derived
type:
TYPE ITEM
REAL COST
CHARACTER(LEN=30) SUPPLIER
CHARACTER(LEN=20) ITEM_NAME
END TYPE ITEM
TYPE PRODUCE
REAL MARKUP
TYPE(ITEM) FRUIT
END TYPE PRODUCE
In this case, you must use an embedded structure constructor to
specify the values of that component; for example:
PRODUCE(.70, ITEM (.25, "Daniels", "apple"))