0

我看到很多关于多格式逻辑的参考。我需要的是这样的东西。以下是否在逻辑文件中完成?如果是这样,哪种逻辑文件?这是连接逻辑规范,但未编译。

另外,如果有更现代的方法可以做到这一点,我会很乐意学习。这两个使用的文件是PF。我们想要的只是从 ICBLDTIR 中获得一组记录,其中只有位置 = 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.
4

2 回答 2

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 的网站上找到。

于 2013-06-20T21:38:59.553 回答
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
于 2013-06-23T12:58:28.007 回答