【DO!BOOK・ページリンク】
2009_migaro_techreport_001   62 / 80

BOOKをみる

10秒後にBOOKのページに移動します


60 ンポーネントなどで出力したファイルを 読み込めば、Query の実行結果を画面 に表示することができる。  なお、出力ファイルをQtemp 上で扱 うことで、出力ファイルの削除などの後 処理を不要としている。【図5】  この仕組みのコーディングは、図6 の ように非常に簡単に実現することができ る。【図6】  ポイントとしては、2 回目以降の実行 のことを考慮して、RUNQRY コマンド で*RPLFILE を指定しておく。これに より、同じQuery を実行した場合、結 果ファイルを上書きするようにできる。 また、RUNQRY コマンド実行時にファ イルがつかまれているとエラーの原因と なる。そのため、処理の最初に、 TTable コンポーネント(このサンプル コードではtblQRY)はClose しておく 必要がある。 3.scdtoolsユニットの 活用 3-1.scdtoolsとは  Delphi/400 には、TFile400 コンポー ネントのLibraryName プロパティで、 ライブラリのリストを検索するダイアロ グが表示されて選択できる機能がある。  この機能は設計画面上の動作だが、 Delphi/400 で実現できる。こうした機 能を利用するために、Delphi/400 が提 供しているのが「scdtools」である。 3-2.scdtoolsの使い方  「scdtools」はコンポーネントではな く、共通関数を提供するユニットとして 存在する。「scdtools」に用意されてい る主な関数を図7 に示す。パラメータな ど詳しい使い方は、HELP のscdtools にも記載されている。【図7】  ここでは、ライブラリのリストを取得 する例で基本的な活用方法を説明する。 「scdtools」のTcGetListLib という関 数を活用することで、簡単にライブラリ のリストを取得することができる。  次のようなプログラムを作ってみよう。 @ Uses 節にscdtools を追記。 A TAS400、TComboBox を画面に配置。 B FormCreate のイベントにプログラ ムを記述。【図8】  画面を起動すると、コンボボックスに ライブラリのリストが表示できる。これ によって、画面からユーザーが使用する ライブラリを選択して、指定することが 可能になる。【図9】  また上記はライブラリのリスト取得の 例であるが、同様の使い方でファイルや メンバ、データエリア、データキュー、 アウトキュー、プログラムなどのオブ ジェクトのリストを取得することもでき る。動的なプログラムを作成する場合に 非常に便利である。 3-3.scdtoolsの応用活用例  この「scdtools」のオブジェクトリス トの取得を応用して、スプールファイル の照会画面を作成しよう。完成画面は図 10 に示す。【図10】  このスプールファイルを照会する画面 を作るためには、次の機能の実装が必要 となる。 @ライブラリのリスト取得 Aアウトキューのリスト取得 Bスプールのリスト取得 Cスプールの取得  以下順番に、仕組みとコーディングの サンプルを提示する。 @ライブラリのリスト取得 (TComboBox のリストに設定)  これは「scdtools」のTcGetListLib 関数で取得することができる。前述(3-2) をそのまま参考にして実装が可能である。 Aアウトキューのリスト取得 (TComboBox のリストに設定)  これは「scdtools」のTcGetListOutqueue 関数で取得することができる。関数の使 用方法はTcGetListLib 関数とほぼ同 じ。パラメータに、アウトキューを取得 する対象のライブラリが増えているだけ である。【図11】 Bスプールのリスト取得  スプールリストの取得には、Delphi/ 400 で専用のTListSpool400 というコン ポーネントが用意されているので、これ が利用できる。  TListSpool400 コンポーネントのプロ パティで、ライブラリとアウトキューを 設定する必要がある。@Aのコンボボッ クスで選択されている値を設定して、 Active プロパティをTrue にして接続 すれば、TTable のようなデータセット の形でスプールのリストデータを取得す ることができる。【図12】  これはTDataSource、TDBGrid コ ンポーネントでそのまま画面に表示する ことができる。 Cスプールの取得  最後にスプール情報の取得には、これ もDelphi/400 で専用のTSpool400 と いうコンポーネントが用意されているの で、これを利用する。  TSpool400 コンポーネントのプロパ ティで、スプール名、スプールナンバー、 ジョブ名、ジョブナンバー、ユーザー名 を設定する必要がある。これらの情報は Bで取得しているTListSpool400 コン ポーネントですべて項目として持ってい るので、その値をプロパティに転送する だけである。【図13】  そして、TListSpool400 も同様に、 Active プロパティをTrue にして接続 すれば、Spool のデータを取得できる。 これもTDataSource、TDBGrid コンポ ーネントでそのまま画面に表示する。  以上で、スプールファイルの照会画面 が完成である。【図10】 4.まとめ  このようにDelphi/400 を使用する際 にひと工夫すると、IBM i のネイティ ブ資産の活用範囲をさらに広げることが できる。どれもSQL などでは実現が難 しい内容だが、Delphi/400 のネイティ ブコマンドやコンポーネントを使用する ことで簡単に実現することができる。  本稿では、よく使われる実践的な応用 テクニックを紹介した。Delphi/400 で のアプリケーション開発時に、IBM i の資産をより有効に活用する参考にして いただきたい。 M