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

2.4 KiB
Raw Blame History


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.