Значения в языке Informix 4gl
У меня есть поле под названием "UCN", которое имеет 6 символов. Это поле может иметь как символьное, так и числовое значение, например "A123Y5", "12345Y" или "G23561", что-то вроде этого.
Нам нужно напечатать данные отсюда с Pipe как A | 1 | 2 | 3 | Y | 5.
Я могу поставить Integer с помощью ключевого слова using, но не могу соединить оба.
Пожалуйста, если кто-нибудь может помочь Мукешу
3 ответа
Я не думаю, что есть короткий путь. Тебе нужно:
PRINT ucn[1], '|', ucn[2], '|', ucn[3], '|', ucn[4], '|', ucn[5], '|', ucn[6]
Если бы он был немного длиннее, вы могли бы вместо этого использовать цикл; это имеет свою собственную лживость.
Если вы работаете на того, на кого, я думаю, вы работаете, я могу дать вам ответ, используя некоторые расширения Genero для 4GL. Создайте библиотечную функцию как...
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,"|")
Вот код для зацикливания, упомянутый Джонатаном:
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