あなたは探しているEXTRACT
したがって、次のloc属性を試してください。
TRANS(SAS1,ITEM,4,'X');EXTRACT(@1,1,1,1)+EXTRACT(@1,1,1,2)+EXTRACT(@1,1,1,3)
質問の次のビットは私には完全に明確ではないので、私が間違った仮定をしたかどうか私に知らせてください。
コストは、属性(フィールド)3の現在のファイル(このディクショナリファイルのファイル)から取得されます。これは、Salesのデータ(<1,1,1から3>)と同じ形式です。この場合、@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