Digest #271 2024-07-29
Contributions
[352] 2024-07-28 17:17:53 ruv wrote:
requestClarification - Unspecified ambiguous condition in /STRING
The specification says that u.2 is u.1 minus n.
If n is greater than u.1, the result of subtraction is wrapped around, and the resulting ( c-addr.2 u.2 ) cannot not be interpreted as a character string. Is it correct?
I think, either behavior (or maybe meaning) should be specified, or an ambiguous condition should be explicitly declared for this case.
Thus, I see the following options:
- change the result stack parameter data type to ( c-addr.2 n.2 ) and describe what these parameters mean if n.2 is negative;
- then, the input stack parameter data type should be changed to
( c-addr.1 +n.1 n ), and/stringwill not be applicable to character strings longer thanmax-n;
- then, the input stack parameter data type should be changed to
- specify that if n is greater than u.1, it is replaced by u.1;
- declare that an ambiguous condition exists if n is greater than u.1;
- specify that if n is greater than u.1, an exception is thrown.
It seems, the last option is preferable. What do you think?