2016-07-20 19 views
0

私は次のようにコードが見えます....私は別のサーバーに接続していたときに私のパスワードを暗号化しautoexecというファイルがあります:SAS入力ステートメント

%global wspwd ewspwd hpwd ehpwd ; 

/* Enter WORKSTATION Password Below */ 
filename ewspwdfl "/home/&sysuserid./ewspwd.txt" ; 
proc pwencode in=’XXXXXXXX’ out=ewspwdfl ; run ; 
data _null_ ; 
    infile ewspwdfl obs=1 length=l ; 
    input @ ; 
    input @1 line1 $varying1024. l ; 
    call symput('ewspwd',cats(substr(line1,1,l))) ; 
    call symput('wspwd',cats(‘XXXXXXXX’)) ; 
run ; 

私の質問は:なぜある

input @ ; 

含まれており、その理由

input @1 line1 $varying1024. l ; 

は十分ではありません。

私は含める必要がありましたことはありませんSASとのデータセットを作成しているときはいつでも、「入力@;」を私の声明では

input @1 firstname $ @15 lastname $ @30 date mmddyy6.; 
+0

は、なぜあなたはそれが必要とされると思いますか?それを削除しようとしましたが、それは動作しないようにしましたか?どのように動作しませんでしたか? – Tom

+0

私はこれは私がそれを必要としなかった考えていたが、私は、私は何も変わっていないので、このautoexecというファイルに依存している不測のすべてのわからないんだけど...設定していました。私が話した人は、それが目的であるかどうかわからない... – DukeLuke

+0

INFILEのオプションのいくつかが設定されている必要があります。 FILENAME = optionやEOV = optionなどです。しかし、あなたがLENGTH =オプションのためにそれを必要としているとは思っていません。 – Tom

答えて

2

このデータステップでは、必要はありません。あなたはそれを簡単にすることができます。 input @を使用して

data _null_ ; 
    infile ewspwdfl obs=1 TRUNCOVER ; 
    input line1 $CHAR1024. ; 
    call symputX('ewspwd',line1); 
    call symputX('wspwd',‘XXXXXXXX’) ; 
run ; 

を使用すると、異なる入力文を使用して別のラインを読みたいプログラムを作成するための良い方法です。 _infile_変数の内容をテストし、読み取られた内容に基づいてデータステップのさまざまな部分を実行できます。

新しいファイルを読み始めるまで、それが設定されていないので、あなたは、新しいファイルから読み込みを始めているときを検出するためにINFILEステートメントにEOV =オプションを使用するときにも便利です。したがって、INPUT @は、EOV変数が設定されるようにSASに読み込みを開始させますが、実際のINPUT文が後で読み込まれるのを待っています。あなたが別の変数に何度も何度も同じ列を読みたい場合は

@1に便利です。たとえば、最初の数文字を文字列として読み取ってからテストし、数字または日付として再読み込みされたものに基づいてテストすることができます。

+0

「入力@を使用するには、あなたが別の入力文を使用して別のラインを読みたいプログラムを作成するための良い方法です。」あなたは、フォーマット、コラムを参照しています、リストと名前の入力? – DukeLuke

+0

この最近の質問で読んでほしいレポートのように、複雑な迷惑メールを読み取るコードを書くことができれば便利です。 https://stackoverflow.com/questions/38503002/import-unsorted-data-from-a-notepad-file-txt-into-sas – Tom

関連する問題