【问题标题】:Trying to bypass an error when trying to execute a REXX or TSO command in batch enviroenment尝试在批处理环境中执行 REXX 或 TSO 命令时尝试绕过错误
【发布时间】: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 调用命令。

标签: mainframe zos rexx tso


【解决方案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 提交给内部阅读器或返回问题状态,发出命令并再次授权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      相关资源
      最近更新 更多