gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
Public Member Functions | List of all members
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 60 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 142 of file dc_message.f90.

144 use dc_types ,only: string, dp
145 use dc_string ,only: uchar, strhead, printf, cprintf
146 use dc_error ,only: storeerror, usr_errno
147 implicit none
148 character(*), intent(in) :: level
149 character(*), intent(in) :: where
150 character(*), intent(in) :: message
151 integer , intent(in), optional:: i(:), n(:)
152 real , intent(in), optional:: r(:)
153 real(DP) , intent(in), optional:: d(:)
154 logical , intent(in), optional:: L(:)
155 character(*), intent(in), optional:: c1, c2, c3
156 character(*), intent(in), optional:: ca(:)
157 integer , intent(in), optional:: rank_mpi
158 character(string) :: msg
159 continue
160 if ( invalid_rank_number( rank_mpi ) ) return
161 if ( strhead( 'ERROR', trim( uchar(level) ) ) ) then
162 msg = cprintf(message, &
163 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca)
164 call storeerror(usr_errno, where, cause_c=msg)
165 elseif ( strhead( 'WARNING', trim( uchar(level) ) ) ) then
166 msg = cprintf(message, &
167 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca)
168 msg=' *** WARNING [' // trim(where) // '] *** '// trim(msg)
169 call printf(fmt='%c', c1=msg)
170 else
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=' *** MESSAGE [' // trim(where) // '] *** ' // trim(msg)
174 call printf(fmt='%c', c1=msg)
175 endif
176 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 dp
倍精度実数型変数
Definition dc_types.f90:92
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137

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 227 of file dc_message.f90.

229 use dc_types ,only: dp
230 use dc_string ,only: cprintf
231 use dc_error ,only: storeerror
232 implicit none
233 integer, intent(in) :: number
234 character(*), intent(in) :: where
235 character(*), intent(in), optional:: message
236 integer , intent(in), optional:: i(:), n(:)
237 real , intent(in), optional:: r(:)
238 real(DP) , intent(in), optional:: d(:)
239 logical , intent(in), optional:: L(:)
240 character(*), intent(in), optional:: c1, c2, c3
241 character(*), intent(in), optional:: ca(:)
242 integer , intent(in), optional:: rank_mpi
243 continue
244 if ( invalid_rank_number( rank_mpi ) ) return
245 if (.not. present(message)) then
246 call storeerror(number, where)
247 else
248 call storeerror(number, where, &
249 & cause_c=cprintf( message, &
250 & i=i, r=r, d=d, l=l, n=n, c1=c1, c2=c2, c3=c3, ca=ca ) )
251 endif
252 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: