2012-03-30 16 views
0

このバーコードをグループセパレータでProgressで分割するにはどうすればよいですか?私は幸運なしにCHR(29)を試しました。 ++メモ帳にスキャンProgress 4GLでASCII制御コードで入力を分割する方法は?

バーコード:入力フィールドにスキャン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. 
+0

現在のコードはどのように見えますか? –

答えて

0

問題はGSが未定義の制御コードであるということです。だからあなたはそれを認識させる必要があります。

F13としてGSを定義するためにprotermcapであなたの端末のエントリに以下を追加します。

:(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

ENTRY(entry-num、barcode-string、 "group-separator-string")と思っていますか?

0

これが私の作品:

/* 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

あなたの答えをありがとうが、残念ながらこれは私のニーズをカバーしていません。私はファイルからバーコードを読み取る場合は動作しますが、フレーム入力フィールド(文字ベースのアプリケーションで動作しています)から読み込む必要があります。 Progressはasciiの制御コードを無視していますか? –

+0

バーコードを読み取っても問題ないコードサンプルを私の質問に追加しました。 –

+0

ファイル入力のためにこの回答を残しておきます。あなたの本当の問題がキーボード入力であることを知ったので、私の他の答えを見てください。 –