首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JCL中使用OGET-command

在JCL中使用OGET-command
EN

Stack Overflow用户
提问于 2019-12-17 21:29:42
回答 3查看 278关注 0票数 0

我一直在尝试从JCL中运行OGET-命令。通常,我会使用ISPF;6的ishell命令行,然后从那里运行命令,但是,这个作业太大了,我需要自动执行该任务。

到目前为止,我已经尝试使用IKJEF01、IKJEFT01和OSHELL-命令,以及BPXBATCH来发送命令,但都没有成功。

我希望使用的命令如下:

OGET '/CPU/TMP/filename.IND‘'library.INDEX.EHH’二进制转换(NO)

我尝试使用IKJEFT01和OSHELL:

代码语言:javascript
运行
复制
//TMP1  EXEC  PGM=IKJEFT01,                                 
//            DYNAMNBR=200                                  
//SYSPROC  DD  DSN=SYS1.SBPXEXEC,DISP=SHR                   
//*                                                         
//SYSTSPRT DD  SYSOUT=*                                     
//SYSOUT   DD  SYSOUT=*                                     
//*                                                         
//SYSTSIN  DD  *                                            
OSHELL OGET '/CPU/TMP/filename.IND' 'library.INDEX.EHH' - 
             BINARY CONVERT(NO)                                        
//* 

我尝试使用BPXBATCH:

代码语言:javascript
运行
复制
//SHELLCMD  EXEC PGM=BPXBATCH                                        
//STDERR     DD SYSOUT=*                                             
//STDOUT     DD SYSOUT=*                                             
//STDPARM    DD *                                                    
SH OGET '/CPU2/TMP/filename.IND' 'library.INDEX.EHH' BINARY CONVERT(NO)
/*                                                                   

两种方法都会产生相同的错误:

代码语言:javascript
运行
复制
FSUM1006 A shell was not specified. Processing continues using the default shell name.
FSUM7332 syntax error: got (, expecting Newline

如果我删除CONVERT(NO),我会得到以下错误:

代码语言:javascript
运行
复制
FSUM1006 A shell was not specified. Processing continues using the default shell name.
OGET: FSUM7351 not found 

有人能帮上忙吗?

EN

回答 3

Stack Overflow用户

发布于 2019-12-18 01:56:08

我没有找到一种方法来解决我最初的问题,但我写了一个REXX脚本来完成这项工作:

代码语言:javascript
运行
复制
/* REXX demo */                                
ADDRESS TSO                                                  
"OGET '/CPU2/tmp/filename.ind'    'library.INDEX.EHH' BINARY
 CONVERT(NO)"   

这是用以下代码从我的CNTL中调用的:

代码语言:javascript
运行
复制
//STEPREXX EXEC PGM=IKJEFT01,PARM='REXX-name'
//SYSEXEC   DD DSN=PDS,DISP=SHR      
//SYSTSPRT  DD  SYSOUT=*                           
//SYSTSIN   DD  DUMMY                              
票数 1
EN

Stack Overflow用户

发布于 2019-12-18 15:04:32

我在过去也有过类似的任务,我最终得到了以下解决方案:

代码语言:javascript
运行
复制
//COPYSTEP EXEC PGM=IKJEFT01
//         SET SRC='/CPU2/tmp/filename.ind'
//         SET Q=''''
//IN       DD PATH=&Q.&SRC.&Q,PATHOPTS=(ORDONLY)
//OUT      DD DSN=LIBRARY.INDEX.EHH,DISP=(,CATLG),
//          SPACE=(TRK,(10,10),RLSE),RECFM=FB,LRECL=4000,BLKSIZE=0
//SYSTSPRT DD SYSOUT=*                                          
//SYSTSIN  DD *                                                  
 OCOPY INDD(IN) OUTDD(OUT) BINARY CONVERT(NO) PATHOPTS(USE)
/*

另一种选择是在USS中创建shell脚本,然后从JCL执行它。

代码语言:javascript
运行
复制
//SHRUN  EXEC PGM=BPXBATCH,PARM='SH'                    
//STDIN     DD  PATH='/path/to/script/script.name',
//          PATHOPTS=(OCREAT,ORDONLY),                  
//          PATHMODE=(SIRWXU,SIROTH),                   
//          PATHDISP=(KEEP,KEEP)                        
//STDOUT  DD SYSOUT=*                                   
//STDERR  DD SYSOUT=*                                   
//STDENV  DD *

脚本本身非常简单

代码语言:javascript
运行
复制
cp -W "seqparms='RECFM=FB,LRECL=4000'" /CPU2/tmp/filename.ind "//'LIBRARY.INDEX.EHH'" 
票数 1
EN

Stack Overflow用户

发布于 2019-12-18 16:52:33

OGET是一个TSO命令,可以通过IKJEFT01直接访问。不需要调用OSHELL或BPXBATCH (BTW...OSHELL只是一个调用BPXBATCH的REXX。

只需在原始JCL中直接使用OGET (不使用OSHELL命令),它就会工作:

代码语言:javascript
运行
复制
//TMP1  EXEC  PGM=IKJEFT01,                                 
//            DYNAMNBR=200                                  
//SYSPROC  DD  DSN=SYS1.SBPXEXEC,DISP=SHR                                                                          
//SYSTSPRT DD  SYSOUT=*                                     
//SYSOUT   DD  SYSOUT=*                                                                                            
//SYSTSIN  DD  *                                            
OGET '/CPU/TMP/filename.IND' 'library.INDEX.EHH' - 
             BINARY CONVERT(NO)                                        
//* 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59375321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档