PROC activate_archive_ve, actav (
  processor_jobs, processor_job, pj, processor, p: list of name or key all = all
  status)

  SYSTEM_OPERATOR_UTILITY capability=system_administration
    create_variable name=arv$activate_processor kind=boolean value=true
    create_variable name=arv$archive_job_file kind=string value=$unique
    create_variable name=arv$archive_job_status kind=status
    create_variable name=arv$archive_system_job_name kind=string
    create_variable name=arv$archive_ve_path kind=string value='$system.archive_ve'
    create_variable name=arv$character_save kind=string
    create_variable name=arv$index kind=integer
    create_variable name=arv$local_status kind=status
    create_variable name=arv$processors_processed kind=string dimension=$set_count(processor) value=' '
    create_variable name=arv$processor_jobs_catalog kind=string value='processor_jobs'
    create_variable name=arv$processor_jobs_list kind=string value=$unique
    create_variable name=arv$processor_jobs_path kind=string value=' '
    create_variable name=arv$processor_job_name_line kind=string value=' '
    create_variable name=arv$processor_job_name kind=string
    create_variable name=arv$processor_job_path kind=string value=' '
    create_variable name=arv$processor_name kind=string value=' '
    create_variable name=arv$processor_name_short kind=string value=' '
    create_variable name=ignore kind=status
    create_command_list_entry $system.osf$operator_command_library p=after status=ignore

    arv$processor_jobs_path = arv$archive_ve_path // '.' // arv$processor_jobs_catalog

    display_catalog catalog=$fname(arv$processor_jobs_path) output=$fname(arv$processor_jobs_list) ..
          status= arv$local_status
    IF NOT arv$local_status.normal THEN
      EXIT procedure WITH arv$local_status
    IFEND

    rewind_file file=$fname(arv$processor_jobs_list)
  activate_archive_ve_jobs: ..
    LOOP
      arv$processor_job_name_line = ' '
      accept_line variable=arv$processor_job_name_line input=$fname(arv$processor_jobs_list//'.$ASIS')
      EXIT activate_archive_ve_jobs WHEN arv$processor_job_name_line = ' '
      IF $substr(arv$processor_job_name_line, 5, 10) <> 'FILE: ARF$' THEN
        CYCLE activate_archive_ve_jobs
      IFEND
      arv$processor_name = $trim($substr(arv$processor_job_name_line, 15, 27))
      arv$processor_job_path = arv$processor_jobs_path // '.ARF$' // arv$processor_name
      arv$character_save = $substr(arv$processor_name, 1, 1)
      arv$processor_name_short = ''
      FOR arv$index = 1 TO $strlen(arv$processor_name) DO
        IF $substr(arv$processor_name, arv$index, 1) = '_' THEN
          arv$processor_name_short = arv$processor_name_short // arv$character_save
          arv$character_save = $substr(arv$processor_name, arv$index+1, 1)
        IFEND
      FOREND
      arv$processor_name_short = arv$processor_name_short // arv$character_save

      IF $specified(processor) AND $string($value(processor)) <> 'ALL' THEN
        arv$activate_processor = false
        FOR arv$index = 1 TO $set_count(processor) DO
          IF ((arv$processor_name_short = $string($value(processor, arv$index))) OR ..
                (arv$processor_name = $string($value(processor, arv$index)))) THEN
            arv$activate_processor = true
            arv$processors_processed(arv$index) = $string($value(processor, arv$index))
          IFEND
        FOREND
      IFEND

    activate_processor_block: ..
      BLOCK

        EXIT activate_processor_block WHEN NOT arv$activate_processor

        arv$processor_job_name = ' '
        include_file file=$fname(arv$processor_job_path) status=arv$local_status
        IF NOT arv$local_status.normal THEN
          display_value arv$local_status
          $system.put_line line=('  Unable to activate Archive/VE processor '//arv$processor_name//..
' because of error.') output=$response
          EXIT activate_processor_block
        IFEND

        IF arv$processor_job_name = ' ' THEN
          $system.put_line line=(' An INCLUDE_FILE command executed on file: ') output=$response
          $system.put_line line=('       '//arv$processor_job_path) output=$response
          arv$archive_system_job_name = ' '
          include_file file=$fname(arv$archive_job_file) status=arv$local_status
          IF NOT arv$local_status.normal THEN
            display_value arv$local_status
            $system.put_line line=('  Unable to execute INCLUDE_FILE command on file: '//..
arv$archive_job_file//' because of error.') output=$response
            EXIT activate_processor_block
          IFEND

          CYCLE activate_archive_ve_jobs
        IFEND

        IF $string($job_status($name(arv$processor_job_name), job_state)) <> 'UNKNOWN' THEN
          IF $string($job_status($name(arv$processor_job_name), job_state)) = 'TERMINATING' THEN
            $system.put_line line=(' Waiting for Archive/VE processor '//arv$processor_job_name//..
' to terminate.') output=$response
            REPEAT
              wait 10*1000
            UNTIL $string($job_status($name(arv$processor_job_name), job_state)) = 'UNKNOWN'
          ELSE
            $system.put_line line=(' Archive/VE processor '//arv$processor_job_name//' is already active.') ..
                  output=$response
            EXIT activate_processor_block
          IFEND
        IFEND

        arv$archive_system_job_name = ' '
        include_file file=$fname(arv$archive_job_file) status=arv$local_status
        IF NOT arv$local_status.normal THEN
          display_value arv$local_status
          $system.put_line line=('  Unable to activate Archive/VE processor '//arv$processor_name//..
' because of error.') output=$response
          EXIT activate_processor_block
        IFEND

        IF arv$archive_job_status.normal THEN
          $system.put_line line=(' Archive/VE processor '//arv$processor_job_name//' activated') ..
                output=$response
          IF arv$archive_system_job_name <> ' ' THEN
            $system.put_line line=('       as System Job '//arv$archive_system_job_name) output=$response
          IFEND
        ELSE
          display_value arv$archive_job_status
          $system.put_line line=(' Unable to activate Archive/VE processor '//arv$processor_name//..
' because of error.') output=$response
        IFEND
        EXIT procedure WITH arv$archive_job_status WHEN NOT arv$archive_job_status.normal

      BLOCKEND activate_processor_block

      detach_file file=$fname(arv$archive_job_file) status=arv$local_status
    LOOPEND activate_archive_ve_jobs

    IF $specified(processor) AND $string($value(processor)) <> 'ALL' THEN
      FOR arv$index = 1 TO $set_count(processor) DO
        IF arv$processors_processed(arv$index) = ' ' THEN
          $system.put_line line=(' Unable to activate Archive/VE processor '//..
$string($value(processor, arv$index))) output=$response
          $system.put_line line=('       because there is no processor job file defined in catalog') ..
                output=$response
          $system.put_line line=('       '//arv$processor_jobs_path) output=$response
        IFEND
      FOREND
    IFEND

    detach_file file=$fname(arv$processor_jobs_list) status=arv$local_status
  END_SYSTEM_OPERATOR_UTILITY

PROCEND activate_archive_ve
