You first need to decide how long you want each variable to be and then pad the variables accordingly.
Assuming the first two variables are strings and the third is a number you can write two handlers, one for strings and one for numbers, like:
to padString(theString, theLength, alignment)
-- First make sure we need to pad at all
-- In this case I return the entire string, but you could truncate it
if length of theString > theLength then return theString
-- now pad the string by appending a space at one end or the other
repeat until length of theString = theLength
if alignment = "right" then
set theString to space & theString
else
set theString to theString & space
end if
end repeat
return theString
end padString
on padNumber(theNum, decimalPlaces)
-- multiply the number up and truncate it to an integer
set theNum to theNum * (10 ^ decimalPlaces) as integer
-- then divide it back down
set theNum to theNum / (10 ^ decimalPlaces)
return theNum as text
end padNumber
set variable1 to (my padString("some string", 20, "left"))
set variable2 to (my padString("some other string", 30, "left"))
set variable3 to (padString(padNumber(123.456, 2), 10, "right"))
Note how this uses the same padString handler with a parameter which tells it which direction to pad in.
Also realize that there are many ways of achieving the same result, including more efficient ones (from a code execution speed point of view) than mine. However, since you're likely to be dealing with tens of passing characters this is probably sufficient.