Cobol 如何处理作为CALL语句参数的文字?
我试图传递一个字符串文本作为Cobol 如何处理作为CALL语句参数的文字?,cobol,Cobol,我试图传递一个字符串文本作为CALL语句的参数 使用“somestringliterarg”调用“somesprogram” 我必须将参数定义为被调用子程序中的链接项: 链接部分。 77一些字符串参数picx(20)。 这是可行的,但当我传递一个小于20个字符的字符串时,运行时开始抱怨: 使用小于相应链接项的项(#1)通过 给定的字符串文字长度必须为20个字符。但我有理由将字符串文本作为参数传递: 我懒得为传递给程序的每个项目定义一个临时变量。对于我传递给程序的每个项目,在工作存储器中有1
CALL
语句的参数
使用“somestringliterarg”调用“somesprogram”
我必须将参数定义为被调用子程序中的链接项:
链接部分。
77一些字符串参数picx(20)。
这是可行的,但当我传递一个小于20个字符的字符串时,运行时开始抱怨:
使用小于相应链接项的项(#1)通过
给定的字符串文字长度必须为20个字符。但我有理由将字符串文本作为参数传递:
- 我懒得为传递给程序的每个项目定义一个临时变量。对于我传递给程序的每个项目,在工作存储器中有100个不同长度的“临时”变量,这会使程序变得不必要的混乱
将“ShortStrLit”移动到SOME-TEMP-VAR 使用SOME-TEMP-VAR调用“SOMEPROGRAM”
- 我也不想手动填充字符串文字以匹配所需的20个字符的长度:
使用“shortStrLit”调用“SOMEPROGRAM”
CALL
语句的参数?但是,更重要的是,基本问题是:如何将文本作为调用
语句的参数传递?例如,如果我传递9
,它是被解释为内容为“9”的字符串,还是编译时转换为整数
我正在Windows 10上运行MicroFocus ACUCOBOL-GT 9.2.4。这里有两个问题: 首先-我应该如何传递字母数字文字: 对于
使用“字母数字文字”调用一些cobol程序cobol 2002添加了以下内容:
LINKAGE SECTION.
01 SOME-STRING-ARGUMENT PIC X ANY LENGTH.
如果您的编译器不支持它,那么您必须填充文本或使用变量
第二个-是数字文字,解释为字母数字:
我见过的所有编译器都将其转换为整数-如何以及最重要的是什么类型取决于所使用的编译器…这里有两个问题:
首先-我应该如何传递字母数字文字:
对于使用“字母数字文字”调用一些cobol程序cobol 2002添加了以下内容:
LINKAGE SECTION.
01 SOME-STRING-ARGUMENT PIC X ANY LENGTH.
如果您的编译器不支持它,那么您必须填充文本或使用变量
第二个-是数字文字,解释为字母数字:
我见过的所有编译器都将其转换为整数-具体转换方式和最重要的类型取决于所使用的编译器…picx isCobol支持任何长度。
isCobol支持编译acucobol源代码
我不知道acucobol是否可以支持,但如果可以,您可以在linkage部分定义一个字符串(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.
Pic x任何长度都由isCobol支持。
isCobol支持编译acucobol源代码
我不知道acucobol是否可以支持,但如果可以,您可以在linkage部分定义一个字符串(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.
编译器和操作系统。消息的完整参考(如果有消息编号)。它是AcuCOBOL吗?如果你将成为唯一一个在这个项目上工作的人,那就尽情地懒惰吧。下次看节目时不要再问问题了。如果不是的话,如果将来有人要看这个节目,我建议不要看。每次有人看程序时,你的懒惰就是其他人在这条线上的额外时间。分散在过程部分的文字(除了自定义使用之外,如将1添加到记录计数中)是个坏主意。为什么不能在数据定义上使用VALUE子句呢。其实打字并不多,只要掌握你的编辑器就行了。请记住或注意,COBOL没有“字符串”。请看一下您正在使用的编译器的文档,在调用中使用的文字是“扩展”的一个方面。@BillWoodger“您的懒惰是其他人在每次查看程序时的额外时间。”我想懒惰不是唯一涉及的事。我宁愿在工作存储器中使用字符串文字,而不是100个临时变量。因此,关闭开关,使用z字面值,并在被调用的程序中对它们进行排序。我真的不知道这对你来说有多容易,但如果只有你,请在itCompiler和OS上。消息的完整参考(如果有消息编号)。它是AcuCOBOL吗?如果你将成为唯一一个在这个项目上工作的人,那就尽情地懒惰吧。下次看节目时不要再问问题了。如果不是的话,如果将来有人要看这个节目,我建议不要看。每次有人看程序时,你的懒惰就是其他人在这条线上的额外时间。分散在过程部分的文字(除了自定义使用之外,如将1添加到记录计数中)是个坏主意。为什么不能在数据定义上使用VALUE子句呢。其实打字并不多,只要掌握你的编辑器就行了。请记住或注意,COBOL没有“字符串”。请看一下您正在使用的编译器的文档,在调用中使用的文字是“扩展”的一个方面。@BillWoodger“您的懒惰是其他人在每次查看程序时的额外时间。”我想懒惰不是唯一涉及的事。我宁愿在工作存储器中使用字符串文字,而不是100个临时变量。因此,关闭开关,使用z字面值,并在被调用的程序中对它们进行排序。我真的不知道这对你来说有多容易,但如果它只会是你的话,那就让它任意长度
——我的编译器不支持它,但这仍然是我一直在寻找的。(我想我一定要使用一个变量。)任意长度
——我的编译器不支持它,但仍然支持