IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

rexx根据文件输入生成定制的jcl


IBM大型机论坛 -> 清单& REXX
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
纳拉斯里达

新的用户


已加入:2006年10月12日
帖子:32
地点:印度

发布发表:2007年10月5日,星期五8:03 pm
引用回复

你好

我有以下要求。

您能否发送REXX代码?因为我对REXX编码非常陌生。

--------------------------------------------

首先,它需要读取一个包含以下记录的输入文件
OSL1地址
OSL2地址
OSL3地址
SDH地址
TSDH地址
LIMS地址
NCM APPE
INS APPR
NCM APPR
邓恩·伯克
NCM BKSE
NCM自由度
NCM EQAP
伯特·埃克
NCM均衡器
SDH EQUT
TSDH方程
SDH交换
TSDH交换
LIMS EXCH
INS NETI
NCM NETI
INS PRTG
NCM PRTG
SDH STTN
TSDH STTN
COSX STTN
LIMS STTN
NCM ULOC
SDH ULOC
TSDH ULOC
伯特·乌特
润诺010608

通过现在获取最后一条记录RUNNO Value,即输入文件中的010608

然后需要再次读取第二个文件,文件名将取决于RUNNO。

在这种情况下,文件名将为DSN1AUD.ULOC.VEXTENS.A ******(*表示第一个文件中的runno)

然后需要将第二个文件的内容写入第三个文件。


请帮助编码。

我不太了解REXX编码。

由dbz重新命名为“满足以下要求所需的Rexx编码”
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2007年10月5日,星期五8:14 pm
引用回复

对主题的命名也不太了解。

无论您收到什么解决方案,没人会通过搜索找到它。

您需要读取并传播的第二个文件的大小是多少?如果这是一个大文件(大记录或许多记录),那么rexx可能不是合适的工具。

如果第二个文件可能很大或属于vsam类型,则最好使用REXX脚本为将读取第二个文件并写入第三个文件的cobol模块构建适当的jcl(数据集名称)。您可以读取第一个神秘文件,生成jcl并提交作业,该作业将调用一个更适合复制作业要求的模块(例如sort,iebgener等。)或COBOL模块(如果必须完成一些复杂的工作) ..)。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2007年10月5日,星期五8:43 pm
引用回复

嗨!

这个问题描述得不好!

除runno记录外,第一个文件的内容无关紧要。
以及上述记录的位置

如果它可以出现在任何位置,则需要执行EXECIO循环

如果始终是最后一个并且记录数少于5000
一次阅读所有内容并分析STEM.last记录将更快

从发布的信息中得知之后,生成该信息应该非常简单
输入数据集名称和jcl以便在这个奇怪的要求想要的任何地方进行复制


问候


e.s
回到顶部
查看用户资料 发送私信
纳拉斯里达

新的用户


已加入:2006年10月12日
帖子:32
地点:印度

发布发表:2007年10月6日星期六12:58 am
引用回复

写道:
嗨!

这个问题描述得不好!

除runno记录外,第一个文件的内容无关紧要。
以及上述记录的位置

如果它可以出现在任何位置,则需要执行EXECIO循环

如果始终是最后一个并且记录数少于5000
一次阅读所有内容并分析STEM.last记录将更快

从发布的信息中得知之后,生成该信息应该非常简单
输入数据集名称和jcl以便在这个奇怪的要求想要的任何地方进行复制


问候


e.s



您的理解是正确的。它只有上面帖子中提到的记录。它始终是最后一条记录。

如前所述,我需要一个REXX代码来命名文件名并在REXX代码中创建IEBGENR复制jcl。

提前致谢
斯里
回到顶部
查看用户资料 发送私信
ofer71

全球主持人


已加入:2005年12月27日
帖子:2359
地点:以色列

发布发表:2007年10月6日星期六凌晨3:56
引用回复

只需确定一下:您是否希望我们为您提供现成的REXX代码?

回到顶部
查看用户资料 发送私信
纳拉斯里达

新的用户


已加入:2006年10月12日
帖子:32
地点:印度

发布发表:2007年10月6日星期六4:07 am
引用回复

ofer71写道:
只需确定一下:您是否希望我们为您提供现成的REXX代码?



是的,请问,因为我对此编程很陌生。
回到顶部
查看用户资料 发送私信
ofer71

全球主持人


已加入:2005年12月27日
帖子:2359
地点:以色列

发布发表:2007年10月6日星期六4:48 am
引用回复

您还希望我们为您调试吗?

回到顶部
查看用户资料 发送私信
纳拉斯里达

新的用户


已加入:2006年10月12日
帖子:32
地点:印度

发布发表:2007年10月6日星期六5:02 am
引用回复

ofer71写道:
您还希望我们为您调试吗?



不..

我只想知道如何在rexx程序中提交jcl
回到顶部
查看用户资料 发送私信
塞普拉萨德

活跃用户


已加入:2006年9月20日
职位:154
所在地:美国

发布发表:2007年10月6日(星期六)上午11:39
引用回复

嗨,Sridhar,

我希望下面的rexx代码能满足您的要求。

码:
/ ***** REXX ****** /                                                     
说“输入文件名”                                             
PULL 姓名                                                           
地址TSO                                                           
"ALLOC DA('"PSNAME"') FI(MYINDD) SHR REUSE"                           
"执行* DISKR MYINDD(STEM INDATA. FINIS"                           
"FREE FI(MYINDD)"                                                     
最终= INDATA.0                                                       
LAST_STR = INDATA.FINAL                                               
PARSE VAR LAST_STR TXT''NUM。                                       
队列"//JOBCARD                                                    " 
队列"//*                                                          " 
队列"//STEP01  EXEC  SORTD                                        " 
队列"//SORTIN   DD DSN = ADSN1AUD.ULOC.VEXTENS.A"||NUM||",         " 
队列"//             DISP=SHR                                      " 
队列"//SORTOUT  DD DSN = ADSN1AUD.ULOC.VEXTENS.A"||NUM||".THR,     " 
队列"//             DISP=(NEW,CATLG,DELETE),                      " 
队列"//             UNIT=SYSDA,SPACE=(CYL,(800,200),RLSE),        " 
队列"//             DCB=(*.SORTIN)                                "   
队列"//SYSIN  DD  *                                               "   
队列" SORT FIELDS=COPY                                            "   
队列"/*"                                                             
队列"//*"                                                             
队列"$$"                                                             
X =外出('LOG.')                                                     
"SUBMIT * END($$)"                                                     
X =外出('OFF')                                                     
PARSE VAR LOG.2"JOB" 工作ID MESSAGE                                     
说“此职位中提交了工作” ||工作||”用于创建第三文件'


谢谢
回到顶部
查看用户资料 发送私信
外籍人士

全球主持人


已加入:2007年3月14日
帖子:8794
地点:威尔士威尔士

发布发表:2007年10月6日星期六3:18 pm
引用回复

因此,对于REXX来说是新手,您应该阅读以了解REXX能够执行此功能,更重要的是,您自己尝试了哪些操作以及结果如何。

您是否在您的商店中搜索过REXX库以获取工作代码示例?

您愿意为定制的解决方案支付当前价格吗?
回到顶部
查看用户资料 发送私信
纳拉斯里达

新的用户


已加入:2006年10月12日
帖子:32
地点:印度

发布发表:2007年10月6日星期六6:45 pm
引用回复

塞普拉萨德写道:
嗨,Sridhar,

我希望下面的rexx代码能满足您的要求。

码:
/ ***** REXX ****** /                                                     
说“输入文件名”                                             
PULL 姓名                                                           
地址TSO                                                           
"ALLOC DA('"PSNAME"') FI(MYINDD) SHR REUSE"                           
"执行* DISKR MYINDD(STEM INDATA. FINIS"                           
"FREE FI(MYINDD)"                                                     
最终= INDATA.0                                                       
LAST_STR = INDATA.FINAL                                               
PARSE VAR LAST_STR TXT''NUM。                                       
队列"//JOBCARD                                                    " 
队列"//*                                                          " 
队列"//STEP01  EXEC  SORTD                                        " 
队列"//SORTIN   DD DSN = ADSN1AUD.ULOC.VEXTENS.A"||NUM||",         " 
队列"//             DISP=SHR                                      " 
队列"//SORTOUT  DD DSN = ADSN1AUD.ULOC.VEXTENS.A"||NUM||".THR,     " 
队列"//             DISP=(NEW,CATLG,DELETE),                      " 
队列"//             UNIT=SYSDA,SPACE=(CYL,(800,200),RLSE),        " 
队列"//             DCB=(*.SORTIN)                                "   
队列"//SYSIN  DD  *                                               "   
队列" SORT FIELDS=COPY                                            "   
队列"/*"                                                             
队列"//*"                                                             
队列"$$"                                                             
X =外出('LOG.')                                                     
"SUBMIT * END($$)"                                                     
X =外出('OFF')                                                     
PARSE VAR LOG.2"JOB" 工作ID MESSAGE                                     
说“此职位中提交了工作” ||工作||”用于创建第三文件'


谢谢



谢谢很多赛。

我在运行时遇到错误...

请在随附的文档中找到REXX代码和错误屏幕截图。
回到顶部
查看用户资料 发送私信
外籍人士

全球主持人


已加入:2007年3月14日
帖子:8794
地点:威尔士威尔士

发布发表:2007年10月6日星期六6:53 pm
引用回复

纳拉斯里达

请不要使用附件,因为许多站点阻止打开这些附件,这限制了可以为您提供帮助的人员数量。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2007年10月6日星期六6:55 pm
引用回复

引用:

ofer71写道:
您还希望我们为您调试吗?




不..


许诺
回到顶部
查看用户资料 发送私信
外籍人士

全球主持人


已加入:2007年3月14日
帖子:8794
地点:威尔士威尔士

发布发表:2007年10月6日星期六7:01 pm
引用回复

码:

PARSE VAR LAST_STR TXT''NUM。 


模板解析很棒,但是如果两个字段之间的指定空间数量过多,则可能会出现严重错误。我知道,因为我已经花了几个小时使用模板解析来调试其他人的代码。

在这种情况下,我会使用
码:
PARSE VAR LAST_STR TXT NUM。 
满足任何数量的空间。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2007年10月6日星期六7:33 pm
引用回复

我今天心情非常好,
这是工作,当我说工作时,表示我已经测试过了,
解决方案(刚刚草绘)

这是希望您能从中学习到一些东西的步骤:-)

1)分配两个数据集
Youruserid.MF.CLIST
Youruserid.MF.JCLLIB

两者都有
记录格式FB
排行榜80
blkize ....让系统处理它
空间 :
主缸2
次要圆柱2
目录块2
-足够进行此简单的练习

内容应该是
对于clist pds
GENJCL rexx脚本
对于jcl数据集
GENJCL jcl运行脚本
CNTL您的控制数据集

这是内容


rexx脚本
码:
 
/ * REXX------------------------------* /
/*                                                                   */
/ *--------------------------------* /
跟踪"O"                                                             
                                                                       
地址TSO"EXECIO * DISKR CNTL (STEM CNTL. FINIS"                   
最后= cntl.0                                                         
温度=条带(cntl.last)                                               
indx =条(word(temp,2))                                             
                                                                       
jclx.1 ="//ENRICOMF 工作 (H001),'GENJCL',NOTIFY = ENRICO,"               
jclx.2 ="//             CLASS = A,MSGCLASS = X,MSGLEVEL =(1,1)"           
jclx.3 ="//             TYPRUN=HOLD"                                 
jclx.4 ="//*"                                                         
jclx.5 ="//COPY    EXEC PGM=IEBGENER"                                 
jclx.6 ="//SYSPRINT  DD SYSOUT=*"                                     
jclx.7 ="//*            INPUT DATASET"                               
jclx.8 ="//SYSUT1   DD DISP = SHR,DSN = ENRICO.MF.A" || indx             
jclx.9 ="//*            OUTPUT DATASET"                               
jclx.10 ="//SYSUT2   DD DISP = SHR,DSN = ENRICO.MF.OUTPUT"               
un     = 10                                                         
如果jclx.3<> "//*" then ,                                             
   jclx.2 = jclx.2 || ","                                             
                                                                       
地址TSO"EXECIO " un " DISKW JCLX (STEM JCLX. FINIS"             
                                                                       
出口                                                                   


JCL运行它

码:

// ENRICOMF工作(H001),'GENJCL',NOTIFY = ENRICO,                         
//             CLASS = A,MSGCLASS = X,MSGLEVEL =(1,1)                       
// *------------------------------------
// *           DSN = ENRICO.MF.JCLLIB(GENJCL)                           
// *------------------------------------
// *                                                                   
// TSO     EXEC PGM=IKJEFT01,                                           
//             REGION=0M,                                             
//             DYNAMNBR=20                                             
// SYSPROC   DD DISP = SHR,DSN = ENRICO.MF.CLIST                           
// SYSABEND  DD SYSOUT=*                                               
// SYSPRINT  DD SYSOUT=*                                               
// SYSTSPRT  DD SYSOUT=*                                               
// SYSTSIN   DD *                                                       
  GENJCL                                                               
// JCLX      DD SYSOUT=(B,INTRDR),                                     
//             DCB=(RECFM = FB,LRECL = 80,BLKSIZE = 80)                     
// CNTL     DD DISP = SHR,DSN = ENRICO.MF.JCLLIB(CNTL)                     



这里的CNTL(剪了几行)


码:

OSL1地址   
OSL2地址   
....         
....         
TSDH ULOC   
伯特·乌特   
润诺010608


用您的用户名更改所有出现的“ ENRICO”(这是我的用户名)

运行后,您应该进入输入队列(SDSF I)
复制作业

我不会回答与此职位相关的任何问题
...
关于损坏,可贸易性,适用性,隐含性,...等的一般性法律免责声明

rexx脚本保持在最低限度,这取决于您自己学习和记录自己

问候

e.s
回到顶部
查看用户资料 发送私信
纳拉斯里达

新的用户


已加入:2006年10月12日
帖子:32
地点:印度

发布发表:2007年10月6日星期六9:01 pm
引用回复

写道:
我今天心情非常好,
这是工作,当我说工作时,表示我已经测试过了,
解决方案(刚刚草绘)

这是希望您能从中学习到一些东西的步骤:-)

1)分配两个数据集
Youruserid.MF.CLIST
Youruserid.MF.JCLLIB

两者都有
记录格式FB
排行榜80
blkize ....让系统处理它
空间 :
主缸2
次要圆柱2
目录块2
-足够进行此简单的练习

内容应该是
对于clist pds
GENJCL rexx脚本
对于jcl数据集
GENJCL jcl运行脚本
CNTL您的控制数据集

这是内容


rexx脚本
码:
 
/ * REXX------------------------------* /
/*                                                                   */
/ *--------------------------------* /
跟踪"O"                                                             
                                                                       
地址TSO"EXECIO * DISKR CNTL (STEM CNTL. FINIS"                   
最后= cntl.0                                                         
温度=条带(cntl.last)                                               
indx =条(word(temp,2))                                             
                                                                       
jclx.1 ="//ENRICOMF 工作 (H001),'GENJCL',NOTIFY = ENRICO,"               
jclx.2 ="//             CLASS = A,MSGCLASS = X,MSGLEVEL =(1,1)"           
jclx.3 ="//             TYPRUN=HOLD"                                 
jclx.4 ="//*"                                                         
jclx.5 ="//COPY    EXEC PGM=IEBGENER"                                 
jclx.6 ="//SYSPRINT  DD SYSOUT=*"                                     
jclx.7 ="//*            INPUT DATASET"                               
jclx.8 ="//SYSUT1   DD DISP = SHR,DSN = ENRICO.MF.A" || indx             
jclx.9 ="//*            OUTPUT DATASET"                               
jclx.10 ="//SYSUT2   DD DISP = SHR,DSN = ENRICO.MF.OUTPUT"               
un     = 10                                                         
如果jclx.3<> "//*" then ,                                             
   jclx.2 = jclx.2 || ","                                             
                                                                       
地址TSO"EXECIO " un " DISKW JCLX (STEM JCLX. FINIS"             
                                                                       
出口                                                                   


JCL运行它

码:

// ENRICOMF工作(H001),'GENJCL',NOTIFY = ENRICO,                         
//             CLASS = A,MSGCLASS = X,MSGLEVEL =(1,1)                       
// *------------------------------------
// *           DSN = ENRICO.MF.JCLLIB(GENJCL)                           
// *------------------------------------
// *                                                                   
// TSO     EXEC PGM=IKJEFT01,                                           
//             REGION=0M,                                             
//             DYNAMNBR=20                                             
// SYSPROC   DD DISP = SHR,DSN = ENRICO.MF.CLIST                           
// SYSABEND  DD SYSOUT=*                                               
// SYSPRINT  DD SYSOUT=*                                               
// SYSTSPRT  DD SYSOUT=*                                               
// SYSTSIN   DD *                                                       
  GENJCL                                                               
// JCLX      DD SYSOUT=(B,INTRDR),                                     
//             DCB=(RECFM = FB,LRECL = 80,BLKSIZE = 80)                     
// CNTL     DD DISP = SHR,DSN = ENRICO.MF.JCLLIB(CNTL)                     



这里的CNTL(剪了几行)


码:

OSL1地址   
OSL2地址   
....         
....         
TSDH ULOC   
伯特·乌特   
润诺010608


用您的用户名更改所有出现的“ ENRICO”(这是我的用户名)

运行后,您应该进入输入队列(SDSF I)
复制作业

我不会回答与此职位相关的任何问题
...
关于损坏,可贸易性,适用性,隐含性,...等的一般性法律免责声明

rexx脚本保持在最低限度,这取决于您自己学习和记录自己

问候

e.s



嗨,E.S

非常感谢您的帮助和宝贵的时间

它工作成功。

给您答案时,再也不会有任何问题,您可以以任何人无法理解的方式给出答案。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 清单& REXX

 


类似主题
话题 论坛 回覆
该主题已锁定:您无法编辑帖子或回复。 将匹配的记录写入输出文件 DFSORT / ICETOOL 11
没有新帖 比较文件记录计数百分比... DFSORT / ICETOOL 4
没有新帖 比较两个文件以查找位置/日期... 同步排序 2
没有新帖 将文件从PD转换为显示... 同步排序 4
没有新帖 RECFM = U磁带文件的记录数 DFSORT / ICETOOL 17
搜索我们的论坛:

回到顶部