execute IBEBLOCK(BARCODE12 varchar(12) not null) returns(EAN13 varchar(13)) as declare variable SUM1 integer; declare variable SUM2 integer; declare variable I integer; declare variable CHECKDIGIT integer; begin if (IBEC_LENGTH(BARCODE12) <> 12) then exception GENERAL_DB_ERROR('Input barcode length must be exactly 12 digits!'); SUM1 = 0; SUM2 = 0; I = 2; while (I <= 12) do begin SUM1 = SUM1 + cast(substring(BARCODE12 from I for 1) as integer); I = I + 2; end SUM1 = SUM1 * 3; I = 1; while (I <= 11) do begin SUM2 = SUM2 + cast(substring(BARCODE12 from I for 1) as integer); I = I + 2; end SUM2 = SUM1 + SUM2; CHECKDIGIT = 10 - (IBEC_MOD(SUM2, 10)); if (CHECKDIGIT = 10) then CHECKDIGIT = 0; EAN13 = BARCODE12 || CHECKDIGIT; suspend; end;