我是一个有进步-4gl(OpenEdge)的新手,我遇到了一些代码,这些代码在我的生活中无法完全理解它的作用。下面是我试图剖析的代码示例以及我在情况中找到的所有材料。
我意识到我的回答是在材料中然而我不能真正理解它以及我想要的。希望有比我更多知识的人可以帮助我。感谢任何花在这上面的人:
Function functionName RETURNS CHAR ( integerName AS INT ) {1}:
此函数存储在包含文件中,并通过以下方式由不同的过程调用:
charName = GetCommSecType ( intName )
我不完全理解的是{1}存在的原因以及它到底在做什么。如果我不放{1}一切似乎都一样。我在帮助文件中查看了以下信息:
{}参数参考:
引用过程传递给被调用的外部过程文件或包含文件的参数的值。 ABL将每个参数转换为字符格式。如果参数在RUN语句中指定为字符串常量或包含文件引用,则此转换将删除周围的双引号。 当从另一个过程调用一个过程并使用参数时,ABL重新编译被调用过程,替换调用过程传递的参数,然后运行被调用过程。
我认为这样做的目的是允许在命令行RUN命令上运行包含文件功能。如果我错了,请纠正我。感谢
答案 0 :(得分:0)
{}是一种称为预处理器的东西,意味着它只会在编译期间而不是运行时影响程序的结果。
通常你会包含一个.i文件,而不是运行它,但这种语法可以用于运行和包含文件。
在这种情况下,它意味着编译器将插入写入{1}的内容。 {1}表示插入的第一个参数。您也可以为参数命名(请参阅下面的链接)。
简单包含这样的文件:
{filename.i}
在这种情况下,猜测插入的内容并不是很容易,但基本上如果你做了这样的包含:
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
c = "ABC".
{c:\temp\includetest.i c}
编译器将插入ABC,其中{1}写入您的包含文件。当然,在这个例子中没有任何意义。而且我现在还没有任何可以在参数和冒号之间写出的东西。
假设您的filname.i文件只包含。
DISPLAY {1}.
执行上面的include会使编译器用“ABC”替换{1},从而使语句看起来像这样:
DISPLAY c.
运行它会显示c的值 - “ABC”。
您必须提供正在运行的代码或包含您的文件,以便更好地理解这一点!
第{22>页及this document中的转发更深入地描述了这一点。