J3/06-334 Date: October 30, 2006 To: J3 From: Aleksandar Donev Subject: Co-indexed procedure references References: 06-263r1, 06-007r1 Dependencies: UTI089 [309:12+] I find the "feature" described in Note 12.18 unacceptable. The of a should not be allowed to be a co-indexed object. The same procedure may have different physical addresses on different processors in distributed architectures. The machines in the cluster may be of a different architecture---it is NOT even the same a.out, yet alone at the same virtual address. So taking a procedure pointer from one image and calling it on another is hard to implement without any real benefits. I believe that this will be resolved with the resolution of UTI089. [309:4] There should be an edit prohibiting from being a co-indexed object, so that one cannot do (or think one is doing) remote calls (see UTI089 and the next point). Since the dynamic type will be the same on all images, the only reason for using a co-indexed is the PASS attribute. However, it is not clear our design of PASS is actually consistent with the constraints on dummies when the actual is co-indexed, so I think for now we should constrain this. Edits: [309:8++] Add new constraint after C1227: C1227b (R1221) The in a shall not be a co-indexed object. [309:12+] Replace Note 12.18 with: NOTE 12.18 A co-array is permitted to be of a type that has a procedure pointer component or a type bound procedure. Such a procedure is not permitted to be invoked through a co-indexed object because this might require an action to be taken by another image. CALL A[I]%PROC(X) ! Remote procedure reference not allowed [end NOTE]