1#include <c_interop.inc>
3 use,
intrinsic :: iso_c_binding
11 private :: extract_error
15 subroutine check_error(code, msg, handle, htype)
16 integer(SQLRETURN),
intent(in) :: code
17 character(*),
intent(in) :: msg
18 type(SQLHANDLE),
intent(in) :: handle
19 integer(SQLSMALLINT),
intent(in) :: htype
21 if (code /= sql_success .and. code /= sql_success_with_info)
then
22 call extract_error(msg, handle, htype)
26 subroutine extract_error(msg, handle, htype)
27 character(*),
intent(in) :: msg
28 type(SQLHANDLE),
intent(in) :: handle
29 integer(c_short),
intent(in) :: htype
31 integer(c_short) :: err, lmsg
32 integer(c_int) :: native_error
33 character(6, c_char) :: state
34 character(256, c_char) :: text
35 integer(SQLRETURN) :: ret
37 write(*, *)
"The driver reported the following error ",
trim(msg)
39 ret =
sqlgetdiagrec(htype, handle, err, state, native_error, &
40 text, len(text, c_short), lmsg)
41 do while (ret == sql_success .or. ret == sql_success_with_info)
43 write(*,
'(A,":",i0,":",i0,":",A)')
trim(state), err, native_error,
trim(text)
44 ret =
sqlgetdiagrec(htype, handle, err, state, native_error, &
45 text, len(text, c_short), lmsg)
Triming of c-string returning fortran allocatable characters.