EGL 源格式的表单部件

可以在 EGL 文件中声明表单部件,EGL 源格式对该部件作了描述。如果表单部件仅由一个表单组访问,则建议将该表单部件嵌入在 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
一个文本表单字段。有关详细信息,请参阅表单字段
printForm
指示该表单为打印表单。
printFormProperty
一个打印表单属性。有关详细信息,请参阅打印表单
printFormField
一个打印表单字段。有关详细信息,请参阅表单字段

文本表单属性

文本表单属性如下所示:
formsize = [rows, columns]
联机显示区域中的行数和列数。此属性是必需的。

列值与可以在显示区域中横向显示的单字节字符数相等。

position = [row, column]
表单在显示区域中的显示位置的行和列。如果省略此属性,则该表单为浮动表单并显示在浮动区域中,显示位置为能够放得下整个表单的浮动区域中的下一可用行。
validationBypassKeys = [bypassKeyValue]
标识一个或多个用户击键,该击键导致 EGL 运行时跳过输入字段验证。此属性对于保留用于快速结束程序的击键而言很有用。bypassKeyValue 选项如下所示:
pfn
F 或 PF 键的名称,包括介于 1 与 24 之间(包括 1 和 24)的数字
注: PC 键盘上的功能键通常是 F 键,如 F1,但 EGL 使用 IBM® PF 术语,所以 F1(例如)被称为 PF1。
如果您希望指定多个键值,则使用圆括号来对一组值进行定界,并用逗号将相邻的两个值隔开,如以下示例所示:
  validationBypassKeys = [pf3, pf4]  
helpKey = "helpKeyValue"
标识一个用户击键,该击键使 EGL 运行时向用户显示帮助表单。helpKeyValue 选项如下所示:
pfn
F 或 PF 键的名称,包括介于 1 与 24 之间(包括 1 和 24)的数字
注: PC 键盘上的功能键通常是 F 键,如 F1,但 EGL 使用 IBM PF 术语,所以 F1(例如)被称为 PF1。
helpForm = "formName"
特定于文本表单的帮助表单的名称。
msgField = "fieldName"
文本表单字段的名称,该字段显示一条消息以作为对验证错误的响应或对运行 ConverseLib.displayMsgNum 的响应。
alias = "alias"
不超过 8 个字符的别名,供 EGL 运行时使用。

打印表单属性

打印表单属性如下所示:
formsize = [rows, columns]
联机显示区域中的行数和列数。此属性是必需的。

列值与可以在显示区域中横向显示的单字节字符数相等。

position = [row. column]
表单在显示区域中的显示位置的行和列。如果省略此属性,则该表单为浮动表单并显示在浮动区域中,显示位置为能够放得下整个表单的浮动区域中的下一可用行。
msgField = "fieldName"
文本表单字段的名称,该字段显示一条消息以作为对运行 ConverseLib.displayMsgNum 的响应。
alias = "alias"
不超过 8 个字符的别名,供 EGL 运行时使用。

表单字段

表单字段的图如下所示:


表单字段的语法图
*
指示该字段为常量字段。它没有名称,但具有常量值,该值是在特定于字段的 value 属性中指定的。代码中的语句无法访问常量字段中的值。
fieldProperty
一个字段属性。有关详细信息,请参阅字段属性
fieldName
指定字段的名称。有关规则,请参阅命名约定

代码可以访问已命名字段的值,该字段也被称为变量字段

如果文本表单包含变量字段,而该变量字段开始于一行并结束于另一行,则只能在屏幕宽度与表单宽度相同的屏幕上显示该文本表单。

occurs
字段数组中的元素数目。仅支持一维数组。有关更多详细信息,请参阅关于字段数组
primitiveType
对字段指定的基本类型。该指定值影响最大长度;但任何数字字段都可以作为 NUM 类型的字段生成。

包含 DBCHAR 类型的字段的表单只能在支持双字节字符集的系统和设备上使用。同样,包含 MBCHAR 类型的字段的表单只能在支持多字节字符集的系统和设备上使用。

文本或打印表单不支持基本类型 FLOAT、SMALLFLOAT 和 UNICODE。

length
字段的长度,它是一个整数,表示可以放入字段的最大字符或数字的数量。
decimals
对于数字类型(BIN、DECIMAL、NUM、NUMC 或 PACF),可以指定 decimals,它是用来表示小数点后的位数的整数。最大小数位数是以下两个数字中较小的那一个:18 或声明为 length 的位数。小数点不与数据存储在一起。
dataItemPartName
dataItem 部件的名称,该部件是字段的格式模型,如 typeDef 所述。dataItem 部件必须对表单部件可见,如对部件的引用中所述。

字段属性

本节描述仅在表单字段中才有用的属性。其它属性也很重要,如字段显示属性定义格式的属性验证属性中所述。

对于任何字段

下列属性对表单上的任何字段都有用:
position = [row. column]
在字段之前的属性字节的行和列。此属性是必需的。
value = "stringLiteral"
在字段中显示的字符串。引号是必需的。

可以对任何项指定此属性;例如,在 dataItem 部件声明中指定此属性。

注: 如果 VisualAge® Generator 兼容性已生效,并且设置了文本表单属性 value,则仅当用户返回表单之后才能在程序中使用该属性的内容。因此,在程序中设置的值不需要对程序中的项有效。
fieldLen = lengthInBytes
字段长度;可以在字段中显示的单字节字符数。此值不包括前导属性字节。

数字字段的 fieldLen 值的大小必须能够显示字段可容纳的最大数字以及小数点(如果该数字具有小数位的话)。CHAR、DBCHAR、MBCHAR 或 UNICODE 类型的字段的 fieldLen 值的大小必须能够处理双字节字符以及任何 shift-in/shift-out 字符。

fieldLen 的缺省值是显示基本类型(包括所有格式字符)所需的最大字节数。

对于变量文本字段

下列属性对变量文本字段有用:
cursor = no, cursor = yes
指示第一次显示表单时,屏幕上的光标是否位于字段的开头。在表单中,只有一个字段可以将 cursor 属性设置为 yes。缺省值为 no
modified = no, modified = yes
指示程序是否认为字段已被修改,而无论用户是否更改了值。有关详细信息,请参阅已修正数据标记和 modified 属性

缺省值为 no

protect = no, protect = skip, protect = yes
指定用户是否可以访问该字段。有效值如下所示:
no(变量字段的缺省值)
设置字段,使用户可以覆盖其中的值。
skip(常量字段的缺省值)
设置字段,使用户不能覆盖其中的值。另外,在下列任何一种情况下,光标将跳过该字段:
  • 用户正在跳进顺序中的上一个字段中输入,并且按下 Tab 键或者在上一个字段填充了内容;或者
  • 用户正在跳进顺序中的下一个字段中输入,并且按下 Shift Tab 键。
yes
设置字段,使用户不能覆盖其中的值。
validationOrder = integer
指示字段在验证顺序中的位置。字段的缺省验证顺序就是字段在屏幕上的顺序,即从左到右,从上到下。

对于字段数组

在文本和打印表单上,支持一维数组。在数组声明中,occurs 属性的值大于 1,如以下示例所示:
  myArray char(1)[3];	

数组元素的定位与您对数组中第一个元素指定的位置有关。缺省行为是将元素垂直地定位于连续的行上。

使用下列属性来更改缺省行为:
columns = numberOfElements
每行中的数组元素数目。缺省值为 1。
linesBetweenRows = numberOfLines
包含数组元素的各行之间的行数。缺省值为 0。
spacesBetweenColumns = numberOfSpaces
每个数组元素之间的空格数。缺省值为 1。
indexOrientation = down, indexOrientation = across
指定程序如何引用数组元素:
  • 如果将 indexOrientation 设置为 down,则先从上到下然后从左到右对元素进行编号,从而使给定列中的元素具有顺序编号。缺省情况下,indexOrientation 的值为 down
  • 如果将 indexOrientation 设置为 across,则先从左到右然后从上到下对元素进行编号,从而使给定行中的元素具有顺序编号。
可以覆盖数组元素的属性。例如,在以下字段声明中,在 myArray 的第二个元素中覆盖了 cursor 属性:
  myArray char(10)[5]	
    {position=[4,61], protect=skip, myArray[2] { cursor = yes} };
使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.