« previous |
5.4 Derived Data Types
You have seen in previous chapters the six intrinsic data types of Fortran 90: INTEGER, REAL, CHARACTER, COMPLEX, LOGICAL and arrays. Some times it is useful to define new data types, or derived data types. New types are define using the TYPE command:
TYPE name
declaration_1
declaration_2
...
declaration_n
END TYPE name
The declarations define the components in this type. It declares both the name and type of each component. For example:
TYPE course_list
CHARACTER
(15) :: Last_name, First_name
CHARACTER
(1) :: Middle
INTEGER ::
Student_ID
REAL :: average
CHARACTER(1)
:: grade
END TYPE course_list
Variables or constants can be defined as a certain type using the following declaration:
TYPE(name) :: var
Using the type defined above:
TYPE(course_list) :: A, B
Now A and B will have 6 components each: Last_name, First_name, Middle, Student_ID, average, grade, and list. You can also define an array so that all its components are of derived type:
TYPE(course_list), DIMENSION(10) :: A
Now A is a single dimension array with 10 elements all of the derived type course_list. We can assign a value to an element of A as follows:
A(1) = couse_list("Smith", "Joe", "J", 11111, 95.5, "A")
The first element of A contains all this information. What if you want to access only a portion of A(1)? Then you use the component selector character (%).
PRINT *, A(1)%Student_ID
will look at element 1 of A and find the component defined in the TYPE declaration as Student_ID; so, it will print:
11111
By the same token, the following statements:
PRINT '(1x, A5, F7.2)', A(1)%First_name, A(1)%average
will produce:
Joe 95.50
Of course you can use the selector with READ statements, assignment statements, executions, etc. The values can be treated like any other variable or constant.
« previous |