パブリック・タイム・サーバーに同期する
Question
要件として、作成されたタイムスタンプが公式の UTC 時間とせいぜい 5 分ほどしか違わない Web サービスを使用しています。API CEEUTC で IBM i の現在の時間を UTC 時間に変換します。問題になるのは i (sysval qtime) の時間が正確な時間と違いすぎる場合です。正確な時間を同期してくれる、信頼できるパブリック Web サービスはないでしょうか。
Answer
IBM i SNTP クライアントを使用して、ローカル Windows Active Directory サーバーに同期し、その時間を ntp.org にあるパブリック・タイム・サーバーに同期するようそのサーバーを設定できます。あるいは、セキュリティー面で心配ですが、IBM i SNTP クライアントを直接パブリック・タイム・サーバーにアクセスするよう設定できます。
IBM i SNTP 設定のコマンドは次のとおりです。
CHGNTPA RMTSYS('0.pool.ntp.org' '1.pool.ntp.org' '2.pool.ntp.org')
AUTOSTART(*YES) POLLITV(720)
次の STRTCP コマンドや IPL を待たずにすぐに開始したい場合は、次のように入力できます。
STRTCPSVR *NTP
pool.ntp.org サービスは、世界各国のタイム・サーバーの IP アドレスをランダムに戻すため、時間の精度は理想的とは言えません。north-america.pool.ntp.org または asia.pool.ntp.org など、大陸ゾーンを使用すれば、それよりも良い結果が得られます。us.ntp.org などの国ゾーンを使用すればさらに良くなります。これらのゾーンについては、0.ch.pool.ntp.org など 0、1、または 2 の接頭部を使用できます。
POLLITV(720) により SNTP は、クロックが正しい時間からずれた場合に、システム・クロックを 12 時間ごと (720 分 = 12 時間) に更新します。チェック頻度の高低はそのパラメーターで調整できます。