gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
dc_message::messagenotify Interface Reference

Public Member Functions

subroutine messagenotifyc (level, where, message, i, r, d, l, n, c1, c2, c3, ca, rank_mpi)
subroutine messagenotifyi (number, where, message, i, r, d, l, n, c1, c2, c3, ca, rank_mpi)

Detailed Description

Definition at line 64 of file dc_message.f90.

Member Function/Subroutine Documentation

◆ messagenotifyc()

subroutine dc_message::messagenotify::messagenotifyc ( character(*), intent(in) level,
character(*), intent(in) where,
character(*), intent(in) message,
integer, dimension(:), intent(in), optional i,
real, dimension(:), intent(in), optional r,
real(dp), dimension(:), intent(in), optional d,
logical, dimension(:), intent(in), optional l,
integer, dimension(:), intent(in), optional n,
character(*), intent(in), optional c1,
character(*), intent(in), optional c2,
character(*), intent(in), optional c3,
character(*), dimension(:), intent(in), optional ca,
integer, intent(in), optional rank_mpi )

メッセージの出力およびエラーによる終了

メッセージを標準出力へ出力したい場合に用います。

文字型変数 where にはプログラム名 (サブルーチン名) など、 プログラム内のどこでメッセージを出力するのかを示すものを与えます。

文字型変数 message には、出力したい文字列を与えます。 オプション変数 i, r, d, L, s, n, c1, c2, c3 を付加する事も出来ます。 詳細に関しては dc_string::CPrintf を参照して下さい。

文字型変数 level は出力するメッセージの種類を決める引数で、

  • "W" (または "Warning" など "W" で始まる文字) を与える事で 警告 であることを指定
  • "E" (または "Error" など "E" で始まる文字) を与える事で エラー (メッセージ出力後プログラムを終了) であることを指定
  • それ以外の文字 (大抵は "M" を与えることを想定) を与える事で 通常のメッセージ であることを指定

"E" を与えた場合はメッセージ出力後、プログラムを強制終了させます。 エラーコードは dc_error::USR_ERRNO となります。

Parameters
[in]levelメッセージレベル ("E", "W", "M" のいずれか)
[in]whereプログラム名、手続き名
[in]messageメッセージ
[in]iフォーマット用整数配列
[in]rフォーマット用実数配列
[in]dフォーマット用倍精度実数配列
[in]Lフォーマット用論理配列
[in]nフォーマット用整数配列
[in]c1フォーマット用文字列1
[in]c2フォーマット用文字列2
[in]c3フォーマット用文字列3
[in]caフォーマット用文字列配列
[in]rank_mpiMPI 使用時に、ここで指定されたランク数のノードでのみ メッセージ出力を行います。負の値を与えた場合には、 全てのノードで出力を行います。MPI を使用していない場合には無視されます。

Definition at line 147 of file dc_message.f90.

149 use dc_types ,only: string, dp
150 use dc_string ,only: uchar, strhead, printf, cprintf
151 use dc_error ,only: storeerror, usr_errno
152 implicit none
153 character(*), intent(in) :: level
154 character(*), intent(in) :: where
155 character(*), intent(in) :: message
156 integer , intent(in), optional:: i(:), n(:)
157 real , intent(in), optional:: r(:)
158 real(DP) , intent(in), optional:: d(:)
159 logical , intent(in), optional:: L(:)
160 character(*), intent(in), optional:: c1, c2, c3
161 character(*), intent(in), optional:: ca(:)
162 integer , intent(in), optional:: rank_mpi
163 character(string) :: msg
164 continue
165 if ( invalid_rank_number( rank_mpi ) ) return
166 if ( strhead( 'ERROR', trim( uchar(level) ) ) ) then
167 msg = cprintf(message, &
168 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca)
169 call storeerror(usr_errno, where, cause_c=msg)
170 elseif ( strhead( 'WARNING', trim( uchar(level) ) ) ) then
171 msg = cprintf(message, &
172 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca)
173 msg=' *** WARNING [' // trim(where) // '] *** '// trim(msg)
174 call printf(fmt='%c', c1=msg)
175 else
176 msg = cprintf(message, &
177 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca)
178 msg=' *** MESSAGE [' // trim(where) // '] *** ' // trim(msg)
179 call printf(fmt='%c', c1=msg)
180 endif
181 return
エラー処理用モジュール
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public usr_errno
-1000 以下: ユーザー定義
Definition dc_error.f90:579
文字型変数の操作
Definition dc_string.f90:83
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92

References dc_types::dp, dc_error::storeerror(), dc_types::string, and dc_error::usr_errno.

Here is the call graph for this function:

◆ messagenotifyi()

subroutine dc_message::messagenotify::messagenotifyi ( integer, intent(in) number,
character(*), intent(in) where,
character(*), intent(in), optional message,
integer, dimension(:), intent(in), optional i,
real, dimension(:), intent(in), optional r,
real(dp), dimension(:), intent(in), optional d,
logical, dimension(:), intent(in), optional l,
integer, dimension(:), intent(in), optional n,
character(*), intent(in), optional c1,
character(*), intent(in), optional c2,
character(*), intent(in), optional c3,
character(*), dimension(:), intent(in), optional ca,
integer, intent(in), optional rank_mpi )

メッセージの出力およびエラーによる終了 (エラーコード版)

基本的にもう一方の MessageNotify (または dc_message::MessageNotifyC) と同様ですが、こちらは第1引数に数値型変数 number をとります。 この number はエラーコードとして、そのまま dc_error::StoreError に 引き渡されます。エラーコードに関しては dc_error を参照ください。

Parameters
[in]numberエラーコード (dc_error 参照)
[in]whereプログラム名、手続き名
[in]messageメッセージ (省略可)
[in]iフォーマット用整数配列
[in]rフォーマット用実数配列
[in]dフォーマット用倍精度実数配列
[in]Lフォーマット用論理配列
[in]nフォーマット用整数配列
[in]c1フォーマット用文字列1
[in]c2フォーマット用文字列2
[in]c3フォーマット用文字列3
[in]caフォーマット用文字列配列
[in]rank_mpiMPI 使用時に、ここで指定されたランク数のノードでのみ メッセージ出力を行います。負の値を与えた場合には、 全てのノードで出力を行います。MPI を使用していない場合には無視されます。

Definition at line 232 of file dc_message.f90.

234 use dc_types ,only: dp
235 use dc_string ,only: cprintf
236 use dc_error ,only: storeerror
237 implicit none
238 integer, intent(in) :: number
239 character(*), intent(in) :: where
240 character(*), intent(in), optional:: message
241 integer , intent(in), optional:: i(:), n(:)
242 real , intent(in), optional:: r(:)
243 real(DP) , intent(in), optional:: d(:)
244 logical , intent(in), optional:: L(:)
245 character(*), intent(in), optional:: c1, c2, c3
246 character(*), intent(in), optional:: ca(:)
247 integer , intent(in), optional:: rank_mpi
248 continue
249 if ( invalid_rank_number( rank_mpi ) ) return
250 if (.not. present(message)) then
251 call storeerror(number, where)
252 else
253 call storeerror(number, where, &
254 & cause_c=cprintf( message, &
255 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca ) )
256 endif
257 return

References dc_types::dp, and dc_error::storeerror().

Here is the call graph for this function:

The documentation for this interface was generated from the following file: