267
268
269
270
271
272 implicit none
273 type(HASH), intent(inout) :: hashv
274 character(*), intent(out) :: key
275 character(*), intent(out), optional :: value
276 logical, intent(out) :: end
277 integer :: table_size
278 character(STRING) :: value_tmp
279 continue
280 table_size = dchashnumber(hashv)
281 if (table_size < hashv % search_index) then
282 key = ''
283 value_tmp = ''
284 end = .true.
285 else
286 key = hashv % hash_table(hashv % search_index) % key
287 value_tmp = hashv % hash_table(hashv % search_index) % value
288 end = .false.
289 hashv % search_index = hashv % search_index + 1
290 end if
291 if (present(value)) then
292 value = value_tmp
293 end if
294