|
|
変数内のデータが長い場合に、変数内の全ての情報を出力する
[OS] ALL
[リリース] ALL
[キーワード] BASE, LONG CHARACTER VARIABLE
[質問]
データセットの内容をすべて出力したいのですが、変数長が非常に長い場合(たとえば500バイト)には、LINESIZE=システムオプションで指定できる長さでは、内容が途中で切れてしまいます。
変数の内容を全て出力する方法はありませんか。
[回答]
データの内容をすべて出力するには、以下の3つの方法が考えられます。
- ■ HTMLファイルへ出力する
-
ODSの機能を利用して、変数をHTML形式で出力します。
その後、Microsoft Excelにコピーするなどして、見た目を調整することができます。
DATA test1(KEEP=a b);
FORMAT a $6.
b $500.;
DO i=1 TO 3 ;
a = 'TESTD'||LEFT(i) ;
DO j=1 TO 500 BY 2 ;
SUBSTR(b,j,2) = 'あ' ;
END;
OUTPUT;
END;
RUN;
/* ODS 出力 */
ODS HTML FILE='c:¥test¥longvar.htm';
PROC PRINT DATA=work.test1;
RUN;
ODS HTML CLOSE;
- ■ 変数を印刷できる範囲の長さに区切って出力する
-
DATAステップで、該当の変数を、印刷できる範囲の長さの複数の変数に分割して出力します。
/* SUBSTRまたは、KSUBSTRで区切る */
DATA test2(DROP=b);
SET test1 ;
b1 = KSUBSTR(b,1,50) ;
b2 = KSUBSTR(b,51,50) ;
b3 = KSUBSTR(b,101,50) ;
b4 = KSUBSTR(b,151,50) ;
b5 = KSUBSTR(b,201,50) ;
OUTPUT;
RUN;
PROC PRINT DATA=WORK.TEST2;
RUN;
※ 印刷する前に印刷プレビューでイメージを確認してください
- ■ REPORTプロシジャのオプションを使用する
-
REPORTプロシジャのDEFINEステートメントで、WIDTH=オプションとFLOWオプションを指定して、変数を任意の長さで折り返して出力します。
PROC REPORT DATA=WORK.TEST1 NOWINDOWS;
COLUMN a b;
/* WIDTHオプションにより100文字で折り返し */
DEFINE b /DISPLAY WIDTH=100 FLOW;
RUN;
※ WIDTH=の値は任意に調整してください
なお、REPORTプロシジャでFLOWオプションを使用する際に、変数内にDBCS(漢字などの2バイト文字)とSBCS(半角 英数字などの1バイト文字)が混在する場合、文字列が崩れて表示されることがあります。現在この問題を修正するためのHot Fix (修正ファイル)が用意されています。Hot Fixの適用を検討される場合は、弊社テクニカルサポートまでご連絡ください。
|