Functions and CALL Routines |
The DATA step provides debugging support with the CALL PRXDEBUG routine. CALL PRXDEBUG enables you to turn on and off Perl debug output messages that are sent to the SAS log.
The following example writes Perl debug output to the SAS log.
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 writes the following output to the log.
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
For a detailed explanation of Perl debug output, see CALL PRXDEBUG Routine.
Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.