Как разделить ввод по кодам управления ASCII с помощью Progress 4GL? - PullRequest
0 голосов
/ 30 марта 2012

как я могу разделить этот штрих-код по разделителю групп с помощью Progress?Я безуспешно пытался выполнить chr (29).

Штрих-код сканируется в Блокнот ++: http://i.imgur.com/8DmPZ.png

Штрих-код сканируется в поле ввода: 2409271405202120330017100282

Спасибо.

def var c as char no-undo.
def var i as int no-undo.

update c format "x(50)".

do i = 1 to length(c):
    message substr(c, i, 1) = chr(29).
end.

Ответы [ 3 ]

0 голосов
/ 01 апреля 2012

Это работает для меня:

/* create a test file (otherwise not needed...)
 */

output to "barcode.dat".
put control "240927140520" chr(29) "2120330017" chr(29) "100282".
output close.

/* if you already have barcode.dat start here
 */

define variable m  as memptr    no-undo.
define variable bc as character no-undo.

set-size( m ) = 100.
input from "barcode.dat" binary no-convert.
import unformatted m.
input close.

bc = get-string( m, 1 ).

display
  entry( 1, bc, chr(29)) format "x(12)" skip
  entry( 2, bc, chr(29)) format "x(12)" skip
  entry( 3, bc, chr(29)) format "x(12)" skip
.
0 голосов
/ 03 апреля 2012

Проблема в том, что GS - неопределенный контрольный код. Поэтому вам нужно, чтобы это было признано.

Добавьте следующее к записи вашего терминала в protermcap, чтобы определить GS как F13:

:( F13) = \ 035: \

(Восьмеричный код для GS равен \ 035, а F13 - неопределенная функциональная клавиша - поэтому комбинация должна работать. У меня нет сканера для тестирования, но это работает для контрольных кодов, которые я могу ввести в свой клавиатура ...)

Тогда используйте такой код:

define variable bc as character no-undo format "X(50)".

update bc editing:
  if lastkey = 313 then
    apply ".".  /* 313 is the code for F13 */
   else
    apply lastkey.
end.

Это должно вызвать "." быть вставленным вместо GS. Что позволит вам разобрать строку, используя "." а не GS.

0 голосов
/ 31 марта 2012

Это дикое предположение, но я думаю ENTRY (entry-num, barcode-string, "group-separator-string")?

...