Opened 23 months ago
Last modified 12 months ago
#339 closed defect
get_equal_name_$check_equal_name_ has several problems — at Version 1
| Reported by: | Gary Dixon | Owned by: | Eric Swenson |
|---|---|---|---|
| Priority: | major | Milestone: | MR12.9 |
| Component: | Standard Library | Version: | MR12.8 |
| Keywords: | Cc: |
Description (last modified by )
When the get_equal_name_$check_equal_name_ entry point was added, the change did not add the check_equal_name_ onto the bound_library_1_ object segment, which would allow the new entry point to be referenced simply as check_equal_name_ (rather than get_equal_name_$check_equal_name_).
Also, the change did not add an include file with named constants defining the EQUAL_TYPE_xxx values that can be returned in the subroutine's code argument (in addition to the possible error_table_ values that argument also returns). The get_equal_name_.info segment also does not document these EQUAL_TYPE_xxx values. So any programmer that needs to use the check_equal_name_ entry point must: examine existing callers code to see how to use the results; or examine get_equal_name_$check_equal_name_ entry point code to see what code values it returns.
These omissions boost importance of this bug from an enhancement to a defect.
This ticket suggests the following changes.
- Change bound_library_1_.bind: As part of the objectname: get_equal_name_; entry, add a synonym: keyword naming check_equal_name_ as a full synonym for the get_equal_name_ object segment. This was cause the loader to add check_equal_name_ as a name on >sl1>bound_library_1_ bound object containing get_equal_name_.
- Create a >ldd>incl>check_equal_name.incl.pl1 segment defining three new constants describing the non-failing code values that may be returned by check_equal_name_$check_equal_name_.
declare (
EQUAL_TYPE_USE_ORIGINAL_NAME initial (2), /* Equal name is == or ===; it selects full original name.*/
EQUAL_TYPE_USE_GET_EQUAL_PROC initial (1), /* Equal name selects some parts of original name. */
EQUAL_TYPE_USE_EQUAL_NAME initial (0) /* Equal name has no = or % chars; it replaces original. */
) fixed bin (2) static options (constant);
- Create a new check_equal_name_.info segment to document the calling sequence of the check_equal_name_ entry point under its new, shorter name. It will also refer the user to the values in the new check_equal_name.incl.pl1 segment.
- Remove use of underlining in the get_equal_name_.pl1 comments which give details about the finite statement machine implementing that program, but are unreadable on a video terminal. Also replace \014 pagination chars used throughout with the more modern %page; macro.
