2016-10-20 75 views
0

我想要做的是在批處理環境中執行的COBOL程序中執行TSO命令;我首先做的是創建一個調用IKJTSOEV的TSO環境;成功完成後(RETURN CODE = 0),我使用TSOLNK例程來執行TSO命令。嘗試在批處理環境中嘗試執行REXX或TSO命令時跳過錯誤

問題出現在第二次調用中,我得到ikj56637I錯誤。如果我請教IBM手冊,它說:

IKJ56637I 試圖從授權的環境中運行命令,程序,CLIST或REXX EXEC。這在動態TSO/E環境下不受支持。 說明: 您正在具有由TSO/E環境服務創建的TSO/E環境的地址空間中運行。您要求使用TSO/E服務工具從授權的TSO/E環境調用命令,程序,CLIST或REXX exec。此功能在此環境中不可用。

我可以收到一些有關正在發生的事情的解釋,我該如何解決這個問題並讓我的COBOL程序得到執行?

非常感謝提前

+0

目前還不清楚COBOL在哪裏進入。從信息中,你不能做你想做的事情,但沒有辦法知道你是否正確地嘗試了,所以不能'告訴它是否可能。 –

+0

您正在發佈的TSO命令是什麼 - 標準的IBM提供的命令,還是本地或ISV命令?它想要做什麼?可能有REXX的方式不這樣做;甚至可能調用REXX的命令。 – zarchasmpgmr

回答

1

你真的需要從Cobol運行TSO嗎?

如果你嘗試:

  • 批TSO運行COBOL程序 - ISPF然後使用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有COBOL程序調用ISPF

0

您獲得的錯誤,因爲您的程序似乎是APF授權的。你在TSO從授權環境中完成什麼?

如果授權是故意的,你只需要發出命令還是需要從命令中檢查返回代碼?

您可以將JCL提交給內部讀取器或返回問題狀態,發出命令並重新授權。

相關問題