3

我在弄清楚如何让 IEBGENER 以我想要的方式工作时遇到了一些麻烦。我应该先说我在学术大型机上的 z/OS 环境中运行 IEBGENER。

我有三个 JCL 过程 (PROC) 内联到我正在使用的一些 COBOL 代码中,我需要 IEBGENER 作为将我的 PROC 放入“我的 MVS ID 下的永久过程库”的第一步之一,并将我的 COBOL源“进入我的 MVS ID 下的永久顺序数据集”。

讲师提到要“记住为这些数据集编码正确的 LRECL 和 BLKSIZE 信息”。

我对 IEBGENER 不是很熟悉,也没有找到任何能真正向我解释如何做我想做的事情的东西。

任何“大铁”人可以提供帮助?

4

7 回答 7

5

如前所述,IEBGENER 是一个复制程序。它接受 SYSUT1 上的输入并“生成”它以输出数据集 SYSUT2。在您的实例中,由于您要复制 2 个文件,因此最容易有 2 个 GENER 步骤,每个步骤产生一个输出数据集。

这里唯一棘手的部分是以正确的格式获取输出数据集。所以,要生成 proclib,假设它当前没有被编目,你的 SYSUT2 看起来像这样:

//SYSUT2  DD  DSN=&SYSUID.PROCLIB,
//            DISP=(NEW,CATLG,DELETE),
//            DCB=(RECFM=FB,LRECL=80,DSORG=PO)

源输出的顺序数据集看起来相似,但 DCB 选项上没有 DSORG 子参数。那里的 PO 选项说创建一个 PDS 而不是 QSAM 文件。在现代 z/OS 安装中,不需要编码 BLKSIZE,因为如果您不指定,系统将计算最佳大小。

于 2009-04-14T18:51:33.903 回答
4

这是如何使用 IEBGENER(如前所述,应该在 IBM 文档站点上):

//COPY EXEC PGM=IEBGENER
//SYSUT1 DD DSN=MY.INPUT.FILE,DISP=SHR
//SYSUT2 DD DSN=MY.OUTPUT.FILE,DISP=NEW,SPACE=....
//SYSIN DD DUMMY

IEBGENER 是“只是一个”复制程序,它所需要的只是一个输入文件、输出文件和一个控制文件

我不确定您认为什么是“特定的”,这不只是知道要使用哪些名称的问题吗?

编辑:如果你想要的是定义你的输入内联,试试这个:

//SYSUT1 DD *
...
/*

或者更好的是,如果您的输入也包含 JCL:

//SYSUT1 DD DATA,DELIMITER=XX
...
XX

不过,JCL 仍然不是例外。

于 2009-04-14T15:32:57.313 回答
2

这是 IBM Z/OS 手册的链接 http://www-03.ibm.com/systems/z/os/zos/bkserv/v1r10books.html 搜索 JCL,您会找到 JCL 的手册。IEBGENER 是 IBM 提供的复制程序,用于将数据从一个数据集(文件)复制到另一个数据集。您将拥有输入文件、输出文件和控制文件。LRECL 和 BLKSIZe 是数据集参数。如果输入文件和输出文件参数不匹配,则可能无法正确复制数据。我没有完全理解你的问题。您能否详细说明您需要使用 IEBGENER 做什么。

于 2009-04-14T19:08:29.557 回答
2

只是为了让您不必担心 DCB 参数,从输入数据集中指向值是一个不错的技巧。

//STEP100  EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DISP=SHR,DSN=INPUT.FILE
//SYSUT2   DD DSN=OUTPUT.FILE,
//           DISP=(,CATLG,DELETE),
//           SPACE=(TRK,(300,50),RLSE),
//           DCB=*.SYSUT1
//SYSIN    DD DUMMY
于 2012-04-06T22:18:38.340 回答
2

几个小点:

DCB=(RECFM=FB,LRECL=80,DSORG=PO)

DCB= 不再需要,只需代码

RECFM=FB,LRECL=80,DSORG=PO

还:

因为记录是固定格式的,所以 BLKSIZE 必须是 80 的偶数倍。很多时候,人们使用 3120 的值。其原因隐藏在古代的迷雾中。我倾向于使用 27920,以便在 3390 设备上获得最有效的空间使用。

不必为新的 DASD(磁盘)数据集指定块大小。系统确定的块大小将自动为您提供最佳块大小(对于 3390 上的 80 的 LRECL 确实是 27920)

于 2009-09-28T13:15:47.927 回答
0

听起来好像你的导师在提醒你给“永久过程库”和“永久序列数据集”提供正确的 LRECL 和 BLKSIZE。从历史上看,这样的数据集是 RECFM=FB,LRECL=80。

因为记录是固定格式的,所以 BLKSIZE 必须是 80 的偶数倍。很多时候,人们使用 3120 的值。其原因隐藏在古代的迷雾中。我倾向于使用 27920,以便在 3390 设备上获得最有效的空间使用。

于 2009-04-29T20:24:12.260 回答
0

IEBGENER 是 IBM 拥有的最被低估和误解的实用程序之一。

这是最佳文档的超链接:IEBGENER

IEBGENER 不仅仅是一个文件到文件实用程序,它只进行复制。它可以轻松、更有效地创建可变的阻止文件。它可以通过适当的缓冲实际上是您最快的文件到文件复制实用程序,因为它过去没有很好地在内部缓冲,尽管现在我相信它现在是最快的。//SYSPRINT 消息 - 可悲的是 - 非常神秘,如果不是真的很荒谬的话。许多商店都有一个称为 BETERGENER 的加速器,因为大多数程序员不知道如何缓冲 IEBGENER,而且由于 IBM 正在迎合那些希望 MVS 看起来像 Windows 并且行为像 Windows 的娇惯的新程序员,因此使用 IEBGENER 对用户来说更加友好。

于 2017-07-21T17:20:37.377 回答