免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tigerzxy
打印 上一主题 下一主题

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!! [复制链接]

论坛徽章:
0
21 [报告]
发表于 2005-06-16 08:02 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

QRCVDTAQ是什么呢?好象和DTAQ有关哦,我们这没有原码,也没有description,看不到啊

我想应该就是和dtaq相关的api,功能就是你说的获取dtaq的值吧

论坛徽章:
0
22 [报告]
发表于 2005-06-16 09:43 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

原帖由 "fzrxh" 发表:
QRCVDTAQ是什么呢?好象和DTAQ有关哦,我们这没有原码,也没有description,看不到啊

我想应该就是和dtaq相关的api,功能就是你说的获取dtaq的值吧



QRCVDTAQ就是收取数据队列(即DTAQ)中的数据,他是一个系统API函数来的,至于怎么使用,blogliou老哥在前面的回复已经给出详细的参数了,照套就可以了。

论坛徽章:
0
23 [报告]
发表于 2005-06-16 09:57 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

支持,贴点源码,大家学。

论坛徽章:
0
24 [报告]
发表于 2005-06-16 11:57 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

[quote]原帖由 "zzzddd"]用jobq,设max act为1,就只能一个一个完成![/quote 发表:
这要建一个SUBSYSTEM了。

论坛徽章:
0
25 [报告]
发表于 2005-06-16 12:49 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

你可以通过在被提交程序中作写文件记录或发DTAQ来控制,我这边是这样处理的!

论坛徽章:
0
26 [报告]
发表于 2005-06-16 16:53 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

如果是这种情况:
  若程序B需要等待作业A1,A2,......An都完成再执行,而A类作业可以并行运行,并且不知道A类作业的确切个数。
  在这种情况下似乎用数据队列无能为力。就算是每个A类作业在完成时候都往数据队列写入数据,但如何能够确定A类作业都完成了呢?
  最好是给A类作业分配统一的Jobname, 再查询jobname作业的情况,但如何实现呢?哪位仁兄有这方面的经验帮忙解答一下,谢谢。

  上面提到的另外一种方法可行,但觉得稍微麻烦了一些。

论坛徽章:
0
27 [报告]
发表于 2005-06-16 19:37 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

原帖由 "cagd" 发表:
如果是这种情况:
  若程序B需要等待作业A1,A2,......An都完成再执行,而A类作业可以并行运行,并且不知道A类作业的确切个数。
  在这种情况下似乎用数据队列无能为力。就算是每个A类作业在完成时候都往数据队列写..........

可以通过写挡的方式,作业A1,A2,......An提交前先记流水记录,状态为“进行中”,作业正常完成后更新流水记录,状态为“完成”。程序B再判断是否所有的A作业都完成了才进行,否则等待!我作过的批处理系统优化就是这样实现的。

论坛徽章:
0
28 [报告]
发表于 2005-06-17 09:57 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

原帖由 "hsiang_wang" 发表:

可以通过写挡的方式,作业A1,A2,......An提交前先记流水记录,状态为“进行中”,作业正常完成后更新流水记录,状态为“完成”。程序B再判断是否所有的A作业都完成了才进行,否则等待!我作过的批处理系统优化就是?.........


偶也试过,感觉不是太方便
最好能根据指定作业条件获取作业个数,写个这样的函数,尝试中

论坛徽章:
0
29 [报告]
发表于 2005-06-17 13:06 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

原帖由 "cagd" 发表:


偶也试过,感觉不是太方便
最好能根据指定作业条件获取作业个数,写个这样的函数,尝试中

你将A1,A2,......An作业信息都记下,不是可以达到根据指定作业条件获取作业个数的目的吗。如果还是不能满足你的要求,查查API吧!我相信总会找到方法!

论坛徽章:
0
30 [报告]
发表于 2005-06-17 16:00 |只看该作者

在批处理里怎样确定上一程序提交的作业已经全部完成?急!!!

惭愧惭愧。几天不来,已经这么多回帖了。谢谢大家关照。我不用400已好多年了,如今再作冯妇,有些勉为其难。幸好在同事的帮助下,已经得到圆满解决。
现将解决方法公布如下,欢迎拍砖。

首先,先说明一下我的思路。由于是批处理改造,部分程序由顺序执行改为程序内提交作业并行。那就要在下一程序执行前判断前一程序提交作业是否全部结束。有人提出在作业里修改状态表,不失为一个好方法。但是我的原则是:不改动程序,参数表控制。这样有新的并行作业,只需配置参数表就行了。
所以,我在交易调用后,调用一个程序去判断上一交易提交的作业是否全部结束,如果没有,延迟一秒,循环再调用,直到全部结束,再执行下一交易。
这个程序里面要做的:
1.运行wrkactjob命令,将qbatch子系统下内容输出到一个pf中。
2.读取此pf文件中关于wrkactjob的作业状态字段。如果此pf文件为空,表示全部结束;如果不为空,且存在msgw状态,则抱错返回。否则返回运行中状态。

另外,我们需要在批处理控制表中增加一个作业名的字段。有并行作业的填写此字段。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP