ci-server-engineer/.claude/skills/system-management/tasks/dss-tools.md
cliu 83af63ab53 R1.05 re-check batch 2: graphics, history, portal, system-management, items
Full manual diffs (C50, R30, C60, L20, C40, L35, R10, R20, J10, L30, L50,
P30, G10, C10) and read-only checks on the shared R1.05 test server where
the permission system allowed them. Skills and summaries moved to R1.05.
Issues ISS-092..129 (gaps 104-107, 114-115, 130-131 unused); ISS-074
closed (manual and software agree), ISS-091 corrected by ISS-119.
version-differences: unlisted manual changes and installed-only changes.
r105-verification: V5-V9 and new not-tested rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 19:29:15 +11:00

5.5 KiB
Raw Blame History

task version source status
DSS (Data Set Services) checks and tools - processes, dss.sup, quick load directives, dssutl, DSS compiler syntax check R1.05 (first written for R1.03) IM 36K10L50-01EN §1, §2.1, §2.2, §3, §4 (5th ed., Feb. 2026); IM 36K10P30-01EN §2, §3 (4th ed., Feb. 2026); practiced on the test system 2026-10-01 (R1.03) verified on R1.03 (2026-10-01, all sections); on the R1.05 test server re-checked read-only 2026-10-08 - DSS processes and start script, `dss.sup`, `dssqld` directives (`@SELECT`) and help text, DSS compiler syntax check; macro/include loads, memo files and `dssutl` not re-run on R1.05

DSS tools

Everything here is read-only except where marked. Background: knowledge/manuals/IM36K10L50-01EN.md, IM36K10P30-01EN.md.

1. DSS processes and dss.sup

tasklist /FI "IMAGENAME eq dss*" — expect dsswth, dssana, dssanc, dssadb, dsslck, dssman, dsschk (server) and several dsssda / dssevt (10 and 7 on a default R1.03 node, 12 and 7 on R1.05). durwfp -p dssman -t 0 tests one by its BUS Service name (DSSSDA00…, DSSSDAOPC00…, DSSEVT00…). Started by tls\com\database_start.cmd.

  • R1.03: the number of general DSSSDA comes from %TLS_MAX_SDA_ID% (default 3 → DSSSDA00–03).
  • R1.05: the script starts DSSSDA00–03 as fixed lines (%TLS_MAX_SDA_ID% is no longer used) and two new dedicated servers, DSSSDARST (RESTful API server JRSTSRV) and DSSSDAPY (pyTOOLS clients PYDSS*); it waits for DSSSDARST with durwfp. On the first start after an upgrade it runs the R1.04/R1.05 dataset upgrade programs (opcaec_station_u0104, opcuac_station_u0104, opcuac_method_u0104, dss_ath_grp_u0104, iec61850_*_u0104 / _u0105, iec61850_rcb_u0105) and keeps database.new if one fails, so the upgrade is tried again at the next start (verified in the installed script 2026-10-08, ISS-117).

%TLS_ROOT_PATH%\tls\sup\dss.sup (Setup File Editor or text): queue sizes, heartbeats, FLOWC, and DSSSDA_SRV / DSSEVT_SRV lines <node|-1>, "<client process>", "<server process>" that tie clients to server instances (* = all others). Changing it needs admin rights and a restart.

R1.05 dss.sup (compared with R1.03, 2026-10-08): DSSSDA_QUESZ 252 → 1000, new DSSMAN_QUESZ = 1000, and two new routing lines DSSSDA_SRV = -1, "JRSTSRV", "DSSSDARST" and DSSSDA_SRV = -1, "PYDSS*", "DSSSDAPY". The manual (L50 §2.2) does not mention these.

2. Quick load directives (dssqld)

Besides @FIELDS, @SELECT, @LANGUAGE and @<DATASET> (tasks export-dataset.md, load-remove-records.md):

@LANGUAGE
ENGLISH
@MACRO
RPT_FIELDS,NAME,DESCRIPTION,ADHOC_ENABLED,LIFE_TIME,QUERY
@INCLUDE
"part2"

with part2.qli in the current folder starting @FIELDS / RPT_FIELDS / @<DATASET> … — macros must come before any data; includes and macros nest up to 10 deep.

Memo fields (class methods, report queries, logbooks): inline @" … "@ (preferred), empty @""@, or @"<file>"@. The file form is read by the server side: use an absolute path of at most 82 characters (relative names fail with CRL-E-ENOENT, longer ones with DSSG-E-STRBUFSMAL; ISS-046).

3. dssutl - read one record interactively

Menu tool on the primary index. Pipe the answers (Git Bash):

printf '1\n<dataset number>\n2\n2\n1\n1\n<primary key value>\n-1\n-1\n-1\n-1\n-1\n-1\n' | timeout 30 dssutl

= choose a data set › number from the list (first run printf '1\n-1\n-1\n' to see the numbered list, e.g. REPORT_DF was 209) › choose a field set › all fields › read equal › enter the key. Values are raw: dates in seconds since 1970 (local time), intervals as <count>.<unit code> (10.1 = 10 minutes, 1.3 = 1 day, 1.4 = 1 week), memos as the path of their container file. The Modify menu writes to the running system — use dssqld -m instead unless the user asks for dssutl.

4. DSS compiler as a syntax checker

To check a .dss file (custom dataset or an edited copy) without touching the dictionary:

mkdir <scratch>\dss ; copy "%TLS_ROOT_PATH%\tls\src\*.dss" <scratch>\dss  (or only your file + dss_global.dss)
cd <scratch>\dss
dss -l -w

Without -d the compiler only checks; results are in tlsdic_dss.lst (<file> (<line>,<col>): <message> and <n> errors found.). Never run dss -d without the user's approval: it rewrites %TLS_DAT_PATH%\tlsdic_dss.dic (host node only) and needs a restart.

Verified (R1.03, 2026-10-01)

17 DSS processes as listed; installed dss.sup routing read; macro + include load of a report; memo from file (relative fails, 125-character path fails, short absolute path works); dssutl read of REPORT_DF record CIENG_TANK1; compiler check of all 253 installed files (0 errors, dictionary unchanged) and of a test file with a missing > (1 error, line/column shown).

Verified (R1.05 test server, 2026-10-08, read-only)

12 dsssda and 7 dssevt processes; durwfp → 0 for DSSMAN, DSSSDA00, DSSSDA03, DSSSDAOPC00, DSSSDARST, DSSSDAPY, DSSEVT00; dss.sup and database_start.cmd as above; @SELECT filter export of STATUS_DF (1 record); compiler check dss -l -w of a copy of all 256 installed .dss files (254 dataset files plus dss_global.dss and opcuap_global.dss): no error lines in tlsdic_dss.lst, tlsdic_dss.dic date unchanged. New .dss files since R1.03: alarm_attribute_temp_df, api_keys_df, iec61850_rcb_df, uaserver_mapper_df, opcuac_method_call2_df (replaces opcuac_method_call_in_df / _out_df).