【问题标题】:What command can I use in a JCL + NDM script to make the transmissions wait?我可以在 JCL + NDM 脚本中使用什么命令来等待传输?
【发布时间】:2020-02-04 20:59:27
【问题描述】:

在 z/OS 系统上工作,我不是编程团队的一员,但我知道一些编程知识。我们有一个正在使用的工具,可以输出 JCL + NDM 以将文件从公司发送到客户。我可以在提交卡片之前手动添加和查看输出。

我正在根据客户的请求寻找一种影响传输时间的方法。我想保持简单,只需在提交之前修改 JCL + NDM。他们希望每次传输之间有几分钟(执行 NDM 脚本),传输文件的时间可能会有所不同。

为此我可以使用哪些命令?我进行了一些搜索,看起来大多数人认为这是一个糟糕的主意,尽管我不清楚为什么(对大型机还是新手)。

我遇到了 NDM 的 MAXDELAY,但我不相信这会有所帮助,它看起来更像是一种排队机制而不是延迟。

另一个人提到 JCL 的 STARTT 可以将它们隔开......如果我们知道它们需要多长时间发送。

我希望有什么东西会造成延迟。我们已经将优先级设置为单线程脚本并一次发送一个。

由于我在同一个脚本中有 JCL 和 NDm,我可以使用其中任何一个来进行延迟。

作为参考,在其他语言中,大多数语言都有waitdelay 或其他可用命令。此外,有时这些命令也有特殊之处。 Arduino 在delay 期间停止所有执行,因此不推荐。

【问题讨论】:

  • 您的问题并没有真正阐明您要做什么。您是要定期发送相同的文件(例如每 15 分钟),还是在最后一个文件完成发送后 15 分钟再发送一个文件,或者其他一些变体。了解您的期望将有助于回答您的问题。
  • 每个等待期后的不同文件。
  • 您没有提供足够的细节来回答这个问题。请准确提供您想要实现的目标、您尝试过的内容以及您从系统收到的反馈。
  • @RichJackson 呃....不。具有大型机的客户端的性质意味着大量的机密性,因此您无法获得细节。这是一个简单的问题,所以如果你需要这一切,那是你想多了,或者把我封印了。
  • @YetAnotherRandomUser 呃...好的。客户端到大型机协议非常简单,不一定是专有的。如果您的商店有大型机工作负载,他们很可能也有调度程序。也许你应该和管理它的团队谈谈。您可以保留您的详细信息,祝您好运,在这里得到直接的答复。

标签: mainframe zos jcl connect-direct


【解决方案1】:

如果您可以在 JCL 中添加一个步骤,那么...

//WAITABIT EXEC PGM=BPXBATCH,PARM='SH sleep 10s'
//STDOUT   DD  SYSOUT=*
//STDERR   DD  SYSOUT=*

...可能是您正在寻找的。 sleep shell 命令随 z/OS 提供。

有些人担心这会不必要地捆绑发起者。

【讨论】:

  • 哦,这可能行得通。我会由我的人管理它,看看他们怎么说。
  • 它可能会起作用,但如果作业被取消会怎样......整个过程是否会出现问题?我不认为@rich-jackson 的问题要求太多细节。 OP 问了一个关于延迟的一般性问题,他要求提供更多关于你的目标的细节,而不是细节。这个例子可能有效,但由于问题的模糊性,它必然是通用的。固定间隔延迟,任何延迟都可以,延迟取决于传输时间还是完成时间?
  • 为什么要等待 10 秒?如果您正在等待某个事件,那么只需……等待该事件。
  • @SteveIves 有时事件是“等到您无法控制且在完成时不会通知您的外部进程完成”。我不得不处理这种情况。
【解决方案2】:

z/OS 2.2 确实引入了SCHEDULEstatement,它允许提交作业但将执行延迟到某个特定日期/时间。

它可能看起来像这样:

// SCHEDULE HOLDUNTL=('02:37','02/13/2020')

但是HOLDUNTLSTARTBY 参数都不能保证确切的开始时间。

因此,如果您想有一个短暂的延迟,您可以使用 cschneid 的解决方案,对于未来某个固定的开始时间,上述解决方案将避免不必要地阻塞启动器。

【讨论】:

  • 这就是STARTT所做的。由于传输可能需要任意数量的时间,可能超过几分钟的延迟,在这种情况下,我们不能真正将它们安排在几分钟之内。在其他情况下,这可能是一个很好的解决方案。
【解决方案3】:

仅供参考,NDM(网络数据移动器)被称为 Connect:Direct 已经有一段时间了。

您是否考虑过使用 DGADWAIT,即运行任务等待程序?

【讨论】:

    【解决方案4】:

    这不是大型机的工作方式。将固定延迟放入批处理作业的想法意味着您没有正确定义您的流程(您为什么等待?您在等待什么?为什么不使用您可用的无数工具来安排第二部分一旦你等待的任何事情发生后的过程?)。

    如果您有一堆文件要传输,那么只需提交一个或多个批处理作业来传输文件,当它们到达那里时它们就会到达那里。如果您有特定的要求以特定的时间间隔运行批处理作业,那么要么让创建和提交 JCL 的进程只每隔一段时间这样做,要么你可以让软件将每个文件写入数据集并让另一个进程读取每 xxx 分钟归档一次,并为符合条件的文件构建传输作业。

    您遇到的问题是您正在尝试修改一个完全可接受的流程(构建批处理作业以发送文件然后提交作业)来做一些不同的事情,因为客户的要求已经改变(他们不能不再以特别的方式接收文件 - 通常是因为他们对传入文件的处理很糟糕)或者从一开始就没有被正确理解。

    如果您无法修改流程,那么您将不得不即兴创作它。一种选择是将传输作业定向到不活动的启动器(执行 jbatch 作业的系统部分),然后每隔 xxx 分钟自动启动然后停止启动器,一次只允许一个作业运行.

    如果您希望在前一个传输完成后按顺序运行每个传输,则只需为所有批处理作业指定相同的名称(因此它们必须运行单流)并使用 MAXDELAY=0。

    【讨论】:

      猜你喜欢
      • 2022-03-30
      • 2012-11-10
      • 1970-01-01
      • 2017-05-14
      • 2015-02-27
      • 2022-08-18
      • 1970-01-01
      • 2014-06-05
      • 2018-11-07
      相关资源
      最近更新 更多