このドキュメントでは、フィールドの出力フォーマットの制御に使用できる Natural プロファイルやセッションパラメータの使用法について説明します。
次のトピックについて説明します。
Natural レポートの作成時に使用されるさまざまな標準属性を制御する Natural プロファイルパラメータの概要については、『オペレーション』ドキュメントの「出力レポートおよびワークファイル」も参照してください。
Natural には、フィールドを出力する際のフォーマットを制御するために使用できるプロファイルやセッションパラメータが複数用意されています。
パラメータ | 機能 |
---|---|
LC、IC、および TC | これらのセッションパラメータで、フィールドの前後またはフィールド値の前に表示する文字を指定できます。 |
AL および NL | これらのセッションパラメータで、フィールドの出力長を増減できます。 |
DL | このセッションパラメータで、フォーマット U の英数字マップフィールドのデフォルトの出力長を指定できます。 |
SG | このセッションパラメータで、負の値をマイナス記号付きまたは記号なしのどちらで表示するかを決定できます。 |
IS | このセッションパラメータで、後続の同一フィールド値の表示を省略できます。 |
ZP | このプロファイルおよびセッションパラメータで、0 のフィールド値を表示するかどうかを決定できます。
|
ES | このセッションパラメータで、DISPLAY または WRITE ステートメントによって生成された空行の表示を省略できます。
|
これらのパラメータについて以下で説明します。
セッションパラメータ LC
では、DISPLAY
ステートメントで出力されるフィールドの直前に表示される先頭文字を指定できます。 出力列の幅は、それに従って拡大します。 1~10 文字を指定できます。
デフォルトでは、値は、英数字フィールドでは左揃え、数値フィールドでは右揃えで表示されます。 これらのデフォルトは AD
パラメータで変更できます。『パラメータリファレンス』を参照してください。 英数字フィールドに先頭文字を指定すると、文字はフィールド値の直前に表示されます。数値フィールドの場合、先頭文字とフィールド値の間に多数のスペースが表示されることがあります。
LC
パラメータは、以下のステートメントで使用できます。
ステートメントレベルと要素レベルで設定できます。
セッションパラメータ IC
を使用して、DISPLAY
ステートメントで出力されるフィールド値の直前に挿入され文字を指定します。 1~10 文字を指定できます。
数値フィールドの場合、挿入文字は、出力される最初の有効桁の直前に挿入されます。指定した文字とフィールド値の間に空白は入りません。 英数字フィールドの場合、IC
パラメータの効果は LC
パラメータと同じです。
パラメータ LC
および IC
の両方を 1 つのフィールドに適用することはできません。
IC
パラメータは、以下のステートメントで使用できます。
ステートメントレベルと要素レベルで設定できます。
セッションパラメータ TC
では、DISPLAY
ステートメントで出力されるフィールドのすぐ右側に表示される末尾文字を指定できます。 出力列の幅は、それに従って拡大します。 1~10 文字を指定できます。
TC
パラメータは、以下のステートメントで使用できます。
ステートメントレベルと要素レベルで設定できます。
セッションパラメータ AL
では、英数字フィールドの出力長を指定できます。NL
パラメータでは、数値フィールドの出力長を指定できます。 これにより、出力されるフィールドの長さが決定されます。出力されるフィールドの長さは、実際のフィールドの長さより短い場合も長い場合もあります。実際のフィールドの長さは、データベースフィールドの場合は DDM、ユーザー定義変数の場合は
DEFINE DATA
ステートメントで定義されます。
どちらのパラメータも以下のステートメントで使用できます。
ステートメントレベルと要素レベルで設定できます。
注意:
編集マスクを指定している場合、NL
または AL
指定は上書きされます。 編集マスクについては、「編集マスク - EM パラメータ」に記載されています。
注意:DL
パラメータの機能を完全に利用するには、Web I/O インターフェイスを使用する必要があります。 端末エミュレーションを使用している場合、例えば、DL
で定義した値がフィールド長よりも短いときにフィールド内をスクロールすることはできません。
Unicode 文字列の表示幅は文字列の長さの 2 倍になる可能性があり、ユーザーは文字列全体を表示できる必要があるため、セッションパラメータ DL
で、フォーマット A または U のフィールドの表示長を指定できます。 デフォルトはフィールド長であり、例えば、フォーマットおよび長さが U10 の場合、DL
が指定されていないときのデフォルトの長さが 10 であるのに対し、表示長は 10~20 になる可能性があります。
このセッションパラメータは以下のステートメントで使用できます。
ステートメントレベルと要素レベルで設定できます。
セッションパラメータ AL
と DL
の違いは、AL
がフィールドのデータ長を定義するのに対し、DL
はフィールドを表示するために使用される画面上の桁数を定義します。 DL
セッションパラメータで指定した値がフィールドデータの長さよりも少ない場合、ユーザーは入力フィールド内をスクロールして、フィールドの内容全体を表示することができます。
Web I/O インターフェイスでは、フィールド長よりも少ない長さで DL
パラメータを使用することのみをお勧めします。 Natural を端末エミュレーションで実行している場合、フィールド内のスクロールは使用できず、そのため効果は AL
パラメータを使用した場合と同じになります。 また、フィールドの内容を変更した場合、表示長を超えるすべての文字が失われます。
注意:DL
は A フォーマットフィールドでも同様に使用できます。 これにより、Web I/O インターフェイスとともに使用した場合、編集のコントロールサイズをフィールドの内容よりも小さくすることができます。
DEFINE DATA LOCAL 1 #U1 (U10) 1 #U2 (U10) END-DEFINE * #U1 := U'latintxt00' #U2 := U'' * INPUT (AD=M) #U1 #U2 END
上記のプログラムでは以下の出力が作成されます。フィールド #U2
の内容は不完全です。
#U1 latintxt00 #U2
セッションパラメータ DL
をフィールド #U2
で使用して適宜に指定すると、このフィールドの内容が正しく表示されます。
DEFINE DATA LOCAL 1 #U1 (U10) 1 #U2 (U10) END-DEFINE * #U1 := U'latintxt00' #U2 := U'' * INPUT (AD=M) #U1 #U2 (DL=20) END
結果:
#U1 latintxt00 #U2
セッションパラメータ SG
では、数値フィールドに符号の位置を割り当てるかどうかを決定できます。
デフォルトでは SG=ON
が適用され、数値フィールドに符号の位置が割り当てられます。
SG=OFF
を指定すると、数値フィールドの負の値はマイナス記号(-)なしで出力されます。
SG
パラメータは以下のステートメントで使用できます。
ステートメントレベルと要素レベルの両方で設定できます。
注意:
編集マスクを指定している場合、SG
指定は上書きされます。 編集マスクについては、「編集マスク - EM パラメータ」に記載されています。
** Example 'FORMAX03': FORMAT (without FORMAT and compare with FORMAX04) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:1) 2 BONUS (1:1,1:1) END-DEFINE * READ (5) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME SALARY (1:1) BONUS (1:1,1:1) END-READ END
上記のプログラムにはパラメータ設定が含まれず、出力は以下のようになります。
Page 1 04-11-11 11:11:11 NAME FIRST-NAME ANNUAL BONUS SALARY -------------------- -------------------- ---------- ---------- JONES VIRGINIA 46000 9000 JONES MARSHA 50000 0 JONES ROBERT 31000 0 JONES LILLY 24000 0 JONES EDWARD 37600 0
この例では、セッションパラメータ AL
、NL
、LC
、IC
、および TC
が使用されています。
** Example 'FORMAX04': FORMAT (with parameters AL, NL, LC, TC, IC and ** compare with FORMAX03) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 SALARY (1:1) 2 BONUS (1:1,1:1) END-DEFINE * FORMAT AL=10 NL=6 * READ (5) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME (LC=*) FIRST-NAME (TC=*) SALARY (1:1) (IC=$) BONUS (1:1,1:1) (LC=>) END-READ END
上記のプログラムでは、次の出力が生成されます。 個々のパラメータの影響を確認するために、この出力のレイアウトを前のプログラムと比較します。
Page 1 04-11-11 11:11:11 NAME FIRST-NAME ANNUAL BONUS SALARY ----------- ----------- -------- -------- *JONES VIRGINIA * $46000 > 9000 *JONES MARSHA * $50000 > 0 *JONES ROBERT * $31000 > 0 *JONES LILLY * $24000 > 0 *JONES EDWARD * $37600 > 0
上記の例でわかるように、AL
または NL
パラメータで指定した出力長には、LC
、IC
、および TC
パラメータで指定した文字は含まれません。例えば、NAME
列の幅は、フィールド値の 10 文字(AL=10
)に先頭文字の 1 文字を足した 11 文字になります。
SALARY
および BONUS
列の幅は、フィールド値の 6 文字(NL=6
)に、先頭または挿入文字の 1 文字、および符号の位置(SG=ON
が適用)の 1 文字を足した 8 文字になります。
セッションパラメータ IS
では、WRITE
または DISPLAY
ステートメントによって作成される連続行で同一情報の表示を抑制できます。
デフォルトでは、IS=OFF
が適用され、同一のフィールド値が表示されます。
IS=ON
を指定した場合、そのフィールドの前の値と同一の値は表示されません。
IS
パラメータは以下のステートメントで指定できます。
ステートメント SUSPEND IDENTICAL SUPPRESS
を使用すると、パラメータ IS=ON
の効果を 1 件のレコードに対して一時的に無効にできます。詳細については、『ステートメント』ドキュメントを参照してください。
次の 2 つのプログラム例の出力を比較して、IS
パラメータの影響を確認します。 2 番目のプログラムでは、NAME
フィールドの同一の値は表示されません。
** Example 'FORMAX05': FORMAT (without parameter IS ** and compare with FORMAX06) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME END-READ END
上述したプログラムにより、次の出力が生成されます。
Page 1 04-11-11 11:11:11 NAME FIRST-NAME -------------------- -------------------- JONES VIRGINIA JONES MARSHA JONES ROBERT
** Example 'FORMAX06': FORMAT (with parameter IS ** and compare with FORMAX05) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME END-DEFINE * FORMAT IS=ON * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME END-READ END
上述したプログラムにより、次の出力が生成されます。
Page 1 04-11-11 11:54:01 NAME FIRST-NAME -------------------- -------------------- JONES VIRGINIA MARSHA ROBERT
プロファイルおよびセッションパラメータ ZP
では、ゼロのフィールド値をどのように表示するかを決定します。
デフォルトでは ZP=ON
が適用されるため、0 の各フィールド値に対して 1 つの 0
(数値フィールド)またはすべてゼロ(時間フィールド)が表示されます。
ZP=OFF
を指定すると、ゼロの各フィールド値は表示されません。
ZP
パラメータは以下のステートメントで指定できます。
次の 2 つの例のプログラムの出力を比較して、パラメータ ZP
および ES
の影響を確認します。
セッションパラメータ ES
では、DISPLAY
または WRITE
ステートメントによって作成された空行の出力を省略できます。
デフォルトでは ES=OFF
が適用されるため、すべて空白値を含む行が表示されます。
ES=ON
を指定した場合、すべて空白値を含む DISPLAY
または WRITE
ステートメントの結果行は表示されません。 マルチプルバリューフィールドまたはピリオディックグループの一部のフィールドを表示するときに、大量の空行が出力される可能性がある場合には、特に有効です。
ES
パラメータは以下のステートメントで指定できます。
注意:
数値に対して空白の省略を行うには、ES=ON
以外にパラメータ ZP=OFF
も関連するフィールドに設定する必要があります。これは、NULL 値を空白に変えてどちらも出力されないようにするためです。
次の 2 つの例のプログラムの出力を比較して、パラメータ ZP
および ES
の影響を確認します。
** Example 'FORMAX07': FORMAT (without parameter ES and ZP ** and compare with FORMAX08) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 BONUS (1:2,1:1) END-DEFINE * READ (4) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME BONUS (1:2,1:1) END-READ END
上述したプログラムにより、次の出力が生成されます。
Page 1 04-11-11 11:58:23 NAME FIRST-NAME BONUS -------------------- -------------------- ---------- JONES VIRGINIA 9000 6750 JONES MARSHA 0 0 JONES ROBERT 0 0 JONES LILLY 0 0
** Example 'FORMAX08': FORMAT (with parameters ES and ZP ** and compare with FORMAX07) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 BONUS (1:2,1:1) END-DEFINE * FORMAT ES=ON * READ (4) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY NAME FIRST-NAME BONUS (1:2,1:1)(ZP=OFF) END-READ END
上述したプログラムにより、次の出力が生成されます。
Page 1 04-11-11 11:59:09 NAME FIRST-NAME BONUS -------------------- -------------------- ---------- JONES VIRGINIA 9000 6750 JONES MARSHA JONES ROBERT JONES LILLY
パラメータ LC
、IC
、TC
、AL
、NL
、IS
、ZP
、ES
、および SUSPEND IDENTICAL SUPPRESS
ステートメントの他の例については、以下のプログラム例を参照してください。