PROCEDURE activate_inetd (
  trace, trace_mode, tm, t : boolean = false
  trace_file, tf : file = $null
  job_class, jc : name = system
  epilog, e: file = $null
  dump_file, df: file = $null
  status)

*IF $variable(rav$proc_doc,declared)<>'UNKNOWN'
"
" Purpose:  Activate the Internet Daemon.
"
" Parameters:  trace, trace_mode, tm, t: If true, inetd generates trace messages
"              to the job log or to the trace_file, if specified
"
"              trace_file, tf: If specified, inetd trace messages are
"              logged to this file
"
"              job_class, jc: The job class under which the inetd job will run
"
"              epilog, e: If specified, the commands on this file will be executed
"              upon termination of inetd
*IFEND


  VAR
    application_job_name: name = $name('INTERNET_DMN'//$mainframe(id))
    inetd_bound_library: file = $system.tcp_ip.inetd_bound_product
    inetd_job_log: file = $system.tcp_ip.inetd_job_log
    inetd_job_name: name
    select_status: status
    starting_procedure_name: name = inp$inetd_initialization
    submit_status: status
    system_job_name: name
    task_parameters: string
  VAREND

  command_source = $source
  IF NOT $file(inetd_bound_library permanent) THEN
    put_line ' --ERROR-- Unable to activate:  INETD is not installed.'..
      o=$response
    EXIT procedure
  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 ' The Internet Daemon is already active as job(s):' ..
          o=$response
        display_value jmv$selected_jobs o=$response
        EXIT procedure
      IFEND
    ELSE
      EXIT procedure WITH select_status
    IFEND
  QUIT

  task_parameters = 'trace=' // $strrep(trace)

  IF $specified(trace_file) THEN
    task_parameters = task_parameters // ' trace_file=' // $string(trace_file)
  IFEND

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

      VAR
        osv$daemon_command: string = '?$string(command_source)?.activate_inetd '
        osv$daemon_name: name = INETD
        osv$daemon_status: status
        osv$daemon_parameters: string = '?$parameter_list?'
        abort_file_commands: file = $unique($local)
        ignore: status
      VAREND

      WHEN EXIT DO
        display_value osv$daemon_status o=$job_log
        IF ?$specified(trace_file)? THEN
          change_file_attributes ?trace_file? ring_attributes=($ring $ring $ring) status=ignore
        IFEND
        IF ?$specified(epilog)? THEN
          include_file ?epilog?
        IFEND
        delete_file abort_file_commands
      WHENEND

COLLECT_TEXT output=abort_file_commands until='** END OF ABORT COMMANDS **' substitution_mark='#'

        VAR
          dump_status: status
          dump_file: file
        VAREND

        dump_file = ?dump_file?

" The following commands will display the abort information
" through the use of the debugger.

      IF ?$specified(dump_file)? THEN
        set_file_attributes dump_file fc=list pf=continuous
        put_line '1***** ABORT DUMP OF INETD' o=dump_file.$eoi
        put_line '       '//$date(iso)//' '//$time(millisecond) o=dump_file.$eoi
        put_line $format_value('       +p - +p - CYBER +p Serial +p' ($job(os_version) $default_family ..
              $processor(model_number, 0) $processor(serial_number, 0))) o=dump_file.$eoi
        put_lines ('', ' ***** ENVIRONMENT:', '') output=dump_file.$eoi
        display_debugging_environment display_option=user_address output=dump_file.$eoi
        display_debug_task_status task_number=all output=dump_file.$eoi
        put_lines ('', ' ***** TRACEBACK:', '') output=dump_file.$eoi
        display_call count=all start=1 display_option=all_calls output=dump_file.$eoi
        put_lines ('', ' ***** JOB LOG:', '') output=dump_file.$eoi
        display_log display_option=200 output=dump_file.$eoi
        put_lines ('', ' ***** REGISTERS:', '') output=dump_file.$eoi
        display_register kind=all_program number=all type=hex output=dump_file.$eoi
        change_file_attributes dump_file ra=(?$ring? ?$ring? ?$ring?) status=dump_status
      ELSE
        display_call count=all start=1 display_option=all_calls output=$job_log
      IFEND

** END OF ABORT COMMANDS **

      set_program_attributes abort_file=abort_file_commands

      set_program_attributes preset_value=zero debug_mode=off
      system_operator_utility capability=system_administration

      TASK ring=6
        set_debug_ring $ring
        create_command_list_entry ?inetd_bound_library? status=osv$daemon_status
        execute_task l=(?inetd_bound_library? $system.tcp_ip.mnf$library) ..
           sp=?starting_procedure_name? p='?task_parameters?' status=osv$daemon_status
      TASKEND

      quit

    JOBEND

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

PROCEND activate_inetd
