2016年3月15日火曜日

ODS出力時に文字の書式設定をする【インラインフォーマット】



HTMLやRTFなどのODS出力時に、インラインフォーマットを使って文字の書式設定等が出来ます。
(本機能はSGPLOT・GTLでは、ほとんど動作しません)




インラインフォーマット (一部)

設定内容指定備考
上付き文字にする
{SUPER 文字}  
下付き文字にする
{SUB 文字}  
  
文字のスタイル設定(書式)をかえる 
{STYLE [スタイル設定]文字} 
S={スタイル設定}文字

という書き方もある。
(S=は大文字じゃなきゃダメ)
Unicode記号の表示
{UNICODE unicode値}
  
ノーブレークスペースを挿入
{NBSPACE}

改行 
{NEWLINE 改行数} 
    
ページ番号を表示
(現ページ of 総ページ)
{PAGEOF}
RTF, TAGSETS.RTF で利用可

TITLE・FOOTNOTEステートメント内で使用

ODS RTF で BODYTITLEオプションが設定されていると正しく動作しない
現在のページ番号を表示
{THISPAGE}
RTF, TAGSETS.RTF, PRINTER で利用可

TITLE・FOOTNOTEステートメント内で使用

ODS RTF で BODYTITLEオプションが設定されていると正しく動作しない 
最終ページ番号を表示
{LASTPAGE}
RTF, TAGSETS.RTF で利用可

TITLE・FOOTNOTEステートメント内で使用

ODS RTF で BODYTITLEオプションが設定されていると正しく動作しない


📝
以下の要素によっては、インラインフォーマットの挙動が異なったり、動作しないケースがあるので、リファレンスを確認したり動作確認するなどした方が良いです。
  • 出力先の種類(HTMLやRTFなど)
  • インラインフォーマットの種類
  • エスケープ文字の設定方法



構文1

  (*ESC*){ インラインフォーマット }


前に (*ESC*) を入れると、インラインフォーマットとして解釈させることが出来る。
(「ESC」は大文字で記述する)


*** タイトルを青くする例 ;
title "(*ESC*){style [color=blue]abcde}";

ods rtf file="出力先のパスを指定\test.rtf";
   proc print data=sashelp.class;
   run;
ods rtf close;




構文2

  ODS ESCAPECHAR = 'エスケープ文字 ';
  エスケープ文字{ インラインフォーマット }


(*ESC*) の代わりとなるエスケープ文字を設定することができます。

*** タイトルを青くする例 ;
ods escapechar='~';
title "~{style [color=blue]abcde}";

ods rtf file="出力先のパスを指定\test.rtf";
  proc print data=sashelp.class;
  run;
ods rtf close;


📝注意
  • エスケープ文字を「/」とかありきたりなのにすると、例えば「2016/03/15」のような文字に含まれてる「/」もエスケープ文字として解釈しちゃうので注意(結構ありがち)
  • RTF出力時に「\」(円マーク、バックスラッシュ)をエスケープ文字にしない方が良いようです(RTFで特別な意味を持つ記号のため)




変数値にもインラインフォーマットが利用可能

*** ODS出力時に変数値を途中で改行させる例 ;
data DT1;
   A="SAS(*ESC*){newline 1}BOUBIROKU";
run;

ods rtf file="出力先のパスを指定\test.rtf";
  proc print data=DT1;
  run;
ods rtf close;


0 件のコメント:

コメントを投稿