查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
1.我们收到一个文件,其中包含3种类型的记录,即类型0,类型A和类型B
2.所有Type0,TypeA,Type都包含一个公用密钥。
3.我们将这三种类型分别加载到3个单独的数组中,每个数组最多只能处理5000个条目(即出现5000个条目)
请找到以下示例以更好地理解
输入文件
0 AAA->输入0,这里AAA是以下3的密钥
1 AAA xyz abc-> Type 1
2 AAA def ghi-> Type 2
0 BBB BBB是低于3的关键
1 BBB ghi jkl
2 BBB jkl mno
因此,一旦我们为特定键“ AAA”加载Type0,Type 1和Type 2记录数组,我们将进行一些处理并重置内部表(假定将其清空)
我们将对所有键执行此操作,直到到达文件末尾
我面临的问题:当前由于业务扩展,每个Key收到近2万条记录。我是说
0 AAA
1 AAA .....
1 AAA .....
:
:
:
假设1万
2 AAA .....
2 AAA .....
:
:
:
假设1万
总计20k
2.对于每种类型(Type0,Type 1和Type 2),我们都有一个计数器,在加载内部表时它们会递增1
3.由于超出了内部阵列的大小,我在SOC7变数下获得了SOC7(经分析,我知道它是由于超出阵列限制)
4.我什至尝试增加该限制作为临时解决方案,但是分配给该作业的临时空间受到限制(出现错误“达到缓冲区限制”)
更重要的是,我只是不想增加数组限制,因为我觉得它不是一个好的编码习惯
请给我建议这种情况的可能解决方案,以便将来根据阵列限制处理任意数量的记录
永久解决此问题将非常有帮助
提前致谢。 |
|
回到顶部 |
|
 |
尼克·克劳斯顿
全球主持人
加入时间:2007年5月10日 帖子:2455 地点:英国汉普郡
|
|
|
|
你做 真 需要 所有 密钥的记录存储在 相同 时间?即您是否多次引用记录?如果是这样,您可以仅存储所需的图片吗?如果没有,那么您无需存储它们,只需阅读/处理/阅读下一个 |
|
回到顶部 |
|
 |
特里·海因兹
JCL主持人
已加入:2008年7月14日 帖子:1249 地点:美国明尼苏达州里奇菲尔德
|
|
|
|
正如Nic所说,请尝试仅存储要存储的记录的所需字段。如今,编译器的限制非常大。请参阅《 COBOL语言参考手册》中的附录B。 |
|
回到顶部 |
|
 |
迪克·谢勒
主持人荣誉

已加入:2006年11月23日 帖子:19245 位置:矩阵内部
|
|
|
|
您好,
引用: |
我们将这三种类型加载到3个单独的数组中,每个数组最多可处理5000个条目(即出现5000个条目) |
5000是如何确定的?这不是一个很大的数字。 。 。
引用: |
更重要的是,我只是不想增加数组限制,因为我觉得它不是一个好的编码习惯 |
为什么您认为超过5000个不好?
是什么引起“缓冲区限制”错误?
如果输入是“按顺序”,为什么不进行汇总,因为读取了数据并消除了阵列。可能是我误会了一些东西。 |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
您需要明确说明“达到缓冲区限制”的含义。
如果表需要容纳20,000个条目,则它需要20,000个条目。实际上,有一个增长预测并确保您不必在短期/中期重新访问同一事物的好习惯。
您有128MB的WORKING-STORAGE。您的记录有多大?
Enterprise COBOL V5.1具有“无限制”表(在编译时未施加限制),但正如其他人所指出的,您是否仍然需要保留所有存储? |
|
回到顶部 |
|
 |
比尔·奥博伊尔
CICS主持人

已加入:2008年1月14日 帖子:2504 地点:美国乔治亚州亚特兰大
|
|
|
|
法案,
我们让IBM的Tom Ross在这里进行了COBOL 5.1概述,所以我问他“ Unbound”是否可以承担DEPENDING ON的PICTURE子句的最大值(在我的示例中是一个未签名的二进制全字),他说是。
我从未发布过我的VSAMXREF子程序,您可以通过COBOL调用该子程序,它使用SHOWCB宏返回目标VSAM文件上的记录数。
嗯... |
|
回到顶部 |
|
 |
罗希特·乌马尔吉卡(Rohit Umarjikar)
全球主持人

已加入:2010年9月21日 帖子:2581 地点:美国纽约
|
|
|
|
您可能想要在此处进行多线程,根据“类型”分割输入文件,这样,在每个文件中,现在控制记录的文件中只有一个“类型”,然后可以使用调度和在最后将所有输出文件连接到一个文件中。 |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
法案,
我想这是有道理的,尽管如果“语言参考”中UNBOUNDED的文档是特定的:-)
对于依赖于的事件:
引用: |
OCCURS DEPENDING ON子句
OCCURS DEPENDING ON子句指定可变长度表。
数据名称1
标识OCCURS DEPENDING ON子句的对象;那就是
数据项,其当前值表示当前的数量
主题项目的出现。 发生项目的内容
数字超过对象的值是不确定的. |
甚至更清楚。
因此,UBOUNDED没有特定的最大值,但受OCCURS DEPENDING ON子句中提到的data-name-1限制。 |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
大家好,
感谢您的答复
我将尝试这里发布的所有可能的解决方案,并将很快发布我的结果
谢谢和问候
拉杰德拉 |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
大家好,
当前,我们仅在程序中对所有3个表使用“ OCCURS DEPENDING”子句。
实际上,当我尝试将数组限制增加到每个表超过10000个时
我在编译时收到以下错误
““工作存储区”的大小超出了“租用”和“数据(24)”编译器选项所允许的16,777,215个字节的限制。 “ DATA(31)”选项被假定为“
该程序存在于过去的15年中。由于业务扩展,我们最近面临这个问题
请让我知道更多信息。做需要的事情
感谢致敬,
拉杰德拉 |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
请包括整个错误消息,包括消息开头的错误参考。
您的程序需要DATA(24)吗?使用DATA(31),您将拥有128MB的WORKING-STORAGE,足以容纳每个表20,000多个条目。
如果需要DATA(24),请说明原因。
如果您需要DATA(24),则必须查看将内容缩减到最小的建议。 |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
大家好,
那很棒。工作正常。我在程序中编码了DATA(31),即使数组限制已设置为每张表20000条记录,我仍然可以看到编译正常。
但是我在运行时遇到了问题。我有一个错误
“试图将大于16 MB的参数地址传递给AMODE(24)子程序”
不幸的是,我们正在调用在AMODE(24)处定义的子程序,该子程序被我们所在地区的不同应用程序使用
请在这方面帮助我
感谢致敬,
拉杰德拉 |
|
回到顶部 |
|
 |
比尔·奥博伊尔
CICS主持人

已加入:2008年1月14日 帖子:2504 地点:美国乔治亚州亚特兰大
|
|
|
|
当31位程序调用24位程序时,您可以做的是编写一个LINKAGE ASSISTANT程序,它是AMODE 31,但建立了一个24位Parmlist来传递给24位子程序,基本上是将直通。
使用GETMAIN或STORAGE OBTAIN宏,在LINKAGE ASSISTANT程序中使用LOC = 24,并将此线下存储用作24位Parmlist,可以轻松地在Assembler中完成此操作。
您可能还需要查看LE Callable Service例程CEEGTST,但是我不确定您可以在LINKAGE ASSISTANT中指定特定的AMODE,因为我相信CEEGTST具有呼叫者的特征。
但是,值得一看。
嗯... |
|
回到顶部 |
|
 |
比尔·伍德格
主持人荣誉
加入时间:2011年3月9日 帖子:7311 位置:矩阵内部
|
|
|
|
子程序 需要 成为AMODE(24)?它有什么作用? |
|
回到顶部 |
|
 |
比尔·奥博伊尔
CICS主持人

已加入:2008年1月14日 帖子:2504 地点:美国乔治亚州亚特兰大
|
|
|
|
是的,我赞成比尔的问题。
是否有某些原因需要使被调用的子程序为AMODE 24?
是使用DCB的汇编程序,还是将其早于尘埃的COBOL Abend-Program称为“ ILBOABN0”?
您正在使用哪个版本的COBOL?
请指教.... |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
大家好,
费耶
所调用的程序包含retsart逻辑,这些逻辑适用于我所负责的不同应用程序的所有程序
因此,将子程序更改为AMODE(31)可能会影响其他应用程序
有什么方法可以将数据从AMODE(31)程序传递到AMODE(24)程序
让我知道更多信息
提前致谢
拉杰德拉 |
|
回到顶部 |
|
 |
比尔·奥博伊尔
CICS主持人

已加入:2008年1月14日 帖子:2504 地点:美国乔治亚州亚特兰大
|
|
|
|
拉詹德拉·卡莱普(Rajendra Kalepu)询问-
引用: |
有什么方法可以将数据从AMODE(31)程序传递到AMODE(24)程序 |
请查看我以前有关LINKAGE ASSISTANT子程序的答复。
嗯... |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
嗨,比尔,
抱歉,我是AMODE(24)和AMODE(31)概念的新手。您能否提供给我一个示例代码,我们将数据从AMODE(31)编译的程序传递到AMODE(24)编译的程序
这样我就可以将其作为参考并进行相应的编码。
我搜索了AMODE(31)/ AMODE(24)的LINKAGE ASSISTANT子程序
但我无法清楚地理解它
请在这方面帮助我。
提前致谢
拉杰德拉·卡勒普(Rajendra Kalepu) |
|
回到顶部 |
|
 |
罗希特·乌马尔吉卡(Rohit Umarjikar)
全球主持人

已加入:2010年9月21日 帖子:2581 地点:美国纽约
|
|
|
|
您是否看过我提出的长期解决建议? |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
罗希特(Hi Rohit),
感谢您的建议,但问题是所有3种类型都必须处于同步状态,即Type0,Type1,Type 2
因此,即使我拆分了文件,例如,如果特定键组合的Type 0,Type1,Type 2具有超过5000条记录,该过程也会失败
注意:我无法将同一键的组合拆分为2
提前致谢
拉杰德拉 |
|
回到顶部 |
|
 |
阿努·达万(Anuj Dhawan)
高级会员

已加入:2006年4月22日 帖子:6250 地点:印度孟买
|
|
|
|
拉詹德拉·卡勒普(rajendra kalepu)写道: |
所调用的程序包含retsart逻辑,这些逻辑适用于我所负责的不同应用程序的所有程序 |
检查点重启和AMODE(24)/(31)是两个不同的地方 东西 共。你为什么担心他们?
当您的应用程序包含COBOL子程序时,某些COBOL子程序可以是AMODE 31,而某些可以是AMODE24。实际上,如果您的应用程序仅包含COBOL程序,并且仅使用静态和动态调用,则-程序员并不需要太费力,因为每个COBOL子程序将始终以正确的AMODE输入。例如,如果您正在使用从AMODE 31 COBOL程序到AMODE 24 COBOL程序的动态调用,则除非使用过程指针,函数指针或其他调用COBOL子程序的语言,否则AMODE将自动切换。
话虽如此,然后尝试在两行之间读取(姿势)-一个非常原始的建议,使用AMODE(31)编译子程序,使用AMODE(31)编译主程序-执行主程序,看看会发生什么。 |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
嗨阿努吉,
感谢您提供宝贵的信息。
这里的问题是许多应用程序使用相同的子程序
如果我尝试使用AMODE(31)编译子程序。我可能不确定在AMODE(24)编译的其他应用程序调用此子程序是否会失败。如果我错了请纠正我
让我知道更多信息
感谢致敬,
拉杰德拉·卡勒普(Rajendra Kalepu) |
|
回到顶部 |
|
 |
阿努·达万(Anuj Dhawan)
高级会员

已加入:2006年4月22日 帖子:6250 地点:印度孟买
|
|
|
|
拉詹德拉·卡勒普(rajendra kalepu)写道: |
如果我尝试使用AMODE(31)编译子程序。我可能不确定在AMODE(24)编译的其他应用程序调用此子程序是否会失败。如果我错了请纠正我 |
要获得答案-您需要回答比尔(O'Boyle)和比尔(伍德格)的几个问题,我将重复它们:
1.您正在使用哪个版本的COBOL?
2.对于子程序或其他程序,您真的需要AMODE(24)/ DATA(24)吗?使它们成为AMODE(31)不会伤害您,这是2014年! |
|
回到顶部 |
|
 |
拉詹德拉·卡勒普
新的用户
已加入:2011年7月29日 帖子:21 地点:印度
|
|
|
|
嗨阿努吉
1. IBM Enterprise COBOL for z / OS 4.2.0是我们正在使用的COBOL版本。
2.是的,由于帐户的某些限制,我们无法更改子程序的AMODE
请让我知道更多信息,在此先感谢
问候,
拉杰德拉 |
|
回到顶部 |
|
 |
比尔·奥博伊尔
CICS主持人

已加入:2008年1月14日 帖子:2504 地点:美国乔治亚州亚特兰大
|
|
|
|
请让我们对这些限制有所了解。正如Anuj所说的,这是2014年,拥有AMODE(24)加载模块至多是陈旧的,尤其是与Enterprise COBOL 4.2一起运行时。
我认为您会发现原来的“好吧,我们总是以这种方式运行”,这是OS / VS COBOL时代(COBOL2之前)的延续。
最好现在解决此问题,因为您将在Enterprise COBOL 5.1中找到其他AMODE(24)限制,该限制现已可用。
不要被裤子压垮。
顺便说一句,这个AMODE(24)子程序是否被其他程序调用?这些呼叫者也是AMODE(24)吗? |
|
回到顶部 |
|
 |
|