如何处理作为 CALL 语句参数的文字?
How are literals as arguments for a CALL statement handled?
我正在尝试传递字符串文字作为 CALL
语句的参数。
CALL "SOMEPROGRAM" USING "SomeStringLiteralArg"
我必须将参数定义为被调用子程序中的链接项:
LINKAGE SECTION.
77 SOME-STRING-ARGUMENT PIC X(20).
这行得通,但是当我传递一个短于 20 个字符的字符串文字时,运行时开始报错:
Passed USING item (#1) smaller than corresponding LINKAGE item.
给定的字符串文字长度必须为 20 个字符。但是我有理由将字符串文字作为参数传递:
我懒得为我传递给程序的每个项目定义一个临时变量。 有 100 个 'temporary' 不同长度的变量在我传递给程序的每个项目的工作存储中,会使程序不必要地混乱。
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。
这里有两个问题:
首先 - 我应该如何传递字母数字文字:
对于 CALL some-cobol-prog USING "alphanumeric literal"
COBOL 2002 添加了以下内容:
LINKAGE SECTION.
01 SOME-STRING-ARGUMENT PIC X ANY LENGTH.
如果您的编译器不支持它,您必须填充文字或使用变量。
其次 - 是一个被解释为字母数字的数字文字:
我见过的所有编译器都将其转换为整数——如何以及最重要的是什么类型完全取决于所使用的编译器...
isCobol支持图片x任意长度。
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.
我正在尝试传递字符串文字作为 CALL
语句的参数。
CALL "SOMEPROGRAM" USING "SomeStringLiteralArg"
我必须将参数定义为被调用子程序中的链接项:
LINKAGE SECTION.
77 SOME-STRING-ARGUMENT PIC X(20).
这行得通,但是当我传递一个短于 20 个字符的字符串文字时,运行时开始报错:
Passed USING item (#1) smaller than corresponding LINKAGE item.
给定的字符串文字长度必须为 20 个字符。但是我有理由将字符串文字作为参数传递:
我懒得为我传递给程序的每个项目定义一个临时变量。有 100 个 'temporary' 不同长度的变量在我传递给程序的每个项目的工作存储中,会使程序不必要地混乱。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。
这里有两个问题:
首先 - 我应该如何传递字母数字文字:
对于 CALL some-cobol-prog USING "alphanumeric literal"
COBOL 2002 添加了以下内容:
LINKAGE SECTION.
01 SOME-STRING-ARGUMENT PIC X ANY LENGTH.
如果您的编译器不支持它,您必须填充文字或使用变量。
其次 - 是一个被解释为字母数字的数字文字:
我见过的所有编译器都将其转换为整数——如何以及最重要的是什么类型完全取决于所使用的编译器...
isCobol支持图片x任意长度。 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.