PROCEDURE change_scheduling_attributes, chasa (
  class_names, cn: (by_name) list of name = $optional
  cpu_dispatching_allocation, cda: (by_name) any of
        key default keyend
        record
          dispatching_priority: range of key p1 p2 p3 p4 p5 p6 p7 p8 keyend
          minimum_percent: integer 0..100 = $optional
          maximum_percent: integer 0..100 = $optional
          enforce_maximum: boolean = $optional
        recend
      anyend = $optional
  cpu_dispatching_interval, cdi: (by_name) integer 1..600 = $optional
  dispatching_control, dc: (by_name) any of
        key default keyend
        list 1..5 of record
          dispatching_priority: key default p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 keyend
          service_time: any of
            key unlimited keyend
            integer
           anyend = $optional
          minor_timeslice: integer = $optional
          major_timeslice: integer = $optional
         recend
      anyend = $optional
  guaranteed_service_quantum, gsq: (by_name) integer = $optional
  immediate_initiation_candidate, iic: (by_name) boolean = $optional
  initial_service_class, isc: (by_name) name = $optional
  initiation_level, il: (by_name) integer = $optional
  maximum_active_jobs, maxaj, maj: (by_name) integer = $optional
  maximum_working_set, maxws: (by_name) integer = $optional
  minimum_working_set, minws: (by_name) integer = $optional
  page_aging_interval, pai: (by_name) integer = $optional
  scheduling_priority, schp: (by_name) any of
        key default keyend
        record
          minimum: integer = $optional
          maximum: integer = $optional
          swap_age_increment: integer = $optional
          ready_task_increment: integer = $optional
        recend
      anyend = $optional
  selection_priority, selp: (by_name) any of
        key default keyend
        record
          initial: integer = $optional
          maximum: integer = $optional
          increment: integer = $optional
        recend
      anyend = $optional
  status)

  VAR
    service_class_attributes: list of string = ..
       ('dispatching_control', 'guaranteed_service_quantum', 'maximum_active_jobs', 'scheduling_priority')
    job_class_attributes: list of string = ..
       ('immediate_initiation_candidate', 'initial_service_class', 'initiation_level', 'minimum_working_set', ..
        'page_aging_interval', 'selection_priority', 'maximum_working_set')
    all_attributes: list of string = $join(service_class_attributes, job_class_attributes)
    controls: list of string = ('cpu_dispatching_allocation', 'cpu_dispatching_interval')
  VAREND

  check_parameters: ..
  FOR EACH attribute IN all_attributes DO
    IF $specified($data_name(attribute)) THEN
      IF NOT $specified(class_names) THEN
        EXIT_PROC WITH $status(FALSE, 'PT', 0, 'Must specify CLASS_NAMES parameter with attributes.')
      ELSE
        EXIT check_parameters
      IFEND
    IFEND
  FOREND check_parameters

  manage_active_scheduling
    IF $specified(class_names) THEN
      FOR EACH class_name IN $parameter_value(class_names) DO
        display_value v='-- Changing '//class_name//' scheduling attributes...' o=$response
        FOR EACH attribute IN job_class_attributes DO
          IF $specified($data_name(attribute)) THEN
            display_value v='         '//attribute//' = '//$parameter($data_name(attribute)) o=$response
            include_command c='change_job_class cn=class_name '//attribute//'='//$parameter($data_name(attribute))
          IFEND
        FOREND
        FOR EACH attribute IN service_class_attributes DO
          IF $specified($data_name(attribute)) THEN
            display_value v='         '//attribute//' = '//$parameter($data_name(attribute)) o=$response
            include_command c='change_service_class cn=class_name '//attribute//'='//$parameter($data_name(attribute))
          IFEND
        FOREND
      FOREND
    IFEND
    FOR EACH control IN controls DO
      IF $specified($data_name(control)) THEN
        display_value v='-- Changing '//$name(control)//' to '//$parameter($data_name(control))  o=$response
        include_command c='change_controls '//control//'='//$parameter($data_name(control))
      IFEND
    FOREND
  quit save_change=true

PROCEND change_scheduling_attributes

