?? RIGHT := 110 ??
?? NEWTITLE := '  NOS/VE Display Volume Classification - Ring 3.' ??
MODULE rmm$disvc_r3_helper;

{ PURPOSE:
{   This module contains the ring 3 helper procedure for DISVC to get a
{   correct classification for a non RMA.

?? NEWTITLE := 'Global Declarations Referenced by This Module.', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc ave$validation_interface_errors
*copyc bat$global_file_information
*copyc bat$tape_descriptor
?? POP ??
*copyc avp$removable_media_admin
*copyc fmp$get_global_file_information
*copyc bap$get_tape_security_state
*copyc osp$set_status_abnormal

?? NEWTITLE := 'rmp$disvc_r3_helper', EJECT ??

  PROCEDURE [XDCL, #GATE] rmp$disvc_r3_helper
    (    evaluated_file_reference: fst$evaluated_file_reference;
     VAR volume_classification: rmt$tape_volume_classification;
     VAR status: ost$status);

    VAR
      global_file_information: bat$global_file_information,
      seq_ptr: ^SEQ ( * ),
      tape_descriptor: ^bat$tape_descriptor,
      tape_security_state: bat$tape_validation_state;

    status.normal := TRUE;

    bap$get_tape_security_state (tape_security_state, status);
    IF status.normal THEN
      IF (tape_security_state <> bac$tape_validation_on) OR avp$removable_media_admin() THEN
        fmp$get_global_file_information (evaluated_file_reference, global_file_information, status);
        IF status.normal THEN
          seq_ptr := global_file_information.device_dependent_info.tape_descriptor;
          RESET seq_ptr;
          NEXT tape_descriptor IN seq_ptr;
          volume_classification := tape_descriptor^.initial_volume.classification;
        IFEND;
      ELSE
        osp$set_status_abnormal ('RM', ave$missing_required_capability, 'REMOVABLE_MEDIA_ADMINISTRATION',
              status);
      IFEND;
    IFEND;

  PROCEND rmp$disvc_r3_helper;
MODEND rmm$disvc_r3_helper;
