前のページ|次のページ

ATTRIBステートメント

1つまたは複数の変数に出力形式、入力形式、ラベル、長さを設定します。

該当要素: DATAステップ
カテゴリ: 情報
種類: 宣言
参照項目: ATTRIBステートメントXisError: No pubcode in link data found for hostwinXisError: No pubcode in link data found for hostunx、およびXisError: No pubcode in link data found for hosto390

構文

引数

variable-list(s)

属性を設定する変数を指定します。

ヒント SASで使用可能な任意の形式で変数をリストします。

attribute-list(s)

variable-listに割り当てる1つまたは複数の属性を指定します。ATTRIBステートメントでは、次の属性を1つ以上指定します。

FORMAT=format

variable-listの変数に出力形式を割り当てます。

ヒント この出力形式は、標準のSAS出力形式でもFORMATプロシジャで定義した出力形式でもかまいません。

INFORMAT=informat

variable-listの変数に入力形式を割り当てます。

ヒント この入力形式は、標準のSAS入力形式でもFORMATプロシジャで定義した入力形式でもかまいません。

LABEL='label'

variable-listの変数にラベルを割り当てます。

LENGTH=<$>length

variable-listの変数に長さを指定します。

範囲 文字変数の場合は、すべての動作環境で1バイトから32,767バイトまで指定できます。
制限事項 DATASETSプロシジャからLENGTH=を使用して変数の長さを変更することはできません。
要件 文字変数の長さの前には、ドル記号($)をつけます。
動作環境 数値変数の場合、LENGTH=を使用して指定できる長さの最小値は、動作環境によって2バイトの場合と3バイトの場合があります。
ヒント 既存のデータセットを入力値として使用する場合、出力データセットでの変数の長さを変更するには、SETステートメントの前にATTRIBステートメントを使用します。

TRANSCODE=YES | NO

文字変数をトランスコードするかどうかを指定します。トランスコードを実行しないようにするには、TRANSCODE=NOと指定します。

デフォルト YES
制限事項 SAS Workspace Serverクライアントによっては、TRANSCODE=NOの属性がサポートされていない場合があります。SAS 9.2では、この属性がサポートされていない場合、TRANSCODE=NOと指定した変数の値はアスタリスク(*)で置き換えられます(マスクされます)。SAS 9.2より前のリリースでは、TRANSCODE=NOと指定した変数もトランスコードされていました。
旧リリースのSASでは、TRANSCODE=NO属性を指定した変数が含まれるSAS 9.1データセットにアクセスすることはできません。
V6TAPE Engineでは、トランスコードの抑制はサポートされていません。
操作 XisError: No pubcode in link data found for nlsrefおよびXisError: No pubcode in link data found for nlsrefを使用すると、文字変数がトランスコードされるかどうかを示す値を返すことができます。
データセット内にTRANSCODE=属性がNOに設定されている文字変数がある場合、CONTENTSプロシジャを実行すると、データセット内の各変数のTRANSCODE=の値を含むトランスコード列を出力します。データセット内のすべての変数でTRANSCODE=がデフォルト値(YES)に設定されている場合、トランスコード列は出力されません。
参照項目 XisError: No pubcode in link data found for nlsref

詳細

基本

DATAステップでATTRIBステートメントを使用すると、変数を含むSASデータセットのディスクリプタ情報が変更されるため、変数と属性は恒久的に関連付けられます。
PROCステップでATTRIBステートメントを使用することはできますが、規則が異なります。

ATTRIBステートメントでINFORMAT=オプションを使用して入力形式を指定した場合の変数の処理

ATTRIBステートメントでINFORMAT=オプションを使用して変数に割り当てた入力形式は、修飾リスト入力で使用される入力形式と同じように機能します。変数はリスト入力の走査機能を使用して読み込まれますが、入力形式が適用されます。修飾リスト入力では、SASは次の処理を行います。
  • 入力形式のwの値を使用して、外部ファイルの列位置や入力フィールド幅を設定しない
  • 入力形式のwの値を使用して、事前に定義されていない文字変数の長さを設定する
  • 数値入力形式のwの値は無視する
  • 入力形式のdの値を、数値入力形式の場合と同じように使用する
  • 入力データに埋め込まれているブランクは、INFILEステートメントのDLM=オプションまたはDLMSTR=オプションを変更しない限り、区切り文字として処理する
フォーマット入力やカラム入力などの別の入力スタイルを使用するようにINPUTステートメントをコード化した場合、ATTRIBステートメントのINFORMATオプションの使用時にはその入力スタイルは使用されません。

SETステートメントおよびMERGEステートメントの使用時のトランスコード変数の処理

SETまたはMERGEステートメントを使用して複数のデータセットからデータセットを1つ作成する場合、SASでは、出力データセット内の変数のTRANSCODE=属性が最初のデータセット内の変数のTRANSCODE=属性と同じ値に設定されます。SETステートメントをトランスコード変数と組み合わせて使用するおよびMERGEステートメントをトランスコード変数と組み合わせて使用するを参照してください。
注: TRANSCODE=属性は、変数が入力データセットまたはATTRIB TRANSCODE=ステートメントで最初に検出されたときに設定されます。SETまたはMERGEステートメントがATTRIB TRANSCODE=属性の前に使用されている場合に、このTRANSCODE=属性がSETステートメントと矛盾すると、警告メッセージが表示されます。

比較

変数に割り当てた属性を変更する場合、ATTRIBステートメントを使用することも、またはFORMAT、INFORMAT、LABEL、LENGTHなどの個々の属性のステートメントを使用することもできます。

例1: 指定する変数と属性の数が異なるATTRIBステートメントの例

指定する変数と属性の数が異なるATTRIBステートメントの例を次に示します。
  • 1変数と1属性:
    attrib cost length=4;
  • 1つの変数と複数の属性:
    attrib saleday informat=mmddyy. 
    format=worddate.;
    
  • 複数の変数と同じ複数の属性:
    attrib x y length=$4 label='TEST VARIABLE';
    
  • 複数の変数と異なる複数の属性:
    attrib x length=$4 label='TEST VARIABLE'
           y length=$2 label='RESPONSE';
    
  • 変数リストと1つの属性:
    attrib month1-month12
           label='MONTHLY SALES';
    

例2: SETステートメントをトランスコード変数と組み合わせて使用する

SETステートメントを使用しているこの例では、最初のデータセットがBであり、データセットBの変数ZのTRANSCODE=属性がNOに設定されています。そのため、データセットAの変数ZのTRANSCODE=属性はNOになります。
data b;
   length z $4;
   z = 'ice';
   attrib z transcode = no;
data c;
   length z $4;
   z = 'snow';
   attrib z transcode = yes;
data a;
   set b;
   set c;
   /* Check transcode setting for variable Z */
   rc1 = vtranscode(z);
   put rc1=;
run;

例3: MERGEステートメントをトランスコード変数と組み合わせて使用する

MERGEステートメントを使用しているこの例では、Cが最初のデータセットで、このデータセットCの変数ZのTRANSCODE=属性がYESに設定されています。そのため、データセットAの変数ZのTRANSCODE=属性はNOになります。
data b;
   length z $4;
   z = 'ice';
   attrib z transcode = no;
data c;
   length z $4;
   z = 'snow';
   attrib z transcode = yes;
data a;
   merge c b;
   /* Check transcode setting for variable Z */
   rc1 = vtranscode(z);
   put rc1=;
run;

関連項目:

XisError: No pubcode in link data found for lrcon
関数:
XisError: No pubcode in link data found for nlsref
XisError: No pubcode in link data found for nlsref
前のページ|次のページ|ページの先頭へ