2017-02-03 1 views
0

実行時に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. 

答えて

1

a)あなたのLOOKUP機能が間違っていました。最初の引数はx(リスト内にある式)、カンマ区切り文字列のリスト b)ELSEの必要はありません。 UNDOとして、RETRYはループの現在の反復を停止します c)showはARRAYなので、配列要素を参照します。

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. 
+0

屋私はあなたと同意するが、このプログラムは私が私が掲示する上記のプログラムを編集した、それが唯一の第一のエントリのため、それはエラーを投げている、残りの結果を表示するENTRY機能 – sri

+0

を使用して行わなければなりません。 – sri

1

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. 
関連する問題