Progress 4gl 如何在同一程序中使用entry和lookup函数来显示数字对应的字符串

Progress 4gl 如何在同一程序中使用entry和lookup函数来显示数字对应的字符串,progress-4gl,openedge,Progress 4gl,Openedge,当我在运行时输入4时,下面的程序应该返回字符串“four”,类似地,返回对应于5、6、7和8的字符串 应使用entry功能完成此操作 DEFINE VARIABLE x AS CHARACTER NO-UNDO FORMAT "9" LABEL "Enter a digit between 4 and 8". DEFINE VARIABLE show AS CHARACTER NO-UNDO FORMAT "x(5)" EXTENT 5 LABEL "Literal" INITIAL ["

当我在运行时输入4时,下面的程序应该返回字符串“four”,类似地,返回对应于5、6、7和8的字符串

应使用
entry
功能完成此操作

DEFINE VARIABLE x AS CHARACTER NO-UNDO FORMAT "9"  LABEL "Enter a digit between 4 and 8".
DEFINE VARIABLE show AS CHARACTER NO-UNDO FORMAT "x(5)" EXTENT 5   LABEL "Literal" INITIAL ["four","five","six","seven","eight"].
DEFINE VARIABLE i AS INTEGER.

REPEAT:  
  SET x AUTO-RETURN.  

  i = LOOKUP(x, "4,5,6,7,8",",")  . 
  IF i = 0 THEN
  DO:    
    MESSAGE "Digit must be 4, 5, 6, 7 or 8. Try again.".   
    UNDO, RETRY.  
  END. 

  MESSAGE ENTRY(i, show[i], ",") VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
a) 您的查找功能出错。第一个参数是x(要在列表中定位的表达式),然后将列表作为逗号分隔的字符串 b) 不需要别的。在撤消时,重试将停止循环的当前迭代 c) 因为show是一个数组,所以只需引用数组元素

DEFINE VARIABLE x AS CHARACTER NO-UNDO FORMAT "9"  LABEL "Enter a digit between 4 and 8".
DEFINE VARIABLE show AS CHARACTER NO-UNDO FORMAT "x(5)" EXTENT 5   LABEL "Literal" INITIAL ["four","five","six","seven","eight"].
define variable i as integer .

REPEAT:  
SET x AUTO-RETURN.  

i = lookup(x, "4,5,6,7,8",",")  . 
IF i = 0 
THEN
DO:    
MESSAGE "Digit must be 4,5,6,7, or 8. Try again.".   
UNDO, RETRY.  
END. 

MESSAGE show[i]
VIEW-AS ALERT-BOX INFO BUTTONS OK.

END.
a) 您的查找功能出错。第一个参数是x(要在列表中定位的表达式),然后将列表作为逗号分隔的字符串 b) 不需要别的。在撤消时,重试将停止循环的当前迭代 c) 因为show是一个数组,所以只需引用数组元素

DEFINE VARIABLE x AS CHARACTER NO-UNDO FORMAT "9"  LABEL "Enter a digit between 4 and 8".
DEFINE VARIABLE show AS CHARACTER NO-UNDO FORMAT "x(5)" EXTENT 5   LABEL "Literal" INITIAL ["four","five","six","seven","eight"].
define variable i as integer .

REPEAT:  
SET x AUTO-RETURN.  

i = lookup(x, "4,5,6,7,8",",")  . 
IF i = 0 
THEN
DO:    
MESSAGE "Digit must be 4,5,6,7, or 8. Try again.".   
UNDO, RETRY.  
END. 

MESSAGE show[i]
VIEW-AS ALERT-BOX INFO BUTTONS OK.

END.

我认为您需要决定是使用
ENTRY
还是数组。在这种情况下,混合没有意义

DEFINE VARIABLE x    AS CHARACTER NO-UNDO FORMAT "9"    LABEL "Enter a digit between 4 and 8".
DEFINE VARIABLE show AS CHARACTER NO-UNDO FORMAT "x(5)" LABEL "Literal" INITIAL "four,five,six,seven,eight".
DEFINE VARIABLE i    AS INTEGER   NO-UNDO.

REPEAT:  
    SET x AUTO-RETURN.  

    i = LOOKUP(x, "4,5,6,7,8", ",")  NO-ERROR. 
    IF i = 0 THEN DO:    
        MESSAGE "Digit must be 4,5,6,7, or 8. Try again.".   
        UNDO, RETRY.  
    END. 

    MESSAGE entry(i, show, ",") VIEW-AS ALERT-BOX INFO BUTTONS OK.

END.

我认为您需要决定是使用
ENTRY
还是数组。在这种情况下,混合没有意义

DEFINE VARIABLE x    AS CHARACTER NO-UNDO FORMAT "9"    LABEL "Enter a digit between 4 and 8".
DEFINE VARIABLE show AS CHARACTER NO-UNDO FORMAT "x(5)" LABEL "Literal" INITIAL "four,five,six,seven,eight".
DEFINE VARIABLE i    AS INTEGER   NO-UNDO.

REPEAT:  
    SET x AUTO-RETURN.  

    i = LOOKUP(x, "4,5,6,7,8", ",")  NO-ERROR. 
    IF i = 0 THEN DO:    
        MESSAGE "Digit must be 4,5,6,7, or 8. Try again.".   
        UNDO, RETRY.  
    END. 

    MESSAGE entry(i, show, ",") VIEW-AS ALERT-BOX INFO BUTTONS OK.

END.

是的,我同意你的观点,但是这个程序必须使用输入功能。我编辑了我发布的上述程序,它只显示第一个输入的结果,其余的则显示错误。是的,我同意你的观点,但是这个程序必须使用输入功能。我编辑了我发布的上述程序,它只显示第一个条目的结果,其余条目则抛出错误。