
?? RIGHT := 110 ??
*copyc osd$default_pragmats
?? TITLE := 'NOS/VE MASSTOR assist' ??
?? NEWTITLE := '  Module Header', EJECT ??
MODULE cam$terminate_masstor;
{
{  PURPOSE: This module contains the code to support MASSTOR shutdown.
{
{
?? TITLE := '  Declarations', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc jmt$name
*copyc ost$system_flag
*copyc oss$mainframe_paged_literal
*copyc oss$task_private
*copyc cap$change_termination_priority
*copyc clp$include_line
*copyc jmp$job_exists
*copyc osp$verify_system_privilege
*copyc pmp$cause_task_condition
*copyc pmp$get_executing_task_gtid_r6
*copyc pmp$get_time
*copyc pmp$log
*copyc pmp$long_term_wait
*copyc pmp$wait
*copyc jmt$job_state_set
*copyc osp$set_status_abnormal
*copyc ost$status
*copyc syt$180_idle_code

?? POP ??




  PROCEDURE [XDCL] cap$prepare_for_idle_system (
        idle_code: syt$180_idle_code;
    VAR status: ost$status);

    VAR
      masstor_job_name: string (6),
      job_state: jmt$job_state_set,
      job_exists: boolean,
      local_status: ost$status;




     osp$verify_system_privilege;
     status.normal := TRUE;
     masstor_job_name := 'CAS$EX';
     job_state := $jmt$job_state_set [jmc$initiated_job, jmc$terminating_job];

     jmp$job_exists (masstor_job_name, job_state, job_exists, local_status);


      IF NOT job_exists THEN
         RETURN;
      IFEND;

     CASE idle_code OF
   = syc$ic_idle_command, syc$ic_system_terminated =

     { call the shutdown if masstor is up }
      clp$include_line ('$system.osf$operator_command_library.deactivate_cartridge_storage',
         TRUE, osc$null_name, status);

      cap$change_termination_priority (masstor_job_name, status);

      jmp$job_exists (masstor_job_name, job_state, job_exists, local_status);

      WHILE job_exists DO
        pmp$wait (5000, 5000);
        jmp$job_exists (masstor_job_name, job_state, job_exists, local_status);
      WHILEND;




   = syc$ic_hardware_idle, syc$ic_long_power =

     { do nothing yet for these cases }

     ELSE

     CASEND;



  PROCEND cap$prepare_for_idle_system;



MODEND cam$terminate_masstor;
