<?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: mimic oracle's S099999 format in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9407#M506</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt;I do not see an issue with the function approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It returns a full-length padded string which has to be trimmed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;Do you have SAS 9.3? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haha, good one! We are trying to migrate to 9.2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Same here. Nothing beats macros eh?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;%macro orasign(arg, len, miss);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; %if &amp;amp;len&amp;lt;3 %then %let len=3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; %else %if &amp;amp;len&amp;gt;32 %then %let len=32;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; ifc(missing(&amp;amp;arg), &amp;amp;miss&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt; ,ifc(&amp;amp;arg&amp;gt;=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , '+'||put(&amp;amp;arg,z%eval(&amp;amp;len-1).0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&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; put(&amp;amp;arg,z&amp;amp;len..0)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;%mend;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;data _null_;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; input A ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; B=%orasign(A, 19, '-999999999999999999');&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; put '/' B '\';&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;cards;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;23.1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;-23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;The downside of course is the length of the whole expression. If hundreds of variables formatted this way are concatenated, one could reach the limit of a datastep statement length. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 15 Sep 2011 21:43:41 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2011-09-15T21:43:41Z</dc:date>
    <item>
      <title>mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9397#M496</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;I am creating a fixed-column flat file that requires number to be written as&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+0000001234&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;-000000000000001234&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The width varies.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried creating a picture format using fill= and prefix= but couldn't create a single format that I could use like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;put number orasigned6.;&amp;nbsp; to write +01234&lt;/P&gt;&lt;P&gt;and&lt;/P&gt;&lt;P&gt;put number orasigned8.;&amp;nbsp; to write +0001234&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had to create format for each length.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyone smarter (or rather more knowledgeable&amp;nbsp; ;o)&amp;nbsp; than me?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Sep 2011 22:58:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9397#M496</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2011-09-14T22:58:39Z</dc:date>
    </item>
    <item>
      <title>mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9398#M497</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't think there is a way to do it with proc format to have a properly filled dynamic length, although there should be, probably beyond my knowledge as well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt; input nbr;&lt;/P&gt;&lt;P&gt; if nbr&amp;lt;0 then sign='-'; else sign='+';&lt;/P&gt;&lt;P&gt; want6=sign || strip(put(abs(nbr),Z6.));&lt;/P&gt;&lt;P&gt; want8=sign || strip(put(abs(nbr),Z8.));&lt;/P&gt;&lt;P&gt; put want6= want8=;&lt;/P&gt;&lt;P&gt; cards;&lt;/P&gt;&lt;P&gt;1234&lt;/P&gt;&lt;P&gt;-1234&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;want6=+001234 want8=+00001234&lt;/P&gt;&lt;P&gt;want6=-001234 want8=-00001234&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Sep 2011 23:53:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9398#M497</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2011-09-14T23:53:01Z</dc:date>
    </item>
    <item>
      <title>Re: mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9399#M498</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have dozens of these, so I'd rather write&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;put num1 orasigned6. num2&amp;nbsp; orasigned12.&amp;nbsp; num3&amp;nbsp; orasigned8. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;than run a full logic for each value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, picture seems to have a silly limit of 16 digits. How dumb is that?&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;SPAN style="font-family: courier new,courier;"&gt;picture ora low-&amp;lt;0 ='999999999999999999' (prefix='-')&lt;/SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0-high ='999999999999999999' (fill='0' prefix='+') ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;ERROR: Number of digit selectors (18) cannot exceed 16.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 01:06:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9399#M498</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2011-09-15T01:06:33Z</dc:date>
    </item>
    <item>
      <title>Re: mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9400#M499</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Alright, I've resolved to write a function. Not the cleanest since a length=1 yields an access violation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Still curious to know whether a format could do the trick though.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt; font-family: Courier New;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;options cmplib=work.funcs;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;proc fcmp outlib=work.funcs.temp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp; function orasigned(ARG, LENGTH, MISSINGVAL $) $32;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if missing(ARG) then return(MISSINGVAL);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if LENGTH &amp;lt; 2 or LENGTH &amp;gt; 32 then do;&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put 'ERROR in function orasigned: LENGTH should be between 2 and 32.';&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(ifc(ARG&amp;gt;=0,'+','-')||putn(abs(ARG),cats('z',LENGTH-1,'.0')));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;&amp;nbsp; endsub;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: courier new,courier;"&gt;run; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-size: 10pt; font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 03:17:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9400#M499</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2011-09-15T03:17:05Z</dc:date>
    </item>
    <item>
      <title>mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9401#M500</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I was just right in the middle of the pretty much the same thing...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc fcmp outlib=work.funcs.temp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;function oras(v,l) $;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; s=ifc(v&amp;lt;0,'-','+');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; n=putn(v,cats('Z',l,'.'));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; w=strip(s)||strip(n);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return (w);&lt;/P&gt;&lt;P&gt;endsub;&lt;/P&gt;&lt;P&gt;&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;options cmplib=work.funcs;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt; nbr=1234;&lt;/P&gt;&lt;P&gt; l=6;&lt;/P&gt;&lt;P&gt; want=oras(nbr,l);&lt;/P&gt;&lt;P&gt; put want=;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;want=+001234&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 03:40:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9401#M500</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2011-09-15T03:40:52Z</dc:date>
    </item>
    <item>
      <title>Re: mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9402#M501</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Even that function is no good. &lt;img id="smileysad" class="emoticon emoticon-smileysad" src="https://communities.sas.com/i/smilies/16x16_smiley-sad.png" alt="Smiley Sad" title="Smiley Sad" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It will only return the full string length, so ﻿I have to trim the returned values as I concatenate them. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Not good at all. It looks like the good old macro language will have to be called upon, as usual.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If anyone has a better idea...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Christian Graffeuille&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 05:05:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9402#M501</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2011-09-15T05:05:43Z</dc:date>
    </item>
    <item>
      <title>mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9403#M502</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I do not see an issue with the function approach, could you please provide sample of issue you see.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 14:39:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9403#M502</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2011-09-15T14:39:32Z</dc:date>
    </item>
    <item>
      <title>mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9404#M503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do you have SAS 9.3?&amp;nbsp; I think you can use FCMP to create a format.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 18:48:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9404#M503</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2011-09-15T18:48:24Z</dc:date>
    </item>
    <item>
      <title>Re: mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9405#M504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;34&amp;nbsp;&amp;nbsp; %macro s09(var,len);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;35&amp;nbsp;&amp;nbsp;&amp;nbsp; %if ^%length(&amp;amp;len) %then %let len=12;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;36&amp;nbsp;&amp;nbsp;&amp;nbsp; ifc(&amp;amp;var&amp;lt;0,put(&amp;amp;var,Z&amp;amp;len..),'+'||put(&amp;amp;var,Z%eval(&amp;amp;len-1).))&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;37&amp;nbsp;&amp;nbsp; %mend s09;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;38&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;39&amp;nbsp;&amp;nbsp; data _null_;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;40&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; input x ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;41&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y=%s09(x,6);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;42&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; z=%s09(x);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;43&amp;nbsp;&amp;nbsp; put (x y z) (=);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;44&amp;nbsp;&amp;nbsp; cards;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;x=56 y=+00056 z=+00000000056&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;x=-23 y=-00023 z=-00000000023&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;x=0 y=+00000 z=+00000000000&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;x=. y=. z=.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 19:38:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9405#M504</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2011-09-15T19:38:02Z</dc:date>
    </item>
    <item>
      <title>mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9406#M505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks, Tom.&amp;nbsp; I would still like to know what issue Chris is having with the functional approach?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 19:43:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9406#M505</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2011-09-15T19:43:45Z</dc:date>
    </item>
    <item>
      <title>Re: mimic oracle's S099999 format</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9407#M506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt;I do not see an issue with the function approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It returns a full-length padded string which has to be trimmed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;Do you have SAS 9.3? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haha, good one! We are trying to migrate to 9.2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Same here. Nothing beats macros eh?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;%macro orasign(arg, len, miss);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; %if &amp;amp;len&amp;lt;3 %then %let len=3;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; %else %if &amp;amp;len&amp;gt;32 %then %let len=32;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; ifc(missing(&amp;amp;arg), &amp;amp;miss&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt; ,ifc(&amp;amp;arg&amp;gt;=0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , '+'||put(&amp;amp;arg,z%eval(&amp;amp;len-1).0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&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; put(&amp;amp;arg,z&amp;amp;len..0)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;%mend;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;data _null_;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; input A ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; B=%orasign(A, 19, '-999999999999999999');&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;&amp;nbsp; put '/' B '\';&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;cards;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;23.1&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;-23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 8pt;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;The downside of course is the length of the whole expression. If hundreds of variables formatted this way are concatenated, one could reach the limit of a datastep statement length. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2011 21:43:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mimic-oracle-s-S099999-format/m-p/9407#M506</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2011-09-15T21:43:41Z</dc:date>
    </item>
  </channel>
</rss>

