PROCEDURE (hum$expm) explain_message, expm (
  condition, c: status_code = $optional
  identifier, id, i: string (2) = $optional
  status: (VAR, BY_NAME) status
  clv$previous_status: (BY_NAME, HIDDEN) status = $previous_status
  )

  VAR
    condition_id_line: string
  VAREND

  IF $specified(condition) THEN
    IF ($status_code(condition) < 1000000(16)) AND $specified(identifier) THEN
      condition_name = $condition_name(condition, identifier)
    ELSE
      condition_name = $string($status_code_name(condition))
    IFEND
    explain manual = $system.manuals.messages subject=condition_name $child=help
  ELSEIF clv$previous_status.normal THEN
    explain manual=$system.manuals.nos_ve $child=help
  ELSE
    "Create the following status variable in case the specified message does not exist,
    "in which case EXPLAIN xref's clv$command_previous_status.
    VAR
      clv$command_previous_status: (XDCL) status = clv$previous_status
    VAREND
    explain manual=$system.manuals.messages subject=$condition(clv$previous_status.condition) $child=help
  IFEND

PROCEND explain_message
