mainframe - 具有多个输入文件的 IEBGENER
问题描述
我是大型机的新手。我有一份工作,JCL 中的这一步似乎有点混乱。
//*----------------------------------------------------------
//* IEBGENER
//*----------------------------------------------------------
//GENER02 EXEC PGM=IEBGENER,COND=(8,LT)
//SYSPRINT DD SYSOUT=I
//SYSUT1 DD DSN=&&FILE1,DISP=(OLD,DELETE)
// DD DSN=&&FILE2,DISP=(OLD,DELETE)
// DD DSN=&&FILE3,DISP=(OLD,DELETE)
//SYSUT2 DD DSN=&&OUT1,DISP=(NEW,PASS),
// SPACE=(TRK,(100,100),RLSE),UNIT=WORK,
// DCB=(LRECL=90,BLKSIZE=22950,RECFM=FB)
//SYSIN DD *
GENERATE MAXLITS=100
RECORD FIELD=(20,' ',,1),
FIELD=(28,' ',,21),
FIELD=(16,'AB110000AB012561',,49),
FIELD=(26,' ',,65)
/*
我知道 IEBGENER 是一个复制实用程序,但是有 3 个输入文件和那个参数,输出文件到底是什么?它结合了3个文件吗?
解决方案
简短的回答是肯定的。z/OS 将 DD 语句中的所有 DD 卡连接到一个逻辑包中,然后一起处理它们。请参阅https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieab600/iea3b6_Syntax4.htm
更长的答案是您从文件(z/OS 术语中的数据集)的角度看待事物;大部分 z/OS 的结构并非如此。z/OS 实用程序倾向于从某种面向数据的角度看待事物,通常称为记录或记录块;在上面的示例中,IEBGENER 将查看通过 SYSUT1 提供的每条记录,并进行一些处理(记录在此: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm。 zos.v2r1.idau100/u1132.htm ),然后将输出写入 SYSUT2。IEBGENER 甚至没有真正意识到有多个输入数据集;它只是向操作系统询问来自 SYSUT1 的下一条记录,z/OS 将响应,然后 IEBGENER 告诉 z/OS 将输出记录写入 SYSUT2。
推荐阅读
- sitecore - 使用 jss deploy 部署到 sitecore 时收到消息“不允许使用空字符串”
- javascript - Asp.net C# 使用 Javascript 将数据从 gridview 显示到 TextBox
- java - 如何使用 oop 在 ArrayList 中添加对象?
- angular - 启动 SSR 应用程序时找不到模块“@firebase/messaging/sw”
- php - 为什么 PHP_AUTH_USER 和 PHP_AUTH_PW 实际上设置了外部身份验证?
- java - 在firebase实时数据库中按时间戳删除帖子
- r - 将日期从原点转换为 POSIXct
- javascript - 如何在使用jquery单击子菜单时更改主菜单颜色
- django - 如何在 Wagtail 中测试 page_published 信号?
- javascript - Vue.js 单元测试错误 Module not found: 'canvas' in amcharts4