ILE COBOL のロケールには、以下の 3 つのタイプがあります。
特定ロケールは、SPECIAL-NAMES 段落および SET LOCALE ステートメントで参照されます。 SPECIAL-NAMES 段落の特定ロケールの例を、以下に示します。
SPECIAL-NAMES. LOCALE "MYLOCALE" IN LIBRARY "MYLIB" IS newlocale. DATA DIVISION. WORKING-STORAGE SECTION. 01 group-item. 05 num-edit PIC $99.99 SIZE 8 LOCALE newlocale. PROCEDURE DIVISION. MOVE 40 to num-edit.
上記の例では、特定ロケールの簡略名 newlocale が定義されています。 この簡略名は、変数 num-edit の定義で使用されます。 簡略名はプログラムで参照されるので、上記のプログラムが初めて呼び出される際に、実行時の ILE COBOL は、ライブラリー MYLIB のロケール MYLOCALE を検出して、 それを記憶域にロードしようとします。
iSeries システムのロケールは、タイプが *LOCALE のオブジェクトであり、 他の iSeries オブジェクト同様、ライブラリー内に存在し、それに特定の権限を割り当てられています。 COBOL プログラムで定義され、かつ参照されるロケール簡略名は、 プログラムが最初に呼び出される際に解決されます。 考えられる障害のタイプを、以下に示します。
これらのタイプの障害は、ほとんどの他の iSeries オブジェクトで一般的なものです。 上記シナリオはどの場合も、エスケープ・メッセージ (通常は LNR7096) が出されます。 ロケール・オブジェクトは、検出された後、実行時の ILE COBOL によってロードしなければなりません。 ロケール・オブジェクトをロードするには、さまざまなスペースの割り振りが必要です。 使用できるスペースがない場合は、エスケープ・メッセージ (通常は、LNR7070) が出されます。
SET LOCALE には考えられる形式がいくつかあります。特定のロケールを参照できる 2 つの基本形式を次に示します。
SPECIAL-NAMES. LOCALE "ALOCALE" IS alocale. DATA DIVISION. WORKING-STORAGE SECTION. O1 group-item. 05 num-edit PIC +$9(4).99 SIZE 10 LOCALE alocale. * num-edit2 is based on the current locale 05 num-edit2 PIC +$9(4).99 SIZE 10 LOCALE. 05 locale-name PIC X(10) VALUE "FRANCE". 05 locale-lib PIC X(10) VALUE "MYLIB". MOVE 345.67 TO num-edit. * set the current locale to "ALOCALE" in library "*LIBL". SET LOCALE LC_ALL FROM alocale. MOVE 678.02 TO num-edit2. * set the current locale to "FRANCE" in library "MYLIB". SET LOCALE LC_ALL FROM locale-name IN LIBRARY locale-lib. MOVE 678.02 TO num-edit2.
最初の形式は SPECIAL-NAMES 段落のロケール簡略名を参照し、前の例の場合同様、プログラムが最初に呼び出される時に解決され、ロードされます。 2 番目の SET ステートメントでは、ロケール名は ID locale-name の内容から選ばれ、ロケールが存在するライブラリーは ID locale-lib の内容から選ばれます。 この場合、ロケール・オブジェクトの解決とロードは、SET ステートメントの実行時に行われます。 この形式の SET ステートメントで、ロケールが解決できない場合は、エスケープ・メッセージ (通常は LNR7098) が出されます。 メッセージが出される理由のタイプは、前述の LNR7096 の場合と同じです。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.