event Print_Trailer : bcode_ser
var barcode1 : A40
var num1: N1 //the least significant digit in the check number
var num2: N1
var num3: N1
var num4: N1 //the most significant digit in the check number
var check_num_length: N1 //the number of digits in the check number
check_num_length = len(@cknum)
if check_num_length >= 1 //find the last digit in the check num
num1 = @cknum % 10 //check num is (1-9, or > 9)
if check_num_length >= 2 //find the second to last digit
num2 = (((@cknum - num1) / 10) % 10)//check num is (10-99,or >99)
else
num2 = 0
endif
if check_num_length >= 3 //find the third digit from the right
num3 = (((@cknum - num1 - (num2*10)) / 100) % 10)
else //check num is (100-999, or >999)
num3 = 0
endif
if check_num_length >= 4 //find the leading digit in the check num
num4 = (@cknum - num1 - (num2*10) - (num3*100)) / 1000
else //check num is (1000-9999)
num4 = 0
endif
endif
var check : A12 //12 places for the 12 strings sent to printer
format check as @cknum{8}
//Barcode1 printer commands for TM-T88 serial printer
//chr(27), chr(64) - Esc @ - Initialize printer
//chr(29), chr(72) - GS H - Select Printing position of HRI characters
//chr(3) - print HRI chars both above and below barcode
//chr(29), h - GS h - set barcode height
//chr(80) - 80 vertical dots x .14mm
//chr(29), w - GS w - set barcode width chr(3) - .423mm
//chr(27), a - Esc a - select justification - 1 - center
//chr(29), k - GS k - print barcode
//chr(67), chr(12) - EAN 13, 12 chars
//chr(48) - zero - pad check num with zeros
//num(4-1) - check digits
//chr(27), chr(64) - clear printer buffer
format barcode1 as chr(27), chr(64), chr(29), chr(72), chr(3), chr(29), "h", chr(80), chr(29), "w", chr(3), chr(27), "a",1,chr(29), "k", chr(67), chr(12), chr(48),chr(48),chr(48),chr(48),chr(48),chr(48),chr(48),chr(48), num4,num3,num2,num1, chr(27), chr(64)
@trailer[1] = barcode1 //after trailer in descriptor print barcode
endevent