J3/10-217 To: J3 From: Malcolm Cohen Subject: Inappropriate use of "may" Date: 2010 October 06 1. Quotes from the ISO directives The verbal forms shown in Table H.1 shall be used to indicate requirements strictly to be followed in order to conform to the document and from which no deviation is permitted. Table H.1 -- Requirement +---------------+-------------------------------------------------------+ | Verbal Form | Equivalent expressions for use in exceptional cases | +---------------+-------------------------------------------------------+ | shall | is to | | | is required to | | | it is required that | | | has to | | | only ... is permitted | | | it is necessary | +---------------+-------------------------------------------------------+ | shall not | is not allowed/permitted/acceptable/permissible | | | is required to be not | | | is required that ... be not | | | is not to be | +---------------+-------------------------------------------------------+ | ... | | Do not use "may not" instead of "shall not" to express a prohibition. | | ... | +-----------------------------------------------------------------------+ {Note: I have elided some of the footnotes in the table.} The verbal forms shown in Table H.4 shall be used for statements of possibility and capability, whether material, physical or causal. Table H.4 . Possibility and capability +---------------+-------------------------------------------------------+ | Verbal Form | Equivalent expressions for use in exceptional cases | +---------------+-------------------------------------------------------+ | can | be able to | | | there is a possibility of | | | it is possible to | +---------------+-------------------------------------------------------+ | cannot | be unable to | | | there is no possibility of | | | it is not possible to | +---------------+-------------------------------------------------------+ 2. Introduction to this paper. Although table H.1 does not explicitly list "X may only be Y", it is clear that that formulation is not allowed. That is because "may" is for Giving Permission. It is not for withholding permission (that would be a requirement/prohibition). Nor is it for indicating possibility or capability. Note that giving permission is almost entirely useless, as without any requirement, it does not withhold permission for any other cases! I am sure that the Fortran standard itself still has mistakes in this usage. These will be fixed as and when sufficient information, motivation, and time are available. This paper attempts to correct the language used in the TR. It is entirely editorial in nature - no technical effect. 3. Edits to 10-165r2. [2:8] 2.1p2, "may appear only" -> "shall appear only". {Requirement.} [2:18] 2.2p2, "may appear only" -> "shall appear only". {Requirement.} [11:1-] Immediately before 5.2.6 Functions, in NOTE 5.1, "may have the same value" -> "can have the same value". {Possibility.} [11:7] 5.2.6p2, "may become associated" -> "can become associated". {Possibility.} 4. Possibly-correct uses of "may", might warrant review/rewording. The use at [3:8] could be correct. Unless it is intending to mean capability. The use at [12:31] might be correct, but I doubt it. The use at [12:32] is almost certainly wrong, but there are other problems with that paragraph so it is the subject of a separate paper. The use at [17:20] is definitely wrong - one cannot give permission to do something in non-normative text. But that paragraph has other problems so is the subject of a separate paper. It is interesting that the ISO boilerplate for the Foreword does not conform to their own directives, but that is not in our control. ===END===