例 1
{Customer.顧客名}の文字列を反転するとします。たとえば、“City Cyclists”を“stsilcyC ytiC”にします。
//Reverse a string version 1
Local StringVar str := "";
Local NumberVar strLen :=
Length ({Customer.CUSTOMER_NAME});
Local NumberVar i;
For i := 1 To strLen Do
(
Local NumberVar charPos := strLen - i + 1;
str := str + {Customer.CUSTOMER_NAME}[charPos]
);
str
{Customer.顧客名}フィールドの現在の値が“Clean Air”である場合のこの式の機能を検証します。変数 strLen には、“Clean Air”の長さ 9 が代入されます。変数 i は、For ループが繰り返されるたびにその値が変化することから、“For カウンタ変数” と呼ばれます。つまり、For カウンタ変数は、ループの繰り返し回数をカウントするために使用されます。For ループは、最初に i が 1、次に i が 2、次に i が 3 という具合に、最後に i が 9 に等しくなるまで 9 回繰り返されます。最初の繰り返しで、{Customer.顧客名}の 9 番目の文字が空の文字列変数 str に追加されます。したがって、str は、最初の繰り返しの後で“r”になります。2 回目の繰り返しで、{Customer.顧客名}の 8 番目の文字が str に追加されることから、str は“ri”になります。9 回目の繰り返しの後に str が反転文字列 "riA naelC" になるまで、この処理が続行されます。
例 2
次の例では、Step 句に負のステップ値 -1 を使用して、上の式をより単純化しています。“Clean Air”の例では、最初の繰り返しで i は 9、2 回目は 8、3 回目は 7 という具合に、最後に 1 になるまで続きます。
//Reverse a string version 2
Local StringVar str := "";
Local NumberVar strLen :=
Length ({Customer.CUSTOMER_NAME});
Local NumberVar i;
For i := strLen To 1 Step -1 Do
(
str := str + {Customer.CUSTOMER_NAME}[i]
);
str
例 3
最も簡単な形式は、次に示すように、組み込み関数 StrReverse を使用するものです。
//Reverse a string version 3
StrReverse ({Customer.CUSTOMER_NAME})
Crystal Reports に組み込まれている文字列関数は、従来 For ループなどのループを使って処理されていた文字列操作の多くを処理できます。ただし、For ループは、最も柔軟に文字列を処理できる方法であり、また配列を処理するための機能に優れています。配列は、組み込み関数ではユーザーが目的とする処理をこなせない場合に不可欠な要素です。