?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE SCL Interpreter : System Logging control Commands' ??
MODULE clm$system_logging_commands;

{
{ PURPOSE:
{   This module contains the processors for the commands that control whether
{   commands from user jobs are recorded in the system log.
{

?? NEWTITLE := 'Global Declarations', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc clt$parameter_list
*copyc ost$status
?? POP ??
*copyc clp$get_value
*copyc clp$scan_parameter_list
*copyc clp$set_secure_logging_active
*copyc clp$set_system_logging_active

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

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

{ PDT activate_sys_log_pdt (
{   STATUS)

?? PUSH (LISTEXT := ON) ??

    VAR
      activate_sys_log_pdt: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table :=
            [^activate_sys_log_pdt_names, ^activate_sys_log_pdt_params];

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

    VAR
      activate_sys_log_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, activate_sys_log_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$set_system_logging_active (TRUE, status);

  PROCEND clp$activate_system_logging;
?? TITLE := 'clp$deactivate_system_logging', EJECT ??

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

{ PDT deactivate_sys_log_pdt (
{   STATUS)

?? PUSH (LISTEXT := ON) ??

    VAR
      deactivate_sys_log_pdt: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table :=
            [^deactivate_sys_log_pdt_names, ^deactivate_sys_log_pdt_params];

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

    VAR
      deactivate_sys_log_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, deactivate_sys_log_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    clp$set_system_logging_active (FALSE, status);

  PROCEND clp$deactivate_system_logging;
?? TITLE := 'clp$change_secure_logging', EJECT ??

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

{   PDT change_secure_log_pdt (
{     secure_logging, sl: boolean = false
{     STATUS)

?? PUSH (LISTEXT := ON) ??

    VAR
      change_secure_log_pdt: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table :=
            [^change_secure_log_pdt_names, ^change_secure_log_pdt_params];

    VAR
      change_secure_log_pdt_names: [STATIC, READ, cls$pdt_names_and_defaults] array [1 .. 3] of
            clt$parameter_name_descriptor := [['SECURE_LOGGING', 1], ['SL', 1], ['STATUS', 2]];

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

{ SECURE_LOGGING SL }
      [[clc$optional_with_default, ^change_secure_log_pdt_dv1], 1, 1, 1, 1, clc$value_range_not_allowed,
            [NIL, clc$boolean_value]],

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

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

?? POP ??

    VAR
      value: clt$value;

    clp$scan_parameter_list (parameter_list, change_secure_log_pdt, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;
    clp$get_value ('SECURE_LOGGING', 1, 1, clc$low, value, status);
    IF NOT status.normal THEN
      RETURN
    IFEND;
    clp$set_secure_logging_active (value.bool.value, status);

  PROCEND clp$change_secure_logging;

MODEND clm$system_logging_commands;
