メニュー定義体

本章では、メニュー定義体の特徴およびメニュー定義体を利用した論理画面へのアクセスについて説明します。

1. メニュー定義体の特徴

メニュー定義体は区分データセット(PDS)のメンバーであり、論理画面上のフィールドを視覚的に定義することができます。

ユーザーが作成するメニュー定義体はテキスト・ファイル形式のドキュメントです。OpenFrameでは、tsomapgenというコンパイル・ツールを使用して、menuname.map(コンパイルするメニュー定義体の名前.map)形式のバイナリ・ファイルにコンパイルおよび保存します。以降、IPFプログラムでそのファイルから必要な情報を読み込んで使用します。

2. メニュー定義体の構成

2.1. 属性定義部

属性(attribute)定義部は、属性文字を変更または追加するか、属性文字に別の属性を追加する場合に使用します。標準属性文字のみを使用する場合には、省略することが可能です。属性定義部は、<ATTR>で始まり<END>で終わります。

以下は、形式で使用する標準属性文字と属性記号についての説明です。

  • 標準属性文字

    項目 説明

    ^

    入力フィールドの属性を持ちます。表示されないフィールドです。

    %

    入力フィールドの属性を持ちます。明るく表示されます。

    |

    入力フィールドの属性を持ちます。暗く表示されます。

    &

    テキスト・フィールドの属性を持ちます。明るく表示されます。

    ¥(通貨記号)

    テキスト・フィールドの属性を持ちます。暗く表示されます。

    #

    出力フィールドの属性を持ちます。明るく表示されます。

    @

    出力フィールドの属性を持ちます。暗く表示されます。

  • 属性記号

    項目 説明

    A

    更新(Refresh)するとき、データを保持します。

    B

    点滅します。

    D

    表示されないフィールドです。

    E

    更新するとき、データを削除します。

    H

    明るく表示されるフィールドです。

    I

    入力フィールドです。

    J

    右揃えされるフィールドです。

    N

    数字のみ使用可能なフィールドです。

    O

    フィールドにオーバーラインを表示します。

    P

    出力のみ可能なフィールドです。

    R

    フィールド内のデータは暗く、それ以外のフィールド領域は明るく表示します。

    U

    フィールドにアンダーラインを表示します。

    V

    フィールドにバーティカルラインを表示します。

属性定義部は、以下の形式で設定することができます。それぞれの形式を複数行にわたって一緒に使用することが可能です。

  • 形式1

    • 構文

      任意の文字 = 標準属性文字 [+ 属性記号];

      右辺に記述された標準属性文字の属性を、左辺に記述された任意の属性文字に移します。必要に応じて別の属性を追加することもできます。属性が移された標準属性文字の既存の属性は消えます。以降、メニュー原型部では一般的なデータ用の文字として使用することができます。

    • <ATTR>
       X = % + OUV;
      <END>

      Xという文字を新しい属性文字として定義します。標準属性文字である%の属性をXに与え、Over line(O)、Under line(U)、Vertical line(V)などの属性を追加します。以降、%は属性文字として使用できません。

  • 形式2

    • 構文

      標準属性文字 =+ 属性記号;

      右辺に記述された属性記号の属性を、左辺に記述された標準属性文字に追加します。

    • <ATTR>
       @ =+ JN;
      <END>

      標準属性文字である@の右辺に属性(J)と数字フィールド属性(N)を追加します。

  • 形式3

    • 構文

      任意の文字 =+ 属性記号;

      右辺に記述された属性記号の属性を、左辺に記述された任意の属性文字に追加します。そのとき使用された任意の文字は、属性文字として使用できるため、以降、メニュー原型部では一般的なデータ用の文字として使用することはできません。

    • <ATTR>
       Y =+ IOUV;
      <END>

      Yという新しい属性文字を定義し、入力フィールド(I)、Over line(O)、Under line(U)、Vertical line(V)などの属性を与えます。

属性を定義する際、文字、「=」、「+」、属性記号の間の空白は無視して動作します。

2.2. メニュー原型部

メニュー原型部は、属性文字、テキスト・データ、パラメータ名(フィールド名)で構成されており、画面に実際に出力される領域です。属性文字は1バイトの領域を占めており、フィールドの段落および後述のフィールドの属性を定義します。

テキスト・データは、そのままメニュー原型部に記述することが可能であり、画面の同じ位置に出力されます。データの入力または出力のためのフィールドには、それぞれのパラメータ名(フィールド名)を記述します。アプリケーション・プログラムと画面との間でデータを送受信する役割をします。入出力フィールドについては、後述のアクション定義部にてより詳しく定義します。

以下は、メニュー原型部の特性です。

  • メニュー原型部はフィールドの集まりです。

  • 1行に複数のフィールドがつながることができますが、1つのフィールドが複数行にわたってつながることはできません。

  • 1つのフィールドは、1つの属性文字とその次の属性文字の間の文字列です。

  • フィールド内の文字列は、テキスト・データであるか、パラメータ名あるいはフィールド名、そしてそれに伴う空白列で構成されます。

  • 表示データは1バイトの文字列であるか、2バイト(日本語)の文字列、または1バイトと2バイトが混用された文字列です。

  • こちらでのパラメータ名とは、アクション定義部で記述されるパラメータ名を意味しており、フィールド名は、アクション定義部のFIELDオペランドに記述されるフィールド名を意味します。

2.3. アクション定義部

アクション定義部では、メニュー原型部で指定された入出力フィールドのパラメータについて詳しい属性を定義します。入出力フィールドのパラメータは、アプリケーション・プログラムで指定されたMDAデータを利用して取得し、使用しないパラメータは省略することが可能です。アクション定義部は<ACTION>で始まり<END>で終わります。

アクション定義部は以下のように構成されます。

パラメータ番号 {パラメータ名*}
             {CHAR(n) | NCHAR(n) | FIXED(n) | DEC(n[,pos])}
             [LIST(d1) RETURN(d2)]
             [INIT(初期値 | \PARMn)]
             [FIELD(フィールド名)]
             [CURSOR]
             [IMAGE]
             [/* コメント */]

以下は、アクション定義部の各オペランドについての説明です。

項目 説明

パラメータ番号

メニュー定義体のすべてのパラメータに対して付与される番号であり、1から始まり連続して続きます。アクション・フィールドのパラメータ番号の順序は、アプリケーション・プログラムから渡されるデータの順序であり、メニュー定義体の順序とは関係ありません。

パラメータ名

メニュー定義体のパラメータに与える名前です。メニュー原型部の同じ名前を持つフィールドとマッチングされます。

*

MDAとデータが対応するとき、入出力の対象として扱わないデータをアステリスク(*)で宣言します。

CHAR(n)

nバイトの文字列フィールドを意味します。

NCHAR(n)

日本語データ(2バイト)のフィールドを意味します。このときの長さ(n)は、日本語の文字数であり、実際の長さは2×nバイトです。

FIXED(n)

符号付きまたは符号無し整数型フィールドを意味します。

桁数(n)は15、16、31、32に限定され、15、31は符号付き整数、16、32は符号無し整数です。

DEC(n[,pos])

符号付き10進数の固定小数点データです。桁数(n)は15、7に限定されます。

小数点指定引数(pos)は、データの右端からnの分だけの小数点位置です。省略する場合はゼロになります。

LIST(d1) RETURN(d2)

LISTに指定されたd1が入力されたら、RETURNに指定されたd2をアプリケーション・プログラムに返します。

INIT

表示するデータが存在しない場合は、以下の設定値でデータを初期化します。

  • 初期値 : 初期値に指定された値でデータが初期化されます。

  • PARMn : MDAのn番目のパラメータの値でデータが初期化されます。アプリケーション・プログラムで出力データを表示するためには、同オプションを設定する必要があります。省略する場合は、空白が表示されます。

FIELD

メニュー原型部上にパラメータ名ではなく、同オペランドで指定されたフィールド名が明示されていることを示します。OpenFrameでは解析(Parsing)のみサポートしています。

CURSOR

カーソルを設定するフィールドを示します。同オペランドが省略された場合は、最初の入力フィールドにカーソルを位置させます。

IMAGE

FIXEDまたはDECで定義されたパラメータの数値データを画面上に表現する形式を以下のような文字列で指定することができます。

  • + : 最初の位置に表示された場合は正のデータです。有効数字に先行するゼロは、すべてゼロサプレスします。

  • - : 最初の位置に表示された場合は負のデータです。有効数字に先行するゼロは、すべてゼロサプレスします。

  • ¥ : 通貨記号です。有効数字の先頭に「¥」を表示します。これに先行するゼロは、すべてゼロサプレスします。

  • _ : ゼロサプレス文字です。有効数字に先行するゼロは、すべてゼロサプレスします。

  • * : ゼロサプレス文字です。有効数字に先行するゼロは、すべて「*」に置き換えます。

  • # : ゼロサプレスせずに、数字を示します。

  • 点(.) : 小数点の位置を示します。

  • コンマ(,) : 挿入文字として使用します。ゼロサプレスが発生する場合を除いて、対応する位置に「,」が挿入されます。

コメント

アクション定義部にコメントを記述することができます。

コメント文は「/*」と「*/」の間に記述しますが、その内容に「/*」または「*/」を含むことはできません。

3. tsomapgen

tsomapgenは、テキスト・ファイルで作成された最初のメニュー定義体ファイルを解析およびコンパイルして、バイナリ・ファイル形式で保存するツールです。TSOMGRやIPFサブルーチンでメニュー定義体を参照する場合、コンパイルされたマップ・ファイルを読み込んで情報を取得します。

  • 構文

    uasage : tsomapgen [options] menuname
    • [options]

      オプション 説明

      -m program

      コンパイルするときの必須オプションであり、コンパイルするメニュー定義体の種類を指定します。

      tsomapgenでコンパイルできるメニュー定義体には、IPFマップがあります。

      [-l pdsname]

      コンパイルされたマップ・ファイルを保存する場所を指定します。

      マップ・ファイルは、区分データセット(PDS)のメンバーとして保存されます。同オプションを省略すると、デフォルト値でコンパイル・コマンドを実行する現在のディレクトリが指定されます。

      [-c]

      コンパイルするとき、DECで指定されたパラメータのメニュー・フィールドの長さとアクション・フィールドのイメージ(image)データ長を比較し、異なる場合は警告メッセージを出力します。

      [-d]

      デバッグ・モードでコンパイルします。コンパイルされたマップ・ファイルの構造体に保存された情報を出力します。

      -v mapfile

      コンパイルとは関係のないオプションであり、コンパイル済みのマップ・ファイルのバージョン情報を出力します。

      [-h]

      tsomapgenの使用方法を出力します。

    • 入力項目

      項目 説明

      menuname

      コンパイルするメニュー定義体の名前を指定します。

      コンパイルされたマップ・ファイルは、{menuname}.mapの形式で保存されます。