是否正在执行将数字值转换为单词的函数,或者有另一种方法?对于前1234-> 1,234。
最多将完成9999(最多进行测试)。之后,您必须将其扩展才能工作。
DEFINE VARIABLE cNum2Words AS CHARACTER NO-UNDO EXTENT 20 INITIAL ["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eigteen","nineteen"].
DEFINE VARIABLE cTens AS CHARACTER NO-UNDO EXTENT 10 INITIAL ["","twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"].
DEFINE VARIABLE cPostfix AS CHARACTER NO-UNDO EXTENT 10 INITIAL ["","","hundred","thousand","hundredthousand","million"].
FUNCTION num2word RETURN CHARACTER (INPUT piNum AS INTEGER):
RETURN cNum2Words[piNum + 1].
END.
FUNCTION num2words RETURNS CHARACTER (INPUT piNum AS INTEGER):
DEFINE VARIABLE iStep AS INTEGER NO-UNDO.
DEFINE VARIABLE cReturn AS CHARACTER NO-UNDO.
DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
IF piNum >= 0 AND piNum <= 19 THEN
RETURN num2Word(piNum).
ELSE DO:
DO iStep = LENGTH(STRING(piNum)) TO 1 BY -1:
iPos = iPos + 1.
IF iStep = 1 THEN DO:
cReturn = cReturn + " " + num2word(INTEGER(SUBSTRING(STRING(piNum), iPos, 1))).
END.
ELSE IF iStep = 2 THEN DO:
cReturn = cReturn + " " + cTens[INTEGER(SUBSTRING(STRING(piNum), iPos, 1))].
END.
ELSE IF iStep > 2 AND iStep <= 6 THEN DO:
cReturn = cReturn + " " + num2word(INTEGER(SUBSTRING(STRING(piNum), iPos, 1))) + " " + cPostfix[iStep].
END.
END.
END.
RETURN creturn.
END.
MESSAGE num2words(9999) VIEW-AS ALERT-BOX .
未内置,不。您可能需要自己编写。