我看到很多对多格式逻辑的引用。我需要的是这样的事情。以下是在逻辑文件中完成的吗?如果是这样的逻辑文件?这是连接逻辑规范,但它没有编译。
另外,如果有更现代的方法,我会很乐意学习。这两个文件都是PF。我们想要的只是拥有ICBLDTIR的一组记录,其中只有location = PICK,但这些数据仅在该位置主数据中。在LMLTPC领域。
R PALREC JFILE(ICLOCMLM ICBLDTIR)
CPD7989-*
JOIN(ICLOCMLM ICBLDTIR)
JFLD(LMLOC1 IRLOC1)
CPD7486-*
JFLD(LMLOC2 IRLOC2)
CPD7486-*
JFLD(LMLOC3 IRLOC3)
CPD7486-*
IRLOC1
IRLOC2
IRLOC3
LMLTPC
S LMLTPC COMP(EQ 'PICK')
得到这些错误:
* CPD7486 20 3 Message . . . . : Keyword specified at incorrect level.
* CPD7989 30 1 Message . . . . : Number of join specifications not valid.
答案 0 :(得分:3)
我相信你想要一个加入逻辑文件:
A R MYREC JFILE(FILEA FILEB)
A J JOIN(FILEA FILEB)
A JFLD(LOCATION1A LOCATION1B)
A JFLD(LOCATION2A LOCATION2B)
A JFLD(LOCATION3A LOCATION3B)
A LOCATION1B
A LOCATION2B
A LOCATION3B
A S WAREHSTYP COMP(EQ 'PICK')
可以在IBM's site找到更多信息。
答案 1 :(得分:2)
您在问题中所描述的并不是我们所谓的多格式逻辑。程序读取的每条记录都将返回相同的格式,称为MYREC,无论单一格式是由两个文件组成的。
虽然连接逻辑可能是十年或两年前推荐的解决方案,但DDS通常不是您应该关注的方向。 IBM致力于通过SQL改进性能和功能。 SQL可以为您提供更多功能,更好的整体性能,并提高您的工作效率。
SQL为您提供了多种方式来提供您所寻求的内容。最接近您的连接逻辑文件的解决方案是连接逻辑视图。
CREATE VIEW myview AS
SELECT irloc1, irloc2, irloc3
FROM icbldtir
JOIN iclocmlm ON lmloc1 = irloc1
and lmloc2 = irloc2
and lmloc3 = irloc3
and lmltpc = 'PICK'
或者您可以将SELECT语句放在带有嵌入式SQL的程序中。
要有效地完成此连接,您需要确保通过三个位置字段在每个物理文件(即表)上具有键控访问路径(即索引)。如果没有,那么在SQL中这很简单。
CREATE INDEX myfile_idx1
ON myfile (field1, field2, field3)
现在有些人可能会说,那又怎样?我们在这里所做的一切基本上与连接逻辑文件相同。但是,您不仅要让优化器代表您工作,而且还可以帮助您。在现阶段,无论使用哪种方法,系统都必须从每个文件中读取记录,以便创建每个结果记录。它必须首先读取索引条目,然后获取索引引用的记录。但是假设我们只需读取索引而无需实际读取记录本身?这会加快速度。并且系统通常可以在内存页面上容纳更多索引条目,从而提供额外的速度优势。那我们该怎么做呢?好吧,如果索引包含优化器需要的所有信息,那么它将使用仅索引访问。所以我们要做的就是将我们的附加字段放在索引上。我们不需要它作为排序字段,因此我们将其作为附加字段附加。
CREATE INDEX iclocmlm_i2
ON iclocmlm (lmloc1, lmloc2, lmloc3)
RCDFMT iclocmlmr2 ADD lmltpc