{
{    The purpose of this procedure is to determine from a sequence of volume
{ header labels, the kind of volume security that is in effect for the volume.
{
{    If the volume has no labels, then the READ_LABELS_STATUS parameter
{ contains the abnormal status that was returned when the attempt was made to
{ read labels from the volume.  This abnormal status is used to classify an
{ unlabeled volume or to determine whether access to the volume should be
{ restricted to a REMOVABLE_MEDIA_ADMINISTRATOR.
{
{    This interface is implemented within the RMM$ENFORCE_TAPE_SECURITY site
{ hook.  Therefore, the result of calling this interface is subject to site
{ modification.  What is described below is the standard NOS/VE implementation.
{
{       RMP$CLASSIFY_TAPE_VOLUME ( READ_LABELS_STATUS, VOLUME_HEADER_LABELS,
{             VOLUME_CLASSIFICATION, STATUS)
{
{ read_labels_status: (input)  This parameter specifies the status from the
{       attempt to read tape labels from the beginning of a volume.  For most
{       users, this parameter should be initialized with NORMAL set to TRUE.
{       However, a person with REMOVABLE_MEDIA_OPERATION privilege may use
{       FSP$OPEN_FILE to read labels from a volume when the FILE_ATTACHMENT
{       parameter specifies the VOLUME_INITIALIZATION tape attachment option.
{       In this situation, the status returned from FSP$OPEN_FILE is in fact
{       the status from the attempt to read labels from the beginning of the
{       volume that is to be initialized.  The following status conditions are
{       interpreted by this request and are classified as follows:
{
{
{    ame$excessive_tape_labels:  The number of labels exceeds 128
{
{       volume_classification.volume_label_type := rmc$labeled_volume_type;
{
{       volume_classification.labeled.blank := FALSE;
{
{       volume_classification.labeled.volume_security_type :=
{                               rmc$vst_access_restricted;
{
{       volume_classification.labeled.reason := rmc$excessive_tape_labels;
{
{
{    ame$invalid_tape_label:  The volume's first block is not a label
{
{       volume_classification.volume_label_type := rmc$unlabeled_volume_type;
{
{       volume_classification.blank := FALSE;
{
{
{    ame$unexpected_tapemark:  The volume begins with a tapemark
{
{       volume_classification.volume_label_type := rmc$unlabeled_volume_type;
{
{       volume_classification.blank := TRUE;
{
{
{    ame$unexpected_tape_label:  Unsupported mixture of header/trailer
{
{       volume_classification.volume_label_type := rmc$labeled_volume_type;
{
{       volume_classification.labeled.blank := FALSE;
{
{       volume_classification.labeled.volume_security_type :=
{                               rmc$vst_access_restricted;
{
{       volume_classification.labeled.reason := rmc$vol1_missing;
{
{    ame$tape_label_read_error:  Initial block unreadable
{
{       volume_classification.volume_label_type :=
{                               rmc$indeterminate_volume_type;
{
{       volume_classification.blank := FALSE;
{
{ volume_header_labels: (input)  This parameter specifies a sequence of volume
{       header labels.  Use the FSP$GET_TAPE_LABEL_ATTRIBUTES interface to
{       obtain the HEADER_LABELS sequence.  Use the FSP$LOCATE_TAPE_LABEL
{       interface to locate the VOL1 label.  If the VOL1 label is present, then
{       this interface may be called to classify the volume header labels
{       contained in the sequence.
{
{ volume_classification: (output)  This parameter specifies the kind of volume
{       security policy that is required based on the READ_LABELS_STATUS and
{       the content of the VOLUME_HEADER_LABELS provided.
{
{ status: (output)  This parameter returns the status of the request.  If the
{       READ_LABELS_STATUS is abnormal but not one of the status conditions
{       mentioned in the description of the READ_LABELS_STATUS parameter, then
{       the STATUS of this request is set to the READ_LABELS_STATUS.
{
