DDS15.docx
- 文档编号:28665998
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:42
- 大小:33.70KB
DDS15.docx
《DDS15.docx》由会员分享,可在线阅读,更多相关《DDS15.docx(42页珍藏版)》请在冰豆网上搜索。
DDS15
2.4.27JFLD(被连接的字段)——仅用于连接逻辑文件
使用这个连接层键字来指明一个逻辑文件中,用来连接物理文件的From字段和To字段。
这些字段都是作为连接字段来引用的。
这个键字的格式是:
JFLD(From—字段名To—字段名)
连接字段必须与作为连接规范的JOIN键字上指明的物理文件中的字段名一致。
在JFLD键字上指定的名必须与在物理文件中的名相同,除非在连接逻辑文件中对其进行了重命名。
如果没指定JOIN键字,则使用JFILE键字。
这个键字仅对连接逻辑文件有效。
对于每个连接规范至少要有一个JFLD键字,一个连接规范是在17列的J指明的。
由于在一个连接逻辑文件中至少要有一个连接规范,所以对每一个连接逻辑文件至少要有一个JFLD键字。
这些字段不必需指定作为连接逻辑文件记录格式中的一个字段。
为了在连接物理文件时指定另外的连接字段,要指定多个JFLD键字。
在JFLD键字上指定的字段名必须或者是在连接记录格式中字段层指定了的名字,或者是在JFILE键字上指定的一个物理文件中的字段名之一。
OS/400使用下面的检索顺序来匹配使用的连接字段:
⒈在连接逻辑文件的字段层,19-28列上指定的字段。
注:
那些指定了CONCAT、RENAME或SST键字的字段可作为连接字段。
CONCAT、RENAME或SST键字中做参数指定的字段不能作为连接字段。
⒉在JOIN键字中指定的物理文件中的字段。
指定连接字段的规则如下:
·from字段必须能在JOIN键字上指定的from文件中找到。
·To字段必须能在JOIN键字上指定的to文件中找到。
·连接字段不必需在连接记录格式中定义。
·from和to字段必须具有相同的属性(长度、数据类型和小数位),但不必需有相同
的名字。
当在物理文件中连接字段具有不同的定义时,必须重定义其中的一个或两
个都重定义。
如果重定义这些字段,则可能发生数据转换错。
见2.3.9“长度”及2.3.10、
2.3.12的说明。
注:
字符字段无须有同样长度,短的连接字段用空格填充使它与长的连接字段长度相同。
在简单连接规范中,JFLD键字中指定的to字段和在JDUPSEQ键字中指定的字段,总长度最多为120个字节。
图2-51和图2-52给出如何指定JFLD键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARJRECJFILE(PF1PF2)
00020AJJOIN(PF1PF2)
00030AJFLD(NAME1NAME2)
A
图2-51规定JFLD键字(例1)
在连接逻辑文件中,JFLD键字指定了在物理文件PF1中的NAME1与物理文件PF2中的NAME2连接。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARJRECJFILE(PF1PF2)
00020AJJOIN(PF1PF2)
00030AJFLD(NAME1NAME2)
00040AJFLD(ADDR1ADDR2)
A
图2-52规定JFLD键字(例2)
在连接逻辑文件中,JFLD键字指定物理文件PF1中的NAME1和ADDR1连接物理文件PF2中的NAME2和ADDR2。
2.4.28JOIN(连接)——仅用于连接逻辑文件
使用这个连接层键字来指明哪一对文件由连接规范来做连接。
这个键字的格式是:
JOIN(from文件to文件)
这个键字仅对连接逻辑文件有效。
可以使用文件名或相关文件号来指明连接哪些文件。
如果在JFILE键字中多次指定了同一个文件,那么必须指定相关文件号。
如果指定文件名,那么必须选择在JFILE键字上只指定了一次的文件。
在每个JFILE键字上,from文件必须在to文件之前出现。
如果指定文件号,那么要与在JFILE键字上指定的文件相对应。
下面是有效值:
文件有效值
from文件号1-31
to文件号2-32
from文件号必须总是小于to文件号。
对from文件和to文件顺序的特别规则,详细信息见2.4.28.1中的图2-55。
在一个连接逻辑文件中,每个次文件仅作to文件一次。
2.4.28.1连接规范
要描述一个连接规范应做下面的事:
·在紧跟记录层之后的17列上指定J(在19-28列的第一个字段名之前)。
17列的J
指出一个连接规范的开始。
·指定JOIN键字。
当在JFILE键字中仅指定两个文件时,JOIN键字是可选的,在JFILE
键字上指定了多于两个文件时,对于每一个次文件要求有一个JOIN键字。
·对每一个连接规范至少要指定一次JFLD键字。
·有另外一个17列上的J或19-28位上出现字段名,标志这个连接规范结束。
对在JFILE键字上指定的每个次文件必须有一个连接规范,因此,在一个连接逻辑文件中要求至少有一个连接的规范。
在一个连接规范内,只能指定一次JOIN键字。
图2-53,图2-54,图2-55给出如何指定JOIN键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARRECORD1JFILE(PFAPFBPFC)
00020AJJOIN(PFAPFB)
00030AJFLD(NAME1NAME2)
00040AJJOIN(PFAPFC)
00050AJFLD(NAME1NAME3)
00060ANAME1
A
图2-53规定JOIN键字(例1)
2-53中PFA与PFB和PFC连接在一起。
图2-54给出如何使用相关文件号指定JOIN。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARRECORD1JFILE(PFAPFBPFC)
00020AJJOIN(12)
00030AJFLD(NAME1NAME2)
00040AJJOIN(13)
00050AJFLD(NAME1NAME3)
00060ANAME1
A
图2-54规定JOIN键字(例2)
图2-54与图2-53是等效的。
PFA是在JFILE键字上指定的第一个物理文件,其相关文件号是1。
PFB和PFC分别是在JFILE键字上指定的第二和第三个文件,它们的相关号分别是2和3。
图2-55给出了物理文件连接的顺序。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARJ3JFILE(VENDORSPARTSPARTWARE+
00020AWAREHOUSE
1
00030AJJOIN(12)2
00040AJFLD(VNBRVNUM)
00050AJJOIN(23)3
00060AJFLD(PNBRPNBR)
00070AJJOIN(34)3
00080AJFLD(WNBRWNBR)
00090AVNAME
00100AVAD1
00110AVAD2
00120APNBRJREF
(2)
00130AWNBRJREF(4)
00140ABIN
00150AQOH
A
图2-55规定JOIN键字(例3)
图中连接逻辑文件是以4个物理文件为基础的。
其中在JFILE键字上指定的第一个文件VENDDRS是主文件,并且其相关文件号是1,而PARTS、PARTWARE和WAREHOUSE是次文件,它们的相关文件号分别用2、3和4。
注:
在JOIN键字上指定号的方式为:
⒈在第一个JOIN键字上的第一个参数(第一个From文件)必须是主文件。
⒉在JOIN键字上的第二个参数(To文件)必须与在JFILE键字上次文件的顺序相同。
如果用文件名而不用相关文件号,那么要象下面那样指定顺序:
JJOIN(VENDORSPARTS)
JJOIN(PARTSPARTWARE)
JJOIN(PARTWAREWAREHOUSE)
⒊在每一个JOIN键字上from和to文件必须是按升序来指定的。
注:
一个文件可以多次的被指定作为from文件。
例如:
上面JOIN键字的参数还可以象下面这样来指定:
JJOIN(12)
JJOIN(23)
JJOIN(24)
但一个文件只可一次被指定作为to文件。
2.4.29JREF(连接引用)——仅用于连接逻辑文件
在连接逻辑文件中,如果使用的字段名在多个物理文件中存在,用这个字段层键字指明在哪个物理文件有你要使用的字段。
这个键字的格式是:
JFEF(文件名¦相关文件号)
既可以指定文件名,亦可以指定相关文件号,如果在JFILE键字上两次使用了同一个物理文件名,那么必须指定相关文件号。
相关文件号对应于在JFILE键字上指定的物理文件名。
例如:
指定JREF
(1)将一个字段与在JFILE上指定的第一个物理文件联系在一起,指定JREF
(2)则是将一个字段与在JFILE键字上指定的第二个物理文件联系在一志。
见图2-57。
这个键字仅对连接逻辑文件有效。
连接逻辑文件是依据两个或更多(最多32个)的物理文件。
在连接逻辑文件记录格式中指定的字段名必须是唯一的对应这个逻辑文件依据的物理文件的某一个字段。
例如:
如果连接逻辑文件引用两个物理文件,且每个物理文件都有一个名为NAME的字段,那么必须规定JREF键字指出字段来自哪一个物理文件。
当字段名在JFILE键字中给出的物理文件中是唯一的,JREF键字是可选的。
例如一个连接逻辑文件是由两个物理文件连接而成,且仅有一个物理文件中有字段名NAME1,那么就无需指定JREF键字。
如果一个连接逻辑文件是仅用一个物理文件连接而成的(在JFILE键字中同名文件出现两次),那么必须为每一个字段指定JREF键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARJOINRECJFILE(PFAPFBPFC)
00020A:
00030A:
00040A:
00050ANAMEJREF(PFB)
A
图2-56规定JREF键字(例1)
在图2-56中,NAME出现在PFA和PFB两个物理文件中,指定JREF(PFB)表明用PFB中的这个字段。
图2-57给出如何用相关文件号的JREF
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARJOINRECJFILE(PFAPFBPFC)
00020A:
00030A:
00040A:
00050ANAMEJREF
(2)
A
图2-57规定JREF键字(例2)
图2-57与2-56是等效的。
在图2-57中,NAME出现在PFA和PFB这两个物理文件中,指定JREF
(2)表明使用PFB中的字段来连接(PFB是在JREF键字上指定的第二个物理文件)。
2.4.30LIFO(后进先出)
使用这个文件层键字来指定如果从同一个物理文件成员中检索到了带有重复键值的记录,那么对它们是按后进先出(LIFO)的顺序来检索的。
这个键字没有参数。
LIFO不允许与FCFO、FIFO、UNIQUE或REFACCPTH键字同时使用。
如果未指定FCFO、LIFO,也未指定FIFO、UNIQUE,那么有重复键值的记录或是按先入先出或是按后入先出或先修改先出的顺序被检索的,但是它们被检索顺序是无法确定的。
在有LIFO键字的文件中至少要指定一个键字段。
当在建立逻辑文件命令(CRTLF)上指定了FILETYPE(*SRC)时LIFO键字是无效的。
图2-58给出如何为一个物理文件指定LIFO键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ALIFO
00020ARCUSRECTEXT('CUSTOMERRECORD')
00030ACUSNAMEF10A
00040ACUSNAMEM1A
00050ACUSNAMEL10A
00060AKCUSNAMEL
A
图2-58规定LIFO键字
2.4.31NOALTSEQ(无交替顺序)
使用这个键字层键字指定在文件层指定的ALTSEQ键字对这个键字段是不适用的。
如果对键字段指定了ABSVAL或SIGNED,那么NOALTSEQ自动地生效,不管使用不使用NOALTSEQ。
这个键字没有参数。
图2-59给出如何指定NOALTSEQ键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010AALTSEQ(TABLELIB/TABLE1)
00020ARDSTR
00030A:
00040A:
00050ACODE1
00060ANAME20
00070A:
00080A:
00090AKCODE
00100AKNAMENOALTSEQ
A
图2-59规定NOALTSEQ键字
用记录格式DSTR的记录是按着CODE和NAME的组合键字来排序的,CODE是用交替顺序(TABLELIB中ATBLE1)排序的,而NAME是按EBCDIC顺序来排序的。
NOALTSEQ避免NAME字段排序被替换。
2.4.32PFILE(物理文件)——仅用于逻辑文件
使用这个记录层键字来指明通过现在定义的逻辑文件访问哪个物理文件含有的数据。
键字的格式是:
PFILE([库名/]物理文件名[……32])
在单格式和多格式逻辑文件中的每一个记录格式,都要有一个PFILE键字。
这个键字除它定义的是单格式逻辑文件和多格式逻辑文件之外,与JFILE是相似的,PFILE键字不允许与JFILE同时使用。
在一个逻辑文件中的PFILE键字中最多可以指定32个物理文件名。
如果使用了最大值,那么既可以在一个记录格式(使用PFILE键字)中指定32个物理文件名,也可将32个物理文件名分别在32个记录格式中使用,或者这些文件名可不规则的分布在一些记录格式中。
在任何情况下,物理文件名的最多个数都是32个。
建立一个逻辑文件时对物理文件个数的限制,见相应的高级语言指南。
对每一个物理文件,库名是可选的。
如果省略了库名,那么使用在文件建立时的库列表(*LIBL)。
在多格式逻辑文件中,如果对一个记录指定了多个物理文件名,那么逻辑文件记录格式中的所有字段必须存在于所有指定的物理文件中。
文件的类型不能在RPG中外部描述,这是因为会导致重复的格式名。
如果程序要访问PFILE键字上指定的一个或多个物理文件的字段,而不是全部,则可以做下面中的一个:
·做一个连接逻辑文件。
如果这样做,用JFILE键字代替PFILE键字。
·做一个包含不在第一个物理文件字段的另外一个逻辑文件记录格式。
例如:
如果FLD1和FLD2在物理文件PF1、PF2和PF3中,FLD3仅出现在PF3中,
则不能在以PF1、PF2为依据的逻辑文件记录格式中指定FLD3,为了实现对FLD3
的访问,可以做一个包含FLD3的另一个逻辑文件记录格式,也可以使用一个连接
逻辑文件。
·不能使用单格式或多格式逻辑文件将来自不同物理文件的字段组合到一个记录格式
中,使用连接逻辑文件可以达到这个目的。
通过使用单格式或多格式逻辑文件中的
一个记录格式读记录仅可以得到来自一个物理文件的数据,通过使用逻辑文件一个
记录格式写记录时也仅能写到一个物理文件中。
在远程系统上建立的逻辑文件,可以在PFILE键字上使用分布数据管理(DDM)文件。
详细信息见DDM用户的指南。
图2-60,图2-61,图2-62给出如何指定PFILE键字。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARLOGRCD1PFILE(PF1)
A
图2-60规定PFILE键字(例1)
在图2-60中,LOGRCD1可以使用在PF1中的字段。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARLOGRCD2PFILE(PF1PF2)
A:
A:
00020ARLOGRCD3PFILE(PF1PF2PF3)
A:
A:
A
图2-61规定PFILE键字(例2)
在图2-61中,LOGRCD2必须使用PF1和PF2所共有的字段,而LOGRCD3则必须使用PF1,PF2,PF3所共有的字段。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARLOGRCD4PFILE(PF1)
A:
A:
00020ARLOGRCD5PFILE(PF2)
A:
A:
00030ARLOGRCD6PFILE(LIB1/PF6)
A
图2-62规定PFILE键字(例3)
在图2-63中,LOGRCD4,LOGRCD5和LOGRCD6有唯一字段,LOGRCD6指定了一个限定的物理文件名。
2.4.33RANGE(范围)
在字段层、选择/省略层或在这两个层上指定这个键字。
这个键字格式是:
RANGE(低值高值)
2.4.33.1在字段层指定RANGE
在字段层,这个键字指定当后来显示文件引用这个字段时,对其进行有效性检验。
RANGE不影响定义的物理和逻辑文件。
在显示文件定义一个可输入字段时,可以通过在29列上指定R和规定REF或REFFLD键字引用现在定义的字段。
显示文件建立期间,OS/400把来自这个逻辑文件或物理文件中字段的RANGE键字和其它的字段属性复制到显示文件的这个字段中。
可以通过显示文件的字段指定有效的检验键字来替换RANGE键字(如同其它有效检验键字和CHKMSGZD键字一样)。
详细信息见3.2.9的引用(第29列)。
在逻辑文件或物理文件中指定这个键字的规则与显示文件的规则相同。
详细信息见3.3.112(RANGE范围)。
在浮点字段(35列为F)或十六进制字段(35列为H)不能指定RANGE键字。
不要在日期、时间、时间标记(L、T或Z第35位)字段指定RANGE键字。
2.4.33.2在选择/省略层指定RANGE
在选择/省略字段层,当程序使用这个字段的记录格式做输入操作时,按这个键字的范围从物理文件中选择或省略检索到的记录。
下面的规则是适用的:
·如果定义字符字段,必须指定字符串或十六进制字符串。
字符串要在两个单引号之
间,见图2-63。
用一个X之后跟单引号括起来的数字0-9,字母A-F的组合规定十六进制字符串。
在单引号中十六进制数字的数目必须是指定字段长度的两倍,见图2-64。
·如果定义一个数字字段,必须指定一个数值(数字0-9,不带单引号),见图2-63。
·如果定义一个日期字段,用DATFMT键字指定的格式,用在DATSEP键字中指定
的分隔符。
例如,如果为DATFMT指定了*MDY,DATSEP指定了‘/’,那么RANGE
(‘12/15/91’‘12/31/91’)是缺省值。
·如果定义时间字段,用TIMFMT键字规定的格式和TIMSEP键字规定的分隔符。
例
如,如果TIMFMT为*ISO,那么RANGE(‘11.00.00’‘12.00.00’)是缺省值。
*IAO
的缺省分隔符是隔点(.)。
·如果定义时间标记字段,必须按下列格式指定缺省值:
RANGE(‘YYYY-MM-DD-HH.MM.SS.UUUUUU’‘YYYY-MM-DD-HH.MM.SS.UUUUUU’)。
图2-63给出如何为RANGE键字指定字符串和数字串。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARRECORDPFILE(PF1)
A
00020AFIELDA10RANGE(25)1
00030AFIELDB1RANGE('2''5')
00040AFIELDC
00050AKFIELDD
00060ASFIELDARANGE(14)2
A
图2-63规定RANGE键字(例1)
在图2-63中,RANGE
(1)对引用FIELDA和FIELDB的显示文件,对这二个字段做有效性检验。
对用这个显示文件的用户,RANGE限制对FIELDA或FIELDB,仅可以进入2、3、4或5,FIELDA是数字段而FIELDB是字符字段。
指定的字段类型依赖于写程序的高级语言。
RABGE
(2)规定FIELDA的选择/省略键字,通过这个逻辑文件检索到物理PF1中。
FIELDA的值是1、2、3或4的记录。
图2-64RANGE键字使用十六进制字符串。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010ARRCD1PFILE(PF1)
00020ACODEA
00030AFLD1
00040AFLD2
00050AKFLD1
00060ASCODEARANGE(X'51'X'54')
A
图2-64规定RANGE键字(例2)
RANGE作为CODEA(一个字节的字段)的选择/省略键字。
仅当CODEA字段的值是从十六进制51到十六进制54之间的数时,可检索到物理文件PF1的记录。
2.4.34REF(引用)——仅用于物理文件
使用这个文件层
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DDS15