Skip to content

64B WarningMessage

Validated   MON 64B (52 decimal) · Mnemonic ERMSG · Group: Input and Output Monitor Calls (manual section 2.5)

Available from: All programs (manual compatibility box)

Emulation source: src/handlers/mon_64B_WarningMessage.c

Description

Outputs a file system error message. Appendix A shows the messages connected to each error code. The error code is input. The program continues.

  • The error message is output to the terminal. In batch jobs, mode jobs, and RT programs it is output to the error device. The error device is normally the console.
  • Error code 0 is illegal.

Parameters

Name Type Direction Description
ErrCode INTEGER In Error code number. Error code 0 is illegal. See appendix A.

Direction: In = the program supplies the value, Out = the call returns it, In/Out = both.

See also

GetErrorMessage, ErrorMessage. ErrorMessage writes out the error message, terminates the program

Compatibility

Machines Users Programs
ND-100 and ND-500 All users All programs

The manual's compatibility box for this call, word for word.

Yes/no fields from the YAML extraction (not in the manual's words):

ND-100 ND-500 User programs RT programs System programs
Yes No No No No

Disagreement

The manual box says ND-100 and ND-500, but the yes/no fields say ND-100 = Yes, ND-500 = No. The manual box is the source.

Examples

From the manual (OCR text, not corrected).

INTEGER : ErrCode
...
Monitor_Call('WarningMessage', ErrCode)
INTEGER ErrCode
...
Monitor_Call('WarningMessage', ErrCode)
ErrCode : INTEGER2;
...
WarningMessage(ErrCode);
01 ErrCode COMP.
...
MONITOR-CALL "WarningMessage" USING ErrCode.
ErrCode : W BLOCK 1
WarningMessage : EQU 37B9 + 64B
...
CALLG WarningMessage, 1, ErrCode
| Command | Parameter | Description                                  |
|---------|-----------|----------------------------------------------|
| LDA     | ERRNO     | %Error number of error message to be printed.|
| MON     | 64        | %Monitor call WarningMessage.                |
|         |           |                                              |

...
ERRNO, ...

ndmonlib implementation

Validated Registered MON_STATUS_VALIDATED in src/core/mon_registry.c: implemented, tested and working.

Handler mon_64B_WarningMessage
Code lines 14 (non-blank, non-comment lines in the file)
Generator note registered VALIDATED but the source says 'TODO' - check whether the call is complete

Notes from the handler source

src/handlers/mon_64B_WarningMessage.c line 29

Per the carved L07 ERMSG worker (dual entry ERMSG/QERMS @16714B, closing
at 17020B EXIT): the body has NO error/K return path - it looks up the
message text, writes it, and always continues. "Error code 0 is illegal"
is a caller-side manual note, NOT a status this call returns. So do not
fabricate an error return for code 0; just log and continue.

src/handlers/mon_64B_WarningMessage.c line 38

Output the error message to console in octal format per SINTRAN convention
TODO: Add actual SINTRAN III error message lookup table later

Emulation research

Source

This section comes from the emulation: block of the call's YAML file in the NDInsight repo. It records what was learned while implementing the call in nd500x; its status is nd500x's, not ndmonlib's.

Status (nd500x) partial
nd500x handler nd500x/src/libmon/handlers/mon_64B_WarningMessage.c
Last updated 2026-07-17

Partial behaviour

THE MESSAGE TEXT IS NOT REAL - SAY SO. 64B ERMSG is supposed to output the Appendix A message connected to the error code. nd500x has NO error-message lookup table: it prints the literal placeholder "[SINTRAN ERROR <n>B]" (octal) to stderr - NOT to the emulated console, and NOT the real text. The control flow (always continue, never error) IS correct and carve-backed; only the text is missing. TODO marked in the handler.

Parameter notes

Name Note Verified
ErrCode Read as a 32-bit word (ND-500 INTEGER = W BLOCK, not H BLOCK) and treated as signed. Yes

Return contract

  • Success: K flag cleared, ALWAYS. This call has no error return - the program continues after the message is output, exactly as the manual says.
  • Errors

Verified

1. 64B has NO error/K return path at all. "Error code 0 is illegal" is a CALLER-SIDE manual note, NOT a status this call returns - so an emulator must NOT fabricate an error return for code 0.

Field Value
Evidence The carved L07 ERMSG worker, dual entry ERMSG/QERMS @16714B, closing at 17020B EXIT: the body looks up the message text, writes it, and always continues. No K-set path exists in the body. nd500x therefore logs a warning for code 0 and continues.

Unverified

  • THE ERROR-MESSAGE TEXT ITSELF. No Appendix A message table is implemented, so the output is a placeholder rather than the real message. Any program that parses ERMSG output (rather than merely emitting it) will not work.
  • THE OUTPUT DESTINATION IS WRONG-ISH. The manual says the message goes to the terminal, or to the error device (normally the console) in batch jobs, mode jobs and RT programs. nd500x writes to the HOST's stderr via fprintf, bypassing the ConsoleIO handler entirely - so the text does NOT appear in mon_get_console_output() and is invisible to a queued-console harness. The batch/mode/RT error-device distinction is not modelled at all.
  • The octal formatting of the placeholder ("%oB") is nd500x's own convention, not a real SINTRAN output format.
  • NO OBSERVED CALLER with a checked expectation. 64B was given "provisional/ refined behavior for the linker and NC paths" (commit fc3ac5b) but no trace proves what a caller does with the result.

Sources

Doc Note
SINTRAN III Monitor Calls (ND-860228.2 EN) The manual body of this YAML. Appendix A carries the message table - not implemented.
Carved L07 ERMSG worker (dual entry ERMSG/QERMS @16714B .. 17020B EXIT) The proof that there is no error return path.

Source

SINTRAN III Monitor Calls (ND-860228.2 EN), page 559.