列幅が固定されている生データを扱っていますが、そのすべてのレコードが 1 行に書き込まれています (私ではなくデータ ベンダーのせいです :-) )。INPUT
ステートメントで固定列幅を使用する方法と、1 行に複数の観察結果を読み取る方法を知って@@
いますが、両方を実行しようとすると問題が発生します。
例として、データの列幅が固定されているが、レコードごとに 1 つの行があるコードを次に示します。このコードは正常に動作します:
DATA test_1;
INPUT alpha $ 1-5 beta $ 6-10 gamma 11-15 ;
DATALINES;
a f 1
ab fg 12
abc fgh 123
abcd fghi 1234
abcdefghij12345
;
RUN;
ここで、私が実際にやろうとしていることのコードを示します。すべてのデータは 1 行にあり、次の@@
表記法を使用しようとしています。
DATA test_2;
INPUT alpha $ 1-5 beta $ 6-10 gamma 11-15 @@;
DATALINES;
a f 1 ab fg 12 abc fgh 123 abcd fghi 1234 abcdefghij12345
;
RUN;
これは、最初の 15 文字を読み取り、そのレコードを保持し、最初から再読み取りするだけであるため、失敗します。表記法のセマンティクスに関する私の理解に基づいて、@@
なぜこれが起こるのかを明確に理解できます。
固定列データを 1 行から読み取る方法はありますか。つまり、?test_2
と同じ内容を持たせます。test_1
おそらく、ステートメント内のシンボルの組み合わせによってINPUT
、または別の方法 (ファイル I/O 関数PROC IMPORT
など) に頼っているのでしょうか?