?? RIGHT := 110 ??
*copyc osd$default_pragmats
MODULE lgm$activate_os_statistics;

{
{ PURPOSE:
{         This module provides the command language interfaces to the
{         emitting of os statistics.
{
?? EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc clp$scan_parameter_list
*copyc clp$get_value
?? POP ??
*copyc osp$activate_os_statistics
*copyc osp$deactivate_os_statistics
?? EJECT ??
?? TITLE := 'PROCEDURE lgp$activate_os_stats_command' ??

  PROCEDURE [XDCL] lgp$activate_os_stats_command (parameter_list: clt$parameter_list;
    VAR status: ost$status);

{ pdt init_os_stats_pdt (
{      jms_interval,ji : integer 1..999 = 1
{      pms_interval,pi : integer 1..999 = 5
{      status )

?? PUSH (LISTEXT := ON) ??

    VAR
      init_os_stats_pdt: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table := [^init_os_stats_pdt_names,
        ^init_os_stats_pdt_params];

    VAR
      init_os_stats_pdt_names: [STATIC, READ, cls$pdt_names_and_defaults] array [1 .. 5] of
        clt$parameter_name_descriptor := [['JMS_INTERVAL', 1], ['JI', 1], ['PMS_INTERVAL', 2], ['PI', 2], [
        'STATUS', 3]];

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

{ JMS_INTERVAL JI }
      [[clc$optional_with_default, ^init_os_stats_pdt_dv1], 1, 1, 1, 1, clc$value_range_not_allowed, [NIL,
        clc$integer_value, 1, 999]],

{ PMS_INTERVAL PI }
      [[clc$optional_with_default, ^init_os_stats_pdt_dv2], 1, 1, 1, 1, clc$value_range_not_allowed, [NIL,
        clc$integer_value, 1, 999]],

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

    VAR
      init_os_stats_pdt_dv1: [STATIC, READ, cls$pdt_names_and_defaults] string (1) := '1';

    VAR
      init_os_stats_pdt_dv2: [STATIC, READ, cls$pdt_names_and_defaults] string (1) := '5';

?? POP ??

    VAR
      jms_value,
      pms_value: clt$value;

    clp$scan_parameter_list (parameter_list, init_os_stats_pdt, status);
    IF status.normal THEN
      clp$get_value ('JMS_INTERVAL', 1, 1, clc$low, jms_value, status);
      IF status.normal THEN
        clp$get_value ('PMS_INTERVAL', 1, 1, clc$low, pms_value, status);
      IFEND;
    IFEND;
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    osp$activate_os_statistics (jms_value.int.value * 60000000, pms_value.int.value * 60000000, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

  PROCEND lgp$activate_os_stats_command;
?? EJECT ??
?? TITLE := 'PROCEDURE lgp$deactivate_os_stats_command' ??

  PROCEDURE [XDCL] lgp$deactivate_os_stats_command (parameter_list: clt$parameter_list;
    VAR status: ost$status);
{ pdt term_os_stats_pdt ( status )

?? PUSH (LISTEXT := ON) ??

    VAR
      term_os_stats_pdt: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table := [^term_os_stats_pdt_names,
        ^term_os_stats_pdt_params];

    VAR
      term_os_stats_pdt_names: [STATIC, READ, cls$pdt_names_and_defaults] array [1 .. 1] of
        clt$parameter_name_descriptor := [['STATUS', 1]];

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

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

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

    osp$deactivate_os_statistics (status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

  PROCEND lgp$deactivate_os_stats_command;
MODEND lgm$activate_os_statistics;
