Eric's color bar icon

under construction icon

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


 第3.2節 format プロシジャと print プロシジャ

 proc ステップで扱えるプロシジャには、base sas、sas/stat などの sas のそれぞ れのソフトごとにいろいろなものが用意されている。例えば base sas には、append プロシジャから upload プロシジャまで合計31のプロシジャが、sas/stat には 6.03 バージョンで 31個、6.07バージョンでは aceclus から varcomp の合計 33 個のプロシジャが用意されている。

 この節では、base sas の中の基本的な2つのプロシジャである format 及び print プロシジャを説明する。

 format プロシジャは、文字データに対するインフォーマット、及び数値や文字デ ータに対するフォーマットを、ユーザが定義するためのプロシジャである。この プロシジャにより定義されたフォーマットやインフォーマットは、"ユーザ定義 フォーマット"及び "ユーザ定義インフォーマット"と呼ばれる。

 format プロシジャの一般形は次の通り:

 PROC FORMAT オプション;
    VALUE 名前 [(フォーマットオプション)] 範囲='ラベル'・・・;
    PICTURE 名前 [(フォーマットオプション)] 範囲='編集パターン' 
					     [(オプション)]・・・; 
    INVALUE 名前 [(インフォーマットオプション)] 範囲='値'・・・;
    SELECT エントリーリスト;
    EXCLUDE エントリーリスト;
  RUN;
   

ここで、1つのVALUE文、PICTURE文、invalue 文は、1つのフォーマットやインフ ォーマットを定義する。これらは、1回の foramt プロシジャで、いくつでも指定 できる。これに対して、select 文と exclude 文は1回の format プロシジャでは どちらか一方のみしか指定できない。

 次に、proc format のオプションには、次の4つがある:

  1. cntlin=sas データセット

     制御データセットの情報に基づいてフォーマットやインフォーマットを作成す る時に指定する。

  2. fmtlib

     フォーマットカタログに保存されたフォーマットやインフォーマットの内容を プリントしたい時に指定する。

  3. library=ライブラリ参照名

     フォーマットカタログのライブラリ参照名(ホストのディレクトリ・パス名)を 指定する。

  4. page

     フォーマット及びインフォーマットの内容を、各ページに1フォーマット又は1 インフォーマットづつプリントする。

通常よく用いるのは、上の4つのうち3.である。

 次の例は、データを外部ファイルから入力し、データの変数情報をDATA文及び format プロシジャを用いて定義し、print プロシジャにより output ウインドウに 出力するためのプログラムである:

00001 *------------------------------------------*
00002 |                              June 22, 1999
00003 | sas program--sasfile.exam4-
00004 |   example 4 of sasprograms for making a sas permanent file.
00005 | It is a set of miller lyer illusion data by a completely rando-
00006 | mized design with four levels (CR-4) for 34 samples. In this
00007 | case it is also an unbalanced design.
00008 |
00009 | file name: a:¥sasprog¥sasfile.ex4
00010 |
00011 *-------------------------------------------*;
00012 filename cr4emp 'b:¥p70001av';
00013 libname sasfile 'a:¥sasset';
00014 options pagesize=60;
00015 data sasfile.cr4mill;
00016  infile cr4emp;
00017  input noss 2. +1 level 1. +1 pse 2.;
00018  label noss='sample number'
00019      level='level of angle of inward arrow'
00020      pse='point of subjective eqality in cm';
00021 run;
00022 libname library 'a:¥sasset¥format';
00023 proc format library=library;
00024  value lvlfmt 1='15 degree' 2='22.5 degree' 3='30 degree'
00025         4='60 degree';
00026 run;
00027 proc print data=sasfile.cr4mill n;
00028  title 'miller lyer empirical data by CR-4 for 34 subjects';
00029 run;

 この例で23行目から26行目までが、format プロシジャの例である。 また、直前の22行目の libname 文では、23行目の format プロシジャのオプション の1つである、library=ライブラリ参照名におけるライブラリ参照名 library と 外部ファイルの(ディレクトリ)パス名との対応を定義している。

 SASファイルに、一時SASファイルと永久SASファイルが存在するのと同様に、 一時及び永久SASフォーマット/インフォーマットがある。 この例の場合のように、library=オプションを指定すると永久 sas フォーマット が作成されるのに対して、1回限りのフォーマットであれば当オプションを省略 すればよい。

 このように、この例ではデータを外部ファイルから入力し、変数名やその書式を 定義し、永久 sas ファイルを作成するだけでなく、format プロシジャにより、定 性変数のカテゴリー情報をも永久 sas フォーマットに作成していることがわかる。

 最後の print プロシジャは、sas の出力結果を output ウインドウに出力するための ものである。

 一般形は次の通り:

    proc print オプション;
      var 文; id 文; by 文; pageby 文; sum 文;
      sumby by 文;
    run;
   

 また、オプションには、次のものがある。

 data=sas/ds 名、double | d、label、n、noobs、round、split='スプリット文字'、 uniform

 これらの詳細については、「sas プロシジャリファレンスガイド Release 6.03 edition」の276-281頁を参照のこと。

 既述のSASプログラム例2では、27行目から29行目までが、print プロシジャの例 である。ここで title 文 は、print プロシジャには含まれないが、出力結果にタイ トルを付けるために使われている。

Eric's color bar icon