你如何在一个I-Descriptor中做多个交易?

时间:2012-04-10 21:30:12

标签: universe

目前我有一个IDescriptor,可以从第1,2,3期的另一个文件中获取销售额。我希望能够从期间1,2,3中提取成本并减去总计以获得利润。

当前的I-Descriptor声明是:

TRANS(SAS1,ITEM,4,'X');@1<1,1,1>+@1<1,1,2>+@1<1,1,3>
  • 4 =销售
  • 3 =费用
  • @ 1·; 1,1,1&GT; =期间1
  • @ 1·1,1,2-&GT; =期间2
  • @ 1·; 1,1,3&GT; =期间3
  • @ 1·; 1,1,4-&GT; =期间4

2 个答案:

答案 0 :(得分:1)

您正在寻找EXTRACT

因此,请尝试以下loc属性:

TRANS(SAS1,ITEM,4,'X');EXTRACT(@1,1,1,1)+EXTRACT(@1,1,1,2)+EXTRACT(@1,1,1,3)

问题的下一部分对我来说并不完全清楚,所以如果我做出了错误的假设,请告诉我。

成本来自当前文件(此词典文件所属的文件)来自属性(字段)3。它具有与销售数据相同的格式(&lt; 1,1,1到3&gt;)。在这种情况下,您需要使用@RECORD。

TRANS(SAS1,ITEM,4,'X');EXTRACT(@1,1,1,1)+EXTRACT(@1,1,1,2)+EXTRACT(@1,1,1,3);EXTRACT(@RECORD,1,1,1)+EXTRACT(@RECORD,1,1,2)+EXTRACT(@RECORD,1,1,3);@2-@3

所以,让我们分解一下:

  • 从文件SAS1中的记录ITEM读取属性4。如果项目不存在,则返回空字符串。将其保持在位置1(@ 1):

TRANS(SAS1,ITEM,4,'X');

  • 从位置1的值中提取多个子值1到3,然后将它们加在一起()。把它放在第2位:

EXTRACT(@1,1,1,1)+EXTRACT(@1,1,1,2)+EXTRACT(@1,1,1,3);

  • 从当前记录中提取多个子值1到3并将它们一起添加。把它放在第3位:

EXTRACT(@RECORD,1,1,1)+EXTRACT(@RECORD,1,1,2)+EXTRACT(@RECORD,1,1,3);

  • 最后,从位置2(总销售额)的值中减去位置3(总成本)中的值。由于这是最后一个位置,请返回结果:

@2-@3

答案 1 :(得分:0)

Dan的答案中唯一缺少的是你需要另一个TRANS来获得你的COST字段,因此TRANS(SAS1,ITEM,3,'X');

在对EXTRACTs的第一次操作之后。