2012-02-07 57 views
0

ここでは少し気絶しました。SAS変数の空白を埋める必要があります

私はさまざまな長さの値を持つSAS変数を持っています。

変数に必要なメモリがしきい値(48バイト)を下回っている場合は、そのメモリ割り当てに達するように変数に空白を追加します。

SASでこれを行うにはどうすればよいですか?

さらに重要なことに、SASの単一の空白(または他の文字/タイプ)によって占められるメモリに関するドキュメントはどこにありますか?

編集: stevepastelanの答えは実際に私はあなたがそれをしたいと思うここでどのような状況を考えるカント:)

+0

あなたはいくつかのサンプルデータおよび/またはコードを表示することができますか? SASの変数の長さは常に固定されているため、文字データの種類が変わっていると言われ、すでに空白が埋め込まれていると考えられます。 – itzy

+0

"format _variable_name_ $ 20 .;"のように、変数を所定の長さにフォーマットしようとしましたか? ?また、どのオペレーティングシステムでこれを必要としていますか? – RWill

答えて

2

文字変数のようなしかし、特定のステートメント、その長さを埋めるために右に自動的に埋め込まれますPUT文は、表示時にトリムすることがあります。

あなたは出力を強制的にフォーマットを使用することができ、例:

data test; 
    length x $ 8;  

    x = "XX"; 
    put "1) " x  "END"; /* Omitting the format will trim the printed variable value */  
    put "2) " x $8. "END"; /* Now it's shown as right-padded */ 


    x = "123456789";  /* The extra character is truncated from the variable */ 
    put "3) " x $8. "END";    
    put "4) " x $9. "END"; /* increasing format width will add extra right padding */ 
    put "5) " x $6. "END"; /* A shorter format will truncate the display */ 
run; 

は、SASログに次のように書き込みます:

1) XX END 
2) XX  END 
3) 12345678END 
4) 12345678 END 
5) 123456END 
+0

また、空白文字は他の文字と全く同じで、正確に1バイトを占めます。ストレージに関しては、スペースについては特別なことは何もありません。 – stevepastelan

+1

良い説明... ex 1のようないくつかの例が、変数とテキスト( "END")の間にスペースを作成するのはなぜですか?ex 3はそのスペースを排除しますか? –

+0

putステートメントの異なる形式。 "リスト出力は、変数値と文字列を書き込むときに異なるスペーシング方法を使用します。リスト出力で変数を書き込むと、SASは自動的に空白を挿入します。文字列が書き込まれると、SASは自動的に空白を挿入しません。出力ポインタは、文字列の最後の文字の直後の列で停止します。 http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/a000176623htm#a000177686 – stevepastelan

0

完璧でした。なぜ私たちを啓発するのかを詳しく説明できますか?一方で、これはあなたが必要とするものを提供すべきである:私はそれを読み違えてきていない限り

http://support.sas.com/resources/papers/proceedings09/010-2009.pdf

はItzyは正しいです。これらは固定長変数であるため、メモリに格納されると20バイトの長さが20バイトを占めます。

あなたがパッドに使用すると、リピート機能を使用することができる値が必要な場合:SASで

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245939.htm

+1

クライアントからはいくつかの要件があります。私は詳細については非常にあいまいですが、各変数のメモリサイズに基づいて標準的な暗号化/復号化を行っており、これに基づいて別のシステムにさらにフィードしていると思います。 – sataract

+0

ありがとうございます... –

関連する問題