Eric's color bar icon

under construction icon

このページは、平成11年6月8日に開設した。
このページは、令和2年5月8日に一部更新した。


 第2.3節 input 文の概要

 前節から明らかなように、data 文で sas/ds を作成するに際して、input 文は重要 な役割を果す。そこで、この節では、input 文の概要について述べる。input 文は、 さまざまな入力ファイルの形式に柔軟に対応できるように、カラム入力、リスト入力、 フォーマット入力、ネーム入力という4つの形式を用意している。

  1. カラム入力

    この方法では、変数とデータが存在するカラム位置を指定し、データを入力する。 カラム入力の場合の input 文の一般形は、次の通り:

    input 変数名 [$] 開始カラム [-終了カラム] [.少数桁数] ...;

    ここで、$ は変数が文字変数の時のみに指定する。終了カラムは、変数の値が 1桁の時は省略できる。カラム入力は、すべてのデータがどの変数についても 同じカラムに打たれている場合に指定できる。

     カラム入力には、(1)データ値の位置に関係なく任意の順で読み込める、 (2) いくつかの変数で読み込むカラム位置が重複していてもよい、(3) 文字変数で はデータ値の中にブランクが入っていてもよい、1~200 字までの任意の長さ のデータを読める、などの特徴がある。

     カラム入力では、指定されたフィールド全体がブランクの時、あるいは1つのピ リオドだけが含まれる時、欠測値として読み込まれる。

     カラム入力は、ANALYSTでは自由書式と呼ばれる入力形式に近い。次の1行を前 節の sas プログラム perm_ex1.sas の11行目の input 文と置き換えるとカ ラム入力になる。

    input noss 1-2 gradth 4-5 achiev1 7-8 achiev2 10-11 achiev3 13-14;

  2. リスト入力

     この方法では、ブランクで区切られたデータ値を、先頭から順に変数の値と して入力する。リスト入力の場合の input 文の一般形は次の通り:

    input 変数名 [$] ...;

     リスト入力は、(1)データ値の間が1つ以上のブランクで区切られている場合、 (2) 欠測値を表すために、ブランクではなくピリオドが使われている場合、 (3) 文字変数の値が最大8文字の場合に指定できる。

     リスト入力は、単に変数を指定するだけなので最も簡単な入力方法である。 ただし、次のような制約がある。すなわち、(1) データ値は、行の先頭から順 に入力しなければならず、入力順序を変えたり、途中のデータを読み飛ばした りはできない、(2) 欠測値は必ずピリオドで指定しなければならない、(3) あ らかじめ長さを指定していない文字変数では8文字までしか読み込めない、 (4) ブランクがデータ値間の区切り文字として使われるので、途中にブランク を含む文字値は読み込めない。これを行うには特別な処理が必要である (& フォーマット・モディファイア)。

     前節の例の場合では、11行目の input 文を次のように直せば、リスト入力となる

    input noss gradth achiev1-achiev3;

  3. フォーマット入力

     sas では、データ入力のフォーマットをインフォーマット、出力のフォーマット をフォーマットと呼び区別している。フォーマット入力は、データ入力をインフ ォーマットで指定することにより実行される。フォーマット入力の一般形は次の通り:

    input 変数名 インフォーマット ...;
     または、
    input 変数名 インフォーマットリスト ...;

    ここで、入力データ中の小数点は、インフォーマットの小数部桁数指定よりも優 先される。よく使われる sas インフォーマットは、次の表1の通り:

    表1. よく使われる sas インフォーマット
    インフォーマット 意味 長さの範囲 少数部の範囲 標準の長さ
    w. 標準数値(整数) 1-32
    w.d 標準数値(実数) 1-32 0-31
    Ew.d 指数表記の数値 7-32 0-31 12
    HEXw. 16進整数 1-16 8
    COMMAw.d コンマ付きの数値 1-32 0-31
    $w. 標準文字 1-200 1または変数の長さ
    $CHARw. 前ブランク付き 1-200 1または変数の長さ
    $EBCDICw. EBCDIC → ASCII に変換 1-200

     前節例1のプログラムでは、11行目の input 文で、まず noss を2桁の標準数値で、 次に gradth を同じく3桁の標準数値で、さらに achiev1 から achiev3 をすべて3桁の 標準数値で入力することを指示している。achiev1 から achiev3 は、変数名リス トの形でこのように省略でき、さらにこの場合3つの変数の書式がすべて同一な ので、(3. 3. 3.)とするのを(3.)と省略できることを示している。

  4. ネーム入力

     この方法では、データ行に変数名、等号、値という記述をした場合のデータ を入力する。一般形は次の通り:

    input 変数名 = [$] [インフォーマット] ...;

     この方法は、データが多い時厄介になるので勧められない。詳細は、「sas ラ ンゲージ・リファレンスガイド Release6.03 Edition」の 153-154 頁を参照の こと。

      input 文には、これら4種の読み込み形式の他に、インフォーマットの働き を修正する「フォーマットモディファイア」と、データ値の読み込み開始位置を 制御する「ポインタコントロール」を用意しており、これらを用いるとより柔 軟なデータ入力が可能になる。これらの詳細は、「sas ランゲージ・リファレ ンスガイド Release 6.03 Edition 」の154-163頁を参照のこと。

     ここでは、それらのリスト及び必要最小限のもののみについて述べること にする。まず、これらのリストは次の通り:

    これらの中で、最小限必要なものは、カラムポインタコントロールの中の '+n', 及び行ポインタコントロールの中の '/' である。前者は、読み込み位置を現在の 位置から右方向に n カラム移動させるものである。一方、後者は、読み込み行 を1行先(次行)に移動させるためのものである。

Eric's color bar icon