?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Remote Host : Set Abnormal Condition' ??
MODULE rhm$set_status_abnormal;

{ PURPOSE:
{   This module contains the procedure to set the error status for certain
{   Remote Host errors.
{
{ DESIGN:
{   Move the code from other Remote Host modules.

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc mld$memory_link_declarations
*copyc ost$status
*copyc rhc$condition_limits
?? POP ??
*copyc osp$append_status_parameter
*copyc osp$set_status_abnormal
*copyc osv$170_os_type

?? TITLE := '[XDCL, #GATE] rhp$set_status_abnormal', EJECT ??
*copyc rhh$set_status_abnormal

  PROCEDURE [XDCL, #GATE] rhp$set_status_abnormal
    (VAR status: ost$status);

  VAR
    length: integer,
    message: string(3),
    partner_state: string(6),
    partner_state_length: integer;

{ Set up dual state system indicator.

    IF osv$170_os_type = osc$ot7_dual_state_nos THEN
      partner_state := 'NOS';
      partner_state_length := 3;
    ELSE
      partner_state := 'NOS/BE';
      partner_state_length := 6;
    IFEND;

    CASE status.condition OF
    = mlc$message_truncated =
      osp$set_status_abnormal (rhc$remote_host_id, rhe$mismatching_code,
          '', status);
    = mlc$system_name_no_match =
      osp$set_status_abnormal (rhc$remote_host_id,
          rhe$receiver_already_signed_on, partner_state (1,
          partner_state_length), status);
    = mlc$receiver_not_signed_on =
      osp$set_status_abnormal (rhc$remote_host_id,
          rhe$receiver_not_signed_on, partner_state (1, partner_state_length),
          status);
      osp$append_status_parameter (osc$status_parameter_delimiter,
          partner_state (1, partner_state_length), status);
      osp$append_status_parameter (osc$status_parameter_delimiter,
          partner_state (1, partner_state_length), status);
    ELSE
      STRINGREP (message, length, status.condition);
      osp$set_status_abnormal (rhc$remote_host_id,
          rhe$unexpected_ml_error, message (1, length), status);
    CASEND;

  PROCEND rhp$set_status_abnormal;

MODEND rhm$set_status_abnormal;
