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


16.3.1 ポップアップメニュー

〈この項の構成〉

(1) ポップアップメニューの定義

ポップアップメニューには,データを入力するテキストボックスと入力するデータを表示するメニューがあります。テキストボックスをポップアップフィールドといい,表示するメニューをポップアップメニューといいます。

(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

    メニューのアクセスキー項目に指定されていないキーを入力

    • 論理項目の初期値を指定している場合,初期値を論理項目に代入する。

    • 論理項目の初期値を指定していない場合,初期クリア文字の指定に従って論理項目をクリアする。

    注※1

    「メニューデータをファイルで指定する」を指定している場合,使用目的が日本語以外で,かつ通知コードが全角を含む場合には,エラー通知文字が返ります。

    注※2

    ポップアップ項目にカーソルを位置づけてデータを入力する場合が該当します。

(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'のようなデータが該当する。指定したラベル項目の桁寄せ向き,および埋字の内容に従って表示する。

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

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

    物理マップ

    画面属性の表示形態によって次のように変わる。

    • 「全面書換」の場合

      何も表示しない。

    • 「一部上書」の場合

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

    (凡例)

    −:該当しない。

    注※1

    メニューの後半に該当する項目がある場合は,項目は圧縮されます。

    注※2

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

    《コード項目を指定した場合》

    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'のようなデータが該当する。

    (指定されたファイルが存在した場合)

    指定されたファイルを読み込み,メニューを表示する。

    (指定されたファイルが存在しない場合)

    メニューを表示しない

    注※

    1階層の空のメニューを表示します。

●入力論理マップ生成規則
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〔[回数]〕[長さ];
●入力論理マップのマッピング規則

(d) ポップアップメニューの表示

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

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

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

    [図データ]

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

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

    [図データ]