
PROCEDURE setup_for_leveling, setfl (
  mainframe, m: key
      (fruit, f)
      (grain, g)
    keyend = $required
  fruit_mainframe_id, fmi: name 17..17 = $optional
  grain_mainframe_id, gmi: name 17..17 = $optional
  initial_install, ii: boolean = TRUE
  number_of_task_queue_entries, notqe: integer 1..50 = 4
  status)

  IF mainframe = fruit THEN
    IF NOT $specified(grain_mainframe_id) THEN
      EXIT_PROC WITH $status(false, 'xx', 0, 'missing grain mainframe id')
    IFEND
    mf_grain = grain_mainframe_id
    mf_fruit = $name($mainframe(id))
  ELSE
    IF NOT $specified(fruit_mainframe_id) THEN
      EXIT_PROC WITH $status(false, 'xx', 0, 'missing fruit mainframe id')
    IFEND
    mf_grain = $name($mainframe(id))
    mf_fruit = fruit_mainframe_id
  IFEND

  IF mainframe = fruit THEN
    IF initial_install THEN
      create_family family_name=apple family_administrator=test password=testx
      create_family family_name=kiwi family_administrator=test password=testx
      create_family family_name=pear family_administrator=test password=testx
    IFEND

    MANAGE_FILE_SERVER
      doit client grain_mainframe_id activate=false fn=none notqe=number_of_task_queue_entries
      doit server grain_mainframe_id activate=false notqe=number_of_task_queue_entries
      IF initial_install THEN
        change_client_access grain_mainframe_id family=apple family_access=leveled_access
        change_client_access grain_mainframe_id family=kiwi family_access=login
      IFEND
    QUIT

  ELSE
    IF initial_install THEN
      create_family family_name=wheat family_administrator=test password=testx
      create_family family_name=oats family_administrator=test password=testx
      create_family family_name=barley family_administrator=test password=testx
    IFEND

    MANAGE_FILE_SERVER
      doit client fruit_mainframe_id activate=false fn=none notqe=number_of_task_queue_entries
      doit server fruit_mainframe_id activate=false notqe=number_of_task_queue_entries
      IF initial_install THEN
        change_client_access fruit_mainframe_id family=wheat family_access=leveled_access
        change_client_access fruit_mainframe_id family=oats family_access=login
      IFEND
    QUIT

    IF initial_install THEN
      ADMINISTER_VALIDATIONS
        CREATE_USER user=test
          change_login_password new_password=testx
          change_capability add=all
        QUIT
      QUIT

      ADMINISTER_SCHEDULING
        create_default_profile
        create_job_category fruit jq=fruit
        create_job_category grain jq=grain
        create_job_category other jq=other
        ADMINISTER_CONTROLS
          change_attributes abbreviation=grain enable_job_leveling=true job_leveling_interval=20 ..
                validation_excluded_categories=fruit initiation_excluded_categories=fruit
          create_controls fruit_mainframe_id
          change_attributes abbreviation=fruit enable_job_leveling=true job_leveling_interval=20 ..
                validation_excluded_categories=grain initiation_excluded_categories=grain
          create_controls $system_0830_0000
          change_attributes abbreviation=other validation_required_categories=other ..
                initiation_required_categories=other
          add_job_category_entry (grain fruit) validation_excluded_categories=other ..
                initiation_excluded_categories=other
        QUIT
        write_profile :oats.$system.system_profile
      QUIT yes

COLLECT_TEXT :oats.$system.trace_job sm='?'
  PROCEDURE trace_job (
    sjn: name = $required
    status)

    mf?mf_grain? = grain
    mf?mf_fruit? = fruit
    mfnone = no_mainframe

    mf_queued = $job_status(sjn server_mainframe_identifier)
    put_line ' Job initially queued on: '//$vname('mf'//mf_queued)
    REPEAT
      wait 1000
      IF $job_status(sjn client_mainframe_identifier) <> mf_queued THEN
        mf_queued = $job_status(sjn client_mainframe_identifier)
        put_line '  assigned to '//$vname('mf'//mf_queued)
      IFEND
    UNTIL $job_status(sjn state) = initiated
    mf_initiated = $job_status(sjn client_mainframe_identifier)
    put_line '  initiated on '//$vname('mf'//mf_initiated)

  PROCEND trace_job
**
      crefp :oats.$system.trace_job public am=(read execute) sm=none

    IFEND
  IFEND

PROCEND setup_for_leveling

