<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: %scan function with in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173141#M33241</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What do you mean so much code?&amp;nbsp; In macro language quoting is done with functions.&amp;nbsp; You can't change that.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 18 Feb 2015 13:02:03 GMT</pubDate>
    <dc:creator>data_null__</dc:creator>
    <dc:date>2015-02-18T13:02:03Z</dc:date>
    <item>
      <title>%scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173136#M33236</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;While I was using a %scan function it apperas&amp;nbsp; that one of the values of my macro variables have strings that causes problems. The message I have is :&lt;/P&gt;&lt;P&gt; "ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a log excerpt with all the values of the macro variable that code has to scan through :&lt;/P&gt;&lt;P&gt;I highlighted in red where the issue occurs &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable TEST resolves to Biochemistry Comment 1|Biochemistry Comment 2|&lt;SPAN style="color: #ff0000;"&gt;Blinded&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 19+CD20-IgD-CD27+CD38hi %(CD19)&lt;/SPAN&gt;|Blinded 19+IgD+CD27+ %(CD19)|Blinded 19+IgD+CD27-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %(CD19)|Blinded 19+IgD-CD27+ %(CD19)|Blinded 19+IgD-CD27- %(CD19)|Blinded CD19+ %|Blinded&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CD19+ ABS|Blinded CD19+CD20-IgD-CD27+CD38hi&amp;nbsp; ABS|Blinded CD19+IgD+CD27+ ABS|Blinded&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CD19+IgD+CD27-&amp;nbsp; ABS|Blinded CD19+IgD-CD27+ ABS|Blinded CD19+IgD-CD27- ABS|Blinded CD3+&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %|Blinded CD3+ ABS|Blinded CD3+CD4+ %|Blinded CD3+CD4+ ABS|Blinded CD3+CD8+ %|Blinded&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CD3+CD8+ ABS|Blinded CD4+CD45RA+CD197+ %(CD4)|Blinded CD4+CD45RA+CD197+ ABS|Blinded&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CD4+CD45RA-CD183+CD196+ %(CD4)|Blinded CD4+CD45RA-CD183+CD196+ ABS|Blinded&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CD4+CD45RA-CD183+CD196- %(CD4)|Blinded CD4+CD45RA-CD183+CD196- ABS&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable NUM resolves to 3&lt;/P&gt;&lt;P&gt;ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; is required. The condition was: %scan(&amp;amp;test,&amp;amp;num.,'|') ne&lt;/P&gt;&lt;P&gt;ERROR: The condition in the %DO %WHILE loop, , yielded an invalid or missing value, .&amp;nbsp; The macro will&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop executing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;here is the code that i use :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; %do %while (%scan(&amp;amp;test,&amp;amp;num.,'|') ne %str()) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let test_&amp;amp;dts.=%scan(&amp;amp;test),&amp;amp;num.,'|');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So because of the minus sign , I though that I should tell SAS to not interpret it as minus sign and&amp;nbsp; to do so I used the %str() function , but it doesn't seems to work&lt;/P&gt;&lt;P&gt; %do %while (%scan(&amp;amp;test,&amp;amp;num.,'|') ne %str()) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let test_&amp;amp;dts.=%scan(&lt;SPAN style="color: #0000ff;"&gt;%str&lt;/SPAN&gt;(&amp;amp;test),&amp;amp;num.,'|');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Any idea why and how this issue occurs and and how to avoid the error ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;skp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 09:47:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173136#M33236</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-02-18T09:47:47Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173137#M33237</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In my opinion your problems lie in using macro variables in such a way.&amp;nbsp; There are many other posts on this forum where lists of information is described. Whilst its "possible" to do it this way the code very quickly becomes unreadable and complicated. In your example, which I am not going to look at closely, you have all kinds of special characters and such like, any of which may be causing the problems.&amp;nbsp; Maybe give an explanation of what you are trying to do with test data and required output. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 10:12:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173137#M33237</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-02-18T10:12:39Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173138#M33238</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;%STR won't do it.&amp;nbsp; I would write the scan like this using %SUPERQ to quote the value of TEST and use %QSCAN to quote the result..&amp;nbsp; Notice I added a semicolon and comma.&amp;nbsp;&amp;nbsp;&amp;nbsp; Don't use quotes around the delimiter in SCAN function if you need to quote delimiter use %STR&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also notice I only SCAN one time and test W is null in %DO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;data&lt;/STRONG&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;_null_&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;x&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;'Biochemistry Comment 1|Biochemistry Comment 2|Blinded&lt;BR /&gt;19+CD20-IgD-CD27+CD38hi %(CD19)|Blinded 19+IgD+CD27+ %(CD19)|Blinded 19+IgD+CD27-&lt;BR /&gt;%(CD19)|Blinded 19+IgD-CD27+ %(CD19)|Blinded 19+IgD-CD27- %(CD19)|Blinded CD19+ %|Blinded&lt;BR /&gt;CD19+ ABS|Blinded CD19+CD20-IgD-CD27+CD38hi&amp;nbsp; ABS|Blinded CD19+IgD+CD27+ ABS|Blinded&lt;BR /&gt;CD19+IgD+CD27-&amp;nbsp; ABS|Blinded CD19+IgD-CD27+ ABS|Blinded CD19+IgD-CD27- ABS|Blinded CD3+&lt;BR /&gt;%|Blinded CD3+ ABS|Blinded CD3+CD4+ %|Blinded CD3+CD4+ ABS|Blinded CD3+;CD8+ %|Blinded&lt;BR /&gt;CD3+CD8+ ABS|Blinded CD4+CD45RA+CD197+ %(CD4)|Blinded CD4+CD45RA+CD197+ ABS|Blinded&lt;BR /&gt;CD4+CD45RA-CD183+CD196+ %(CD4)|Blinded, CD4+CD45RA-CD183+CD196+ ABS|Blinded&lt;BR /&gt;CD4+CD45RA-CD183+CD196- %(CD4)|Blinded CD4+CD45RA-CD183+CD196- ABS'&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;call&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; symputx(&lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;'test'&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,x,&lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;'g'&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;%macro&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM style="color: #000000; background-color: #ffffff;"&gt;scanit&lt;/EM&gt;&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%local&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; i w;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; i = &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%eval&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;i + 1);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; w = &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%qscan&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%superq&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;test&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&amp;amp;i,|);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%do&lt;/SPAN&gt; &lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%while&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%superq&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;w&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; ne);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%put&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; NOTE: &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%nrbquote&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;amp;=w&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; i = &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%eval&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&amp;amp;i + 1);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%let&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; w = &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%qscan&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%superq&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;test&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&amp;amp;i,|);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;%end&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;%mend&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; scanit;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;%&lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM style="color: #000000; background-color: #ffffff;"&gt;scanit&lt;/EM&gt;&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;56&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %&lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM style="color: #000000; background-color: #ffffff;"&gt;scanit&lt;/EM&gt;&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;NOTE: W=Biochemistry Comment &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;NOTE: W=Biochemistry Comment &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;2&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;NOTE: W=Blinded19+CD20-IgD-CD27+CD38hi %(CD19)&lt;BR /&gt;NOTE: W=Blinded &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;19&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;+IgD+CD27+ %(CD19)&lt;BR /&gt;NOTE: W=Blinded &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;19&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;+IgD+CD27-%(CD19)&lt;BR /&gt;NOTE: W=Blinded &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;19&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;+IgD-CD27+ %(CD19)&lt;BR /&gt;NOTE: W=Blinded &lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;19&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;+IgD-CD27- %(CD19)&lt;BR /&gt;NOTE: W=Blinded CD19+ %&lt;BR /&gt;NOTE: W=BlindedCD19+ ABS&lt;BR /&gt;NOTE: W=Blinded CD19+CD20-IgD-CD27+CD38hi&amp;nbsp; ABS&lt;BR /&gt;NOTE: W=Blinded CD19+IgD+CD27+ ABS&lt;BR /&gt;NOTE: W=BlindedCD19+IgD+CD27-&amp;nbsp; ABS&lt;BR /&gt;NOTE: W=Blinded CD19+IgD-CD27+ ABS&lt;BR /&gt;NOTE: W=Blinded CD19+IgD-CD27- ABS&lt;BR /&gt;NOTE: W=Blinded CD3+%&lt;BR /&gt;NOTE: W=Blinded CD3+ ABS&lt;BR /&gt;NOTE: W=Blinded CD3+CD4+ %&lt;BR /&gt;NOTE: W=Blinded CD3+CD4+ ABS&lt;BR /&gt;NOTE: W=Blinded CD3+;CD8+ %&lt;BR /&gt;NOTE: W=BlindedCD3+CD8+ ABS&lt;BR /&gt;NOTE: W=Blinded CD4+CD45RA+CD197+ %(CD4)&lt;BR /&gt;NOTE: W=Blinded CD4+CD45RA+CD197+ ABS&lt;BR /&gt;NOTE: W=BlindedCD4+CD45RA-CD183+CD196+ %(CD4)&lt;BR /&gt;NOTE: W=Blinded, CD4+CD45RA-CD183+CD196+ ABS&lt;BR /&gt;NOTE: W=BlindedCD4+CD45RA-CD183+CD196- %(CD4)&lt;BR /&gt;NOTE: W=Blinded CD4+CD45RA-CD183+CD196- ABS&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 11:29:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173138#M33238</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2015-02-18T11:29:33Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173139#M33239</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi RW9,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are indeed special characters. What I need is to mask those special characters. Despite using %nrstr,%nrquote it doesn't work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The fact that I have special character&amp;nbsp; shouldn't prevents me to change of coding strategy. Because&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1 /SAS provides function to avoid such issues and I want to make use of it.&lt;/P&gt;&lt;P&gt;2/ I am in a learning process and coding by following our intuitions&amp;nbsp; just because form the mistakes that we are doing we can learn from it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My code is related to SDTM. In domain where applicable( lets's use LB), LBSTRESN (result in numeric type) is missing while LBORRES (result in character type) is not.This scenario is possible, in case for instance that LBORRES=&amp;lt;6 , in this case LBSTRESN is null. Or LBORRES=BLINDED then in this case LBSTRESN is null.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My goal is to create a report that picks up cases where LBSTRESN is null and LBORRES contains only digit, which means then that LBSTRESN should not be missing.&amp;nbsp; I achieve this by comparing the count of LBORRES that do not contains a digit at first position&amp;nbsp;&amp;nbsp;&amp;nbsp; ( in fact it is not true because&amp;nbsp; '.6' does not contain a digit at first position but could be converted in numeric but lets say this for the moment..) Those count will be compared to my non digit cases computed in&amp;nbsp; proc summary. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is an&amp;nbsp; dataset example:&lt;/P&gt;&lt;P&gt;data lb ;&lt;/P&gt;&lt;P&gt;infile cards&amp;nbsp; dsd missover;&lt;/P&gt;&lt;P&gt;input lbtest $1-28 lborres $ 30-37&amp;nbsp; lbstresn ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;Biochemistry Comment 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Biochemistry Comment 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Biochemistry Comment 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; good&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp; &lt;/P&gt;&lt;P&gt;Biochemistry Comment 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Blinded 19-IgD+CD27+ %(CD19) blinded&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Blinded 19-IgD+CD27+ %(CD19) blinded&amp;nbsp; .&lt;/P&gt;&lt;P&gt;serum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &lt;/P&gt;&lt;P&gt;serum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Method;(this section is only to explain my code, find below my full macro)&lt;/P&gt;&lt;P&gt;*-------------------------------------------------------------------------------------------------------------;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**Compute a summary by test in LB;&lt;/P&gt;&lt;P&gt;*-------------------------------------------------------;&lt;/P&gt;&lt;P&gt;proc summary data=&amp;amp;dts._ ;&lt;/P&gt;&lt;P&gt;var &amp;amp;dts.stresn;&lt;/P&gt;&lt;P&gt;by &amp;amp;dts.test;&lt;/P&gt;&lt;P&gt;output out=summary_&amp;amp;dts.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Get a list of test for which lbstresn=0, in other word&amp;nbsp; get lbtest for which numerical result is null. &lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;select &amp;amp;dts.test into :test separated by '|'&lt;/P&gt;&lt;P&gt;from summary_&amp;amp;dts.&lt;/P&gt;&lt;P&gt;where &amp;amp;dts.stresn eq 0 and _stat_ eq 'N';&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and perform for&amp;nbsp; each of those&amp;nbsp; test a frequency test :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let num=1;&lt;/P&gt;&lt;P&gt; %do %while (%scan(&amp;amp;test,&amp;amp;num.,'|') ne %str( )) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let test_&amp;amp;dts.=%scan(&amp;amp;test,&amp;amp;num.,'|');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %put &amp;amp;&amp;amp;test_&amp;amp;dts ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc freq data=&amp;amp;dts. ; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tables&amp;nbsp; &amp;amp;dts.orres/out=&amp;amp;dts._&amp;amp;num.(drop=percent);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; where &amp;amp;dts.test="&amp;amp;&amp;amp;test_&amp;amp;dts.";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; data &amp;amp;dts._test_&amp;amp;num.; set &amp;amp;dts._&amp;amp;num.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; length&amp;nbsp; domain $20. test&amp;nbsp;&amp;nbsp; $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; domain="&amp;amp;dts.";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; test="&amp;amp;&amp;amp;test_&amp;amp;dts.";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rename &amp;amp;dts.orres=test_orres;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; keep domain test &amp;amp;dts.orres &amp;amp;dts.orres count ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let num=%eval(&amp;amp;num.+1);&lt;/P&gt;&lt;P&gt; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Macro call;&lt;/P&gt;&lt;P&gt;*------------------;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;option mprint mlogic symbolgen;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;%orres_strsn(lib=work,dts=lb)&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P&gt;**The full macro is here :&lt;/P&gt;&lt;P&gt;*-----------------------------------;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro orres_strsn (lib=,dts=);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=&amp;amp;dts. out=&amp;amp;dts._;&lt;/P&gt;&lt;P&gt;by &amp;amp;dts.test;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc summary data=&amp;amp;dts._ ;&lt;/P&gt;&lt;P&gt;var &amp;amp;dts.stresn;&lt;/P&gt;&lt;P&gt;by &amp;amp;dts.test;&lt;/P&gt;&lt;P&gt;output out=summary_&amp;amp;dts.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;select &amp;amp;dts.test into :test separated by '|'&lt;/P&gt;&lt;P&gt;from summary_&amp;amp;dts.&lt;/P&gt;&lt;P&gt;where &amp;amp;dts.stresn eq 0 and _stat_ eq 'N';/*only the tests where lbstresn is null*/&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;test.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let num=1; &lt;/P&gt;&lt;P&gt; %do %while (%scan(&amp;amp;test,&amp;amp;num.,'|') ne %str()) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let test_&amp;amp;dts.=%scan(%nrstr(&amp;amp;test),&amp;amp;num.,'|');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %put &amp;amp;&amp;amp;test_&amp;amp;dts ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; proc freq data=&amp;amp;dts. ; &lt;/P&gt;&lt;P&gt;&amp;nbsp; tables&amp;nbsp; &amp;amp;dts.orres/out=&amp;amp;dts._&amp;amp;num.(drop=percent);&lt;/P&gt;&lt;P&gt;&amp;nbsp; where &amp;amp;dts.test="&amp;amp;&amp;amp;test_&amp;amp;dts.";&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; data &amp;amp;dts._test_&amp;amp;num.; set &amp;amp;dts._&amp;amp;num.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; length&amp;nbsp; domain $20. test&amp;nbsp;&amp;nbsp; $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; domain="&amp;amp;dts.";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; test="&amp;amp;&amp;amp;test_&amp;amp;dts.";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rename &amp;amp;dts.orres=test_orres;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; keep domain test &amp;amp;dts.orres &amp;amp;dts.orres count ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let num=%eval(&amp;amp;num.+1);&lt;/P&gt;&lt;P&gt; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data orres_; set &amp;amp;dts._test_1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;num. gt 2 %then %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i=2 %to %eval(&amp;amp;num-1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;dts._test_&amp;amp;i.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by lbtest;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain sum_cases 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nodigit=prxparse("/\d/");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; position=prxmatch(nodigit,lborres);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if position ne 1 then sum_cases+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.lbtest then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if sum_cases ne 0 then output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum_cases=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt; label sum_cases='Number of non digit cases';&lt;/P&gt;&lt;P&gt; keep lbtest sum_cases;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table diff_&amp;amp;dts._ as&lt;/P&gt;&lt;P&gt;select a.&amp;amp;dts.test,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a._freq_- a.&amp;amp;dts.stresn as cases_orres 'Number of non digit cases from proc summary',&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.sum_cases&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from summary_&amp;amp;dts. as a left join orres_&amp;amp;count. as b&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on a.&amp;amp;dts.test=b.&amp;amp;dts.test&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where a.&amp;amp;dts.stresn eq 0; /*only on&amp;nbsp; tests where lbstresn is null*/&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend orres_strsn;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data lb ;&lt;/P&gt;&lt;P&gt;infile cards&amp;nbsp; dsd missover;&lt;/P&gt;&lt;P&gt;input lbtest $1-28 lborres $ 30-37&amp;nbsp; lbstresn ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;Biochemistry Comment 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Biochemistry Comment 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Biochemistry Comment 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; good&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp; &lt;/P&gt;&lt;P&gt;Biochemistry Comment 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Blinded 19-IgD+CD27+ %(CD19) blinded&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Blinded 19-IgD+CD27+ %(CD19) blinded&amp;nbsp; .&lt;/P&gt;&lt;P&gt;serum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &lt;/P&gt;&lt;P&gt;serum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;skp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 12:54:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173139#M33239</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-02-18T12:54:57Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173140#M33240</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Data_nul ! I'will implement it. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am surprise to it takes so much code to just mask '-' and&amp;nbsp; '%'...:smileyconfused:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;skp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 12:58:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173140#M33240</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-02-18T12:58:00Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173141#M33241</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What do you mean so much code?&amp;nbsp; In macro language quoting is done with functions.&amp;nbsp; You can't change that.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 13:02:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173141#M33241</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2015-02-18T13:02:03Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173142#M33242</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, if I understand your logic correctly, the following code will add a flag which highlights the rows where LBSTRESN should be populated but isn't:&lt;/P&gt;&lt;P&gt;data lb ;&lt;/P&gt;&lt;P&gt;infile cards&amp;nbsp; dsd missover;&lt;/P&gt;&lt;P&gt;input lbtest $1-28 lborres $ 30-37&amp;nbsp; lbstresn ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;Biochemistry Comment 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Biochemistry Comment 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Biochemistry Comment 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; good&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . &lt;/P&gt;&lt;P&gt;Biochemistry Comment 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Blinded 19-IgD+CD27+ %(CD19) blinded&amp;nbsp; .&lt;/P&gt;&lt;P&gt;Blinded 19-IgD+CD27+ %(CD19) blinded&amp;nbsp; .&lt;/P&gt;&lt;P&gt;serum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;&lt;P&gt;serum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table WORK.LB_WANT as&lt;/P&gt;&lt;P&gt;&amp;nbsp; select&amp;nbsp; *,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case&amp;nbsp; when LBSTRESN is null and anyalpha(LBORRES)=0 then "Y"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else "" end as FLAG&lt;/P&gt;&lt;P&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; WORK.LB;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can then pull those rows out with a where clause if you want to print them.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 13:09:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173142#M33242</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-02-18T13:09:48Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173143#M33243</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok. Well I thought that innocently %nrquote would be enough....As it is written in the documentation below (see link SAS support on %nrquote &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000208412.htm" style="text-decoration: underline; font-size: 13.3333330154419px;" title="http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000208412.htm"&gt;SAS(R) 9.2 Macro Language: Reference&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my&amp;nbsp; example : &lt;SPAN style="color: #000000; font-family: 'Courier New'; font-size: 14.6666679382324px; background-color: #ffffff;"&gt;Blinded19+CD20-IgD-CD27+CD38hi %(CD19),&amp;nbsp; we have '+','-','%','(' and ')'.&amp;nbsp; Why %nrquote is not enough ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-family: 'Courier New'; font-size: 14.6666679382324px; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;skp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 13:12:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173143#M33243</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-02-18T13:12:16Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173144#M33244</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;NRQUOTE might be adequate but you weren't using it.&amp;nbsp; You were using %STR.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 13:18:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173144#M33244</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2015-02-18T13:18:54Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173145#M33245</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your problem description does not include anything that makes it sound like the use of macro variables is needed (or desired).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;My goal is to create a report that picks up cases where LBSTRESN is null and LBORRES contains only digit, which means then that LBSTRESN should not be missing. &lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 14:08:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173145#M33245</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-02-18T14:08:22Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173146#M33246</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi RW9,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes indeed, it is also possible to do so. However, I wanted&amp;nbsp; to experiment parsing function and playing with quoting function&amp;nbsp; within a sas macro program. That is why I choosed to write my code like this.... &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;skp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Mar 2015 14:56:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173146#M33246</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-03-05T14:56:09Z</dc:date>
    </item>
    <item>
      <title>Re: %scan function with</title>
      <link>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173147#M33247</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tom,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes indeed, as RW9's answer, the use of a macro variable is not be needed and a solution can be achieved easily with proc sql. However, I have done it for didactic reason ( learning macro codes and experience different use of quoting function in a macro environment ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;skp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Mar 2015 15:00:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/scan-function-with/m-p/173147#M33247</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-03-05T15:00:43Z</dc:date>
    </item>
  </channel>
</rss>

