代替のパターンマッチ

GT.Mは、標準のC, N, U, L, Pの代わりまたは加えて、パターンマッチ演算子を使用するためにユニークなパターン定義を可能にします。既存のパターンコード(patcodes)再定義または新しく追加することができます。これらのコードは、ファイルの仕様の中で定義されています。フォーマットは、次のセクションで説明します。

パターンコードの定義

このセクションでは代替パターンコードを指定するための要件について説明します。これらの仕様は実行時にGT.Mロードされるファイル内のテーブルとして作成されます。

テキストファイルを構築する次のキーワードを使用します。必須な各キーワード:

  • 行エントリに最初の非空白文字として出現します。

  • 大文字です。

テーブル名は大文字にする必要があります。patcodesは、大文字と小文字の区別はありません。

PATSTART(パターン スタート)は、定義テキストの始まりを示し、最初にテーブルを定義する前に出現しなければなりません。

PATTABLE(パターンテーブル)は、テーブル定義の始まりを示します。キーワード PATTABLE は、空白で区切られ、次にテーブル名が続きます。テキストファイルは、複数のPATTABLE含めることができます。

PATCODE(パターンコード)は、patcode定義の始まりを示します。キーワードPATCODEは、空白で区切られ、文字を識別するpatcodeが続きます。次の行に、patcodeで満たされた整数コードのカンマ区切りリストを入力します。PATCODEの定義は、常に直近のPATTABLE名の中に含まれています。PATTABLEは、複数のPATCODE含めることができます。

PATEND(パターンエンド)は、定義テキストの末尾を示します。それは最後のテーブル定義の後に表示しなければなりません。

複数行に渡ってカンマ区切りリストを続行するには、シーケンス内の最後の1つでないことを示すために、各行の終わりにダッシュ(-)を置きます。ファイル内のコメントを入力するには、セミコロン(;)で行を開始します。

次の例では、"NEWLANGUAGE," と呼ばれるpatcodeテーブルを示します。この例では、非標準パターン文字である"S,"をpatcodesとして定義し、そして、"L"は、代替の定義として標準パターン文字 "L"(or小文字)を置き換えています。

例:

PATSTART
  PATTABLE NEWLANGUAGE
  PATCODE S
    144,145,146,147,148,149,150
  PATCODE L
    230,231,232,233,234,235,236,237,238,239,240,241-,242,243,244,245,246,247,248,249,250,251,252,253,254,255
PATEND

patcodeテーブルを定義するには、次の項目に留意してください。

  • GT.Mはテーブル名をロードすることができるのは、プロセスの呼び出し中に一度だけロードできます。ロードされたテーブルの変更は、既にそのテーブルを参照している実行中のプロセスには適用されません。

  • テーブル名"M"は標準Mのために指定され予約されています。これはGT.Mランタイムライブラリに含まれています。

  • 標準 patcodes AとEは、明示的に再定義はできません。A は、常にUとLのコードと同一であり、Eは常にすべての文字のセットを指定します。

  • あなたが定義した C パターンコードは、GT.Mによって印刷に適さない処理をされるそれらの文字を判断するために使用されます。Cが印刷に適する処理としては、すべての文字は定義されません。

  • UTF-8モードでは、M標準のpatcodes (A,C,L,U,N,P,E) はUnicode文字で動作します。アプリケーション開発者は、デフォルトの分類を変更することも、ASCIIサブセットを超えた非標準のpatcodes (B,D,F-K,M,O,Q-T,V-X) を定義することも、どちらもできません。これは、パターンテーブルより大きいコードの文字が含まれていないことを意味します最大ASCIIコード127。

パターンコードの選択

データベースにデフォルトのpatcodeテーブルを確立するために環境変数を定義します:

$ gtm_pattern_file=pathname
$ export gtm_pattern_file

pathname は、どこにpatcodeテーブルの定義を含むテキストファイルがあるか、そして、

$ gtm_pattern_table=tablename
$ export gtm_pattern_table

tablename は、どこにgtm_pattern_fileで指されるファイル内のpatcodeテーブルの名前なのか、

アクティブなプロセスの中で、patcodeテーブルはM VIEWコマンドと%PATCODEユーティリティを使用して確立されます。%PATCODEユーティリティを呼び出す前に、あなたはGT.Mのためのパターン定義ファイルをロードするためのビューを使用することがあります。必要なキーワードと値は:

VIEW "PATLOAD":"pathname" 

この場合、現在のpatcodeテーブルを設定するために、%PATCODEユーティリティ、または、VIEWコマンドを使用することができます。patcodeテーブルを設定するVIEWコマンドのフォーマットは:

VIEW "PATCODE":"tablename"

これは、以下で説明する set ^%PATCODEと同等です。

%PATCODEは、次の付帯的なエントリポイントがあります:

set^%PATCODE(tn)

定義ファイルの仕様では、tnによって指定された名前を持つ1つへ、現在のpatcodeテーブルを設定します。

例:

GTM>Write $$set^%PATCODE("NEWLANGUAGE")
1

もしその名前にテーブルが無い場合は、関数は偽(0)を返し、そして、現在のpatcodeテーブルを変更しません。

get^%PATCODE

現在のpatcodeテーブル名を返します。

例:

GTM>Write $$get^%PATCODE
NEWLANGUAGE 
inserted by FC2 system