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

BOOKをみる

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


66  1 画面に20 件を表示する場合、内部 テーブルの1 番目から20 番目までを最 初に抽出する。その方法も、テーブルに 保管した時と同様に「OCUR」命令を使 用し、演算項目1 に1 から20 までを繰 り返しセットして、画面に表示する内容 として取り出す。  JACi400 はデータを取り出してしま えば、画面への送信はあらかじめ準備さ れているので、新たにロジックを組み込 む必要はなく簡単である。  また、画面へデータを送信した後に、 ページ番号を選択し他ページに遷移する 場合も、内部テーブルの何番目から何番 目と指定して取り出すだけなので、やは り簡単である。【図3】  以上が、表示件数のパフォーマンス制 御を実装する際のポイントである。  なお、内部テーブルを使用することで、 次のようなメリットがあることも強調し ておきたい。 ● ファイルの読み込みや書き込み処理を しないので、ワークファイル(中間 ファイル)に対象レコードを保管する よりも早い。 ● 簡単に早く対象レコードを抽出するこ とができるので、ページの画面遷移が 早い。  しかし、内部テーブルを使用するとレ コードの上限が決まってしまうというこ ともあるので、選択は実際の状況に合わ せて判断しなければならない。 Delphi/400 プログラム との連携  RPG でパフォーマンスの制御ができ れば、Delphi/400 のプログラムと連携 する方法を紹介しておく。  基本は前述したとおり、RPG で作成 されたワークファイルからDelphi/400 でデータを取得して画面に表示するもの で、順次読み込みをする場合は、 Delphi/400 の画面で「続きの検索」処 理を組み込む必要がある。  まず画面に「検索」ボタンと「続きの 検索」ボタンを用意する。画面起動時は 「検索」ボタンを有効にし、「続きの検索」 は使用不可の状態にしておく。検索を実 行するとRPG プログラムを呼び出すの だが、その時にRPG から続きの処理の 有無をパラメータでもらうようにする。  例えば、”1”:続き有り、”2”:処理完 了、”9”:対象データなしと設定し、こ の値によって、用意したボタンを制御す るのである。続きがあれば「続きの検索」 ボタンを有効にし、続きがなく完了であ ればそのまま使用不可とし、処理完了の 内容を表示するといった具合だ。  とてもシンプルな内容なので、ぜひ試 していただきたい。 JACi400 プログラムと の連携  次に、JACi400 での実装方法を紹介 する。  JACi400 では前述したとおり、表示 件数で制御することが一般的となる。画 面で表示する件数を固定するか、画面で ユーザーが選択できるようにする。  ユーザーが選択する場合も、プルダウ ンリストで20 件、50 件とリストを決め ておくほうがよいだろう。その画面の表 示件数をもとに、対象の全レコード数か らページ数を計算し画面に表示する。表 示件数が20 件、対象レコードが80 件 であれば、画面に1 から4 ページを選択 できるようにするのである。  そしてページ番号を選択すると、 JACi400 ではアクションコード(設定 したコード)がRPG に渡されるので、 そのコードで内部テーブルから抽出する レコードを判断し、必要なぶんだけを画 面に送信するのである。  画面に表示する1 レコードの項目数が 多い場合は、同じ20 レコードでも通信 するデータ量が増え、処理に時間がか かってしまうので注意が必要であること 補足しておく。 最後に  以上、一覧照会のテクニックとして紹 介したが、処理速度(パフォーマンス) に悩む開発者の方々に少しでもヒントに なれば幸いである。RPG とDelphi/400、 JACi400 をうまく連携させて、今後も より使いやすいシステムを提供し紹介し ていきたいと思う。 M 現在の仕事内容(詳細) 主にJACi400 を使ったWeb アプリケーションの開 発を担当しており、システムの要件定義から納品・ フォローまでを行っている。 以前はRPG プログラムの開発を担当していたこと もあり、JACi400 の開発フェーズでは、RPG プロ グラム開発の管理を行っている。また、HA ツール である*noMAX の技術サポートも担当している。