前のページ|次のページ

INPUTステートメント、カラム

指定した列から入力値を読み込み、読み込んだ値を対応するSAS変数に割り当てます。

該当要素: DATAステップ
カテゴリ: ファイル操作
種類: 実行

構文

引数

variable

読み込む値を割り当てる変数を1つ指定します。

$

変数の値が数値ではなく文字列であることを指定します。

ヒント この変数が文字変数と事前に定義されている場合、$を指定する必要はありません。

start-column

読み込む値が含まれる入力レコードの開始列を指定します。

–end-column

読み込む値が含まれる入力レコードの最終列を指定します。

ヒント 変数の値が1列だけの場合、end-columnの指定を省略することができます。
end-columnが省略されているので、文字変数GENDERの値は列16にのみ存在します。
input name $ 1-10 pulse 11-13 waist 14-15 gender $ 16;

.decimals

入力値に小数点が明示的に含まれていない場合、小数点以下の桁数を指定します。

ヒント 入力値に小数点が明示的に含まれている場合、INPUTステートメントで指定した小数点以下の桁数より優先されます。
小数点以下の桁数を指定した入力データの読み込み

@

次のINPUTステートメントの実行時に使用できるように入力行を保持します。DATAステップの同一の反復内で保持されます。このラインホールド指定子は、後置@と呼ばれます。

制限事項 後置@は、INPUTステートメントの最後の項目として指定する必要があります。
ヒント 後置@を指定すると、次のINPUTステートメントによって、現在の入力レコードの開放や入力バッファへの次のレコードの読み込みが自動的に実行されなくなります。後置@は、同じレコードを何度も読み込む必要がある場合に便利です。
参照項目 ポインタコントロール

@@

次のINPUTステートメントの実行時に使用できるように入力行を保持します。DATAステップの反復間を通して保持されます。このラインホールド指定子は、後置@@と呼ばれます。

制限事項 後置@@は、INPUTステートメントの最後の項目として指定する必要があります。
ヒント 後置@@は、入力行に複数のオブザベーションの値が含まれる場合に便利です。
参照項目 ラインホールド指定子の使用

詳細

カラム入力の使用が求められる場合

カラム入力を使用する場合、INPUTステートメントで、値の位置を示す列番号を変数名の後ろに指定します。カラム入力でデータを読み込む場合、データ値は次の条件を満たす必要があります。
  • 読み込むデータがすべての入力データレコードで同じ列位置に存在する
  • データが標準数値形式または標準文字形式である (脚注 1)
カラム入力の便利な機能を次に示します。
  • 文字値の中に埋め込みブランクを含めることができます。
  • 文字値の長さは、1 - 32,767文字です。
  • 入力値がレコードのどの位置にあっても、任意の順序で読み込むことができます。
  • 値または値の一部を繰り返し読み込むことができます。たとえば、次のINPUTステートメントでは、IDの値として列10から15までを読み込んだ後、GROUPの値として列13を読み込みます。
    input id 10-15 group 13;
  • フィールド内の前置ブランクと後置ブランクは無視されます。そのため、数値に0を示すブランクが含まれていたり、文字値の先頭と末尾にあるブランクを保持する場合は、入力形式を使用して値を読み込みます。 INPUTステートメント、フォーマットを参照してください。

欠損値

欠損データにプレースホルダは必要ありません。INPUTステートメントでは、ブランクのフィールドを欠損値として読み込みます。また、それ以外の値は正確に読み込みます。数値または文字列のフィールドにピリオドが1つだけ含まれている場合、この変数の値は欠損値に設定されます。

データ行の読み込み

DATALINESステートメントの後ろに指定したデータレコード(インストリームデータ)には、80の倍数を示す固定長になるようにブランクが追加されます。80番目以降の列のデータを読み込むか切り捨てるかは、CARDIMAGEシステムオプションの設定によって異なります。

可変長レコードの読み込み

デフォルトでは、可変長データレコードの読み込みには、FLOWOVERオプションを使用します。レコードに含まれる値の数が必要な数よりも少ない場合、INPUTステートメントは次のデータレコードから値を読み込みます。可変長データを読み込むには、INFILEステートメントにTRUNCOVERオプションを指定することをお勧めします。TRUNCOVERオプションは、レコードにブランクを追加して固定長レコードに変更するPADオプションよりも便利です。詳細については、行の終わりを超えて読み込むを参照してください。

例1: カラム入力での入力レコードの読み込み

次のDATAステップは、カラム入力で入力データレコードを読み込む方法を示しています。
data scores;
   input name $ 1-18 score1 25-27 score2 30-32
      score3 35-37;
   datalines;
Joseph                  11   32   76
Mitchel                 13   29   82
Sue Ellen               14   27   74
;

例2: 小数点以下の桁数を指定した入力データの読み込み

次のINPUTステートメントでは、小数点以下2桁と指定して数値変数の入力データを読み込みます。
入力データ
ステートメント
結果
----+---1
2314 
input number 1-5 .2;
23.14
2
.02
400
4.00
-140
-1.40
12.234
12.2341
12.2
12.21
1INPUTステートメントに指定した小数点以下の桁数は、入力値に小数点が含まれている場合は無効になります。

関連項目:

ステートメント:
脚注 1:標準のデータ値や非標準のデータ値の情報については、 SAS言語リファレンス: 解説編を参照してください。[戻る]
前のページ|次のページ|ページの先頭へ