<?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: Inputting and outputting into and from do loop on basis of name vector? in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183884#M1860</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh yeas it was pretty straight forward after all. The outputting remained somewhat unclear for me but I realized another solution to the problem:&lt;/P&gt;&lt;P&gt;I initialized matrix with width = number of firms, length = length of output vector (residuals in this case) and replaced the columns in this vector with real residuals in the do-loop:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;use kirjasto.dax30h09v4;&lt;/P&gt;&lt;P&gt;read all var{RIC} into c;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*reading class variables, firm id's*/&lt;/P&gt;&lt;P&gt;firm=unique(c);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;res_matrix=j(2226,ncol(firm),1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do i = 1 to ncol(firm);&lt;/P&gt;&lt;P&gt;read all where(RIC=(firm&lt;I&gt;));&lt;/I&gt;&lt;/P&gt;&lt;P&gt;run preregres (volume, high, low, close);&lt;/P&gt;&lt;P&gt;run Regress;&lt;/P&gt;&lt;P&gt;res_matrix[,i]=resid;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;create kirjasto.residuals from res_matrix [colname=firm];&lt;/P&gt;&lt;P&gt;append from res_matrix;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Sep 2014 13:12:10 GMT</pubDate>
    <dc:creator>LauriN</dc:creator>
    <dc:date>2014-09-04T13:12:10Z</dc:date>
    <item>
      <title>Inputting and outputting into and from do loop on basis of name vector?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183882#M1858</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'm not quit sure how does this work so the header might be misleading or then it's indeed what I'm seeking for.&lt;/P&gt;&lt;P&gt;However, I have this regression procedure which I need to repeat on my sample of 30 firms:&lt;/P&gt;&lt;P&gt;The preregress module formulates dependent and independent variables which are then used in regress module.&lt;/P&gt;&lt;P&gt;I use "read where()" command to input firms from pooled data. Also I have to form every time a vector "resid_firmname = resid". How could I just make a vector out of the firm names and such a loop which would do this procedure firm by firm and also how to formulate such a output vector for every firm?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;proc iml;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;edit kirjasto.Dax30_hourly09;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/*394 missing values of volume, 264 for ALTG*/&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/*BAYG changed to BAYGn on 21.09.2009*/&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/*create variables for excess volume regression*/&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;start preregres (vol, high, low, close) global (x, y);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lnvol=log(vol);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lagvol=lag(lnvol, (1:50));&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;vola=high/low;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lnvola=log(vola);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lagvola=lag(lnvola, (1:10));&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;close10=lag(close, -10);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lnclose10=log(close10);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;timeorig=T(1:nrow(vol));&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;tempx=lagvol||lagvola||lnclose10;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;xtemp2=tempx[51:(nrow(vol)-10),];&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;lintrend=T(1:nrow(xtemp2));&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;constant=j((nrow(xtemp2)),1);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;x=constant||xtemp2||lintrend;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;y=lnvol[51:(nrow(vol)-10)];&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;finish;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/*list of firms:&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;adsg, altg, alvg, basf, bayg, beig, bmwg, cbkg, cong, DAIGn, DB1Gn, dbkg, dpwg, dteg, eong,&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;fmeg, freg, heig, hnkg, ifxg, lhag, ling, lxsg, mrcg, muvg, rweg, sapg, sdfg, sieg, tkag, vowg&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;*/&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;print resid_adsg resid_altg resid_alvg resid_basf resid_bayg resid_beig resid_bmwg resid_cbkg resid_cong resid_daig resid_db1g;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;read all var "volume" into volume where(RIC="DB1Gn.DE");&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;read all var "high" into high where(RIC="DB1Gn.DE");&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;read all var "close" into close where(RIC="DB1Gn.DE");&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;read all var "low" into low where(RIC="DB1Gn.DE");&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;run preregres (volume, high, low, close);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;start Regress;&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; /* begins module&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; xpxi = inv(x`*x);&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; /* inverse of X'X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; beta = xpxi * (x`*y);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* parameter estimate&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; yhat = x*beta;&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; /* predicted values&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; resid = y-yhat;&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; /* residuals&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; sse = ssq(resid);&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; /* SSE&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; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; n = nrow(x);&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; /* sample size&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; dfe = nrow(x)-ncol(x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* error DF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; mse = sse/dfe;&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; /* MSE&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; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; cssy = ssq(y-sum(y)/n);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* corrected total SS&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; rsquare = (cssy-sse)/cssy;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* RSQUARE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;/* print ,"Regression Results", sse dfe mse rsquare; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; stdb = sqrt(vecdiag(xpxi)*mse); /* std of estimates&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; t = beta/stdb;&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; /* parameter t tests&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; prob = 1-probf(t#t,1,dfe);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* p-values&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; /*print ,"Parameter Estimates",, beta stdb t prob;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp; print ,y yhat resid;*/&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;finish Regress;&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; /* ends module&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;run Regress;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;create kirjasto.residuals var {resid};&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;append;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;resid_db1g=resid;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;close kirjasto.residuals;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Sep 2014 12:38:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183882#M1858</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-09-03T12:38:40Z</dc:date>
    </item>
    <item>
      <title>Re: Inputting and outputting into and from do loop on basis of name vector?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183883#M1859</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To "loop over firms", follow the ideas in this article: &lt;A href="http://blogs.sas.com/content/iml/2012/04/16/by-group-processing-in-sasiml/" title="http://blogs.sas.com/content/iml/2012/04/16/by-group-processing-in-sasiml/"&gt; BY-group processing in SAS/IML - The DO Loop&lt;/A&gt; .&lt;/P&gt;&lt;P&gt;Outside the loop, use the SETIN and SETOUT statement to define the data sets that you are reading from and to. (For an example, see &lt;A href="http://blogs.sas.com/content/iml/2011/05/02/sequential-access-reading-one-observation-at-a-time-in-sasiml-software/" title="http://blogs.sas.com/content/iml/2011/05/02/sequential-access-reading-one-observation-at-a-time-in-sasiml-software/"&gt; Sequential access: Reading one observation at a time in SAS/IML software - The DO Loop&lt;/A&gt; )&lt;/P&gt;&lt;P&gt;Use the CREATE statement to define the variables for the output data set.&lt;/P&gt;&lt;P&gt;Then loop over the firms. Inside the loop:&lt;/P&gt;&lt;P&gt;1) READ ALL... WHERE(RIC=firm&lt;I&gt;);&lt;/I&gt;&lt;/P&gt;&lt;P&gt;2) Compute the regression model for that firm.&lt;/P&gt;&lt;P&gt;3) Write the statistics to the output data set&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Sep 2014 13:17:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183883#M1859</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2014-09-03T13:17:09Z</dc:date>
    </item>
    <item>
      <title>Re: Inputting and outputting into and from do loop on basis of name vector?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183884#M1860</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh yeas it was pretty straight forward after all. The outputting remained somewhat unclear for me but I realized another solution to the problem:&lt;/P&gt;&lt;P&gt;I initialized matrix with width = number of firms, length = length of output vector (residuals in this case) and replaced the columns in this vector with real residuals in the do-loop:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;use kirjasto.dax30h09v4;&lt;/P&gt;&lt;P&gt;read all var{RIC} into c;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*reading class variables, firm id's*/&lt;/P&gt;&lt;P&gt;firm=unique(c);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;res_matrix=j(2226,ncol(firm),1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do i = 1 to ncol(firm);&lt;/P&gt;&lt;P&gt;read all where(RIC=(firm&lt;I&gt;));&lt;/I&gt;&lt;/P&gt;&lt;P&gt;run preregres (volume, high, low, close);&lt;/P&gt;&lt;P&gt;run Regress;&lt;/P&gt;&lt;P&gt;res_matrix[,i]=resid;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;create kirjasto.residuals from res_matrix [colname=firm];&lt;/P&gt;&lt;P&gt;append from res_matrix;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Sep 2014 13:12:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Inputting-and-outputting-into-and-from-do-loop-on-basis-of-name/m-p/183884#M1860</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-09-04T13:12:10Z</dc:date>
    </item>
  </channel>
</rss>

