ci-server-engineer/.claude/skills/item-engineering/tasks/string-items.md
cliu 516729ff24 R1.05 findings from a user project (tested only)
Tested on the R1.05 test server 2026-10-09..12 with a user project (own
objects only); not yet on CI-Eng-Sample (ISS-188). Only results that
were tested are included; inferences, code-only and manual-only points
and the untested sample layout change were left out.
- layouts: 'logout' is a secondary logout, always disabled on the R1.05
  web client; 'exit' closes the window and ends the session (ISS-182).
- create-display: R1.05 web client table (String items in text vs
  textField, fixed text alignment, start-hidden limits ISS-183, two
  visibility conditions, On entry display actions, rectangle blinking,
  verified connections, first load).
- java-class 4a: signal arrays at scale, write on change, attribute
  arrays, offline javac/javap check; change-reset-class: new signals need
  the object recreated, attributes lost (ISS-185); opcdbg reset in cmd,
  TRIGGER_1 via dssqld -m.
- string-items (ISS-187), users-groups, modbus-station (400 registers,
  comm loss), export-dataset (NAME range filter), item-alarming.
- new task system-management/package-project.md; tools/ModbusSim.java
  (tested on R1.05: FC03/04/06/16, exceptions, modes); AMSI (ISS-186).

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

44 lines
2.4 KiB
Markdown
Raw Permalink 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.
**Mixed item files (R1.05, 2026-10-12).** `STRING_LENGTH` is checked on every record of an `@FIELDS`
block: `0` (or empty) on a Real/Integer item is refused with `DSS-E-VAL_RANGE ... (Field:
STRING_LENGTH)`. Put String items in their own `@FIELDS` block with `STRING_LENGTH`, and the other
items in a block without it.