FOLDLINE - Basic Teradata Query

Basic Teradata Query リファレンス

Product
Basic Teradata Query
Release Number
16.20
Published
2018年4月
Language
日本語
Last Update
2019-07-11
dita:mapPath
ja-JP/kil1527114222313.ditamap
dita:ditavalPath
ja-JP/kil1527114222313.ditaval
dita:id
B035-2414
Product Category
Teradata Tools and Utilities

目的

この制御によって、ユーザーは、指定した列の後で、各行を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