Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error Codes

All errors use the IucvError enum and display with the IBM DMSIUC message prefix, following VM/CMS conventions.

Error Variants

VariantRCMessage PrefixDescription
AlreadyRunning(id)8DMSIUC008EMachine is already IPL’d
MachineNotFound(id)12DMSIUC012ETarget machine not logged on
AlreadyLoggedOff(id)12DMSIUC012EMachine already logged off
DeliveryFailed(id)16DMSIUC016EMessage channel closed
ChannelBusy(ch)20DMSIUC020WChannel full (transient)
InvalidParameter(msg)24DMSIUC024EInvalid parameter value
InvalidMachineId(msg)24DMSIUC024EInvalid machine ID format
MachinePanicked(id)28DMSIUC028EMachine task panicked
SupervisorDown32DMSIUC032ESupervisor has shut down
PathNotFound(id)36DMSIUC036EIUCV path not found
ConnectionRefused(msg)40DMSIUC040ETarget refused connection

Using Return Codes

Every error carries a CMS-style numeric return code:

#![allow(unused)]
fn main() {
match supervisor.smsg(&from, &to, "Hello").await {
    Ok(()) => println!("Sent"),
    Err(e) => println!("Failed with RC={}: {}", e.rc(), e),
}
}

Common Error Scenarios

IPL a machine twice:

DMSIUC008E Machine already running - ALICE

Send to a machine that isn’t logged on:

DMSIUC012E Machine not found - GHOST

SMSG text too long (> 236 bytes):

DMSIUC024E Invalid parameter - SMSG text exceeds 236 bytes

Connection refused by target:

DMSIUC040E Connection refused - SECURE refused connection from UNTRUST