2016-03-20 42 views
1

私はこのコードをどのように読んでいるのか理解しようとしています。@@は入力文でどのように機能しますか?

  data scores; 
    input Grade : $1. @@; 
    check='abcdf'; 
    if verify(grade,check)>0 then 
    put @1 'INVALID ' grade=; 
    datalines; 
a b c b c d f a a q a b d d b z 
    ; 
    run; 

ログには、次のような結果得られます。

INVALID Grade=q 
    INVALID Grade=z 

誰でもSASは、データを読み取るず、@@のために何を立つんどのように教えてもらえますが、フィールドの各観測です - グレードはそれぞれに読みますか? "等級="?

+0

あなたは何をしようとしましたか?あなたはその文書を読んだことがありますか? http://support.sas.com/documentation/cdl/en/lestmtsref/68024/HTML/default/viewer.htm#n0oaql83drile0n141pdacojq97s.htm – Tom

答えて

0
data scores; 
    input Grade : $1.; 

は、各行の最初の文字のみを読み取ります。これは、inputステートメントを実行するたびに、現在の行に多くの文字が残っていても、ファイルからの新しい行が入力バッファーに読み込まれるためです。

Grade : $1. @@;では、現在の行のすべてのデータが処理されない限り、SASに別の行を読み込まないように指示します。

関連する問題