前ページへH2cpy ユーティリティ 並行処理のサポート次ページへ

第 13 章 アプリケーション構成システム

アプリケーション構成システムは、各プログラムの動作を制御するために標準の構成手法の使用を可能にします。

13.1 概要

プログラム情報を一括して構成するメカニズムがあれば、プログラムを変更したり、コードを拡張する必要性が抑制され、プログラムの実行条件も柔軟になります。

アプリケーション構成システム、または Mfconfig プログラムは、 開発環境向けに作成されたものですが、開発したプログラム側で利用することも可能です。

アプリケーション構成システムは、Server Express の統合ツールの 1 つです。統合ツールとは、アプリケーションを統合するメニューシステムを円滑に作成するための一連のプログラムの総称です。Server Express のマニュアルでは、アプリケーション構成システム以外にも 7 つの統合ツール (Banner、ディレクトリ機能、Help、Linein、オンラインヘルプシステム、Menu Handler、および Setup) に言及しています。

アプリケーション構成システムを使用するプログラムの動作は、構成情報を格納するファイルによって制御されます。このファイルは標準のテキストファイルであり、COBOL Editor やその他のエディタで作成したり、編集することができます。アプリケーション構成システムを使用する各プログラムは、同じ構成ファイルを共有できます。特定のプログラムのみに属する情報はタグで識別されるため、その他の情報を追加しても他のプログラムの動作に影響が及ぶことはありません。アプリケーション構成システムの役割は、この構成ファイルの内容を解析して、呼び出し側のプログラムに関係のある情報を返すのみです。

13.2 利用方法

アプリケーション構成システムを使用するには、構成情報を含むファイルを作成した後、プログラム内から Mfconfig プログラムを呼び出します。Mfconfig によって構成情報が取り込まれます。

13.2.1 構成ファイルの位置

構成ファイルは任意のディレクトリに作成できます。Mfconfig プログラムを呼び出すときに、使用する構成ファイルのパスとファイル名を指定します。構成ファイルの位置を省略すると、Mfconfig は mftools.cfg という名前のファイルをカレントディレクトリ内で検索し、見つからなければ COBDIR 環境変数で指定されたディレクトリ内で検索します。

13.2.2 構成ファイルの共有

構成情報は、標準のテキスト形式で構成ファイルに格納されます。1 つの構成ファイルは、複数のプログラムで共有することができます。お互いの機能にまったく共通性がないプログラム間の共有も可能です。

Server Express の開発環境は、構成ファイルとして $COBDIR/etc ディレクトリ内の mfcobolrc ファイルを使用します。この構成ファイルには、次のプログラムに関する構成情報が含まれています。

13.3 構成ファイルの構造

構成ファイルは、複数のレコードから構成される行順ファイルです。各レコードの最大長は 255 文字です。

構成ファイルの内容は、タグによって複数のセクションに分けられます。タグとは、後続のデータを特定のプログラムに関連付ける文字列のことです。各タグはそれぞれ一意であり、1 つのファイル内で同じタグを繰り返し使用することはできません。タグは行のどの位置にも記述できます。タグに続く各行は、次のタグが検出されるまで、すべて対応するプログラムに関連付けられます。

タグとコメントの行は、インジケータと呼ばれる特殊文字で識別されます。インジケータはデフォルトで定義されていますが、独自に定義することも可能です。インジケータを通常の文字として使用するには、その直前にエスケープ文字 (\) を付けます。

13.3.1 タグインジケータ

タグのインジケータとして使用する文字は、独自に定義できます。インジケータには 2 つの種類があります。1 つはタグの直前に 1 文字で指定するインジケータ、もう 1 つは一組の文字でタグを囲むインジケータです。

デフォルトのタグインジケータは角かっこ ([]) です。

タグインジケータを独自に定義するには、構成ファイルの先頭行に次のいずれかの形式でインジケータの定義を記述します。

TAG-INDICATOR: s

s にインジケータとして使用する文字を指定します。

TAG-INDICATOR: s  t

タグを囲むインジケータの文字を st に指定します。

タグインジケータには、英数文字を使用すべきではありません。タグインジケータとして二重引用符を使用する場合は、次のように定義します。

TAG-INDICATOR " 

大かっこ ({ }) を使用する場合は、次のように定義します。

TAG-INDICATOR { } 

TAG-INDICATOR は必ず大文字で記述します。

13.3.2 タグ

タグは通常、次のようにパラメータと値を組み合わせた形式で指定します。

parameter: value

タグの形式は基本的には任意ですが、さまざまなプログラムが同じファイル内のタグを使用する可能性があるため、明確に区別できる形式で指定すべきです。

たとえば、構成ファイルを使用する開発環境コンポーネントのタグは通常、先頭に MF- または MFC- を付けて区別されます。

タグの先頭にプログラム名を表す文字列を付けるのが、タグの標準的な指定方法と言えます。

13.3.2.1 システム属性タグ

構成ファイルでは、16 種類のシステム属性を通じてアプリケーションの色設定を定義できます。

これらの属性の設定方法は、対象の画面がカラー、またはモノクロであるかによって異なります。次に、カラー画面用とモノクロ画面用の色設定オプションについて説明します。

13.3.2.1.1 カラー画面用の設定

カラー画面用の属性は、次の形式で設定します。

attribute-name: foreground ON background [BLINK]

設定例

SYS-ATT-11: Brown ON Black 

attribute-name に属性名、foreground に前景色、background に背景色をそれぞれ指定します。いずれも大文字と小文字を任意に組み合わせて指定できます。属性名には通常、先頭に SYS-ATT-n を付けたシステム属性名を使用します (n は 1 〜 16 の数字)。システム属性の名前は、次に示すようなメニュー上で使用される名前に対応しています。

SYS-ATT-1 予備
SYS-ATT-2 予備
SYS-ATT-3 Menu-text
SYS-ATT-4 Key-tops
SYS-ATT-5 Tell-tales
SYS-ATT-6 Lock-on
SYS-ATT-7 Animated-text
SYS-ATT-8 Error-messages
SYS-ATT-9 予備
SYS-ATT-10 Margins
SYS-ATT-11 Normal-text
SYS-ATT-12 Current-line
SYS-ATT-13 予備
SYS-ATT-14 予備
SYS-ATT-15 予備
SYS-ATT-16 予備

次の色は、前景色と背景色のどちらにも設定できます。

BLACK
BLUE
GREEN
CYAN
RED
MAGENTA
BROWN
LIGHT-GREY

次の色は前景色のみです。

DARK-GREY
LIGHT-BLUE
LIGHT-GREEN
LIGHT-CYAN
LIGHT-RED
LIGHT-MAGENTA
YELLOW
WHITE

これらの色は、大文字と小文字を任意に組み合わせて指定できます。ただし、スペルは必ず標記に従ってください。前景や背景の色を指定しなかったり、指定した色が無効な場合には、該当する属性はデフォルト色 (BLACK) に設定されます。

カラー画面には、BLINK 属性も使用できます。この属性を指定すると、該当するシステム属性で定義されるテキストが点滅します。

13.3.2.1.2 モノクロ画面用の設定

モノクロ画面用の属性は、次の形式で設定します。

attribute-name:{NORMAL       } [HIGHLIGHT] [BLINK]
               {INVISIBLE    }
               {REVERSE-VIDEO}

設定例

SYS-ATT-08: NORMAL HIGHLIGHT

モノクロ画面用に指定できる属性は次のとおりです。

NORMAL
UNDERLINE
REVERSE-VIDEO
BLINK
HIGHLIGHT
INVISIBLE

BLINK と HIGHLIGHT の指定は任意であり、両方を一度に指定することも、どちらか一方のみを指定することもできます。

モノクロ画面用とカラー画面用の設定は、同じ構成ファイル内に記述できます。使用しているマシンの画面の種類に適した設定のみが、初期化時に適用されます。

13.3.3 コメントインジケータ

構成ファイル内のコメントを示す記号 (コメントインジケータ) も独自に定義できます。デフォルト以外のコメントインジケータをファイル全体で使用するには、必ずその定義をファイルの先頭行 (先頭行でタグインジケータが定義されている場合は 2 行め) に記述します。コメントインジケータは、ファイル内のその他の行で定義することも可能です。ただし、常にタグの直後の行で定義する必要があります。この方法で定義したコメントインジケータは、該当するタグの内部のみで有効です。

タグの直後の行でコメントインジケータが定義されていないセクションでは、ファイルの先頭で定義されたコメントインジケータが使用されます。ファイルの先頭でコメントインジケータが定義されていない場合は、デフォルトのインジケータが使用されます。

デフォルトのコメントインジケータはセミコロン (;) です。

コメントインジケータは次の形式で定義します。

COMMENT-INDICATOR: c

c にインジケータとして使用する記号を指定します。通常、コメントインジケータには英数字を使用せず、*! などの記号を指定します。COMMENT-INDICATOR は必ず大文字で記述してください。

コメントインジケータが行の先頭に位置する場合は、その行の全体がコメントとして認識されます。一方、コメントインジケータが行の途中に位置する場合は、コメントインジケータの直前までの記述内容は処理対象になります。なお、空白行はすべてコメントとして扱われます。

コメントインジケータとして定義した記号を、通常の文字として使用するには、その直前にエスケープ文字 (\) を付けます。たとえば、デフォルトのコメントインジケータ (;) が有効な場合にセミコロンを使用するには、\; と記述します。

13.3.4 構成ファイルの例

Server Express の使用環境には構成ファイルが自動的に生成されており、自身で構成ファイルを作成する場合に参考として利用できます。

ここでは、例 1 でシステムの色設定のサンプルを示し、例 2 でタグとコメントのインジケータの定義方法を示します。

例 1

構成ファイルに含まれる 2 つのセクションの例を次に示します。

[MF-CMENU]
LOGGING:OFF

Menu Handler は MF-CMENU タグを指定してアプリケーション構成システムを呼び出し、同タグで識別されるセクション内の各レコードを受け取ります。Menu Handler は受け取ったレコードを基に、環境関数をログに記録するかどうかを決定します。

この例は、主に環境の色設定と環境関数のログ機能のセットアップに使用される構成ファイルを示しています。

[MF-ATTRIBUTES]
SYS-ATT-1:BLACK ON BLACK
SYS-ATT-2:YELLOW ON RED
SYS-ATT-3:BROWN ON BLACK
SYS-ATT-4:YELLOW ON BLACK
SYS-ATT-5:LIGHT-CYAN ON BLACK
SYS-ATT-6:WHITE ON BLACK
SYS-ATT-7:CYAN ON BLACK
SYS-ATT-8:WHITE ON BLACK BLINK
SYS-ATT-10:YELLOW ON RED
SYS-ATT-11:BROWN ON BLACK
SYS-ATT-12:YELLOW ON BLACK
SYS-ATT-1:INVISIBLE
SYS-ATT-2:REVERSE-VIDEO
SYS-ATT-3:NORMAL
SYS-ATT-4:NORMAL HIGHLIGHT
SYS-ATT-5:UNDERLINE
SYS-ATT-6:UNDERLINE HIGHLIGHT
SYS-ATT-7:NORMAL
SYS-ATT-8:NORMAL HIGHLIGHT BLINK
SYS-ATT-10:REVERSE-VIDEO
SYS-ATT-11:NORMAL
SYS-ATT-12:NORMAL HIGHLIGHT

このセクションは、実行可能ファイルの起動時に構成ファイルの一部として取り込まれ、環境の色設定に使用されます。この例にはカラー画面とモノクロ画面の両方のデフォルト色設定が含まれていますが、呼び出し側のプログラムによって構文がチェックされ、動作端末に適したレコードが使用されます。

例 2

次の構成ファイル例は、タブとコメントに関連するさまざまな記述方法を示しています。

TAG-INDICATOR: #
COMMENT INDICATOR: ;
; (コメント。この行は返されません)
#TAG-1
COMMENT INDICATOR: *
LINE 1      * (コメント)
LINE 2
* コメント
LINE 3
LINE 4
     *  (コメント)
LINE 5
#TAG-2
LINE A
LINE B;     (コメント)
LINE C
#TAG-3
; (コメント)
THEN A LINE TO RETURN WITH 2 \; IN \; IT
; 上の行はエスケープ文字を使用しており、
; THEN A LINE TO RETURN WITH 2 ; IN ; IT
; が返されます。
; (コメント)

このファイルから実際にプログラム側に返されるレコードは次のとおりです。

LINE 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE A
LINE B
LINE C
THEN A LINE TO RETURN WITH 2 ; IN ; IT

13.4 呼び出しインターフェイス

構成ファイルの解析には、Mfconfig というプログラムを使用します。Mfconfig は他のプログラムから呼び出され、構成ファイルの解析を実行し、そのプログラムに適したすべてのテキスト行を返します。

13.4.1 パラメータ

Mfconfig の呼び出し構文を次に示します。この構文に示すように、各パラメータは入力または出力のみに使用されます。Mfconfig に渡す文字列には、必ず ASCII 文字集合を使用します。

call "mfconfig" using   function            (入力)
                        return-status       (出力)
                        component-tag       (入力)
                        lcomponent-record   (出力)
                        config-filename     (入力)

各パラメータについて次に説明します。

function PIC X COMP-X データ項目。実行すべき処理を示すコードを指定します。有効な各コードと処理の関係を次に示します。
0 タグ領域を検索し、最初のレコードを返す。
1 タグ領域の次のレコードを返す。
2 構成ファイルを閉じる。
128 タグ領域を検索し、最初のレコードとその長さを返す。
129 タグ領域の次のレコードとその長さを返す。

それぞれの値を指定した場合の Mfconfig による構成ファイルの処理方法の詳細については、後述する『Mfconfig による処理の手順』を参照してください。

return-status PIC X COMP-X データ項目。呼び出し側プログラムに呼び出しの成否を通知する状態コードが格納されます。有効な状態コードとその意味を次に一覧します。
0 呼び出しに成功しました。function が 0 または 1 の場合は、バッファに文字列が格納されます。
1 タグで指定されるセクションの最終行に到達しました。レコードは返されず、レコード領域には構成ファイル内の次のタグが格納されます。
2 Mfconfig に空のタグ項目が渡されました。テキストは返されません。
3 タグインジケータの記号が無効です。
4 コメントインジケータの記号が無効です。
5 構成ファイル内で無効なタグが見つかしました (タグの一部のみが検出された場合など)。
10 function パラメータの値が無効です。
11 構成ファイルが閉じられています。
128 タグが構成ファイル内に見つかりません。
253 ファイルがロックされています。
254 構成ファイルが見つかりません。
255 その他のファイルエラー。
component-tag PIC X(32) データ項目です。Mfconfig が返すべき行をタグで指定します。
lcomponent-record 集団項目。次の要素から構成されます。
length PIC X COMP-X データ項目。component-record の長さを示します。この値は、Mfconfig の呼び出し前に入力する必要があります。function が 128 または 129 の場合は、呼び出しの終了時に返されたレコードの長さが格納されます。
component-record PIC X(n) データ項目。n は呼び出し側のプログラムで指定します。構成ファイル内の指定されたタグの各行が格納されます。最大長は 255 バイト。
config-filename PIC X(65) データ項目。構成ファイルの名前を指定します。このパラメータを省略する、または空白文字を指定すると、Mfconfig はデフォルトのパスと構成ファイル (mftools.cfg) を使用します。Mfconfig は mftools.cfg ファイルをカレントディレクトリ内で検索し、見つからなければ COBDIR で指定されるディレクトリ内を検索します。ファイル名のみを指定してパスを省略した場合も、カレントディレクトリ、COBDIR のディレクトリの順でファイルが検索されます。指定された構成ファイルが見つからなければ、呼び出し側プログラムにエラーが返されます。

13.4.2 Mfconfig による処理の手順

Mfconfig を最初に呼び出す場合は、function パラメータに 0 を指定します。この呼び出しを行うと、Mfconfig は構成ファイルの先頭行を読み込みます。この行でタグインジケータの定義を検出すると、Mfconfig はタグインジケータを定義値で設定します。先頭行でタグインジケータの定義が見つからなければ、デフォルトのインジケータ ([]) が使用されます。

Mfconfig はコメントインジケータを構成ファイル内の指定された値、またはデフォルトのセミコロンで設定します。続いて、Mfconfig は指定されたタグの行が見つかるまで構成ファイルを読み進み、次のレコードを呼び出し側プログラムに返します (次の行に別のタグが記述されている場合を除く)。そして、Mfconfig は状態コード 0 を返します。

上記の呼び出しの完了後、function に 1 を指定して Mfconfig を呼び出す場合と、2 を指定して呼び出す場合の処理を次に示します。

1 別のタグが見つかるまで、以降のレコードが順次呼び出し側プログラムに返されます。別のタグが見つかると、Mfconfig は状態コード 1 を呼び出し側プログラムに返します。
2 開いている構成ファイルが閉じられます。この処理が成功すると、Mfconfig は状態コード 11 を返します。

構成ファイル内でエラーを検出すると、Mfconfig は呼び出し側プログラムに適切なエラーの状態コードを返し、リターンコード 1 を返します。エラーの状態コードには次の種類があります。

2 Mfconfig に空のタグ項目が渡されました。テキストは返されません。
3 タグインジケータの記号が無効です。
4 コメントインジケータの記号が無効です。
5 構成ファイル内で無効なタグが見つかりました (タグの一部のみが検出された場合など)。
10 function パラメータの値が無効です。
128 タグが構成ファイル内に見つかりません。
253 ファイルがロックされています。
254 構成ファイルが見つかりません。
255 その他のファイルエラー。

構成ファイルを閉じるには、function 項目に 2 を指定して Mfconfig を呼び出します。


Copyright © 2002 Micro Focus International Limited. All rights reserved.
本書、ならびに使用されている固有の商標と商品名は国際法で保護されています。

前ページへH2cpy ユーティリティ 並行処理のサポート次ページへ