目的
レポートの各行の出力制限を指定します。
構文
次のような場合に当てはまります。
- n
- プラットフォーム、文字セット、およびREPORTALIGN設定に応じて、バイト数、文字数、またはprintwidth領域で指定できる出力制限。
使用上の注意
EXPORTコマンドの指定の後にWIDTHコマンドを使用して、エクスポートされたファイルの幅を変更することができます。 EXPORT RESETが使用されると、WIDTHは、元の値(そのエクスポートの前に有効であった値)にリセットされます。
WIDTHコマンドはTeradata SQLマクロで使用できます。
メインフレーム接続システムの場合
- デフォルト値は、対話モードの場合は75で、バッチ モードの場合254です。
- WIDTHで指定する値は、プリント可能な文字に関連しています。ただし、紙送り制御文字は、この合計数に含まれません。
- WIDTHで指定する値は、LRECLの値以下でなければなりません。 デスティネーション ファイルのLRECLの値より大きいと、レポートの行幅が切り捨てられます。 Unicode UTF-8/UTF-16セッションの場合、LRECLはWIDTHの文字ごとに4バイトまで許容する必要があります。
- メインフレーム接続システムの場合、マルチバイト セッション文字セットを使用する場合は必ず、可変のRECFM(V、VA、VB、VBA)の設定が推奨されます。これは、単一の文字が複数のバイトを使う場合があるためです。
- REPORTおよびDIF形式のエクスポート ファイルの紙送り制御は、z/OSで実行するBTEQのUnicodeではサポートされていません。
ワークステーション接続システムのデフォルト値は、対話モードとバッチ モードの両方で75です。
次のテーブルでは、メインフレーム接続システムの場合にWIDTH値が何に基づくかを示します。
出力の種類 | 文字セット | REPORTALIGN設定 | WIDTH値 |
---|---|---|---|
SYSOUT | すべて | - | Bytes |
テキスト エクスポート | UTF8またはUTF16 | COMPATIBLE | Bytes |
テキスト エクスポート | UTF8またはUTF16 | EQUALWIDTH | Characters |
テキスト エクスポート | UTF8またはUTF16 | COLUMNS | 印刷幅スペース* |
テキスト エクスポート | 非Unicode | - | Bytes |
*他の文字には1つの物理スペースが必要ですが、全幅ワイド文字には2つの物理スペースが必要になります。 |
以下のテーブルは、ワークステーションに接続されたシステムのWIDTH値の基準について理解するのに役立ちます。これらの値はstdoutおよびテキスト エクスポートの両方に適用されます。
文字セット | I/Oエンコーディング | REPORTALIGN設定 | WIDTH値 |
---|---|---|---|
UTF8またはUTF16 | UTF8またはUTF16 | COMPATIBLE | Bytes |
UTF8またはUTF16 | UTF8またはUTF16 | EQUALWIDTH | Characters |
UTF8またはUTF16 | UTF8またはUTF16 | COLUMNS | 印刷幅スペース* |
非Unicode | - | - | Bytes |
*他の文字には1つの物理スペースが必要ですが、全幅ワイド文字には2つの物理スペースが必要になります。 |
DBSエクスポート幅
BTEQを使用して、マルチバイトの文字を含む非UTF-16問合わせの結果をフォーマットする場合には、DBSエクスポート幅の規則をテストするBTEQ WIDTH設定(またはSYSPRINTデータ セットのLRECL)を指定する必要があります。 WIDTH設定が小さすぎる場合には、特定文字のバイトが切り捨てられる場合があります。 例えば、1行が長すぎて、マルチバイト文字列の切り捨てや次の行への折り返しが行なわれる場合には、SI文字が失なわれたり、マルチバイト文字が壊れたりする可能性があります。 DBSエクスポート幅の詳細については、<International Character Set Support、B035-1125>を参照してください。
例1 – WIDTH
次の対話例は、最初はWIDTH の指定が画面デフォルトの75 文字の場合、次に40 文字と20 文字に設定した場合、選択した情報が返されるものです。
database workforce; .defaults .format on .set foldline on all .set sidetitles on .skipline on 4 .heading 'Width Off' select deptname (title 'Department') ,loc (title 'Loc') ,mgrno (title 'Manager No') from department order by loc ; .defaults .format on .set foldline on .set sidetitles on .heading 'width 40' .width 40 = 1 .defaults .format on .set foldline on .sidetitles .heading 'width 20' .width 20 = 1 .defaults .format off .logoff .exit
BTEQの応答
*** Query completed. 5 rows found. 3 columns returned. Width Off Department Engineering Loc ATL Manager No 10012 Department Manufacturing Loc CHI Manager No 10007 Department Marketing Loc NYC Manager No 10021 Department Administrati0n Loc NYC Manager No 10011 Department Exec Office Loc NYC Manager No 10018 *** Query completed. 5 rows found. 3 columns returned. width 40 Department Engineering Loc ATL Manager No 10012 Department Manufacturing Loc CHI Manager No 10007 Department Marketing Loc NYC Manager No 10021 Department Administration Loc NYC Manager No 10011 Department Exec Office Loc NYC Manager No 10018 *** Query completed. 5 rows found. 3 columns returned. width 20 Department Engineeri Loc ATL Manager No 10012 Department Manufactu Loc CHI Manager No 10007 Department Marketing Loc NYC Manager No 10021 Department Administr Loc NYC Manager No 10011 Department Exec Offi Loc NYC Manager No 10018
WIDTHを指定する際に入力した値が無効な場合には、例えば次のようなエラー メッセージが表示されます。
.set width 1048576 *** Error: Width value must be in the 20..1048575 range.
例2 – マクロによって出力されるWIDTH
Teradata SQLマクロでは、使用例1のWIDTHコマンドは次のようになります。
ECHO '.SET WIDTH 60';