2013-11-23 3 views
0

При написании макроса у меня есть переменная, {$ # 2}, которая либо начинается с 1 или 2 цифры, за которой следует символ «.», Либо нет. Когда начинается таким образом, я хочу, чтобы поставить номер в rexxvar, который я назвал C.Как анализировать переменную в REXX/Regina

Я попытался

#if [ DATATYPE(LEFT({$#2},1), "W") ]        \ 
#evaluate ^^ ^parse '{$#2} C '.' .^        \ 
#endif               \ 

Это, и каждый вариант я могу думать, дает ошибки говоря строка #IF содержит недопустимые символы.

Как мне это сделать?

Я использую PPWizard и Regina, но я не могу создать ни тега.

Благодаря Ян

+0

Это то, что вызывает проблему ??? или оператор синтаксического анализа или оба? –

ответ

1

Я не использование PPWizard так все это может быть неправильно, но

Глядя на PPWizard #if, то если должно быть либо

#if DATATYPE(LEFT({$#2},1), "W") 

или

#if [ DATATYPE(LEFT({$#2},1), "W") <> 0 ] 

Но я не знаю погоду вы можете вложим {$ # 2} или нет (я не знаю PPWizard)


Для утверждения синтаксического анализа один из них может быть то, что вы хотите

#evaluate ^^ ^parse value '{$#2}' with C '.' .^ 

или

#evaluate ^^ ^parse var {$#2} C '.' .^ 

См rexx parse syntax


Альтернативный способ может попробовать тег Define Rexx и сделать это в rexx. Больше людей могут помочь вам с чистым rexx. т.е. Rexx будет

if DATATYPE(LEFT(value_to_process,1), "W") then do 
    parse var value_to_process C '.' 
end 

, где value_to_process это значение для проверки (то есть {$ # 2})

0

Для других. Окончательный ответ на проблему, чтобы написать

#RexxVar value_to_process = {$#2} 
#evaluate+ ^^ ^if DATATYPE(LEFT(value_to_process,1), "W") then do; parse var value_to_process C '.'; end^ \ 

в макросе я создавал.

Спасибо, Брюс. Ваш ответ был наиболее полезным на моем пути к решению.