AutoWeb

34. コンボボックス

AutoWebは様々なGUIコントロールをDSPFのDDS記述だけで表現することが
できます。
GUIコントロールが重要であるのはエンド・ユーザーに説明が要らないことです。
例えば 5250エミュレータで

受注区分」とか「処理区分」のような入力欄があったとします。

エンド・ユーザーはどのような値を入力すればよいのかわかりません。
しかしこれらがコンボボックスであればエンド・ユーザーは
プル・ダウンして候補の中から選べばよいということは
誰にでもわかります。
つまり説明が要らないということがGUIの最大の利点です。
これからGUIコントロールの作り方をこのシリーズで
いくつかご説明していきます。

※IBM iの古参の開発者でコンボボックスをプル・ダウン・メニューとか
呼ぶ人がいますがプル・ダウン・メニューという用語は存在しません。
コンボボックスとはMicrosoftが定めた正式な名称であり
エデットロ・コントロールとリスト・ボックスを合わせたものと
いう意味でコンボボックスと名づけられました。
ところがWebデザイナーでも本を読まない人はコンボボックスの名称を
知らない人が多いのも事実です。
きちんとコンボボックスという名称を把握しておけば
問題ありません。

■静的なコンボボックス

静的なコンボボックスとは候補が定数として決まっているコンボボックスのことです。
DSPFのDDSソースに次のように記述することで静的なコンボボックスとして
表示されます。

  A                                  8  2' 担当者 '
  A            JUTANT         4A  B  8 12VALUES('0001' '0002' '0003')
  A                                      TEXT('" 中村 " " 田中 " "鈴木"')

[解説]

DDSの VALUESパラメータに対応する表示をTEXTにすればコンボボックスとして
表示されます。
TEXTキー・ワードは50バイトまでしか入力できませんので
50バイトを超える表現はHTMLキー・ワードほ使って行うことができます。

■動的なコンボボックス

動的なコンボボックスはGUIコントロールの表現でRPGプログラマーが最も興味を
示すコントロールです。
 動的なコンボボックスとはデータ・ベースを読取って動的なコンボボックスに表現する
機能のことです。

        A            TKTNCD    R        B 12 25REFFLD(@TANTOM/TACODE QTRFIL/TANTOM)
        A                                      TEXT('*COMBO *KEY PROC="QTROBJ/P1")
        A            TTNAMJ    R        O    +2REFFLD(@TANTOM/TTNAMJ QTRFIL/TANTOM)
        A                                      TEXT('*COMBO *DATA')

[解説]

TKTNCD :担当者コード, TTNAMJ:担当者名 です。
REFFLD によってどのデータ・ベースのフィールドであるかわかります。
TEXT には *COMBO *KEY(コンボのキー) と *COMBO *DATA(コンボのデータ)であることを
宣言しています。
AutoWebはこれらの記述によってストアド・プロシージャーを内部で作って保存します。
次回以降はストアド・プロシージャーが自動的に呼び出されて非常に優れた
パフォーマンスでコンボボックスが形成されます。

さらにQUERY/400RPG/COBOLを使って動的なコンボボックスを生成することも
できます。

  また IBM iのDDSの基本機能ではサブ・ファイ・レコード(SFL)上にはコンボボックスなどの
GUIコントロールを作ることはできませんがAutoWebであれば SFLレコード上にも
自由にコンボボックスを表示することができます。