Hi Derek,
May be this code will helps you
please find below
PROCEDURE CreateUPCAFont@1000000001(CommonItemNo@1000000030 : Code[20]) UPCFontCode : Text[20];
VAR
UPCCode@1000000000 : Text[20];
UPCFont@1000000001 : Text[20];
OddNo@1000000002 : Integer;
EvenNo@1000000003 : Integer;
EvenStr1@1000000004 : Text[30];
EvenStr2@1000000005 : Text[30];
EvenStr3@1000000006 : Text[30];
EvenStr4@1000000007 : Text[30];
EvenStr5@1000000008 : Text[30];
EvenNo1@1000000009 : Integer;
EvenNo2@1000000010 : Integer;
EvenNo3@1000000011 : Integer;
EvenNo4@1000000012 : Integer;
EvenNo5@1000000013 : Integer;
OddStr1@1000000014 : Text[30];
OddStr2@1000000015 : Text[30];
OddStr3@1000000016 : Text[30];
OddStr4@1000000017 : Text[30];
OddStr5@1000000018 : Text[30];
OddStr6@1000000019 : Text[30];
OddNo1@1000000020 : Integer;
OddNo2@1000000021 : Integer;
OddNo3@1000000022 : Integer;
OddNo4@1000000023 : Integer;
OddNo5@1000000024 : Integer;
OddNo6@1000000025 : Integer;
CheckDigit@1000000026 : Integer;
WorkChar@1000000028 : Text[1];
i@1000000029 : Integer;
BEGIN
UPCCode := COPYSTR(CommonItemNo,1,11);
OddStr1 := COPYSTR(UPCCode,1,1);
OddStr2 := COPYSTR(UPCCode,3,1);
OddStr3 := COPYSTR(UPCCode,5,1);
OddStr4 := COPYSTR(UPCCode,7,1);
OddStr5 := COPYSTR(UPCCode,9,1);
OddStr6 := COPYSTR(UPCCode,11,1);
EVALUATE(OddNo1,OddStr1);
EVALUATE(OddNo2,OddStr2);
EVALUATE(OddNo3,OddStr3);
EVALUATE(OddNo4,OddStr4);
EVALUATE(OddNo5,OddStr5);
EVALUATE(OddNo6,OddStr6);
OddNo := OddNo1 + OddNo2 + OddNo3 + OddNo4 + OddNo5 + OddNo6;
OddNo := OddNo * 3;
EvenStr1 := COPYSTR(UPCCode,2,1);
EvenStr2 := COPYSTR(UPCCode,4,1);
EvenStr3 := COPYSTR(UPCCode,6,1);
EvenStr4 := COPYSTR(UPCCode,8,1);
EvenStr5 := COPYSTR(UPCCode,10,1);
EVALUATE(EvenNo1,EvenStr1);
EVALUATE(EvenNo2,EvenStr2);
EVALUATE(EvenNo3,EvenStr3);
EVALUATE(EvenNo4,EvenStr4);
EVALUATE(EvenNo5,EvenStr5);
EvenNo := EvenNo1 + EvenNo2 + EvenNo3 + EvenNo4 + EvenNo5;
CheckDigit := -1;
REPEAT
CheckDigit += 1;
UNTIL (((OddNo + EvenNo + CheckDigit) MOD 10) = 0);
UPCCode := UPCCode + FORMAT(CheckDigit);
WorkChar := COPYSTR(UPCCode,1,1);
CASE WorkChar OF
'0': WorkChar := 'D';
'1': WorkChar := 'E';
'2': WorkChar := 'F';
'3': WorkChar := 'G';
'4': WorkChar := 'H';
'5': WorkChar := 'I';
'6': WorkChar := 'J';
'7': WorkChar := 'K';
'8': WorkChar := 'L';
'9': WorkChar := 'M';
END;
UPCFont := WorkChar + COPYSTR(UPCCode,2,5) + '.';
FOR i := 7 TO 11 DO BEGIN
WorkChar := COPYSTR(UPCCode,i,1);
CASE WorkChar OF
'0': WorkChar := 'a';
'1': WorkChar := 'b';
'2': WorkChar := 'c';
'3': WorkChar := 'd';
'4': WorkChar := 'e';
'5': WorkChar := 'f';
'6': WorkChar := 'g';
'7': WorkChar := 'h';
'8': WorkChar := 'i';
'9': WorkChar := 'j';
END;
UPCFont := UPCFont + WorkChar;
END;
WorkChar := COPYSTR(UPCCode,STRLEN(UPCCode),1);
CASE WorkChar OF
'0': WorkChar := 'm';
'1': WorkChar := 'n';
'2': WorkChar := 'o';
'3': WorkChar := 'p';
'4': WorkChar := 'q';
'5': WorkChar := 'r';
'6': WorkChar := 's';
'7': WorkChar := 't';
'8': WorkChar := 'u';
'9': WorkChar := 'v';
END;
UPCFont := UPCFont + WorkChar;
UPCFontCode := UPCFont;
END;
Thank You
Ramesh
--