ci-server-engineer/knowledge/manuals/IM36K10P30-01EN.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

71 lines
4.5 KiB
Markdown

---
manual: IM 36K10P30-01EN
title: Data Set Service Language
edition: 4th Edition, Feb. 2026 (R1.05); first written from the 3rd Edition, Sep. 2023 (R1.03). Revision table: contact information only; full text diff: no other change
version: R1.05 (first written for R1.03)
status: compiler run as a syntax check on a copy of the installed DSS files and on a deliberately broken test file (R1.03, 2026-10-01); syntax check of a copy of the installed R1.05 files on the R1.05 test server (2026-10-08, dictionary untouched); defining new datasets and updating the dictionary from docs only
---
# Data Set Service Language (R1.05)
The DSS language describes datasets; the DSS compiler (`dss.exe`) checks the descriptions and
builds the data dictionary (`%TLS_DAT_PATH%\tlsdic_dss.dic`) and C include files. It is a system
integrator's tool: **changing the dictionary changes CI Server itself** and is only needed for
custom datasets, custom report destinations (`IM36K10R40-01EN.md` §3.3) or custom data access
servers. Section numbers refer to the manual.
## 1. DSS files (§2)
- Plain text, one dataset per file recommended, extension `.dss`. The installed descriptions are
in `%TLS_ROOT_PATH%\tls\src\` (253 `.dss` files on the R1.03 test system, 256 on R1.05, plus `.c` sources of the
data access servers and `.umh` message files). Reading them is the best way to learn a
dataset's fields, ranges, lists and defaults (`dssqld -f` shows the same information).
- Syntax: `<KEYWORD value>` or `<KEYWORD <SUB …> …>`; keywords case-insensitive; strings in
double quotes with `""` for a quote; `/* */` and `//` comments.
- Order in a file: includes (`<INCLUDE "dss_global.dss">`), constants
(`<DEFINE_CONSTANT <LABEL …> <VALUE …>>`), macros, field templates, storage nodes, then
`<DATASET <NAME …> <DESCRIPTION …> <FIELD …>… <PHYSICAL_FIELD …>… <INDEX …>… <DATA_FILE …>
<DATA_ACCESS <SERVERNAME "dsilib:…">> <OPERATIONS> <STORAGE <NODES …>> …>`.
- A dataset needs a name (not an SQL keyword, unique), at least one field and one unique index.
- Texts (descriptions, headings, list entries) can carry translations (English, Dutch, German,
French).
- Field properties: data type or field template, description, heading, format, transformation,
basic operations, range/step, list (`<ENTRY <NUMERIC n> <STRING "text">>`), required, hidden,
concealed, default, character restrictions/operations, password-encrypted, "maps upon"
(relational field to another dataset), enabled, validate, group. Relational and compound
(composed) fields and physical fields have their own sentences; indexes may be unique.
## 2. Compiler (§3)
Run `dss` in the folder that holds the `.dss` files; it compiles **all** of them.
| Flag | Effect |
|---|---|
| none | Syntax check only (errors on screen) |
| `-d[<dict>]` | Create/update a dictionary (default `tlsdic_dss.dic` in `%TLS_DAT_PATH%`) — host node only; other nodes get the change through `DSSWTH` |
| `-i` | Write C include files (`.dsh`) |
| `-l[<list>]` | List file (default `tlsdic_dss.lst` next to the files) |
| `-q` / `-w` / `-b` | Quiet / no warnings / no boundary check |
**Installed (verified):** a copy of the 253 installed files compiled in 2 s with no errors
(`dss -l -w`, 251 files plus the two include files) and `tlsdic_dss.dic` was not touched. A test
file with a missing `>` gave `cieng_test_df.dss (15,2): EOF is not expected, expected 1
end-of-sentence characters ('>')` and `1 errors found.` The start script uses an undocumented
`-u` (compile without the DSS shared memory) on the first start.
**R1.05 (2026-10-08):** a copy of the 256 installed files (254 dataset files plus the include
files `dss_global.dss` and `opcuap_global.dss`) compiled with `dss -l -w` in a scratch folder:
the listing shows only `Processing file …` lines (no errors), and `tlsdic_dss.dic` kept its date.
New 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`); see `IM36K10L50-01EN.md` §7. `dssxdb` has a "beautify DSS
dictionary source" function to find unbalanced `<` `>` (`IM36K10L50-01EN.md` §1.2).
To add a value to an existing list (e.g. a report destination, R40 §3.3): edit the `.dss` in
`tls\src`, run `dss -d` in that folder, restart CI Server. Not practiced (would change the test
system's dictionary).
## 3. Include files (§4)
The `.dsh` output holds constants, dataset information, a C record structure and index
information for programs that use the DSS API. Not needed for engineering work.