Checks the value of a logical condition (Specification)
If condition == .false.
and:
1
;msg
is provided, it prints the value of msg
;code
is provided, it stops the program with the given exit code;warn
is provided and .true.
, it doesn't stop the program and prints
the message.a /= 5
, stops the program with exit code 1
and prints Check failed.
call check(a == 5)
a == 5 failed
. call check(a == 5, msg='a == 5 failed.')
call check(a == 5, msg='a == 5 failed.', warn=.true.)
77
call check(a == 5, msg='a == 5 failed.', code=77)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(in) | :: | condition | |||
character(len=*), | intent(in), | optional | :: | msg | ||
integer, | intent(in), | optional | :: | code | ||
logical, | intent(in), | optional | :: | warn |
subroutine check(condition, msg, code, warn) !! version: experimental !! !! Checks the value of a logical condition !! ([Specification](../page/specs/stdlib_error.html#description)) !! !!##### Behavior !! !! If `condition == .false.` and: !! !! * No other arguments are provided, it stops the program with the default !! message and exit code `1`; !! * `msg` is provided, it prints the value of `msg`; !! * `code` is provided, it stops the program with the given exit code; !! * `warn` is provided and `.true.`, it doesn't stop the program and prints !! the message. !! !!##### Examples !! !!* If `a /= 5`, stops the program with exit code `1` !! and prints `Check failed.` !!``` fortran !! call check(a == 5) !!``` !! !!* As above, but prints `a == 5 failed`. !!``` fortran !! call check(a == 5, msg='a == 5 failed.') !!``` !! !!* As above, but doesn't stop the program. !!``` fortran !! call check(a == 5, msg='a == 5 failed.', warn=.true.) !!``` !! !!* As example #2, but stops the program with exit code `77` !!``` fortran !! call check(a == 5, msg='a == 5 failed.', code=77) !!``` ! ! Arguments ! --------- logical, intent(in) :: condition character(*), intent(in), optional :: msg integer, intent(in), optional :: code logical, intent(in), optional :: warn character(*), parameter :: msg_default = 'Check failed.' if (.not. condition) then if (optval(warn, .false.)) then write(stderr,*) optval(msg, msg_default) else call error_stop(optval(msg, msg_default), optval(code, 1)) end if end if end subroutine check