?? NEWTITLE := 'NOS/VE : Basic Access Methods : Set File Instance Abnormal' ??
MODULE amm$set_file_instance_abnormal;
?? RIGHT := 110 ??

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc amc$condition_code_limits
*copyc amc$fap_request_codes
*copyc ame$improper_file_id
*copyc amt$file_identifier
*copyc bac$unused_request_table_entry
*copyc ost$name
*copyc ost$status
?? POP ??
*copyc baf$task_file_entry_p
*copyc bap$set_local_name_abnormal
*copyc clp$get_fs_path_string
*copyc clp$trimmed_string_size
*copyc osp$append_status_file
*copyc osp$append_status_parameter
*copyc osp$set_status_abnormal
*copyc amv$access_level_names
*copyc amv$block_type_names
*copyc amv$file_organization_names
*copyc amv$record_type_names
*copyc bav$request_name_table_ptr
?? OLDTITLE ??
?? NEWTITLE := '[xdcl, #gate] AMP$SET_FILE_INSTANCE_ABNORMAL', EJECT ??
*copyc amh$set_file_instance_abnormal

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

    IF (request_code >= LOWERBOUND (bav$request_name_table_ptr^))
{ } AND (request_code <= UPPERBOUND (bav$request_name_table_ptr^))
{ } AND (bav$request_name_table_ptr^ [request_code].name <> bac$unused_request_table_entry) THEN
      bap$set_file_instance_abnormal (file_identifier, condition,
            bav$request_name_table_ptr^ [request_code].name, text, status);
    ELSE
      bap$set_file_instance_abnormal (file_identifier, condition, osc$null_name, text, status);
    IFEND;

  PROCEND amp$set_file_instance_abnormal;
?? OLDTITLE ??
?? NEWTITLE := '[xdcl, #gate] BAP$SET_FILE_INSTANCE_ABNORMAL', EJECT ??

*copyc bah$set_file_instance_abnormal

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

    CONST
      error_size = 4,
      error_text = '____';

    VAR
      error_name: amt$local_file_name,
      file_instance_p: ^bat$task_file_entry,
      ignore_path_handle: fmt$path_handle,
      local_status: ost$status,
      path: fst$path,
      path_size: fst$path_size,
      status_text: string (osc$max_string_size),
      status_text_index: ost$string_index,
      text_length: ost$string_size;

    file_instance_p := baf$task_file_entry_p (file_identifier);

    IF file_instance_p <> NIL THEN
      osp$set_status_abnormal (amc$access_method_id, condition, '', status);

{FILE NAME
      clp$get_fs_path_string (file_instance_p^.local_file_name, path, path_size, ignore_path_handle,
            local_status);
      IF (NOT local_status.normal) OR (path_size = 0) THEN
        path := error_text;
        path_size := error_size;
      IFEND;
      osp$append_status_file (osc$status_parameter_delimiter, path (1, path_size), status);

{REQUEST NAME
      IF request_name = osc$null_name THEN
        text_length := error_size;
        status_text (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 (1, text_length) := request_name (1, text_length);
      IFEND;

{ACCESS LEVEL
      status_text_index := text_length + 1;
      status_text (status_text_index) := osc$status_parameter_delimiter;
      text_length := amv$access_level_names [file_instance_p^.access_level].size;
      status_text (status_text_index + 1, text_length) := amv$access_level_names
            [file_instance_p^.access_level].name (1, text_length);

{FILE ORGANIZATION
      status_text_index := status_text_index + text_length + 1;
      status_text (status_text_index) := osc$status_parameter_delimiter;
      text_length := amv$file_organization_names [file_instance_p^.instance_attributes.static_label.
            file_organization].size;
      status_text (status_text_index + 1, text_length) := amv$file_organization_names
            [file_instance_p^.instance_attributes.static_label.file_organization].name (1, text_length);

{RECORD TYPE
      status_text_index := status_text_index + text_length + 1;
      status_text (status_text_index) := osc$status_parameter_delimiter;
      text_length := amv$record_type_names [file_instance_p^.instance_attributes.static_label.record_type].
            size;
      status_text (status_text_index + 1, text_length) := amv$record_type_names
            [file_instance_p^.instance_attributes.static_label.record_type].name (1, text_length);

{BLOCK TYPE
      status_text_index := status_text_index + text_length + 1;
      status_text (status_text_index) := osc$status_parameter_delimiter;
      text_length := amv$block_type_names [file_instance_p^.instance_attributes.static_label.block_type].size;
      status_text (status_text_index + 1, text_length) := amv$block_type_names
            [file_instance_p^.instance_attributes.static_label.block_type].name (1, text_length);

{EXTRA
      status_text_index := status_text_index + text_length + 1;
      status_text (status_text_index) := osc$status_parameter_delimiter;
      status_text (status_text_index + 1, error_size) := error_text;

{TEXT
      status_text_index := status_text_index + error_size + 1;
      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$append_status_parameter (osc$status_parameter_delimiter,
            status_text (1, status_text_index + text_length), status);

    ELSE {invalid file identifier
      error_name := error_text;
      bap$set_local_name_abnormal (error_name, condition, request_name, text, status);
    IFEND;

  PROCEND bap$set_file_instance_abnormal;
?? OLDTITLE ??
MODEND amm$set_file_instance_abnormal;


