【问题标题】:JCL for previous month-year in dataset name数据集名称中上个月年份的 JCL
【发布时间】:2012-11-08 21:05:51
【问题描述】:

我需要在当月的第一个工作日运行一项工作,其中包含月底关闭(上个月)的会计数据,以便在某些年终工作中使用。我想每个月运行相同的作业,无需操作员干预,并且在数据集名称中包含结束月份和年份,以便轻松识别数据集的结束时间段。当前运行 8 个单独的作业来完成此任务。请提供具体的 JCL 样本。

【问题讨论】:

  • 放入当前工作的例子,让我们看看你想做什么?您是自己提交批处理作业还是按计划提交?大多数调度程序都有某种形式的变量,允许您使用算术和工作日来生成您想要的日期

标签: jcl


【解决方案1】:

不清楚为什么要运行 8 个单独的作业来完成这项任务,每个作业的作用是什么?

您是否使用任何调度程序在特定时间运行作业?

您可以使用 EZACFSM1 使用系统符号参数将日期/时间信息添加到数据集名称。

http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA1E241/2.2.2

【讨论】:

    【解决方案2】:

    对此的最佳解决方案是使用作业调度程序的功能。说了这么多……

    Here 是 EZACFSM1 的更新参考。 OS/390 2.10 已经十多年没有更新了。

    但是,您不能只使用此实用程序来创建名称中包含日期/时间信息的数据集。 EZACFSM1 简单地从 SYSIN 读取并写入 SYSOUT,解释它读取的系统符号。

    您可以使用 EZACFSM1 为 IDCAMS 编写 ALTER 语句,将静态命名的数据集(其中没有年份和月份的数据集)重命名为具有这些属性的数据集。它确实需要两个额外的步骤和一个警告。

    //CATLG    EXEC PGM=IEFBR14
    //DD01     DD  DISP=(NEW,CATLG),
    //             DSN=STUFF,
    //             AVGREC=U,
    //             LRECL=80,
    //             RECFM=FB,
    //             SPACE=(80,(1000,100))
    //*
    //MKALTER  EXEC PGM=EZACFSM1
    //SYSOUT   DD  DISP=(NEW,PASS),
    //             AVGREC=U,
    //             LRECL=80,
    //             RECFM=FB,
    //             SPACE=(80,(1000,100))
    //SYSIN    DD  *
     ALTER STUFF NEWNAME(STUFF.Y&YR4&MON)
    //*
    //RENAME   EXEC PGM=IDCAMS
    //SYSIN    DD DISP=(OLD,PASS),DSN=*.MKALTER.SYSOUT
    //SYSPRINT DD SYSOUT=*
    //*
    

    警告与作业调度有关。假设您的工作在该月的最后一天运行得很晚。如果它在输入队列中的时间足够长,它将在下个月的第一天运行,从而使 ALTER 不正确。

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 2012-08-01
      • 2016-09-28
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      相关资源
      最近更新 更多