16.3.1 ポップアップメニュー
(1) ポップアップメニューの定義
ポップアップメニューには,データを入力するテキストボックスと入力するデータを表示するメニューがあります。テキストボックスをポップアップフィールドといい,表示するメニューをポップアップメニューといいます。
-
ポップアップフィールドの定義
可変ポップアップに対して生成されます。定義については,「16.2.5 可変項目」,および「16.2.7 動的変更」と同じです。
-
ポップアップメニューの定義
可変ポップアップの「メニュー」で指定した内容で生成されます。
-
可変用論理テーブル:マップ名-可変用論理テーブル名の指定値(標準のデータ名:マップ名-POPUPnnnn-O)
-
回数:繰り返し回数の指定値
-
可変メニューラベル:マップ名-可変メニューラベル名の指定値(標準のデータ名:マップ名-POPUP-LABELnnnn-O)
-
データ型:データ型の指定値
-
長さ:ラベルのデータ長の指定値
-
可変メニューコード:マップ名-可変メニューコード名の指定値(標準のデータ名:マップ名-POPUP-CODEnnnn-O)
-
コードの長さ:コード項目のデータ長の指定値
-
可変メニュー選択ラベル:マップ名-可変メニュー選択ラベル名の指定値(標準のデータ名:マップ名-POPUP-TEXTnnnn-O)
-
選択ラベルのデータ型:選択ラベルのデータ型の指定値
-
選択ラベルの長さ:選択ラベルのデータ長の指定値
-
可変メニューアクセスキー:マップ-可変メニューアクセスキー名の指定値(標準のデータ名:マップ名-POPUP-KEYnnnn-O)
-
メニューデータファイル:マップ名-メニューデータファイル項目名の指定値(標準のデータ名:マップ名-POPUP-FILEnnnn-O)
-
データ型:文字(XX)
-
長さ:ファイル名指定:12
フルパス64:64
フルパス128:128
フルパス259:259
また,使用目的は次のとおりです。なお,可変メニューラベル,可変メニュー選択ラベルには,使用目的に関係なく,文字,漢字,数字から選択できます。
使用目的
使用できる項目
POP(手動-数字)
文字
POP(手動-カナ)
文字
POP(手動-英数)
文字
POP(手動-日本語)
文字,漢字
POP(自動-英数)
文字
POP(自動-日本語)
文字,漢字
-
(2) ポップアップフィールドの論理マップ生成規則とマッピング規則
ポップアップフィールドで生成される論理マップには,項目属性,出力,入力の三つの論理マップがあります。
(a) ポップアップ項目属性の論理マップ生成規則とマッピング規則
ポップアップ項目属性の論理マップ生成規則とマッピング規則について説明します。
- ●論理マップ生成規則
-
-
「動的変更(APから表示属性を変更する)」を指定した場合
COBOL
{02|03} マップ名-FIELDnnnn-A PIC X(長さ).
C言語
unsigned char マップ名_FIELDnnnn_A[長さ];
-
「動的変更(APから表示属性を変更する)」を指定しない場合
定義に関係なく標準の属性を使って表示します。
-
- ●マッピング規則
-
-
APが制御項目に代入した内容と表示結果
APが制御項目に代入した内容
マッピングオプション
表示結果
ドローセットアップで指定した修飾名と同じ修飾名を指定
マージ
ポップアップ項目の修飾名に対応する属性を使って表示する。
先頭またはすべてにデータ有無コード,または定義で指定していない修飾名を指定
標準の属性を使って表示する。
ドローセットアップで指定した修飾名と同じ修飾名を指定
論理マップ
ポップアップ項目の修飾名に対応する属性を使って表示する。
先頭またはすべてにデータ有無コード,または定義で指定していない修飾名を指定
画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
標準の属性を使って表示する。
-
「一部上書」で直前に表示したマップと同じ場合
前回の属性のまま表示する。
-
「一部上書」で直前に表示したマップと異なる場合
標準の属性を使って表示する。
−
物理マップ
標準の属性を使って表示する。
-
-
(b) ポップアップ項目の出力論理マップ生成規則とマッピング規則
ポップアップ項目の出力論理マップ生成規則とマッピング規則について説明します。
- ●出力論理マップ生成規則
-
- COBOL
{02|03} マップ名-FIELDnnnn-O PIC X(長さ) 〔OCCURS 回数〕.
- C言語
unsigned char マップ名_FIELDnnnn_O〔[回数]〕[長さ];
- ●マッピング規則
-
-
APが論理項目に代入した内容と表示結果
《初期値を指定しない場合》
APが論理項目に代入した内容
マッピングオプション
表示結果
すべてデータ
マージ,
論理マップ
代入されたデータを表示する。
すべて(00)16のデータ
ヌルクリアして表示する。
すべて(20)16のデータ
空白で表示する。
先頭1文字がデータ有無コード
データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。このとき,画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
ヌルクリアして表示する。
-
「一部上書」で直前に表示したマップと同じ場合
前回のデータのまま表示する。
-
「一部上書」で直前に表示したマップと異なる場合
ヌルクリアして表示する。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。
論理項目の桁寄せ向きと,指定した埋字の内容に従って表示する。
画面の表示長より長いデータ
論理項目の桁寄せ向きに従って桁寄せし,余りを切り捨てて表示する。
−
物理マップ
何も表示しない。
《初期値を指定した場合》
APが論理項目に代入した内容
マッピングオプション
表示結果
先頭1文字がデータ有無コード
マージ,
論理マップ
《先頭1文字がデータ有無コードのときの結果》を参照のこと。
すべてのデータ
代入されたデータを表示する。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。論理項目の向きと,指定した埋字の内容に従って表示する。
−
物理マップ
《先頭1文字がデータ有無コードのときの結果》を参照のこと。
《先頭1文字がデータ有無コードのときの結果》
初期値の内容
結果
すべて空白((20)16)
項目全体を空白で表示する。
すべて0((30)16)
項目全体を0で表示する。
すべてヌル((00)16)
項目全体をヌルクリアして表示する。
繰り返し文字指定
項目全体を繰り返し文字で表示する。
初期値の長さと画面の表示長が等しい
初期値を項目に表示する。
初期値の長さが画面の表示長より短い
定義で指定した「桁寄せ」,および埋字に従って表示する。埋字なしを指定した場合は,左寄せで初期値を項目に表示する。
初期値の長さが画面の表示長より長い
「桁寄せ」に従って桁寄せし,余りを切り捨てて項目を表示する。
-
-
(c) ポップアップ項目の入力論理マップ生成規則とマッピング規則
ポップアップ項目の入力論理マップ生成規則とマッピング規則について説明します。
- ●入力論理マップ生成規則
-
- COBOL
-
・論理マップ可変部の集団項目化を指定した場合
03 マップ名-FIELDnnnn-H〔OCCURS 回数〕. 04 マップ名-FIELDnnnn-I PIC {X(長さ)|N(長さ÷2)}.
・論理マップ可変部の集団項目化を指定しない場合
02 マップ名-FIELDnnnn-I PIC {X(長さ)|N(長さ÷2)} 〔OCCURS 回数〕.
- C言語
unsigned char マップ名_FIELDnnnn_I〔[回数]〕[長さ];
- ●マッピング規則
-
-
入力操作と結果(論理項目の内容)
《自動ポップアップの場合》
入力操作
結果(論理項目の内容)
ポップアップ項目にカーソルを位置づけ表示されたポップアップメニューの中からメニューを選ぶ
選んだメニュー(フォーカスを位置づけたラベル)に対応した定数を論理項目に代入する※。
ポップアップ項目にカーソルを位置づけ表示されたポップアップメニューの中からメニューを選ばない,またはポップアップ項目にカーソルを位置づけない
-
論理項目の初期値を指定している場合,指定した定数を論理項目に代入する。
-
論理項目の初期値を指定していない場合,初期クリア文字の指定に従って論理項目をクリアする。
メニューのアクセスキー項目に指定されているキーを入力
-
アクセスキーに対応した通知コードを,論理項目に代入する※。
メニューのアクセスキー項目に指定されていないキーを入力
-
論理項目の初期値を指定している場合,初期値を論理項目に代入する。
-
論理項目の初期値を指定していない場合,初期クリア文字の指定に従って論理項目をクリアする。
《手動ポップアップの場合》
入力操作
結果(論理項目の内容)
ポップアップ項目にカーソルを位置づけ表示されたポップアップメニューの中からメニューを選ぶ
選んだメニュー(フォーカスを位置づけたラベル)に対応した定数を論理項目に代入する※1。
ポップアップ項目にカーソルを位置づけ表示されたポップアップメニューの中からメニューを選ばない
-
論理項目の初期値を指定している場合,指定した定数を論理項目に代入する。
-
論理項目の初期値を指定していない場合,初期クリア文字の指定に従って論理項目をクリアする。
半角のデータを入力※2
データを論理項目に代入する。
全角,または半角/全角混在のデータを入力※2
フィールドキーを押す(すべて(00)16)データ入力 ※2
データ消去通知文字に従って論理項目をクリアする。
ポップアップ項目にカーソルを位置づけない
-
論理項目の初期値を指定している場合,指定した定数を論理項目に代入する。
-
論理項目の初期値を指定していない場合,初期クリア文字の指定に従って論理項目をクリアする。
メニューのアクセスキー項目に指定されているキーを入力
-
アクセスキーに対応した通知コードを,論理項目に代入する※1。
メニューのアクセスキー項目に指定されていないキーを入力
-
論理項目の初期値を指定している場合,初期値を論理項目に代入する。
-
論理項目の初期値を指定していない場合,初期クリア文字の指定に従って論理項目をクリアする。
-
-
(3) ポップアップメニューの論理マップ生成規則とマッピング規則
(a) メニュー属性のマッピング規則
標準の属性を使ってメニューを表示します。
(b) ポップアップメニューラベルの論理マップ生成規則とマッピング規則
ポップアップメニューラベルの論理マップ生成規則とマッピング規則について説明します。
- ●ラベルの論理マップ生成規則
-
・可変用論理テーブル名を指定した場合
- COBOL
{02|03} マップ名-POPUPnnnn-O 〔OCCURS 回数〕. {03|04} マップ名-POPUP-CODEnnnn-O PIC {X(長さ)|N(長さ÷2)}. {03|04} マップ名-POPUP-LABELnnnn-O PIC {X(長さ)|N(長さ÷2)|編集文字}. {03|04} マップ名-POPUP-KEYnnnn-O PIC X(長さ). …………※1 {03|04} マップ名-POPUP-TEXTnnnn-O PIC {X(長さ)|N(長さ÷2)|編集文字}.…※2
- C言語
struct { unsigned char マップ名_POPUP_CODEnnnn-O[長さ]; unsigned char マップ名_POPUP_LABELnnnn-O[長さ]; unsigned char マップ名_POPUP_KEYnnnn-O[長さ]; …………※1 unsigned char マップ名_POPUP_TEXTnnnn-O[長さ]; …………※2 }マップ名_POPUPnnnn_O〔[回数]〕;
注※1
アクセスキーを指定すると展開されます。
注※2
選択ラベルと通知コードを同じ値にしない場合に展開されます。
- ●マッピング規則
-
-
APが論理項目に代入した内容と表示結果
《ラベル項目を指定した場合》
APが論理項目に代入した内容
マッピングオプション
表示結果
すべてデータ
マージ,
論理マップ
代入されたデータを表示する。
すべて(00)16※1
ヌルクリアして表示する。
すべて(20)16※1
空白で表示する。
先頭1文字がデータ有無コード※2
データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。このとき,画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
コード項目のデータがあるときは,コード項目のデータを表示する。コード項目のデータがないときは,何も表示しない。
-
「一部上書」の場合
前回のデータのまま表示する。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。指定したラベル項目の桁寄せ向き,および埋字の内容に従って表示する。
画面の表示長より長いデータ
ラベル項目の桁寄せ向きに従って桁寄せし,余りを切り捨てて表示する。
−
物理マップ
画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
何も表示しない。
-
「一部上書」の場合
前回のデータのまま表示する。
《コード項目を指定した場合》
APが論理項目に代入した内容
マッピングオプション
表示結果
すべてデータ※
マージ,
論理マップ
代入されたデータをコードとして扱う。
すべて(00)16※
ヌルクリアをコードとして扱う。
すべて(20)16※
空白をコードとして扱う。
先頭1文字がデータ有無コード
データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。このとき,画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
コードなしとする。
-
「一部上書」の場合
前回のコードをそのまま扱う。
データの後半にデータ有無コード※
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。指定されたデータをコードとして扱う。
−
物理マップ
画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
何も表示しない。
-
「一部上書」の場合
前回のコードをそのまま扱う。
《選択ラベル項目を指定した場合》
APが論理項目に代入した内容
マッピングオプション
表示結果
すべてデータ
マージ,
論理マップ
代入されたデータを表示する。
すべて(00)16
ヌルクリアして表示する。
すべて(20)16
空白で表示する。
先頭1文字がデータ有無コード※
データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。このとき,画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
コード項目のデータがあるときは,コード項目のデータを表示する。コード項目のデータがないときは,何も表示しない。
-
「一部上書」の場合
前回のデータのまま表示する。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。指定された選択ラベル項目の桁寄せ向き,および埋字の内容に従って表示する。
画面の表示長より長いデータ
選択ラベル項目の桁寄せ向きに従って桁寄せし,余りを切り捨てて表示する。
−
物理マップ
画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
何も表示しない。
-
「一部上書」の場合
前回のデータのまま表示する。
《アクセスキーを指定した場合》
APが論理項目に代入した内容
マッピングオプション
表示結果
すべてデータ
マージ,
論理マップ
-
指定されたデータがすべて半角英数の場合,指定されたデータがアクセスキーとして有効となる。
-
指定されたデータに半角英数以外の文字が含まれる場合,指定された項目のアクセスキーは無効となる。
先頭1文字がデータ有無コード
データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。このとき,画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
対応するアクセスキーなしとなる。
-
「一部上書」の場合
前回のアクセスキーがそのまま有効となる。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。指定された項目のアクセスキーは無効となる。
−
物理マップ
画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
対応するアクセスキーなしとなる。
-
「一部上書」の場合
前回のアクセスキーがそのまま有効となる。
-
-
(c) ポップアップメニューファイル使用時の論理マップ生成規則とマッピング規則
ポップアップメニューファイルを使用したときの,論理マップ生成規則とマッピング規則について説明します。
- ●出力論理マップ生成規則
-
- COBOL
{02|03} マップ名-POPUP-FILEnnnn-O PIC X(長さ).
- C言語
unsigned char マップ名_ POPUP_FILEnnnn-O[長さ];
- ●マッピング規則
-
-
APが論理項目に代入した内容と表示結果
APが論理項目に代入した内容
マッピングオプション
表示結果
すべてデータ
マージ,
論理マップ
- (指定されたファイルが存在した場合)
-
指定されたファイルを読み込み,メニューを表示する。
- (指定されたファイルが存在しない場合)
-
メニューを表示しない※。
先頭1文字がデータ有無コード
データ有無コード(1F)16を設定した場合,例としてX'1F414234'またはX'1F1F1F'のようなデータが該当する。このとき,画面属性の表示形態によって次のように変わる。
-
「全面書換」の場合
画面定義で可変ポップアップメニューの「メニューデータをファイルで指定する」が選択され,データ名の「初期値」にポップアップメニューファイル名が指定されている場合は,指定されたファイルを読み込み,メニューを表示する。画面定義で初期値が設定されていない場合は,メニューを表示しない※。
-
「一部上書」の場合
前回のメニューデータをそのまま表示する。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合,例としてX'4142431F1F'のようなデータが該当する。
- (指定されたファイルが存在した場合)
-
指定されたファイルを読み込み,メニューを表示する。
- (指定されたファイルが存在しない場合)
-
メニューを表示しない※。
-
- ●入力論理マップ生成規則
-
- COBOL
-
・論理マップ可変部の集団項目化を指定した場合
03 マップ名-FIELDnnnn-H〔OCCURS 回数〕. 04 マップ名-FIELDnnnn-I PIC {X(長さ)|N(長さ÷2)}.
・論理マップ可変部の集団項目化を指定しない場合
02 マップ名-FIELDnnnn-I PIC {X(長さ)|N(長さ÷2)} 〔OCCURS 回数〕.
- C言語
unsigned char マップ名_FIELDnnnn_I〔[回数]〕[長さ];
- ●入力論理マップのマッピング規則
-
-
入力操作と結果(論理項目の内容)
ポップアップメニューと同様です。詳細については,「16.3.1(2)(c) ポップアップ項目の入力論理マップ生成規則とマッピング規則」を参照してください。
-
(d) ポップアップメニューの表示
ポップアップメニューの表示に関するマッピング規則について説明します。項目の表示データは対応するポップアップメニューコードの値によって表示結果が異なります。
-
メニューコード内に項目表示データの値があり,項目長とメニューコード長が等しい
先頭のメニューから表示し,項目表示データと同じメニューコードに対応するメニューに,カーソルを位置づけます。
-
メニューコード内に項目表示データの値がないか,項目長とメニューコード長が等しくない
先頭メニューを表示し,カーソルを位置づけます。