2016-06-19 64 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