我正在尝试将字符串文字作为CALL
语句的参数传递。
CALL "SOMEPROGRAM" USING "SomeStringLiteralArg"
我必须将参数定义为被调用子程序中的链接项:
LINKAGE SECTION.
77 SOME-STRING-ARGUMENT PIC X(20).
这样可行,但是当我传递一个短于20个字符的字符串文字时,运行时开始抱怨:
通过USING项目(#1)小于相应的LINKAGE项目。
给定的字符串文字长度必须为20个字符。但我有理由将字符串文字作为参数传递:
我懒得为每个传递给程序的项目定义一个临时变量。在我通过的每个项目的工作存储中有100个不同长度的'临时'变量一个程序,会使程序不必要地混乱。
MOVE "ShortStrLit" TO SOME-TEMP-VAR
CALL "SOMEPROGRAM" USING SOME-TEMP-VAR
我也不想手动填充字符串文字以匹配所需的20个字符的长度:
CALL "SOMEPROGRAM" USING "shortStrLit "
我的一个问题是,或者当然:我如何将文字作为CALL
语句的参数传递?但是,更重要的是,基本问题是:如何处理文字作为CALL
语句处理的参数?例如,如果我传递9
,它是否被解释为内容为“9”的字符串,还是编译时转换为整数?
我正在Windows 10上运行MicroFocus ACUCOBOL-GT 9.2.4。
答案 0 :(得分:5)
这里有两个问题:
首先 - 我应该如何传递字母数字文字:
对于Packet
COBOL 2002添加了以下内容:
CALL some-cobol-prog USING "alphanumeric literal"
如果您的编译器不支持它,您必须填充文字或使用变量。
第二 - 数字文字被解释为字母数字:
我见过的所有编译器都将它转换为整数 - 如何且最重要的是什么类型完全取决于所使用的编译器......
答案 1 :(得分:0)
Pic x isCobol支持任何长度。 isCobol支持acucobol来源的汇编。
我不知道acucobol是否可以支持,但如果是这样,你可以在链接部分定义一个字符串(java.lang.string)。 isCobol也支持这一点。
working-storage section.
77 SOME-STRING-ARGUMENT PIC X(20).
linkage section.
77 this-string object reference j-string.
procedure dividion using this-string.
main.
set some-string-argument to this-string.