?? RIGHT := 110 ??
?? NEWTITLE := 'Global Declarations', EJECT ??
MODULE clm$set_spy_identifier;

  { Purpose: This module contains the command processor for the
  { SET_SPY_IDENTIFIER command.

  { *callc clxspl }
  { *callc clxgval }

  { *callc pmxssi }
*copyc clp$evaluate_parameters
*copyc pmp$set_spy_identifier
?? OLDTITLE ??
?? NEWTITLE := 'CLP$SET_SPY_IDENTIFIER', EJECT ??

  PROCEDURE [XDCL] clp$set_spy_identifier
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);


{   PROCEDURE set_spy_identifier, setsi (
{     spy_identifier, si : range of integer 0  .. 3f(16) = $required
{     status)

?? PUSH (LISTEXT := ON) ??
?? FMT (FORMAT := OFF) ??

  VAR
    pdt: [STATIC, READ, cls$declaration_section] record
      header: clt$pdt_header,
      names: array [1 .. 3] of clt$pdt_parameter_name,
      parameters: array [1 .. 2] of clt$pdt_parameter,
      type1: record
        header: clt$type_specification_header,
        qualifier: clt$range_type_qualifier,
        element_type_spec: record
          header: clt$type_specification_header,
          qualifier: clt$integer_type_qualifier,
        recend,
      recend,
      type2: record
        header: clt$type_specification_header,
      recend,
    recend := [
    [1,
    [89, 4, 26, 14, 31, 49, 768],
    clc$command, 3, 2, 1, 0, 0, 0, 2, ''], [
    ['SI                             ',clc$abbreviation_entry, 1],
    ['SPY_IDENTIFIER                 ',clc$nominal_entry, 1],
    ['STATUS                         ',clc$nominal_entry, 2]],
    [
{ PARAMETER 1
    [2, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name, clc$specify_positionally],
    clc$pass_by_value, clc$immediate_evaluation, clc$standard_parameter_checking, 27, clc$required_parameter,
  0, 0],
{ PARAMETER 2
    [3, clc$normal_usage_entry, clc$non_secure_parameter,
    $clt$parameter_spec_methods[clc$specify_by_name],
    clc$pass_by_reference, clc$immediate_evaluation, clc$standard_parameter_checking, 3,
  clc$optional_parameter, 0, 0]],
{ PARAMETER 1
    [[1, 0, clc$range_type], [20],
      [[1, 0, clc$integer_type], [0, 3f(16), 10]]
    ],
{ PARAMETER 2
    [[1, 0, clc$status_type]]];

?? FMT (FORMAT := ON) ??
?? POP ??

    CONST
      p$spy_identifier = 1,
      p$status = 2;

    VAR
      pvt: array [1 .. 2] of clt$parameter_value;



    status.normal := TRUE;

    clp$evaluate_parameters (parameter_list, #SEQ (pdt), NIL, ^pvt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    pmp$set_spy_identifier (pvt [p$spy_identifier].value^.low_value^.integer_value.value,
                            pvt [p$spy_identifier].value^.high_value^.integer_value.value, status);

  PROCEND clp$set_spy_identifier;

MODEND clm$set_spy_identifier;
