09-198r2 To: J3 From: Bill Long, John Reid, Malcolm Cohen Subject: Pointer components and coindexed arguments Date: 2009/05/05 References: 09-007r1, 08-216r2, 08-282, 08-307 1. Introduction Passing a pointer component of a coindexed object to a pointer dummy argument is totally useless - just a longwinded way of making it go undefined. Therefore this paper proposes that this case be disallowed. Pointer components are also nearly useless when passing a coindexed object as an actual argument, so this paper proposes to disallow that case too. Allowing the case would be very complicated to describe in the standard. There is a slight loss of functionality when the user wants to pass a large object and is not interested in the pointer components, he will now have to pass only the parts of the object he is interested in, or to manually make his own temp. This loss of functionality is considered minor compared with the amount of trouble it would cause for us to allow it. 2. Edits [161:9+3] 7.2.2.3 "Data pointer assignment", 2nd sentence of Note 7.46, Change "This prevents this statement" to "This prevents a pointer assignment statement from". [161:9+4] Same note, 3rd sentence, delete ", such as ... intrinsic assignment". [161:9+5] Same note, append new sentence "For example, a derived-type intrinsic assignment where the variable and are on different images and the variable has an ultimate pointer component." {Turn brief allusion into proper explanation of an example.} [292:19+1-2] 12.5.1 after C1237, replace worthless Note 12.17 "Successive commas..." with new constraint "C1237a An actual argument that is a coindexed object shall not have a pointer ultimate component." {Avoids the huge complication of trying to describe the semantics.} [298:33-34] 12.5.2.7 "Pointer dummy variables", after p3 Move C1241 to follow p1 [298:28+] and append new constraint "C1241a The actual argument corresponding to a dummy pointer shall not be a coindexed object." {Doing this really would be totally useless (not just difficult), so disallow it.} [450:22] 16.5.2.1 "Pointer association / General", para 1, line 2, after "different targets" add "on its own image". ===END===