16.3.7 コンボボックス
コンボボックスの論理マップ生成規則とマッピング規則について説明します。
(1) コンボボックスの定義
コンボボックスは,選択されたデータや入力されたデータを表示するボックスと,入力するデータの候補を表示するメニューから成ります。
-
コンボボックスの属性
コンボボックスダイアログで「動的変更(APから表示属性を変更する)」を選び,属性項目データ名を指定することで生成されます。
-
制御項目のデータ名:マップ名-FIELDnnnn-A
データ名は,コンボボックスダイアログのAPが受け取る通知コードの項目の「データ名」に従います。
-
長さ:2
長さは,ドローセットアップの「運用管理者用の設定」の[修飾名の設定]ボタンをクリックして表示される,修飾名の設定ダイアログで変更できます。変更するときには,「動的変更の種別」から「キャラクタコントロール(キーエントリ/選択エントリ)」を選択し,「修飾名長」で長さを設定します。
-
-
ボックスの定義
固定コンボボックス,および可変コンボボックスに対して生成されます。
-
ボックス項目のデータ名:マップ名-FIELDnnnn-I/O
データ名は,コンボボックスダイアログのAPが受け取る通知コードの項目の「データ名」で変更できます。
-
長さ:APが受け取る項目のデータ長で指定
-
-
可変コンボボックス用論理テーブルの定義
可変メニューダイアログで指定した内容で生成されます。
-
可変用論理テーブルのデータ名:マップ名-POPUPnnnn-O
-
回数:メニューの項目数の指定値
-
可変メニューラベル項目のデータ名:マップ名-POPUP-LABELnnnn-O
データ名は,可変コンボメニューダイアログのラベルの「データ名」で変更できます。
-
データ型:ラベルのデータ型で指定
-
長さ:コンボボックスの長さの指定値-2
-
可変メニューコード項目のデータ名:マップ名-POPUP-CODEnnnn-O
データ名は,可変コンボメニューダイアログのAPに返す通知コードの「データ名」で変更できます。
-
長さ:2
長さは,コンボボックスダイアログのAPが受け取る通知コードの項目の「データ長」に従います。
-
(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
データ消去通知文字に従って論理項目をクリアする。
- 《入力形式がメニュー選択だけの場合》
-
入力操作
結果(論理項目の内容)
コンボボックスにカーソルを位置づけ,表示された候補の中からメニューを選択※する
選んだメニュー(フォーカスを位置づけたラベル)に対応したコードを論理項目に代入する。
コンボボックスにカーソルを位置づけ表示された候補からメニューを選択※しない,またはコンボボックスにカーソルを位置づけない
論理項目の初期値で指定したコードを論理項目に代入する。論理項目の初期値が指定されていない場合,初期クリア文字の指定に従って論理項目をクリアする。
-
(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'のようなデータが該当する。
指定したラベル項目の向き,および埋字の内容に従って表示する。
画面の表示長より長いデータ
ラベル項目の桁寄せ向きに従って桁寄せし,余りを切り捨てて表示する。
−
物理マップ
何も表示しない。
- 《入力形式がキー入力可能の場合》
-
マッピングオプション
表示結果
マージ,論理マップ
コード項目のデータを表示する。
物理マップ
何も表示しない。
-
(c) コンボボックスのメニューの表示
コンボボックスのメニューの表示に関するマッピング規則について説明します。項目の表示データに対応するコンボボックスのメニューコードの値によって表示結果が異なります。
-
入力形式がメニュー選択だけの場合
- 《メニューコード内に項目表示データの値があり,項目長とメニューコード長が等しい》
-
先頭のメニューから表示し,項目表示データと同じメニューコードに対応するメニューに,カーソルを位置づけます。
- 《メニューコード内に項目表示データの値がないか,項目長とメニューコード長が等しくない》
-
先頭メニューを表示し,カーソルを位置づけます。
-
入力形式がキー入力可能の場合
- 《メニューコード内にキー入力したデータの値があり,項目長とメニューコード長が等しい》
-
入力形式がメニュー選択だけの場合と同じです。キー入力の場合,「APの項目表示データ」は「キー入力したデータ」となります。
- 《メニューコード内にキー入力したデータの値がないか,項目長とメニューコード長が等しくない》
-
キー入力したデータを表示します。