IBM大型机论坛索引
 
 登录
 
IBM大型机论坛索引  大型机:搜索 IBM Mainframe论坛:常见问题解答  寄存器
 

避免在cobol pgm中使用内部表


IBM大型机论坛 -> COBOL程式设计
 发表新话题     回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日,星期三,凌晨1:45
 引用回复

我的cobol pgm使用光标将整个表加载到数组中。目的是-读取输入文件,然后搜索数组以获取值并写入O / P文件。但是表的大小每天都在增加,因此由于数组大小的限制,该作业正在中止。当前数组大小限制为> 300000.

我可以想到的一种方法是使用简单的select而不是使用巨大的内部数组。对于输入文件中读取的每个记录,请在表中进行选择。请让我知道此方法的任何可能的缺点。

任何人都可以建议一种更好的方法来处理此逻辑。

谢谢,
回到顶部
查看用户资料 发送私信
比尔·奥博伊尔

CICS 主持人


已加入:2008年1月14日
帖子:2504
地点:美国乔治亚州亚特兰大

 发布 发表:2011年3月16日,星期三,凌晨1:52
 引用回复

没那么快。  icon_wink.gif

这是要加载到内部COBOL阵列中的QSAM平面文件还是VSAM KSDS或ESDS?

法案
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日,星期三,凌晨1:54
 引用回复

输入的QSAM simpel平面文件。 Logi将从输入文件中依次读取一些字段,并通过serach操作将其与数组元素匹配。数组包含一个已满载的Tabele。我的主要目的是从pgm中删除数组,并使用其他有效的方法来处理这种情况。
回到顶部
查看用户资料 发送私信
比尔·奥博伊尔

CICS 主持人


已加入:2008年1月14日
帖子:2504
地点:美国乔治亚州亚特兰大

 发布 发表:2011年3月16日星期三凌晨2:04
 引用回复

在执行程序之前的步骤中,将平面文件重新生成VSAM ESDS(或KSDS)。

在下一步中以及在COBOL程序中,调用一个Assembler实用程序,该程序将打开VSAM文件,发出SHOWCB宏,将该文件的记录数(如果需要,还可以将LRECL)加载到传递的参数中,然后关闭VSAM文件并返回到调用方。

现在,您有了记录数,可以动态计算所需的存储量。

将阵列移至LINKAGE(具有OCCURS DEPENDING ON),并调用LE Callable Service例程“ CEEGTST”以获得所需的存储量。

还有更多的东西,但这听起来可行吗,还是管理层吓到汇编程序的死亡?  icon_eek.gif

法案
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2011年3月16日星期三凌晨2:06
 引用回复

您好,

如果该表的键之一与与此内部数组匹配的键相同,则消除该数组应该很简单。 。 。如果不是,可能需要在表中添加一个密钥来支持此操作。

然后,在表中查找匹配项时,请使用此键确保顺序文件顺序正确,并且不要进行重复查找-答案是已知的。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2011年3月16日星期三凌晨2:08
 引用回复

您好,

除非我误会,否则输入“文件”已经是顺序的,其他数据在数据库表中。 。 。
回到顶部
查看用户资料 发送私信
比尔·奥博伊尔

CICS 主持人


已加入:2008年1月14日
帖子:2504
地点:美国乔治亚州亚特兰大

 发布 发表:2011年3月16日星期三凌晨2:16
 引用回复

您最多可以处理300,000个数组条目。每个条目的大小是多少?

法案
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日星期三凌晨2点25分
 引用回复

迪克·谢勒(Dick scherrer)写道:
您好,

除非我误会,否则输入“文件”已经是顺序的,其他数据在数据库表中。 。 。


您是100%正确的。。输入文件已经是根据要用于读取表的键字段排序的顺序文件。目前,在程序启动时,表已作为一个整体填充到数组中。然后从下一行按顺序读取输入文件,并从每条记录开始根据该关键字段在数组中进行搜索。.我希望我能够清楚地传达自己的想法。

U表示消除数组是微不足道的。请问如何才能完成该建议。

谢谢
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日星期三凌晨2点27分
 引用回复

比尔·奥博伊尔写道:
您最多可以处理300,000个数组条目。每个条目的大小是多少?

法案


该数组由3个变量组成,大小为30万。这在生产中引起问题,因为表没有行>30万,因此它经常失败。
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2011年3月16日星期三凌晨2:33
 引用回复

您好,

与其加载/搜索数组,不如使用键从dabatase表中读取数据。

当“ this”输入键与“ previous”输入键相同时,甚至无需访问数据库-此键已经完成。
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日,星期三,凌晨2:36
 引用回复

法案,

VSAM的概念很好。我认为明智的做法是从表中卸载所需的字段(包括键),然后在调用我的COBOL pgm的步骤之前将其加载到KSDS中。然后在pgm中使用从输入平面文件获得的密钥读取KSDS。但问题是大炮有>30万行,因此VSam也会变得笨重,每次运行作业时都会有删除/定义的开销。您对此有何想法?
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日星期三凌晨2:41
 引用回复

迪克·谢勒(Dick scherrer)写道:
您好,

与其加载/搜索数组,不如使用键从dabatase表中读取数据。

当“ this”输入键与“ previous”输入键相同时,甚至无需访问数据库-此键已经完成。


哇!这很有意义,我注意到当我根据关键字段对输入平面文件进行排序时,theere是重复的...因此,您要说的是顺序读取输入平面文件并仅在以下情况下使用选择查询访问数据库关键字段发生变化。.IN剩余时间仅使用工作存储字段中保存的值写入O / P文件。如果我的理解有误,请纠正我!

但是Dick在这里我有一个问题,我们每次从输入文件中读取记录进行选择时,都会遇到打入DB2数据库的风险。这是好的编码标准吗?

谢谢,
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2011年3月16日,星期三,凌晨2:47
 引用回复

您好,

引用:
顺序读取输入的平面文件,并仅在关键字段更改时使用选择查询访问数据库。
是的,就是这样  icon_smile.gif

引用:
每次从输入文件读取记录时,都会遇到访问DB2数据库的风险。这是否是良好的编码标准?
好吧,将数据存储在数据库中的一个原因是,可以在需要时直接访问数据。 。 。我相信,仅根据需要读取数据库行是在内部阵列或卸载/加载之间进行比较的更好选择,以将数据放入vsam文件中。
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日,星期三,凌晨2:53
 引用回复

是的,我确信..我可以选择使用隔离级别UR或CS吗?
我想UR既有优势又有劣势吗?我觉得这部分很混乱  icon_confused.gif
回到顶部
查看用户资料 发送私信
里吉特

活跃用户


已加入:2010年4月15日
帖子:168
地点:浦那

 发布 发表:2011年3月16日星期三凌晨2:55
 引用回复

在声明要在程序中加载内部数组的原始游标中,有一个“ FETCH ONLY WITH UR”子句。
回到顶部
查看用户资料 发送私信
比尔·奥博伊尔

CICS 主持人


已加入:2008年1月14日
帖子:2504
地点:美国乔治亚州亚特兰大

 发布 发表:2011年3月16日星期三凌晨3:03
 引用回复

我想我解释了您的问题“ BASS ACKWARDS”  icon_redface.gif

法案
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

 发布 发表:2011年3月16日,星期三,凌晨3:18
 引用回复

您好,

引用:
我想UR既有优势又有劣势吗?
取决于细节。如果我理解这一点,您的进程将不会更新表,因此您不需要锁定任何内容。如果您读了一行并且从现在起它将更改10秒钟,这有关系吗?

注意,一些简单明了的东西不会变得不必要的复杂/复杂。 。 。

@法案,
必须是一年中的时间。我最近做过几次。 。 。
正如我在那所说的-Aaaaaargh。 。 。
回到顶部
查看用户资料 发送私信
唐·雷西

活跃的成员


已加入:2010年7月6日
帖子:696
地点:加拿大安大略省惠特比

 发布 发表:2011年3月16日,星期三,凌晨3:54
 引用回复

我想知道该进程是使用SEARCH还是SEARCH ALL进行表查找。
回到顶部
查看用户资料 发送私信
盖伊

高级会员


已加入:2009年8月11日
帖子:1281
地点:比利时

 发布 发表:2011年3月16日,星期三,下午3:43
 引用回复

如果我理解正确,您已经有要循环的程序逻辑&依次获取DB2表的行。
为什么不保留它,而不是搜索WS表以读取还是不读取文件中的下一条记录。
漂亮的标准编码技术。已经完成了合并两个顺序文件的操作,对于db2游标和一个顺序文件没有太大的区别。
Dick甚至将示例程序发布为粘性程序。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
 发表新话题     回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> COBOL程式设计

 


类似主题
话题 论坛 回覆
该主题已锁定:您无法编辑帖子或回复。 将字段名称传递给COBOL程序 COBOL程式设计 10
 没有新帖 COBOL性能调整 COBOL程式设计 6
 没有新帖 JCL用于替换Cobol中的代码 JCL和VSAM 7
 没有新帖 COBOL VS SORT实用程序,用于文件格式... COBOL程式设计 6
 没有新帖 在COBOL创建中进行XML解析"h... COBOL程式设计 0
搜索我们的论坛:


 回到顶部