PROCEDURE activate_mailve (
  job_class, jc : name = $job_default(job_class, batch)
  load_map, lm : file = $optional
  log_options, lo: any of
      key
        all, none
      keyend
    anyend = none
  mail_catalog, mc: (BY_NAME) file = $null
  message_transfer_agent, mta: (BY_NAME, ADVANCED) any of
      string 1..12
      name 1..12
    anyend = mvd$default_mta, ' '
  status
  )


*IF $variable(rav$proc_doc,declared)<>'UNKNOWN'

"   This request initiates the MAILVE server application as a NOS/VE job.
*IFEND

  VAR
    active_mta: string = $trim($string(message_transfer_agent),,all)
    task_parameters: string = 'MTA_TYPE=SERVER'
  VAREND

  IF $size($trim(active_mta)) > 0 THEN
    task_parameters = task_parameters//' MTA='''''//active_mta//''''''
  ELSE
    active_mta = 'MAILVE'
  IFEND

  VAR
    application_job_name: name = $name('MTA_'//active_mta//$mainframe(id))
    ignore_status: status
    log_options_s: string
    mail_library: file = $system.mailve_v2.bound_product_ring_4
    mailve_job_log: file = $system.mailve_v2//$name(active_mta//'_job_log')
    mailve_statistics: file = $system.mailve_v2.mailve_statistics
    manna_status: status
    map_file: string
    options: string
    select_status: status
    starting_procedure_name: name = mvp$mta_server
    submit_status: status
    system_job_name: name
    system_tast_name: name
  VAREND

  IF (NOT $file(mail_library  permanent)) THEN
    put_line lines=('  ', ' --ERROR-- Unable to activate:  MAILVE is not installed.') ..
          o=$response
    EXIT_PROC
  IFEND

  MANAGE_JOBS
    SELECT_JOB ..
      name=application_job_name job_state=(deferred, queued, initiated) ..
      status=select_status
    IF select_status.normal THEN
      IF $size(jmv$selected_jobs) > 0 THEN
        put_line ' MAILVE is already active as job:' ..
          o=$response
        display_value jmv$selected_jobs o=$response
        EXIT procedure
      IFEND
    ELSE
      EXIT procedure WITH select_status
    IFEND
  QUIT

  IF $specified(load_map) THEN
    map_file = $string(load_map)
    options = 'all'
  ELSE
    map_file = '$null'
    options = 'none'
  IFEND

  log_options_s = 'log_options=' // $string(log_options)

  JOB user_job_name=application_job_name ..
      job_class=job_class ..
      job_recovery_disposition=terminate ..
      job_abort_disposition=terminate ..
      output_disposition=mailve_job_log ..
      substitution_mark='?' ..
      system_job_name=system_job_name ..
      status=submit_status

    SOU capability=(system_administration, system_operation)

      TASK r=4

        VAR
          mvv$maximum_external_hops: integer = 10
          mvv$maximum_external_loops: integer = 3
          mvv$maximum_internal_hops: integer = 10
          mvv$maximum_internal_loops: integer = 3
          mvv$custom_delivery_catalog: (environment) file= ?mail_catalog?
        VAREND

        execute_task library=?mail_library? ..
            starting_procedure=?starting_procedure_name? ..
            parameters='?task_parameters? ?log_options_s?' ..
            load_map=?map_file? ..
            load_map_options=?options?
      TASKEND

    QUIT
  JOBEND

  IF submit_status.normal THEN
    put_line ' MAILVE has been activated as job  '//..
$string(application_job_name)//' ('//$string(system_job_name)//').' ..
        o=$response
  ELSE
    put_line ' --ERROR-- Unable to submit job for MAILVE.' ..
      o=$response
  IFEND
  EXIT procedure WITH submit_status WHEN NOT submit_status.normal

PROCEND activate_mailve

