Aleksander's question reminded me of my nagging question about dummy arguments with the target attribute. My understanding is that the target attribute prevents copy-in/copy-out which would break aliasing established by a procedure. My question is whether the TARGET needs to be specified for the entire call-tree (assuming all procedures are module procedures and hence have explicit interfaces). An example: type my_type type(another_type), pointer :: z ! other components end type my_type subroutine sub1 (a, x) type(my_type) :: a type(another_type) :: x ! Do I need TARGET here too? ... call sub1 (a, x) ... end subroutine sub1 subroutine sub2 (a, x) type(my_type) :: a type(another_type), target :: x ... a%z => x ... end subroutine sub2 -- Neil N. Carlson Motorola, Los Alamos Research Park Motorola Labs / PSRL 4200 W. Jemez Road, Suite 300 Computational Nanoscience Group Los Alamos, New Mexico 87544 [log in to unmask] Fax: (505) 663-5150 Voice: (505) 663-5106 Pager: [log in to unmask] or 888-946-2817