0

我有一个名为“UCN”的字段,它有 6 个字符。该字段可以同时具有字符和数字值,例如“A123Y5”或“12345Y”或“G23561”之类的东西。

我们需要从这里打印数据,管道为 A|1|2|3|Y|5。

我可以将整数与“使用”关键字放在一起,但无法将两者放在一起。

请如果有人可以帮助穆克什

4

3 回答 3

0

如果你为我认为你为之工作的人工作,我可以使用 4GL 的一些 Genero 扩展给你一个答案。创建一个库函数,如...

FUNCTION insert_between_each_char(str,delimiter)
DEFINE str STRING
DEFINE delimiter CHAR(1)

DEFINE sb base.StringBuffer
DEFINE i INTEGER

    LET sb = base.StringBuffer.create()
    CALL sb.append(str)
    FOR i = sb.getLength() TO 2 STEP -1
        CALL sb.insertAt(i,delimiter)
    END FOR
    RETURN sb.toString()
END FUNCTION

...然后你的代码变成

PRINT insert_between_each_char(ucn,"|")
于 2016-07-27T21:46:20.930 回答
0

我认为没有捷径可走。你需要:

PRINT ucn[1], '|', ucn[2], '|', ucn[3], '|', ucn[4], '|', ucn[5], '|', ucn[6]

如果它稍微长一点,你可以使用一个循环来代替;这有它自己的复杂性。

于 2016-07-27T00:45:28.480 回答
0

这是 Jonathan 提到的循环代码:

   DEFINE 
      l_result   char(512),
      l_sel      LIKE table.UCN,
      i          integer

     LET l_sel = "A123Y5" #Or select into l_sel

     FOR i = 1 to length(l_sel)
        IF i < length(l_sel)
        THEN
           LET l_result = l_result, l_sel[i], "|"
        END IF
     END FOR

     PRINT l_result
于 2016-08-23T20:51:34.820 回答