MUMPS 地址验证

MUMPS Address Validation

我正在为我想参加的 class 准备先决条件问题。我正在修改两段代码。我已经完成了一个,但我被困在了这个上。我正在尝试阅读一个缩写的地址行。在这种情况下,FL33606。我能够读取地址。但是我收到退出命令 "Q: done" 的未定义错误。有人能帮我找出问题所在吗?

N prompt,val, done
    S prompt="Enter State and Zip (StateZip): "
    F  W !,prompt R val Q:val=""  D  Q:done  
    . I val'="?2A5N" W !,"Invalid entry" Q
    . S done=1
    I val="" q
    W !,"Valid Entry: ",val
    Q

我有两个错误

  • done变量应在第一次读取前定义
  • 模式不应包含在引号中,其中 ? 是运算符而不是 =
  S prompt="Enter State and Zip (StateZip): "
  S done=0
  F  W !,prompt R val Q:val=""  D  Q:done  
  . I val'?2A5N W !,"Invalid entry" Q
  . S done=1
  I val="" q
  W !,"Valid Entry: ",val
  Q

为什么要使用短命令和点?

这不是更好读吗?

  Set prompt = "Enter State and Zip (StateZip): "
  For {
    Write !,prompt 
    Read val 
    Quit:val=""  
    Quit:val?2A5N
    Write !,"Invalid entry" 
  } 
  If val="" Quit 
  Write !,"Valid Entry: ",val
  Quit