?? NEWTITLE := 'NOS/VE : Basic Access Methods : Set Local Name Abnormal' ??
MODULE amm$set_local_name_abnormal;
?? RIGHT := 110 ??

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc oss$job_paged_literal
*copyc amc$condition_code_limits
*copyc amc$fap_request_codes
*copyc bac$unused_request_table_entry
*copyc amt$local_file_name
*copyc bat$request_name_table_entry
*copyc ost$name
*copyc ost$status
?? POP ??
*copyc clp$trimmed_string_size
*copyc clp$validate_name
*copyc osp$set_status_abnormal
*copyc osv$lower_to_upper
?? OLDTITLE ??
?? NEWTITLE := 'Global Declarations Declared by This Module', EJECT ??

?? FMT (FORMAT := OFF) ??
  VAR
    bav$request_name_table: [READ, oss$job_paged_literal]
          array [amc$access_method_req .. ifc$store_terminal_req] of
          bat$request_name_table_entry := [
[ amc$access_method_req           , 'AMP$ACCESS_METHOD_REQ          '],
[ 2                               , bac$unused_request_table_entry],
[ amc$add_to_file_description_req , 'AMP$ADD_TO_FILE_DESCRIPTION    '],
[ 4                               , bac$unused_request_table_entry],
[ amc$allocate_req                , 'AMP$ALLOCATE                   '],
[ amc$change_file_attributes_cmd  , 'CHANGE_FILE_ATTRIBUTES         '],
[ amc$compare_file_cmd            , 'COMPARE_FILE                   '],
[ amc$copy_file_cmd               , 'COPY_FILE                      '],
[ amc$copy_file_req               , 'AMP$COPY_FILE                  '],
[ amc$copy_partitions_req         , 'AMP$COPY_PARTITIONS            '],
[ amc$copy_records_req            , 'AMP$COPY_RECORDS               '],
[ amc$copy_partial_records_req    , 'AMP$COPY_PARTIAL_RECORDS       '],
[ 13                              , bac$unused_request_table_entry],
[ 14                              , bac$unused_request_table_entry],
[ 15                              , bac$unused_request_table_entry],
[ 16                              , bac$unused_request_table_entry],
[ amc$detach_file_cmd             , 'DETACH_FILES                   '],
[ amc$display_file_attributes_cmd , 'DISPLAY_FILE_ATTRIBUTES        '],
[ amc$display_file_cmd            , 'DISPLAY_FILE                   '],
[ amc$evict_req                   , 'AMP$EVICT                      '],
[ 21                              , bac$unused_request_table_entry],
[ amc$fetch_fap_pointer_req       , 'AMP$FETCH_FAP_POINTER          '],
[ 23                              , bac$unused_request_table_entry],
[ amc$file_req                    , 'AMP$FILE                       '],
[ 25                              , bac$unused_request_table_entry],
[ fmc$store_tape_label_attr_req   , 'FMP$STORE_TAPE_LABEL_ATTRIBUTES'],
[ fmc$fetch_tape_label_attr_req   , 'FMP$FETCH_TAPE_LABEL_ATTRIBUTES'],
[ fmc$display_tape_label_attr_cmd , 'DISPLAY_TAPE_LABEL_ATTRIBUTES  '],
[ fmc$change_tape_label_attr_cmd  , 'CHANGE_TAPE_LABEL_ATTRIBUTES   '],
[ amc$get_file_attributes_req     , 'AMP$GET_FILE_ATTRIBUTES        '],
[ 31                              , bac$unused_request_table_entry],
[ 32                              , bac$unused_request_table_entry],
[ 33                              , bac$unused_request_table_entry],
[ 34                              , bac$unused_request_table_entry],
[ 35                              , bac$unused_request_table_entry],
[ 36                              , bac$unused_request_table_entry],
[ 37                              , bac$unused_request_table_entry],
[ 38                              , bac$unused_request_table_entry],
[ 39                              , bac$unused_request_table_entry],
[ 40                              , bac$unused_request_table_entry],
[ 41                              , bac$unused_request_table_entry],
[ 42                              , bac$unused_request_table_entry],
[ 43                              , bac$unused_request_table_entry],
[ 44                              , bac$unused_request_table_entry],
[ 45                              , bac$unused_request_table_entry],
[ 46                              , bac$unused_request_table_entry],
[ 47                              , bac$unused_request_table_entry],
[ 48                              , bac$unused_request_table_entry],
[ 49                              , bac$unused_request_table_entry],
[ amc$label_req                   , 'AMP$LABEL                      '],
[ 51                              , bac$unused_request_table_entry],
[ 52                              , bac$unused_request_table_entry],
[ 53                              , bac$unused_request_table_entry],
[ 54                              , bac$unused_request_table_entry],
[ 55                              , bac$unused_request_table_entry],
[ 56                              , bac$unused_request_table_entry],
[ 57                              , bac$unused_request_table_entry],
[ 58                              , bac$unused_request_table_entry],
[ 59                              , bac$unused_request_table_entry],
[ amc$override_file_attributes    , 'AMP$OVERRIDE_FILE_ATTRIBUTES   '],
[ 61                              , bac$unused_request_table_entry],
[ 62                              , bac$unused_request_table_entry],
[ 63                              , bac$unused_request_table_entry],
[ 64                              , bac$unused_request_table_entry],
[ 65                              , bac$unused_request_table_entry],
[ 66                              , bac$unused_request_table_entry],
[ 67                              , bac$unused_request_table_entry],
[ 68                              , bac$unused_request_table_entry],
[ 69                              , bac$unused_request_table_entry],
[ 70                              , bac$unused_request_table_entry],
[ 71                              , bac$unused_request_table_entry],
[ amc$rename_req                  , 'AMP$RENAME                     '],
[ 73                              , bac$unused_request_table_entry],
[ amc$return_req                  , 'AMP$RETURN                     '],
[ amc$rewind_files_cmd            , 'REWIND_FILES                   '],
[ amc$set_local_name_abnormal_req , 'AMP$SET_LOCAL_NAME_ABNORMAL    '],
[ amc$set_file_attributes_cmd     , 'SET_FILE_ATTRIBUTES            '],
[ amc$set_file_inst_abnormal_req  , 'AMP$SET_FILE_INSTANCE_ABNORMAL '],
[ 79                              , bac$unused_request_table_entry],
[ 80                              , bac$unused_request_table_entry],
[ amc$skip_tape_marks_cmd         , 'SKIP_TAPE_MARKS                '],
[ amc$skip_tape_marks_req         , 'AMP$SKIP_TAPE_MARKS            '],
[ 83                              , bac$unused_request_table_entry],
[ amc$store_fap_pointer_req       , 'AMP$STORE_FAP_POINTER          '],
[ 85                              , bac$unused_request_table_entry],
[ 86                              , bac$unused_request_table_entry],
[ 87                              , bac$unused_request_table_entry],
[ 88                              , bac$unused_request_table_entry],
[ 89                              , bac$unused_request_table_entry],
[ 90                              , bac$unused_request_table_entry],
[ 91                              , bac$unused_request_table_entry],
[ 92                              , bac$unused_request_table_entry],
[ 93                              , bac$unused_request_table_entry],
[ fsc$create_file_req             , 'FSP$CREATE_FILE                '],
[ amc$validate_caller_privilege   , 'AMP$VALIDATE_CALLER_PRIVILEGE  '],
[ fsc$copy_file_req               , 'FSP$COPY_FILE                  '],
[ fsc$get_file_attributes_req     , 'FSP$GET_FILE_ATTRIBUTES        '],
[ fsc$get_file_information_req    , 'FSP$GET_FILE_INFORMATION       '],
[ fsc$get_open_attributes_req     , 'FSP$GET_OPEN_ATTRIBUTES        '],
[ fsc$get_open_information_req    , 'FSP$GET_OPEN_INFORMATION       '],
[ amc$fetch_access_information_rq , 'AMP$FETCH_ACCESS_INFORMATION   '],
[ 102                             , bac$unused_request_table_entry],
[ 103                             , bac$unused_request_table_entry],
[ 104                             , bac$unused_request_table_entry],
[ 105                             , bac$unused_request_table_entry],
[ 106                             , bac$unused_request_table_entry],
[ 107                             , bac$unused_request_table_entry],
[ 108                             , bac$unused_request_table_entry],
[ 109                             , bac$unused_request_table_entry],
[ amc$abandon_key_definitions     , 'AMP$ABANDON_KEY_DEFINITIONS    '],
[ amc$abort_file_parcel           , 'AMP$ABORT_FILE_PARCEL          '],
[ amc$apply_key_definitions       , 'AMP$APPLY_KEY_DEFINITIONS      '],
[ amc$begin_file_parcel           , 'AMP$BEGIN_FILE_PARCEL          '],
[ amc$check_buffer_req            , 'AMP$CHECK_BUFFER               '],
[ amc$check_nowait_request        , 'AMP$CHECK_NOWAIT_REQUEST       '],
[ amc$check_record_req            , 'AMP$CHECK_RECORD               '],
[ amc$close_req                   , 'FSP$CLOSE_FILE                 '],
[ amc$close_volume_req            , 'AMP$CLOSE_VOLUME               '],
[ amc$commit_file_parcel          , 'AMP$COMMIT_FILE_PARCEL         '],
[ amc$create_key_definition       , 'AMP$CREATE_KEY_DEFINITION      '],
[ amc$create_nested_file          , 'AMP$CREATE_NESTED_FILE         '],
[ amc$delete_direct_req           , 'AMP$DELETE_DIRECT              '],
[ amc$delete_key_definition       , 'AMP$DELETE_KEY_DEFINITION      '],
[ amc$delete_key_req              , 'AMP$DELETE_KEY                 '],
[ amc$delete_nested_file          , 'AMP$DELETE_NESTED_FILE         '],
[ amc$delete_req                  , 'AMP$DELETE                     '],
[ amc$erase_tape_block            , 'AMP$ERASE_TAPE_BLOCK           '],
[ amc$fetch_req                   , 'AMP$FETCH                      '],
[ amc$find_record_space           , 'AMP$FIND_RECORD_SPACE          '],
[ amc$flush_req                   , 'AMP$FLUSH                      '],
[ amc$get_direct_req              , 'AMP$GET_DIRECT                 '],
[ amc$get_key_definitions         , 'AMP$GET_KEY_DEFINITIONS        '],
[ amc$get_key_req                 , 'AMP$GET_KEY                    '],
[ amc$get_label_req               , 'AMP$GET_LABEL                  '],
[ amc$get_lock_keyed_record       , 'AMP$GET_LOCK_KEYED_RECORD      '],
[ amc$get_lock_next_keyed_record  , 'AMP$GET_LOCK_NEXT_KEYED_RECORD '],
[ amc$get_nested_file_definitions , 'AMP$GET_NESTED_FILE_DEFINITIONS'],
[ amc$get_next_key_req            , 'AMP$GET_NEXT_KEY               '],
[ amc$get_next_primary_key_list   , 'AMP$GET_NEXT_PRIMARY_KEY_LIST  '],
[ amc$get_next_req                , 'AMP$GET_NEXT                   '],
[ amc$get_partial_req             , 'AMP$GET_PARTIAL                '],
[ amc$get_primary_key_count       , 'AMP$GET_PRIMARY_KEY_COUNT      '],
[ amc$get_segment_pointer_req     , 'AMP$GET_SEGMENT_POINTER        '],
[ amc$get_space_used_for_key      , 'AMP$GET_SPACE_USED_FOR_KEY     '],
[ 145                             , bac$unused_request_table_entry],
[ amc$lock_file_req               , 'AMP$LOCK_FILE                  '],
[ amc$lock_key                    , 'AMP$LOCK_KEY                   '],
[ amc$open_req                    , 'FSP$OPEN_FILE                  '],
[ amc$pack_block_req              , 'AMP$PACK_BLOCK                 '],
[ amc$pack_record_req             , 'AMP$PACK_RECORD                '],
[ amc$put_direct_req              , 'AMP$PUT_DIRECT                 '],
[ amc$put_key_req                 , 'AMP$PUT_KEY                    '],
[ amc$put_label_req               , 'AMP$PUT_LABEL                  '],
[ amc$put_next_req                , 'AMP$PUT_NEXT                   '],
[ amc$put_partial_req             , 'AMP$PUT_PARTIAL                '],
[ amc$putrep_req                  , 'AMP$PUTREP                     '],
[ amc$read_direct_req             , 'AMP$READ_DIRECT                '],
[ amc$read_direct_skip_req        , 'AMP$READ_DIRECT_SKIP           '],
[ amc$read_req                    , 'AMP$READ                       '],
[ amc$read_skip_req               , 'AMP$READ_SKIP                  '],
[ amc$replace_direct_req          , 'AMP$REPLACE_DIRECT             '],
[ amc$replace_key_req             , 'AMP$REPLACE_KEY                '],
[ amc$replace_req                 , 'AMP$REPLACE_PREVIOUS_RECORD    '],
[ amc$rewind_req                  , 'AMP$REWIND                     '],
[ amc$rewind_volume_req           , 'AMP$REWIND_VOLUME              '],
[ amc$seek_direct_req             , 'AMP$SEEK_DIRECT                '],
[ amc$select_key                  , 'AMP$SELECT_KEY                 '],
[ amc$select_nested_file          , 'AMP$SELECT_NESTED_FILE         '],
[ amc$separate_key_groups         , 'AMP$SEPARATE_KEY_GROUPS        '],
[ amc$set_segment_eoi_req         , 'AMP$SET_SEGMENT_EOI            '],
[ amc$set_segment_position_req    , 'AMP$SET_SEGMENT_POSITION       '],
[ amc$skip_req                    , 'AMP$SKIP                       '],
[ amc$start_req                   , 'AMP$START                      '],
[ amc$store_req                   , 'AMP$STORE                      '],
[ 175                             , bac$unused_request_table_entry],
[ amc$unlock_file_req             , 'AMP$UNLOCK_FILE                '],
[ amc$unlock_key                  , 'AMP$UNLOCK_KEY                 '],
[ amc$unpack_block_req            , 'AMP$UNPACK_BLOCK               '],
[ amc$unpack_record_req           , 'AMP$UNPACK_RECORD              '],
[ amc$user_defined_access_request , 'AMP$USER_DEFINED_ACCESS_REQUEST'],
[ amc$write_direct_req            , 'AMP$WRITE_DIRECT               '],
[ amc$write_end_partition_req     , 'AMP$WRITE_END_PARTITION        '],
[ amc$write_req                   , 'AMP$WRITE                      '],
[ amc$write_tape_mark_req         , 'AMP$WRITE_TAPE_MARK            '],
[ ifc$fetch_terminal_req          , 'IFP$FETCH_TERMINAL             '],
[ ifc$store_terminal_req          , 'IFP$STORE_TERMINAL             ']];

?? FMT (FORMAT := ON) ??

  VAR
    bav$request_name_table_ptr: [XDCL, #GATE, READ, oss$job_paged_literal] ^array [1 .. * ] of
          bat$request_name_table_entry := ^bav$request_name_table;

?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] amp$set_local_name_abnormal', EJECT ??

*copyc amh$set_local_name_abnormal

  PROCEDURE [XDCL, #GATE] amp$set_local_name_abnormal
    (    local_file_name: amt$local_file_name;
         condition: ost$status_condition;
         request_code: amt$last_operation;
         text: string ( * );
     VAR status: ost$status);

    CONST
      error_size = 4,
      error_text = '____';

    VAR
      name: amt$local_file_name,
      request_name: ost$name,
      valid_name: boolean;

    clp$validate_name (local_file_name, name, valid_name);

    IF NOT valid_name THEN
      name := error_text;
    IFEND;

    IF (request_code >= LOWERBOUND (bav$request_name_table)) AND
          (request_code <= UPPERBOUND (bav$request_name_table)) AND
          (bav$request_name_table [request_code].name <> bac$unused_request_table_entry) THEN
      request_name := bav$request_name_table [request_code].name;
    ELSE
      request_name := osc$null_name;
    IFEND;

    p$set_local_name_abnormal (name, condition, request_name, text, status);

  PROCEND amp$set_local_name_abnormal;
?? OLDTITLE ??
?? NEWTITLE := '[XDCL, #GATE] bap$set_local_name_abnormal', EJECT ??
*copyc bah$set_local_name_abnormal

  PROCEDURE [XDCL, #GATE] bap$set_local_name_abnormal
    (    local_file_name: amt$local_file_name;
         condition: ost$status_condition;
         request_name: string ( * <= osc$max_name_size);
         text: string ( * );
     VAR status: ost$status);

    VAR
      name: amt$local_file_name;

    #TRANSLATE (osv$lower_to_upper, local_file_name, name);
    p$set_local_name_abnormal (name, condition, request_name, text, status);

  PROCEND bap$set_local_name_abnormal;
?? OLDTITLE ??
?? NEWTITLE := '[inline] p$set_local_name_abnormal', EJECT ??

  PROCEDURE [INLINE] p$set_local_name_abnormal
    (    local_file_name: amt$local_file_name;
         condition: ost$status_condition;
         request_name: string ( * <= osc$max_name_size);
         text: string ( * );
     VAR status: ost$status);

    CONST
      error_size = 4,
      error_text = '____';

    VAR
      status_text: string (osc$max_string_size),
      status_text_index: ost$string_index,
      text_length: ost$string_size;

{LOCAL FILE NAME
    text_length := clp$trimmed_string_size (local_file_name);
    status_text (1, text_length) := local_file_name (1, text_length);

{REQUEST NAME
    status_text_index := text_length + 1;
    status_text (status_text_index) := osc$status_parameter_delimiter;
    IF request_name = osc$null_name THEN
      text_length := error_size;
      status_text (status_text_index + 1, text_length) := error_text;
    ELSE
      text_length := clp$trimmed_string_size (request_name);
      IF text_length > osc$max_name_size THEN
        text_length := osc$max_name_size;
      IFEND;
      status_text (status_text_index + 1, text_length) := request_name (1, text_length);
    IFEND;

{Fill in null parameters for access level, file organization, record type,
{block type, & the error position}
    status_text_index := status_text_index + text_length + 1;
    status_text (status_text_index) := osc$status_parameter_delimiter;
    status_text (status_text_index + 1) := osc$status_parameter_delimiter;
    status_text (status_text_index + 2) := osc$status_parameter_delimiter;
    status_text (status_text_index + 3) := osc$status_parameter_delimiter;
    status_text (status_text_index + 4) := osc$status_parameter_delimiter;

{TEXT
    status_text_index := status_text_index + 5;
    status_text (status_text_index) := osc$status_parameter_delimiter;
    text_length := clp$trimmed_string_size (text);
    IF text_length > (osc$max_string_size - status_text_index) THEN
      text_length := (osc$max_string_size - status_text_index);
    IFEND;
    status_text (status_text_index + 1, text_length) := text (1, text_length);

    osp$set_status_abnormal (amc$access_method_id, condition,
          status_text (1, status_text_index + text_length), status);

  PROCEND p$set_local_name_abnormal;
?? OLDTITLE ??
MODEND amm$set_local_name_abnormal;
