SURFEX v8.1
General documentation of Surfex
dr_hook_watch_mod.F90
Go to the documentation of this file.
2 
3 USE parkind1 ,ONLY : jprd, jpim, jpib, jprm
4 
5 !-- Watch point creation interface for Dr.Hook
6 IMPLICIT NONE
7 SAVE
8 PRIVATE
9 
10 INTEGER, PUBLIC, PARAMETER :: keynone = 0
11 INTEGER, PUBLIC, PARAMETER :: keylog = 1
12 INTEGER, PUBLIC, PARAMETER :: keychar = 2
13 INTEGER, PUBLIC, PARAMETER :: key_i4 = 4
14 INTEGER, PUBLIC, PARAMETER :: key_i8 = 8
15 INTEGER, PUBLIC, PARAMETER :: key_r4 = 16
16 INTEGER, PUBLIC, PARAMETER :: key_r8 = 32
17 
18 INTERFACE dr_hook_watch
19 MODULE PROCEDURE &
31 END INTERFACE
32 
33 PUBLIC :: dr_hook_watch
34 PUBLIC :: dr_hook_check_watch
35 
36 CONTAINS
37 
38 SUBROUTINE check_args(LLABORT, LLACTIVE, LLPRINT, LLTRBK, &
39  & IABORT, IACTIVE, IPRINT, ITRBK, IPRTKEY, &
40  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
41 LOGICAL, INTENT(INOUT) :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
42 INTEGER(KIND=JPIM), INTENT(OUT) :: IABORT, IACTIVE, IPRINT, ITRBK
43 INTEGER(KIND=JPIM), INTENT(IN) :: IPRTKEY
44 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
45 iabort = 0
46 llabort = .true.
47 IF (PRESENT(ldabort)) llabort = ldabort
48 IF (llabort) iabort = 1
49 
50 iactive = 0
51 llactive = .true.
52 IF (PRESENT(ldactive)) llactive = ldactive
53 IF (llactive) iactive = 1
54 
55 iprint = keynone
56 llprint = .true.
57 IF (PRESENT(ldprint)) llprint = ldprint
58 IF (llprint) iprint = iprtkey
59 
60 itrbk = 0
61 lltrbk = .false.
62 IF (PRESENT(ldtrbk)) lltrbk = ldtrbk
63 IF (lltrbk) itrbk = 1
64 END SUBROUTINE check_args
65 
66 SUBROUTINE dr_hook_watch_character(CDNAME, PTR, &
67  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
68 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 1
69 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
70 CHARACTER(LEN=*), INTENT(IN) :: PTR
71 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
72 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
73 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
74 ibytes = len(ptr) * jp_bytes_per_elem
75 IF (ibytes <= 0) RETURN
76 CALL check_args(llabort, llactive, llprint, lltrbk, &
77  & iabort, iactive, iprint, itrbk, keychar, &
78  & ldabort, ldactive, ldprint, ldtrbk)
79 CALL c_drhook_watch(iactive, cdname, ptr(1:1), ibytes, iabort, iprint, len(ptr), itrbk)
80 END SUBROUTINE dr_hook_watch_character
81 
82 SUBROUTINE dr_hook_watch_logical_scalar(CDNAME, PTR, &
83  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
84 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 4
85 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
86 LOGICAL, INTENT(IN) :: PTR
87 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
88 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
89 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
90 ibytes = jp_bytes_per_elem
91 CALL check_args(llabort, llactive, llprint, lltrbk, &
92  & iabort, iactive, iprint, itrbk, keylog, &
93  & ldabort, ldactive, ldprint, ldtrbk)
94 CALL c_drhook_watch(iactive, cdname, ptr, ibytes, iabort, iprint, 1, itrbk)
95 END SUBROUTINE dr_hook_watch_logical_scalar
96 
97 SUBROUTINE dr_hook_watch_logical_vec(CDNAME, PTR, &
98  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
99 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 4
100 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
101 LOGICAL, INTENT(IN) :: PTR(:)
102 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
103 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
104 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
105 ibytes = SIZE(ptr) * jp_bytes_per_elem
106 IF (ibytes <= 0) RETURN
107 CALL c_drhook_watch(iactive, cdname, ptr(1), ibytes, iabort, iprint, SIZE(ptr), itrbk)
108 END SUBROUTINE dr_hook_watch_logical_vec
109 
110 SUBROUTINE dr_hook_watch_i4_scalar(CDNAME, PTR, &
111  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
112 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 4
113 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
114 INTEGER(KIND=JPIM), INTENT(IN) :: PTR
115 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
116 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
117 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
118 ibytes = jp_bytes_per_elem
119 CALL check_args(llabort, llactive, llprint, lltrbk, &
120  & iabort, iactive, iprint, itrbk, key_i4, &
121  & ldabort, ldactive, ldprint, ldtrbk)
122 CALL c_drhook_watch(iactive, cdname, ptr, ibytes, iabort, iprint, 1, itrbk)
123 END SUBROUTINE dr_hook_watch_i4_scalar
124 
125 SUBROUTINE dr_hook_watch_i4_vec(CDNAME, PTR, &
126  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
127 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 4
128 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
129 INTEGER(KIND=JPIM), INTENT(IN) :: PTR(:)
130 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
131 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
132 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
133 ibytes = SIZE(ptr) * jp_bytes_per_elem
134 IF (ibytes <= 0) RETURN
135 CALL check_args(llabort, llactive, llprint, lltrbk, &
136  & iabort, iactive, iprint, itrbk, key_i4, &
137  & ldabort, ldactive, ldprint, ldtrbk)
138 CALL c_drhook_watch(iactive, cdname, ptr(1), ibytes, iabort, iprint, SIZE(ptr), itrbk)
139 END SUBROUTINE dr_hook_watch_i4_vec
140 
141 SUBROUTINE dr_hook_watch_i8_scalar(CDNAME, PTR, &
142  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
143 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 8
144 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
145 INTEGER(KIND=JPIB), INTENT(IN) :: PTR
146 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
147 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
148 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
149 ibytes = jp_bytes_per_elem
150 CALL check_args(llabort, llactive, llprint, lltrbk, &
151  & iabort, iactive, iprint, itrbk, key_i8, &
152  & ldabort, ldactive, ldprint, ldtrbk)
153 CALL c_drhook_watch(iactive, cdname, ptr, ibytes, iabort, iprint, 1, itrbk)
154 END SUBROUTINE dr_hook_watch_i8_scalar
155 
156 SUBROUTINE dr_hook_watch_i8_vec(CDNAME, PTR, &
157  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
158 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 8
159 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
160 INTEGER(KIND=JPIB), INTENT(IN) :: PTR(:)
161 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
162 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
163 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
164 ibytes = SIZE(ptr) * jp_bytes_per_elem
165 IF (ibytes <= 0) RETURN
166 CALL check_args(llabort, llactive, llprint, lltrbk, &
167  & iabort, iactive, iprint, itrbk, key_i8, &
168  & ldabort, ldactive, ldprint, ldtrbk)
169 CALL c_drhook_watch(iactive, cdname, ptr(1), ibytes, iabort, iprint, SIZE(ptr), itrbk)
170 END SUBROUTINE dr_hook_watch_i8_vec
171 
172 SUBROUTINE dr_hook_watch_r4_scalar(CDNAME, PTR, &
173  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
174 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 4
175 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
176 REAL(KIND=JPRM), INTENT(IN) :: PTR
177 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
178 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
179 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
180 ibytes = jp_bytes_per_elem
181 CALL check_args(llabort, llactive, llprint, lltrbk, &
182  & iabort, iactive, iprint, itrbk, key_r4, &
183  & ldabort, ldactive, ldprint, ldtrbk)
184 CALL c_drhook_watch(iactive, cdname, ptr, ibytes, iabort, iprint, 1, itrbk)
185 END SUBROUTINE dr_hook_watch_r4_scalar
186 
187 SUBROUTINE dr_hook_watch_r4_vec(CDNAME, PTR, &
188  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
189 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 4
190 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
191 REAL(KIND=JPRM), INTENT(IN) :: PTR(:)
192 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
193 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
194 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
195 ibytes = SIZE(ptr) * jp_bytes_per_elem
196 IF (ibytes <= 0) RETURN
197 CALL check_args(llabort, llactive, llprint, lltrbk, &
198  & iabort, iactive, iprint, itrbk, key_r4, &
199  & ldabort, ldactive, ldprint, ldtrbk)
200 CALL c_drhook_watch(iactive, cdname, ptr(1), ibytes, iabort, iprint, SIZE(ptr), itrbk)
201 END SUBROUTINE dr_hook_watch_r4_vec
202 
203 SUBROUTINE dr_hook_watch_r8_scalar(CDNAME, PTR, &
204  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
205 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 8
206 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
207 REAL(KIND=JPRD), INTENT(IN) :: PTR
208 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
209 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
210 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
211 ibytes = jp_bytes_per_elem
212 CALL check_args(llabort, llactive, llprint, lltrbk, &
213  & iabort, iactive, iprint, itrbk, key_r8, &
214  & ldabort, ldactive, ldprint, ldtrbk)
215 CALL c_drhook_watch(iactive, cdname, ptr, ibytes, iabort, iprint, 1, itrbk)
216 END SUBROUTINE dr_hook_watch_r8_scalar
217 
218 SUBROUTINE dr_hook_watch_r8_vec(CDNAME, PTR, &
219  & LDABORT, LDACTIVE, LDPRINT, LDTRBK)
220 INTEGER(KIND=JPIM), PARAMETER :: JP_BYTES_PER_ELEM = 8
221 CHARACTER(LEN=*), INTENT(IN) :: CDNAME
222 REAL(KIND=JPRD), INTENT(IN) :: PTR(:)
223 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT, LDACTIVE, LDPRINT, LDTRBK
224 LOGICAL :: LLABORT, LLACTIVE, LLPRINT, LLTRBK
225 INTEGER(KIND=JPIM) :: IBYTES, IABORT, IACTIVE, IPRINT, ITRBK
226 ibytes = SIZE(ptr) * jp_bytes_per_elem
227 IF (ibytes <= 0) RETURN
228 CALL check_args(llabort, llactive, llprint, lltrbk, &
229  & iabort, iactive, iprint, itrbk, key_r8, &
230  & ldabort, ldactive, ldprint, ldtrbk)
231 CALL c_drhook_watch(iactive, cdname, ptr(1), ibytes, iabort, iprint, SIZE(ptr), itrbk)
232 END SUBROUTINE dr_hook_watch_r8_vec
233 
234 SUBROUTINE dr_hook_check_watch(CDWHERE, LDABORT)
235 CHARACTER(LEN=*), INTENT(IN) :: CDWHERE
236 LOGICAL, INTENT(IN), OPTIONAL :: LDABORT
237 LOGICAL :: LLABORT
238 INTEGER(KIND=JPIM) :: IABORT
239 iabort = 0
240 llabort = .false.
241 IF (PRESENT(ldabort)) llabort = ldabort
242 IF (llabort) iabort = 1
243 CALL c_drhook_check_watch(cdwhere, iabort)
244 END SUBROUTINE dr_hook_check_watch
245 
246 END MODULE dr_hook_watch_mod
subroutine, public dr_hook_check_watch(CDWHERE, LDABORT)
integer, parameter jpim
Definition: parkind1.F90:13
integer, parameter jprd
Definition: parkind1.F90:39
integer, parameter, public keynone
integer, parameter, public keychar
integer, parameter, public key_i4
integer, parameter, public key_r4
subroutine dr_hook_watch_character(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_logical_vec(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_i4_scalar(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_i8_vec(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_r4_vec(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_r8_scalar(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_logical_scalar(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_i8_scalar(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
integer, parameter, public keylog
integer, parameter jprm
Definition: parkind1.F90:30
subroutine dr_hook_watch_r8_vec(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine dr_hook_watch_r4_scalar(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
integer, parameter jpib
Definition: parkind1.F90:14
subroutine dr_hook_watch_i4_vec(CDNAME, PTR, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
subroutine check_args(LLABORT, LLACTIVE, LLPRINT, LLTRBK, IABORT, IACTIVE, IPRINT, ITRBK, IPRTKEY, LDABORT, LDACTIVE, LDPRINT, LDTRBK)
integer, parameter, public key_i8
integer, parameter, public key_r8