EGL ソース形式の書式パーツ

書式パーツは、EGL ソース形式 で記述された EGL ファイル内に宣言します。書式パーツが 1 つの書式グループだけからアクセスされる場合は、書式パーツを formGroup パーツに埋め込むことをお勧めします。書式パーツが複数の書式グループからアクセスされる場合は、EGL ファイルのトップレベルに書式パーツを指定する必要があります。

テキスト書式の例を次に示します。
  Form myTextForm type textForm 
    {
      formsize= [24, 80],
      position= [1, 1],
      validationBypassKeys=[pf3, pf4],
      helpKey="pf1",
      helpForm="myHelpForm",
      msgField="myMsg",
      alias = "form1"
    }

     * { position=[1, 31], value="Sample Menu" } ;
     * { position=[3, 18], value="Activity:" } ;
     * { position=[3, 61], value="Command Code:" } ;

     activity char(42)[5] { position=[4,18], protect=skip } ;
   
     commandCode char(10)[5] { position=[4,61], protect=skip } ;

     * { position=[10, 1], value="Response:" } ;
     response char(228) { position=[10, 12], protect=skip } ;

     * { position=[13, 1], value="Command:" } ;
     myCommand char(70) { position=[13,10] } ;

     * { position=[14, 1], value="Enter=Run F3=Exit"} ;

      myMsg char(70) { position=[20,4] };

		end
印刷書式の例を次に示します。
  Form myPrintForm type printForm 
    {
      formsize= [48, 80],
      position= [1, 1],
      msgField="myMsg",
      alias = "form2"
    }
    * { position=[1, 10], value="Your ID: " } ;
    ID char(70) { position=[1, 30] };
    myMsg char(70) { position=[20, 4] };
 	end
書式パーツのダイアグラムは、次のとおりです。

書式パーツの構文図
Form formName ... end
パーツを書式として識別し、パーツ名を指定します。命名の規則については、『命名規則』を参照してください。
textForm
書式がテキスト書式であることを示します。
textFormProperty
テキスト書式のプロパティー。詳細については、『テキスト書式』を参照してください。
textFormField
テキスト書式のフィールド。詳細については、『 Form fields』を参照してください。
printForm
書式が印刷書式であることを示します。
printFormProperty
印刷書式のプロパティー。詳細については、『印刷書式』を参照してください。
printFormField
印刷書式のフィールド。詳細については、『 Form fields』を参照してください。

テキスト書式のプロパティー

テキスト書式プロパティーは以下のとおりです。
formSize = [rows, columns]
オンライン表示領域の行数および列数。このプロパティーは必須です。

列値は、表示領域に水平に表示できる 1 バイト文字の数に相当します。

position = [row, column]
表示領域内の、書式が表示される行と列。このプロパティーを省略すると、書式は浮動書式となり、浮動域に表示されます (書式全体を浮動域に表示できる次の空き行に表示されます)。
validationBypassKeys = [bypassKeyValue]
EGL ランタイムに入力フィールドの検証をスキップさせる 1 つ以上のユーザー・キー・ストロークを示します。このプロパティーは、プログラムを即座に終了させるキー・ストロークを予約するときに便利です。 bypassKeyValue オプションは以下のとおりです。
pfn
F または PF キーの名前。1 から 24 の数を含みます (両端を含む)。
注: PC キーボードのファンクション・キーは、F1 などのように F キーの場合もありますが、EGL では IBM® PF 用語を使用し、例えば、F1 は PF1 と呼ばれます。
複数のキー値を指定する場合は、次の例のように、値のセットを括弧で括り、各値をコンマで区切ります。
  validationBypassKeys = [pf3, pf4]  
helpKey = "helpKeyValue"
EGL ランタイムにヘルプ書式をユーザーに表示させる、ユーザー・キー・ストロークを示します。helpKeyValue オプションは以下のとおりです。
pfn
F または PF キーの名前。1 から 24 の数を含みます (両端を含む)。
注: PC キーボードのファンクション・キーは、F1 などのように F キーの場合もありますが、EGL では IBM PF 用語を使用し、例えば、F1 は PF1 と呼ばれます。
helpForm = "formName"
テキスト書式に固有のヘルプ書式の名前。
msgField = "fieldName"
検証エラーの応答として、または ConverseLib.displayMsgNum が実行されたことに対する応答としてメッセージを表示するテキスト書式フィールドの名前。
alias = "alias"
EGL ランタイムが使用する 8 文字以下の別名。COBOL 環境では、書式名が 8 文字より長い場合に別名が必要です。

印刷書式のプロパティー

印刷書式プロパティーは以下のとおりです。
formsize = [rows, columns]
オンライン表示領域の行数および列数。このプロパティーは必須です。

列値は、表示領域に水平に表示できる 1 バイト文字の数に相当します。

position = [row. column]
表示領域内の、書式が表示される行と列。このプロパティーを省略すると、書式は浮動書式となり、浮動域に表示されます (書式全体を浮動域に表示できる次の空き行に表示されます)。
addSpaceForSOSI = yes, addSpaceForSOSI = no)
COBOL 環境でレポートの生成を指示します。このプロパティーを no に設定すると、EGL ランタイムは、MBCHAR 型のフィールド内にあるシフトイン・シフトアウト (SO/SI) 文字を含めて、行をそのまま出力します。このプロパティーを yes (デフォルト) に設定すると、EGL ランタイムは各 SO/SI 文字の代わりにスペースを挿入します。

書式定義と同じ列を印刷書式に使用するには、各 SO または SI 文字の代わりにスペースを印刷するプリンターに対しては no を指定し、印刷行から SO または SI 文字を削除するプリンターに対しては yes を指定します。

msgField = "fieldName"
ConverseLib.displayMsgNum が実行されたことに対する応答としてメッセージを表示するテキスト書式フィールドの名前。
alias = "alias"
EGL ランタイムが使用する 8 文字以下の別名。COBOL 環境では、書式名が 8 文字より長い場合に別名が必要です。

書式フィールド

書式フィールドのダイアグラムは、次のとおりです。


書式フィールドの構文図
*
フィールドが定数フィールドであることを示します。定数フィールドは名前を持たず、フィールド固有の value プロパティーで指定された定数値を持ちます。ユーザーのコード内の文は定数フィールドの値にアクセスできません。
fieldProperty
テキスト書式のフィールド・プロパティーです。詳細については、『テキスト書式のフィールド・プロパティー』を参照してください。
fieldName
フィールド名を指定します。命名の規則については、『命名規則』を参照してください。

ユーザーのコードは名前付きフィールドの値にアクセスできます。名前付きフィールドは変数フィールドとも呼ばれます。

ある行で始まり、別の行で終了する変数フィールドがテキスト書式に含まれる場合、テキスト書式は画面幅が書式幅と等しい画面上にのみ表示できます。

occurs
フィールド配列内のエレメント数。1 次元配列のみがサポートされています。詳細については、『フィールド配列用』を参照してください。
primitiveType
フィールドに割り当てられるプリミティブ型。この指定は最大長に影響しますが、すべての数値フィールドは NUM 型として生成されます。

DBCHAR 型のフィールドを含む書式は、2 バイト文字セットをサポートするシステムおよびデバイスでのみ使用できます。同様に、MBCHAR 型のフィールドを含む書式は、マルチバイト文字セットをサポートするシステムおよびデバイスでのみ使用できます。

プリミティブ・タイプ FLOAT、SMALLFLOAT、および UNICODE は、テキスト書式または印刷書式ではサポートされていません。

length
フィールドの長さ。フィールドに格納できる文字数または桁数の最大値を表す整数です。
decimals
decimals は、数値タイプ (BIN、DECIMAL、NUM、NUMC、または PACF) に対して指定できます。これは、小数点以下の桁数を表す整数です。小数部の桁の最大数は、18 または length で宣言された桁数の小さいほうです。小数点は、データとともに保管されません。
dataItemPartName
フィールドの形式のモデルである dataItem パーツ名 (『typeDef』を参照)。dataItem パーツは書式パーツから可視でなければなりません (『パーツの参照』を参照)。

テキスト書式のフィールド・プロパティー

テキスト書式のフィールドでのみ使用できるプロパティーについては、後述します。以下のプロパティーが最も広く使われており、また、使用可能です。

任意のフィールド用

以下のプロパティーは、書式の任意のフィールドに対して有用です。
position = [row. column]
フィールドに先行する属性バイトの行と列。このプロパティーは必須です。
value = "stringLiteral"
フィールドに表示される文字ストリング。引用符が必要です。

このプロパティーは、dataItem パーツの宣言内など、 任意の項目に対して指定できます。

注: VisualAge® Generator との互換性モードが有効な場合、テキスト書式プロパティー value を設定すると、そのプロパティーの内容は、ユーザーが書式を戻した後にのみプログラム内で使用できるようになります。この理由により、プログラムで設定した値は、プログラム内の項目に対して有効である必要はありません。
fieldLen = lengthInBytes
フィールドの長さ。フィールドに表示できる 1 バイト文字の数です。この値には先行する属性バイトは含まれません。

数値フィールドに対する fieldLen の値は、フィールドに格納可能な最大の数値を表示できる長さに、(数値に小数点以下の桁がある場合は) 小数点を足した大きさでなければなりません。 CHAR、DBCHAR、MBCHAR、または UNICODE 型のフィールドに対する fieldLen の値は、2 バイト文字と SI/SO 文字を考慮した大きさでなければなりません。

デフォルトの fieldLen は、すべてのフォーマット設定文字を含めて、可能な最大のプリミティブ型の数字を表示するために必要なバイト数です。

変数テキスト・フィールド用

以下のプロパティーは、変数テキスト・フィールドに対して有用です。
cursor = no, cursor = yes
書式が最初に表示されるときに、画面上のカーソルがフィールドの始めにあるかどうかを示します。書式内の 1 つのフィールドだけについて、カーソル・プロパティーを yes に設定できます。デフォルトは no です。
detectable = no, detectable = yes
フィールドをライト・ペンまたは (エミュレーター・セッションの場合) カーソル・クリックで選択した場合、フィールドの変更されたデータ・タグを設定するかどうかを指定します。

detectable プロパティーは、COBOL プログラムでのみ使用でき、テキスト書式フィールドで intensity プロパティーが invisible 以外の場合にのみ有効です。

フィールド内容の開始文字 (value プロパティーで指定される) は指定文字である必要があり、 これにより、ユーザーがフィールドをクリックしたときのアクションが指示されます。最もよく使われる指定文字は、以下のとおりです。
&
即時検出を行います。実行時のフィールドのクリックが、フィールドを変更して ENTER キーを押す動作に等しくなります。
?
遅延検出を行います。実行時のフィールドのクリック動作は、 フィールドの変更に等しくなりますが、プログラムが書式情報を受け取るのは、ユーザーが ENTER キーを押した時か、即時検出が設定されたフィールドをクリックした場合のみです。

変数フィールドの指定文字をユーザーが変更できないようにするには、protect プロパティーを yes または skip に設定します。

IBM 3278 および 3279 端末は、いずれのタイプの検出もサポートします。IBM 3277 端末では、遅延検出のみをサポートします。どの場合も、サポートする端末またはエミュレーターの文書を読むことをお勧めします。

modified = no, modified = yes
ユーザーによる値の変更とは関係なく、プログラムがフィールドを変更されているとみなすかどうかを指示します。詳しくは、 『変更データ・タグおよびプロパティー』を参照してください。

デフォルトは no です。

protect = no, protect = skip, protect = yes
ユーザーがフィールドにアクセスできるようにするかを指定します。有効な値は以下のとおりです。
no (変数フィールドのデフォルト)
ユーザーがフィールドの値を上書きできるよう設定します。
skip (定数フィールドのデフォルト)
ユーザーがフィールドの値を上書きできないよう設定します。また、次のいずれかの場合には、カーソルがフィールドをスキップします。
  • ユーザーがタブ順序の直前のフィールドを操作しているときに、 Tab を押したか、そのフィールドに内容を入力した場合。または、
  • ユーザーがタブ順序の次のフィールドを操作していて、Shift + Tab を押した場合。
yes
ユーザーがフィールドの値を上書きできないよう設定します。
validationOrder = integer
検証順序におけるフィールドの位置を示します。フィールドが検証されるデフォルト順序は、画面上に表示されたフィールドの順序 (左から右へ、上から下へ) です。

フィールド配列用

1 次元配列は、テキスト書式および印刷書式でサポートされています。次の例のように、配列宣言の occurs プロパティーの値は 1 より大きい値です。
  myArray char(1)[3];	

配列エレメントは、配列の最初のエレメントに対して指定された配置を基準にして配置されます。デフォルトの振る舞いでは、エレメントを縦方向の連続行に配置します。

デフォルトの振る舞いを変更するには、以下のプロパティーを使用します。
columns = numberOfElements
各行の配列エレメントの数。デフォルトは 1 です。
linesBetweenRows = numberOfLines
配列エレメントを含む各行の間にある行の数。デフォルトは 0 です。
spacesBetweenColumns = numberOfSpaces
各配列エレメントの間にあるスペースの数。デフォルトは 1 です。
indexOrientation = down, indexOrientation = across
プログラムが配列のエレメントを参照する方法を指定します。
  • indexOrientationdown に設定すると、エレメントの番号は上から下、次に左から右の順になり、ある特定の列内のエレメントに連続する番号が付けられます。 indexOrientation の値は、デフォルトでは down です。
  • indexOrientationacross に設定すると、エレメントの番号は左から右、次に上から下の順になり、ある特定の行内のエレメントに連続する番号が付けられます。
配列エレメントのプロパティーをオーバーライドすることができます。例えば、次のフィールド宣言では、cursor プロパティーは myArray の 2 番目のエレメントでオーバーライドされます。
  myArray char(10)[5]	
    {position=[4,61], protect=skip, myArray[2] { cursor = yes} };
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.