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

时间:2016-10-20 14:57:21

标签: mainframe zos rexx tso

我要做的是从批处理环境中执行的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程序?

非常感谢提前

2 个答案:

答案 0 :(得分:1)

你真的需要从Cobol ???

运行TSO

如果您尝试:

  • 批量TSO - ISPF 运行Cobol程序,然后使用 ISPF服务来呼叫TSO。

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

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

  • Cobol程序将详细信息写入fileA
  • TSO Rexx程序读取fileA运行命令并写入fileB
  • 第二个Cobol程序读取fileB

可能会更好。

要运行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命令模型将为您生成一个示例ISPF调用。

基本上在cobol你会做

CALL 'ISPLINK' USING SELECT Command-Var

其中command-var包含'CMD(你的命令)'

这个thread有一个叫做ISPF的Cobol程序

答案 1 :(得分:0)

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

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

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