The TELEMAC-MASCARET system  trunk
api_handle_error.f
Go to the documentation of this file.
1 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4  MODULE api_handle_error
5 
6  IMPLICIT NONE
8  INTEGER, PARAMETER :: error_len = 50
10  INTEGER, PARAMETER :: error_mess_len = 250
11  ! ERROR HANDLING FLAGS
12  INTEGER, PARAMETER :: no_error=0
13  INTEGER, PARAMETER :: unallocated_array_error=1
14  INTEGER, PARAMETER :: file_not_found_error=2
15  INTEGER, PARAMETER :: call_position_error=3
16  INTEGER, PARAMETER :: overtime_error=4
17  INTEGER, PARAMETER :: max_instance_error=5
18  INTEGER, PARAMETER :: invalid_instance_num_error=6
19  INTEGER, PARAMETER :: unused_instance_error=7
20  INTEGER, PARAMETER :: unknown_var_error=8
21  INTEGER, PARAMETER :: increase_nb_var_t2d_error=9
22  INTEGER, PARAMETER :: increase_nb_var_t3d_error=10
23  INTEGER, PARAMETER :: increase_nb_var_art_error=11
24  INTEGER, PARAMETER :: increase_nb_var_wac_error=12
25  INTEGER, PARAMETER :: increase_nb_var_sis_error=13
26  INTEGER, PARAMETER :: index_block_missing=14
27  INTEGER, PARAMETER :: unknown_module=15
28 !
29  ! POSITION FOR A CALL FUNCTION
30  INTEGER, PARAMETER :: no_position=-1
31  INTEGER, PARAMETER :: run_set_config_pos=0
32  INTEGER, PARAMETER :: run_read_case_pos=1
33  INTEGER, PARAMETER :: run_allocation_pos=2
34  INTEGER, PARAMETER :: run_init_pos=3
35  INTEGER, PARAMETER :: run_timestep_pos=4
36  INTEGER, PARAMETER :: run_finalize_pos=5
38  CHARACTER(LEN=32) :: pos_name(6)
39  parameter( pos_name = (/
40  & 'RUN_SET_CONFIG ',
41  & 'RUN_READ_CASE ',
42  & 'RUN_ALLOCATION ',
43  & 'RUN_INIT ',
44  & 'RUN_TIMESTEP ',
45  & 'RUN_FINALIZE ' /) )
47  CHARACTER(LEN=ERROR_MESS_LEN) :: err_mess
48 !
49  CONTAINS
50  !
51  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
64  SUBROUTINE check_call_position
65  & (call_position,fname,prev_pos,next_pos,ierr)
66  INTEGER :: call_position
67  CHARACTER(*), INTENT(IN) :: FNAME
68  INTEGER, INTENT(IN) :: PREV_POS, NEXT_POS
69  INTEGER, INTENT(OUT) :: IERR
70 !
71  ierr = 0
72 !
73  IF((next_pos.NE.no_position).AND.
74  & (call_position.GT.next_pos)) THEN
75  ierr = call_position_error
76  err_mess = "THE FUNCTION :'"//trim(fname)//
77  & "' MUST BE CALLED BEFORE "//pos_name(next_pos+1)
78  ENDIF
79  IF((prev_pos.NE.no_position).AND.
80  & (call_position.LT.prev_pos)) THEN
81  ierr = call_position_error
82  err_mess = "THE FUNCTION :'"//trim(fname)//
83  & "' MUST BE CALLED AFTER "//pos_name(prev_pos+1)
84  ENDIF
85  END SUBROUTINE check_call_position
86 !
87  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93  SUBROUTINE get_error_type(IERR,MESSAGE)
94  INTEGER, INTENT(IN) :: IERR
95  CHARACTER(*), INTENT(OUT) :: MESSAGE
96 !
97  IF(ierr.EQ.unallocated_array_error) THEN
98  message = 'ERROR OF TYPE: UNALLOCATED_ARRAY_ERROR'
99  ELSE IF(ierr.EQ.file_not_found_error) THEN
100  message = 'ERROR OF TYPE: FILE_NOT_FOUND_ERROR'
101  ELSE IF(ierr.EQ.call_position_error) THEN
102  message = 'ERROR OF TYPE: CALL_POSITION_ERROR'
103  ELSE IF(ierr.EQ.max_instance_error) THEN
104  message = 'ERROR OF TYPE: MAX_INSTANCE_ERROR'
105  ELSE IF(ierr.EQ.invalid_instance_num_error) THEN
106  message = 'ERROR OF TYPE: INVALID_INSTANCE_NUM_ERROR'
107  ELSE IF(ierr.EQ.unused_instance_error) THEN
108  message = 'ERROR OF TYPE: UNUSED_INSTANCE_ERROR'
109  ELSE IF(ierr.EQ.unknown_var_error) THEN
110  message = 'ERROR OF TYPE: UNKNOWN_VAR_ERROR'
111  ELSE IF(ierr.EQ.index_block_missing) THEN
112  message = 'ERROR OF TYPE: INDEX_BLOCK_MISSING'
113  ELSE IF(ierr.EQ.unknown_module) THEN
114  message = 'MODULE GIVEN AS ARGUMENT IS UNKNOWN'
115  ELSE
116  message = 'ERROR OF UNKNOWN TYPE'
117  ENDIF
118  END SUBROUTINE get_error_type
119 !
120  END MODULE api_handle_error
integer, parameter error_len
name of error string length
integer, parameter overtime_error
integer, parameter no_error
integer, parameter file_not_found_error
integer, parameter run_set_config_pos
integer, parameter run_allocation_pos
integer, parameter run_read_case_pos
integer, parameter increase_nb_var_t2d_error
integer, parameter max_instance_error
integer, parameter unknown_module
integer, parameter increase_nb_var_t3d_error
character(len=32), dimension(6) pos_name
List of positions names.
integer, parameter increase_nb_var_art_error
integer, parameter call_position_error
integer, parameter increase_nb_var_wac_error
subroutine check_call_position(CALL_POSITION, FNAME, PREV_POS, NEXT_POS, IERR)
subroutine get_error_type(IERR, MESSAGE)
integer, parameter index_block_missing
integer, parameter no_position
integer, parameter invalid_instance_num_error
integer, parameter error_mess_len
error message string length
integer, parameter unallocated_array_error
integer, parameter increase_nb_var_sis_error
integer, parameter run_finalize_pos
integer, parameter unknown_var_error
character(len=error_mess_len) err_mess
Error message.
integer, parameter run_timestep_pos
integer, parameter unused_instance_error
integer, parameter run_init_pos