目的
この制御によって、ユーザーは、指定した列のあとで、各行を2行以上に分割(折り畳む)するかどうかを指定できます。これにより、レポートの幅が圧縮されます。
構文
次のような場合に当てはまります。
- n
- 1つ以上の列の番号。左から右に列で区切って指定します。nの値の有効な範囲は、1~2048です。列番号と列番号の間はカンマで区切るのが望ましい方法ですが、BTEQ FOLDLINEコマンドでは、分離文字としてカンマの代わりに1文字の空白を使用できます。
使用上の注意
FOLDLINEコマンドは、Teradata SQLマクロで使用できます。
FOLDLINE設定が影響するのはフィールド モードの出力のみです。レコード モード、標識モード、またはマルチパート標識モードの出力には影響しません。
WIDTHコマンドは、レポートの各行の最大文字数を指定します。 BTEQは、プリント出力の行の幅をWIDTHコマンドの最大値に制限します。 出力されるレポートの行がこの制限値を超えた場合、はみ出た部分は切り捨てられます。 これを避けるためには、FOLDLINEコマンドを使用して折り畳みポイントを設定し、1行が複数の行に分割されて出力されるようにします。 FOLDLINEをONに設定した列の値が出力された後で、新しい行のプリントが開始されます。 出力されていない列が残っている場合は、それらの列の値は次の行にプリントされます。
BTEQは、分割した(つまり、折り畳んだ)行はそれぞれ、レポートの文字位置の先頭から2文字目にオフセットします。 行のすべての列の処理が終了すると、BTEQは次の行の出力行の作成を開始します。
例えば、次の出力行のサンプルを見てください。 各行には4つの列があり、FOLDLINEなしでプリントされています。
A1A1 B1B1 C1C1 D1D1 A2A2 B2B2 C2C2 D2D2 A3A3 B3B3 C3C3 D3D3
先頭列に対してFOLDLINEをONに設定すると、出力される行の幅が縮まり、値が次の形式でプリントされます。
A1A1 B1B1 C1C1 D1D1 A2A2 B2B2 C2C2 D2D2 A3A3 B3B3 C3C3 D3D3
行の折り畳み位置は何カ所か指定できます。ただし、折り畳み位置の指定が多すぎるとレポートは所々で切れた状態で出力されるため、読みにくくなることがあります。 これ以外にもFOLDLINEを使用する上で考慮すべきことは、BTEQが各行をプリントする場合に出力行の数を制限する方法です。 BTEQに対し出力データの切り捨てではなく、折り畳みを指定する以外にも、FOLDLINE ON設定では、折り畳まれた行の中で空白文字だけの行は削除されます。 行を分割した際に、折り畳んだ左側部分に入るのが空白だけになる場合、BTEQはその行をプリントしません。
行の先頭列のFOLDLINE設定がONになっている場合に、その行を分割した最後の行に入るのが空白だけになると、折り畳んだ右側部分が入る行も削除されます。 そのため、空白が折り畳み部分に入る行については、FOLDLINE設定を慎重に使用し、レポートが正しく出力されるようにします。 他のコマンドで、FOLDLINEをUNDERLINEやSIDETITLESなどと一緒に使って、レポートを作成した方がよい場合があります。 UNDERLINEコマンドを使用すると、行の境目が目で見て分かります。 ただし、通常はSIDETITLESコマンドをFOLDLINEコマンドと一緒に使って、ラベル値を明確にし、レポートを見やすくします。
FOLDLINEとSUPPRESSコマンドの使用
FOLDLINEコマンドとSUPPRESSコマンドを組み合わせて使用すれば、同じ内容が連続することが多い整列用の列の表示が抑制されることにより生じた空白を、プリントされないようにすることができます。
FOLDLINEとPAGEBREAKコマンドの使用
FOLDLINEとPAGEBREAKコマンドを一緒に使用して行の値が2ページにまたがるのを防ぐことができます。 この場合には、FOLDLINEがONに設定されている各対応する列に対して折り畳まれる最初の出力行で改ページが発生するように、改ページの列番号を指定します。例えば、次のようになります。
.SET PAGEBREAK ON 1; .SET FOLDLINE ON 1, 2, 3;
デフォルト値
FOLDLINEコマンドを指定しない場合、値はデフォルトでOFFおよびALLになります。 ONまたはOFFを指定しない場合、FOLDLINEはON ALLに設定されます。
同じBTEQセッションで複数のレポートが作成され、そのレポートごとにFOLDLINEの設定を変える場合には、新しいFOLDLINEコマンドを指定する前に、そのつどFOLDLINEコマンドのオプションを明示的にOFFに設定する必要があります。
例1 – FOLDLINE
以下のコマンドでは、サンプルのWorkforce(従業員)データベースから2種類のSELECT操作を行なっています。 レポートの幅は意図的に40に設定してあります。これは、SELECT文から返される行の長さより短くなっています。 返された最初の2つの列の値の繰り返しを抑止し、出力結果が見やすくなるようにしています。 最初のSELECT操作は、すべての列に対してFOLDLINEをOFFに設定して実行します。 2番目のSELECT操作は、列2に対しFOLDLINEをONに設定して実行します。
.SET WIDTH 40; .SET SUPPRESS ON 1,2; .SET FOLDLINE OFF; SELECT e.EmpNo, e.Name, c.WkEnd (FORMAT 'Mmm-dd'), c.Hours, p.Description FROM employee e, project p, charges c WHERE e.EmpNo = c.EmpNo AND c.Proj_Id = p.Proj_Id AND e.DeptNo = 500 ORDER By 1,3; .SET FOLDLINE OFF; .SET FOLDLINE ON 2; SELECT e.EmpNo, e.Name, c.WkEnd (FORMAT 'Mmm-dd'), c.Hours, p.Description FROM employee e, project p, charges c WHERE e.EmpNo = c.EmpNo AND c.Proj_Id = p.Proj_Id AND e.DeptNo = 500 ORDER By 1,3;
BTEQの応答
FOLDLINE OFF ALLに設定して生成された最初のSELECT文の結果では、レポートの幅を超えた場合にデータ行を切り捨てる方法が示されています。 FOLDLINE ON 2に設定して生成された2番目のSELECT文の結果では、返された行をBTEQが複数行に折り畳む方法が示されています。 この場合、行は列2の値をプリントした後で分割されています。
*** Query completed. 12 rows found. 5 columns returned. *** Total elapsed time was 1 second. Week EmpNo Name Ending Hours Project ----- ------------ ------ ----- -------- 10004 Smith T Jul-29 53.0 Design W Nov-18 40.0 Design W 10010 Reed C Feb-18 12.5 A/R RECV Feb-18 10.0 A/P Paya 10014 Inglis C Jan-14 20.0 O/E Onli Jan-21 30.5 O/E Data Jan-28 30.0 O/E Data 10015 Omura H Feb-18 30.5 A/P Paya Feb-25 24.0 A/R RECV 10016 Carter J Jan-14 32.0 Design W Feb-25 2.5 Design W May-20 32.0 Design W +---------+---------+---------+--------- *** Query completed. 12 rows found. 5 columns returned. *** Total elapsed time was 1 second. EmpNo Name ----- ------------ Week Ending Hours Project Description ------ ----- ------------------------- 10004 Smith T Jul-29 53.0 Design Widget Pwr Supply Nov-18 40.0 Design Widget Frame 10010 Reed C Feb-18 12.5 A/R RECV Online System Feb-18 10.0 A/P Payable Online System 10014 Inglis C Jan-14 20.0 O/E Online System Jan-21 30.5 O/E Data Base Design Jan-28 30.0 O/E Data Base Design 10015 Omura H Feb-18 30.5 A/P Payable DB Design Feb-25 24.0 A/R RECV Online System 10016 Carter J Jan-14 32.0 Design Widget Pwr Supply Feb-25 2.5 Design Widget Frame May-20 32.0 Design Widget Pwr Supply +---------+---------+---------+---------
例2 – FOLDLINE
最初のレポートでは列1と列2で折り畳み、同じBTEQセッションでの2番目のレポートでは列3で折り畳むためには、まず、最初のレポートのために、FOLDLINEコマンドを次のように指定します。
.SET FOLDLINE 1, 2
次に、2番目のレポートのために、FOLDLINEコマンドのオプションをOFFにしてリセットします。
.SET FOLDLINE OFF
2番目のレポートのためのFOLDLINEコマンドを指定します。
.SET FOLDLINE 3
後続のレポートが正しく表示されるようにするために、直前のレポートの設定をすべてOFFにしてから、新たに設定し直す必要があります。
例3 – FOLDLINE
以下の仮の結果では、BTEQがFOLDLINEコマンドを使用した場合に空白文字だけから成る行の値をどのように処理するかが示されています。 応答出力の最初の部分は、すべての列に対してFOLDLINEをOFFに設定して生成されたものです。 2番目の部分は、すべての列に対してFOLDLINEをONに設定して生成されたものです。 5番目の行の値が4番目の行を折り畳んだ行に見えることに注意してください。 3番目の部分もすべての列に対してFOLDLINEをONに設定して生成されたものですが、UNDERLINE ON 1を使って、行の境目がはっきり分かるようにしています。
FOLDLINE OFF ALLの場合の応答:
col1 col2 col3 col4 ---- ---- ---- ---- MNO NOP OPQ PQR JKL KLM LMN GHI HIJ IJK DEF EFG FGH ABC BCD CDE
FOLDLINE ON ALLの場合の応答:
col1 ---- col2 ---- col3 ---- col4 ---- MNO NOP OPQ PQR JKL KLM LMN GHI HIJ IJK DEF EFG FGH ABC BCD CDE
FOLDLINE ON ALLにUNDERLINE ON 1を指定した場合の応答:
col1 ---- col2 ---- col3 ---- col4 ---- MNO NOP OPQ PQR ------- JKL KLM LMN ------- GHI HIJ IJK ------- DEF EFG FGH ------- ABC BCD CDE