Here is a more detailed example of Crystal Reports' string processing capabilities. The Caesar cipher is a simple code that is traditionally credited to Julius Caesar. In this code, each letter of a word is replaced by a letter five characters further in the alphabet. For example, "Jaws" becomes "Ofbx". Notice that "w" is replaced by "b". Since there are not 5 characters after "w" in the alphabet, it starts again from the beginning.
Here is a formula that implements applying the Caesar cipher to the field {Customer.Customer Name} in the Xtreme database:
Rem The Caesar cipher Dim inString 'The input string to encrypt inString = {Customer.Customer Name} Dim shift shift = 5 formula = "" Dim i For i = 1 To Len(inString) Dim inC, outC inC = Mid(inString, i, 1) Dim isChar, isUCaseChar isChar = LCase(inC) In "a" To "z" isUCaseChar = isChar And (UCase (inC) = inC) inC = LCase(inC) If isChar Then Dim offset offset = (Asc(inC) + shift - Asc("a")) Mod _ (Asc("z") - Asc("a") + 1) outC = Chr(offset + Asc("a")) If isUCaseChar Then outC = UCase(outC) Else outC = inC End If formula = formula & outC Next i
In the above example, there is a multi-line If statement nested within the statements block of the For/Next loop. This If statement is responsible for the precise details of shifting a single character. For example, letters are treated differently from punctuation and spaces. In particular, punctuation and spaces are not encoded. Control structures can be nested within other control structures and multiple statements can be included in the statement block of a control structure.