read_string_column Subroutine

public subroutine read_string_column(file_id, column, array, default, index, skip)

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: file_id
character(len=*), intent(in), optional :: column
character(len=*), intent(out), dimension(:):: array
character(len=*), intent(in), optional :: default
integer, intent(in), optional :: index
integer, intent(in), optional :: skip

Calls

proc~~read_string_column~~CallsGraph proc~read_string_column read_string_column proc~move_lines move_lines proc~read_string_column->proc~move_lines proc~log_error log_error proc~read_string_column->proc~log_error proc~read_csv_item read_csv_item proc~read_string_column->proc~read_csv_item proc~header_column_index header_column_index proc~read_string_column->proc~header_column_index proc~input_error_column_not_found input_error_column_not_found proc~read_string_column->proc~input_error_column_not_found proc~log_message log_message proc~log_error->proc~log_message proc~header_column_index->proc~move_lines proc~header_column_index->proc~input_error_column_not_found proc~input_error_column_not_found->proc~log_error proc~log_write log_write proc~log_message->proc~log_write proc~log_format_message log_format_message proc~log_message->proc~log_format_message proc~to_string to_string proc~log_write->proc~to_string proc~date_time_str date_time_str proc~log_format_message->proc~date_time_str proc~colourise colourise proc~log_format_message->proc~colourise proc~string_index string_index proc~colourise->proc~string_index

Called by

proc~~read_string_column~~CalledByGraph proc~read_string_column read_string_column proc~crop_read_input crop_read_input proc~crop_read_input->proc~read_string_column proc~management_read_ctrl management_read_ctrl proc~management_read_ctrl->proc~read_string_column proc~output_initialise_labelled output_initialise_labelled proc~output_initialise_labelled->proc~read_string_column proc~reservoir_read_control_file reservoir_read_control_file proc~reservoir_read_control_file->proc~read_string_column proc~subbasin_read_input subbasin_read_input proc~subbasin_read_input->proc~read_string_column proc~soil_read_input soil_read_input proc~soil_read_input->proc~read_string_column proc~reservoir_initialise reservoir_initialise proc~reservoir_initialise->proc~reservoir_read_control_file proc~output_initialise_storage output_initialise_storage proc~output_initialise_storage->proc~output_initialise_labelled proc~initialise initialise proc~initialise->proc~crop_read_input proc~initialise->proc~reservoir_initialise proc~soil_initialise soil_initialise proc~initialise->proc~soil_initialise proc~subbasin_initialise subbasin_initialise proc~initialise->proc~subbasin_initialise proc~management_initialise management_initialise proc~initialise->proc~management_initialise proc~output_initialise output_initialise proc~initialise->proc~output_initialise proc~soil_initialise->proc~soil_read_input proc~subbasin_initialise->proc~subbasin_read_input proc~management_initialise->proc~management_read_ctrl program~swim swim program~swim->proc~initialise proc~output_initialise->proc~output_initialise_storage

Contents

Source Code


Source Code

  subroutine read_string_column(file_id, column, array, default, index, skip)
    ! Read column of strings to fill a 1d array
    !
    ! Optional arguments: see read_real_column
    integer, intent(in) :: file_id
    character(len=*), intent(in), optional :: column
    character(len=*), dimension(:), intent(out) :: array
    character(len=*), intent(in), optional :: default
    integer, intent(in), optional :: index, skip
    integer i, column_ix

    if (present(column)) then
      ! Find column index
      column_ix = header_column_index(column, file_id)
    else if (present(index)) then
      column_ix = index
    else
      call log_error("read_string_column", "column or index argument required.")
    end if
    ! Skip lines after the header
    if (present(skip)) call move_lines(file_id, skip)
    ! Set default or error if not found
    if (column_ix == 0 .and. present(default)) then
      array = default
      return
    else if (column_ix == 0) then
      call input_error_column_not_found(column, file_id)
    end if
    ! Fill array
    do i = 1, size(array)
      array(i) = read_csv_item(column_ix, file_id)
    end do
  end subroutine read_string_column