我要做的是从批处理环境中执行的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程序?
非常感谢提前
答案 0 :(得分:1)
你真的需要从Cobol ???
运行TSO如果您尝试:
这应该有用,但可能有更好的方法。只需在TSO下运行您的Cobol程序即可。
我不确定在Cobol程序中运行大量TSO步骤是个好主意。另一种方法如下:
可能会更好。
要运行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提交给内部阅读器或返回问题状态,发出命令并再次授权。