Record phase 11 manuals, progress and issues ISS-043 to ISS-047
Summaries of IM 36K10L50, P30, P20, R40, C30 and E10 (R1.03). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d7e30fa46e
commit
5e77aada8e
8 changed files with 616 additions and 7 deletions
|
|
@ -62,3 +62,8 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
|
||||||
| ISS-040 | 2026-10-01 | HISTORY (aggregation) | Aggregation group `CIENG_AGG` (30 min + hour, `TANK1.LEVEL` max/min/avg) ran (`ithsag.log`: *Aggregation Completed*) but stored no values: retrieval gave `0x09 = ITM error` per period. `TANK1.LEVEL` was in `CIENG_EVENT` and `CIENG_SCAN10S`, both priority 0. Also `INTERPOLATION = "30 minutes"` is refused by `dssqld`; the installed name is `30Minutes`. | closed | Closed 2026-10-01 (confirmed by user). 2026-10-01 14:02: after `CIENG_SCAN10S` got `PRIORITY` 10, the 13:30–14:00 period stored max 77, min 33, avg 52.7, quality 1000 (`ithdbg` 20 and `dssqld` with `INTERPOLATION = "30Minutes"`). Cause: equal source priorities (C40 §2.1 says the highest-priority group is the source, but not that a tie gives nothing). Sample fixed (priority 10). The hourly value for 13:00–14:00 was not stored (first half had no source); not rechecked. Proposed close. | `.claude/skills/history-management/tasks/storage-groups.md` §4 (done); `knowledge/manuals/IM36K10C40-01EN.md` §3 (done); `examples/CI-Eng-Sample/03_his_group_df.qli`, `README.md` (done) |
|
| ISS-040 | 2026-10-01 | HISTORY (aggregation) | Aggregation group `CIENG_AGG` (30 min + hour, `TANK1.LEVEL` max/min/avg) ran (`ithsag.log`: *Aggregation Completed*) but stored no values: retrieval gave `0x09 = ITM error` per period. `TANK1.LEVEL` was in `CIENG_EVENT` and `CIENG_SCAN10S`, both priority 0. Also `INTERPOLATION = "30 minutes"` is refused by `dssqld`; the installed name is `30Minutes`. | closed | Closed 2026-10-01 (confirmed by user). 2026-10-01 14:02: after `CIENG_SCAN10S` got `PRIORITY` 10, the 13:30–14:00 period stored max 77, min 33, avg 52.7, quality 1000 (`ithdbg` 20 and `dssqld` with `INTERPOLATION = "30Minutes"`). Cause: equal source priorities (C40 §2.1 says the highest-priority group is the source, but not that a tie gives nothing). Sample fixed (priority 10). The hourly value for 13:00–14:00 was not stored (first half had no source); not rechecked. Proposed close. | `.claude/skills/history-management/tasks/storage-groups.md` §4 (done); `knowledge/manuals/IM36K10C40-01EN.md` §3 (done); `examples/CI-Eng-Sample/03_his_group_df.qli`, `README.md` (done) |
|
||||||
| ISS-041 | 2026-10-01 | GRAPHICS (HTML trend) | In the HTML display (`localhost:8080/mobileoperator/?d=CIENG_Tank`) the trend shows the pen legend `CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]` and time axis but draws no line, although `ITEM_HISTORY` has 420 samples in the shown hour. Browser console: `Mismatch between number of labels (Time,CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]) and number of columns in array (51)`. The trend has 4 further empty pens. 2026-10-01 later: the trend also had the property `chart.attribute[00]` connected to `TANK1.LEVEL` (added by mistake with the pen); the Operator Interface (desktop) showed *Short attribute name ( 61.0) is invalid*. After removing it the desktop trend draws the line, but the HTML trend still logs the mismatch error. | open | HTML only: try a trend with one pen (remove the empty ones) or a Micro Trend; check the HTML-supported trend properties (IM 36K10R30 §4.8.7); check whether the browser still uses a cached copy (`MO_CACHE_DISPLAYS` in `jwuiisg.sup`). | `.claude/skills/graphics/tasks/create-display.md`; `knowledge/manuals/IM36K10R30-01EN.md` §4 |
|
| ISS-041 | 2026-10-01 | GRAPHICS (HTML trend) | In the HTML display (`localhost:8080/mobileoperator/?d=CIENG_Tank`) the trend shows the pen legend `CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]` and time axis but draws no line, although `ITEM_HISTORY` has 420 samples in the shown hour. Browser console: `Mismatch between number of labels (Time,CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]) and number of columns in array (51)`. The trend has 4 further empty pens. 2026-10-01 later: the trend also had the property `chart.attribute[00]` connected to `TANK1.LEVEL` (added by mistake with the pen); the Operator Interface (desktop) showed *Short attribute name ( 61.0) is invalid*. After removing it the desktop trend draws the line, but the HTML trend still logs the mismatch error. | open | HTML only: try a trend with one pen (remove the empty ones) or a Micro Trend; check the HTML-supported trend properties (IM 36K10R30 §4.8.7); check whether the browser still uses a cached copy (`MO_CACHE_DISPLAYS` in `jwuiisg.sup`). | `.claude/skills/graphics/tasks/create-display.md`; `knowledge/manuals/IM36K10R30-01EN.md` §4 |
|
||||||
| ISS-042 | 2026-10-01 | GRAPHICS (layouts) | Installed vs `Layouts.readme`: the factory layouts use status line item types `displayName`, `playbackIndicator` and `dateTime` and the commands `reload <frame>` / `reload all`, none of which the readme lists (readme: `statusText`, `userName`, `progresBar`, `graphicsQueueLevel`, `connectionState`); the readme also writes `zooom` for the zoom command (factory files use `zoom`). | open | Installed software is the reference (standing user decision). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §2 |
|
| ISS-042 | 2026-10-01 | GRAPHICS (layouts) | Installed vs `Layouts.readme`: the factory layouts use status line item types `displayName`, `playbackIndicator` and `dateTime` and the commands `reload <frame>` / `reload all`, none of which the readme lists (readme: `statusText`, `userName`, `progresBar`, `graphicsQueueLevel`, `connectionState`); the readme also writes `zooom` for the zoom command (factory files use `zoom`). | open | Installed software is the reference (standing user decision). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §2 |
|
||||||
|
| ISS-043 | 2026-10-01 | REPORT (system reports) | IM 36K10C30 App. 1.3 names two system reports `ALM_ATTS_CUR` and `ALM_ATRS_HIS`; the installed reports are `ALM_ATTRS_CUR` and `ALM_ATTRS_HIS`. The other 26 names match. | open | Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10C30-01EN.md` §8 (done) |
|
||||||
|
| ISS-044 | 2026-10-01 | REPORT (scheduling) | Behaviour not in the manuals, found by quick load: a generation interval below 10 minutes is refused (`HIS-E-ROLLTOFAST`, the interval is the rollover of the report's storage group); a scheduled report cannot be deleted (`RPT-E-ACTIVE`) until `ACTIVATION_TIME` and `GENERATION_INTERVAL` are cleared; `CORRECT_DAYLIGHT` 0 counts intervals in UTC (06:00 set for January ran at 05:00 in October); a past activation time moves to the next slot - once (modify, past time within the lifetime) a single report labelled with the old time was generated, at insert with an older time none. | open | Documented as verified behaviour; the one-off generation for a past activation time is not fully understood. Close when the user confirms. | `.claude/skills/reporting/tasks/define-reports.md` §1, §5, §6; `knowledge/manuals/IM36K10C30-01EN.md` §2; `examples/CI-Eng-Sample/83a_stop_report_df.qli`, `18_report_df.qli` |
|
||||||
|
| ISS-045 | 2026-10-01 | REPORT (ad hoc from `dssqld`) | Generating ad hoc with `REPORT_DF.GENERATE` = 1 from `dssqld` (user `FULL AUTHORIZATION`) on a report without `ADHOC_DEST` logs `FSL-E-PRT_UNKUSER, Job submitted by unknown user (FULL AUTHORIZATION)` and `RPT-I-TRYPRINT` in `umhlog.log`; the generated report is stored normally. With `ADHOC_DEST` set no error appears and the device gets the output. Related to the R1.03 known issue on report generation and default printers (IM 36K01A50, REPORT 1.11). | open | Workaround documented (set `ADHOC_DEST`). Check whether an ad-hoc run from the Engineering Module as a real user behaves the same. | `.claude/skills/reporting/tasks/define-reports.md` §2; `knowledge/manuals/IM36K10C30-01EN.md` §6 |
|
||||||
|
| ISS-046 | 2026-10-01 | DATABASE (`dssqld` memo) | A memo field loaded from a file (`@"<file>"@`, IM 36K10L50 §3.10) fails with a relative name (`CRL-E-ENOENT`, the file is read on the server side) and with a long absolute path (`DSSG-E-STRBUFSMAL`, buffer 83); a short absolute path works. The manual gives no limits. | open | Documented: use inline memos, or an absolute path ≤ 82 characters. Close when the user confirms. | `.claude/skills/system-management/tasks/dss-tools.md` §2; `knowledge/manuals/IM36K10L50-01EN.md` §4 |
|
||||||
|
| ISS-047 | 2026-10-01 | REPORT (RQL manuals) | The manuals disagree: default `@WORKSPACE` 500 KB (IM 36K10R40 §2.2.2) vs 16 KB (IM 36K10C30 table 2.1-1, IM 36K10P20 §9.6); maximum `@WIDTH` 512 (R40, P20 §4) vs 5000 (P20 §9.6); `@FORMFEED` described with opposite meanings (C30: not 1 = form feed; P20: 0 = blank lines, default 1). Installed set-up files set `@workspace` explicitly (500 in `rptge1.rpt`, 100 in `rptgen.rpt`) and `@formfeed 0` for the interactive generator. | open | Not tested (no printer); the set-up files make the defaults irrelevant in practice. | `knowledge/manuals/IM36K10R40-01EN.md` §2; `knowledge/manuals/IM36K10P20-01EN.md` §3 |
|
||||||
|
|
|
||||||
141
knowledge/manuals/IM36K10C30-01EN.md
Normal file
141
knowledge/manuals/IM36K10C30-01EN.md
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10C30-01EN
|
||||||
|
title: Engineering Module - Reporting
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: report definitions (ad hoc with parameters, schedule, item trigger, HTML, logbook), generated reports, file device and destination verified by quick load on CI-Eng-Sample 2026-10-01; Engineering Module forms awaiting the user's check; report component in displays and hardcopy printers from docs
|
||||||
|
---
|
||||||
|
|
||||||
|
# Engineering Module - Reporting (R1.03)
|
||||||
|
|
||||||
|
Defining, generating and viewing reports. Language: `IM36K10P20-01EN.md`; REPORT Service
|
||||||
|
processes: `IM36K10R40-01EN.md`. Section numbers refer to the manual; dataset fields were read
|
||||||
|
with `dssqld -f` on the installed system.
|
||||||
|
|
||||||
|
## 1. Flow (§1)
|
||||||
|
|
||||||
|
Define (Engineering Module *Configuration > Reporting > Reports*, or quick load `REPORT_DF`) →
|
||||||
|
generate (schedule, item trigger, or ad hoc from the Engineering Module, a display or
|
||||||
|
`REPORT_DF.GENERATE`) → output (destination device: file, printer, application; or `SPOOL` in
|
||||||
|
the query) → kept as a generated report (`REPORT_VAL`) in the report's own storage group for its
|
||||||
|
lifetime.
|
||||||
|
|
||||||
|
## 2. Report definition (§2.1, dataset `REPORT_DF`)
|
||||||
|
|
||||||
|
| Form field | `REPORT_DF` field | Notes (installed) |
|
||||||
|
|---|---|---|
|
||||||
|
| Name | `NAME` | max 16 characters |
|
||||||
|
| Description | `DESCRIPTION` | max 80; printed in the default header |
|
||||||
|
| Report destination | `DEST_NAME` | a `PRINTER_DEST_DF` name; used by scheduled/triggered runs |
|
||||||
|
| Ad-hoc destination | `ADHOC_DEST` | a `PRINTER_OPER_DEST_DF` name; used by ad-hoc runs |
|
||||||
|
| Priority | `PRIORITY` | 0–9, higher first; generators only take reports ≥ their login priority |
|
||||||
|
| Lifetime | `LIFE_TIME` | interval, e.g. `"1 Weeks"`; empty = keep forever (manual); also the storage group's lifetime |
|
||||||
|
| Logbook information | `LOGBOOK_ENABLED`, `LOGBOOK` (memo) | operator memo stored in `%TLS_DAT_PATH%\<report>.lbk`; read in RQL with `LOGBOOK_TEXT('<report>')` |
|
||||||
|
| Process area | `PROCESS_LIST` | e.g. `3 5 8 10-19`; empty = everyone |
|
||||||
|
| Ad-hoc generation | `ADHOC_ENABLED` | |
|
||||||
|
| Ad-hoc parameters | `PARAM_PROMPT_1`–`8`, answers `PARAM_VALUE_1`–`8` | prompts → `@P0`–`@P7` (strings) |
|
||||||
|
| Query | `QUERY` (memo) | RQL |
|
||||||
|
| Time scheduling | `ACTIVATION_TIME`, `GENERATION_INTERVAL`, `CORRECT_DAYLIGHT` | see below |
|
||||||
|
| Item triggering | `TRIGGER_ITEM`, `TRIGGER_CON_1/2`, `TRIGGER_VAL_1/2`, `TRIGGER_COMB` (`And`/`Or`), `TRIGGER_STAT_1/2` (status names), `DELAY` | |
|
||||||
|
| — | `GENERATE`, `CANCEL` | set 1 to generate / cancel; back to 0 when done |
|
||||||
|
| — | `CONTAINS_HTML` | read-only, set automatically when the query writes HTML (verified) |
|
||||||
|
| — | `DESTINATION` (hidden) | old field: `File Only`, `Printer 1`, `Message`, `Printer mgmnt` |
|
||||||
|
|
||||||
|
Parameter prompt meta-information (makes a pick list in the generate dialog): `[ITEM:<filter>]`,
|
||||||
|
`[OBJECT:<class>:<filter>]`, `[DATE]`, `[TIME]`, `[DATE:TIME]`, `[LIST:a:b:c]`, followed by the
|
||||||
|
prompt text, e.g. `[ITEM:NAME like "CI-Eng-Sample.TANK1.*"]Item for statistics:`. The installed
|
||||||
|
system reports use lower case (`[item]`, `[date:time]`, `[list:Days:Hours:Minutes]`).
|
||||||
|
|
||||||
|
Query editor: *Ctrl+Space* lists keywords, datasets and fields. Basics of RQL (§2.1) are
|
||||||
|
summarised in `IM36K10P20-01EN.md`.
|
||||||
|
|
||||||
|
### Scheduling — verified behaviour (not in the manual)
|
||||||
|
|
||||||
|
- `GENERATION_INTERVAL` is also the rollover interval of the report's storage group, so it must
|
||||||
|
be at least **10 minutes** (`HIS-E-ROLLTOFAST`).
|
||||||
|
- `ACTIVATION_TIME` is the first run; after each run CI Server moves it on by the interval. An
|
||||||
|
activation time in the past is moved to the next future slot (no catch-up). One test (past time
|
||||||
|
within the lifetime, set by modify) generated a single report labelled with the old time; at
|
||||||
|
insert with a time older than the lifetime nothing was generated.
|
||||||
|
- `CORRECT_DAYLIGHT 0` counts intervals in UTC: a daily 06:00 set for January (summer time) ran at
|
||||||
|
05:00 in October. Use `1` for fixed local times.
|
||||||
|
- **A scheduled report cannot be deleted** (`RPT-E-ACTIVE`): clear `ACTIVATION_TIME` and
|
||||||
|
`GENERATION_INTERVAL` first (`dssqld -m`), then delete.
|
||||||
|
|
||||||
|
### Item triggering — verified behaviour
|
||||||
|
|
||||||
|
The report is generated `DELAY` after the condition **becomes** true (edge): writing 420 then 430
|
||||||
|
above a limit of 400 gave one report; going below and above again gave a second one.
|
||||||
|
|
||||||
|
## 3. Devices and destinations (§2.2)
|
||||||
|
|
||||||
|
| Dataset | Form | Fields (installed) |
|
||||||
|
|---|---|---|
|
||||||
|
| `PRINTER_DEV_DF` | *Reporting > Printers > Device* | `NAME`, `DESCRIPTION`, `OUTPUT_TYPE` (`<node>:FILE`, `<node>:HARDCOPY`, `<node>:APPLICATION` from `PRINTER_TYPE_DF`), `PARAMETERS`, `STATUS_ITEM` (0 initial, 1 ready, 2 busy, 3 warning, 4 unavailable), `SUSPEND` |
|
||||||
|
| `PRINTER_DEST_DF` | *Reporting > Printers > Destinations* | `NAME`, `PRIMARY_DEVICE`, `SECONDARY_DEVICE`, `POLICY` (`None` primary only, `Both`, `Automatic` = secondary when primary unavailable), `ALLOW_OPERATOR` (appears in `PRINTER_OPER_DEST_DF`), `PRIORITY` (high) |
|
||||||
|
|
||||||
|
Parameters, written `NAME,"value",NAME,"value"`: FILE `PATH`, `FILE`, `OVERWRITE` (`Yes`/`No`);
|
||||||
|
HARDCOPY `TYPE` (`WINDOWS` on Windows), `QUEUE` (e.g. `\\PrintServer\prt001`), `FONT`, `POINT`,
|
||||||
|
`LINES` (76), `ORIENTATION`, `N-UP`; APPLICATION `PROGRAM`, `ARGUMENTS`.
|
||||||
|
|
||||||
|
**Installed:** `OUTPUT_TYPE` must include the node name (plain `FILE` is refused,
|
||||||
|
`DSSP-E-NORELV`); the path must be literal (`%TLS_LST_PATH%` gave `FSL-E-PRT_PAR` in the log while
|
||||||
|
the job still showed *Finished*). Factory destinations `ALARMS`, `AUDIT_TRAIL`, `DEFAULT`,
|
||||||
|
`MESSAGES`, `PRINTER_1`, `SCREEN_CAPTURE` exist with no device. Job and device status:
|
||||||
|
`PRINTER_JOB_OVV`, `PRINTER_DEV_OVV` (printer manager `FMFPRT`).
|
||||||
|
|
||||||
|
## 4. Report storage groups (§2.3.1)
|
||||||
|
|
||||||
|
Creating a report creates a storage group of type *Report* with the same name (*Historisation >
|
||||||
|
Other storage groups*); its lifetime is linked to the report's lifetime; *Exclude from archive*
|
||||||
|
is available. **Installed:** deleting the report deletes the group, its generated reports and its
|
||||||
|
`.lbk` file. Generated reports are stored in `tls\his\h…*.his` unit files.
|
||||||
|
|
||||||
|
## 5. Report component in displays (§2.3.2)
|
||||||
|
|
||||||
|
The Edit Module report component has a report list, a generated-report list, a *Generate* form
|
||||||
|
(report, destination, logbook text, parameters) and a *View* form (report, generated report,
|
||||||
|
printer). Properties: show/hide and enable/disable each part; *Advanced*: a variable that starts
|
||||||
|
generation (back to false when done), logbook variable (string), report and selection filter.
|
||||||
|
Logbook on a display needs *Logbook Enabled* and *Visible* in the report. Not practiced.
|
||||||
|
|
||||||
|
## 6. Generating and viewing (§3)
|
||||||
|
|
||||||
|
- Engineering Module: right-click a report › *Generate* (choose destination, answer
|
||||||
|
parameters) › right-click a generated report › *View* (*Scroll Form-Feeds* for multi-page).
|
||||||
|
- Operator interface: display with the report component (*Generate* / *View* tabs, print).
|
||||||
|
- Command line: `REPORT_DF` `NAME,PARAM_VALUE_1,GENERATE` = `"<report>","<answer>",1` with
|
||||||
|
`dssqld -m`; read `REPORT_VAL` (`NAME` = `<report>.<DD-MON-YY hh:mm:ss>`, `REPORT` memo,
|
||||||
|
`USER_NAME`, `ACTION_PROCESS`, `DELETION_TIME`); print with `NAME,DEST_NAME,PRINT`; delete with
|
||||||
|
`dssqld -r` (needs `REPORT_DELETE_GENERATED_REPORT`; users only delete their own ad-hoc ones).
|
||||||
|
- `rptgen -s rptgen.rpt` for trying RQL (`IM36K10R40-01EN.md` §6).
|
||||||
|
|
||||||
|
**Verified:** ad-hoc runs from `dssqld` are made by user `FULL AUTHORIZATION`; without an ad-hoc
|
||||||
|
destination `RPTMAN` then logs `FSL-E-PRT_UNKUSER, Job submitted by unknown user` (the report is
|
||||||
|
still stored; ISS-045). With `ADHOC_DEST` set the output went to the device without errors.
|
||||||
|
Scheduled and triggered runs are made by `RPTMAN` and print to `DEST_NAME`.
|
||||||
|
|
||||||
|
## 7. Tuning (§4)
|
||||||
|
|
||||||
|
`rptman.sup`, generator `.rpt` files and `report_start.cmd` as in `IM36K10R40-01EN.md`; one
|
||||||
|
generator `RPTGE1` by default; add generators for priorities, large reports or load; restart CI
|
||||||
|
Server after changes. Query tip: filter on the primary key `NAME` (e.g. `NAME > (@obj || ':') AND
|
||||||
|
NAME < (@obj || ';')` on `object_attr_val`) instead of other fields.
|
||||||
|
|
||||||
|
## 8. Formats and system reports (Appendix 1)
|
||||||
|
|
||||||
|
- HTML: write the HTML with `SELECT '…';` lines, `HEADER ''; FOOTER ''; SET @PAGE_SIZE 0; SET
|
||||||
|
@WIDTH 512;`. The Engineering Module and displays render it; a destination receives the HTML
|
||||||
|
source.
|
||||||
|
- CSV: `SPOOL '<file>'; SET @EXPORT 1; SELECT …; SPOOL;`.
|
||||||
|
- System reports (installed, 28, all ad hoc, lifetime 1 week): `ALARM_COUNT`, `ALARM_CURRENT`,
|
||||||
|
`ALARM_EXT_CURR`, `ALARM_HISTORY`, `ALARM_SHELVE`, `ALM_ATTRS_CUR`, `ALM_ATTRS_HIS` (manual:
|
||||||
|
`ALM_ATTS_CUR`, `ALM_ATRS_HIS`, ISS-043), `AUDIT_TRAIL`, `AUTH_GROUP`, `ITEM_ACK`, `ITEM_ALM`,
|
||||||
|
`ITEM_EQP`, `ITEM_FO`, `ITEM_HISTORY`, `ITEM_HISTORY_AG`, `ITEM_ID`, `ITEM_ITM`, `ITEM_OTH`,
|
||||||
|
`ITEM_TYPE`, `ITEM_VAL_STA`, `ITM_VAL_CSV`, `STATION`, `STATION_STATS`, `SYSTEM_LOG`,
|
||||||
|
`SYSTEM_LOG_HTML`, `UA_SERVER_AUDIT`, `USER`, `USER_VAL`. Their queries are good RQL examples
|
||||||
|
(`dssqld -e` on `REPORT_DF` with `QUERY`). Enterprise engineering servers add `EES_*` reports.
|
||||||
|
|
||||||
|
Known issues (IM 36K01A50): with Active Directory and printer management, generation can fail
|
||||||
|
looking for the user's default printer (use a destination without device as the user's
|
||||||
|
default); report features of schemes need an Engineering Module restart.
|
||||||
55
knowledge/manuals/IM36K10E10-01EN.md
Normal file
55
knowledge/manuals/IM36K10E10-01EN.md
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10E10-01EN
|
||||||
|
title: Excel Add-in Data Analysis and Reporting
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: from docs only — Microsoft Excel and the add-in are not installed on the test system (checked 2026-10-01)
|
||||||
|
---
|
||||||
|
|
||||||
|
# Excel Add-in — DART (R1.03)
|
||||||
|
|
||||||
|
DART (Data Analysis and Reporting Tool) is a Microsoft Excel add-in that reads CI Server data into
|
||||||
|
worksheets for reports and analysis. It connects through CI Portal (web ports 8080 local /
|
||||||
|
8443 remote) and logs in as a CI Server user, so the user's authorizations limit what it sees.
|
||||||
|
Section numbers refer to the manual.
|
||||||
|
|
||||||
|
## 1. Install (§2)
|
||||||
|
|
||||||
|
Admin rights; close Excel; run `Windows\EngineeringTools\ExcelAddIn\ExcelAddInfoForReports_x64.exe`
|
||||||
|
from the CI Server DVD (SmartScreen: *More info › Run anyway*), accept the licence, *Install*. A
|
||||||
|
*CI Server* ribbon tab appears. Uninstall: *Programs and Features › CI Server Excel Add-in*.
|
||||||
|
Remote CI Portal on another machine needs SSL certificates.
|
||||||
|
|
||||||
|
## 2. Ribbon functions (§3)
|
||||||
|
|
||||||
|
| Group | Command | Gives |
|
||||||
|
|---|---|---|
|
||||||
|
| Connections | Connection Manager | Connect (server name/IP, default `localhost`; login dialog depends on the `dssana.sup` login method) / disconnect |
|
||||||
|
| Item Search | Item Search | Items by name and description filters (`*`, `?`, both filters ANDed); paste vertically or horizontally |
|
||||||
|
| Current Data | Current Data / Item Attribute Value | Latest value (optional time stamp left or above); description, data type, engineering unit, status, quality, update time (one attribute per call) |
|
||||||
|
| History Data | Single / Constant Interval / Timestamp Based / Fixed Duration–Fixed Count | Value at a time; values at an interval (optional slope interpolation); values at another item's sample times; all samples in a period or N samples |
|
||||||
|
| Calculated Data | Aggregation Data | Values of an Aggregation storage group: maximum, minimum, average, standard deviation, counter, integration, differential summation per 30 min, hour, shift, day, week, month, year (only what the group stores; time stamp = start of the period) |
|
||||||
|
| Refresh Data | Refresh UDF / Refresh Workbook | Re-create the array formula at the cursor (needed when the number of values changes) / recalculate all |
|
||||||
|
| Others | Settings, About, Help | Number and date formats, interpolation (previous or next value), ports |
|
||||||
|
|
||||||
|
Cells hold user-defined array functions, so workbooks refresh themselves (Excel calculation
|
||||||
|
*Automatic*). Fetch options when no sample exists at a time: *Next*, *Actual* ("No Data"),
|
||||||
|
*Interpolated* (previous/next per Settings); edge options for periods: *Actual*, *Nearest*,
|
||||||
|
*Interpolated*.
|
||||||
|
|
||||||
|
## 3. Times (§5)
|
||||||
|
|
||||||
|
Absolute: `n` now, `t` today 00:00, `y` yesterday, `b` first of the month, weekday names,
|
||||||
|
`MM/dd/yyyy H:mm:ss`, `dd`, `HH:`, `dd HH:`, `H:mm:ss` (type a leading `'` in a cell). Relative:
|
||||||
|
`+/-` with `s`, `m`, `h`, `d`, `w`, `M` (months), `y` units, one unit per term (`t+2h`, `y+23h`,
|
||||||
|
`n-15s`). Intervals for constant-interval history use the same units. A daily report of yesterday:
|
||||||
|
start `y`, end `y+23h`, interval `1h`.
|
||||||
|
|
||||||
|
## 4. Tips and errors (§4, §6, §7)
|
||||||
|
|
||||||
|
Keep the number of values per formula constant (fixed start/end relative to `y`) so the workbook
|
||||||
|
refreshes without *Refresh UDF*; format time cells as text or `H:mm` for charts. The manual's
|
||||||
|
error list explains connection, login, item and time-format errors.
|
||||||
|
|
||||||
|
Known issue (IM 36K01A50): Excel via ODBC cannot write to CI Server R1.03; the add-in (read) is
|
||||||
|
the supported Excel route.
|
||||||
126
knowledge/manuals/IM36K10L50-01EN.md
Normal file
126
knowledge/manuals/IM36K10L50-01EN.md
Normal file
|
|
@ -0,0 +1,126 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10L50-01EN
|
||||||
|
title: Data Set Service Engineering
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: process layout, dss.sup, dssqld directives (macro, include, memo from file), dssutl read and the dataset notes checked on the test system 2026-10-01; dssana.sup tabs from docs (covered by skill authorization); dsschk see IM36K10J10 notes
|
||||||
|
---
|
||||||
|
|
||||||
|
# Data Set Service Engineering (R1.03)
|
||||||
|
|
||||||
|
DSS (Data Set Services) is the layer through which every CI Server tool and user interface reads
|
||||||
|
and changes configuration and run-time data: items, alarms, classes, users, history, reports …
|
||||||
|
all appear as **datasets** (tables of records with fields). `dssqld`, the Engineering Module,
|
||||||
|
REPORT Service, ODBC and the Java/PROCESS APIs are all DSS clients. Section numbers refer to the
|
||||||
|
manual; "installed" means checked on the R1.03.00 test system.
|
||||||
|
|
||||||
|
## 1. Building blocks (§1)
|
||||||
|
|
||||||
|
| Part | Process / file | Job |
|
||||||
|
|---|---|---|
|
||||||
|
| API | linked into every client | Opens datasets, talks to the core over the BUS Service (DUR/MDUR) |
|
||||||
|
| Manager | `DSSMAN` (one per node) | Hands each client a `DSSSDA`/`DSSEVT` instance (the one it already uses, else the least loaded) and cleans up when clients or servers disappear |
|
||||||
|
| Data access | `DSSSDA` (several, `-n <name>`) | Executes read / insert / update / delete through the mapping layer |
|
||||||
|
| Events | `DSSEVT` (several, `-n <name>`) | Event channels (change notifications, flow control) to clients |
|
||||||
|
| Locks | `DSSLCK` (`-c` clears all locks) | Record locks on the dataset's primary node; frees locks of vanished processes/nodes |
|
||||||
|
| Watch | `DSSWTH` | Creates the DSS shared memory and the authorization/user files, copies dictionary changes from the host node to other nodes, cleans up after crashed clients, moves memo "file containers" |
|
||||||
|
| Mapping layer | PML + data access servers (`dsilib:dsid_das_*`) | Maps a dataset onto ISAM files or another service (ITEM, HISTORY, ALARM …) |
|
||||||
|
| Data dictionary | `%TLS_DAT_PATH%\tlsdic_dss.dic` | Description of every dataset and field; built by the DSS compiler (`IM36K10P30-01EN.md`) on the host node only |
|
||||||
|
| Tools | `dssqld`, `dssutl`, `dsschk`, `dssxdb` | Quick load/export, interactive read/modify, consistency check/repair, debugger (service use) |
|
||||||
|
|
||||||
|
DSS processes start with DATABASE Service (`tls\com\database_start.cmd`). **Installed:** besides
|
||||||
|
`DSSWTH`, `DSSANA`, `DSSANC`, `DSSADB`, `DSSLCK`, `DSSMAN` and the `dsschk -s` server, the script
|
||||||
|
starts `DSSSDA00`–`03` (count from `%TLS_MAX_SDA_ID%`, default 3), `DSSSDAOPC00`–`03`,
|
||||||
|
`DSSSDAPRC`, `DSSSDAOPX` (and `DSSSDAEEM` on an enterprise engineering server) and `DSSEVT00`–`03`,
|
||||||
|
`DSSEVTOPC`, `DSSEVTPRC`, `DSSEVTFTE` — 10 `dsssda.exe` and 7 `dssevt.exe` on the test system,
|
||||||
|
more than the manual's "about 5 per node" advice. On the very first start (`database.new`) the
|
||||||
|
script compiles all `tls\src\*.dss` into the dictionary (`dss -d -q -u`).
|
||||||
|
|
||||||
|
## 2. Tuning — `dss.sup` (§2.2)
|
||||||
|
|
||||||
|
Heartbeats and DUR queue sizes per process (`DSSEVT_HBEAT`, `DSSSDA_QUESZ` …), PML dataset cache
|
||||||
|
time (`DATASET_CACHE_TIME`, 600 s), client event slots (`EVENT_Q_SLOTS`, 100), flow-control
|
||||||
|
interval (`FLOWC`). `DSSSDA_SRV = <node|-1>, "<client>", "<DSSSDA name>"` ties clients to a
|
||||||
|
dedicated `DSSSDA` (start that instance in the start script first).
|
||||||
|
|
||||||
|
**Installed `dss.sup`:** `DSSEVT_QUESZ = 1000`, `DSSSDA_QUESZ = 252`, `FLOWC = 120`; `DSSSDA_SRV`
|
||||||
|
routes `OPCEXE1`–`4`, `OPCACT`, `OPCJACT`, `OPCLOA`, `ALNMGR` to `DSSSDAOPC00`–`03`, `OPX*` to
|
||||||
|
`DSSSDAOPX`, `PRC*` to `DSSSDAPRC`, everything else (`*`) to `DSSSDA00`–`03`; `DSSEVT_SRV` lines do
|
||||||
|
the same for events. Further undocumented keywords: `EXCL_ACC_EXCEPTION_PROCESS`,
|
||||||
|
`CLOG_EXCEPTION_PROCESS`, `CLOG_EXCEPTION_DATASET` (a long list of run-time datasets).
|
||||||
|
|
||||||
|
## 3. Authentication — `dssana.sup` (§2.3)
|
||||||
|
|
||||||
|
`DSSANA` keeps the list of logged-in users and decides who may start which user interface from
|
||||||
|
where. The Setup File Editor tabs: **General** (logout retain time 1440 min, max logged-in /
|
||||||
|
logged-out users, max 5 UIs per remote client, password hashing *Maximal*), **User Interfaces**
|
||||||
|
(each UI, e.g. `JWUIGED` = Edit Module, with the hosts/logins allowed and the authorization
|
||||||
|
action needed), **Clients System Trust** (host/IP list, *Always* or *Deny*, top-down, `<remote>` /
|
||||||
|
`<local>` last), **Login control** (per client and UI: *Automatic*, *Manual CI Server*, *Manual
|
||||||
|
OS*, *No*, *SSO*, *Deny*; profile for *No* login; failed-login delay 5 s), **Active Directory**
|
||||||
|
and **Single Sign On** (phase 13), **Password rules** (length, digits, punctuation, mixed case;
|
||||||
|
all off by default), **Logging** (*Basic*/*Extended*/*Maxima* into `tls\log\dssana.log`, cyclic,
|
||||||
|
10 MB). Practical use: skill `authorization` (`users-groups.md`, login methods).
|
||||||
|
|
||||||
|
## 4. Quick load files and `dssqld` (§3)
|
||||||
|
|
||||||
|
File format (`.qli`): `!` comment lines; marker lines starting with `@` (`@<DATASET>`, `@MACRO`,
|
||||||
|
`@INCLUDE`, `@LANGUAGE`, `@SELECT`, `@FIELDS`); data lines with comma-separated fields; `\` at the
|
||||||
|
end of a line continues it. Unquoted text is upper-cased, quoted text kept; `""` inside a string
|
||||||
|
is a quote. Escape character, separator and continuation character can be changed in
|
||||||
|
`dssqld.sup`.
|
||||||
|
|
||||||
|
| Directive | Use | Verified |
|
||||||
|
|---|---|---|
|
||||||
|
| `@FIELDS` | Field list for the **next** dataset block only; missing fields get defaults (`dssqld -f`) | yes (all phases) |
|
||||||
|
| `@SELECT` | Filter for the next dataset on export only, in single quotes, strings in double quotes | yes (ISS-003) |
|
||||||
|
| `@MACRO` | `<name>,<text…>`; later occurrences of the name are replaced (nesting ≤ 10); must come before the data | yes: field list as macro |
|
||||||
|
| `@INCLUDE` | One file name per line (`.qli` default), nesting ≤ 10 | yes |
|
||||||
|
| `@LANGUAGE` | `ENGLISH` makes a file load on any language version | yes (all sample files) |
|
||||||
|
|
||||||
|
Field types: string, number, date/time (exported as `"dd-mm-yyyy hh:mm:ss"`, the form to load),
|
||||||
|
interval (`"10 Minutes"`, `"1 Days"`, `"1 Weeks"`), **memo** (`@""@` empty, `@"` … `"@` inline
|
||||||
|
text, or `@"<file>"@` text from a file).
|
||||||
|
|
||||||
|
**Installed — memo from a file:** the file name is read on the server side, so a relative name
|
||||||
|
fails (`CRL-E-ENOENT`); an absolute path works but is limited to 82 characters
|
||||||
|
(`DSSG-E-STRBUFSMAL`). Inline memos are the safer choice (ISS-046).
|
||||||
|
|
||||||
|
Options: `-i` insert, `-m` modify, `-r` remove, `-e <out> [<qli>]` export (all datasets except the
|
||||||
|
`NO-EXPORT` list in `dssqld.sup`, or what the qli names), `-c` CSV, `-a` concealed fields, `-d`
|
||||||
|
one dataset, `-f` dictionary report, `-l` listing, `-s` setup file. Exports may need reordering
|
||||||
|
before re-import (circular references: stations ↔ items, first-out groups, classes).
|
||||||
|
`%TLS_DAT_PATH%\dss_export.qli` is a ready-made export list. Task files: skill `system-management`
|
||||||
|
(`export-dataset.md`, `load-remove-records.md`).
|
||||||
|
|
||||||
|
## 5. `dssutl` (§4)
|
||||||
|
|
||||||
|
Interactive menu tool to read and modify single records via the primary index: choose a dataset
|
||||||
|
(numbered list), a field set (*Primary index only*, *All fields* or a saved selection of ≤ 20
|
||||||
|
fields), then *Read equal*, *Read sequential* or *Modify* (change fields, *Perform update*).
|
||||||
|
**Installed:** works with piped answers; values are shown raw (dates as seconds since 1970 in
|
||||||
|
local time, intervals as `<count>.<unit>`, e.g. `10.1` = 10 minutes, `1.3` = 1 day; memos as their
|
||||||
|
file path). Modifying data on a running system affects running applications — prefer `dssqld -m`.
|
||||||
|
Task: skill `system-management`, `dss-tools.md`.
|
||||||
|
|
||||||
|
## 6. Consistency (`dsschk`, §5)
|
||||||
|
|
||||||
|
`dsschk -s` (server, started per node) and the client `dsschk [-d <set>] [-n <node>] [-e] [-r]
|
||||||
|
[-v]` (extended test, repair, verbose). See `IM36K10J10-01EN.md` and task
|
||||||
|
`consistency-check.md`.
|
||||||
|
|
||||||
|
## 7. Dataset notes (Appendix 1)
|
||||||
|
|
||||||
|
Special behaviour per dataset (only the ones not covered elsewhere): `ALARM_ASA_DF` compiles when
|
||||||
|
`COMPILE` is set; `ALARM_CURRENT` only `ACK` can change; `ARCHIVE_COMMAND` drives the archive
|
||||||
|
engine (initialise/mount/register tape, manual archive, retrieve, cancel; phase 9 notes);
|
||||||
|
`AUDIT_EVENT_CLAS_DF` only `STORAGE` changes; `AUTH_ACTION_DF`, `DATASET_*`, `HOST_NODE_DF`,
|
||||||
|
`LOCAL_NODE_DF` read-only; `CLASS_DF` `COMPILE`/`RESET`; `DISPLAY_DF` / `SYMBOL_DF` names only,
|
||||||
|
insert copies a template, `REBUILD`; `FOLDER_DF` deletable only when empty; `HIS_GROUP_DF` only
|
||||||
|
item groups can be added, `FORCE_ROLLOVER`; `HIS_UNITS` deleting a record deletes the unit;
|
||||||
|
`ITEM_HISTORY` always needs `ITEM_NAME`, inserts only into *Direct* groups, no events; `ITEM_VAL`
|
||||||
|
value/status/quality (`BLOCKED_UPDATE` for blocked items, status must be written too over ODBC);
|
||||||
|
`OBJECT_DF` prompts via `ATTR_VALUE_n`, `DEBUG`; `OPC_SERVER_DF` / `OPC_STATION_TAG_DF` read with
|
||||||
|
mandatory filter; `PRINTER_*` devices/destinations (written by the printer manager for `_OVV`
|
||||||
|
and `_TYPE`); `REPORT_DF` / `REPORT_VAL` see `IM36K10C30-01EN.md`; `SEQUENCE_DF` `COMPILE`;
|
||||||
|
`STATION_DF` `REDUN_LINE`.
|
||||||
134
knowledge/manuals/IM36K10P20-01EN.md
Normal file
134
knowledge/manuals/IM36K10P20-01EN.md
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10P20-01EN
|
||||||
|
title: Report Generation Language
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: SELECT/WHERE/ORDER/GROUP BY, COLUMN, HEADER/FOOTER, SET, IF, LOOP, cursors, SPOOL with @EXPORT, functions (GPV_*, CHAR, DECODE, SUBSTR, NUMBER, DRAW, LINE, LOGBOOK_TEXT, TO_GMT …) and dates verified in the interactive generator and in loaded reports on the test system 2026-10-01; SEND/RECEIVE, BREAK, INCLUDE, FLAG PAGE, SPV_* from docs
|
||||||
|
---
|
||||||
|
|
||||||
|
# Report Generation Language — RQL (R1.03)
|
||||||
|
|
||||||
|
RQL is the SQL-like language of REPORT Service. A report definition (`REPORT_DF.QUERY`) is a list
|
||||||
|
of RQL statements, each ending with `;`. Data comes from datasets (`IM36K10L50-01EN.md`).
|
||||||
|
REPORT Service setup: `IM36K10R40-01EN.md`; report definitions in the Engineering Module:
|
||||||
|
`IM36K10C30-01EN.md`. Section numbers refer to the manual.
|
||||||
|
|
||||||
|
## 1. Basics (§1, §2, §9.2–9.5)
|
||||||
|
|
||||||
|
- A report description: layout statements, calculations, queries, end. A **set-up description**
|
||||||
|
(`tls\sup\rptge1.rpt` etc.) runs once when a generator starts and sets defaults for every report
|
||||||
|
(layout, header/footer, dictionary, `LOGIN`). Output of a SELECT in it goes to the system log.
|
||||||
|
- Names: letters, digits, `_`; variables start with `@` (≤ 32 characters); report names ≤ 16.
|
||||||
|
Reserved words (list with `SHOW RESERVED;`) can be used as field names in double quotes.
|
||||||
|
- Data types: string (`'text'`, `''` for an apostrophe, max 512 characters), integer, real
|
||||||
|
(needs a decimal point: `12.`). **Dates are integers**: seconds since 1970 in **local time**
|
||||||
|
(verified: `@DATE` was 10 h ahead of Unix time on a UTC+10 system; `TO_GMT()` gives Unix time).
|
||||||
|
Date constants without quotes: `01-Oct-2026 15:00`, `12:00` (today), `12-Jan-90` (years < 70
|
||||||
|
are 20xx).
|
||||||
|
- Dataset field types become: char → string; boolean/short/ushort/long/ulong/ubyte → integer;
|
||||||
|
float/double → real. Hidden fields need `SET @CONCEAL 0;`.
|
||||||
|
- Errors in a statement stop that statement (some stop the report); they are written into the
|
||||||
|
report (`RPT-E-…`, with a caret under the position in interactive mode). Fatal errors go to the
|
||||||
|
system log.
|
||||||
|
|
||||||
|
## 2. Queries (§3, §9.12 SELECT)
|
||||||
|
|
||||||
|
```
|
||||||
|
SELECT [DISTINCT] <expr> [<alias>], … [FROM <dataset> [<alias>], …]
|
||||||
|
[WHERE <conditions>] [ORDER BY <col|n> [ASC|DESC]] | [GROUP BY <n>… [HAVING <cond>]];
|
||||||
|
```
|
||||||
|
|
||||||
|
- Operators: `= != <> > >= < <= LIKE` (`%` any, `_` one character; change with `@WC_ANY`,
|
||||||
|
`@WC_SINGLE`), `AND`, `OR`, parentheses. String values are case-sensitive.
|
||||||
|
- Joins: list several datasets; the first is primary; join conditions (`a.f = b.f`) come first in
|
||||||
|
WHERE, joined by `AND`.
|
||||||
|
- `SELECT 'text', @var;` without FROM just prints (no headings).
|
||||||
|
- Group functions `AVG COUNT MAX MIN STDDEV SUM VARIANCE` (null values ignored, `DISTINCT`
|
||||||
|
allowed) cannot be mixed with plain columns without GROUP BY and cannot be used in WHERE; put
|
||||||
|
their result into a variable first (`SELECT SET @max MAX(item_value) FROM …;`).
|
||||||
|
- **Verified:** an alias may appear only once per SELECT (`RPT-E-ALIASSEL`); with no matching
|
||||||
|
rows a group function prints the count 0 and blanks.
|
||||||
|
- Reading history: `FROM item_history WHERE item_name = '<item>' AND sample_time > @date - 3600`;
|
||||||
|
add `group_name = '<group>'` to read one storage group (else rows of all groups the item is in);
|
||||||
|
aggregates with `interpolation = '30Minutes'|'Hour'|…` and `attribute = 'Maximum'|…`
|
||||||
|
(`IM36K10C40-01EN.md` §5). Do not use `OR` with `item_name` (DSS appendix).
|
||||||
|
|
||||||
|
## 3. Layout (§4)
|
||||||
|
|
||||||
|
| Statement / variable | Effect |
|
||||||
|
|---|---|
|
||||||
|
| `COLUMN <alias> [AT n] [AS '<format>'] [HEADING 'a|b'];` | Format of a column (`|` splits the heading) |
|
||||||
|
| `HEADER` / `FOOTER <expr> [AT n|LEFT|CENTER|RIGHT] [AS '<fmt>'] [SKIP n], …;` | Page header/footer; empty `HEADER '';` removes it |
|
||||||
|
| `BREAK <alias> [SKIP n|SKIP PAGE] [CALCULATE SUM|AVG|… <aliases>];` | Group breaks with subtotals |
|
||||||
|
| `FLAG PAGE '<file>';` | Text file printed before everything |
|
||||||
|
| `@PAGE_SIZE` (0 = no page breaks), `@WIDTH` (40–512 per R40; 40–5000 per §9.6), `@TOP_MARGIN`, `@BOTTOM_MARGIN`, `@LEFT_MARGIN`, `@RIGHT_MARGIN` | Page geometry |
|
||||||
|
| `@EXPORT 1` | Comma-separated output: only rows, strings quoted |
|
||||||
|
| `@DECIMAL 44` | Decimal comma |
|
||||||
|
|
||||||
|
Formats: numbers `9` digit, `0` leading zero, `+` sign, `.` decimal point, `EEEE` exponent;
|
||||||
|
dates `D DD DDD M MM MMM Y YY YYYY hh mm ss` (e.g. `'DD-MMM-YYYY hh:mm:ss'`); strings `A…`, `R`
|
||||||
|
right, `C` centre, `A20`; `\` copies the next character; C formats (`%5d`, `%.1f`, `%s`). An integer
|
||||||
|
with a real format prints oddly (e.g. `+99.9` on 12 → `+12.12`); formats are minimum widths.
|
||||||
|
|
||||||
|
## 4. Flow control and cursors (§5)
|
||||||
|
|
||||||
|
`IF <cond> THEN … [ELSE …] ENDIF;` (no field names in the condition), `LOOP … ENDLOOP;` with
|
||||||
|
`EXIT;` — loops only work in stored reports (verified: typed or piped into the interactive
|
||||||
|
generator they give `RPT-E-LPNOTAL, LOOP only allowed in report definition FILES and DIRECT
|
||||||
|
mode`). Cursors:
|
||||||
|
|
||||||
|
```
|
||||||
|
SET @n ''; SET @v 0.;
|
||||||
|
DECLARE @c IS SELECT name, item_value FROM item_val WHERE name LIKE 'CI-Eng-Sample.TANK1.%';
|
||||||
|
OPEN @c;
|
||||||
|
LOOP FETCH @c INTO @n, @v; IF @rqlcount = 0 THEN EXIT; ENDIF; SELECT @n, @v; ENDLOOP;
|
||||||
|
CLOSE @c; DECLARE; /* DECLARE without arguments removes all cursors - always end with it */
|
||||||
|
```
|
||||||
|
|
||||||
|
Variables used in `FETCH … INTO` must exist first (`SET`). `@RQLCOUNT` = rows of the last
|
||||||
|
SELECT/FETCH; `@RQLERROR` counts errors. Verified in `CIENG_HTML`.
|
||||||
|
|
||||||
|
## 5. Data manipulation (§6, §9.11)
|
||||||
|
|
||||||
|
Arithmetic `+ - * /` (integer arithmetic until a real appears: `12/5+10.0` = 12, `12/5.0+10.0` =
|
||||||
|
12.4, verified), `||` concatenation, variables (`SET @v <expr>;`, type follows the value; some
|
||||||
|
system variables are read-only). Functions verified on R1.03: `GPV_VALUE(<item>, 0)` (second
|
||||||
|
argument non-zero **resets the item to 0** after reading — use 0), `GPV_STATUS` (status number,
|
||||||
|
e.g. 9), `GPV_QUALITY`, `CHAR(<n>[, '<fmt>'])`, `NUMBER('<text or date>')`, `DECODE`, `SUBSTR`,
|
||||||
|
`UPPER`, `LOWER`, `LENGTH`, `LINE(n)`, `DRAW(n, '*')`, `MONTH_DAYS`, `TO_GMT`, `LOGBOOK_TEXT('<report>')`.
|
||||||
|
Also documented: `ABS`, `ADD_MONTHS`, `ASCII_FILE` (≤ 511 characters), `BAND/BOR/BXOR/BNOT/BSHIFT`,
|
||||||
|
`CHR`, `TO_LCT`, `TO_INTEGER`, `TO_REAL`, `SPV_VALUE/SPV_STATUS/SPV_QUALITY` (**write** an item —
|
||||||
|
only with approval).
|
||||||
|
|
||||||
|
System variables: `@DATE`/`@TIME` (now), `@GEN_TIME` (scheduled time of this generation),
|
||||||
|
`@PAGE`, `@LINE`, `@CUSTOMER`, `@VERSION` (`'1.03.00'`), `@NAME`, `@DESCRIPTION`, `@P0`–`@P7`
|
||||||
|
(ad-hoc parameters, strings, not available in the interactive generator), `@NEXT` (1 = pause each
|
||||||
|
page in interactive mode), `@WORKSPACE`, `@SORTSPACE`, `@FORMFEED`.
|
||||||
|
|
||||||
|
## 6. Output to files (§6, §9.12 SPOOL)
|
||||||
|
|
||||||
|
```
|
||||||
|
SPOOL 'C:\Users\Public\Yokogawa\tls\lst\cieng_levels.csv';
|
||||||
|
SET @EXPORT 1;
|
||||||
|
SELECT name, item_value, status FROM item_val WHERE name LIKE 'CI-Eng-Sample.TANK1.%';
|
||||||
|
SPOOL;
|
||||||
|
SET @EXPORT 0;
|
||||||
|
```
|
||||||
|
|
||||||
|
Verified: the file gets `"name",value,"status"` lines; the output also still appears in the
|
||||||
|
report. File name ≤ 79 characters, overwritten if it exists, never deleted by CI Server.
|
||||||
|
Environment variables are not expanded.
|
||||||
|
|
||||||
|
## 7. Communication and miscellaneous (§7, §8)
|
||||||
|
|
||||||
|
`SEND [<node>:]<process> [REPLY] [CODE n] [NO] PACKING <expr> AS 'I1|I2|I4|F4|F8|Ann', …;` and
|
||||||
|
`RECEIVE [FROM …] [CODE n] [NO] PACKING [TIMEOUT s] @v AS '…', …;` exchange BUS Service messages
|
||||||
|
with applications (system integrators). `DICTIONARY rpidis.'tlsdic';` (default),
|
||||||
|
`INCLUDE '<report>' | FILE '<file>';`, `LOGIN rptman[, <prio>];` (set-up files only, last
|
||||||
|
statement), `QUIT;`, `SHOW [FULL] VARS|COLUMN|CURSOR|HEADER|FOOTER|BREAKS|RESERVED|STAT|WORKSPACE|*;`.
|
||||||
|
|
||||||
|
## 8. Building queries (Appendix 1)
|
||||||
|
|
||||||
|
Field names: `dssqld -f -d <DATASET>`, the `.dss` files in `tls\src`, or *Ctrl+Space* in the
|
||||||
|
Engineering Module query editor (keywords, datasets, fields). Example in the appendix: current
|
||||||
|
alarms from `alarm_current` with a header.
|
||||||
64
knowledge/manuals/IM36K10P30-01EN.md
Normal file
64
knowledge/manuals/IM36K10P30-01EN.md
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10P30-01EN
|
||||||
|
title: Data Set Service Language
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: compiler run as a syntax check on a copy of the installed DSS files and on a deliberately broken test file (2026-10-01); defining new datasets and updating the dictionary from docs only
|
||||||
|
---
|
||||||
|
|
||||||
|
# Data Set Service Language (R1.03)
|
||||||
|
|
||||||
|
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 test system, 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. `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.
|
||||||
77
knowledge/manuals/IM36K10R40-01EN.md
Normal file
77
knowledge/manuals/IM36K10R40-01EN.md
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10R40-01EN
|
||||||
|
title: Report Server Setup
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: processes, start/stop scripts, rptman.sup and the generator set-up files checked on the test system; interactive generator and rptstp verified 2026-10-01; separate server processes, extra generators and custom destinations from docs
|
||||||
|
---
|
||||||
|
|
||||||
|
# Report Server Setup (R1.03)
|
||||||
|
|
||||||
|
How REPORT Service is built and configured. Writing reports: `IM36K10P20-01EN.md` (RQL) and
|
||||||
|
`IM36K10C30-01EN.md` (Engineering Module). Section numbers refer to the manual.
|
||||||
|
|
||||||
|
## 1. Parts (§1)
|
||||||
|
|
||||||
|
| Block | Process | Job |
|
||||||
|
|---|---|---|
|
||||||
|
| Manager | `RPTMAN` | Stores report definitions, schedules (through HISTORY Service), event triggers and ad-hoc requests; hands generation to a generator; manages generated reports |
|
||||||
|
| Generator | `RPTGE1` (executable `rptgen`) | Runs the RQL of a report and writes the result; ad-hoc queries use copies of the generator |
|
||||||
|
| Report stopper | `rptstp <generator>…` | Cancels the report a generator is working on |
|
||||||
|
| Info servers (RPI) | `rpidic`, `rpidis` (DSS dictionary), `rpidix` (DSS data), `rpifil`, `rpiitm`, `rpihis`, `rpialm`, `rpievt`, `rpiopc`, `rpicif` | Fetch data for the generator; **linked into the generator by default** — separate processes only when the data lives on another node |
|
||||||
|
|
||||||
|
Default layout (installed): one node, servers linked into `rptgen`; `report_start.cmd` (in
|
||||||
|
`tls\com`) refuses to start when HISTORY Service is not running, then starts `rptman` and
|
||||||
|
`rptgen -n rptge1`. The separate `rpi*` lines and a second generator (`rptge2`) and `rptgsp`
|
||||||
|
are present but commented out. `report_stop.cmd` stops `rpt*` and `rpi*` with `durstp`.
|
||||||
|
Full functionality needs BUS, DATABASE, HISTORY, ITEM, AUDIT, PROCESS Services and INTEGRATION.
|
||||||
|
|
||||||
|
## 2. Setup files (§2.2)
|
||||||
|
|
||||||
|
- `tls\sup\rptman.sup` (manager): `HIS = <node>, <name>, <task>` (default `0, HIS, 0`),
|
||||||
|
`DUR_QUEUE_SIZE` (500 KB). `FPATH`/`SPATH` are not used. **Installed:** `his = 0, HIS, 0`,
|
||||||
|
`dur_queue_size = 500`. Also present: `rptini.sup` (only a licence-like value, undocumented).
|
||||||
|
- Generator set-up descriptions are RQL files with extension `.rpt`, named after the instance:
|
||||||
|
- `rptge1.rpt` (background generator) — installed: `@workspace 500`, `@page_size 66`,
|
||||||
|
`@width 120`, `@left_margin 1`, `@top_margin 1`, header (line, customer name centred,
|
||||||
|
description right, `Report of DD-MMM-YY`, line), footer (line, report name, `page n`, line),
|
||||||
|
`dictionary rpidis.'tlsdic';`, `login rptman;` (priority 0). Every background report gets
|
||||||
|
this layout unless its query overrides it.
|
||||||
|
- `rptgen.rpt` (interactive) — no `LOGIN` (that is what makes the generator interactive),
|
||||||
|
`@page_size 23`, `@formfeed 0`, `@workspace 100`.
|
||||||
|
- `rptgsp.rpt` — a spare generator with `login rptman, 9` (not started by default).
|
||||||
|
Documented defaults when a variable is not set: top 3, bottom 6, left/right 0, width 80
|
||||||
|
(40–512), page 72 (20–255), sort space 100 KB, workspace 500 KB (C30 and P20 say 16 KB, ISS-047).
|
||||||
|
- `DICTIONARY` in the set-up file chooses the dictionary server/node; default `rpidis.'tlsdic'`
|
||||||
|
(file `%TLS_DAT_PATH%\tlsdic_dss.dic`).
|
||||||
|
|
||||||
|
## 3. More generators (§2.4)
|
||||||
|
|
||||||
|
Add `start /B /NORMAL %TLS_ROOT_PATH%\tls\exe\rptgen -n rptge2` to `report_start.cmd` and a
|
||||||
|
`tls\sup\rptge2.rpt` ending with `LOGIN rptman, <p>;`. A generator only takes reports with a
|
||||||
|
priority ≥ its own; one generator must keep priority 0. Higher-priority reports are generated
|
||||||
|
first. Admin rights and a restart needed (not practiced).
|
||||||
|
|
||||||
|
## 4. Layout defaults (§3.1, §3.2)
|
||||||
|
|
||||||
|
Put shared header/footer/margins in the set-up file (or a new `.rpt` given with `-s`).
|
||||||
|
`@export 1` gives comma-separated output (for files read by other programs). Memory: `@workspace`
|
||||||
|
(strings, records), `@sortspace` (ORDER/GROUP BY; spills to `tls\lst` when too small).
|
||||||
|
|
||||||
|
## 5. Destinations (§3.3)
|
||||||
|
|
||||||
|
The Engineering Module offers file, printer and system log destinations; R1.03 adds printer
|
||||||
|
management devices and destinations (`IM36K10C30-01EN.md` §3). Adding a new built-in destination
|
||||||
|
means changing `rpt_print.c` (not shipped as buildable on the test system), re-linking `rptman`
|
||||||
|
and adding a list entry to `report_val.dss` (`dss -d`) — system integrator work, not practiced.
|
||||||
|
|
||||||
|
## 6. Interactive mode (§4) and stopping (§5)
|
||||||
|
|
||||||
|
`rptgen -s rptgen.rpt` starts a foreground generator (prompt `RPT>`); end with `QUIT;`. Useful to
|
||||||
|
try RQL and inspect datasets without defining a report. `rptstp rptge1` cancels the running
|
||||||
|
report of `RPTGE1` (also the *Cancel* button / `REPORT_DF.CANCEL`).
|
||||||
|
|
||||||
|
**Verified 2026-10-01:** piped input works (`rptgen -s rptgen.rpt < query.rql`), set
|
||||||
|
`SET @NEXT 0;` first or every page waits for Enter. `rptstp rptge1` stopped an endless loop
|
||||||
|
report within seconds; `GENERATE` went back to 0, an empty generated report was stored, the
|
||||||
|
generator stayed running and took the next report normally. Task: skill `reporting`.
|
||||||
|
|
@ -56,12 +56,12 @@ AID is not needed.
|
||||||
| 10 | IM 36K10R30 | Graphic Display Setup | done for HTML display, folders and layouts (phase 10b: desktop and web); dataset forms, form language, dual screen from docs ([notes](manuals/IM36K10R30-01EN.md)); skill `graphics` |
|
| 10 | IM 36K10R30 | Graphic Display Setup | done for HTML display, folders and layouts (phase 10b: desktop and web); dataset forms, form language, dual screen from docs ([notes](manuals/IM36K10R30-01EN.md)); skill `graphics` |
|
||||||
| 10 | IM 36K10C50 | Edit Module | done for one display (built by the user) and `jwuiutl` validate/search/export; other components, symbols, actions from docs ([notes](manuals/IM36K10C50-01EN.md)) |
|
| 10 | IM 36K10C50 | Edit Module | done for one display (built by the user) and `jwuiutl` validate/search/export; other components, symbols, actions from docs ([notes](manuals/IM36K10C50-01EN.md)) |
|
||||||
| 10 | IM 36K10C60 | Advanced Operating Graphics | summarized, from docs (AOG displays checked read-only) ([notes](manuals/IM36K10C60-01EN.md)) |
|
| 10 | IM 36K10C60 | Advanced Operating Graphics | summarized, from docs (AOG displays checked read-only) ([notes](manuals/IM36K10C60-01EN.md)) |
|
||||||
| 11 | IM 36K10L50 | Data Set Service Engineering | not started |
|
| 11 | IM 36K10L50 | Data Set Service Engineering | done for DSS processes, `dss.sup`, quick load directives (macro, include, memo from file), `dssutl` read; `dssana.sup` covered by skill `authorization` ([notes](manuals/IM36K10L50-01EN.md)); task `system-management/dss-tools.md` |
|
||||||
| 11 | IM 36K10P30 | Data Set Service Language | not started |
|
| 11 | IM 36K10P30 | Data Set Service Language | summarized; compiler used as syntax check on a copy (no dictionary change) ([notes](manuals/IM36K10P30-01EN.md)) |
|
||||||
| 11 | IM 36K10P20 | Report Generation Language | not started |
|
| 11 | IM 36K10P20 | Report Generation Language | done for queries, layout, cursors/loops, functions, SPOOL/CSV, HTML; SEND/RECEIVE, BREAK, INCLUDE, FLAG PAGE from docs ([notes](manuals/IM36K10P20-01EN.md)); skill `reporting` |
|
||||||
| 11 | IM 36K10R40 | Report Server Setup | not started |
|
| 11 | IM 36K10R40 | Report Server Setup | done for processes, set-up files, interactive generator, `rptstp`; extra generators, separate RPI servers, custom destinations from docs ([notes](manuals/IM36K10R40-01EN.md)) |
|
||||||
| 11 | IM 36K10C30 | Engineering Module - Reporting | not started |
|
| 11 | IM 36K10C30 | Engineering Module - Reporting | done by quick load for report definitions (ad hoc + parameters, schedule, item trigger, HTML, logbook), generated reports and a file device/destination; Engineering Module forms awaiting the user's check; report component in displays and hardcopy printers from docs ([notes](manuals/IM36K10C30-01EN.md)) |
|
||||||
| 11 | IM 36K10E10 | Excel Add-in | not started |
|
| 11 | IM 36K10E10 | Excel Add-in | summarized, from docs (Excel not installed on the test system) ([notes](manuals/IM36K10E10-01EN.md)) |
|
||||||
| 12 | IM 36K10L25 | Audit Trail Management | not started |
|
| 12 | IM 36K10L25 | Audit Trail Management | not started |
|
||||||
| 13 | IM 36K10J20 | High Availability Computing | not started (needs two servers) |
|
| 13 | IM 36K10J20 | High Availability Computing | not started (needs two servers) |
|
||||||
| 13 | IM 36K10J40 | Active Directory Integration | not started (needs a domain) |
|
| 13 | IM 36K10J40 | Active Directory Integration | not started (needs a domain) |
|
||||||
|
|
@ -109,7 +109,7 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
||||||
| C10 | Integrator time unit: integration granule `itm_int_secs` in `itm.sup` ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | 60 → `RUN_SECONDS` +1 per minute; restored to 1 (file identical to backup), +1 per second again ([ISS-010](issues.md)). Elevated restarts run by the user. |
|
| C10 | Integrator time unit: integration granule `itm_int_secs` in `itm.sup` ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | 60 → `RUN_SECONDS` +1 per minute; restored to 1 (file identical to backup), +1 per second again ([ISS-010](issues.md)). Elevated restarts run by the user. |
|
||||||
| G10 | Displays, symbols, Operator Interface test | display done (phase 10); symbols not practiced | display added | Display `CIENG_Tank` built in the Edit Module and checked in the HTML display. |
|
| G10 | Displays, symbols, Operator Interface test | display done (phase 10); symbols not practiced | display added | Display `CIENG_Tank` built in the Edit Module and checked in the HTML display. |
|
||||||
| L41/C10 | Modbus TCP line, station, scan type, points, connected items by quick load ([task](../.claude/skills/equipment/tasks/modbus-station.md)) | passed | passed | Loopback to CI Server's own Modbus slave (`eqpmdcmem` + `eqpmdcslvtcp` on 5020, started by hand). Line load created and started `EQPCIENG`; removal stopped it and deleted its files. Write/read-back, off-scan/on-scan checked; full remove/reload from sample files. Protocol must be Open Modbus/TCP ([ISS-024](issues.md)). Mirror start files copied to `tls\com` by the user; after a restart everything came back under the CI Service and the setpoint was re-sent on connect. |
|
| L41/C10 | Modbus TCP line, station, scan type, points, connected items by quick load ([task](../.claude/skills/equipment/tasks/modbus-station.md)) | passed | passed | Loopback to CI Server's own Modbus slave (`eqpmdcmem` + `eqpmdcslvtcp` on 5020, started by hand). Line load created and started `EQPCIENG`; removal stopped it and deleted its files. Write/read-back, off-scan/on-scan checked; full remove/reload from sample files. Protocol must be Open Modbus/TCP ([ISS-024](issues.md)). Mirror start files copied to `tls\com` by the user; after a restart everything came back under the CI Service and the setpoint was re-sent on connect. |
|
||||||
| G10 | Alarms, reports, audit, RDBMS, history | alarms done (phase 8); others not practiced | alarms added | Covered in their own phases (7–12). |
|
| G10 | Alarms, reports, audit, RDBMS, history | alarms (phase 8), history (phase 9), reports (phase 11) done; audit, RDBMS not practiced | alarms, history, reports added | Covered in their own phases (7–12). |
|
||||||
| R10/R20 | Read a setup file: active settings and keyword help ([task](../.claude/skills/portal-setup/tasks/read-setup-file.md)) | passed | n/a | Read-only. Compared with the Setup File Editor GUI for `wfla_display.sup`, `wflgdi.sup` and all 9 tabs of `jwuiisg.sup`: fields and values identical. Manual differences logged as ISS-012 to ISS-017 (installed software taken as the reference). |
|
| R10/R20 | Read a setup file: active settings and keyword help ([task](../.claude/skills/portal-setup/tasks/read-setup-file.md)) | passed | n/a | Read-only. Compared with the Setup File Editor GUI for `wfla_display.sup`, `wflgdi.sup` and all 9 tabs of `jwuiisg.sup`: fields and values identical. Manual differences logged as ISS-012 to ISS-017 (installed software taken as the reference). |
|
||||||
| R10 | Check web access for CI View: ports, Remote Connect page, `DEPLOY` folder ([task](../.claude/skills/portal-setup/tasks/check-web-access.md)) | passed | n/a | 8080/8443 listening, page 200, six `DEPLOY` folders. |
|
| R10 | Check web access for CI View: ports, Remote Connect page, `DEPLOY` folder ([task](../.claude/skills/portal-setup/tasks/check-web-access.md)) | passed | n/a | 8080/8443 listening, page 200, six `DEPLOY` folders. |
|
||||||
| R10/R20 | Change a setup file safely ([task](../.claude/skills/portal-setup/tasks/change-setup-file.md)) | passed | n/a | `jwuiisg.sup` HTTP port 8080 → 8081 (text edit, elevated restart): 8081 served the page, 8080 refused; restored, hash identical to backup. Editor: *OK* writes at once, *Reset Field* restores the default (ISS-016). |
|
| R10/R20 | Change a setup file safely ([task](../.claude/skills/portal-setup/tasks/change-setup-file.md)) | passed | n/a | `jwuiisg.sup` HTTP port 8080 → 8081 (text edit, elevated restart): 8081 served the page, 8080 refused; restored, hash identical to backup. Editor: *OK* writes at once, *Reset Field* restores the default (ISS-016). |
|
||||||
|
|
@ -135,3 +135,10 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
||||||
| R30/C50 | Operator layout `CIENG_Operator` (menu, toolbar, navigation/main/banner frames, status line) added with `layout.ps1`; navigation display `CIENG_Menu`; open displays in frames, layouts and the `popup` layout ([task](../.claude/skills/graphics/tasks/layouts.md)) | passed | passed | Desktop: second 1600 x 900 window, frame navigation and Back, popup on top and minimised with its parent, F11 within taskbar limits; the Operator Interface must be restarted after `Layouts.xml` changes; factory `default` layout unchanged for Admin. Web: `?d=CIENG_Tank&l=CIENG_Operator`. Status line/command names not in the readme (ISS-042). A stray trend property connection caused a desktop error (ISS-041 update). |
|
| R30/C50 | Operator layout `CIENG_Operator` (menu, toolbar, navigation/main/banner frames, status line) added with `layout.ps1`; navigation display `CIENG_Menu`; open displays in frames, layouts and the `popup` layout ([task](../.claude/skills/graphics/tasks/layouts.md)) | passed | passed | Desktop: second 1600 x 900 window, frame navigation and Back, popup on top and minimised with its parent, F11 within taskbar limits; the Operator Interface must be restarted after `Layouts.xml` changes; factory `default` layout unchanged for Admin. Web: `?d=CIENG_Tank&l=CIENG_Operator`. Status line/command names not in the readme (ISS-042). A stray trend property connection caused a desktop error (ISS-041 update). |
|
||||||
| J10/C50 | Restart CI Server with the Edit Module open | observed | n/a | Start aborted: `JWUIGED<pid>` still attached to the BUS Service (`ci_start.log`); closing the Edit Module fixed it (skill `system-check`). |
|
| J10/C50 | Restart CI Server with the Edit Module open | observed | n/a | Start aborted: `JWUIGED<pid>` still attached to the BUS Service (`ci_start.log`); closing the Edit Module fixed it (skill `system-check`). |
|
||||||
| R30/C50/C60 | Dataset forms, symbols, AOG library, dual screen, per-user layouts | not practiced | n/a | GUI work; user profiles not changed. |
|
| R30/C50/C60 | Dataset forms, symbols, AOG library, dual screen, per-user layouts | not practiced | n/a | GUI work; user profiles not changed. |
|
||||||
|
| R40/C30 | REPORT Service checks: processes, set-up files (`rptman.sup`, `rptge1.rpt`, `rptgen.rpt`), system reports, `rptstp` ([task](../.claude/skills/reporting/tasks/report-checks.md)) | passed | n/a | Read-only plus one cancel: `rptstp rptge1` stopped the endless-loop test report `CIENG_LOOP` (removed). 28 system reports; two names differ from the manual (ISS-043). |
|
||||||
|
| R40/P20 | RQL in the interactive generator (`rptgen -s rptgen.rpt`), CSV with `SPOOL` ([task](../.claude/skills/reporting/tasks/rql-interactive.md)) | passed | passed | Piped query files (bash `<`, PowerShell via `cmd /c`); `@NEXT 0` needed; dates are local-time seconds; LOOP refused interactively (`RPT-E-LPNOTAL`); aggregated history empty on the test system. |
|
||||||
|
| C30/P20 | Report definitions by quick load: ad hoc with parameters, daily schedule, item trigger, HTML with cursor loop, logbook; generate, read, print, delete; remove ([task](../.claude/skills/reporting/tasks/define-reports.md)) | practiced, awaiting confirmation | passed | `CIENG_TANK1`, `CIENG_INFLOW_HI`, `CIENG_HTML` + destination `CIENG_FILE`; full sample remove/reload 0 errors. Schedule ≥ 10 min, scheduled report not deletable until the schedule is cleared, `CORRECT_DAYLIGHT` (ISS-044); `dssqld` ad hoc without `ADHOC_DEST` logs a print error (ISS-045). Engineering Module forms still to be checked by the user. |
|
||||||
|
| C30 | File printer device and destination ([task](../.claude/skills/reporting/tasks/output-devices.md)) | passed | passed | Output type needs the node name (`<node>:FILE`); literal path only (`%TLS_LST_PATH%` failed). Sample builds the file at load (`17_printer_df.ps1`). |
|
||||||
|
| L50/P30 | DSS tools: processes, `dss.sup`, quick load macro/include/memo file, `dssutl` read, DSS compiler syntax check ([task](../.claude/skills/system-management/tasks/dss-tools.md)) | passed | n/a | Memo from file: absolute path ≤ 82 characters only (ISS-046). Dictionary untouched. |
|
||||||
|
| C30 | Report component on a display, hardcopy printer, extra report generators | not practiced | n/a | GUI / no printer / admin restart. |
|
||||||
|
| E10 | Excel Add-in (DART) | not practiced | n/a | Excel not installed on the test system. |
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue