Four findings from the review of this branch, all of them comparisons against a live estate response. `public/getcolvals` hardcoded best12 for every numeric column. The estate formats `formatted` with put() at the column's own format - mf_getVarFormat with force=1 - so a BEST32. column reports $32./32 and pads the value to 32, and the metadata's unformatted copy keeps the column's label rather than the variable name. A widthless format now gets its own default width: the estate answers $16./16 for a DATETIME. column, where the fallback was 200. The same service also searched every libref, so a library the estate does not have still answered for a table that exists elsewhere. The named libref is resolved first and refused as "Invalid libds" - the message %mpe_validatecol gives, before the member is looked for; a missing member in a known library stays "Target table not found". `public/getcols` sorted the column list with localeCompare, the ordering this branch already fixed in viewtables. SAS compares the character value, where '_' sorts after every letter, so A_B comes after AB; the list now sorts that way, with a fixture whose names differ only in underscore placement. An empty getcolvals result answered empty strings where the estate sends one row of SAS missings - a blank for the character and null for the number. Recorded from the estate: a formatted number (MPE_AUDIT.OLDVAL_NUM), a widthless temporal (MPE_DATASTATUS_CATS.CREATED) and a wrong library that names a real table. The header-file test now polls for the line instead of waiting a fixed 20ms.
25 lines
450 B
JSON
25 lines
450 B
JSON
{
|
|
"_meta": {
|
|
"scenario": "wrong_libref",
|
|
"service": "public/getcolvals",
|
|
"estate": "synthetic",
|
|
"targetType": "SASJS",
|
|
"sas": "9.4M9",
|
|
"dc": "7.22.0",
|
|
"captured": "2026-11-07",
|
|
"tls": "verified",
|
|
"members": [
|
|
"sasjsAbort"
|
|
]
|
|
},
|
|
"body": {
|
|
"sasjsAbort": [
|
|
{
|
|
"MSG": "Invalid libds",
|
|
"MAC": "/Public/app/dc/services/public/getcolvals.sas"
|
|
}
|
|
],
|
|
"SYSCC": "0"
|
|
}
|
|
}
|