リスト出力のページ区切り文字を 0x0c (改ページ) から、任意の文字に変更するオプション formdlim - SAS

SASでリスト出力したテキストファイルに対して、grepコマンドを実行し「バイナリー・ファイル(標準入力)は一致しました」と出力される原因と解決方法にて、ページ区切りに 0x0c (改ページ) が使われていたせいで困ったという話を書きました。そのページ区切りですが、オプションで改ページから別の文字に設定変更できることを発見しました。

変更には、オプション formdlim を用います。

テストコード

options nocenter ;

/* リストの出力パスを指定 */
proc printto print="/folders/myfolders/test.lst" new ;
run ;
/* テストデータ */
data TEST ; A = 1 ; run ;

/* ページ区切りを -(ハイフン) にする */
options formdlim='-' ;
proc print ; run ;
proc print ; run ;

/* ページ区切りを 0x0c(改ページ) に戻す */
options formdlim='' ;
proc print ; run ;
proc print ; run ;

出力結果

 
------------------------------------------------------------------------------------------------------------------------------------
 
                                                                                     2015年 5月19日 火曜日 00時17分30秒  19

OBS    A

 1     1
 
------------------------------------------------------------------------------------------------------------------------------------
 
                                                                                     2015年 5月19日 火曜日 00時17分30秒  20

OBS    A

 1     1
                                                                                      2015年 5月19日 火曜日 00時17分30秒  21

OBS    A

 1     1
                                                                                      2015年 5月19日 火曜日 00時17分30秒  22

OBS    A

 1     1

0x0a (改行コードLF) を指定すると、1行の文字数だけ指定した文字を繰り返すため、大量の 0x0a (改行コードLF)がページの区切りとして出力されます。出力結果は長いので割愛。

options formdlim="0a"x ;

色んな文字列を区切り文字として使いたいところですが、残念ながら最大1文字のみの指定となっています。

 59         options formdlim="ページ区切りですYO" ;
                    ________
                    19
 ERROR 19-12: SASオプションFORMDLIMのオプション値は最大1文字を必要とします。

コメント

このブログの人気の投稿

日付フォーマットでない文字項目をSAS日付に変換するときにログ出力されるメッセージを抑制したい - SAS

Linuxコマンド: date で◯か月前 / ◯か月後を取得するときの注意

データセット(.sas7bdatファイル)の文字コードを取得したい - SAS