1! Program to test DERIVED type with components point to the DERIVED 2! type itself, and two DERIVED type with componets point to each 3! other. 4program nest_derived 5 type record 6 integer :: value 7 type(record), pointer :: rp 8 end type record 9 10 type record1 11 integer value 12 type(record2), pointer :: r1p 13 end type 14 15 type record2 16 integer value 17 type(record1), pointer :: r2p 18 end type 19 20 type(record), target :: e1, e2, e3 21 type(record1), target :: r1 22 type(record2), target :: r2 23 nullify(r1%r1p,r2%r2p,e1%rp,e2%rp,e3%rp) 24 25 r1%r1p => r2 26 r2%r2p => r1 27 e1%rp => e2 28 e2%rp => e3 29 30 r1%value = 11 31 r2%value = 22 32 33 e1%value = 33 34 e1%rp%value = 44 35 e1%rp%rp%value = 55 36 37 if (r1%r1p%value .ne. 22) STOP 1 38 if (r2%r2p%value .ne. 11) STOP 2 39 if (e1%value .ne. 33) STOP 3 40 if (e2%value .ne. 44) STOP 4 41 if (e3%value .ne. 55) STOP 5 42 if (r1%value .ne. 11) STOP 6 43 if (r2%value .ne. 22) STOP 7 44 45end 46