2012-10-04 292 views
4

我在一些Clarion代码中找到了符号:=:,我似乎无法弄清楚它究竟是干什么的。该代码是多年前由以前的开发人员编写的,所以我不能问他。我还无法在Google中找到"colon equals colon"的任何结果。符号是什么:=:mean(冒号等于冒号)

这里是代码,其中bufSlcdpaDtl是一个文件对象的示例:

lCCRecord Like(bufSlcdpaDtl),Pre(lCCRecord) 

! ...other stuff... 

lCCRecord :=: bufSlcdpaDtl 

我想知道如果它类似于::= in Python或可能the assignment operator :=东西。

+2

您可以尝试使用http:// symbolhound。 com /特殊字符搜索 – andlrc

+0

+1为一个伟大的搜索引擎。书签。但是,我仍然无法找到它的名字。我发现了一些对Haskell的引用,例如[这里](http://stackoverflow.com/questions/4521996/how-can-i-specify-that-two-operations-commute-in-a-typeclass),但是没有人通过名字呼叫运营商... – DanM7

回答

5

language reference manual(第561页)这称为深度赋值运算符。语法是destination:=:source。目标可以是GROUP,RECORD,QUEUE ds或数组的标签。源可以是相同的加数字,字符串常量,变量,过程或表达式。它将从一个ds执行多个单独的组件变量赋值。更多信息可以在文档以及号角的视家中找到:http://www.softvelocity.com/

什么样的深赋值运算符做一个很好的例子:

Group1 GROUP 
    S SHORT 
    L LONG 
END 

Group2 GROUP 
    L SHORT 
    S REAL 
    T LONG 
END 

ArrayField SHORT,DIM(1000) 

CODE 

Group2 :=: Group1 ! Is equivalent to: 
        !  Group2.S = Group1.S 
        !  Group2.L = Group1.L 
        ! and performs all necessary data conversion 

ArrayField :=: 7 ! Is equivalent to: 
        !  LOOP I# = 1 to 1000 
        !   ArrayField[I#] = 7 
        !  END 
+0

非常好!我现在将用一些示例代码更新我的问题。谢谢。 – DanM7