
?? RIGHT := 110 ??
*copyc osd$default_pragmats
?? TITLE := 'NOS/VE SCL Interpreter : Reassign Device Command' ??
MODULE clm$reassign_device_command;


{  PURPOSE:
{    This module contains the processor for the REASSIGN_DEVICE command.
{

?? NEWTITLE := '  Global Declarations', EJECT ??
*copyc clp$scan_parameter_list
*copyc clp$get_value
*copyc iop$reassign_device_command

?? PUSH (LISTEXT := ON) ??
?? POP ??

?? EJECT ??

?? TITLE := 'clp$reassign_device_command', EJECT ??

  PROCEDURE [XDCL, #GATE] clp$reassign_device_command
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

?? RIGHT := 110 ??
{  PDT reassd_pdt (
{    element_name, en : name = $required
{    status)

?? PUSH (LISTEXT := ON) ??

    VAR
      reassd_pdt: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table :=
            [^reassd_pdt_names, ^reassd_pdt_params];

    VAR
      reassd_pdt_names: [STATIC, READ, cls$pdt_names_and_defaults] array [1 .. 3] of
            clt$parameter_name_descriptor := [['ELEMENT_NAME', 1], ['EN', 1], ['STATUS', 2]];

    VAR
      reassd_pdt_params: [STATIC, READ, cls$pdt_parameters] array [1 .. 2] of clt$parameter_descriptor := [

{ ELEMENT_NAME EN }
      [[clc$required], 1, 1, 1, 1, clc$value_range_not_allowed, [NIL, clc$name_value, 1, osc$max_name_size]],

{ STATUS }
      [[clc$optional], 1, 1, 1, 1, clc$value_range_not_allowed,
            [NIL, clc$variable_reference, clc$array_not_allowed, clc$status_value]]];

?? POP ??

    VAR
      element_name: ost$name,
      value: clt$value;

    status.normal := TRUE;

    clp$scan_parameter_list (parameter_list, reassd_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$get_value ('ELEMENT_NAME', 1, 1, clc$low, value, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;
    element_name := value.name.value;

    iop$reassign_device_command (element_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

  PROCEND clp$reassign_device_command;
MODEND clm$reassign_device_command;
