今回はDelphi/400から IBM i のSYSVAL値を取得する方法をご紹介いたします。
概要・設定方法
5250エミュレータ上では、DSPSYSVALというコマンドで
簡単にIBM i のSYSVAL値を照会することができます。
例えば、IBM i のCCSID設定を確認したい場合、次のようにコマンドを実行すれば、
画面上にシステム上のCCSIDを表示・確認することができます。
DSPSYSVAL SYSVAL(QCCSID)
しかし、このコマンドはあくまで5250エミュレータ上で表示するための表示コマンドなので、
Delphi/400のプログラムから結果をそのまま返却値として受け取ることはできません。
そのため、結果を受け取るためには RTVSYSVALというコマンドを利用します。
Delphi/400ではTCmd400コンポーネントを使うことで、
返却値を受け取るコマンドを実行することができます。
例えばCCSIDを取得したい場合には、TCmd400コンポーネントのParamsプロパティに
Aタイプの5桁のパラメータを1つ作成しておき、以下のように実行します。
{******************************************************************************* 目的: CCSID 取得ボタン *******************************************************************************} procedure TForm1.Button1Click(Sender: TObject); begin Cmd4001.CommandLine.Text := 'RTVSYSVAL SYSVAL(QCCSID) RTNVAR(&P.1)'; Cmd4001.Execute; ShowMessage(Cmd4001.Value[0]); end;
これだけでDelphi/400のアプリケーション内で IBM i のSYSVAL値を
取得することができます。
(上記例では「5026」「5035」といったメッセージが表示されます)
大体のSYSVAL値は文字列として受け取ることができるため、
Paramsプロパティのサイズを用途にあわせて設定して応用していただけます。
例えばSYSVAL値のQIPLDATTIMを取得することで、
次回IPLの日時を取得してバッチのスケジュールなどに利用することもできます。
(ミガロ.情報マガジン「MIGARO News!!」Vol.161 2014年4月号より)