J3/13-307r1 To: J3 From: Van Snyder Subject: Edits for US-05 Revise DIM= descriptions Date: 2013 August 19 References: 10-187r2 1. Specs and syntax ------------------- 10-187r2 was an interpretation request, asking whether the restrictions on the DIM argument were necessary. It was decided that the restrictions were not necessary, but that the interpretation mechanism was the wrong vehicle to affect such change. >From the discussion, question, and answer parts of 10-187r2: DISCUSSION: Some of the reduction functions have two forms, one with a DIM argument and one without; the DIM argument is not optional. IALL is an example. Other reduction functions have a DIM argument that is optional. COUNT is an example. The actual argument corresponding to the DIM actual argument is prohibited from being an optional dummy argument in both cases. The reason in the case of an optional DIM argument is so that the processor can determine the rank of the result. In the case of those with two forms, there is no problem for the processor to determine the rank, so the prohibition against the corresponding actual argument being an optional dummy argument is pointless. There is already a prohibition against it being an absent optional dummy argument in 12.5.2.12p3(4). Consider, for example subroutine S ( ARRAY, DIM ) integer, intent(in) :: ARRAY(:,:) integer, intent(in), optional :: DIM if ( present(dim) ) then print *, iall(array,dim) else print *, iall(array) end if end subroutine S This subroutine clearly does not conform, but a processor would have no difficulty determining the rank of the result of IALL(ARRAY,DIM). QUESTION: (1) Was the pointless restriction intentional, or was it an oversight that it did not get removed in the two-form case when MAXLOC etc. were added? (2) Is it necessary to continue the pointless restriction? ANSWER: (1) This was an oversight. (2) No. Edits are provided to remove it. 2. Edits to 10-007r1 -------------------- [Introduction p2+] In the new list of new features, add o Intrinsic functions: Several intrinsic functions no longer prohibit present optional DIM arguments. [13.2.4p1 316:26] Insert "absent" before "optional". [13.7.10p3 328:8] ALL Delete "The corresponding ... optional dummy argument." [13.7.13p3 329:12] ANY Delete "The corresponding ... optional dummy argument." [13.7.61p3 347:34] FINDLOC Delete "The corresponding ... optional dummy argument." [13.7.71p3 352:27] IALL Delete "The corresponding ... optional dummy argument." [13.7.73p3 353:22] IANY Delete "The corresponding ... optional dummy argument." [13.7.83p3 357:30] IPARITY Delete "The corresponding ... optional dummy argument." [13.7.108p3 366:29] MAXLOC Delete "The corresponding ... optional dummy argument." [13.7.109p3 367:35] MAXVAL Delete "The corresponding ... optional dummy argument." [13.7.114p3 369:36] MINLOC Delete "The corresponding ... optional dummy argument." [13.7.115p3 371:2] MINVAL Delete "The corresponding ... optional dummy argument." [13.7.123p3 374:29-30] NORM2 Delete "The corresponding ... optional dummy argument." [13.7.128p3 377:26] PARITY Delete "The corresponding ... optional dummy argument." [13.7.133p3 379:7] PRODUCT Delete "The corresponding ... optional dummy argument." [13.7.161p3 390:22] SUM Delete "The corresponding ... optional dummy argument." [13.7.165p3 392:12-13] THIS_IMAGE Delete "The corresponding ... optional dummy argument."