---
task: Check PROCESS Service with opcdbg (database check, classes, objects, performance)
version: R1.05 (first written for R1.03)
source: IM 36K10L10-01EN 4th ed. (Feb. 2026) §4; practiced on the test system with CI-Eng-Sample 2026-09-30
status: verified on R1.03 (read-only actions and Reset class). On R1.05 (2026-10-09, read-only) the database check and the OPCEXE1 performance main info gave the same prompts and output layout; the Java executor statistics did not answer to piped input (ISS-157, awaiting user verification); the other actions were not re-run
---
# PROCESS Service checks with `opcdbg`
`opcdbg` is interactive. Answers can be piped in, one per line, in Bash; always add a time-out
and end with `-1` lines, because on end of input it repeats the last prompt forever. `opcdbg 0
` starts in a menu on node 0 (this node). Times are printed in **GMT**.
Only the actions below are read-only. Do not use insert/modify/delete, *Database repair*,
*Reset* (utilities) or *Modify attribute value* without the user's approval.
| Check | Command (Bash) | Output |
|---|---|---|
| Database consistency | `printf '5\n-1\n-1\n' \| timeout 60 opcdbg 0 5` | Counts per store (trigger groups, classes, sources, code, objects, signals, attributes), then checks; warnings such as `No compiled code found for class (cls_id = …)` |
| Class details | `printf '2\n5\nN\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Language, priority, modified/compiled times, cls_id, objects derived / reset, hidden |
| Class by id (from a warning) | `printf '2\n5\nI\n\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Same; `Compiled at : 0` = never compiled |
| Object details | `printf '3\n4\nN\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Priority, control item id, times, cls_id/obj_id |
| Object status | `printf '3\n18\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Total runs, executor (`Running in : 1, OPCEXE1`) |
| Object signals / attributes | `3` then `14` / `12`, object name | Signal → item id; attribute → type (LOCAL/GLOBAL) |
| Executor statistics | `printf '0\nOPCEXE1\n1\n-1\n-1\n' \| timeout 20 opcdbg 0 4` | Active classes/objects/trigger groups/items, number of executions; times stay 0 unless `STATISTICS = YES` in `opc.sup` |
Executor names on R1.03 and R1.05 (same `opc.sup`): `OPCEXE1`…`OPCEXE4` (Traditional,
priority ranges 0–249 … 750–999) and `OPCJEXE` (Java). The prompt's default `OPCEXE` does
not exist.
For `OPCJEXE` the piped command gave no output within 40 s on R1.05 (2026-10-09; the
debugger was stopped). Run it interactively: `opcdbg 0 4`, Enter (node 0), `OPCJEXE`, `1`,
then `-1` twice; expected: the same main-info block as for `OPCEXE1` (ISS-157). If it hangs,
close the window; nothing is changed.
Easier for names: the datasets `OBJECT_SIGNAL_DF` (object:signal → item name) and
`OBJECT_ATTR_VAL` / `CLASS_ATTR_VAL` (attribute values) via `dssqld -e` with a filter — see
`traditional-class.md` §3.
## Dumps
*Utilities* 3 / 4 (`printf '3\nclasses.qli\n4\nobjects.qli\n-1\n-1\n' | timeout 30 opcdbg 0 5`)
write all class sources / objects to files in the current folder. The format is an old one
(`NAME,"description",priority` then source lines starting with `- `) and **`dssqld -i` rejects
it** (`DSS-E-UNK_DS_NM`, ISS-027). To move classes and objects to another system, export
`CLASS_DF` and `OBJECT_DF` with `dssqld -e` instead (task `load-class-object.md`; migration in
`knowledge/manuals/IM36K10J10-01EN.md` §5.6).
## Observed on the test systems
R1.05 test server (2026-10-09): the database check read every store and reported no
warning; `OPCEXE1` main info listed active classes, objects, trigger groups and items and the
execution count, with all times 0 (`STATISTICS = NO`, as on R1.03).
R1.03: the database check reported one warning for a class `SINUS` (not from this repo) that was
never compiled; everything else was consistent. A class like that is harmless but can be
compiled or removed by its owner.