RPGLE Data Strucutre Array Lookup



我创建了一个数据结构数组,我想根据组合键进行查找。 即在下面的DS中,如果tblName和tblElement和tblDivision匹配,我想查找并获取索引,然后返回tblRes值。

    D TblAryDs        DS                  qualified dim(9999)                    
    D  tblName                       3                                           
    D  tblElement                   10                                           
    D  tblDivision                   5                                           
    D  tblRes                        2                                           
//Not Sure How to do the below lookup
      idx = %lookup(tblName:TblAryDs(*).tblName) && %lookup(tblElement:TblAryDs(*).tblElement) && %lookup(tblDivision:TblAryDs(*).tblDivision);                                
      if idx > *zeros;                                                                                   
         return TblAryDs(*).tblRes;
      endif; 
 D TblAryDs        DS                  qualified dim(9999)                    
 D  key
 D    tblName                     3a   overlay(key)                                        
 D    tblElement                 10a   overlay(key:*next)                                        
 D    tblDivision                 5a   overlay(key:*next)                                        
 D  tblRes                        2a           
  /FREE
    idx = %lookup(tblName + tblElement + tblDivision 
                  :TblAryDs(*).key); 
    if idx > *ZEROS;
      return TblAryDs(idx).tblRes;
    endif; 
  /END-FREE  

注意:如上所述,%LOOKUP()将搜索所有 9999 个元素。 如果必须重复搜索不同的值,请将 ASCEND 关键字添加到数组中,并在搜索之前使用 SORTA 对其进行排序。 最后,跟踪数组中实际使用了多少元素。

idx = %lookup(tblName + tblElement + tblDivision 
                  : TblAryDs(*).key : nbrElemUsed);

这样%LOOKUP()%将仅对活动元素执行更快的二叉搜索。

相关内容

  • 没有找到相关文章

最新更新