DDS21.docx
《DDS21.docx》由会员分享,可在线阅读,更多相关《DDS21.docx(26页珍藏版)》请在冰豆网上搜索。
DDS21
3.0第三章显示文件
本章讨论有关显示文件的以下信息:
·定义
·位置项
·键字项
3.2的“位置项(1至44列)”中给出DDS的1至44列规则和范例。
3.3的“键字项(45至80列)”中给出了定义DDS键字的规则和范例。
键字按字母顺序说明。
关于如何选择显示文件的位置项和键字,请详见《DB2/400数据库程序设计》一书。
3.1用DDS定义显示文件
为定义一个显示文件,按如下顺序指定各项:
⒈文件层项(可选)
⒉记录层项
⒊帮助层项(可选)
⒋字段层项(可选)
在文件中至少要指定一个记录格式。
一个显示文件中的最大记录格式数为1024个。
一个记录格式中的最大字段数为32,763个。
每一记录可显示的最大字段数为4095个。
每一记录格式中所有字段和指示器的最大总长为32,763字节,不包括用法部分(I,O,B,M,H,P)。
详见3.2.13.1的内容。
关于可输入字段的最大数目,请参见《应用显示程序设计》一书。
注:
通过建立显示文件命令(CRTDSPF)指定文件名,而不是在DDS中规定文件名。
在第一章“简介”中有对文件、记录、帮助和字段层项及规定DDS键字语法规则的解释。
在附录B“举例”中有完整的显示文件的例子。
图3-1给出了显示文件的编码例子。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00100A*DISPLAYFILEEXAMPLE
00101A*
00102AREF(PAYROLL)
00103ARMENU
00104AHHLPARA(111280)
00105AHLPRCD(RECORD1FILEA)
00106AN01
00107AO02FLDA20I2O22DSPATR(HI)
00108AFLDB22N2B32
00109A7273
00110AO606162
00111AA63DSPATR(HI)
00112AFLDC7Y0B720DSPATR(RIPC)
00113A4243
00114AO6061
00115AO6292'Constant'
00116AFLDDR112
图3-1显示文件编码例子
3.2位置项(1至44列)
本部分描述了如何指定显示文件数据描述说明表的前44个位置。
剩余部分见3.3“键字项(45至80列)”。
图3-1给出了显示文件的一些位置项。
3.2.1顺序号(1至5列)
用这些位置来指定表中每一行和列的顺序号。
顺序号是可选的且仅为文档所用。
3.2.2格式类型(第6列)
此位置键入A来指定此表为DDS格式。
格式类型是可选的且仅为文档所用。
3.2.3注释(第7列)
在此位置键入星号(*)来标识这一行为注释行。
八至八十列为注释的内容。
空行(7至80列没有字符)亦被认为是注释。
DDS中注释可在任何位置出现且只保存在源文件中。
注释只在源计算机打印输出中,但不在扩展源计算机打印输出中。
3.2.4条件限定(7-16列)
7至16列是一个多字段区,在此区内可指定可选指示器。
可选指示器是从01至99的2位数字。
在程序中可将可选指示器置为on(十六进制F1)或off(十六进制F0)来选择一个字段或一个键字。
可通过指示器选择字段,从而在不同的输出操作来显示不同的数据,而不必为每一种组合字段定义不同的记录格式。
条件是由二列九个指示器的“与”分组,且在字段或键字被选定之前这些批示符必须全起作用(指定N为无效,不指定N为有效)。
每个条件最多可指定九个指示器,每一字段或键字最多可指定九个条件。
因此,每一字段或关键字最多可指定81个指示器。
当某条件需一个以上指示器且条件满足前必须是ON或OFF时,要规定“与”条件。
即指定了第一个指示器后,“与”上第二个,再“与”上第三个,如此下去,在条件满足且字段或键字被选择之前,所有的提示器必须全部有效。
在最后一组(或只此一组)指示器指定时,在同一行上要指定字段或键字。
可为一个字段或键字指定几个条件,这样只要满足了其中任一条件就选择该字段或键字。
这叫做“或”(OR)关系。
在“或”关系中,如果满足第一个条,或者是第二个条件,或者是第三个条件,如此下去,就选择该字段或键字。
“或”关系中的条件可只有一个指示器构成,或由几个指示器“与”起来构成。
多个指示器可“与”起来构成一个条件。
多个条件“或”起来可为程序提供几种选择字段或键字的方式。
·第7列(AND)
如果需多于三个指示器来构成一个“与”条件,可在下一行或下几行中指定指示器。
可在第二行或下几行位置的第7列键入A来继续“与”条件,或此处为空白,因为缺省值即为A。
·第7列(OR)
如果指定的几个条件是“或”关系,则每个条件必须各占一行,且除第一个条件外,第7列必须为“O”。
为第一个条件指定“O”会产生一条警告信息,且此位置被假定为空白。
·第8、11、14列(NOT)
如果想把一个指示器置为OFF,只需在此指示器之前位置指定“N”(位置8、11或14)。
3.2.5多键字字段条件
若要条件限定一个字段,字段名(或常量)和最后一个(或仅有的一个)指示器必须在同一行上。
如果不是选择字段的输出操作,为该字段指定的键字全不起作用,不考虑这些键字是怎样条件限定的。
例如,在图3-1中,指示器01置为off或指示器02为on时,选择FLDA。
如果FLDA没选择,与该字段相关的所有键字,比如,DSPATR(H2)都被忽略。
若需条件限定一个或多个键字,最后一个(或仅有的)指示器必须出现在键字同一行上。
如果条件适用于多于一行的键字,必须对这些指示器使用键字条件作用于所有键字。
关于DDS语法规则详见第一章“简介”。
显示尺寸条件名:
若使程序在非24行×80列显示尺寸的显示设备上打开文件,可在文件层上指定DSPSIZ(显示尺寸),然后有条件的使用键字及在DSPSIZ中指定“显示尺寸条件名”来分配字段。
如果没有指定DSPSIZ,则程序只能在显示设备上以24×80的显示尺寸打开文件。
下表列出每种显示设备的显示尺寸条件名。
设备
显示尺寸
显示尺寸条件名
3179
3180
3196
3197(ModelsC1andC2)
3476
3487(ModelsHA,HC,HG,andHW)
3488(SeeNote2)
3486(ModelsBAandBG)
5251(Models11and12)
5291
5292
24x80个字符
(1920个字符)
*DS3
3180
3197(ModelsD1,D2,W1,
andW2)
3477(ModelsFA,FC,FD,
andFG)
3487(ModelsHA,HC,HG,
andHW)
27x132个字符
(3564个字符)
*DS4
注1:
可不用*DS3,*DS4而自已定义一个显示尺寸条件名。
见DSPSIZ键字说明,弄清怎样指定用户
定义条件名。
注2:
取决于显示设备所连的监示器。
图3-2说明了如何指定DSPSIZ键字和显示尺寸条件名。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A12
00010ADSPSIZ(27132*LARGE2480*NORMAL)
00020ARRECORDA
00030AFIELDA10012
00040AFIELDB1001120
00050A*NORMAL149
00060AFIELDC100271
00070A*NORMAL151
A
图3-2规定DSPSIZ键字和显示尺寸条件名
在图3-2中,主显示尺寸的显示尺寸条件名是*LARGE1(52至34列),次显示尺寸的显示尺寸条件名为*NORMAL2(66至75列)。
FIELDA在两个显示尺寸都出现在第一行第2列。
FIELDB在主显示尺寸中出现在第1行第120列。
*LARGE的缺省值在次显示尺寸出现在第1行第49列(在位置9至16指定为*NORMAL)。
FIELDC在主显示尺寸出现在第27行第1列,在次显示尺寸出现在第15行第1列。
只有次显示尺寸(此例中*NORMAL)可用于条件限定字段位置。
使用显示尺寸条件名的方式类似于使用可选指示器,只是显示尺寸条件名不出现在程序中也不出现在输出记录中。
如果显示文件用某个显示尺寸打开,则相应的显示尺寸条件为ON。
使用显示尺寸条件名时,需遵循以下规则:
·指定DSPSIZ来确定主显示尺寸和次显示尺寸。
如果没有指定DSPSIZ,缺省为
DSPSIZ(*DS3)。
·只能为某个条件确定一个显示尺寸条件名。
不能把多个显示尺寸条件名“与”(AND)
及“或”(OR)起来,也不能把显示尺寸条件和可选指示器“与”(AND)及“或”
(OR)起来。
·显示尺寸条件名必须从第9列开始。
·显示尺寸条件名可由用户定义。
详见3.3.42“DSPSIZ(显示尺寸)”的键字说明。
·可在第8列指定N来为主显示尺寸指定“非”(NOT)条件。
注:
第8列为N意味着在其余的显示尺寸条件之间是或(OR)的关系。
例如,当在DSPSIZ中指定*DS3为次显示尺寸时,N*DS4即等价于*DS3。
绝不能用显示尺寸条件名来代替记录中某一字段的行或位置顺序。
字段在显示文件中是由主显示定位排好序。
如果次定位改变主定位排好的顺序,则在文件建立时会产生严重错误。
例如,FLD1和FLD2分别由主显示定位于第2行第2列和第4行第2列。
在次显示尺寸中用显示尺寸条件名来使FLD2显示在FLD1前面。
在次显示尺寸中指定某一字段的位置时,只能指定8至16列(条件限定)和39至44列(位置)。
如果没有为一个键字指定有效条件名,则在DSPSIZ中指定的主条件名为缺省值。
图3-3给出显示尺寸条件名和主显示尺寸的正确的和不正确的组合,此时在DSPSIZ中同时指定了两种显示尺寸,但第一个规定不同。
图3-3有效的显示尺寸条件规定
显示尺寸条件名
(1)
24x80DSPSIZ(*DS3...)或
DSPSIZ(2480...)主显示尺寸
27x132DSPSIZ(*DS4...)或
DSPSIZ(27132...)主显示尺寸
*DS3
错误
(2)
有效
*DS4
有效
错误
(2)
N*DS3
有效
错误(3)
N*DS4
错误(3)
有效
注:
⒈有关这些显示尺寸条件名的用户定义名,见DSPSIZ说明。
⒉该显示尺寸条件名有错误,因为显示尺寸为主显示尺寸。
⒊这些显示尺寸条件名有错误,因为主和次定位隐含着相同的显示尺寸。
一个由
非(NOT)条件限定的条件名隐含着或(OR)关系。
例如,N*DS4隐含着*DS3。
图3-4和图3-5给出键字(此例中为MSGLOC)的显示尺寸条件限定。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00030ADSPSIZ(*DS3*DS4)
00040A*DS4MSGLOC(26)
A
图3-4显示尺寸条件限定(例1)
在图3-4中,显示附条件名指定为*DS4,所以信息在27×132显示器上为第26行,在24×80显示器(缺省)中为第25行。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00080ADSPSIZ(*DS4*DS3)
00081AMSGLOC(26)
A
图3-5显示尺寸条件限定(例2)
在图3-5中,由于DSPSIZ键字中主显示尺寸(*DS4)是缺省值,所以即使没有指定显示尺寸条件名,信息行在27×132显示器上仍为第26行,在24×80显示器上仍为第25行。
3.2.6名字或规范的类型(第17列)
在此位置指定一有效值来标识19至28列的名字类型。
显示文件的有效项为:
项含义
R记录格式名
H帮助说明
空白字段名
图3-1给出如何对名字类型编码。
关于名字类型,详见3.2.8“名字”部分。
关于帮助说明,详见3.3.57“HELP(帮助)”部分。
3.2.7保留(第18列)
任何文件类型都不用此位置。
除非用作注释,否则此位置空白。
3.2.8名字(19至28列)
用这些位置规定记录格式名和字段名。
关于在DDS中指定记录或字段名时的规则,参见1.2中“语法规则”。
名字必须从第19列开始。
图3-1给出了如何指定记录格式名和字段名。
3.2.8.1记录格式名
当17列为R时,19至28列的名字为记录格式名。
一个显示文件可有多个记录格式名,但该文件中的每个记录格式名在此文件中都必须唯一。
3.2.8.2字段名
如果17列为空白,则19至28列的名字为字段名。
记录格式中的字段名必须唯一。
3.2.8.3常量字段
常量字段是未命名字段(19至28列必须空白)。
以下规则适用于常量字段:
·位置17至38必须是空白。
·要求有字段位置(39至44列)。
·可用指示器对字段进行条件限定(7至16列)。
·可用显示尺寸条件名指定次显示定位(8至16列)。
只能指定显示尺寸条件名和定
位。
就是说,第7列、17至38列、以及45至80列必须为空白。
·常量本身用以下项之一在45至80列定义:
—显式DFT键字(在一对单引号中指定常量值做DFT的值),
—隐式DFT键字(不使用DFT键字,仅用一对单引号中指定值)
—DATE键字(不指定值,见DATE键字说明)
—TIME键字(不指定值,见TIME键字说明)
—SYSNAME键字(不指定值,见SYSNAME键字说明)
—USER键字(不指定值,见USER键字说明)
—MSGCON键字(规定信息描述、信息文件、库名以及信息描述的长度)。
3.2.8.4如何确定记录格式中的字段顺序
记录格式中规定的字段顺序与程序编译时程序所用的字段顺序是一致的。
(没有命名的字段不出现在程序中)。
在39至44列指定的命名和未命名字段位置决定了字段在显示屏上的顺序。
详见3.2.14“位置(39至44列)”隐式字段(38列为H)和程序到系统字段(38列为P)在显示器上不出现。
3.2.9引用(第29列)
将此位置定为R,能利用OS/400程序的引用功能,把一个先前定义的命名字段(称为被引用字段)的属性拷贝给要定义的字段。
被引用字段可提前在当前定义的显示文件中定义,也可在先前建立的数据库文件中,(该数据库文件由REF或EFFLD键字指定)。
字段属性包括字段的长度、数据类型和小数点位置,以及ALIAS(别名)、FLTPCN(浮点精度)、CCSID(编码字符集标识)、TEXT、编辑和有效性检验键字。
如果29列没有指定R,对此字段就不能使用引用功能,必须另行规定属性。
在文件层、记录层、帮助层上的29列,必须为空白。
如果引用字段名和要定义的字段名相同,则只需将29列指定为R(在19至28列写字段名)。
如果要定义的字段名和被引用字段名不同,则必须用REFFLD(引用字段)键字来指定被引用字段名。
可以用定义被引用字段的文件名做为REF或REFFLD的参数。
参见3.3.112“REF(引用)”,3.3.113“REFFLD(引用字段)”和附录A,“何时指定REF和REFFLD”,弄清OS/400程序如何识别被引用字段。
可以不必拷贝先前定义字段的所有属性给定义的字段。
若需替换引用字段的某些属性,按如下方式为要定义的字段指定属性:
要替换EDTCDE(编辑编码)或EDTWRD(编辑字)键字,需为要定义的字段指定EDTCDE或EDTWRD。
可通过指定DLTEDT(删除编辑)键字为要定义的字段删除这些键字。
要替换CHECK(检验)、COMP(比较),RANGE(范围)和VALUES(值)有效性检验键字,及CHKMSGID(检验信息标识)键字,可为所定义的字段重新指定这些有效性检验键字。
可通过指定DLTCHK(删除检验)键字为所定义的字段删除这些键字。
当替换一些属性说明时,其它属性也受到影响,具体如下:
·如果为字段定义键盘转换属性,字段长度或小数点位置,那么编辑和有效性检验键
字都不能从被引用字段拷贝过来。
·如果要把先前定义的数据类型重定义为字符型(35列为M、A、X或W)则小数点
位置不被拷贝。
但如果35列为N、D或I,并且36和37列(小数点位置)为空白,
则所定义的字段与被引用字段的小数点位置相同。
对D类型来说,小数点位置必须
为零。
显示文件不支持压缩十进制和二进制字段。
这样,如果引用了这些类型的字段,所赋的类型的带键盘转换的区位十进制,具体如下:
·如果所定义的字段编辑有效,则键盘转换仅为数字型(35列为Y)。
·如果所定义的字段编辑无效,则键盘转换为有符号数字型(35列为S)。
当引用字段包含REFSHIFT(引用转换)键字时,为REFSHIFT所指定的值作显示文件键盘转换。
然而,如果为新字段指定的数据类型与REFSHIFT键字所指定的键盘转换不兼容,该键字就不拷贝给新字段。
注:
显示文件建立后,可删除或修改被引用文件,而不会影响显示文件中的字段描述。
把显示文件删除再重新建立,可将引用文件中的修改反映到新的显示文件中。
3.2.10长度(30至34列)
必须为每一个命名的字段指定长度,除非从被引用字段中把长度拷贝过来。
长度就是当I/O操作使用一个字段时要向程序传送或从程序接收的数据字节数。
该长度称为字段的程序长度。
一个字段出现在显示器上时的长度称为该字段的显示长度。
显示长度要大于或等于程序长度。
字段的显示长度由键盘转换(35列)和其它字段说明,例如小数点位置(36和37列),以及编辑功能确定的。
详见3.2.11“数据类型/键盘转换(35列)”内容。
显示长度不包括字段的起始和结束属性字符。
但当设计显示布局进行字段定位时,必须考虑这些属性字符。
在一个记录中,如果字段间只有一个位置间隔时,则前一字段的结尾属性字符会与后一字段的起始属性字符重叠。
详见3.2.14“位置(39至44列)”内容。
字符字段的最大长度等于显示尺寸减一。
(留有起始属性字符空间)。
数字(区位十进制)字段的最大长度为31位。
单精度浮点数字段的最大长度为9位数字,双精度浮点数字段的最大长度为17位数字。
不能为常量字段确定字段长度。
关于常量字段长度的解释,详见DATE、DFT、MSGCON和TIME键字说明。
如果定长度,必须右对齐。
前置零可选。
图3-2给出不正确的和正确的字段长度说明。
|...+....1....+....2....+....3....+....4....+....5
00010AFIELD17
A
00020AFIELD27
A
00030AFIELD3R+7
A
注:
FIELD1的字段长度不正确,FIELD2和FIELD3指定的字段长度是正确的。
图3-6不正确和正确的长度说明
如果使用了被引用字段,则可通过指定新值或增、减量来替换字段的长度。
增加长度值,用+n,n为增加的长度。
减少长度值,用-n,n为减少的长度。
例如,一个数字字段的+4,表示该字段的长度比被引用字段的长度多4位。
在某些情况下,如果指定长度值,由数据库文件字段确定的键字并不包括在显示文件中。
详见3.2.9中“引用”内容。
字段不能占据显示器的第一个位置。
第一个位置保留给属性字符。
例如,在24×80的显示器上,定义一个有符号数字段时,不能规定39至41列(行位置)为1,42至44列(列位置)为1,因为该字段起始位置为1是不行的。
3.2.11数据类型/键盘转换(35列)
35列为显示文件的数据类型/键盘转换属性。
它并不决定程序中使用字段的数据类型。
36至37列(小数位)决定字段的数据类型。
详见3.2.12“小数位”的内容。
键盘转换属性自动转换有数据输入键盘的5250工作站,而对所有键盘,限制工作站用户为某一字段输入内容。
但键盘转换属性不能转换带有类打字机—键盘的5250工作站。
键盘转换属性不能限制程序向某一字段写入的方式。
程序可以向一个数字字段写入字母字符,在大多数情况下,也可读该字段并且接收这些字符。
所有限制都只与程序设计所用语言有关。
3.2.11.1显示文件有效项
以下为显示文件的有效项:
项含义允许数据类型
空白缺省
X仅为字母字符
A字母数值转换字符
N数值转换字符或数值
S有符号数值数值
Y仅为数值数值
W片假名(仅为日本国用)字符
I禁止键盘输入字符或数值
D仅为数字字符或数值
M仅为数值字符字符
数据类型
F浮点数值
图3-1和图3-7给出如何指定键盘转换属性。
键盘转换属性在以下部分详细说明。
缺省(空白):
如果35列为空白,36和37列(小数位)内容决定字段的数据类型,具体如下:
·如果36和37列为有效值,则数据类型为区位十进制,键盘转换属性为有符号数值
(S),除非同时指定编辑键字。
如果指定了编辑键字,则键盘转换属性为仅为数值
型(Y)。
·如果36和37列没有值,则数据类型为字符,键盘转换属性为字母数值转换(A)。
如果对被引用字段指定了REFSHIFT键字,则使用所指定的值。
否则,在显示文件中压缩十进制或二进制数据转换成区位十进制。
这些转换(转换成压缩十进制或二进制及反过来)仅发生在程序中。
仅为字母(X):
两种键盘都为小写。
只能键入字符A至Z,逗号(,),句点(。
),破折号(—)和空格()。
当键入小写字符a至z时,送往程序的是大写字符。
参考3.3.21.2“LC(小写状态)”内容,弄清如何允许在5250工作站上类打字机的键盘键入小写字符。
字母数值转换(A):
两种键盘均为小写允许进入所有字符。
数值转换(N):
每种键盘都转换为允许数值输入:
数据输入键盘为大写,打字机类键盘为小写。
所有字符都有效。
当满足以下条件时,数值转换字段的显示长度比30至34列规定的长度多一:
·该字段是一个非编辑的、可输入的字段。
·小数位字段值大于零。
显示长度中额外位置为小数位。
注:
有小数位(36和37列)的输入数值转义字段由数据管理按仅数值字段处理的,除非没有编辑属性。
详见3.2.11.1“仅为数值(Y)”键盘属性部分。
有符号数值(S):
每种键盘都被转换为允许数值输入:
数据输入键盘为大写,打字机类键盘为小写。
该字段只能键入0至9这十个数字(没有空格,没有加号,没有减号)。
要跳出该字段,按换行键、Field+键、Field–键或光标移动键。
如果不对该字段输入任何数据,按回