最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

5.10.汎用選択ウインド

[ Previous ] [ HOME ] [ Upper ] [ Next ]


例えば、オーダー入力で、xxxコードの入力のフィールドのところで、F4を押すと入力候補画面をウィンドウで出したい時ありませんか。あれをいちいち、マスターごとにプログラムを作るのに嫌気がさした私は、QRYのように、事前定義をファイルに登録しておくと、選択画面が出てくるものを作りました。

スペック

  1. 事前定義により、対象ファイル、表示フィールド、選択時の戻しフィールドなどを指定
  2. 指定内容を、ウィンドウにて、表示
  3. オペレータが選択すると、選択内容が値として、パラメータで戻される

このプログラムを呼び出すプログラムは、DDSキーワードRTNCSRLOCにより、F4が押された時のレコード様式名、フィールド名を取り出し、これから、どのような定義の「汎用選択画面」を出すか決定します。

サンプル

定義開始の画面
wrkslt1.gif (15156 バイト)

定義中の画面
wrkslt2.gif (10205 バイト)

定義確認画面
wrkslt3.gif (15244 バイト)

選択後の内容検査画面
wrkslt4.gif (13259 バイト)

実行中の画面
wrkslt5.gif (15539 バイト)

作成のポイント

以下は、最小限の機能としての、作成上のポイントです。

定義部分

定義を取り込むファイルは、以下を含む

見出ファイル

  • 定義ID
  • ファイル名
  • ファイルライブラリー名
  • レコード識別コード
  • 表示ウインドウのタイトル

明細ファイル

  • 定義ID(11バイトの方がいいと思う。最大ファイル名+1バイト)
  • 表示フィールドの表示順
  • 表示フィールドのフィールド属性とその開始終了位置(バッファー位置のこと)
  • 戻しフィールドの戻し順
  • 戻しフィールドのフィールド属性とその開始終了位置
  • 表示フィールドが数字の場合の編集コードや編集語
  • 表示フィールドのタイトル
  • 表示フィールドの表示間隔

また、ファイルのレイアウト変更によるチェックは、現在のレコード様式コードと、定義中のレコード様式コードを元に行う。(実は、自分は作成時にこの点を見逃していた。スペックのバグです。未対応です。むむむ。

表示部分

定義ファイルを元に、

  • 対象ファイルのレコードを読み込む(内部記述;複数のレコード様式名を持つファイル(複合ファイル)はサポートできない)
  • レコードを1バイトの配列要素に取り込み、表示フィールドの順番どおりに、バッファ単位に、データを取り出す。(、もし、数字で編集を指定されていたら、APIにて編集済み文字列に変換する。(パック化数字も、文字列に展開してくれる。)
  • ウィンドウ指定のサブファイルに書き出す。この時、表示間隔に気を付ける。これは、QRYの定義と同じ。(当初、ウィンドウサイズを自由に変えられると勘違いしていたが、DDSキーワードWINDOWSには表示場所は指定できるが、ウィンドウサイズそのものはDDS指定値以外変えられないので、仕方なく固定サイズにした。ASSUME,PUTOVR,OVERLAY,KEEPで出来るウインドウでは、サブファイルは指定できない。)
  • サブファイルに書き出す時に、戻しフィールドも順番どおりに、数字編集APIで、文字データに変換して、合成して、1フィールドにして、サブファイルのヒドンフィールドにセットしておく。
  • サブファイル表示をする。
  • もし、選択された場合は、そのサブファイルレコードのヒドンフィールドをパラメータにセットして返す。

表示プログラムへのパラメータ

  • 定義のID
  • 選択フィールドを出すかいなか
  • 選択後の戻り値

備考

当然、定義プログラムと、表示プログラムは別となる。他の人が使うことを考えて、パラメータは必要最小限にとどめる。

実行時

選択画面を出したいプログラム内部にCALL命令で、表示プログラムを呼び出す。この時、DDSキーワードRTNCSRLOCにより、F4が押された時のレコード様式名、フィールド名を取り出し、定義IDを選択します。(定義IDは通常ファイル名そのもの)。これだけで、選択ウインドウが出る。

強化

  • キー付きファイルの場合、キー指定を可能にする(パラメータにて指定)。
  • 簡単なデータセレクションを組み込む。早い話、読み飛ばしの指定。遅くなるので、本当はあまり指定したくないのですが、たまに使います。

ファイルレイアウト変更は、まだ未対応ですが、それ以外の部分は結構使えます。本当は、ウインドウサイズが可変になるといいのですが、それは今のところできません。OSが対応してくれるのを待ちます。また、表示位置は*DFTにすれば、現在のカーソル位置に近いところのウインドウが出ますので、便利です。


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送