このドキュメントでは、英数字または数値フィールドの編集マスクを指定する方法について説明します。
次のトピックについて説明します。
セッションパラメータ 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
は以下のレベルで指定できます。
レポートレベル(FORMAT
ステートメント)。
ステートメントレベル(DISPLAY
、WRITE
、INPUT
、MOVE EDITED
、または PRINT
ステートメント)。
要素レベル(DISPLAY
、WRITE
、または INPUT
ステートメント)。
セッションパラメータ EM
で指定した編集マスクは、DDM のフィールドに指定されたデフォルトの編集マスクを上書きします。「DDM エディタ画面の使用」の「拡張フィールド属性の指定」を参照してください。
EM=OFF
を指定すると、編集マスクは使用されません。
ステートメントレベルで指定した編集マスクは、レポートレベルで指定した編集マスクを上書きします。
要素レベルで指定した編集マスクは、ステートメントレベルで指定した編集マスクを上書きします。
数値フィールド(フォーマット N、I、P、F)の編集マスクは、数字(0 の場合も含む)で埋める出力位置ごとに 9
を含んでいる必要があります。
有効数字が 0 以外の場合にのみ出力位置を埋めるよう指示するには、Z
を使用します。
小数点はピリオド(.)で示します。
小数点の右側に Z
を指定することはできません。 符号インジケータなどの先頭文字、末尾文字、および挿入文字は追加できます。
英数字フィールドの編集マスクは、出力する英数字ごとに X
が含まれている必要があります。
いくつかの例外を除いて、先頭文字、末尾文字、および挿入文字は、アポストロフィで囲んでも囲まなくても、追加できます。
シルコンフレクス文字(^)は、編集マスクに空白を挿入するために、数値フィールドおよび英数字フィールドの両方で使用します。
編集マスクを割り当てるフィールドの長さに注意することが重要です。
編集マスクがフィールドより長い場合、予期しない結果が発生します。
編集マスクがフィールドより短い場合、フィールド出力は、編集マスクに指定された桁数に切り詰められます。
ある英数字フィールドの長さが 12 文字で、出力されるフィールド値が JOHNSON
であると仮定した場合、編集マスクによって以下のような結果が得られます。
編集マスク | 出力 |
---|---|
EM=X.X.X.X.X |
J.O.H.N.S |
EM=****XXXXXX**** |
****JOHNSO** |
日付フィールドの編集マスクには、D
(日)、M
(月)、および Y
(年)の文字をさまざまな組み合せで指定できます。
時刻フィールドの編集マスクには、H
(時)、I
(分)、S
(秒)、および T
(10 分の 1 秒)の文字をさまざまな組み合せで指定できます。
日付フィールドおよび時刻フィールドの編集マスクとともに、日時システム変数も参照してください。
Natural プログラムは世界中のビジネスアプリケーションで使用されます。 数値データフィールドおよび日時を含むフィールドを I/O ステートメントで表示する場合には、地域的な慣習に応じて、特別な出力スタイルで表示するのが一般的です。 それぞれの表示方法は、プログラムが実行されるロケールの機能として、選択的に処理される代替のプログラムコーディングで認識される必要はありません。ただし、小数点文字および "千桁単位セパレータ文字" を指定する一連のランタイムパラメータとともに、同じプログラムイメージを使用して実行される必要があります。
以下では次のトピックについて説明します。
Natural パラメータ DC
(小数点文字)を使用すると、編集マスク内で小数点記号("基数点文字" とも呼ぶ)を表すために使用されている文字の代わりに挿入される文字を指定できます。 このパラメータを使用すると、Natural プログラムまたはアプリケーションのユーザーは、任意(特定)の文字を選択して、数値データ項目の整数部と小数部を分けることができます。例えば、米国の店舗では小数点(.)を使用し、ヨーロッパの店舗ではコンマ(,)を使用することなどができます。
大きい整数値の出力を構築する場合、一般的には整数の 3 桁ごとにセパレータが挿入されて、千桁ごとに値が分割されます。 このセパレータは、"千桁単位セパレータ"と呼ばれます。 例えば、米国では通常、このためにコンマを使用しますが(1,000,000 など)、ドイツではピリオド(1.000.000)、フランスでは空白(1 000 000)を使用します。
Natural 編集マスクでは、"ダイナミック千桁単位セパレータ" にコンマ(またはピリオド)を使用して、ランタイム時に千桁単位セパレータ文字(THSEPCH
パラメータで定義)が挿入される位置を示します。 コンパイル時に、システムコマンド COMPOPT
のオプション THSEP、
プロファイルパラメータ CMPO
のサブパラメータ THSEP
、またはマクロ NTCCMPO
を使用することで、コンマ(またはピリオド)をダイナミック千桁単位セパレータとして解釈可能または解釈不可にできます。
THSEP
を OFF
に設定した場合(デフォルト)、編集マスクで千桁単位セパレータとして使用されている文字はすべてリテラルとして処理され、ランタイム時にそのまま表示されます。 この設定は下位互換性を保持します。
THSEP
を ON
に設定した場合、編集マスク内のコンマ(またはピリオド)はすべてダイナミック千桁単位セパレータとして解釈されます。 一般的に、ダイナミック千桁単位セパレータはコンマですが、コンマがすでに小数点文字(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 |
編集マスクと編集マスクで作成される出力の例を以下に示します。
さらに、各編集マスクの省略表記法も示します。 省略形または長い表記のどちらでも使用できます。
編集マスク | 省略形 | 出力 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
を参照してください。
** 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
** 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
次の例のプログラムを参照してください。