PATTERN - 文字列からパターンを生成

PATTERN 関数は、ソース文字列を分析し、ソース文字列の数字、小文字、大文字の配列を表すパターンを作成します。この関数は、データを分析して標準パターンに適合したデータであることを確認する場合に役立ちます。

出力パターンは次のようになります。

  • 1 バイトの入力文字は「9」で表されます。
  • 大文字は「A」、小文字は「a」で表されます。欧州 NLS モード (西ヨーロッパ、中央ヨーロッパ) では、「A」および「a」はアクセント記号付きアルファベットにも適用されます。
  • 日本語の場合、2 バイト文字と半角カタカナは大文字の「C」で表示されます。2 バイト文字には、ひらがな、カタカナ、漢字、全角英数字、および全角記号が含まれます。中国語や韓国語などのすべての 2 バイト文字も「C」で表示されます。
  • 特殊文字はそのまま表示されます。
  • 表示不可の文字は「X」で表示されます。

入力文字列からパターンを作成

PATTERN (length, source_string,  output)

説明

length

数値

source_string の長さです。

source_string

文字

ソース文字列です。文字列は、一重引用符 (') で囲みます。文字列を含むフィールドを指定することもできます。

output

文字

結果を格納するフィールド名、またはフィールドのフォーマットです。フォーマットは一重引用符 (') で囲みます。

文字データからパターンを作成

TESTFILE という名前の固定フォーマットシーケンシャルファイル (LRECL 14) には、次の 19 件のレコードが格納されています。

212-736-6250
212 736 4433
123-45-6789
800-969-INFO
10121-2898
10121
2 Penn Plaza
917-339-6380
917-339-4350
(212) 736-6250
(212) 736-4433
212-736-6250
212-736-6250
212-736-6250
(212) 736 5533
(212) 736 5533
(212) 736 5533
10121 Æ
800-969-INFO

マスターファイルは次のとおりです。

FILENAME=TESTFILE, SUFFIX=FIX     ,            
  SEGMENT=TESTFILE, SEGTYPE=S0, $              
    FIELDNAME=TESTFLD, USAGE=A14, ACTUAL=A14, $

次のリクエストは、TESTFLD の各インスタンスのパターンを生成し、生成されたパターン別にインスタンスを表示します。また、このリクエストは各パターンの個数を集計し、総数に対するパーセントを表示します。PRINT コマンドは、生成された各パターンの TESTFLD の値を表示します。

DYNAM ALLOC DD TESTFILE DA USER1.TESTFILE.FTMFILEDEF TESTFILE DISK testfile.ftmDEFINE FILE TESTFILE
   PATTERN/A14 = PATTERN (14, TESTFLD, 'A14' ) ;
END
TABLE FILE TESTFILE
  SUM CNT.PATTERN AS 'COUNT' PCT.CNT.PATTERN AS 'PERCENT'
   BY PATTERN
 PRINT TESTFLD
   BY PATTERN
ON TABLE COLUMN-TOTAL
END

最後から 2 つ目の行を見ると、入力文字列に表示不可の文字が含まれていたため、生成されたパターンではその文字が「X」で表示されています。それ以外の出力文字列では、数字は「9」、大文字は「A」、小文字は「a」で表示されています。出力結果は次のとおりです。

PATTERN         COUNT  PERCENT  TESTFLD
-------         -----  -------  -------
(999) 999 9999      3    15.79  (212) 736 5533
                                (212) 736 5533
                                (212) 736 5533
(999) 999-9999      2    10.53  (212) 736-6250
                                (212) 736-4433
9 Aaaa Aaaaa        1     5.26  2 Penn Plaza
999 999 9999        1     5.26  212 736 4433
999-99-9999         1     5.26  123-45-6789
999-999-AAAA        2    10.53  800-969-INFO
                                800-969-INFO
999-999-9999        6    31.58  212-736-6250
                                917-339-6380
                                917-339-4350
                                212-736-6250
                                212-736-6250
                                212-736-6250
99999               1     5.26  10121
99999 X             1     5.26  10121 Æ
99999-9999          1     5.26  10121-2898
TOTAL              19   100.00