Code 39 is an alpha-numeric symbology. It is able to turn your string, ranging from one character to 20 characters, into bars and spaces.
Your string can contain uppercase alpha, numeral character, and some punctuation characters.
Code39 requires asterisks before and after your string. Some computer applications do that for you automatically. Some not.
But you need to keep this in mind: without the start and stop asterisks, your scanner will not be able to read the code39 barcode.
Code 39 is self-checking. Therefore it does not need check digit. However, if your application requires high-accuracy, you can append a modulo 43 check digit after your data.
Barcodesoft Code39 products provide source code for checksum calculation.
Using standard code39, you are unable to encode lowercase alpha and control characters. But with some little tricks, you can use code39 to encode the full ASCII table.
By combining shift character with other characters, you can get any character in the ASCII table. For example,
"%U" = NUL,
"+A" = a.
This is the nature of full ASCII code39 barcode software.