# funcion string of_ean128 (string ls_ean128)
Long ll_i, ll_mini, ll_dummy, ll_asc, ll_checksum
String ls_barcode
boolean lb_tableB
for ll_i = 1 to len(ls_ean128)
ll_asc = asc(mid(ls_ean128,ll_i,1))
if (ll_asc >= 32 and ll_asc <= 126) or ll_asc = 203 or ll_asc = 207 then
else
ll_i = 0
exit
end if
next
ls_barcode = ""
lb_tableB = TRUE
ll_dummy = 0
if ll_i > 0 then
ll_i = 1
do while ll_i <= len(ls_ean128)
if lb_tableB then
ll_mini = 6
if ll_i = 1 or ll_i + 3 = len(ls_ean128) then ll_mini = 4
of_testnumorfnc1(ll_mini, ll_i, ls_ean128)
if ll_mini < 0 then
if ll_i = 1 then
ls_barcode = char(210)
else
ls_barcode = ls_barcode + char(204)
end if
lb_tableB = false
else
if ll_i = 1 then ls_barcode = char(209)
end if
end if
if not lb_TableB then
if asc(mid(ls_ean128,ll_i,2)) = 207 then
ls_barcode = ls_barcode + mid(ls_ean128,ll_i,1)
ll_i ++
else
ll_mini = 2
of_testnum(ll_mini, ll_i, ls_ean128)
if ll_mini < 0 then
ll_dummy = long(mid(ls_ean128,ll_i,2))
if ll_dummy < 95 then
ll_dummy = ll_dummy + 32
else
ll_dummy = ll_dummy + 105
end if
ls_barcode = ls_barcode + char(ll_dummy)
ll_i = ll_i + 2
else
ls_barcode = ls_barcode + char(205)
lb_tableB = true
end if
end if
end if
if lb_tableB then
ls_barcode = ls_barcode + mid(ls_ean128,ll_i,1)
ll_i ++
end if
loop
//CALCULA EL CHECKSUM
for ll_i = 1 to len(ls_barcode)
ll_dummy = asc(mid(ls_barcode,ll_i,1))
if ll_dummy < 127 then
ll_dummy = ll_dummy -32
else
ll_dummy = ll_dummy - 105
end if
if ll_i = 1 then ll_checksum = ll_dummy
ll_checksum = mod( (ll_checksum + (ll_i - 1) * ll_dummy),103)
next
if ll_checksum < 95 then
ll_checksum = ll_checksum + 32
else
ll_checksum = ll_checksum + 105
end if
ls_barcode = ls_barcode + char(ll_checksum) + char(211)
end if
return ls_barcode
#######################################################################
# funcion none of_testnumorfnc1(ref long ll_mini, ref long ll_i, string ls_ean128)
Long ll_asc
ll_mini = ll_mini - 1
if (ll_i + ll_mini <= len(ls_ean128)) then
do while ll_mini >= 0
ll_asc = asc(mid(ls_ean128, ll_i + ll_mini,1))
if (ll_asc < 48 or ll_asc > 57) and ll_asc <> 207 then exit
ll_mini --
loop
end if
############################################################
#funcion of_testnum (ref long ll_mini, ref long ll_i, string ls_ean128);
Long ll_asc
ll_mini --
if ll_i + ll_mini <= len(ls_ean128) then
do while ll_mini >= 0
ll_asc = asc(mid(ls_ean128, ll_i + ll_mini, 1))
if ll_asc < 48 or ll_asc > 57 then
exit
end if
ll_mini --
loop
end if
############################################################