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>
105 lines
5.5 KiB
Markdown
105 lines
5.5 KiB
Markdown
---
|
||
task: DSS (Data Set Services) checks and tools - processes, dss.sup, quick load directives, dssutl, DSS compiler syntax check
|
||
version: R1.05 (first written for R1.03)
|
||
source: 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)
|
||
status: 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`).
|