程序描述文件与外部引用文件的差别
外部引用文件在rpg程序运行时,系统就会开辟一个程序运行缓存,把外部引用文件结构调入这个运行缓存,rpg程序就可以直接对这个文件的字段进行操作,而无须对记录的每个字段进行定义描述(在debug就可以看到些信息)。
程序描述文件在rpg程序运行时,没有外部文件的结构信息,所以必须用I表对这个文件的记录做字段定义描述,但可以不必每个字段都描述,只需对感兴趣的字段,或记录的某段内容进行描述。
RPG程序中运用程序描述文件有几个目的:
1)cycle使用;
2)对只感兴趣的记录内容或字段操作;
3)带键值的程序描述文件,相当于一个query file或lf,可以突破项目对10LF的限制界限。代价需占用操作者的等待时间和系统创建带键值的程序描述文件的时间和系统资源。
4)可以进行特殊数据操作,如不相符字段属性的内容写入pf。
对带键值的程序描述文件编程时要注意以下几点:
1)描述的键值如果是多字段组合键值,这些键值项对应的外部文件,PF或LF的这些项必须是按需要循序、连着放在一起的;
2)若带键值的程序描述文件的键值循序与指定的PF或LF中的字段循序产生冲突,可以调整PF或LF的定义字段的循序。(如果PF中有不看覆盖的数据,可以通过交互式SQL来进行操作。)
问题:
看了大虾们的帖子,很不明白:"带键值的程序描述文件,相当于一个query file或lf,可以突破项目对10LF的限制界限。代价需占用操作者的等待时间和系统创建带键值的程序描述文件的时间和系统资源。"
请问query file是什么?如何使用呢?那个如何用程序描述文件代替lf,消耗的是什么资源?小弟很白,希望具体解释,最好有源码!!!!不胜感激!!!
回答:
query/400是IBM在as400平台os/400天生的附属品,作用于对pf等文件创建一个数据筛选的数据集,用于ovrdbf等操作。产生的数据集与LF是相同作用,只不过LF是永久的数据集;query file是临时的数据集。
创建LF是需要占用系统资源,如cpu处理时间,400辅助存储空间等。在底层的pf如果没有数据的情况下,不会感到创建LF系统耗费的资源,如果在一个10G以上的PF上创建LF,就会明显的感到系统耗费的资源,需20分钟左右的等待时间。
因为query file和RPG的带key的文件描述文件都是临时的创建的,如果都是基于一个大数据量的pf,上面已经说过,要占用系统资源,用户需等待创建过程。
有关query/400的redbook,可以到IBM网站搜索下载。
顺便说一下,随着as400平台的越来越开放,把as400平台作为数据源的后台越来越多,非rpg等语言,如java等前台+AS400后台数据服务器的应用越来越广。对提高as400数据源对java的sql操作响应效率要求,IBM在os/400 v5r3之后添加了许多重大改进,如DB2的引擎等。对java能够使用达到类似query file的应用效率,IBM在DB2下增加了MQT--一种对sql操作应用的已筛选预置数据集。
LF、MQT、query file、RPG程序描述文件,具有相同的功能。前面两个是永久数据集;后两个是临时数据集。MQT比较特殊,1)是用key筛选好的数据集,对它的操作,相当于rpg中的reade;2)使用前需数据同步。
如有新内容,待续。
阅读(1388) | 评论(0) | 转发(0) |