J3/17-216 To: J3 From: Malcolm Cohen Subject: Badly worded contradictions Date: 2017 October 09 1. Introduction This paper proposes repairing some badly worded and contradictory text. No technical effect is intended. 2. Generalized integer editing In paragraph 1 of 13.7.5.2.1 Generalized integer editing, the wording for the Gw.d and G0.d edit descriptors is contradictory. It says "When used to specify the input/output of integer data, the Gw.d and Gw.d Ee edit descriptors follow the rules for the Iw edit descriptor (13.7.2.2), except that w shall not be zero." Note that this is a hard requirement that for integer i/o, in an edit descriptor of the form Gw.d, w is not permitted to be zero. This directly contradicts the Introduction which states there is a new feature: "The G0.d edit descriptor can be used for list items of type Integer, Logical, and Character." as well as contradicting the second sentence of this paragraph, "When used to specify the output of integer data, the G0 and G0.d edit descriptors follow the rules for the I0 edit descriptor." because the second sentence implies that G0.d is valid. Also, note that the meaning of the second sentence, as in "what edit descriptor" this refers to, is precisely the same as the first: the Iw edit descriptor. Finally, there is no such edit descriptor as G0 or G0.d. These are merely the Gw and Gw.d edit descriptors (that's what they are in the syntax!). In the case of G0/Gw, G0 is reasonable because the w in Gw is constrained by C1307 to be zero. It is clear that this unfortunate phrasing is merely a botched attempt to add the feature described in the Introduction. An edit is included to repair this. Post-finally, there is no statement here of the semantics of G0 for input, but this is mentioned in 13.5.7.1 Overview (it is not allowed). As the paragraph already redundantly repeats the requirement for w/=0 on input, there is a good case for either NOT repeating that requirement (simplifies the paragraph significantly), or for repeating the requirement against Gw (where w is required to be zero). Note that the edit basically rewrites the paragraph into a much simpler form, because even after fixing the contradictions, for input, "follow the rules for the Iw edit descriptor (...) except that w shall not be zero" is nonsense because the Iw edit descriptor *does* require w to be nonzero for input editing! 3. Generalized logical and character editing For logical editing, the text states both that Gw.d follows the rules for Lw, and for G0.d follows the rules for L1. The former is wrong when w is equal to zero (there is no L0 edit descriptor), quite apart from contradicting the second sentence. Character editing has the same flaw as logical editing. 4. Edits to 17-007r2 (N2137) [281:17-19] 13.7.5.2.1 Generalized integer editing, p1, Replace the whole paragraph with "When used to specify the input/output of integer data, the Gw, Gw.d, and Gw.d Ee edit descriptors follow the rules for the Iw edit descriptor (13.7.2.2)." OPTIONAL REDUNDANT APPENDAGE: "Note that w cannot be zero for input editing (13.5.7.1).". [282:3] 13.7.5.3 Generalized logical editing, p1, After "Gw.d Ee edit descriptors" insert "with nonzero ", Making the whole paragraph read: "When used to specify the input/output of logical data, the Gw.d and Gw.d Ee edit descriptors with nonzero w follow the rules for the Lw edit descriptor (13.7.3). When used to specify the output of logical data, the G0 and G0.d edit descriptors follow the rules for the L1 edit descriptor." [282:7] 13.7.5.4 Generalized character editing, p1, After "Gw.d Ee edit descriptors" insert "with nonzero ", Making the whole paragraph read: "When used to specify the input/output of character data, the Gw.d and Gw.d Ee edit descriptors with nonzero w follow the rules for the Aw edit descriptor (13.7.4). When used to specify the output of character data, the G0 and G0.d edit descriptors follow the rules for the A edit descriptor with no field width." ===END===