J3/03-159 Date: 2003 Mar 14 To: J3 From: Michael Ingrassia Subject: Edits In Response To Public Comment #20 J3 previously agreed that changes were needed in response to public comment #20. That document enumerated 15 separate individual points. I summarize proposed edits for the first 14 of these points, in which case I also include the text of the original point. >1. technical comment: Section 2.2 should be amended. The > definition of a program unit should not include intrinsic > modules. Without this change, a nonintrinsic module and > an intrinsic module with the same name cannot be used in > the same program. See 03-135r1 for edits to disallow this. Proposed edits to permit using an intrinsic and a non-intrinsic module with the same name in the same program: EDITS: 11:41-42 Change "A program unit may be a main program, an external subprogram, a module, or a block data program unit." to "A program unit may be a main program, an external subprogram, a non-intrinsic module, or a block data program unit." 19:3 Change "dummy argument," to "dummy argument, intrinsic module," in the list of program constituent examples. There's another list in 2.5.1 but since it's incomplete, leave it alone. 245:3 Change "a module" to "a non-intrinsic module" in the redefinition of program unit. 246:4-5 Add after "A nonintrinsic module is defined by a module program unit or a means other than Fortran" the sentence "Conversely, a module defined by a module program unit is a nonintrinsic module." J3 response to point 2 was "J3 does not agree that there is a problem." J3 response to point 3 was "J3 does not agree that there is a problem." >4. technical comment: The standard should allow boz-literal- >constants larger than the maximum integer when they are used >as arguments to DBLE, REAL, or CMPLX. > J3 response to point 4 was that J3 does not agree that there is a problem with the description of the use of BOZ literal constants as arguments to the CMPLX, DBLE and REAL intrinsic functions, but investigation of your comment reveals that there is a problem with DATA: The constant ought to be interpreted to have the same kind as the corresponding variable. J3 will recommend that this be repaired. Note: no changes needed for 35:15-16. EDITS: 87:23-25 Change the paragraph from "If a data-stmt-constant is a boz-literal-constant, the corresponding variable shall be of type integer. The boz-literal-constant is treated as if it were an int-literal-constant with a kind-param that specifies the representation method with the largest decimal exponent range supported by the processor." to "If a data-stmt-constant is a boz-literal-constant, the corresponding variable in the sequence of variables shall be of type integer, real, double precision, or complex; the value of the constant shall be the same as the value of intrinsic INT, REAL, DBLE, or CMPLX respectively, with the first argument taken to be the boz-literal-constant, an additional argument with keyword KIND taken to be the kind of the corresponding variable, and no other arguments." 303:23-24. Change "If Y is absent and X is not complex" to "If Y is absent and X is of type integer or real". After this sentence add the sentence "If Y is absent and X is a boz-literal-constant, the bit pattern specified by the boz-literal-constant (with as many zero bits as necessary appended) is used to define a complex value of the appropriate kind in a processor-dependent way." 303:24 Change "If X is complex," to "If Y is absent and X is complex," 303:27 After the 1st sentence add the sentence "On some processors CMPLX(Z'3E8000003F800000',KIND=4) might have the value (0.25,1.0)" J3 response to point 5 was "J3 does not agree that there is a problem. This was addressed by Fortran 90 Interpretation 12." J3 response to point 6 was "J3 does not agree that there is a problem." J3 response to point 7 was "J3 does not agree that there is a problem." J3 response to point 8 was "J3 believes the feature should stay as it is defined". J3 response to point 10 was "J3 does not agree that there is a problem." >11. editorial comment: Section 12.3.1 states > > The interface of a subroutine or function with a > separate result name is explicit within the subprogram > that defines it. > > Section 12.3.2.1 states > > An external or module subprogram specifies a specific > interface for the procedures defined in that subprogram. > Such a specific interface is explicit for module > procedures and implicit for external procedures. > > Taken together the two statements seem to say that the > interface of a subroutine or function with a separate result > name can be both explicit and implicit. That should be fixed. J3 response was "J3 agrees that there is a problem here" and recommended edits which follow. EDITS: 253:20 Replace "a subroutine or a function" (in the sentence quoted 1st) by "an external subroutine or an external function". 250:21 After "it" insert "; the interface of an external function that does not have a separate result name is implicit within the subprogram that defines it." The J3 response to point 12 was "The proposed functionality was not in the list of requirements for this revision of the Fortran standard. This is being addressed by Type II Technical Report 19767...". The J3 response to point 13 was "J3 does not agree that there is a problem." >14. editorial comment: The examples given for SELECTED_INT_KIND > and SELECTED_REAL_KIND give results not required by the > standard. Either the conditions stated should be strengthened > to require the results given or the text should say that the > results given are not the only possible results. EDITS: 343:25-26 Delete the paragraph and replace with "Example. A processor supports 4 integer kinds 8, 16, 32, 64 with integer representation methods r=2 and q=7,15,31,63 respectively. On this processor SELECTED_INT_KIND(9) has the value 32 and SELECTED_INT_KIND(10) has the value 64." or, at J3's pleasure, add also "A processor supports 3 integer kinds 1, 2, 4, all with integer representation methods r=2 and q=31. On this processor SELECTED_INT_KIND(9) has the value 1." 344:11-12 Delete the paragraph and replace with "Example. A processor supports a default real approximation method with b = 16, p = 6, emin = -64, and emax = 63. It is possible that SELECTED_REAL_KIND (6, 70) has the value KIND(0.0)."