BRANCHMSG - 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

目的

この制御によって、ユーザーは、GOTOのスキップと条件ブロックのバイパスに対する入力命令の分岐について説明するメッセージの生成を、冗長にするか簡潔にするかを指定できます。

BRANCHMSGコマンドを使用しない場合、値はデフォルトでVERBOSEになります。

このコマンドは、バッチ モードで実行するスクリプトで使用する場合にのみ有効です。対話型モードで発行するとエラーが生じます。

構文

使用上の注意

入力命令の処理中に分岐を生じさせるIFやGOTOなどのコマンドが使用されると、BTEQは情報メッセージを生成します。GOTOが使用される場合、一致するLABELコマンドが見つからない間は実行されないすべての命令に対して"スキップ"メッセージが生成されます。また、IF構成に関連付けられた命令の条件ブロックが実行されない場合は、命令ごとに"バイパス"メッセージが生成されます。これらの分岐メッセージで簡潔な形式を使用することで、結果ブロックの数を減らすことができます。この形式では、スキップまたはバイパスが発生していることを示すのに十分な必要最低限の数の情報メッセージのみが生成され、実行されないコマンドやリクエストに関連付けられた結果ブロックの生成は省略されます。したがって、簡潔モードでは、実行されない可能性がある命令数が多い場合や、それらの命令のテキスト量が多い場合は、全体の出力を大幅に減らすことができます。結果ブロックの抑制には、命令テキストのエコーが含まれます。

簡潔モードのとき、LABELは、命令の最初のステップの場合にのみ独自の結果ブロックを取得します。

コンテキストを反映するために、BRANCHMSG=VERBOSEとともにECHOREQ=ONも使用することを推奨します。

ECHOREQがONの場合、簡潔モードでは、命令の直前にある先頭の空白文字を除き、すべての先頭の空白文字とコメントが破棄されます。

例 – 結果ブロックの削減

次のスクリプト セクションであれば、ERRORCODEは0であるため、'C'のREMARKコマンドのみが最終的に実行されます。
.GOTO mylabel
.REMARK 'A'
.REMARK 'B'
.LABEL mylabel
.IF ERRORCODE=0
.REMARK 'C'
.ELSEIF ERRORCODE=1
.REMARK 'D'
.ELSE
.REMARK 'E'
.ENDIF

BRANCHMSGをVERBOSE(デフォルトの状態)に設定すると、バッチ モードの結果ブロックは次のようになり、命令ごとに独自の結果ブロックを取得します。

+---------+---------+---------+---------+---------+---------+---------+----
.GOTO mylabel
+---------+---------+---------+---------+---------+---------+---------+----
.REMARK 'A'
 *** Skipped.
+---------+---------+---------+---------+---------+---------+---------+----
.REMARK 'B'
 *** Skipped.
+---------+---------+---------+---------+---------+---------+---------+----
.LABEL mylabel
+---------+---------+---------+---------+---------+---------+---------+----
.IF ERRORCODE=0
 *** Level 1: IF condition is TRUE.
+---------+---------+---------+---------+---------+---------+---------+----
.REMARK 'C'
 C
+---------+---------+---------+---------+---------+---------+---------+----
.ELSEIF ERRORCODE=1
 *** Level 1: Bypassing ELSEIF block.
+---------+---------+---------+---------+---------+---------+---------+----
.REMARK 'D'
 *** Bypassed.
+---------+---------+---------+---------+---------+---------+---------+----
.ELSE
 *** Level 1: Bypassing ELSE block.
+---------+---------+---------+---------+---------+---------+---------+----
.REMARK 'E'
 *** Bypassed.
+---------+---------+---------+---------+---------+---------+---------+----
.ENDIF
 *** Level 1: Closed.
+---------+---------+---------+---------+---------+---------+---------+----

一方で、BRANCHMSGをTERSEに設定すると、結果ブロックの全体数が削減されます。

+---------+---------+---------+---------+---------+---------+---------+----
.GOTO mylabel
 *** Skipping.
+---------+---------+---------+---------+---------+---------+---------+----
.LABEL mylabel
+---------+---------+---------+---------+---------+---------+---------+----
.IF ERRORCODE=0
 *** Level 1: IF condition is TRUE.
+---------+---------+---------+---------+---------+---------+---------+----
.REMARK 'C'
 C
+---------+---------+---------+---------+---------+---------+---------+----
.ELSEIF ERRORCODE=1
 *** Level 1: Bypassing the level's remaining blocks.
+---------+---------+---------+---------+---------+---------+---------+----
.ENDIF
 *** Level 1: Closed.
+---------+---------+---------+---------+---------+---------+---------+----