フィールドの出力に影響を与えるパラメータ

このドキュメントでは、フィールドの出力フォーマットの制御に使用できる Natural プロファイルやセッションパラメータの使用法について説明します。

以下のトピックについて説明します。


フィールド出力関連パラメータの概要

Natural には、フィールドを出力する際のフォーマットを制御するために使用できるプロファイルやセッションパラメータが複数用意されています。

パラメータ 関数
LCIC および TC これらのセッションパラメータで、フィールドの前後またはフィールド値の前に表示する文字を指定できます。
LCUICU および TCU これらのセッションパラメータで、フィールドの前後またはフィールド値の前に表示する文字を Unicode フォーマットで指定できます。
AL および NL これらのセッションパラメータで、フィールドの出力長を増減できます。
DL このセッションパラメータで、フォーマット U の英数字マップフィールドのデフォルトの出力長を指定できます。
SG このセッションパラメータで、負の値をマイナス記号付きまたは記号なしのどちらで表示するかを決定できます。
IS このセッションパラメータで、後続の同一フィールド値の表示を省略できます。
ZP このプロファイルおよびセッションパラメータで、0 のフィールド値を表示するかどうかを決定できます。
ES このセッションパラメータで、DISPLAY または WRITE ステートメントによって生成された空行の表示を抑制できます。

これらのパラメータについて、以降のセクションで説明します。

先頭文字 - LC パラメータ

セッションパラメータ LC では、DISPLAY ステートメントで出力されるフィールドの直前に表示される先頭文字を指定できます。出力列の幅は、それに従って拡大します。1~10 文字を指定できます。

デフォルトでは、値は、英数字フィールドでは左揃え、数値フィールドでは右揃えで表示されます。これらのデフォルトは AD パラメータで変更できます。『パラメータリファレンス』を参照してください。英数字フィールドに先頭文字を指定すると、文字はフィールド値の直前に表示されます。数値フィールドの場合、先頭文字とフィールド値の間に多数のスペースが表示されることがあります。

LC パラメータは、以下のステートメントで使用できます。

LC パラメータはステートメントレベルと要素レベルで設定できます。

Unicode 先頭文字 - LCU パラメータ

セッションパラメータ LCU は、セッションパラメータ LC と同一です。違いは、先頭文字が必ず Unicode フォーマットで保存されることです。

そのため、ユーザーは別のコードページからの文字が混在した先頭文字を指定でき、インストールされているシステムコードページに関係なく、いつでも確実に正しい文字が表示されるようにすることができます。

詳細については、「Natural プログラミング言語の Unicode とコードページのサポート」の「セッションパラメータ」にある「EMU、ICU、LCU、TCU と EM、IC、LC、TC の比較」を参照してください。

パラメータ LCU および ICU の両方を 1 つのフィールドに適用することはできません。

挿入文字 - IC パラメータ

セッションパラメータ IC を使用して、DISPLAY ステートメントで出力されるフィールド値の直前に挿入され文字を指定します。1~10 文字を指定できます。

数値フィールドの場合、挿入文字は、出力される最初の有効桁の直前に挿入されます。指定した文字とフィールド値の間に空白は入りません。英数字フィールドの場合、IC パラメータの効果は LC パラメータと同じです。

パラメータ LC および IC の両方を 1 つのフィールドに適用することはできません。

IC パラメータは、以下のステートメントで使用できます。

IC パラメータはステートメントレベルと要素レベルで設定できます。

Unicode 挿入文字 - ICU パラメータ

セッションパラメータ ICU は、セッションパラメータ IC と同一です。違いは、挿入文字が必ず Unicode フォーマットで保存されることです。

そのため、ユーザーは別のコードページからの文字が混在した挿入文字を指定でき、インストールされているシステムコードページに関係なく、いつでも確実に正しい文字が表示されるようにすることができます。

詳細については、「Natural プログラミング言語の Unicode とコードページのサポート」の「セッションパラメータ」にある「EMU、ICU、LCU、TCU と EM、IC、LC、TC の比較」を参照してください。

パラメータ LCU および ICU の両方を 1 つのフィールドに適用することはできません。

末尾文字 - TC パラメータ

セッションパラメータ TC では、DISPLAY ステートメントで出力されるフィールドのすぐ右側に表示される末尾文字を指定できます。出力列の幅は、それに従って拡大します。1~10 文字を指定できます。

TC パラメータは、以下のステートメントで使用できます。

TC パラメータはステートメントレベルと要素レベルで設定できます。

Unicode 末尾文字 - TCU パラメータ

セッションパラメータ TCU は、セッションパラメータ TC と同一です。違いは、末尾文字が必ず Unicode フォーマットで保存されることです。

そのため、ユーザーは別のコードページからの文字が混在した末尾文字を指定でき、インストールされているシステムコードページに関係なく、いつでも確実に正しい文字が表示されるようにすることができます。

詳細については、「Natural プログラミング言語の Unicode とコードページのサポート」の「セッションパラメータ」にある「EMU、ICU、LCU、TCU と EM、IC、LC、TC の比較」を参照してください。

出力長 - AL パラメータと NL パラメータ

セッションパラメータ AL では、英数字フィールドの出力長を指定できます。NL パラメータでは、数値フィールドの出力長を指定できます。これにより、出力されるフィールドの長さが決定されます。出力されるフィールドの長さは、実際のフィールドの長さより短い場合も長い場合もあります。実際のフィールドの長さは、データベースフィールドの場合は DDM、ユーザー定義変数の場合は DEFINE DATA ステートメントで定義されます。

どちらのパラメータも以下のステートメントで使用できます。

どちらのパラメータもステートメントレベルと要素レベルで設定できます。

注意:
編集マスクを指定している場合、NL または AL 指定は上書きされます。編集マスクについては、「編集マスク - EM パラメータ」に記載されています。

出力の表示長 - DL パラメータ

注意:
DL パラメータの機能を完全に利用するには、Web I/O インターフェイスを使用する必要があります。端末エミュレーションを使用している場合、例えば、DL で定義した値がフィールド長よりも短いときにフィールド内をスクロールすることはできません。

Unicode 文字列の表示幅は文字列の長さの 2 倍になる可能性があり、ユーザーは文字列全体を表示できる必要があるため、セッションパラメータ DL で、フォーマット A または U のフィールドの表示長を指定できます。デフォルトはフィールド長であり、例えば、フォーマットおよび長さが U10 の場合、DL が指定されていないときのデフォルトの長さが 10 であるのに対し、表示長は 10~20 になる可能性があります。

セッションパラメータ DL は以下のステートメントで使用できます。

セッションパラメータ DL はステートメントレベルと要素レベルで設定できます。

セッションパラメータ ALDL の違いは、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'graphics/u2.gif'
*
INPUT (AD=M) #U1 #U2
END

上記のプログラムでは以下の出力が作成されます。フィールド #U2 の内容は不完全です。

#U1 latintxt00 #U2 graphics/u2-incomplete.gif

セッションパラメータ DL をフィールド #U2 で使用して適宜に指定すると、このフィールドの内容が正しく表示されます。

DEFINE DATA LOCAL
1    #U1 (U10)
1    #U2 (U10)
END-DEFINE
*
#U1 := U'latintxt00'
#U2 := U'graphics/u2.gif'
*
INPUT (AD=M) #U1 #U2 (DL=20)
END

結果:

#U1 latintxt00 #U2 graphics/u2.gif

符号の位置 - SG パラメータ

セッションパラメータ SG では、数値フィールドに符号の位置を割り当てるかどうかを決定できます。

  • デフォルトでは SG=ON が適用され、数値フィールドに符号の位置が割り当てられます。

  • SG=OFF を指定すると、数値フィールドの負の値はマイナス記号(-)なしで出力されます。

SG パラメータは、以下のステートメントで使用できます。

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 を使用したプログラム例

この例では、セッションパラメータ ALNLLCIC、および 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 パラメータで指定した出力長には、LCIC、および TC パラメータで指定した文字は含まれません。例えば、NAME 列の幅は、フィールド値の 10 文字(AL=10)に先頭文字の 1 文字を足した 11 文字になります。

SALARY および BONUS 列の幅は、フィールド値の 6 文字(NL=6)に、先頭または挿入文字の 1 文字、および符号の位置(SG=ON が適用)の 1 文字を足した 8 文字になります。

重複抑制 - IS パラメータ

セッションパラメータ IS では、WRITE または DISPLAY ステートメントによって作成される連続行で同一情報の表示を抑制できます。

  • デフォルトでは、IS=OFF が適用され、同一のフィールド値が表示されます。

  • IS=ON を指定した場合、そのフィールドの前の値と同一の値は表示されません。

IS パラメータは以下のステートメントで指定できます。

  • レポート全体に適用される FORMAT ステートメント。

  • ステートメントレベルおよび要素レベルで適用される DISPLAY または WRITE ステートメント。

ステートメント SUSPEND IDENTICAL SUPPRESS を使用すると、パラメータ IS=ON の効果を 1 件のレコードに対して一時的に無効にできます。詳細については、『ステートメント』ドキュメントを参照してください。

次の 2 つのプログラム例の出力を比較して、IS パラメータの影響を確認します。2 番目のプログラムでは、NAME フィールドの同一の値は表示されません。

IS パラメータなしのプログラム例

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

IS パラメータありのプログラム例

** 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 では、ゼロのフィールド値をどのように表示するかを決定します。

  • デフォルトでは ZP=ON が適用されるため、0 の各フィールド値に対して 1 つの 0(数値フィールド)またはすべてゼロ(時間フィールド)が表示されます。

  • ZP=OFF を指定すると、ゼロの各フィールド値は表示されません。

ZP パラメータは以下のステートメントで指定できます。

  • レポート全体に適用される FORMAT ステートメント。

  • ステートメントレベルおよび要素レベルで適用される DISPLAY または WRITE ステートメント。

次の 2 つの例のプログラムの出力を比較して、パラメータ ZP および ES の影響を確認します。

空行の省略 - ES パラメータ

セッションパラメータ ES では、DISPLAY または WRITE ステートメントによって作成された空行の出力を省略できます。

  • デフォルトでは ES=OFF が適用されるため、すべて空白値を含む行が表示されます。

  • ES=ON を指定した場合、すべて空白値を含む DISPLAY または WRITE ステートメントの結果行は表示されません。マルチプルバリューフィールドまたはピリオディックグループの一部のフィールドを表示するときに、大量の空行が出力される可能性がある場合には、特に有効です。

ES パラメータは以下のステートメントで指定できます。

  • レポート全体に適用される FORMAT ステートメント。

  • ステートメントレベルで適用される DISPLAY または WRITE ステートメント。

注意:
数値に対して空白の省略を行うには、ES=ON 以外にパラメータ ZP=OFF も関連するフィールドに設定する必要があります。これは、NULL 値を空白に変えてどちらも出力されないようにするためです。

次の 2 つの例のプログラムの出力を比較して、パラメータ ZP および ES の影響を確認します。

パラメータ 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

パラメータ ZP および ES を使用したプログラム例

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

フィールド出力関連パラメータの他の例

パラメータ LCICTCALNLISZPES、および SUSPEND IDENTICAL SUPPRESS ステートメントの他の例については、以下のプログラム例を参照してください。