> I decided to create a help file of all Stata return codes so that one
> could search the text directly. [...]
Great idea!
[...]
> However, I can't figure out how to do that from the command line other
> than doing something like: -di "{help returncodes##601}"- and clicking
> the hyperlink. If anyone could enlighten me... I may create an index
> at the top in some future iteration.
The syntax would be
. help returncodes, marker(601)
but that does not work because marker() expects a proper Stata name,
i.e. something that is "1 to 32 characters long and must start with
a-z, A-Z, or _, and the remaining characters may be a-z, A-Z, _, or
0-9."
In my opinion, this is a bug that should be fixed by StataCorp.
ben
On Sat, Jan 10, 2009 at 3:52 AM, David Elliott <[email protected]> wrote:
> This will probably only be of interest to ado file writers wanting to
> reference return codes following official Stata values when doing
> error checking in routines.
>
> It is easy to find an explanation of a return code because the code
> displayed in the results window is hyperlinked to the relevant help
> file. However, the reverse is not true. One often has to -hsearch
> "words I'd expect to be in the error I'm trapping"- and then sort
> through a long list to find the relevant return code.
>
> I decided to create a help file of all Stata return codes so that one
> could search the text directly. Once it has created the help file
> one can -help returncodes- to bring it up. The rc2help.ado only has
> to be run once to create the help file although you may want to run it
> again after major upgrades as I'm sure Stata adds new codes from time
> to time.
>
> Notes:
> Stata version - I've named the help file with the new ".sthlp"
> extension for Stata 10 users. Pre-Stata 10 will get ".hlp"
>
> Error range logic - Stata appears to have reserved ranges for
> different error types which may help with searching:
>
> Range Error type
> 1-499 general
> 500-600 matrix
> 601-622 file I/O
> 623-678 net connection
> 679-699 file I/O
> 700-950 memory
> 1000-1400 limits
> 2000-2001 too many/few obs
> 3000-3998 mata
> 4005-4031 class
> 9000+ kiss your butt goodbye
>
> Future development - I've inserted SMCL {marker ##} codes for each
> return code. This allows you to go directly to a return code in the
> viewer address box by typing something like: help returncodes##601 .
> However, I can't figure out how to do that from the command line other
> than doing something like: -di "{help returncodes##601}"- and clicking
> the hyperlink. If anyone could enlighten me... I may create an index
> at the top in some future iteration.
>
> save as rc2help.ado
> x----------------begin code----------------x
> program define rc2help
> version 9.0
>
> *! version 1.0.0 2009.01.09
> *! Create a consolidated help file of error (return) codes
> *! by David C. Elliott
>
> findfile stata14.key
>
> tempname hi ho
> file open `hi' using "`r(fn)'" , r
> // watch following line for wrapping
> file open `ho' using
> "`c(sysdir_personal)'returncodes.`=cond(`c(stata_version)'
>>=10,"sthlp","hlp")'" , w replace
>
> file write `ho' "{smcl}" _n "{com}{sf}{ul off}{txt}" _n
> local write 0
> local newcode 0
> file read `hi' line
> while r(eof)==0 {
> if !inlist(substr(`"`macval(line)'"',2,1),"e","c","k","x") {
> if strpos(`"`line'"',".t")==1 { // each section starts with a ".t"
> local write 1
> local newcode 1
> }
> else if `"`line'"' == "" {
> local write 0
> file write `ho' _n
> }
> if `write' {
> if `newcode' {
> if regexm(`"`line'"',".*Return code ([0-9]+)") == 1 {
> local rc `=regexs(1)'
> file write `ho' ///
> "{smcl}" _n ///
> "{title:Return code `rc'{marker `rc'}}" _n ///
> "{s6hlp}" _n
> local newcode 0
> }
> }
> else {
> file write `ho' `"`macval(line)'"' _n
> }
> }
> }
> file read `hi' line
> }
> file close _all
> help returncodes
> end
>
> x------------------end code----------------x
>
> I suspect this could be generalized to make a quick and dirty help
> file out of any of the stata##.key files.
> --
> David Elliott
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
>
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/