画面・帳票サポートシステム XMAP3 プログラミングガイド


16.3.7 コンボボックス

コンボボックスの論理マップ生成規則とマッピング規則について説明します。

〈この項の構成〉

(1) コンボボックスの定義

コンボボックスは,選択されたデータや入力されたデータを表示するボックスと,入力するデータの候補を表示するメニューから成ります。

(2) コンボボックスの論理マップ生成規則とマッピング規則

(a) 項目属性の論理マップ生成規則とマッピング規則

コンボボックスの項目属性に関する論理マップ生成規則とマッピング規則について説明します。この論理マップは,コンボボックスダイアログで「動的変更(APから表示属性を変更する)」を選び,属性項目データ名を指定することで生成されます。

  • 論理マップ生成規則

    COBOL

    {02|03} マップ名-FIELDnnnn-A PIC X(長さ).

    C言語

    unsigned char マップ名_FIELDnnnn_A[長さ];

  • マッピング規則

    • APが制御項目に代入した内容と表示結果

    《「動的変更(APから表示属性を変更する)」を指定した場合》

    APが制御項目に代入した内容

    マッピングオプション

    表示結果

    修飾名と同じ

    マージ

    コンボボックスの修飾名に対応する属性を使って表示する。

    先頭にデータ有無コード,または

    修飾名以外(上記以外)

    標準の属性を使って表示する。

    修飾名と同じ

    論理マップ

    コンボボックスの修飾名に対応する属性を使って表示する。

    先頭にデータ有無コード,または

    修飾名以外(上記以外)

    (表示形態が「全面書換」の場合)

    標準の属性を使って表示する。

    (表示形態が「一部上書」で直前に表示したマップと同じ場合)

    前回の属性をそのまま表示する。

    (表示形態が「一部上書」で直前に表示したマップと異なる場合)

    標準の属性を使って表示する。

    物理マップ

    標準の属性を使って表示する。

    (凡例)

    −:該当しない。

    修飾名と修飾名に対応したテキスト・フィールド変更属性情報は,ドローセットアップの「表示属性の動的変更」の「キャラクタコントロール」タブで変更できます。

    《「動的変更(APから表示属性を変更する)」を指定しない場合》

    標準の属性を使って表示します。

(b) 出力論理マップ生成規則とマッピング規則

コンボボックスの出力論理マップ生成規則とマッピング規則について説明します。

  • 出力論理マップ生成規則

    COBOL

    {02|03} マップ名-FIELDnnnn-O PIC X(長さ).

    C言語

    unsigned char マップ名_FIELDnnnn_O[長さ];

  • マッピング規則

    • APが論理項目に代入した内容と表示結果

    《入力形式がキー入力可能で,初期値を指定しない場合》

    APが論理項目に

    代入した内容

    マッピングオプション

    表示結果

    すべてデータ

    マージ,

    論理マップ

    (コード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (コード項目に同一のデータが指定されていない場合)

    代入されたデータを表示する。

    すべて(00)16のデータ

    ヌルクリアして表示する。

    すべて(20)16のデータ

    空白で表示する。

    先頭1文字がデータ有無コード

    データ有無コード(1F)16を設定した場合,例として'1F414234'またはX'1F1F1F'のようなデータが該当する。

    (表示形態が「全面書換」の場合)

    何も表示しない。

    (表示形態が「一部上書」で前回と同じマップの場合)

    直前のデータのまま表示する。

    (表示形態が「一部上書」で前回と異なるマップの場合)

    何も表示しない。

    データの後半にデータ有無コード

    データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。

    (データ有無コードを切り捨てたデータとメニューのコード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (データ有無コードを切り捨てたデータとメニューのコード項目に同一のデータが指定されていない場合)

    論理項目の桁寄せ向きに従って桁寄せする。また,埋字指定の内容に従って埋字をする。

    画面の表示長より長いデータ

    (コード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (コード項目に同一のデータが指定されていない場合)

    論理項目の桁寄せ向きに従って桁寄せし,余りを切り捨てて表示する。

    物理マップ

    何も表示しない。

    (凡例)

    −:該当しない。

    《入力形式がキー入力可能で,初期値を指定する場合》

    APが論理項目に

    代入した内容

    マッピングオプション

    表示結果

    先頭1文字がデータ有無コード

    マージ,

    論理マップ

    《先頭1文字がデータ有無コードのときの結果》を参照のこと。

    すべてデータ

    代入されたデータを表示する。

    データの後半にデータ有無コード

    データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。論理項目の向きと,指定した埋字の内容に従って表示する。

    物理マップ

    初期値を指定しない場合と同じになる。

    (凡例)

    −:該当しない。

    《先頭1文字がデータ有無コードのときの結果》

    初期値の内容

    結果

    すべて空白((20)16

    項目全体を空白で表示する。

    すべて0((30)16

    項目全体を0で表示する。

    すべてヌル((00)16

    項目全体をヌルクリアして表示する。

    繰り返し文字指定

    項目全体を繰り返し文字で表示する。

    初期値の長さと画面の表示長が等しい

    初期値を項目に表示する。

    初期値の長さが画面の表示長より短い

    定義で指定した「桁寄せ」,および埋字に従って表示する。埋字なしを指定した場合は,左寄せで初期値を項目に表示する。

    初期値の長さが画面の表示長より長い

    「桁寄せ」に従って桁寄せし,余りを切り捨てて項目を表示する。

    《入力形式がメニュー選択だけで,初期値を指定しない場合》

    APが論理項目に

    代入した内容

    マッピングオプション

    表示結果

    すべてデータ

    マージ,

    論理マップ

    (コード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (コード項目に同一のデータが指定されていない場合)

    先頭のラベル項目のデータを表示する。

    先頭1文字がデータ有無コード

    データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。

    (表示形態が「全面書換」の場合)

    先頭のラベル項目のデータを表示する。

    (表示形態が「一部上書」で前回と同じマップの場合)

    直前のデータのまま表示する。

    (表示形態が「一部上書」で前回と異なるマップの場合)

    先頭のラベル項目のデータを表示する。

    データの後半にデータ有無コード

    データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。

    (データ有無コードを切り捨てたデータとメニューのコード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (データ有無コードを切り捨てたデータとメニューのコード項目に同一のデータが指定されていない場合)

    先頭のラベル項目のデータを表示する。

    画面の表示長より長いデータ

    (コード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (コード項目に同一のデータが指定されていない場合)

    先頭のラベル項目のデータを表示する。

    物理マップ

    先頭のラベル項目のデータを表示する。

    (凡例)

    −:該当しない。

    《入力形式がメニュー選択だけで,初期値を指定する場合》

    APが論理項目に

    代入した内容

    マッピングオプション

    表示結果

    先頭1文字がデータ有無コード

    マージ,

    論理マップ

    《先頭1文字がデータ有無コードのときの結果》を参照のこと。

    すべてデータ

    (コード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (コード項目に同一のデータが指定されていない場合)

    先頭のラベル項目のデータを表示する。

    データの後半にデータ有無コード

    データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。

    (データ有無コードを切り捨てたデータとメニューのコード項目に同一のデータが指定されている場合)

    対応するラベル項目のデータを表示する。

    (データ有無コードを切り捨てたデータとメニューのコード項目に同一のデータが指定されていない場合)

    先頭のラベル項目のデータを表示する。

    物理マップ

    《先頭1文字がデータ有無コードのときの結果》を参照のこと。

    (凡例)

    −:該当しない。

    《先頭1文字がデータ有無コードのときの結果》

    初期値の内容

    結果

    メニューのコード項目に指定されているデータと同じ

    対応するラベル項目のデータを表示する。

    メニューのコード項目に指定されているデータと異なる

    先頭のラベル項目のデータを表示する。

(c) 入力論理マップ生成規則とマッピング規則

コンボボックスの入力論理マップ生成規則とマッピング規則について説明します。

  • 論理マップ生成規則

    COBOL

    ・論理マップ可変部の集団項目化を指定した場合

      03 マップ名-FIELDnnnn-H.

       04 マップ名-FIELDnnnn-I PIC {X(長さ)|N(長さ÷2)|9(長さ)}.

    ・論理マップ可変部の集団項目化を指定しない場合

      02 マップ名-FIELDnnnn-I PIC {X(長さ)|N(長さ÷2)|9(長さ)}.

    C言語

    unsigned char マップ名_FIELDnnnn_I[長さ];

  • マッピング規則

    • 入力操作と結果(論理項目の内容)

    《入力形式がキー入力可能の場合》

    入力操作

    結果(論理項目の内容)

    コンボボックスにカーソルを位置づけ,表示された候補の中からメニューを選択※1する

    選んだメニュー(フォーカスを位置づけたラベル)に対応したコードを論理項目に代入する。

    コンボボックスにカーソルを位置づけ表示された候補からメニューを選択※1しない,またはコンボボックスにカーソルを位置づけない

    論理項目の初期値で指定したコードを論理項目に代入する。論理項目の初期値が指定されていない場合,初期クリア文字の指定に従って論理項目をクリアする。

    半角のデータを入力※2

    データを論理項目に代入する。

    全角,または半角/全角混在のデータを入力※2

    フィールドキーを押す(すべて(00)16)データ入力※2

    データ消去通知文字に従って論理項目をクリアする。

    注※1

    選択とは,カーソルでメニューを選んで,復改キーを押す操作です。この操作で,コードが論理項目に代入されます。

    注※2

    コンボボックスにカーソルを位置づけてデータを入力する場合が該当します。

    《入力形式がメニュー選択だけの場合》

    入力操作

    結果(論理項目の内容)

    コンボボックスにカーソルを位置づけ,表示された候補の中からメニューを選択する

    選んだメニュー(フォーカスを位置づけたラベル)に対応したコードを論理項目に代入する。

    コンボボックスにカーソルを位置づけ表示された候補からメニューを選択しない,またはコンボボックスにカーソルを位置づけない

    論理項目の初期値で指定したコードを論理項目に代入する。論理項目の初期値が指定されていない場合,初期クリア文字の指定に従って論理項目をクリアする。

    注※

    選択とは,カーソルでメニューを選んで,スペースキーまたは復改キーを押す操作です。この操作で,コードが論理項目に代入されます。

(3) コンボボックスのメニューの論理マップ生成規則とマッピング規則

(a) メニュー属性のマッピング規則

メニュー属性のマッピング規則は,標準の属性を使ってメニューを表示します。

(b) ラベルの論理マップ生成規則とマッピング規則

可変用論理テーブル名を指定した場合のコンボボックスの論理マップ生成規則とマッピング規則について説明します。

  • 論理マップ生成例(入力形式がメニュー選択だけの場合)

    COBOL

    03 マップ名-POPUPnnnn-O OCCURS 回数.

     04 マップ名-POPUP-LABELnnnn-O PIC {9(長さ)|X(長さ)|N(長さ÷2)|編集文字}.

     04マップ名-POPUP-CODEnnnn-O PIC X(長さ).

    C言語

    struct {

     unsigned char マップ名_POPUP_LABELnnnn_O[長さ];

     unsigned char マップ名_POPUP_CODEnnnn_O[長さ];

    } マップ名_POPUPnnnn_O[回数];

  • 論理マップ生成例(入力形式がキー入力可能の場合)

    COBOL

    03 マップ名-POPUPnnnn-O OCCURS 回数.

     04 マップ名-POPUP-CODEnnnn-O PIC {X(長さ)|N(長さ÷2)|9(長さ)}.

    C言語

    struct {

     unsigned char マップ名_POPUP_CODEnnnn_O[長さ];

    } マップ名_POPUPnnnn_O[回数];

  • マッピング規則

    • APが論理項目に代入した内容と表示結果

    《入力形式がメニュー選択だけの場合》

    APが論理項目に代入した内容

    マッピングオプション

    表示結果

    すべてデータ

    マージ,

    論理マップ

    代入されたデータを表示する。

    すべて(00)16※1

    ヌルクリアして表示する。

    すべて(20)16※1

    空白で表示する。

    先頭1文字がデータ有無コード※2

    データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。

    (コード項目の指定がある場合)

    コード項目のデータを表示する。

    (コード項目の指定がない場合)

    何も表示しない。

    データの後半にデータ有無コード

    データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。

    指定したラベル項目の向き,および埋字の内容に従って表示する。

    画面の表示長より長いデータ

    ラベル項目の桁寄せ向きに従って桁寄せし,余りを切り捨てて表示する。

    物理マップ

    何も表示しない。

    (凡例)

    −:該当しない。

    注※1

    リストの後半に該当する項目がある場合,項目は圧縮されます。

    注※2

    ラベル項目のデータ型とコード項目のデータ型が同じ場合だけ,ラベル項目にデータ有無コードを設定できます。

    《入力形式がキー入力可能の場合》

    マッピングオプション

    表示結果

    マージ,論理マップ

    コード項目のデータを表示する。

    物理マップ

    何も表示しない。

(c) コンボボックスのメニューの表示

コンボボックスのメニューの表示に関するマッピング規則について説明します。項目の表示データに対応するコンボボックスのメニューコードの値によって表示結果が異なります。

  • 入力形式がメニュー選択だけの場合

    《メニューコード内に項目表示データの値があり,項目長とメニューコード長が等しい》

    先頭のメニューから表示し,項目表示データと同じメニューコードに対応するメニューに,カーソルを位置づけます。

    [図データ]

    《メニューコード内に項目表示データの値がないか,項目長とメニューコード長が等しくない》

    先頭メニューを表示し,カーソルを位置づけます。

    [図データ]

  • 入力形式がキー入力可能の場合

    《メニューコード内にキー入力したデータの値があり,項目長とメニューコード長が等しい》

    入力形式がメニュー選択だけの場合と同じです。キー入力の場合,「APの項目表示データ」は「キー入力したデータ」となります。

    《メニューコード内にキー入力したデータの値がないか,項目長とメニューコード長が等しくない》

    キー入力したデータを表示します。

    [図データ]