On Thu, Oct 2, 2008 at 4:00 PM, Steven Samuels <[email protected]> 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 <[email protected]>
>> 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
>>>> [email protected]
>>>>
>>>> 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 <[email protected]> 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
>>>>> [email protected]
>>>>>
>>>>>
>>>>> Maarten buis wrote:
>>>>>>
>>>>>> --- Paul O'Brien <[email protected]> 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/