私は部分的にC++コードに変換する必要があるsasコードを持っていますが、その機能を理解するのには苦労しています。私はsasの経験がなく、数時間の様々なチュートリアルや例の後、私はほとんど進歩を遂げていません。私は、入力データまたはそれに対応する出力のいずれにもアクセスできません。コードは次のフォーマットに従いますが、私は、変数名を変更した:コードは、その後に続くこのSASコードブロックは何をしますか?
data data1;
set data2;
output;
if type='ABCD' and zone=1 then do;
type='BCDE'; spec='CDE'; sub='ABCD DEF'; output;
type='EFGH'; spec='FGH'; output;
type='ABCD'; spec='DEF';
end;
、しかし、私はこれだけのロジックif文を理解する必要があります。実際のコードでは、これらのステートメントの多くがありますが、それらはすべて同じ構造に従います。変数値は、型と一意性の点でのみ重要です。変数がここで値を共有する場合、元のコードでも同様です。そうでない場合は、変数が異なります。
私はこのプログラムがtype/spec/zoneの組み合わせをとり、それらを他のタイプ/仕様の組み合わせに変換するように設計されていることを知っていますが、ロジックを理解できないようです。
IFステートメントはほぼすべての言語で同じです。これの唯一の違いは出力です。 OUTPUTにより、明示的なWRITEが発生します。このステップにはOUTPUTがあるので、データステップの境界を気にする必要はありません。ここで起こっているのは、レコードを複製し、各レコードごとに異なるタイプ/スペックを作成することです。そのため、IF条件を満たすレコードごとにレコードX 3にする必要があります。 – Reeza
@Reeza私が正しく理解ので、もし、入力データ内のすべてのレコードに対して、それはそれは「ABCD」とゾーン1を入力している、それがレコードをコピーして、「BCDE」、「CDE」との仕様、およびサブでその型に置き換えられます見つけます'ABCD DEF'を指定してレコードを出力データに書き込みます。次の行でこれを繰り返します.3行目はどうですか?それは出力されません、同じことが起こるか? – zach
私はあなたのコードのどこかに、あなたが示していない別のOUTPUTがあると思われます。 – Reeza