尝试在批处理环境中执行 REXX 或 TSO 命令时尝试绕过错误

Posted

技术标签:

【中文标题】尝试在批处理环境中执行 REXX 或 TSO 命令时尝试绕过错误【英文标题】:Trying to bypass an error when trying to execute a REXX or TSO command in batch enviroenment 【发布时间】:2016-10-20 14:57:20 【问题描述】:

我正在尝试从批处理环境中执行的 COBOL 程序中执行 TSO 命令;我首先要做的是创建一个名为 IKJTSOEV 的 TSO 环境;成功完成后(RETURN CODE=0),我使用 TSOLNK 例程执行 TSO 命令。

在第二次调用中出现问题,我收到 ikj56637I 错误。如果我查阅 IBM 手册,它会说:

IKJ56637I 您试图从授权环境运行命令、程序、CLIST 或 REXX exec。这在动态 TSO/E 环境下不受支持。 解释: 您正在使用 TSO/E 环境服务创建的 TSO/E 环境的地址空间中运行。您要求使用 TSO/E 服务工具从授权的 TSO/E 环境调用命令、程序、CLIST 或 REXX exec。此功能在此环境中不可用。

我能否得到一些关于正在发生的事情的解释,以及如何设法解决这个问题并执行我的 COBOL 程序?

在此先感谢

【问题讨论】:

目前还不清楚 COBOL 是从哪里来的。从消息中,您无法执行您尝试执行的操作,但无法知道您是否尝试正确,因此无法判断是否可能。 您发出的 TSO 命令是什么 - IBM 提供的标准命令,还是自制或 ISV 命令?它想做什么?可能有 REXX 方式不这样做;甚至可能从 REXX 调用命令。 【参考方案1】:

你真的需要从 Cobol 运行 TSO 吗???

如果你尝试:

Batch TSO - ISPF 运行 Cobol 程序,然后使用 ISPF 服务 调用 TSO。

这应该可行,但可能有更好的方法。只需在 TSO 下运行 Cobol 程序即可。

我不确定在 Cobol 程序中运行大量 TSO 步骤是否是个好主意。另一种方法,例如:

Cobol 程序将详细信息写入文件A TSO Rexx 程序读取文件 A 运行命令并写入文件 B 第二个 Cobol 程序读取文件 B

可能会更好。


对于运行 ISPF 批处理 Google ISPF Batch,您会发现类似 Batch Ispf 的响应

//USERAA   JOB (ISPF),'ISPF USER',MSGCLASS=X,
//         CLASS=A,NOTIFY=&SYSUID
//*
//ISPFSTP  EXEC PGM=IKJEFT01,DYNAMNBR=30,REGION=32M
//ISPPROF  DD RECFM=FB,LRECL=80,SPACE=(TRK,(2,2,2))
//ISPLLIB  DD DSN=USERA.LOADLIB,DISP=SHR
//ISPMLIB  DD DSN=ISP.SISPMENU,DISP=SHR
//ISPPLIB  DD DSN=ISP.SISPPENU,DISP=SHR
//ISPSLIB  DD DSN=ISP.SISPSENU,DISP=SHR
//         DD DSN=ISP.SISPSLIB,DISP=SHR
//ISPTLIB  DD RECFM=FB,LRECL=80,SPACE=(TRK,(1,0,1))
//         DD DSN=ISP.SISPTENU,DISP=SHR
//ISPCTL1  DD SPACE=(CYL,1),RECFM=FB,LRECL=80
//ISPLOG   DD SYSOUT=*,RECFM=FB,LRECL=133
//SYSEXEC  DD DSN=ISP.SISPEXEC,DISP=SHR
//SYSPROC  DD DSN=ISP.SISPCLIB,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSIN  DD *
  ISPSTART pgm(cobolPgm)

在您的程序中,您将使用ISPF SELECT CMD 服务来调用 TSO。 ISPF Edit 命令 model 将为您生成一个示例 ISPF 调用。

基本上在 cobol 中你会这样做

CALL 'ISPLINK' USING SELECT Command-Var

command-var 保存 'CMD(Your-command)'

这个thread 有一个调用 ISPF 的 Cobol 程序

【讨论】:

【参考方案2】:

您收到该错误是因为您的程序似乎已获得 APF 授权。您想在授权环境中在 TSO 中完成什么?

如果授权是有意的,您是只需发出命令还是需要检查命令的返回码?

您可以将 JCL 提交给内部阅读器或返回问题状态,发出命令并再次授权。

【讨论】:

以上是关于尝试在批处理环境中执行 REXX 或 TSO 命令时尝试绕过错误的主要内容,如果未能解决你的问题,请参考以下文章

无法让 SDSF 响应 TSO 或批处理命令

无法让SDSF响应TSO或批处理命令。

更改在 z/OS USS 中运行的 REXX exec 中的目录?

大型机中的 SHA256。 REXX 中是不是存在函数?

如何从 rexx 创建***通用 racf 配置文件

识别环境、z/OS UNIX 与 JCL 或 TSO