关联,@ NS和@NV如何在UniData Dictionaries中工作?

时间:2010-02-26 03:13:08

标签: dictionary unidata u2 uniquery

有没有人能快速了解关联,@NS@NV如何在UniData中运作?

我正在尝试解决字典项中的关联,但无法让他们做任何事情。

例如,在记录中

<1,1> = A
<1,2> = B
<2,1> = Apple
<2,2> = Banana

我创建了3个字典项目。 LETTER和FRUIT,COMBO如下

LETTER:

<1> = D
<2> = 1
<3> = 
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO

果:

<1> = D
<2> = 1
<3> = 
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO

COMBO:

<1> = PH
<2> = LETTER FRUIT

执行LIST LETTER FRUITLIST COMBO与LETTER和FRUIT在6中没有声明关联时没有区别。

此时我认为它可能会在SELECTing时将多值组合在一起,所以我创建了另一条记录:

<1,1> = A
<1,2> = B
<2,1> = Banana
<2,2> = Apple

执行SELECT MyFile WITH LETTER = “A” and FRUIT = “Apple”选择两个记录,因此也不能。

然后我尝试将LETTER改为:

<1> = I
<2> = EXTRACT(@RECORD,1,@NV,1);EXTRACT(FRUIT,1,@NV,1);@1:" (":@2:")" : @NS
<3> = 
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO

希望LIST MyFile LETTER将所有不同的字母及其相关的水果带回括号中。这不起作用,因为现在LETTER只展示了第一个Multivalue而不是全部。对于Eg:

LIST MyFile LETTER 14:05:22 26 FEB 2010 1
MyFile.... LETTER..............

RECORD2    A (Banana)1
RECORD     A (Apple)1
2 records listed

手册不比说“关联”这个词更进一步。有人能够为我澄清这个吗?

2 个答案:

答案 0 :(得分:1)

很多时候,只有在LIST或SELECT语句中使用BY-EXP时,NV和NS才有效。您需要使用专门查看MultiValue和SubValues的修饰符。

WHEN是一个,BY-EXP是另一个。还有其他的,但不确定它们是什么。我主要使用BY-EXP和BY-EXP-DSND。

LIST MyFile BY-EXP LETTER = "A" BY-EXP FRUIT ="Apple" LETTER FRUIT LETTER.COMBO

要恢复所有组合,您需要执行以下操作:

LIST MyFile BY-EXP LETTER LETTER FRUIT LETTER.COMBO

将以下虚拟字段从“LETTER”更改为“LETTER.COMBO”或其他内容:

<1> = I    
<2> = EXTRACT(@RECORD,1,@NV,1);EXTRACT(FRUIT,1,@NV,1);@1:" (":@2:")" : @NS    
<3> =     
<3> = Letter    
<4> = 6L    
<5> = M    
<6> = COMBO  

希望有所帮助。

-Nathan

答案 1 :(得分:0)

回答我自己的部分问题:

只有'WHEN'受到关联的影响,而不是。如果你打开UDT.OPTIONS 94并执行

LIST MyFile WHEN LETTER = "A" AND FRUIT="Apple" COMBO

当使用我的D-Type LETTER定义时,我得到了

LIST MyFile WHEN  LETTER = "A" AND FRUIT="Apple" LETTER FRUIT 16:06:42 26 FEB 2010 1
MyFile.... LETTER.............. FRUIT...............

RECORD     A                    Apple
1 record listed

这是人们所期望的。

要使用WHEN子句,您需要使用ECLTYPE U,而不是P.如果这更清楚,那将会有所帮助,但是哦......好吧......