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

发生异常终止时读取PS文件


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

新的用户


已加入:2013年10月11日
职位:37
地点:印度

 发布 发表:2013年10月30日,星期三12:17 pm
引用回复

众所周知,我们无法随机读取ps文件。我有一个类似的情况
我搜索了论坛但没有得到答案....有人建议使用一个计数器并将其保存在另一个文件中,但是如果使用计数器读取我们的文件又会读取所有记录然后转到最后一个记录....我们正在阅读所有以前的记录的解决方案.....

就像有人说的....您可以使用
执行计数时间。

请提出建议。



迪帕克·库玛(Deepak kumar)
回到顶部
查看用户资料 发送私信
比尔·伍德格

主持人荣誉


加入时间:2011年3月9日
帖子:7311
位置:矩阵内部

 发布 发表:2013年10月30日,星期三2:16 pm
引用回复

为什么要这样做?
回到顶部
查看用户资料 发送私信
迪帕克

新的用户


已加入:2013年10月11日
职位:37
地点:印度

 发布 发表:2013年10月30日星期三下午2点27分
引用回复

引用:
为什么要这样做?

@比尔·伍德格...只是一个问题.....



迪帕克·库马尔[/ quote]
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

 发布 发表:2013年10月30日星期三下午2点59分
引用回复

为了执行您想要的操作,您必须将最后读取的记录存储在文件中的某个位置,因为否则您将无法在异常结束后知道要读取多少记录并跳过处理。这样做的最简单方法是定义VSAM KSDS,以保存每次从顺序文件中读取记录时读取和更新(读取/重写)KSDS记录的最后一条记录。这意味着您的程序将运行更长的时间,并且现在取决于对VSAM文件的访问,因此逻辑变得更加复杂。

在大多数情况下,只需将系统设计为允许重新启动(通过允许文件在程序开始运行之前恢复到其状态,或者通过确保可以多次应用更新(以防需要重新运行))。将是更好的解决方案
回到顶部
查看用户资料 发送私信
trushant.w

新的用户


已加入:2013年9月22日
帖子:81
地点:印度浦那

 发布 发表:2013年10月30日,星期三,下午3:59
引用回复

你好罗伯特

我只需要进一步澄清您使用VSAM KSDS文件的解决方案。以下是我的查询
1.程序如何知道在重新启动作业时需要检查ksds的最后记录。
2.由于我们使用ps平面文件作为输入,即使在读取了ksds的最后一个记录之后,当作业重新启动时,如何跳转到ps文件中的垂直记录。
回到顶部
查看用户资料 发送私信
罗伯特·桑普

全球主持人


已加入:2008年6月6日
帖子:8569
地点:美国爱荷华州迪比克

 发布 发表:2013年10月30日,星期三,下午4:41
引用回复

1.您将必须以某种方式(例如JCL PARM值或KSDS中的特定值)向程序指示该程序应该执行正常执行还是重新运行。

2.您不会“跳转”-您从顺序文件中读取每条记录,直到到达最后处理的记录。顺序文件意味着顺序-例如,一次没有跳过记录,也没有在文件中跳转,一次从第一条记录读取到最后一条记录。因此,如果您的程序在处理了顺序文件的前400条记录后获得了ABEND,则您的程序在重新运行时仍必须读取前400条记录(即使它对那些记录中的数据不执行任何操作)。
回到顶部
查看用户资料 发送私信
trushant.w

新的用户


已加入:2013年9月22日
帖子:81
地点:印度浦那

 发布 发表:2013年10月30日,星期三,下午6:15
引用回复

感谢您的解释罗伯特。
我有检查点的高级想法。

如果可能,请分享一些示例。
回到顶部
查看用户资料 发送私信
迪帕克

新的用户


已加入:2013年10月11日
职位:37
地点:印度

 发布 发表:2013年10月30日,星期三,下午6:17
引用回复

引用:
因此,如果您的程序在处理了顺序文件的前400条记录后获得了ABEND,则您的程序在重新运行时仍必须读取前400条记录(即使它对那些记录中的数据不执行任何操作)。


@Robert sample ....有什么不同,我们正在阅读400条记录,正在跳过,我们只阅读了所有记录.....我已经知道此解决方案以及执行解决方案...


迪帕克·库玛(Deepak kumar)
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


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

 发布 发表:2013年10月30日,星期三7:03 pm
引用回复

您好,

您可能还需要“同步”在问题执行过程中部分创建的所有其他输出。考虑一下仅部分完成的输出文件。考虑不完整的总数。等等。

在中间重新定义要比在输入中的正确位置开始重得多。 。 。

在大多数情况下,最好将输入数据恢复到运行之前的位置,修复引起问题的原因,然后从头开始重新运行。
回到顶部
查看用户资料 发送私信
迪帕克

新的用户


已加入:2013年10月11日
职位:37
地点:印度

 发布 发表:2013年10月30日,星期三7:35 pm
引用回复

好的家伙...。我会尝试您的建议...


迪帕克·库玛(Deepak kumar)
回到顶部
查看用户资料 发送私信
苏拉杰

新的用户


已加入:2009年4月16日
帖子:69
地点:加拿大

 发布 发表:2013年10月31日,星期四,晚上8:15
引用回复

另一种解决方案是将日期字段添加到文件(如果可能)。用作业运行的日期更新所有记录。这样,您将知道何时重新运行记录是否更新。在日期字段中检查当前日期将告诉您是否需要再次处理记录。

问候苏拉伊
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

 发布 发表:2013年10月31日,星期四8:33 pm
引用回复

添加字段以提供 日期字段
特别是对于PS文件来说,是很多工作和过度使用的工具。

随着计算机变得越来越快,
正如迪克·谢勒(Dick Scherrer)经常说的那样,
批处理
不参与DB2更新
应该配置为可重启
通过在过程开始之前将所有文件恢复到它们的状态。

DB2 10自动提供了一个 最近更新时间
然后应在该列周围配置重启。

曾在IT行业工作过(此董事会中的许多人都有)
几十年(从60年代开始)
我已经看到重启过程不断发展,
就像其他所有流程都在发展一样
石轮和刀
相当简单的过程。
回到顶部
查看用户资料 发送私信
唐·雷西

活跃的成员


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

 发布 发表:2013年10月31日,星期四10:04 pm
引用回复

如果您的程序要用于生产,则最好确保得到操作团队的祝福。他们不想面对您的工作可能特有的特殊重启程序;他们想要所有工作都遵循的标准程序。
回到顶部
查看用户资料 发送私信
trushant.w

新的用户


已加入:2013年9月22日
帖子:81
地点:印度浦那

 发布 发表于:星期五十一月01,2013 9:43上午
引用回复

dbzTHEdinosauer您好

如果您分享一些有关重新启动逻辑的示例,那将是一个很大的帮助。
回到顶部
查看用户资料 发送私信
阿努·达万(Anuj Dhawan)

高级会员


已加入:2006年4月22日
帖子:6250
地点:印度孟买

 发布 发表:2013年11月1日,星期五6:03 pm
引用回复

迪帕克写道:
我正在读取1000条记录的PS文件。在400条记录中,我有一个异常终止。那么我想在读取的最后一条记录为400时重新开始读取此文件。
这就是为什么存在检查点重新启动逻辑的原因。如果这不是一个问题,并且您计划实现这种事情,建议您应该了解商店中使用的检查点逻辑,而不要自己部署。

太太,如果我猜的很好,那么我想问的第一件事是-为什么问这个? AFAIK,所有非大型机语言也不提供 这样的设施 ;说(这个问题听起来是否来自PC世界)-您的问题的依据是什么?
回到顶部
查看用户资料 发送私信
迪帕克

新的用户


已加入:2013年10月11日
职位:37
地点:印度

 发布 发表:2013年11月1日,星期五6:45 pm
引用回复

@anuj

感谢您的回复

阿奴
我会尝试您的检查站建议.....


迪帕克
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> COBOL程式设计

 


类似主题
话题 论坛 回覆
该主题已锁定:您无法编辑帖子或回复。 将匹配的记录写入输出文件 DFSORT / ICETOOL 11
没有新帖 比较文件记录计数百分比... DFSORT / ICETOOL 4
没有新帖 比较两个文件以查找位置/日期... 同步排序 2
没有新帖 将文件从PD转换为显示... 同步排序 4
没有新帖 RECFM = U磁带文件的记录数 DFSORT / ICETOOL 17
搜索我们的论坛:


 回到顶部