PROC deactivate_archive_ve, deaav (
  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$local_status kind=status
    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.$system.archive_ve'
    create_variable name=arv$character_save kind=string
    create_variable name=arv$deactivate_processor kind=boolean value=true
    create_variable name=arv$index kind=integer
    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=' '

    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)

    rewind_file file=$fname(arv$processor_jobs_list)
  deactivate_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 deactivate_archive_ve_jobs WHEN arv$processor_job_name_line = ' '
      IF $substr(arv$processor_job_name_line, 5, 10) <> 'FILE: ARF$' THEN
        CYCLE deactivate_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$deactivate_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$deactivate_processor = true
            arv$processors_processed(arv$index) = $string($value(processor, arv$index))
          IFEND
        FOREND
      IFEND

    deactivate_processor_block: ..
      BLOCK

        EXIT deactivate_processor_block WHEN NOT arv$deactivate_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 deactivate Archive/VE processor '//arv$processor_name//..
' because of error.') output=$response
          EXIT deactivate_processor_block
        IFEND

        IF arv$processor_job_name = ' ' THEN
"
" This is a remote processor job file, so there is no processor job to
" deactivate.
"
          CYCLE deactivate_archive_ve_jobs
        IFEND

        IF $string($job_status($name(arv$processor_job_name), job_state)) = 'UNKNOWN' THEN
          $system.put_line line=(' Archive/VE processor '//arv$processor_job_name//' is not active.') ..
                output=$response
          EXIT deactivate_processor_block
        IFEND

        terminate_job job_name=$name(arv$processor_job_name) status=arv$local_status
        IF arv$local_status.normal THEN
          $system.put_line line=(' Archive/VE processor '//arv$processor_job_name//' deactivated') ..
                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$local_status
          $system.put_line line=('  Unable to deactivate Archive/VE processor '//arv$processor_name//..
' because of error.') output=$response
          EXIT deactivate_processor_block
        IFEND

        EXIT procedure WITH arv$archive_job_status WHEN NOT arv$archive_job_status.normal

      BLOCKEND deactivate_processor_block

      detach_file file=$fname(arv$archive_job_file) status=arv$local_status
    LOOPEND deactivate_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 deactivate 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 deactivate_archive_ve
