10 integer :: max_length = 2047
11 character(len=2047) :: message
12 integer :: message_length = 0
17subroutine print_error(ddx_error)
20 write(6,
"(A)") ddx_error % message(1:1+ddx_error % message_length)
21end subroutine print_error
23subroutine check_error(ddx_error)
26 if (ddx_error % flag .ne. 0)
then
27 call print_error(ddx_error)
30end subroutine check_error
32subroutine update_error(ddx_error, message)
35 character(len=*) :: message
36 integer :: message_start, message_stop, message_length, total_length
38 ddx_error % flag = ddx_error % flag + 1
39 message_length = len(message)
40 total_length = message_length + 2
41 message_start = 1 + ddx_error % message_length
42 message_stop = message_start + total_length
44 if (message_stop .lt. ddx_error % max_length)
then
45 ddx_error % message(message_start:message_start) =
" "
46 ddx_error % message(message_start+1:message_stop-2) = message(1:message_length)
47 ddx_error % message(message_stop-1:message_stop-1) = achar(10)
48 ddx_error % message_length = ddx_error % message_length + total_length
49 else if (message_stop - ddx_error % max_length .gt. 3)
then
50 message_length = ddx_error % max_length - message_start
51 ddx_error % message(message_start:message_start) =
" "
52 ddx_error % message(message_start+1:ddx_error % max_length-2) = message(1:message_length-3)
53 ddx_error % message(ddx_error % max_length-1:ddx_error%max_length-1) = achar(10)
54 ddx_error % message_length = ddx_error % message_length + message_length
56end subroutine update_error
58subroutine reset_error(ddx_error)
63 ddx_error % message_length = 0
64 do i = 1, ddx_error % max_length
65 ddx_error % message(i:i) =
" "
67end subroutine reset_error
Compile-time constants and definitions.
ddX type for containing ddx_error information