ci-server-engineer/.claude/skills/item-engineering/tasks/string-items.md
cliu 48426a0a14 R1.05 write tests V9, V10, V12, V15 on the shared test server
With the user's approval: item blocking and string length, alarm raise /
acknowledge / delay / repeat and INFO event, report generate / print /
item trigger / rptstp / SPOOL, class change and reset and attribute
change. All results match R1.03 (ISS-028 still holds). Everything was
removed again; before/after snapshot identical. ISS-129 and ISS-158
closed. Test package saved in examples/CI-Eng-Sample/shared/write_test;
snapshot.ps1 now removes the dss_*.tmp files its own exports leave.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 10:52:20 +11:00

39 lines
2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
task: String items: length limit and truncation
version: R1.05 (first written for R1.03)
source: IM 36K10C10-01EN 5th ed. (Feb. 2026) §3.3.4; IM 36K10G10-01EN 5th ed. (Feb. 2026) §3.2.2; data dictionary (`dssqld -f`); practiced on CI-Eng-Sample 2026-09-30 (R1.03)
status: verified on R1.03 (2026-09-30); on R1.05 the limit 1–200 / default 80 was checked in the data dictionary and ITEM_DF is identical (2026-10-08, read-only); string writes and truncation not re-tested on the shared R1.05 test server, re-test awaits a decision (ISS-129) Re-tested on R1.05 2026-10-09 on the shared test server with the user's approval (temporary sample records, everything removed, before/after snapshot identical): a 120-character write to a length-100 item stored 99 characters with status 12 (V9).
---
# String items
A string item has a maximum length set when it is created (`ITEM_DF.STRING_LENGTH`).
| Rule | Value (verified R1.03) |
|---|---|
| Allowed `STRING_LENGTH` | 1–200 (default 80); 201 is rejected with `DSS-E-VAL_RANGE` |
| Audit trailing (`AUDIT_INFO`) | no effect on the limit (200 loads with audit on) |
| Characters the item holds | **length − 1** (length 100 holds 99) |
| Value that fits | stored, status 9 NORMAL |
| Value too long | cut to length − 1, status **12 OVERRANGED**, no error from `itmval` |
The R1.03 manuals disagreed (Engineering Module: max 100; Tutorial: 168; ISS-019). The R1.05
manuals (changed in R1.04, not listed in the revision tables) give default 80 and maximum
200 **bytes**, matching the software (ISS-124). Multi-byte characters take more than one byte.
That a value holds only length − 1 characters is not in any manual.
Quick load (the section must exist):
```
@FIELDS
NAME,DESCRIPTION,ITEM_REP,STRING_LENGTH,AUDIT_INFO
@ITEM_DF
"<Section>.<Tag>","Status text","String",120,0
```
Write and read: `itmval -p -n <Section>.<Tag> -v "text"`, `itmval -g -n <Section>.<Tag>`.
After a write, check the status: 12 means the text was cut.
The representation (type) and length cannot be changed on an existing item: remove and
load it again.