COBOL ACCEPT FROM ENVIRONMENT返回“无效参数错误”

时间:2014-12-18 08:19:43

标签: environment-variables cobol

我正在尝试使用"接受环境"从环境变量中检索值的语句,但它不起作用。 (我在Linux上使用Micro Focus COBOL)

我的COBOL程序非常简单:

   IDENTIFICATION DIVISION.
   PROGRAM-ID.     HELLO.

   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
   SOURCE-COMPUTER. RM-COBOL.
   OBJECT-COMPUTER. RM-COBOL.

   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01  ENV-VALUE    PIC X(1024).

   PROCEDURE DIVISION.

   ACCEPT ENV-VALUE FROM ENVIRONMENT "ENVVAR".

   DISPLAY ENV-VALUE.

执行程序:

]$ export ENVVAR="test value"
]$ cobrun HELLO

执行错误:

file '/path_to_here/HELLO.gnt'
error code: 181, pc=0, call=1, seg=0
181     Invalid parameter error 

如果我更换"接受环境"格式如下:

   IDENTIFICATION DIVISION.
   PROGRAM-ID.     HELLO.

   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
   SOURCE-COMPUTER. RM-COBOL.
   OBJECT-COMPUTER. RM-COBOL.

   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01  ENV-NAME    PIC X(1024).
   01  ENV-VALUE   PIC X(1024).

   PROCEDURE DIVISION.

   DISPLAY "ENVVAR" UPON ENVIRONMENT-NAME.
   ACCEPT ENV-VALUE FROM ENVIRONMENT-VALUE.

   DISPLAY ENV-VALUE.

它运行正常,我可以在ENV-VALUE中获取环境变量值。

1 个答案:

答案 0 :(得分:2)

在黑暗中拍摄。

Micro Focus拥有多个COBOL产品。其中有几个特别来自他们接管的公司,RM-COBOL和AcuCOBOL。

SOURCE-COMPUTER段落上,您指定了RM-COBOL。您尝试使用的ACCEPT语句的格式记录为ACECOBOL的ACCEPT格式5。

您收到的错误消息是“文件”。我认为你有RM-COBOL,并且在尝试使用AcuCOBOL语法时,单词ENVIRONMENT被视为文件,因此消息和失败。

您需要使用RM-COBOL手册,这是一个最新的手册。如果您还没有,可以从Micro Focus获得一份副本(他们想知道您的许可证号码)。

ACCEPTDISPLAY是COBOL动词,它们最有可能从一个编译器实现者到另一个编译器实现者之间存在差异,因为它们从标准语言“弯曲”以提供基于屏幕的用户交互。 必须使用编译器的语法,ACCEPT和DISPLAY的许多变体不一定能从一个编译器移植到另一个编译器。

要确认确切问题,您可以通过他们的网站联系Micro Focus支持。如果这个答案毫无用处,你也可以这样做: - )