Шаблон проверки MUMPS

Я работаю над созданием программы на М, которая читает ввод имен в определенном формате. Как только пользователь помещает нулевое значение, он печатает все значения. То, где я застреваю, - это чтение глобальной переменной. Я с нетерпением жду любой информации, которую смогу получить.

          n prompt,val,done
          s prompt="Enter a name (LAST,FIRST MI): "
          s val="" f in=1:1 s val=$O(^ZNAME(val)) q:val=""
          f  w !,prompt r val q:val=""  d   q:done 
          . i val'?1.A1",".1" "1.A.1(1" "1A) w !,"Invalid name" q
          . s val=$GET(^ZNAME)
          . s done=1
          i val="" q  
          w !,"You entered: ",val
         . s done=1
         q

2 ответа

Решение

Я не совсем понимаю, что вы хотите сделать, но это то, что я построил:

  • читать имена, пока вы не дадите пустое имя
  • если имя следует шаблону, добавьте его в ^ZNAME
  • в конце выведите все имена в ^ZNAME

Ну вот:

readlist
    N prompt,val
    S prompt="Enter a name (LAST,FIRST MI): "
    F  W !,prompt R val Q:val=""  D
    .   I val'?1.A1",".1" "1.A.1(1" "1A) W !,"Invalid name"
    .   E  S ^ZNAME(val)=""
    F  S val=$O(^ZNAME(val)) Q:val=""  D
    .   W !,"You entered: ",val
    Q

Пример (с использованием GTM):

GTM>D readlist^ZZTEST

Enter a name (LAST,FIRST MI): first,last
Enter a name (LAST,FIRST MI): name,surname
Enter a name (LAST,FIRST MI):
You entered: first,last
You entered: name,surname
GTM>zwr ^ZNAME
^ZNAME("first,last")=""
^ZNAME("name,surname")=""

Ваш код выглядит странно. Во первых это строчка s val="" f in=1:1 s val=$O(^ZNAME(val)) q:val="" бесполезно, просто упорядочить все значения в первом индексе global. Тогда ваш код должен потерпеть неудачу с UNDEFINED ошибка для готовой переменной, когда введенный val передаст ваш шаблон. И, наконец, он получает новое значение от глобального ^ZNAMEи не имеет значения, что было введено, оно получит одно значение за все время.

Другие вопросы по тегам