Понимание заявления Mumps - PullRequest
2 голосов
/ 21 марта 2011

Что означает это утверждение: S A=$P(P,,2) I S?

Ответы [ 2 ]

8 голосов
/ 21 марта 2011

Это может быть недопустимый синтаксис, основанный на реализации MUMPS.Например, Intersystem Cache сгенерирует синтаксическую ошибку, поскольку второй параметр, переданный в функцию piece, пуст.

Функция $P или $PIECE(str, delim, num) вернет num -th-й сегмент str при разделении на delim .Итак, p("a^b^c","^",2) возвращает «b».Когда delim является пустой строкой, $P возвратит пустую строку.Однако может быть разница между передачей ничего и пустой строкой.

S A=$P(P,,2) говорит, что для переменной A необходимо указать значение, возвращаемое функцией piece.

Наконец, I S, говорит, что если значение переменной S равно true, продолжайте выполнение оставшейся части этой строки.Команда I или IF также имеет побочный эффект установки переменной $T в 1, если выражение истинно, или в 0, если выражение ложно.Это важно, если за вашей строкой кода следует оператор else, который использует $T, чтобы определить, вернул ли предыдущий оператор if ложь.

3 голосов
/ 21 марта 2011

Это означает, что

Set A = $PIECE(P,,2) 

$PIECE(string,delimiter,from) возвращает подстроку, которая является n-ным фрагментом строки, где целое число n задается параметром from, а фрагменты разделяются разделителем.Разделитель не возвращается.

Ссылки на документацию здесь: http://docs.intersystems.com/cache20102/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fpiece

...