json_initialize Subroutine

Source Code


All Procedures

add_variables_to_input annotate_invalid_json compact_real_string default_comp_ucs4 default_join_ucs4 destroy_json_data escape_string get_current_line_from_file_sequential get_current_line_from_file_stream initialize_json_file integer_to_string json_add json_check_for_errors json_clear_exceptions json_count json_create_array json_create_double json_create_integer json_create_logical json_create_null json_create_object json_create_string json_destroy json_failed json_file json_file_destroy json_file_get_double json_file_get_double_vec json_file_get_integer json_file_get_integer_vec json_file_get_logical json_file_get_logical_vec json_file_get_object json_file_get_root json_file_get_string json_file_get_string_vec json_file_load json_file_load_from_string json_file_move_pointer json_file_print_1 json_file_print_2 json_file_print_to_console json_file_print_to_string json_file_update_integer json_file_update_logical json_file_update_real json_file_update_string json_file_update_string_name_ascii json_file_update_string_val_ascii json_file_variable_info json_get json_get_array json_get_array_with_path json_get_by_path json_get_child json_get_double json_get_double_vec json_get_double_vec_with_path json_get_double_with_path json_get_integer json_get_integer_vec json_get_integer_vec_with_path json_get_integer_with_path json_get_logical json_get_logical_vec json_get_logical_vec_with_path json_get_logical_with_path json_get_string json_get_string_vec json_get_string_vec_with_path json_get_string_with_path json_info json_initialize json_parse json_parse_file json_parse_string json_print json_print_1 json_print_2 json_print_error_message json_print_to_string json_remove json_remove_if_present json_throw_exception json_traverse json_update json_update_double json_update_integer json_update_logical json_update_string json_update_string_name_ascii json_update_string_val_ascii json_value_add_double json_value_add_double_vec json_value_add_integer json_value_add_integer_vec json_value_add_logical json_value_add_logical_vec json_value_add_member json_value_add_string json_value_add_string_name_ascii json_value_add_string_val_ascii json_value_add_string_vec json_value_add_string_vec_name_ascii json_value_add_string_vec_val_ascii json_value_create json_value_create_array json_value_create_double json_value_create_integer json_value_create_logical json_value_create_null json_value_create_object json_value_create_string json_value_destroy json_value_get_by_index json_value_get_by_name_chars json_value_print json_value_remove json_value_remove_if_present json_value_to_string parse_array parse_for_chars parse_number parse_object parse_string parse_value pop_char push_char read_file real_to_string rename string_to_double string_to_integer test_1 test_10 test_11 test_12 test_13 test_14 test_2 test_3 test_4 test_5 test_6 test_7 test_8 test_9 throw_exception to_array to_double to_integer to_logical to_null to_object to_string to_uni to_uni_vec to_unicode ucs4_comp_default ucs4_join_default valid_json_hex wrap_json_file_get_double wrap_json_file_get_double_vec wrap_json_file_get_integer wrap_json_file_get_integer_vec wrap_json_file_get_logical wrap_json_file_get_logical_vec wrap_json_file_get_object wrap_json_file_get_string wrap_json_file_get_string_vec wrap_json_file_load_from_string wrap_json_file_update_integer wrap_json_file_update_logical wrap_json_file_update_real wrap_json_file_update_string wrap_json_file_variable_info wrap_json_get_array_with_path wrap_json_get_by_path wrap_json_get_double_vec_with_path wrap_json_get_double_with_path wrap_json_get_integer_vec_with_path wrap_json_get_integer_with_path wrap_json_get_logical_vec_with_path wrap_json_get_logical_with_path wrap_json_get_string_vec_with_path wrap_json_get_string_with_path wrap_json_parse_string wrap_json_throw_exception wrap_json_update_double wrap_json_update_integer wrap_json_update_logical wrap_json_update_string wrap_json_value_add_double wrap_json_value_add_double_vec wrap_json_value_add_integer wrap_json_value_add_integer_vec wrap_json_value_add_logical wrap_json_value_add_logical_vec wrap_json_value_add_string wrap_json_value_add_string_vec wrap_json_value_create_array wrap_json_value_create_double wrap_json_value_create_integer wrap_json_value_create_logical wrap_json_value_create_null wrap_json_value_create_object wrap_json_value_create_string wrap_json_value_get_by_name_chars wrap_json_value_remove_if_present

public subroutine json_initialize(verbose, compact_reals, print_signs, real_format)

Arguments

Type IntentOptional AttributesName
logical(kind=LK), intent(in), optional :: verbose

mainly useful for debugging (default is false)

logical(kind=LK), intent(in), optional :: compact_reals

to compact the real number strings for output (default is true)

logical(kind=LK), intent(in), optional :: print_signs

always print numeric sign (default is false)

character(kind=len=*,CDK), intent(in), optional :: real_format

exponential (default), scientific, engineering or general

Description

Initialize the JSON-Fortran module. The routine must be called before any of the routines are used. It can also be called after using the module and encountering exceptions.

Modified

  • Izaak Beekman : 02/24/2015

Variables

TypeVisibility AttributesNameInitial
character(kind=CDK,len=10), public :: w
character(kind=CDK,len=10), public :: d
character(kind=CDK,len=10), public :: e
character(kind=CDK,len=2), public :: sgn
character(kind=CDK,len=2), public :: rl_edit_desc
integer(kind=IK), public :: istat
logical(kind=LK), public :: sgn_prnt

Source Code

    subroutine json_initialize(verbose,compact_reals,print_signs,real_format)

    implicit none

    logical(LK),intent(in),optional               :: verbose       !! mainly useful for debugging (default is false)
    logical(LK),intent(in),optional               :: compact_reals !! to compact the real number strings for output (default is true)
    logical(LK),intent(in),optional               :: print_signs   !! always print numeric sign (default is false)
    character(len=*,kind=CDK),intent(in),optional :: real_format   !! exponential (default), scientific, engineering or general

    character(kind=CDK,len=10) :: w,d,e
    character(kind=CDK,len=2)  :: sgn, rl_edit_desc
    integer(IK) :: istat
    logical(LK) :: sgn_prnt

    !clear any errors from previous runs:
    call json_clear_exceptions()

    !Ensure gfortran bug work around "parameters" are set properly
    null_str  = 'null'
    true_str  = 'true'
    false_str = 'false'

    !Just in case, clear these global variables also:
    pushed_index = 0
    pushed_char  = ''
    char_count   = 0
    line_count   = 1
    ipos         = 1

# ifdef USE_UCS4
    ! reopen stdout and stderr with utf-8 encoding
    open(output_unit,encoding='utf-8')
    open(error_unit, encoding='utf-8')
# endif

    !verbose error printing:
    if (present(verbose)) is_verbose = verbose

    !Set the format for real numbers:
    ! [if not changing it, then it remains the same]

    if ( (.not. allocated(real_fmt)) .or. &  ! if this hasn't been done yet
          present(compact_reals)     .or. &
          present(print_signs)       .or. &
          present(real_format) ) then

        if (present(compact_reals)) compact_real = compact_reals  

        !set defaults
        sgn_prnt = .false.
        if ( present( print_signs) ) sgn_prnt = print_signs
        if ( sgn_prnt ) then
           sgn = 'sp'
        else
           sgn = 'ss'
        end if

        rl_edit_desc = 'E'
        if ( present( real_format ) ) then
           select case ( real_format )
           case ('g','G','e','E','en','EN','es','ES')
              rl_edit_desc = real_format
           case default
              call throw_exception('Invalid real format, "' // trim(real_format) // '", passed to json_initialize.'// &
                   new_line('a') // 'Acceptable formats are: "G", "E", "EN", and "ES".' )
           end select
        end if

        ! set the default output/input format for reals:
                      write(w,'(ss,I0)',iostat=istat) max_numeric_str_len
        if (istat==0) write(d,'(ss,I0)',iostat=istat) real_precision
        if (istat==0) write(e,'(ss,I0)',iostat=istat) real_exponent_digits
        if (istat==0) then
            real_fmt = '(' // sgn // ',' // trim(rl_edit_desc) // trim(w) // '.' // trim(d) // 'E' // trim(e) // ')'
        else
            real_fmt = '(' // sgn // ',' // trim(rl_edit_desc) // '30.16E3)'  !just use this one (should never happen)
        end if

    end if

    end subroutine json_initialize

© 2015 JSON-Fortran was written by Jacob Williams.
Documentation generated by FORD.