Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: comment out a number of lines together


From   "Sergiy Radyakin" <serjradyakin@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: comment out a number of lines together
Date   Thu, 2 Oct 2008 16:27:55 -0400

On Thu, Oct 2, 2008 at 4:00 PM, Steven Samuels <sjhsamuels@earthlink.net> wrote:
> Sergiy,
> -foreach-, or rather, the brackets it requires,  must have something to do
> with it.
>
> -Steve
>
> *****************CODE BEGINS****************
> sysuse auto, clear
> #delim ;
> *****************No Comments****************
> sum mpg
> if rep78 ==1 ;
> ****Putting a space in front of //  works, as you stated:
>  // sum mpg
>  // if rep78 ==1;


>>>>>THIS IS A SINGLE LINE OF CODE: <<<<<<

> *****// without a preceding space works too:
> // sum mpg
> // if rep78 ==1;

UNTIL THE SEMICOLUMN.

Try putting a semicolumn right after the column and it breaks immediately.

Sergiy



> *****************CODE ENDS****************
>
> On Oct 2, 2008, at 3:38 PM, Sergiy Radyakin wrote:
>
>> This is not because of fovalues or foreach. See help comments:
>> "However, if the // indicator is at the end of a line, it must be
>> preceded by one or more blanks."
>>
>> This is quite a unique requirement of Stata. I can't come up with any
>> other system which would demand anything like that. Adding a space in
>> the beginning of every line should not change the program, but in this
>> case in does (and helps to fix the error).
>>
>> The fact that it works when the delimiter is CR is hence inconsistent
>> with the documented behavior.
>>
>> Best regards, Sergiy Radyakin
>>
>>
>>
>> On Thu, Oct 2, 2008 at 3:27 PM, Steven Samuels <sjhsamuels@earthlink.net>
>> wrote:
>>>
>>> Here's another example where * works and // doesn't. The circumstances:
>>> the
>>> delimiter is ";", and the code block contains a -forvalues-  or -foreach-
>>> section.  /* and */ around the -foreach- section also works.
>>>
>>> -Steve
>>>
>>> *****************CODE BEGINS****************
>>> sysuse auto, clear
>>> forvalues i=1/5 {
>>> di "rep78 = " `i'
>>> }
>>>
>>> #delim ;
>>>
>>> forvalues i=1/5 { ;
>>> di "rep78 = " `i';
>>> };
>>> ;
>>>
>>> ***************** (*) COMMENT WORKS ****************
>>> * forvalues i=1/5 { ;
>>> * di "rep78 = " `i';
>>> * };
>>> * ;
>>>
>>> ***************** // COMMENT FAILS****************
>>> // forvalues i=1/5 { ;
>>> // di "rep78 = " `i';
>>> // };
>>> // ;
>>> *****************CODE ENDS****************
>>>
>>> On Oct 2, 2008, at 12:44 PM, Nick Cox wrote:
>>>
>>>> Very good catch, Sergiy. Thanks for the correction! I should have
>>>> checked about the //.
>>>> Conversely, this is another argument for the deprecated *.
>>>>
>>>> Nick
>>>> n.j.cox@durham.ac.uk
>>>>
>>>> Sergiy Radyakin
>>>>
>>>> Nick,
>>>>
>>>> local c //
>>>> will not work in the program because "//" is interpreted as the start
>>>> of the comment
>>>> it works in the command line though, because "//"-style comments are
>>>> prohibited in the command line input. To fix this:
>>>> 1) open quotes before // like so: local c "//" , or
>>>> 2) write it down as an expression, e.g. local c="/"+"/"
>>>> In any case, Stata fails to recognize "//" as a comment when it comes
>>>> as a result of macro expansion. But it works for a star ("*").
>>>>
>>>> // --- begin of file testc.do ---
>>>> local c //
>>>> display `"`c'"'
>>>> local c ="/"+"/"
>>>> display `"`c'"'
>>>> local c "//"
>>>> display `"`c'"'
>>>> local c "*"
>>>> display `"`c'"'
>>>>  `c' just nothing
>>>> local c "//"
>>>>  `c' just nothing
>>>> // --- end of file testc.do ---
>>>>
>>>> If writing out debugging messages, it may be more comfortable to use
>>>> di_g. See: help di_g.
>>>>
>>>> Best regards, Sergiy Radyakin
>>>>
>>>> On Tue, Sep 30, 2008 at 11:28 AM, Nick Cox <n.j.cox@stata.com> wrote:
>>>>>
>>>>> Another is to prefix lines by e.g.
>>>>>
>>>>> `c'
>>>>>
>>>>> Setting
>>>>>
>>>>> local c *
>>>>>
>>>>> or
>>>>>
>>>>> local c //
>>>>>
>>>>> comments out those lines.
>>>>>
>>>>> Setting
>>>>>
>>>>> local c
>>>>>
>>>>> zaps the macro.
>>>>>
>>>>> Naturally any definition of the local as "*" or "//" must precede all
>>>>
>>>> uses
>>>>>
>>>>> that require that interpretation.
>>>>>
>>>>> The converse does not apply: if the local is not defined, Stata sees
>>>>
>>>> the
>>>>>
>>>>> line.
>>>>>
>>>>> More generally, you can define or undefine the macro at will.
>>>>>
>>>>> I don't especially recommend this method, but it is an alternative
>>>>
>>>> that is
>>>>>
>>>>> sometimes useful, and it matches practices in many programming
>>>>
>>>> languages.
>>>>>
>>>>> Nick
>>>>> n.j.cox@durham.ac.uk
>>>>>
>>>>>
>>>>> Maarten buis wrote:
>>>>>>
>>>>>> --- Paul O'Brien <paul.obrien@afe2.org.uk> wrote:
>>>>>>
>>>>>>> at times i need to comment out a number of lines, usually with * and
>>>>>>> remove the * later to activate the commands.
>>>>>>> is there a simple way to remove and add the * to a number of line at
>>>>
>>>> one
>>>>>>>
>>>>>>> go?
>>>>>>
>>>>>> One way to comment out a block of code is to surround them with /*
>>>>
>>>> and
>>>>>>
>>>>>> */ this way you have to remove only these two.
>>>>
>>>> *
>>>> *   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/
>>>
>> *
>> *   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/
>
*
*   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/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index