DATAステップはCALL PRXDEBUGルーチンでのデバッグをサポートします。CALL PRXDEBUGを使用して、SASログに送られるPerlデバッグ出力をオンまたはオフにできます。
次の例では、SASログにPerlデバッグ出力を書き込みます。
data _null_;
/* CALL PRXDEBUG(1) turns on Perl debug output. */
call prxdebug(1);
putlog 'PRXPARSE: ';
re = prxparse('/[bc]d(ef*g)+h[ij]k$/');
putlog 'PRXMATCH: ';
pos = prxmatch(re, 'abcdefg_gh_');
/* CALL PRXDEBUG(0) turns off Perl debug output. */
call prxdebug(0);
run;
SASは次の出力をログに書き込みます。
SASデバッグ出力
PRXPARSE:Compiling REx '[bc]d(ef*g)+h[ij]k$' size 41 first at 1 rarest char g at 0 rarest char d at 0 1:ANYOF[bc](10) 10:EXACT <d>(12) 12:CURLYX[0] {1,32767}(26) 14: OPEN1(16) 16: EXACT <e>(18) 18: STAR(21) 19: EXACT <f>(0) 21: EXACT <g>(23) 23: CLOSE1(25) 25: WHILEM[1/1](0) 26:NOTHING(27) 27:EXACT <h>(29) 29:ANYOF[ij](38) 38:EXACT <k>(40) 40:EOL(41) 41:END(0) anchored 'de' at 1 floating 'gh' at 3..2147483647 (checking floating) stclass 'ANYOF[bc]' minlen 7 PRXMATCH:Guessing start of match, REx '[bc]d(ef*g)+h[ij]k$' against 'abcdefg_gh_'...Did not find floating substr 'gh'...Match rejected by optimizer