<?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 Performance custom functions using proc fcmp in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94805#M26797</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Im trying to replace case statements with custom created proc fcmp functions within a proc sql statement. I've created the functions for translating &lt;/P&gt;&lt;P&gt;character strings (db2 timestamps) into SAS datetime values. These functions do their job, but they take alot more cpu time compaired to the case &lt;/P&gt;&lt;P&gt;statements. With 100k records it takes 70% more time, with 1m records its even worse: 128% more time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The reason for wanting to use functions in the first place is that we hoped to get some performace increasement. Besides that, they take alot less typing &lt;/P&gt;&lt;P&gt;and are easier to maintain. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope to get some answers on the following questions:&lt;BR /&gt;- Can I optimize my custom functions so that they will perform better? &lt;BR /&gt;- Are functions faster, as fast as or slower compaired to case statements?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below are our current case statement and the custom function. As you can see ive changed some format options because they are easier to read and use. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Case statement:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;case &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; when missing( DB2_DATETIME ) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then . &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; when substr(left( DB2_DATETIME ), 1, 4) &amp;lt; "1582" &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then "01JAN1582:00:00:00.000000"dt &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; when substr(left(DB2_DATETIME ), 1, 4) &amp;lt; "1926" &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; or substr(left(DB2_DATETIME ), 1, 4) &amp;gt; "2095"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then dhms(input(substr( DB2_DATETIME , 1,10), yymmdd10.), 0,0, input(substr( DB2_DATETIME , 12, 8), time8.)) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; else dhms(input(substr( DB2_DATETIME , 1,10), yymmdd10.), 0,0, input(substr( DB2_DATETIME , 12, 15), time15.6)) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Function:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;function db2_to_sas_datetime(db2_datetime $);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; length sas_datetime 8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; year $4;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; year = substr(db2_datetime, 1, 4);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; if year &amp;lt; "1582"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = "01JAN1582:00:00:00.000000"dt ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; else do;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if "1926" &amp;lt; year &amp;lt; "2096"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = input(db2_datetime, ymddttm26.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = input(substr(db2_datetime, 1, 19), ymddttm19.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; return(sas_datetime);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;endsub;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Im running these jobs in a SAS 9.3 environment.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 04 Jun 2013 13:59:33 GMT</pubDate>
    <dc:creator>Owen</dc:creator>
    <dc:date>2013-06-04T13:59:33Z</dc:date>
    <item>
      <title>Performance custom functions using proc fcmp</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94805#M26797</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Im trying to replace case statements with custom created proc fcmp functions within a proc sql statement. I've created the functions for translating &lt;/P&gt;&lt;P&gt;character strings (db2 timestamps) into SAS datetime values. These functions do their job, but they take alot more cpu time compaired to the case &lt;/P&gt;&lt;P&gt;statements. With 100k records it takes 70% more time, with 1m records its even worse: 128% more time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The reason for wanting to use functions in the first place is that we hoped to get some performace increasement. Besides that, they take alot less typing &lt;/P&gt;&lt;P&gt;and are easier to maintain. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope to get some answers on the following questions:&lt;BR /&gt;- Can I optimize my custom functions so that they will perform better? &lt;BR /&gt;- Are functions faster, as fast as or slower compaired to case statements?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below are our current case statement and the custom function. As you can see ive changed some format options because they are easier to read and use. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Case statement:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;case &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; when missing( DB2_DATETIME ) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then . &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; when substr(left( DB2_DATETIME ), 1, 4) &amp;lt; "1582" &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then "01JAN1582:00:00:00.000000"dt &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; when substr(left(DB2_DATETIME ), 1, 4) &amp;lt; "1926" &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; or substr(left(DB2_DATETIME ), 1, 4) &amp;gt; "2095"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then dhms(input(substr( DB2_DATETIME , 1,10), yymmdd10.), 0,0, input(substr( DB2_DATETIME , 12, 8), time8.)) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; else dhms(input(substr( DB2_DATETIME , 1,10), yymmdd10.), 0,0, input(substr( DB2_DATETIME , 12, 15), time15.6)) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Function:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;function db2_to_sas_datetime(db2_datetime $);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; length sas_datetime 8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; year $4;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; year = substr(db2_datetime, 1, 4);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; if year &amp;lt; "1582"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = "01JAN1582:00:00:00.000000"dt ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; else do;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if "1926" &amp;lt; year &amp;lt; "2096"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = input(db2_datetime, ymddttm26.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = input(substr(db2_datetime, 1, 19), ymddttm19.);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;&amp;nbsp; return(sas_datetime);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier; color: #3366ff;"&gt;endsub;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Im running these jobs in a SAS 9.3 environment.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Jun 2013 13:59:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94805#M26797</guid>
      <dc:creator>Owen</dc:creator>
      <dc:date>2013-06-04T13:59:33Z</dc:date>
    </item>
    <item>
      <title>Re: Performance custom functions using proc fcmp</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94806#M26798</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Just a thought but have you tried running your function in a DATA step and if so do you get a similar performance drop?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The reason I ask this is that SAS would have to translate your function into SQL if it is run in the SQL procedure, But if you run it in a DATA step this translation would not be required.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Jun 2013 20:15:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94806#M26798</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2013-06-05T20:15:32Z</dc:date>
    </item>
    <item>
      <title>Re: Performance custom functions using proc fcmp</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94807#M26799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;2 answers:&lt;/P&gt;&lt;P&gt;1) proc fcmp does add an overhead&lt;/P&gt;&lt;P&gt;2) you are comparing very different syntaxes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is how you can see it:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* The function runs in 6s;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 1e7;x=db2_to_sas_datetime(sas_datetime);end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;nbsp; The select statement runs in 0.1s;&lt;/P&gt;&lt;P&gt;data _null_; &lt;/P&gt;&lt;P&gt;do i=1 to 1e7;&lt;/P&gt;&lt;P&gt;select;&lt;/P&gt;&lt;P&gt;&amp;nbsp; when (missing( DB2_DATETIME )) t=.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; when (substr(left( DB2_DATETIME ), 1, 4) &amp;lt; "1582")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t= "01JAN1582:00:00:00.000000"dt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; when (substr(left(DB2_DATETIME ), 1, 4) &amp;lt; "1926"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; or substr(left(DB2_DATETIME ), 1, 4) &amp;gt; "2095")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t= dhms(input(substr( DB2_DATETIME , 1,10), yymmdd10.), 0,0, input(substr( DB2_DATETIME , 12, 8), time8.));&lt;/P&gt;&lt;P&gt;&amp;nbsp; otherwise t=dhms(input(substr( DB2_DATETIME , 1,10), yymmdd10.), 0,0, input(substr( DB2_DATETIME , 12, 15), time15.6));&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* The if test from the function runs in 1.6s on its own;&lt;/P&gt;&lt;P&gt;data _null_;&amp;nbsp; &lt;/P&gt;&lt;P&gt;do i=1 to 1e7;&lt;/P&gt;&lt;P&gt;&amp;nbsp; year = substr(db2_datetime, 1, 4);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if year &amp;lt; "1582"&lt;/P&gt;&lt;P&gt;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = "01JAN1582:00:00:00.000000"dt ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if "1926" &amp;lt; year &amp;lt; "2096"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = input(db2_datetime, ymddttm26.);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sas_datetime = input(substr(db2_datetime, 1, 19), ymddttm19.);&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Jun 2013 05:17:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94807#M26799</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2013-06-06T05:17:54Z</dc:date>
    </item>
    <item>
      <title>Re: Performance custom functions using proc fcmp</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94808#M26800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you want to keep using the function for its practicality, you should optimise its code.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Jun 2013 05:36:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94808#M26800</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2013-06-06T05:36:45Z</dc:date>
    </item>
    <item>
      <title>Re: Performance custom functions using proc fcmp</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94809#M26801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Just a thought, do you really have datetime data from before 1582 or after 2095, and consider them as correct?&lt;/P&gt;&lt;P&gt;Are those stored in DB2 as char? If so, you could just throw the input function using implicit pass-thru, chances are that SAS/ACCESS will convert it to DB2 SQL, hence improving performance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Jun 2013 10:17:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Performance-custom-functions-using-proc-fcmp/m-p/94809#M26801</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2013-06-06T10:17:49Z</dc:date>
    </item>
  </channel>
</rss>

