RPG多文件读取转换为SQL多表查询

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 10:54 点击:

RPG多文件读取转换为SQL多表查询
 
对于400上的应用,还大多停留在RPG,C,COBOL,或者Java操作文件的阶段。
IBM的战略是将这些对物理或者逻辑文件的操作,向SQL过渡并迁移;通过SQL对数据集进行操作,而非访问文件记录;
传统的应用是对记录进行访问和操作,程序员决定了数据访问的方法,这样就致使应用性能的好坏取决于程序员的编程技巧和经验;
 
而SQL方式操作以数据为中心,DB2提供更多的数据访问方法,DB2可以选择最优的访问方法组合,让DB2为我们做复杂的数据访问优化。
下面是一段RPG程序片段,主要完成对2个视图和1个表函数返回值的处理,然后取到数据:
以变量P_SYSID所带的值为查询条件,遍历PMFM202视图(PMRM202为PMFM202逻辑文件的记录名);
对于读取到的每一条记录,都进行如下操作:
1.字段P20PCOD未出现在PMFM203视图里面。
2.调用函数GETATRVAL(可视为SQL表函数,返回PMFM20和PMFM21表中的相关数据),取每一个P20PCOD对应的数据。
 
3.将从表函数返回的数据与程序入口结构(DPM1000:P_SYSID,P_CCY,P_CPFLG)中数据进行比较。
[sql] 
......  
C     P_SYSID       SETLL     PMRM202  
C                   DOW       1=1  
C     P_SYSID       READE     PMRM202  
C                   IF        %EOF  
C                   LEAVE  
C                   ENDIF  
 *无效  
C                   IF        P20EFCT = '0'  
C                   ITER    www.2cto.com  
C                   ENDIF  
 *非末级产品  
C     P20PCOD       CHAIN     PMRM203  
C                   IF        %FOUND  
C                   ITER  
C                   ENDIF  
C  
 *取产品属性  
C                   EXSR      @PRDATR  
C*开办日期  
C                   IF        VYCMIDTE < K_OPNDAT  
C                   ITER  
C                   ENDIF  
C*停办日期  
C                   IF        VYCMIDTE > K_ENDDAT  
C                   ITER  
C                   ENDIF  
C*有效状态  
C                   IF        K_VLDSTS <> '1'  
C                   ITER  
C                   ENDIF  
C*单位个人标志  
C                   IF        P_CPFLG <> '' AND P_CPFLG <> K_CORPPSNFLG  
C                   ITER  
C                   ENDIF    www.2cto.com  <

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • db2管理工具小结
      • DB2数据库的导出与导入(Windows客户端)
      • db2 CLP中如何换行
      • DB2查看表结构及所用表语句
      • DB2 · CREATE TABLESPACE
      • 使用DB2对象:创建模式、表和视图
      • DB2数据库逻辑卷的复制
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1