<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Stata Things &#187; program</title>
	<atom:link href="http://enoriver.net/index.php/tag/program/feed/" rel="self" type="application/rss+xml" />
	<link>http://enoriver.net</link>
	<description>computing for fun and profit</description>
	<lastBuildDate>Wed, 08 Feb 2012 18:09:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Define local macros in one place, use them everywhere</title>
		<link>http://enoriver.net/index.php/2010/02/18/define-local-macros-in-one-place-use-them-everywhere/</link>
		<comments>http://enoriver.net/index.php/2010/02/18/define-local-macros-in-one-place-use-them-everywhere/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 22:06:10 +0000</pubDate>
		<dc:creator>Gabi Huiber</dc:creator>
				<category><![CDATA[Stata]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[local macros]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://enoriver.net/?p=1028</guid>
		<description><![CDATA[In The Stata Journal Vol. 9, No. 3, 2009 there's a Stata tip (# 77) on re-using macros in multiple do-files, by Jeph Herrin. His solution is to define any local macros in a separate do-file, say locals.do. You can call that do-file with the include command at the top of any do-file that might [...]]]></description>
			<content:encoded><![CDATA[<p>In The Stata Journal Vol. 9, No. 3, 2009 there's a Stata tip (# 77) on re-using macros in multiple do-files, by Jeph Herrin. His solution is to define any local macros in a separate do-file, say locals.do. You can call that do-file with the <code>include</code> command at the top of any do-file that might refer to some of those macros. This is useful, as the author explains, when you want to keep all your macro definitions in one easily editable place, and make them available to whatever projects can use them without having to duplicate the definitions. This is similar to how you would <code>#include</code> header files in C or C++. </p>
<p>Unfortunately, <code>include</code> does not work well with programs. You can invoke it inside a program but <code>include</code> itself cannot be compiled, so the do-file it refers to will have to be interpreted all over again every time you call that program: see <code>help include</code> for the original reference. This negates the speed advantage that you expect when you package your Stata work into programs as opposed to simple do-files. It does not negate all the other advantages -- such as better code portability and the possibility of unit testing -- but still, speed matters. My own solution is to define locals inside an r-class program. Then other programs that need some of these locals call that program, and recover only the locals they need. Below is one example, worked first with <code>include</code> and then with my proposed alternative:<br />
<code>
<pre>
// locals.do starts here
local file_path "c:/data/my_path/"
local file_name "file_name.dta"
local my_file    "`file_path'`file_name'"
// and ends here.
</pre>
<p></code><br />
OK, now let's put these locals to work:<br />
<code>
<pre>
// work.do starts here:
include locals.do
use "`my_file'"
</pre>
<p></code><br />
Alright. This is not bad and it does the job that your locals are neatly separated from the rest of the work. If you use do-files to split a big job into smaller pieces, this is all you need. If, on the other hand, you want to chop the job into pieces smaller still, and encapsulate those pieces into programs, then this is inadequate, as explained above. </p>
<p>The workaround might look like a bit more overhead, but then that's the usual cost of writing programs instead of plain do-files. Some of us, sometimes, find that overhead acceptable:<br />
<code>
<pre>
capture prog drop defineMyLocals
program defineMyLocals, rclass

local file_path "c:/data/my_path/"
local file_name "file_name.dta"
local my_file    "`file_path'`file_name'"

local things "file_path file_name my_file"
foreach thing in `things' {
   return local `thing' ``thing''
}

end
</pre>
<p></code><br />
And now let's recover the local `my_file':<br />
<code>
<pre>
defineMyLocals
local my_file `r(my_file)'
use "`my_file'"
</pre>
<p></code><br />
That's it. Your locals.do consists of the definition of the program defineMyLocals. The overhead is obvious. First, adding new locals inside this definition requires the extra step of adding their names to the things list, so that defineMyLocals can return them. Second, using defineMyLocals is also slightly more complicated than a simple <code>include</code>, because you need to recover the locals you need explicitly, via `r()'.</p>
<p>That said, now your locals are defined inside a program, and you can move them around faster. If you're like me and you favor programs over do-files and this isn't your solution, then I'd be curious to see your preferred alternative.</p>
]]></content:encoded>
			<wfw:commentRss>http://enoriver.net/index.php/2010/02/18/define-local-macros-in-one-place-use-them-everywhere/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The trouble with automatic type conversion</title>
		<link>http://enoriver.net/index.php/2009/02/26/the-trouble-with-automatic-type-conversion/</link>
		<comments>http://enoriver.net/index.php/2009/02/26/the-trouble-with-automatic-type-conversion/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 06:32:42 +0000</pubDate>
		<dc:creator>Gabi Huiber</dc:creator>
				<category><![CDATA[Stata]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[rclass]]></category>

		<guid isPermaLink="false">http://enoriver.net/?p=582</guid>
		<description><![CDATA[Lately I have been writing a lot of modular Stata code, where bits and pieces of the job are done by separate programs, sometimes declared in different do-files (called in with do). You get programs to pass on things to each other by making them rclass. Now, r() results can be scalars as in this [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I have been writing a lot of modular Stata code, where bits and pieces of the job are done by separate programs, sometimes declared in different do-files (called in with <code>do</code>). You get programs to pass on things to each other by making them <code>rclass</code>. Now, r() results can be scalars as in <a href="http://enoriver.net/index.php/2009/01/09/gems-from-the-users-guide/">this example</a>, or locals. The latter are convenient because they can accommodate strings as easily as numbers, but they can trip you up.</p>
<p>See, Stata locals are just strings that come with a reasonable kind of automatic type conversion designed to make your life easier: if your string consists of numbers only, it will be evaluated. For example, <code>local a=1</code> and <code>local a 1</code> have the same effect: <code>display `a'</code> will return 1, the number, in either case.</p>
<p>But there is a subtle difference between an empty local with a name and a missing local. Stata, in a pinch, will identify either as a missing value, and that may work for you most of the time. But only the former can be called in a numeric expression that relies on automatic type conversion. The latter will give you a "missing name" error. Below is a simple example:<br />
<code><br />
capture prog drop myLocal<br />
prog def myLocal, rclass<br />
</code><code><br />
local a<br />
return local myresult `a'<br />
</code><code><br />
end<br />
</code><code><br />
myLocal<br />
local a `r(myresult)' // note (1): this will work fine<br />
</code><code><br />
if `a'==. {<br />
  di "local a is missing"<br />
}<br />
else {<br />
  di `a'<br />
}<br />
</code><br />
The code above will abort with the error message <code>"nothing found where name expected r(198);"</code>, but that error message won't come at the definition of <code>local a</code> commented with note (1). That definition will work as if everything were fine: it simply returns a missing value. It's when you're calling the subsequent if-condition that you run into trouble.</p>
<p>The solution is to make sure that myLocal is returning what you mean it to. If you want it to return a missing numeric value, this is the way to go:<br />
<code><br />
capture prog drop myLocal<br />
prog def myLocal, rclass<br />
</code><code><br />
local a=.<br />
return local myresult `a'<br />
</code><code><br />
end<br />
</code><code><br />
myLocal<br />
local a `r(myresult)'<br />
</code><code><br />
if `a'==. {<br />
  di "local a is missing"<br />
}<br />
else {<br />
  di `a'<br />
}<br />
</code><br />
If instead you want to return a missing string, you need to make sure that your if-condition is a string condition:<br />
<code><br />
capture prog drop myLocal<br />
prog def myLocal, rclass<br />
</code><code><br />
local a<br />
return local myresult `a'<br />
</code><code><br />
end<br />
</code><code><br />
myLocal<br />
local a `r(myresult)'<br />
</code><code><br />
if "`a'"=="" {<br />
  di "local a is missing"<br />
}<br />
else {<br />
  di `a'<br />
}<br />
</code><br />
This is not as pointless as it looks. You seldom want programs to return a missing value as a result, of course. But a missing value can sometimes be a legitimate member of the set of possible results. When you run into one, you need a way to handle it.</p>
]]></content:encoded>
			<wfw:commentRss>http://enoriver.net/index.php/2009/02/26/the-trouble-with-automatic-type-conversion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Human-readable code</title>
		<link>http://enoriver.net/index.php/2009/02/06/human-readable-code/</link>
		<comments>http://enoriver.net/index.php/2009/02/06/human-readable-code/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 02:05:07 +0000</pubDate>
		<dc:creator>Gabi Huiber</dc:creator>
				<category><![CDATA[Stata]]></category>
		<category><![CDATA[do-files]]></category>
		<category><![CDATA[encapsulation]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://enoriver.net/?p=531</guid>
		<description><![CDATA[I just made a couple of changes to this theme's style sheet. I wanted a slightly wider page in order to accommodate longer lines of code. I needed it because some code lines in my Dummy variables post ran over when rendered in IE and Opera. If you cut and pasted the code, errant end-of-line [...]]]></description>
			<content:encoded><![CDATA[<p>I just made a couple of changes to this theme's style sheet. I wanted a slightly wider page in order to accommodate longer lines of code. I needed it because some code lines in my <a href="http://enoriver.net/index.php/2009/01/19/dummy-variables/">Dummy variables</a> post ran over when rendered in IE and Opera. If you cut and pasted the code, errant end-of-line characters could have crept in. Cutting and pasting code you find here is encouraged, by the way. It's supposed to be ready to use.</p>
<p>So, OK, you can widen the page, but should you? People read comfortably text that's about four inches wide, I would guess. Computers don't care, but code is meant to be read by people. The text you're reading used to sit in a box 540 pixels wide. The current width is 600 pixels. The difference was enough to make the problem go away. It would be nice to know that it's also not big enough to harm your reading convenience.</p>
<p>If you tell me that it is, I will revert to a narrower column, and start using all sorts of tricks to make Stata code fit inside it. Easiest, of course, would be to set <code>#delimit ;</code> . Then you don't care about end-of-line characters, because Stata will ignore them. But what if you're like me and you prefer <code>#delimit cr</code>?</p>
<p>You can use local macros as placeholders for whatever would otherwise result in long lines of code, as in<br />
<code><br />
local 1 The quick brown fox<br />
local 2 jumped over the lazy dog.<br />
di "`1' `2'"<br />
</code><br />
That's not too bad. I have used this workaround before, but now I'll make it an explicit policy: I will trade width for length in my code in future entries.</p>
<p>Maybe this should be a general standard of writing code. It might encourage diligent encapsulation. You don't want very long do-files, or at least you don't want very long programs, for all sorts of good reasons. So you already do spread large projects across multiple do-files, multiple programs or both, if you're really into that sort of thing. If you also force yourself to have short lines, your code will be all the better for it. What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://enoriver.net/index.php/2009/02/06/human-readable-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gems from the User&#8217;s Guide</title>
		<link>http://enoriver.net/index.php/2009/01/09/gems-from-the-users-guide/</link>
		<comments>http://enoriver.net/index.php/2009/01/09/gems-from-the-users-guide/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 00:34:45 +0000</pubDate>
		<dc:creator>Gabi Huiber</dc:creator>
				<category><![CDATA[Stata]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[rclass]]></category>

		<guid isPermaLink="false">http://enoriver.net/?p=475</guid>
		<description><![CDATA[A little over a year into my Stata 10 license, I can see some usage patterns over the two feet's worth of Stata documentation: Data Management and Programming are pretty well worn, the rest not so much. User's Guide,  [U], has been among the least popular, which is a pity, because chapter 18, Programming Stata, [...]]]></description>
			<content:encoded><![CDATA[<p>A little over a year into my Stata 10 license, I can see some usage patterns over the two feet's worth of Stata documentation: Data Management and Programming are pretty well worn, the rest not so much. User's Guide,  [U], has been among the least popular, which is a pity, because chapter 18, Programming Stata, is supremely useful. Here's a tidbit:</p>
<p>If you write code using formally defined programs, as I suggested in my <a href="index.php?p=446">previous post</a>, then you may have already run into the problem of making your programs pass each other various results. One way is to have the programs store their results as global macros, which then are available to any subsequent programs within the same Stata instance. This is inelegant and risky, because your globals might stick around longer than you want them (OK, they won't survive shutting Stata down and restarting it, if you care to do that all the time).</p>
<p>The other way of enabling programs to use each other's results is <code>rclass</code>. Defining your program this way enables it to return <code>r()</code> results, which are then available to subsequent programs, no globals needed. An example is below:<br />
<code><br />
// my first program defines the answer<br />
capture prog drop theAnswer<br />
program define theAnswer, rclass<br />
</code><code><br />
return scalar myanswer=42<br />
</code><code><br />
end<br />
</code><code><br />
// my second program calls the first<br />
// and uses its r() result.<br />
capture prog drop theAnswerIs<br />
program define theAnswerIs<br />
</code><code><br />
theAnswer<br />
local answer=r(myanswer)<br />
di "The answer is `answer'."<br />
</code><code><br />
end<br />
</code><br />
Now call the second program in Stata:<br />
<code><br />
theAnswerIs<br />
</code><br />
Congratulations. You now have the answer to the <a href="http://en.wikipedia.org/wiki/The_Answer_to_Life,_the_Universe,_and_Everything#Answer_to_Life.2C_the_Universe.2C_and_Everything_.2842.29">Ultimate Question</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://enoriver.net/index.php/2009/01/09/gems-from-the-users-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Arguments</title>
		<link>http://enoriver.net/index.php/2008/11/26/arguments/</link>
		<comments>http://enoriver.net/index.php/2008/11/26/arguments/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 06:04:09 +0000</pubDate>
		<dc:creator>Gabi Huiber</dc:creator>
				<category><![CDATA[Stata]]></category>
		<category><![CDATA[arguments]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://enoriver.net/?p=321</guid>
		<description><![CDATA[In an older post I wrote about the program capability in Stata. One thing I didn't say and I find increasingly useful these days is that you can pass arguments to programs. Packaging a set of commands inside a program, to be read once and then invoked as many times as they are needed, is [...]]]></description>
			<content:encoded><![CDATA[<p>In an <a href="http://enoriver.net/index.php/2008/09/30/soup-up-your-do-files-codeprogramcode/">older post</a> I wrote about the <code>program</code> capability in Stata. One thing I didn't say and I find increasingly useful these days is that you can pass arguments to programs.</p>
<p>Packaging a set of commands inside a program, to be read once and then invoked as many times as they are needed, is nice enough. But what if you need to make those instructions apply to different variables in different instances?</p>
<p>For example, I have a set of parameter estimates for a survival model. I use them to calculate the lambda part of the hazard function under various scenarios for one variable of interest. You can do this immediately after estimating your hazard model, of course, using <code>predict</code> with appropriate modifiers, but you don't want to re-estimate the model every time you need to use the parameters. Besides, you may have to use one data set for estimating the model (say historical data) and other data sets (say current data) for making the predictions of interest.</p>
<p>So let's say that you have your parameters saved in a matrix, and declare a program, called e.g. getLambda, to pair them with the corresponding regressors as many times as you need to. But every time you call getLambda, instead of the first regressor you need to use a variable that is some sort of transformation of it, and you saved that variable with a different name to make it absolutely clear that this is not the actual regressor. It would be nice if you could pass that variable as an argument to getLambda, in effect telling Stata "I want to calculate lambda with this particular variable at the front of the regressor list this time".</p>
<p>The program getLambda might look something like this:</p>
<p><code><br />
capture prog drop getLambda<br />
prog def getLambda</code></p>
<p><code> </code></p>
<p><code>local thiscase `1'<br />
local myregressors "`thiscase' var1 var2 var3 1"<br />
local regressorcount: list sizeof myregressors<br />
</code><code><br />
forvalues i=1/`regressorcount' {<br />
   local thisreg: word `i' of `myregressors'<br />
   gen param_`i'=beta[`i',1]*`thisreg'<br />
}<br />
egen lambda_`thiscase'=rsum(param_1-param_`regressorcount')<br />
drop p_*<br />
</code><code><br />
end<br />
</code><br />
I forced the last element of `myregressors' to be 1 because I am assuming that the constant is the last parameter saved in your parameter matrix. Notice the local `1' in the first line after the program definition. It is Stata's name for the first argument of your program. In our case, that argument is simply the name of the variable that you want in the first position in the regressor list. So the call to getLambda would be</p>
<p><code><br />
getLambda foo<br />
</code><br />
This would make Stata calculate the lambda with the variable foo at the front of the regressor list. If later you want the variable bar there instead, you just call<br />
<code><br />
getLambda bar<br />
</code><br />
Arguments can be strings, numbers, whatever. As long as your function is strictly for internal use and you know what you're using it for, you don't need to program the fancy stuff -- like error codes or help files. That, at least, is what I found. When I get to the point where I need those extras, I'll learn how to do them and then blog about it here.</p>
<p>You may have noticed the apparently superfluous use of the <code>list sizeof</code> extended macro function. After all, it's plain enough that the word count of the "myregressors" local is 4. Well, sometimes you have more regressors than that. Do you care to count them by hand? I don't.</p>
<p>There are all sorts of very good reasons for leaving to Stata as much of the grunt work as possible. The most obvious of them is that code written this way is more portable across different projects. But the honest truth is that I really like those list functions. I've been finding all sorts of uses for them lately. I am going to have a blog post dedicated to them sometime soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://enoriver.net/index.php/2008/11/26/arguments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soup up your do-files: program</title>
		<link>http://enoriver.net/index.php/2008/09/30/soup-up-your-do-files-codeprogramcode/</link>
		<comments>http://enoriver.net/index.php/2008/09/30/soup-up-your-do-files-codeprogramcode/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 16:25:51 +0000</pubDate>
		<dc:creator>Gabi Huiber</dc:creator>
				<category><![CDATA[Stata]]></category>
		<category><![CDATA[do-files]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://enoriver.net/?p=157</guid>
		<description><![CDATA[Most Stata commands are programs written in Stata's ado-file language; they are saved as .ado files that you are free to browse. For example, on my Windows XP machine the guts of the simple describe command are here: C:\Program Files\Stata10\ado\base\d\describe.ado. Stata will let you write your own ado-files and treat them as first-class citizens of [...]]]></description>
			<content:encoded><![CDATA[<p>Most Stata commands are programs written in Stata's ado-file language; they are saved as .ado files that you are free to browse. For example, on my Windows XP machine the guts of the simple <code>describe</code> command are here: C:\Program Files\Stata10\ado\base\d\describe.ado.</p>
<p>Stata will let you write your own ado-files and treat them as first-class citizens of your Stata install. But: (1) Stata is a very accomplished piece of software right out of the box, (2) it is updated scrupulously and as often as needed and (3) there are already thousands of user-created commands tried and true and ready to <code>net install</code>. So, it rarely warrants that sort of effort. Though this general assurance might not deter you from giving it a try, chances are that you're not an ado-file writer. You use do-files instead.</p>
<p>Do-files can get unwieldy with complicated projects. Yet the more complicated the job, the more useful your do-files are, because they organize your work and maintain your paper-trail. There is no reproducible research without do-files. This is so important that the fact that you can work with Stata interactively is sometimes argued to be too much of a good thing.</p>
<p>So you need do-files and you don't want them to be too big. One way to make that compromise is to use hierarchical do-files. A very short master do-file calls the others, each of which is just a list of commands that could have just as well been all in one file. Your master do-file might look something like this:</p>
<p><code>clear<br />
set more off<br />
pause on<br />
</code><code><br />
cd c:/data/myproject<br />
do collect_data.do   // insheets data from source text files<br />
do estimate_model.do // runs my clever ML routine<br />
do write_report.do   // that's right, from Stata to LaTeX<br />
</code></p>
<p>This would do the job, and inline comments as shown above can add intuitive appeal beyond what you get from simply using good do-file names. But if you need to run a do-file inside a loop, there is a certain cost to reading every single line of Stata code every time it needs to be executed. It would be nice if you could read it in once, and invoke it as needed. That's the use of <code>program</code>.</p>
<p>Usually, do-files are just text files full of Stata commands. Stata reads, interprets and executes these commands one by one. But any do-file can be turned into a program with three extra lines as follows:</p>
<p><code>capture program drop myProgram // this is optional, but you want it<br />
program define myProgram<br />
</code><code><br />
[...] // your old do-file goes here<br />
</code><code><br />
end<br />
</code></p>
<p>This doesn't mean that all do-files should get the <code>program</code> treatment. But suppose that you have a do-file called clean_my_data.do and you use it for preparing 20 source files in the same way -- generate new variables, turn dates from yy/mm/dd into Stata's elapsed time format, etc. Without these three extra lines, your master do-file would call it like so:</p>
<p><code>forvalues i=1/20 {<br />
drop _all<br />
use mysourcefile`i'<br />
do clean_my_data.do<br />
}<br />
</code></p>
<p>That's fine, but it will be a bit slow. Every line in clean_my_data.do is read afresh in every cycle, output to screen, then executed, its result is output to screen, and so on. Declaring this do-file as a <code>program</code> allows Stata to read it once, keep it in mind, and execute it as many times as needed. You will, of course, choose some descriptive name for your program, say cleanMyData. Your master do-file will look like this:</p>
<p><code>do clean_my_data.do // Stata reads and memorizes your do-file<br />
</code><code><br />
forvalues i=1/20 {<br />
drop _all<br />
use mysourcefile`i'<br />
cleanMyData                       // Stata executes the commands inside your do-file<br />
}<br />
</code></p>
<p>There is another advantage to declaring do-files as programs: clean logs. If you have Stata read the commands first and run them all at the same time from memory, then your logs will only contain the output of those commands, not the commands themselves. That will keep them small and readable.</p>
<p>The drawback is that programs are sticky: Stata memorizes them until it is either explicitly told to forget them, or is shut down. In the same instance of Stata you might possibly run two very different do-files that call two different programs declared at different times in the past under the same name. If in this instance of Stata you only read in one of them, it will be executed twice: once in its proper context, and another time in a totally wrong one. Stata will think that that's what you mean to do.</p>
<p>The <code>capture prog drop myProgram</code> line might help a bit. Obviously you can also <code>capture prog drop _all</code>, with the caveat that this might drop programs that you don't want dropped. Use a blend of the two variants as circumstances warrant. Stata can live with either. The best thing to do, of course, is to use very descriptive names for programs. They usually have the side effect of being specific, which will avoid such ambiguity in the first place.</p>
]]></content:encoded>
			<wfw:commentRss>http://enoriver.net/index.php/2008/09/30/soup-up-your-do-files-codeprogramcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

