我要做的是从批处理环境中执行的COBOL程序中执行一个TSO命令;我首先要创建一个名为IKJTSOEV的TSO环境;在成功完成(返回CODE=0)之后,我使用TSOLNK例程执行一个TSO命令。
在第二个调用中出现了问题,我得到了ikj56637I错误。如果我查阅IBM手册,它会说:
IKJ56637I您试图从授权的环境中运行命令、程序、CLIST或REXX。在动态TSO/E环境下不支持这一点。说明:您正在使用TSO/E环境服务创建的TSO/E环境在地址空间中运行。您要求使用TSO/E服务工具从授权的TSO/E环境中调用命令、程序、CLIST或REXX exec。此函数在此环境中不可用。
我是否可以得到一些关于正在发生的事情的解释,以及我如何设法解决这个问题并执行我的COBOL程序?
事先非常感谢
发布于 2016-10-20 20:49:50
你真的需要从Cobol运行TSO吗?
如果你真的试过:
这是可行的,但可能有更好的方法。只要在TSO下运行Cobol程序就可以了。
我不确定在Cobol程序中运行大量的TSO步骤是否是一个好主意。另一种办法是:
也许效果会更好。
对于运行ISPF批处理Google ISPF批次,您将发现类似于批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样例调用。
基本上在科波你会做
CALL 'ISPLINK' USING SELECT Command-Var其中命令-var持有“CMD(您的-命令)”
这个线程有一个名为ISPF的Cobol程序。
发布于 2017-02-25 16:23:37
您将得到该错误,因为您的程序似乎是APF授权的。在TSO中,您试图从授权的环境中完成什么?
如果授权是有意的,那么您只需要发出命令还是需要检查命令中的返回代码?
您可以将JCL提交给内部读取器,或者回到问题状态,发出命令并再次授权。
https://stackoverflow.com/questions/40157950
复制相似问题