2016-06-19 68 views
0

在JCL中與DD名稱一起指定的物理DSN名稱是在ZOS中處理文件的常用方法。在JCL中指定環境變量

但我們也可以在FILE CONTROL中指定一個變量DD名稱,並使用SETENV在程序中設置DSN。 例如How to set environment variables and dynamic file declaration

有什麼辦法可以使用JCL設置環境變量並使用GETENV訪問程序中的外部變量(類似於Linux中的EXPORT或者Windows中的SET)?

+0

如果你問我認爲你在問什麼,那麼不會。如果你不問我認爲你在問什麼,那麼請澄清這個問題。請記住,你知道你的意思,我們只知道你能否描述準確。我認爲你問的是「我可以使用SETENV(或其他)更改JCL符號。如果**是你的問題,答案是否定的。整個JCL流是」轉換/解釋「(CI)作爲準備處理的一部分,而不是處理的一部分,當你的JOB開始的時候,JCL不再存在了,所以你不能改變它的任何東西 –

+0

這是一個錯字,我的意思是GETENV在程序中的使用, – cobp

+2

啊,所以你的問題是,我可以使用GETENV來獲得JCL符號的解析值到我的程序中,而不是已經討論過的PARM?我們可以得到一些更詳細的問題,包括使用GETENV會給你一個特殊的方法嗎? –

回答

1

您可以使用_CEE_ENVFILE環境變量爲設置環境變量指定DD或數據集名稱。我假設使用C LE運行時功能的GETENV和使用SETENV一樣簡單。

PARM=('ENVAR("_CEE_ENVFILE=DD:STDENV")/') 
+0

但我懷疑如果GETENV在COBOL程序中正常工作,它是否需要C封裝器,因爲它返回一個字符指針? – cobp

+0

查看CEEENV,它是從COBOL獲取/設置環境變量的更好的界面https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ceea300/clcenv.htm。 –

+0

Zos版本在我們的網站是老得多,因此CEEENV不可用。但是GETENV的C封裝器(帶有2個參數)可以正常工作。 – cobp