バージョン 4.2.5
 —  プログラミングガイド  —

編集マスク - EM パラメータ

このドキュメントでは、英数字または数値フィールドの編集マスクを指定する方法について説明します。

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


EM パラメータの使用

セッションパラメータ EM を使用すると、英数字または数値フィールドに対して編集マスクを指定できます。つまり、フィールド値が出力されるフォーマットを文字単位で指定できます。

例:

DISPLAY NAME (EM=X^X^X^X^X^X^X^X^X^X)

この例で、それぞれの X は表示される英数字フィールド値の 1 文字を表し、それぞれの ^ は空白を表します。 DISPLAY ステートメントで表示された場合、名前 JOHNSON は次のように表示されます。

J O H N S O N

セッションパラメータ EM は以下のレベルで指定できます。

セッションパラメータ EM で指定した編集マスクは、DDM のフィールドに指定されたデフォルトの編集マスクを上書きします。「DDM エディタ画面の使用」の「拡張フィールド属性の指定」を参照してください。

EM=OFF を指定すると、編集マスクは使用されません。

ステートメントレベルで指定した編集マスクは、レポートレベルで指定した編集マスクを上書きします。

要素レベルで指定した編集マスクは、ステートメントレベルで指定した編集マスクを上書きします。

Top of page

数値フィールドの編集マスク

数値フィールド(フォーマット N、I、P、F)の編集マスクは、数字(0 の場合も含む)で埋める出力位置ごとに 9 を含んでいる必要があります。

小数点の右側に Z を指定することはできません。 符号インジケータなどの先頭文字、末尾文字、および挿入文字は追加できます。

Top of page

英数字フィールドの編集マスク

英数字フィールドの編集マスクは、出力する英数字ごとに X が含まれている必要があります。

いくつかの例外を除いて、先頭文字、末尾文字、および挿入文字は、アポストロフィで囲んでも囲まなくても、追加できます。

シルコンフレクス文字(^)は、編集マスクに空白を挿入するために、数値フィールドおよび英数字フィールドの両方で使用します。

Top of page

フィールドの長さ

編集マスクを割り当てるフィールドの長さに注意することが重要です。

例:

ある英数字フィールドの長さが 12 文字で、出力されるフィールド値が JOHNSON であると仮定した場合、編集マスクによって以下のような結果が得られます。

編集マスク 出力
EM=X.X.X.X.X
J.O.H.N.S
EM=****XXXXXX****
****JOHNSO**

Top of page

日付/時刻フィールドの編集マスク

日付フィールドの編集マスクには、D(日)、M(月)、および Y(年)の文字をさまざまな組み合せで指定できます。

時刻フィールドの編集マスクには、H(時)、I(分)、S(秒)、および T(10 分の 1 秒)の文字をさまざまな組み合せで指定できます。

日付フィールドおよび時刻フィールドの編集マスクとともに、日時システム変数も参照してください。

Top of page

セパレータ文字の表示のカスタマイズ

Natural プログラムは世界中のビジネスアプリケーションで使用されます。 数値データフィールドおよび日時を含むフィールドを I/O ステートメントで表示する場合には、地域的な慣習に応じて、特別な出力スタイルで表示するのが一般的です。 それぞれの表示方法は、プログラムが実行されるロケールの機能として、選択的に処理される代替のプログラムコーディングで認識される必要はありません。ただし、小数点文字および "千桁単位セパレータ文字" を指定する一連のランタイムパラメータとともに、同じプログラムイメージを使用して実行される必要があります。

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

小数点文字

Natural パラメータ DC(小数点文字)を使用すると、編集マスク内で小数点記号("基数点文字" とも呼ぶ)を表すために使用されている文字の代わりに挿入される文字を指定できます。 このパラメータを使用すると、Natural プログラムまたはアプリケーションのユーザーは、任意(特定)の文字を選択して、数値データ項目の整数部と小数部を分けることができます。例えば、米国の店舗では小数点(.)を使用し、ヨーロッパの店舗ではコンマ(,)を使用することなどができます。

ダイナミック千桁単位セパレータ

大きい整数値の出力を構築する場合、一般的には整数の 3 桁ごとにセパレータが挿入されて、千桁ごとに値が分割されます。 このセパレータは、"千桁単位セパレータ"と呼ばれます。 例えば、米国では通常、このためにコンマを使用しますが(1,000,000 など)、ドイツではピリオド(1.000.000)、フランスでは空白(1 000 000)を使用します。

Natural 編集マスクでは、"ダイナミック千桁単位セパレータ" にコンマ(またはピリオド)を使用して、ランタイム時に千桁単位セパレータ文字(THSEPCH パラメータで定義)が挿入される位置を示します。 コンパイル時に、システムコマンド COMPOPT のオプション THSEP、プロファイルパラメータ CMPO のサブパラメータ THSEP、またはマクロ NTCCMPO を使用することで、コンマ(またはピリオド)をダイナミック千桁単位セパレータとして解釈可能または解釈不可にできます。

THSEPOFF に設定した場合(デフォルト)、編集マスクで千桁単位セパレータとして使用されている文字はすべてリテラルとして処理され、ランタイム時にそのまま表示されます。 この設定は下位互換性を保持します。

THSEPON に設定した場合、編集マスク内のコンマ(またはピリオド)はすべてダイナミック千桁単位セパレータとして解釈されます。 一般的に、ダイナミック千桁単位セパレータはコンマですが、コンマがすでに小数点文字(DC)として使用されている場合には、ピリオドが千桁単位セパレータとして使用されます。

ランタイム時に、ダイナミック千桁単位セパレータは、THSEPCH パラメータの現在の値(千桁単位セパレータ文字)に置き換えられます。

パラメータ設定 DC='.' および THSEP=ON でカタログされている Natural プログラムで編集マスク(EM=ZZ,ZZZ,ZZ9.99)を使用します。

ランタイム時のパラメータ設定 表示内容
DC='.' および THSEPCH=',' 1,234,567.89
DC=',' および THSEPCH='.' 1.234.567,89
DC=',' および THSEPCH='/' 1/234/567,89
DC=',' および THSEPCH=' ' 1 234 567,89
DC=',' および THSEPCH='''' 1'234'567,89

Top of page

編集マスクの例

編集マスクと編集マスクで作成される出力の例を以下に示します。

さらに、各編集マスクの省略表記法も示します。 省略形または長い表記のどちらでも使用できます。

編集マスク 省略形 出力 A 出力 B
EM=999.99 EM=9(3).9(2) 367.32 005.40
EM=ZZZZZ9 EM=Z(5)9(1) 0 579
EM=X^XXXXX EM=X(1)^X(5) B LUE A 19379
EM=XXX...XX EM=X(3)...X(2) BLU...E AAB...01
EM=MM.DD.YY * 01.05.87 12.22.86
EM=HH.II.SS.T ** 08.54.12.7 14.32.54.3

* 日付システム変数を使用します。

** 時刻システム変数を使用します。

編集マスクの詳細については、『パラメータリファレンス』のセッションパラメータ EM を参照してください。

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

** Example 'EDITMX01': Edit mask (using default edit masks)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 JOB-TITLE
  2 SALARY (1:3)
  2 CITY
END-DEFINE
*
READ (3) VIEWEMP BY NAME STARTING FROM 'JONES'
  DISPLAY 'N A M E'    NAME         /
          'OCCUPATION' JOB-TITLE
          'SALARY'     SALARY (1:3)
          'LOCATION'   CITY
  SKIP 1
END-READ
END

プログラム EDITMX01 の出力:

上記のプログラムの出力は、使用可能なデフォルトの編集マスクを示しています。

Page      1                                                  04-11-11  14:15:54
 
         N A M E            SALARY         LOCATION
       OCCUPATION
------------------------- ---------- --------------------
 
JONES                          46000 TULSA
MANAGER                        42300
                               39300
 
JONES                          50000 MOBILE
DIRECTOR                       46000
                               42700
 
JONES                          31000 MILWAUKEE
PROGRAMMER                     29400
                               27600

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

** Example 'EDITMX02': Edit mask (using EM)
************************************************************************
DEFINE DATA LOCAL
1 VIEWEMP VIEW OF EMPLOYEES
  2 NAME
  2 FIRST-NAME
  2 JOB-TITLE
  2 SALARY (1:3)
END-DEFINE
*
READ (3) VIEWEMP BY NAME STARTING FROM 'JONES'
 DISPLAY 'N A M E'    NAME         (EM=X^X^X^X^X^X^X^X^X^X^X^X^X^X^X) /
                       FIRST-NAME   (EM=...X(10)...)
          'OCCUPATION' JOB-TITLE    (EM=' ___ 'X(12))
          'SALARY'     SALARY (1:3) (EM=' USD 'ZZZ,999)
  SKIP 1
END-READ
END

プログラム EDITMX02 の出力:

前のプログラム(EM パラメータなしのプログラム例)の出力と比較して、EM 指定がフィールドの表示方法に与える影響を確認します。

Page      1                                                  04-11-11  14:15:54
 
           N A M E               OCCUPATION      SALARY
         FIRST-NAME
----------------------------- ---------------- -----------
 
J O N E S                     ___ MANAGER      USD  46,000
..VIRGINIA  ...                                USD  42,300
                                               USD  39,300
 
J O N E S                     ___ DIRECTOR     USD  50,000
..MARSHA    ...                                USD  46,000
                                               USD  42,700
 
J O N E S                     ___ PROGRAMMER   USD  31,000
..ROBERT    ...                                USD  29,400
                                               USD  27,600

Top of page

編集マスクの他の例

次の例のプログラムを参照してください。

Top of page