(57)【要約】【課題】ファイバチャネルカードの送信部における異常を早期に検出する。【解決手段】計数部２０２が接続要求信号の受信回数を計数し、計数部２０２が計数する受信回数が所定の閾値以上である場合に、障害通知部２０８が障害発生を示す障害通知信号を計算機に出力する。【選択図】図１
2010193270.tif 000002
【特許請求の範囲】
【請求項１】
計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置であって、
前記他の装置から自装置への接続を要求する接続要求信号を受信する受信手段と、
前記受信手段が受信した接続要求信号の受信回数を計数する計数手段と、
前記計数手段が計数する受信回数が所定の閾値以上であるか否かを判定する判定手段と、
前記判定手段によって前記計数手段が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信する送信手段と、
前記判定手段によって前記計数手段が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する障害通知手段と、
を備えることを特徴とする通信制御装置。
【請求項２】
前記受信手段は、前記接続要求信号の他に前記他の装置から当該他の装置と前記通信制御装置との接続を確立したことを示す接続確立信号を受信し、
前記計数手段は、前記障害通知手段による障害通知信号の出力に次いで前記受信手段が接続要求信号を受信した場合、または前記受信手段による前記接続確立信号の受信に次いで前記受信手段が接続要求信号を受信した場合に、当該接続要求信号の受信回数を１回目として計数する、
ことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記通信制御装置の状態を記憶する状態記憶手段と、
前記受信手段が前記接続要求信号を受信した場合に、前記状態記憶手段が記憶する状態を、前記他の装置との接続を待機していることを示す待機状態に書き換える待機状態遷移手段と、
前記障害通知手段が障害通知信号を出力した場合に、前記状態記憶手段が記憶する状態を、前記他の装置との接続が切断していることを示す切断状態に書き換える切断状態遷移手段と、
前記受信手段が前記接続確立信号を受信した場合に、前記状態記憶手段が記憶する状態を、前記他の装置と接続していることを示す接続状態に書き換える接続状態遷移手段と、
前記待機状態遷移手段が、前記状態記憶手段が記憶する状態を切断状態または接続状態から待機状態に遷移させた場合に、前記計数手段が計数する受信回数をリセットするリセット手段と、
を備えることを特徴とする請求項２に記載の通信制御装置。
【請求項４】
前記障害通知手段が障害通知信号を出力した場合、または前記受信手段が接続確立信号を受信した場合に、前記計数手段が計数する受信回数をリセットするリセット手段、
を備えることを特徴とする請求項２に記載の通信制御装置。
【請求項５】
前記受信手段が前記接続要求信号を受信した時刻からの経過時間を計時する計時手段と、
前記受信手段が前記接続要求信号を受信した時刻で前記計時手段が計時する経過時間が所定の時間以上である場合に、前記計数手段が計数する受信回数をリセットするリセット手段、
を備えることを特徴とする請求項１に記載の通信制御装置。
【請求項６】
計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置を用いた障害検出方法であって、
受信手段は、前記他の装置から自装置への接続を要求する接続要求信号を受信し、
計数手段は、前記受信手段が受信した接続要求信号の受信回数を計数し、
判定手段は、前記計数手段が計数する受信回数が所定の閾値以上であるか否かを判定し、
送信手段は、前記判定手段によって前記計数手段が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信し、
障害通知手段は、前記判定手段によって前記計数手段が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する、
ことを特徴とする障害検出方法。
【請求項７】
計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御回路であって、
前記他の装置から自装置への接続を要求する接続要求信号を受信する受信回路と、
前記受信手段が受信した接続要求信号の受信回数を計数する計数回路と、
前記計数手段が計数する受信回数が所定の閾値以上であるか否かを判定する判定回路と、
前記判定手段によって前記計数手段が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信する送信回路と、
前記判定手段によって前記計数手段が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する障害通知回路と、
を備えることを特徴とする通信制御回路。
【請求項８】
計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置を、
前記他の装置から自装置への接続を要求する接続要求信号を受信する受信手段、
前記受信手段が受信した接続要求信号の受信回数を計数する計数手段、
前記計数手段が計数する受信回数が所定の閾値以上であるか否かを判定する判定手段、
前記判定手段によって前記計数手段が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信する送信手段、
前記判定手段によって前記計数手段が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する障害通知手段、
として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置、その障害検出方法、通信制御回路及びプログラム
【背景技術】
【０００２】
近年、磁気ディスク等の記憶装置と、当該記憶装置への入出力を行うホスト装置とのシステムインタフェースの高速化に伴い、ファイバチャネル（ＦＣ：Fibre Channel）によるデータ転送が検討されている。ファイバチャネルとは、計算機同士や計算機と記憶装置との接続等に使用される高速なインタフェース規格である。ファイバチャネルによる通信を行う場合、計算機や記憶装置にファイバチャネルカード等の通信制御装置を搭載し、ファイバチャネルカードを介して通信を行う。ファイバチャネルカードとは、計算機のバスに搭載され、ファイバチャネルのインタフェースとして機能するオプションカードである。
【０００３】
一般に、ファイバチャネルカードの障害を検出する方法としては、ファイバチャネルカードを搭載する計算機がＩ／Ｏ（Input/Output、入出力）タイムアウトにより障害を検出する方法と、ファイバチャネルカードの機能により障害を検出する方法との２種類に大別される。ここで、Ｉ／Ｏタイムアウトとは、計算機がＩ／Ｏ命令の発行または取得を契機に当該Ｉ／Ｏ命令に対する応答を監視し、所定の時間内にＩ／Ｏ命令に対する応答を検出できなかった場合にウォッチドッグタイマなどによってリセットを行う処理を言う。
【０００４】
従来、ファイバチャネルカードにおける受光部の障害の検出は、障害検出部等が、受光部が受信した光信号を取得し、光信号が所定の光レベル以上であるか否か、または光信号に符号誤りがあるか否かを判定することにより行っていた。
他方、発光部の障害の検出は、ファイバチャネルカードを搭載する計算機のＩ／Ｏタイムアウトによって障害検出を行っていた。
【０００５】
また、特許文献１に、ファイバチャネルスイッチの接触不良障害を検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２７４１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ファイバチャネルカードの受光部の障害は、従来の手法によって早期に検出することができた。しかしながら、ファイバチャネルカードの発光部の障害は、計算機のＩ／Ｏタイムアウトによって検出されるため、障害の発生から検出までに長い時間を必要としていた。その理由としては、計算機のＩ／Ｏタイムアウト時間は、計算機の管理者がファイバチャネルカードと計算機との接続部や通信ケーブルの故障のほか、接続先装置の一時的なレスポンス低下等の理由も考慮して設定する必要があるために長い時間となってしまうからである。
【０００８】
本発明は上記の点に鑑みてなされたものであり、その目的は、ファイバチャネルカード等の通信制御装置の送信部の異常を早期に検出する通信制御装置、障害検出方法、通信制御回路及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明は上記の課題を解決するためになされたものであり、計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置であって、前記他の装置から自装置への接続を要求する接続要求信号を受信する受信部と、前記受信部が受信した接続要求信号の受信回数を計数する計数部と、前記計数部が計数する受信回数が所定の閾値以上であるか否かを判定する判定部と、前記判定部によって前記計数部が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信する送信部と、前記判定部によって前記計数部が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する障害通知部と、を備えることを特徴とする。
【００１０】
また、本発明は、計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置を用いた障害検出方法であって、受信部は、前記他の装置から自装置への接続を要求する接続要求信号を受信し、計数部は、前記受信部が受信した接続要求信号の受信回数を計数し、判定部は、前記計数部が計数する受信回数が所定の閾値以上であるか否かを判定し、送信部は、前記判定部によって前記計数部が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信し、障害通知部は、前記判定部によって前記計数部が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する、ことを特徴とする。
【００１１】
また、本発明は、計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御回路であって、前記他の装置から自装置への接続を要求する接続要求信号を受信する受信回路と、前記受信部が受信した接続要求信号の受信回数を計数する計数回路と、前記計数部が計数する受信回数が所定の閾値以上であるか否かを判定する判定回路と、前記判定部によって前記計数部が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信する送信回路と、前記判定部によって前記計数部が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する障害通知回路と、を備えることを特徴とする。
【００１２】
また、本発明は、計算機に搭載され、前記計算機と通信回線を介して接続された他の装置との通信を媒介する通信制御装置を、前記他の装置から自装置への接続を要求する接続要求信号を受信する受信部、前記受信部が受信した接続要求信号の受信回数を計数する計数部、前記計数部が計数する受信回数が所定の閾値以上であるか否かを判定する判定部、前記判定部によって前記計数部が計数する受信回数が前記閾値未満であると判定された場合に、前記接続要求信号に対する応答信号を前記他の装置に送信する送信部、前記判定部によって前記計数部が計数する受信回数が前記閾値以上であると判定された場合に、障害発生を示す障害通知信号を前記計算機に出力する障害通知部、として動作させるためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、通信制御装置の計数部が、接続要求信号の受信回数を計数し、計数部が計数する受信回数が所定の閾値以上である場合に、障害通知部が障害発生を示す障害通知信号を計算機に出力する。これにより、計算機のＩ／Ｏタイムアウトによらず、通信制御装置の機能によって送信部の障害を検出することができるため、早期に障害の検出を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態によるファイバチャネルカードの構成を示す概略ブロック図である。
【図２】ファイバチャネルカードの動作を示す第１のフローチャートである。
【図３】ファイバチャネルカードの動作を示す第２のフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図１は、本発明の一実施形態によるファイバチャネルカードの構成を示す概略ブロック図である。
ファイバチャネルカード２００（通信制御装置）は、計算機１００に搭載されており、計算機１００のバス１２０を介してＣＰＵ（Central Processing Unit：中央処理装置）１１０に接続されている。
ファイバチャネルカード２００は、受光部２０１（受信手段）、計数部２０２（計数手段）、判定部２０３（判定手段）、発光部２０４（送信手段）、状態遷移部２０５（待機状態遷移手段、切断状態遷移手段、接続状態遷移手段）、状態記憶部２０６、リセット部２０７（リセット手段）、障害通知部２０８（障害通知手段）、接続部２０９を備える。
受光部２０１は、通信回路を介して接続される他の装置から光信号を受信する。
計数部２０２は、受光部２０１が他の装置からファイバチャネルカード２００との接続を要求する接続要求信号を受信した受信回数を計数する。
判定部２０３は、計数部２０２が計数する接続要求信号の受信回数が所定の閾値（例えば１２７回）以上であるか否かを判定する。
発光部２０４は、通信回路を介して他の装置に光信号を送信する。
状態遷移部２０５は、判定部２０３の判定結果及び受光部２０１が受信する光信号に基づいて状態記憶部２０６が記憶するファイバチャネルカード２００の状態を遷移させる。
状態記憶部２０６が記憶するファイバチャネルカード２００の状態は、他の装置との接続を待機していることを示す待機状態、他の装置との接続が切断していることを示す切断状態、または他の装置と接続していることを示す接続状態のいずれか１つを示す。なお、状態記憶部２０６は、状態の初期値として切断状態を記憶している。
リセット部２０７は、計数部２０２が計数する接続要求信号の受信回数をリセットする。
障害通知部２０８は、発光部２０４の障害発生を計算機１００のＣＰＵ１１０に通知する。
接続部２０９は、計算機１００のバス１２０に接続し、計算機１００とのデータの収受を行う。
【００１６】
そして、ファイバチャネルカード２００においては、受光部２０１は、他の装置から当該他の装置とファイバチャネルカード２００との接続を要求する接続要求信号を受信し、計数部２０２は、受光部２０１が受信した接続要求信号の受信回数を計数し、判定部２０３は、計数部２０２が計数する受信回数が所定の閾値以上であるか否かを判定する。
判定部２０３によって計数部２０２が計数する受信回数が閾値未満であると判定された場合、発光部２０４は、接続要求信号に対する応答信号を他の装置に送信する。
他方、判定部２０３によって計数部２０２が計数する受信回数が閾値以上であると判定された場合、障害通知部２０８は、障害発生を示す障害通知信号を計算機１００に出力する。
これにより、ファイバチャネルカード２００は、発光部２０４の異常を早期に検出することができる。
【００１７】
次に、ファイバチャネルカード２００の動作を説明する。
図２は、ファイバチャネルカードの動作を示す第１のフローチャートである。
まず、他の装置がファイバチャネルカード２００に、自装置とファイバチャネルカード２００との接続を要求する接続要求信号を送信すると、受光部２０１は、他の装置から接続要求信号を受信する（ステップＳ１）。受光部２０１が接続要求信号を受信すると、状態遷移部２０５は、状態記憶部２０６が記憶するファイバチャネルカード２００の状態を取得し、状態が待機状態であるか否かを判定する（ステップＳ２）。
【００１８】
状態遷移部２０５は、状態記憶部２０６が記憶する状態が待機状態でない場合、すなわち接続状態または切断状態のいずれかである場合（ステップＳ２：ＮＯ）、状態記憶部２０６が記憶する状態を待機状態に書き換える（ステップＳ３）。状態遷移部２０５が、状態記憶部２０６が記憶する状態を待機状態に書き換えると、リセット部２０７は、計数部２０２が計数し、メモリ（図示せず）に格納されている受信回数を０回にリセットする（ステップＳ４）。
【００１９】
ステップＳ２で状態遷移部２０５が、状態記憶部２０６が記憶する状態が待機状態であると判定した場合（ステップＳ２：ＹＥＳ）、またはステップＳ４でリセット部２０７が、計数部２０２が計数する受信回数をリセットした場合、計数部２０２は、メモリに格納されている受信回数を、当該受信回数に１を加算した値に更新する（ステップＳ５）。
計数部２０２が受信回数を加算すると、判定部２０３は、計数部が計数する受信回数が所定の閾値（例えば１２７回）以上であるか否かを判定する（ステップＳ６）。
【００２０】
判定部２０３が、計数部が計数する受信回数が所定の閾値未満であると判定した場合（ステップＳ６：ＮＯ）、発光部２０４は、他の装置に接続要求信号に対する応答信号を送信する（ステップＳ７）。発光部２０４が応答信号を送信すると、受光部２０１は、他の装置から、他の装置が応答信号を受信し、接続を確立したことを示す接続確立信号の受信を受け付ける（ステップＳ８）。
【００２１】
受光部２０１が接続確立信号を受信した場合（ステップＳ８：ＹＥＳ）、状態遷移部２０５は、状態記憶部２０６が記憶する状態を接続状態に書き換える（ステップＳ９）。以降、ファイバチャネルカードの受光部２０１及び発光部２０４は、接続部２０９を介して計算機１００のＣＰＵ１１０が出力する命令に従って信号を送信する。これによって、ファイバチャネルカード２００は、計算機１００と他の装置との通信を媒介することができる。
他方、受光部２０１が接続確立信号を受信しなかった場合（ステップＳ８：ＮＯ）、ステップＳ１に戻り、再度他の装置から接続要求信号の受信を受け付ける。
【００２２】
また、ステップＳ６で判定部２０３が、計数部が計数する受信回数が所定の閾値以上であると判定した場合（ステップＳ６：ＹＥＳ）、障害通知部２０８は、接続部２０９を介して計算機１００のＣＰＵ１１０に発光部の障害発生を通知する割り込み信号を出力する（ステップＳ１０）。障害通知部２０８が障害発生を通知すると、状態遷移部２０５は、状態記憶部２０６が記憶する状態を切断状態に書き換える（ステップＳ１１）。
【００２３】
このように、本実施形態によれば、計数部２０２が接続要求信号の受信回数を計数し、計数部２０２が計数する受信回数が所定の閾値以上である場合に、他の装置から接続確立信号を受信できていないため、障害通知部２０８が障害発生を示す障害通知信号を計算機に出力する。これにより、計算機のＩ／Ｏタイムアウトによらず、通信制御装置の機能によって送信部の障害を検出することができるため、早期に障害の検出を行うことができる。
【００２４】
また、本実施形態によれば、状態遷移部２０５が、状態記憶部２０６が記憶する状態を接続状態または切断状態から待機状態に書き換えると、リセット部２０７は、計数部２０２が計数する受信回数を０回にリセットする。これにより、計数部２０２は、障害通知部２０８による障害通知信号の出力、または前記受信部２０１による接続確立信号の受信に次いで受信部２０１が接続要求信号を受信した場合に、接続要求信号の受信回数を１回目として計数する。そのため、計数部２０２は、受光部２０１が連続して接続確立信号を受信した場合にのみ計数部２０２が受信回数を計数することができるため、一時的なレスポンス低下等によって不連続で接続要求信号を所定の閾値以上受信した場合に障害通知部２０８が障害通知を出力することを防ぐことができる。
【００２５】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
例えば、本実施形態では、通信制御装置の例としてファイバチャネルカード２００を用いる場合を説明したが、これに限られず、他の通信制御装置を用いても良い。
【００２６】
なお、本実施形態では、障害通知部２０８による障害通知信号の出力、または前記受信部２０１による接続確立信号の受信に次いで受信部２０１が接続要求信号を受信した場合に、計数部２０２に接続要求信号の受信回数を１回目として計数させる方法として、状態遷移部２０５が、状態記憶部２０６が記憶する状態を接続状態または切断状態から待機状態に遷移させた場合にリセット部２０７が、計数部２０２が計数する受信回数を０回にリセットする場合を説明したが、これに限られず、例えば以下に説明するように状態記憶部２０６が記憶する状態を用いない方法でも良い。
【００２７】
図３は、ファイバチャネルカードの動作を示す第２のフローチャートである。
まず、他の装置がファイバチャネルカード２００に、接続要求信号を送信すると、受光部２０１は、他の装置から接続要求信号を受信する（ステップＳ２１）。受光部２０１が接続要求信号を受信すると、計数部２０２は、メモリが格納する受信回数に１を加算する（ステップＳ２２）。計数部２０２が受信回数を加算すると、判定部２０３は、計数部が計数する受信回数が所定の閾値以上であるか否かを判定する（ステップＳ２３）。
【００２８】
判定部２０３が、計数部が計数する受信回数が所定の閾値未満であると判定した場合（ステップＳ２３：ＮＯ）、発光部２０４は、他の装置に応答信号を送信する（ステップＳ２４）。発光部２０４が応答信号を送信すると、受光部２０１は、他の装置から接続確立信号の受信を受け付ける（ステップＳ２５）。
【００２９】
受光部２０１が接続確立信号を受信した場合（ステップＳ２５：ＹＥＳ）、リセット部２０７は、メモリが格納する受信回数を０にリセットする（ステップＳ２６）。これにより、前記受信部２０１による接続確立信号の受信に次いで受信部２０１が接続要求信号を受信した場合に、計数部２０２に接続要求信号の受信回数を１回目として計数させることができる。
【００３０】
他方、受光部２０１が接続確立信号を受信しなかった場合（ステップＳ２５：ＮＯ）、ステップＳ２１に戻り、再度他の装置から接続要求信号の受信を受け付ける。
【００３１】
また、ステップＳ２３で判定部２０３が、計数部が計数する受信回数が所定の閾値以上であると判定した場合（ステップＳ２３：ＹＥＳ）、障害通知部２０８は、接続部２０９を介して計算機１００のＣＰＵ１１０に発光部の障害発生を通知する割り込み信号を出力する（ステップＳ２７）。障害通知部２０８が障害発生を通知すると、リセット部２０７は、メモリが格納する受信回数を０回にリセットする（ステップＳ２８）。これにより、障害通知部２０８による障害通知信号の出力に次いで受信部２０１が接続要求信号を受信した場合に、計数部２０２に接続要求信号の受信回数を１回目として計数させることができる。
【００３２】
なお、本実施形態では、障害通知部２０８による障害通知信号の出力、または前記受信部２０１による接続確立信号の受信に次いで受信部２０１が接続要求信号を受信した場合に、計数部２０２に接続要求信号の受信回数を１回目として計数させる場合を説明したが、これに限られず、例えば、受光部２０１が接続要求信号を受信した時刻からの経過時間を計時する計時手段（図示せず）を備え、受信部２０１が接続要求信号を受信した時刻で計時手段が計時する経過時間が所定の時間以上である場合に、リセット部２０７が、メモリに格納されている受信回数をリセットしても良い。このとき、所定の時間を、他の装置が応答信号を受信できなかった場合に再度接続要求信号を送信するまでの時間よりも長くすることで、上述した実施形態と同様の効果を得ることができる。
【００３３】
上述のファイバチャネルカードは内部に、コンピュータシステムを有している。そして、上述した各処理部の動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００３４】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００３５】
１００…計算機  １１０…ＣＰＵ  １２０…バス  ２００…ファイバチャネルカード  ２０１…受光部  ２０２…計数部  ２０３…判定部  ２０４…発光部  ２０５…状態遷移部  ２０６…状態記憶部  ２０７…リセット部  ２０８…障害通知部  ２０９…接続部
【図１】
2010193270.tif 000003
【図２】
2010193270.tif 000004
【図３】
2010193270.tif 000005