2.3.12 用途(第38列)
用这项指定字段是仅输入的,输入/输出的,或不可输入/不可输出的。
对于物理文件,可指定下列项:
项意义
空白缺省值为B(允许输入和输出)
B 允许输入和输出
由于缺省值即为B,所以无需指定这一项。
在38列上的项是不能由REF和REFFLD键字引用的。因此当显示文件引用物理文件中的一个38列上为B的字段是没有影响的。
对于逻辑文件,可指定下列项:
空白(缺省值):
如果38列是空白,发生下面情况:
·对于简单和多格式逻辑文件(在记录层指定了PFILE),这个字段是可输入/输出的
字段(B)。
·对于连接逻辑文件(在记录层指定JFILE键字),这个字段是只输入的(I)。
B(既输入又输出):
如果38列是B,那么这个字段是一个既输入又输出字段。也就是说,程序既可以从这个字段中读数据亦可以向这个字段写数据。对于连接逻辑文件二者都可的字段是无效的,这是因为连接逻辑文件是一个只读文件。
I(只输入):
如果38列是I,这是一个仅输入的字段。也就是说,程序可以从这个字段读数据,但不能改变它的内容。作为只输入字段的一个典型的情况是键字字段(为了降低对访问路径的维护开销),用户可以看但不能改的敏感字段(如:在顾员记录中的工资),以及这些字段指定SST或TRNTBL键字。
如果程序对指定了只输入字段的记录格式执行一个修改操作,那么只输入字段不被修改,并且也不送出信息。如果程序对一个指定了只输入的字段的记录格式执行一个输出操作,那么只输入字段采用缺省值(见2.4.16DEF键字)。
在物理文件中只输入字段是无效的。
N(二者都不是):
如果38列是N,则这是一个既不输入也不输出的字段并且只对连接逻辑文件有效。这样的字段可以用来作为连接逻辑文件的一个连接字段,但是程序不能用这个字段。
当在物理文件中连接字段的属性不区配时,使用这个字段。在这种情况下,必须重定义一个或两个连接字段,但可能不想在记录格式中包含这些重定义的字段(也就是说,不想让应用程序看到这些重定义的字段),因此,为这些重定义的字段编码N,则它们就不出现在这个记录格式中。
在38列上有N的字段不出现在由程序使用的缓冲区中。但用显示文件字段描述命令(DSPFFD)时将显示这个字段的描述。
既不输入亦不输出字段不能作为选择/省略字段或键字段。
38列上的项不能由REF或REFFLD键字引用。因此显示文件引用逻辑文件中的在38位上为I或B的字段时,是无作用的。
2.3.13 位置(39-44列)
这几位物理文件或逻辑文件不用,除非用它做为注释行的正文外,要为空格。
2.4 键字项(45-80列)
这一节给出对物理文件和逻辑文件有效的键字项。它们是在45-80位上键入的(功能)。关于指定这些键字的通用规则见1.2。
下面这些键字对于物理文件和逻辑文件都是有效的。(除括号中有注释)
ABSVAL                                FIFO
ALIAS                                  FLTPCN
ALL (仅用于逻辑文件)                  FORMAT
ALTSEQ                                LIFO
ALWNULL (仅用于物理文件)              NOALTSEQ
CCSID (仅用于物理文件)                RANGE
CHECK                                  REF (仅用于物理文件)
CHKMSGID                              REFFLD (仅用于物理文件)
CMP                                    REFSHIFT
COLHDG                                RENAME (仅用于逻辑文件)
COMP                                  SIGNED
CONCAT (仅用于逻辑文件)                SST (仅用于逻辑文件)
DATFMT                                TEXT
DATSEP                                TIMFMT
DESCEND                                TIMSEP
DFT (仅用于物理文件)                  TRNTBL (仅用于逻辑文件)
DIGIT                                  UNIQUE
DYNSLT (仅用于逻辑文件)                UNSIGNED
EDTCDE                                VALUES
EDTWRD                                VARLEN
FCFO                                  ZONE
下面这些键字仅对单格式和多格式逻辑文件有效:
PFILE    REFACCPTH
下面键字仅对连接逻辑文件有效:
JPFTVAL  JFILE JOIN
JPUPSEQ      JFLD    JREF
当用DDS来描述一个源文件时(通常使用CRTSRCPF命令而不是DDS),或当用源物理文件作逻辑文件时,不能使用下面的键字:
ABSVAL                                NOALTSEQ
ALTSEQ                                SIGNED
DESCEND                                UNIQUE
FCFO                                  VARLEN
FIFO                                  ZONE
record是什么意思中文LIFO
2.4.1 ABSV AL(绝对值)
使用这个键字段层键字指出当OS/400用一个数字段值做键字排序时省略这个字段的符号。
这个键字没有参数。
下面给出了用区位十进制作键字段的6个记录。
记录数字键字段(区位十进制)十六进制表示
1          98                    F9F8
2          00                    F0F0
3          98-                    F9D8
4          97                    F9F7
5          20                    F2F0
6          99                    F9F9
如果没指定任何顺序键字或ALTSEQ键字,键字段的缺省顺序是SIGNED(有符号),在这种情况下,这些记录是以下面的顺序来排序:
记录键字段数字(区位十进制)十六进制表示
3          98-                    F9D8
2          00                    F0F0
5          20                    F2F0
4          97                    F9F7
1          98                    F9F8
6          99                    F9F9
如果指定了ABSV AL键字,则负数字段用绝对值排序,可以得到下面的排序结果:
记录键字段数字(区位十进制)十六进制表示
2          00                    F0D0
5          20                    F2F0
4          97                    F9F7
1          98                    F9F8
3          98-                    F9D8
6          99                    F9F9
ABSV AL对字符型、日期、时间、时间表和十六进制数据字段无效。它不能与DIGIT、SIGNED、UNSIGNED或ZONE键字一起使用。
ABSV AL(键字段层键字)导致省略ALTSEQ(文件层键字)。如果对一个键字段指定了ABSV AL,那么既使在文件层指定了ALTSEQ,对这个键字段仍然是NOALTSEQ起作用。无论是否指定了NOALTSEQ键字,都是如此。
图2-18给出了如何来指定ABSV AL键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+. (8)
00010A            ORDAMT        5  0
00020A          K ORDAMT                    ABSVAL
A
图2-18 规定ABSV AL键字
2.4.2 ALIAS(替换名)
使用这个字段层键字为一个字段指定替换名。在程序编译时,替换名传给程序代替DDS 中的字段名。是否使用ALIAS名,由高级语言编译程序决定的。关于ALIAS支持的语言的信息请参照相应的高级语言参考手册。
这个键字的格式是:
ALIAS(替换名)
对于ALIAS命名转换参考1.2中语法规则。
替换名必须不同于其它所有的替换名,也不同于记录格式中DDS字段。如果发现重名,将在字段名或替换名上出现一个错误信息。
替换名不能在DDS内部或任一其它的OS/400功能中使用(例如:作为键字段名,作为一个REFFLD键字中指定的字段名或是作为一个在复制文件(CPYF)命令中使用的字段名)。
当引用一个带有ALIAS键字的字段时,除非明确的指定引用字段的ALIAS之外,被引用的字段的ALIAS键字也将被复制。
图2-19显示了如何指定ALIAS键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+. (8)
00010A            FIELDA        25A        ALIAS(CUSTOMERNAME)
A
图2-19 规定ALIAS键字
在上图中FIELDA的替换名是CUSTO MERNAME。
2.4.3 ALL(全部)——仅用于逻辑文件
使用这个选择/省略层键字来指定在对逻辑文件所有选择/省略处理之后的动作。在17位上带有S的ALL指示OS/400选择所有没有满足其它选择/省略规则的记录。在17位上指定0,指示OS/400省略所有没有满足其它选择/省略规则的记录。如果指定ALL必须是在其它的选择/省略键字之后,在ALL键字上不能指定字段名。
这个键字没有参数。
如果没指定ALL键字,缺省的动作是采取为这个文件所做的最后一个选择/省略规范的反面,即:如果最后的规范是选择,那么缺省为省略所有的,而如果最后一个规范是省略,则缺省为选择所有的。
图2-20显示如何指定ALL键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+. (8)
00010A          S ACT                      COMP(EQ 3000)
00020A          S ACT                      COMP(GT 3100)
00030A          O AMT                      COMP(LT 0)
00040A          O                          ALL
A
图2-20 规定ALL键字
2.4.4 ALTSEQ(交替分配顺序)
如果文件是键字访问的一个键,那么用这个文件层键字来指示OS/400,当检索一个文件成员的排序记录时,使用一个交替分配顺序表。
这个键字的格式:
ALTSEQ([库名]/表名)
交替分配顺序表的名字是一个必须有的参数,库名是可选的。如果不指定库名,OS/400使用文件生成时用的库列表(*LIBL)。
在下列条件下ALTSEQ键字是无效的:
·当在建立物理文件(CRTPF)或建立逻辑文件(CRTLF)命令中指定了
FILETYPE(*SRC)时。关于FILETYPE(*SRC)参数值的信息见数据库程序设计。
·当键字段为压缩十进制、二进制或浮点数据类型时。
·当键字段规定ABSV AL或SIGNED时。对这些字段,假定是NOALTSEQ且无需指定,可以对不要求交替顺序的组合键中的任意字段指定NOALTSEQ。
·在建立物理文件(CRTPF)或建立逻辑文件(CRTLF)的SRTSEQ参数中指定了不是*SRC的值。
·ALTSEQ键字不能与REFACCPTH键字一起使用。
对交替分配顺序表,要有使用的权限。交替分配顺序表是使用建立表命令(CRTTBL)生成的。
ALTSEQ使区位键字段做无符号的缺省顺序。可以对某个键字指定SIGNED键字来使该缺省无效。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。