
PROCEDURE deactivate_network (
  status)


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

" PURPOSE:
"   This procedure deactivates the network by deactivating NAM/VE and executing the network deactivation
"   prolog and epilog.
"
" NOTES:
"   One of the restrictions placed on NAM/VE deactivation is that RHFAM must be deactivated first
"   because of shared buffer problems.
"   Margins have been turned off (set to 0) until all messages can be properly aligned together.  To
"   turn the margins back on replace the 0's with a 2.
*IFEND


*copy rav$margin
*copy rav$system_paths

  "$FORMAT=OFF
  VAR
    ignore_status: status
    local_status: status
    proc_status: status
    rav$event_message: (XDCL) status
  VAREND
  "$FORMAT=ON"


  IF $substring($string($job(sjn)),12,8) <> 'AAA_0000' THEN
    EXIT procedure WITH $status(FALSE, 'NA', nae$insufficient_privilege)
  IFEND

  local_status.normal=true
  proc_status.normal=true

  rap$display_message mm=initiation_messages mn=deactivating_network m=rav$margin t=$response ..
        status=ignore_status
  rav$margin=rav$margin + 0

  IF $namve_active THEN
    rap$run_initiation_commands icn=network_deactivation_prolog status=local_status
    IF NOT local_status.normal THEN
      rap$handle_status si=local_status so=proc_status
    IFEND

    rap$check_rhfam_for_namve status=local_status
    IF NOT local_status.normal THEN
      IF $condition(local_status.condition) = 'RAE$NO_NAMVE_DUE_TO_RHFAM'
        local_status = $status(FALSE, 'RA', rae$no_namve_deactivate_rhfam)
      IFEND
      rap$handle_status si=local_status so=proc_status
    IFEND

    IF proc_status.normal THEN
      rap$deactivate_namve status=local_status
      IF NOT local_status.normal THEN
        rap$handle_status si=local_status so=proc_status
      IFEND
    IFEND
  IFEND

  IF NOT $namve_active THEN
    rap$run_initiation_commands icn=network_deactivation_epilog status=local_status
    IF NOT local_status.normal THEN
      rap$handle_status si=local_status so=proc_status
    IFEND
  IFEND

  rav$margin=rav$margin - 0

  IF proc_status.normal THEN
    rap$display_message mm=initiation_messages mn=network_deactivated m=rav$margin t=$response ..
          status=ignore_status
  ELSE
    EXIT procedure WITH $status(false, 'RA', rae$errors_occurred_warning, 'DEACTIVATE_NETWORK')
  IFEND

PROCEND deactivate_network


