<?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: Is it possible to redefine subroutines in a subroutine? in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189704#M1933</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your subroutine "outer" needs to declare newp in a global clause. Otherwise, when it sets newp it is working with a local variable only, and the "global" newp is not initialized. That is causing the first error in your log.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 23 Jul 2014 13:28:19 GMT</pubDate>
    <dc:creator>Hutch_sas</dc:creator>
    <dc:date>2014-07-23T13:28:19Z</dc:date>
    <item>
      <title>Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189698#M1927</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have this kind of external subroutine which uses original input vector p to make p-wl overlapping rolling windows of length wl. For each of those windows defined as "newp" I would like to use my subroutines. So they should occur after line " newp=p&lt;W&gt;;" and p and m parameters in the subroutines should be newp and m1 respectfully as defined in this new subroutine "outer". Is it possible to for example make a module that compiles these subroutines and redefines their input parameters and then call this module in this "outer" subroutine and run this "mincvf" function? Logic of compiling module illustrated at the end:&lt;/W&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start outer(p,e,pi,m); m=nrow(p);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;wl=38;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&lt;STRONG&gt;window length&lt;/STRONG&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;m1=m-wl;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&lt;STRONG&gt;last window begins at m-wl&lt;/STRONG&gt;/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;newp=j(1,m1);&lt;/P&gt;&lt;P&gt;hyi=j(1,m1);&lt;/P&gt;&lt;P&gt;do x=1 to m1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;we=x+wl-1; /&lt;STRONG&gt;window end&lt;/STRONG&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;w=T(x:we);/&lt;STRONG&gt;window&lt;/STRONG&gt;/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;newp=p&lt;W&gt;;&lt;/W&gt;&lt;/P&gt;&lt;P&gt;run comp (newp,m1,pi,e);&lt;/P&gt;&lt;P&gt;hyi&lt;X&gt;=mincvf(CVF1);&lt;/X&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;return (hyi);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The not-working compile module with the subroutines:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start comp(p,m,pi,e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start Kmod(x,h,pi,e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; k=1/(h#(2#pi)##(1/2))#e##(-x##2/(2#h##2));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (k);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start mhatx2(m,p,h,pi,e);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t5=j(m,1);&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; /&lt;STRONG&gt;mhatx omit x=t&lt;/STRONG&gt;/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do x=1 to nrow(p);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=T(1:m);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp1=x-i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ue=Kmod(temp1,h,pi,e)#p&lt;I&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; le=Kmod(temp1,h,pi,e);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t5&lt;X&gt;=(sum(ue)-ue&lt;X&gt;)/(sum(le)-le&lt;X&gt;);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (t5);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; finish;&lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start CVF1(h) global(p,pi,e,m);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cv3=j(m,1);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cv3=1/nrow(p)#sum((p-mhatx2(m,p,h,pi,e))##2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(cv3);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start mincvf(CVF1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; optn={0,0};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; init=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call nlpqn(rc, res,"CVF1",init);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (res);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; finish;&lt;BR /&gt;finish;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2014 11:23:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189698#M1927</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-22T11:23:17Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189699#M1928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In IML all subroutine definitions are global, even if you define then inside another subroutine. In your example, could you not accomplish the same goal by using a global clause in mhatx2 and Kmod? That is, use&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start mhatx2(h) global(p,m,pi,e);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start Kmod(x,h) global(pi,e);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and manipulate p in your "outer" routine. maybe use something like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start outer(p_input) global(p,e,pi,m); m=nrow(p_input); &lt;/P&gt;&lt;P&gt; [your existing code]&lt;/P&gt;&lt;P&gt;p = p_input(w);&lt;/P&gt;&lt;P&gt;hyi&lt;X&gt;=mincvf(CVF1);&lt;/X&gt;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2014 14:30:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189699#M1928</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-22T14:30:30Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189700#M1929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oops, I see that you will also have to manipulate m within the loop, but you get the idea?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2014 14:36:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189700#M1929</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-22T14:36:34Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189701#M1930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There were some mistakes like the subroutines were using m=nrow(p) instead of nrow(newp) as they now should and altogether the approach was somewhat complicated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is what I did now, so trying to define the subroutines already outside to have those input values which "outer" function would define i.e. newp and nrow(newp), latter denoted now as m2. I also had such 2 lines to test the subroutines:&lt;/P&gt;&lt;P&gt;test1=T(1:38);&lt;/P&gt;&lt;P&gt;newp=p[test1];&lt;/P&gt;&lt;P&gt;and got the h for this first window as intended. When I ran the whole programm leaving those test value rows stay there as such, I actually got that m-wl times "NOTE: ABSGCONV convergence criterion satisfied." to my log. But ttt was m-wl times the constant h for the 1st window only. Strange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I paste at the end the error message I get running the program as it's written below, doesn't include these 2 test lines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EDIT kirjasto.pb var "p";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;read all var "p" into p;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;m=nrow(p);&lt;/P&gt;&lt;P&gt;m2=38;&lt;/P&gt;&lt;P&gt;pi=constant("pi");&lt;/P&gt;&lt;P&gt;e=constant("e");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start Kmod(x,h,pi,e);&lt;/P&gt;&lt;P&gt;k=1/(h#(2#pi)##(1/2))#e##(-x##2/(2#h##2));&lt;/P&gt;&lt;P&gt;return (k);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start mhatx2(m2,newp,h,pi,e);&lt;/P&gt;&lt;P&gt;t5=j(m2,1);&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; /*mhatx omit x=t*/&lt;/P&gt;&lt;P&gt;do x=1 to m2;&lt;/P&gt;&lt;P&gt;i=T(1:m2);&lt;/P&gt;&lt;P&gt;temp1=x-i;&lt;/P&gt;&lt;P&gt;ue=Kmod(temp1,h,pi,e)#newp&lt;I&gt;;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;le=Kmod(temp1,h,pi,e);&lt;/P&gt;&lt;P&gt;t5&lt;X&gt;=(sum(ue)-ue&lt;X&gt;)/(sum(le)-le&lt;X&gt;);&lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;return (t5);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Start CVF1(h) global(newp,pi,e,m2);&lt;/P&gt;&lt;P&gt;cv3=j(m2,1);&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;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;cv3=1/m2#sum((newp-mhatx2(m2,newp,h,pi,e))##2);&lt;/P&gt;&lt;P&gt;return(cv3);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start mincvf(CVF1);&lt;/P&gt;&lt;P&gt;optn={0,0};&lt;/P&gt;&lt;P&gt;init=1;&lt;/P&gt;&lt;P&gt;call nlpqn(rc, res,"CVF1",init);&lt;/P&gt;&lt;P&gt;return (res);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start outer(p,m) global(;&lt;/P&gt;&lt;P&gt;wl=38;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*window length*/&lt;/P&gt;&lt;P&gt;m1=m-wl;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*last window begins at m-wl*/&lt;/P&gt;&lt;P&gt;newp=j(wl,1);&lt;/P&gt;&lt;P&gt;hyi=j(m1,1);&lt;/P&gt;&lt;P&gt;do x=1 to m1;&lt;/P&gt;&lt;P&gt;we=x+wl-1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*window end*/&lt;/P&gt;&lt;P&gt;w=T(x:we);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*window*/&lt;/P&gt;&lt;P&gt;newp=p&lt;W&gt;;&lt;/W&gt;&lt;/P&gt;&lt;P&gt;hyi&lt;X&gt;=mincvf(CVF1);&lt;/X&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;return (hyi);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;wl=38;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*window length*/&lt;/P&gt;&lt;P&gt;m1=m-wl;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*last window begins at m-wl*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ttt=j(m1,1);&lt;/P&gt;&lt;P&gt;ttt=outer(p,m);&lt;/P&gt;&lt;P&gt;print ttt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;370&amp;nbsp; proc iml;&lt;/P&gt;&lt;P&gt;NOTE: IML Ready&lt;/P&gt;&lt;P&gt;371&lt;/P&gt;&lt;P&gt;372&amp;nbsp; EDIT kirjasto.basfraaka var "open";&lt;/P&gt;&lt;P&gt;373&lt;/P&gt;&lt;P&gt;374&amp;nbsp; read all var "open" into p;&lt;/P&gt;&lt;P&gt;375&lt;/P&gt;&lt;P&gt;376&lt;/P&gt;&lt;P&gt;377&amp;nbsp; m=nrow(p);&lt;/P&gt;&lt;P&gt;378&amp;nbsp; m2=38;&lt;/P&gt;&lt;P&gt;379&amp;nbsp; pi=constant("pi");&lt;/P&gt;&lt;P&gt;380&amp;nbsp; e=constant("e");&lt;/P&gt;&lt;P&gt;381&lt;/P&gt;&lt;P&gt;382&lt;/P&gt;&lt;P&gt;383&amp;nbsp; start Kmod(x,h,pi,e);&lt;/P&gt;&lt;P&gt;384&amp;nbsp; k=1/(h#(2#pi)##(1/2))#e##(-x##2/(2#h##2));&lt;/P&gt;&lt;P&gt;385&amp;nbsp; return (k);&lt;/P&gt;&lt;P&gt;386&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;NOTE: Module KMOD defined.&lt;/P&gt;&lt;P&gt;387&lt;/P&gt;&lt;P&gt;388&lt;/P&gt;&lt;P&gt;389&amp;nbsp; start mhatx2(m2,newp,h,pi,e);&lt;/P&gt;&lt;P&gt;390&amp;nbsp; t5=j(m2,1);&lt;/P&gt;&lt;P&gt;390!&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; /*mhatx omit x=t*/&lt;/P&gt;&lt;P&gt;391&amp;nbsp; do x=1 to m2;&lt;/P&gt;&lt;P&gt;392&amp;nbsp; i=T(1:m2);&lt;/P&gt;&lt;P&gt;393&amp;nbsp; temp1=x-i;&lt;/P&gt;&lt;P&gt;394&amp;nbsp; ue=Kmod(temp1,h,pi,e)#newp&lt;I&gt;;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;395&amp;nbsp; le=Kmod(temp1,h,pi,e);&lt;/P&gt;&lt;P&gt;396&amp;nbsp; t5&lt;X&gt;=(sum(ue)-ue&lt;X&gt;)/(sum(le)-le&lt;X&gt;);&lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/P&gt;&lt;P&gt;397&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;398&amp;nbsp; return (t5);&lt;/P&gt;&lt;P&gt;399&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;NOTE: Module MHATX2 defined.&lt;/P&gt;&lt;P&gt;400&lt;/P&gt;&lt;P&gt;401&amp;nbsp; Start CVF1(h) global(newp,pi,e,m2);&lt;/P&gt;&lt;P&gt;402&amp;nbsp; cv3=j(m2,1);&lt;/P&gt;&lt;P&gt;403&amp;nbsp; cv3=1/m2#sum((newp-mhatx2(m2,newp,h,pi,e))##2);&lt;/P&gt;&lt;P&gt;404&amp;nbsp; return(cv3);&lt;/P&gt;&lt;P&gt;405&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;NOTE: Module CVF1 defined.&lt;/P&gt;&lt;P&gt;406&lt;/P&gt;&lt;P&gt;407&lt;/P&gt;&lt;P&gt;408&amp;nbsp; start mincvf(CVF1);&lt;/P&gt;&lt;P&gt;409&amp;nbsp; optn={0,0};&lt;/P&gt;&lt;P&gt;410&amp;nbsp; init=1;&lt;/P&gt;&lt;P&gt;411&amp;nbsp; call nlpqn(rc, res,"CVF1",init);&lt;/P&gt;&lt;P&gt;412&amp;nbsp; return (res);&lt;/P&gt;&lt;P&gt;413&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;NOTE: Module MINCVF defined.&lt;/P&gt;&lt;P&gt;414&lt;/P&gt;&lt;P&gt;415&lt;/P&gt;&lt;P&gt;416&amp;nbsp; start outer(p,m);&lt;/P&gt;&lt;P&gt;417&amp;nbsp; wl=38;&lt;/P&gt;&lt;P&gt;417!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*window length*/&lt;/P&gt;&lt;P&gt;418&amp;nbsp; m1=m-wl;&lt;/P&gt;&lt;P&gt;418!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*last window begins at m-wl*/&lt;/P&gt;&lt;P&gt;419&amp;nbsp; newp=j(wl,1);&lt;/P&gt;&lt;P&gt;420&amp;nbsp; hyi=j(m1,1);&lt;/P&gt;&lt;P&gt;421&amp;nbsp; do x=1 to m1;&lt;/P&gt;&lt;P&gt;422&amp;nbsp; we=x+wl-1;&lt;/P&gt;&lt;P&gt;422!&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; /*window end*/&lt;/P&gt;&lt;P&gt;423&amp;nbsp; w=T(x:we);&lt;/P&gt;&lt;P&gt;423!&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; /*window*/&lt;/P&gt;&lt;P&gt;424&amp;nbsp; newp=p&lt;W&gt;;&lt;/W&gt;&lt;/P&gt;&lt;P&gt;425&amp;nbsp; hyi&lt;X&gt;=mincvf(CVF1);&lt;/X&gt;&lt;/P&gt;&lt;P&gt;426&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;427&amp;nbsp; return (hyi);&lt;/P&gt;&lt;P&gt;428&amp;nbsp; finish;&lt;/P&gt;&lt;P&gt;NOTE: Module OUTER defined.&lt;/P&gt;&lt;P&gt;429&lt;/P&gt;&lt;P&gt;430&lt;/P&gt;&lt;P&gt;431&amp;nbsp; wl=38;&lt;/P&gt;&lt;P&gt;431!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*window length*/&lt;/P&gt;&lt;P&gt;432&amp;nbsp; m1=m-wl;&lt;/P&gt;&lt;P&gt;432!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*last window begins at m-wl*/&lt;/P&gt;&lt;P&gt;433&lt;/P&gt;&lt;P&gt;434&amp;nbsp; ttt=j(m1,1);&lt;/P&gt;&lt;P&gt;435&amp;nbsp; ttt=outer(p,m);&lt;/P&gt;&lt;P&gt;ERROR: (execution) Matrix has not been set to a value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;operation : [ at line 394 column 27&lt;/P&gt;&lt;P&gt;operands&amp;nbsp; : newp, i&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;newp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (type ?, size 0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 38 rows&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;statement : START at line 383 column 1&lt;/P&gt;&lt;P&gt;traceback : module MHATX2 at line 383 column 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; module CVF1 at line 403 column 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; module MINCVF at line 408 column 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; module OUTER at line 425 column 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ERROR: (execution) Matrix has not been set to a value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;operation : NLPQN at line 411 column 1&lt;/P&gt;&lt;P&gt;operands&amp;nbsp; : *LIT1021, init&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*LIT1021&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (character, size 4)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CVF1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;init&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;statement : CALL at line 411 column 1&lt;/P&gt;&lt;P&gt;traceback : module CVF1 at line 411 column 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; module MINCVF at line 408 column 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; module OUTER at line 425 column 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;436&amp;nbsp; print ttt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ERROR:&amp;nbsp; An exception has been encountered.&lt;/P&gt;&lt;P&gt;Please contact technical support and provide them with the following traceback information:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The SAS task name is [IML]&lt;/P&gt;&lt;P&gt;ERROR:&amp;nbsp; Write Access Violation IML&lt;/P&gt;&lt;P&gt;Exception occurred at (01C89811)&lt;/P&gt;&lt;P&gt;Task Traceback&lt;/P&gt;&lt;P&gt;Address&amp;nbsp;&amp;nbsp; Frame&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (DBGHELP API Version 4.0 rev 5)&lt;/P&gt;&lt;P&gt;0000000001C89811&amp;nbsp; 000000002403A880&amp;nbsp; tkmk:tkBoot+0x17AE1&lt;/P&gt;&lt;P&gt;0000000001C877BB&amp;nbsp; 000000002403A8E0&amp;nbsp; tkmk:tkBoot+0x15A8B&lt;/P&gt;&lt;P&gt;0000000002F65527&amp;nbsp; 000000002403A8E8&amp;nbsp; sashost:Main+0x1E097&lt;/P&gt;&lt;P&gt;0000000004014B05&amp;nbsp; 000000002403A978&amp;nbsp; saswob:tkvercn1+0x3AC5&lt;/P&gt;&lt;P&gt;00000000079CB054&amp;nbsp; 000000002403A9E8&amp;nbsp; saswobc:tkvercn1+0xA014&lt;/P&gt;&lt;P&gt;000000000401C748&amp;nbsp; 000000002403AC90&amp;nbsp; saswob:tkvercn1+0xB708&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403AC98&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005AF994D&amp;nbsp; 000000002403B490&amp;nbsp; sasods:tkvercn1+0xF890D&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403B4D0&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005A39BA7&amp;nbsp; 000000002403B5C0&amp;nbsp; sasods:tkvercn1+0x38B67&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403B600&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005AF9A82&amp;nbsp; 000000002403BDC0&amp;nbsp; sasods:tkvercn1+0xF8A42&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403BE00&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005AF36FF&amp;nbsp; 000000002403C0B0&amp;nbsp; sasods:tkvercn1+0xF26BF&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403C0F0&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005AF8378&amp;nbsp; 000000002403C380&amp;nbsp; sasods:tkvercn1+0xF7338&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403C3C0&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005AC0678&amp;nbsp; 000000002403CAF0&amp;nbsp; sasods:tkvercn1+0xBF638&lt;/P&gt;&lt;P&gt;0000000005ABEDD0&amp;nbsp; 000000002403CC80&amp;nbsp; sasods:tkvercn1+0xBDD90&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403CCC0&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005A70257&amp;nbsp; 000000002403D380&amp;nbsp; sasods:tkvercn1+0x6F217&lt;/P&gt;&lt;P&gt;0000000005BD4DCA&amp;nbsp; 000000002403D3C0&amp;nbsp; sasods:tkvercn1+0x1D3D8A&lt;/P&gt;&lt;P&gt;0000000005AA7C04&amp;nbsp; 000000002403DA30&amp;nbsp; sasods:tkvercn1+0xA6BC4&lt;/P&gt;&lt;P&gt;0000000023E938FA&amp;nbsp; 000000002403DA38&amp;nbsp; sasiml:tkvercn1+0x628BA&lt;/P&gt;&lt;P&gt;0000000023E40DB0&amp;nbsp; 000000002403E1B0&amp;nbsp; sasiml:tkvercn1+0xFD70&lt;/P&gt;&lt;P&gt;0000000023E3F8BD&amp;nbsp; 000000002403F2A0&amp;nbsp; sasiml:tkvercn1+0xE87D&lt;/P&gt;&lt;P&gt;0000000023E3DE77&amp;nbsp; 000000002403F4F0&amp;nbsp; sasiml:tkvercn1+0xCE37&lt;/P&gt;&lt;P&gt;0000000023E33587&amp;nbsp; 000000002403FB90&amp;nbsp; sasiml:tkvercn1+0x2547&lt;/P&gt;&lt;P&gt;0000000023E312F1&amp;nbsp; 000000002403FBF0&amp;nbsp; sasiml:tkvercn1+0x2B1&lt;/P&gt;&lt;P&gt;0000000002F5833B&amp;nbsp; 000000002403FF20&amp;nbsp; sashost:Main+0x10EAB&lt;/P&gt;&lt;P&gt;0000000002F5DF7D&amp;nbsp; 000000002403FF50&amp;nbsp; sashost:Main+0x16AED&lt;/P&gt;&lt;P&gt;00000000772859ED&amp;nbsp; 000000002403FF58&amp;nbsp; kernel32:BaseThreadInitThunk+0xD&lt;/P&gt;&lt;P&gt;00000000773BC541&amp;nbsp; 000000002403FF88&amp;nbsp; ntdll:RtlUserThreadStart+0x21&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;&lt;P&gt;NOTE: PROCEDURE IML used (Total process time):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.09 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.07 seconds&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 11:27:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189701#M1930</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-23T11:27:40Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189702#M1931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'd like to run your program, but you did not include the data. Can you either attach the kirjasto.basfraaka file or define the 'p' vector in the program?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 12:31:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189702#M1931</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2014-07-23T12:31:27Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189703#M1932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sure, now there should be data attached!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 12:39:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189703#M1932</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-23T12:39:16Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189704#M1933</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your subroutine "outer" needs to declare newp in a global clause. Otherwise, when it sets newp it is working with a local variable only, and the "global" newp is not initialized. That is causing the first error in your log.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 13:28:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189704#M1933</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-23T13:28:19Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189705#M1934</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh I see, how do I actually do that?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 13:45:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189705#M1934</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-23T13:45:58Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189706#M1935</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;start outer(p,m) global(newp);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 14:50:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189706#M1935</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-23T14:50:55Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189707#M1936</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh it works "that way" also, good to know! Thanks. Now it's producing at least something. The program also gives now such a warning, few log-fulls of them. Seems to refer to mhatx2 subroutine and to (sum(le)-le&lt;X&gt;) but it shouldn't actually be zero at any point. Kmod doesn't go to zero at any input x-i. &lt;/X&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start mhatx2(m2,newp,h,pi,e);&lt;/P&gt;&lt;P&gt;t5=j(m2,1);&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; /*mhatx omit x=t*/&lt;/P&gt;&lt;P&gt;do x=1 to m2;&lt;/P&gt;&lt;P&gt;i=T(1:m2);&lt;/P&gt;&lt;P&gt;temp1=x-i;&lt;/P&gt;&lt;P&gt;ue=Kmod(temp1,h,pi,e)#newp&lt;I&gt;;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;le=Kmod(temp1,h,pi,e);&lt;/P&gt;&lt;P&gt;t5&lt;X&gt;=(sum(ue)-ue&lt;X&gt;)/(sum(le)-le&lt;X&gt;);&lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;return (t5);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: Division by zero, result set to missing value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; operation : / at line 463 column 22&lt;/P&gt;&lt;P&gt; operands&amp;nbsp; : _TEM1003, _TEM1006&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_TEM1003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&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;&lt;/P&gt;&lt;P&gt;_TEM1006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; statement : ASSIGN at line 463 column 1&lt;/P&gt;&lt;P&gt; traceback : module MHATX2 at line 463 column 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; module CVF1 at line 470 column 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; module MINCVF at line 475 column 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; module OUTER at line 492 column 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: Division by zero, result set to missing value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; count&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : number of occurrences is 2&lt;/P&gt;&lt;P&gt; operation : / at line 463 column 22&lt;/P&gt;&lt;P&gt; operands&amp;nbsp; : _TEM1003, _TEM1006&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_TEM1003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&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;&lt;/P&gt;&lt;P&gt;_TEM1006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; statement : ASSIGN at line 463 column 1&lt;/P&gt;&lt;P&gt; traceback : module MHATX2 at line 463 column 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; module CVF1 at line 470 column 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; module MINCVF at line 475 column 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; module OUTER at line 492 column 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: Division by zero, result set to missing value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; operation : / at line 463 column 22&lt;/P&gt;&lt;P&gt; operands&amp;nbsp; : _TEM1003, _TEM1006&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_TEM1003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&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;&lt;/P&gt;&lt;P&gt;_TEM1006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; statement : ASSIGN at line 463 column 1&lt;/P&gt;&lt;P&gt; traceback : module MHATX2 at line 463 column 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; module CVF1 at line 470 column 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; module MINCVF at line 475 column 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; module OUTER at line 492 column 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: Division by zero, result set to missing value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; count&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : number of occurrences is 2&lt;/P&gt;&lt;P&gt; operation : / at line 463 column 22&lt;/P&gt;&lt;P&gt; operands&amp;nbsp; : _TEM1003, _TEM1006&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_TEM1003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&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;&lt;/P&gt;&lt;P&gt;_TEM1006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 row&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (numeric)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; statement : ASSIGN at line 463 column 1&lt;/P&gt;&lt;P&gt; traceback : module MHATX2 at line 463 column 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; module CVF1 at line 470 column 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; module MINCVF at line 475 column 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; module OUTER at line 492 column 1&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 15:17:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189707#M1936</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-23T15:17:06Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189708#M1937</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;the warning appears to be saying that the value of (sum(le)-le&lt;X&gt;) is 0. This could be due to loss&lt;/X&gt;&lt;/P&gt;&lt;P&gt;of precision if le&lt;X&gt; &amp;gt;&amp;gt; le&lt;I&gt;, i != x. I recommend you add some conditional print statements, like&lt;/I&gt;&lt;/X&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if (sum(le) - le&lt;X&gt;) = 0 then do;&lt;/X&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; print temp1, x, i, ue, le;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt; in front of the statement: t5&lt;X&gt;=(sum(ue)-ue&lt;X&gt;)/(sum(le)-le&lt;X&gt;); &lt;/X&gt;&lt;/X&gt;&lt;/X&gt;&lt;/P&gt;&lt;P&gt;to see what is going on.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jul 2014 19:55:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189708#M1937</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-23T19:55:16Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189709#M1938</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hmm interesting. x takes normally values between 1 and 38 and i is also 1 to 38 and thereby temp1 takes values between -37 and 38.. Anyway then the problem apparently is in minimizing function because if h approximates 0, then Kmod does so also. Have to apply restriction to it. How might I limit the desirable solutions?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jul 2014 11:54:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189709#M1938</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-24T11:54:21Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189710#M1939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You could specify a lower bound or linear constraint, see in the IML doc under Nonlinear Optimization Examples-&amp;gt;Details-&amp;gt;Parameter Constraints&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jul 2014 20:22:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189710#M1939</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-24T20:22:38Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189711#M1940</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So because h=0.4, "le" is some 0.08 and decreases steeply going lower in h, I use:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;conh={0.4 . .,. . .,. . .};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start mincvf(CVF1);&lt;/P&gt;&lt;P&gt;optn={0,0};&lt;/P&gt;&lt;P&gt;init=1;&lt;/P&gt;&lt;P&gt;call nlpqn(rc, res,"CVF1",init) blc="conh";&lt;/P&gt;&lt;P&gt;return (res);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is it missing something? The divided by zero error keeps happening and "outer" produces values under 0.4 still which it shouldn't.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jul 2014 09:51:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189711#M1940</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-25T09:51:42Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189712#M1941</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The optimization method should only be generating feasible points in the search. It looks like you are setting conh before you define mincvf(); your statement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;conh={0.4 . .,. . .,. . .};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;should come AFTER the"start mincvf(CVF1);" statement.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jul 2014 15:43:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189712#M1941</guid>
      <dc:creator>Hutch_sas</dc:creator>
      <dc:date>2014-07-25T15:43:54Z</dc:date>
    </item>
    <item>
      <title>Re: Is it possible to redefine subroutines in a subroutine?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189713#M1942</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This way it works, had to put that option and constrain vector both into the input parentheses:&lt;/P&gt;&lt;P&gt;Now I get no division by 0 warning. The previously miss-specified-due-loss-of-precision point's are now not specified at all and the value is substituted by 0.14 but the error isn't likely big.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start mincvf(CVF1);&lt;/P&gt;&lt;P&gt;con={0.14 . .,. . .,. . .};&lt;/P&gt;&lt;P&gt;optn={0,0};&lt;/P&gt;&lt;P&gt;init=1;&lt;/P&gt;&lt;P&gt;call nlpqn(rc, res,"CVF1",init,optn,con);&lt;/P&gt;&lt;P&gt;return (res);&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 27 Jul 2014 12:40:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Is-it-possible-to-redefine-subroutines-in-a-subroutine/m-p/189713#M1942</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-07-27T12:40:57Z</dc:date>
    </item>
  </channel>
</rss>

