def var cList as char no-undo.
assign cList = "one,two,three,four".
<Loop> cList
logic...
</Loop>
通過一個char變量逗號分隔的列表什麼是最好的方式來循環,使得在這個例子中,我會得到一個那麼雙然後是三個然後是四個。運行一個逗號分隔的項目列表上的循環前進4GL
def var cList as char no-undo.
assign cList = "one,two,three,four".
<Loop> cList
logic...
</Loop>
通過一個char變量逗號分隔的列表什麼是最好的方式來循環,使得在這個例子中,我會得到一個那麼雙然後是三個然後是四個。運行一個逗號分隔的項目列表上的循環前進4GL
大聲笑我還記得有點進步,我想。
DEF VAR i AS INT NO-UNDO.
&SCOPED-DEFINE LIST "one,two,three,four"
DO i=1 TO NUM-ENTRIES({&LIST}):
MESSAGE SUBSTITUTE("LIST[&1] is &2", i, ENTRY(i, {&LIST})).
END.
DEFINE VARIABLE ch-list AS CHARACTER NO-UNDO.
DEFINE VARIABLE i-cnt AS INTEGER NO-UNDO.
DEFINE VARIABLE i-entry AS INTEGER NO-UNDO.
ASSIGN
ch-list = "one,two,three,four"
.
ASSIGN
i-cnt = NUM-ENTRIES(ch-list)
.
REPEAT i-entry = 1 TO i-cnt:
DISPLAY
ENTRY(i-entry, ch-list)
WITH DOWN.
END.
DEFINE VARIABLE iNumEntries AS INTEGER NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.
def var cList as char no-undo.
assign cList = "one,two,three,four".
ASSIGN iNumEntries = NUM-ENTRIES(cList,",").
DO iLoop = 1 TO iNumEntries:
MESSAGE ENTRY(iLoop,cList,",") VIEW-AS ALERT-BOX.
/* You can use display, assign to variable, etc */
END.
你的答案只是一段代碼,沒有任何解釋,因此,它很可能被刪除。 – 2015-08-28 08:17:00
歡迎來到堆棧溢出!雖然這段代碼可能會回答這個問題,但爲什麼和/或代碼如何回答這個問題提供了額外的背景,這提高了它的長期價值。 – NathanOliver 2015-08-28 14:51:35
是否有一個具體的原因,'NUM-ENTRIES'功能在內襯中重複的語句?與它有什麼關係,必須通過循環對每次迭代進行評估? – 2015-09-23 15:07:04
是 - REPEAT ...在循環的每次迭代中評估函數,因此爲了獲得更好的性能,請將循環外的num-entries值存儲在變量中,然後使用該變量。 – 2015-09-23 19:41:08
或者做一個負循環(重複i-entry = NUM-ENTRIES(ch-list)爲-1 by -1),因爲在每次迭代中只有第二個元素被重新評估,但是通過列表反向工作。 – AquaAlex 2016-02-11 14:43:51