Makelist 関数

Runlist コマンド ファイルを生成します。

論理的に関連するデータベースのロードには、一定の順序で実行する必要がある複数のステップが伴います。Makelist 関数を使用すると、これらのステップを作成するプロセスが簡単化されます。Makelist は、論理的に関連するデータベースのセットをロードするために必要なステップを含んだ Runlist コマンド ファイルを生成します。Runlist を実行すると、生成されたコマンド ファイル内のステップが実行されます。

構文

mfims imsdbu MAKE {database-name|filename}
     [[NO]CLS] 
     [ECHO(keyword,msglvl,stoplvl
     [[NO]INI(filespec)]
     [[NO]LIST(filespec)]
     [LISTOPEN(disp)]
     [[NO]LOG(filespec)]
     [MAKELISTDSN(output-dsn)]
     [PROGRESS(no-of-segments)]

パラメーター

database-name
関数を実行するデータベースの名前。
filename
関数を実行するデータベースのリストを含んでいるファイルの名前。
CLS
ユーティリティの起動前に画面をクリアします。NOCLS を使用すると、初期クリア画面は防止されます。NOCLS は、コマンド ファイルで一連のユーティリティを実行している場合に役立ちます。
デフォルト: NOCLS
ECHO
IMSDBU によって表示されるメッセージの表示とそれらのメッセージとの対話を制御します。
デフォルト: ECHO(MSGS,4,8)
サブパラメーター
keyword 表示される情報のカテゴリ。次のいずれかを指定します。
ALL
処理メッセージ、入力ソースまたは詳細情報、および終了メッセージを常に表示します。メッセージ レベルが msglvl および stoplvl 値以上の場合は、警告およびエラー メッセージが表示され、ユーザー入力を求めて停止します。
MSGS
処理メッセージと終了メッセージを常に表示します。ソースや詳細情報は表示されません。メッセージ レベルが msglvl および stoplvl 値以上の場合は、警告およびエラー メッセージが表示され、ユーザー入力を求めて停止します。
ERREND
ユーティリティ終了メッセージを常に表示します。メッセージ レベルが msglvl および stoplvl 値以上の場合は、警告およびエラー メッセージが表示され、ユーザー入力を求めて停止します。
ENDMSG
ユーティリティ終了戻りコードが msglvl 以上の場合のみ終了メッセージを表示します。ユーティリティ終了戻りコードが stoplvl 以上の場合は、「Press any key to continue」というメッセージが表示され、入力を求めて停止します。すべての終了メッセージで表示および/または停止するには、msglvl および/または stoplvl の値としてゼロを入力します。
COND
警告/エラー メッセージと終了メッセージは、どちらも msglvl および stoplvl 値を条件としています。メッセージ レベルが msglvl および stoplvl 値以上の場合は、警告およびエラー メッセージが表示され、ユーザー入力を求めて停止します。終了戻りコードが msglvl 以上の場合は、終了メッセージが表示されます。ユーティリティ終了戻りコードが stoplvl 以上の場合は、入力を求める「Press any key to continue」というメッセージが表示されます。
ERRORS
メッセージ レベルが msglvl および stoplvl 以上の場合は、入力を求める警告およびエラー メッセージが表示されます。終了メッセージは表示されません。
msglvl 表示するメッセージの重大度を示す 4 ~ 20 の値。1
stoplvl ユーザー入力を求めて停止するメッセージの重大度を示す 4 ~ 20 の値。1
1 次の値を指定できます。
カテゴリ 原因例
4 一般的な警告メッセージ DBDGEN が仮説を立てて続行することができる DBD ソース内のマイナーなコーディング エラー
6 IMS 固有の警告メッセージ キーワードまたは文がサポート対象外で無視されるという警告 - 処理は続行可能
8 一般的な重大エラー 補正できない DBD ソース内の不正なコーディング ('no DBD statement' など)
10 IMS Option 固有の重大エラー 補正できないサポート対象外の機能が定義されている ('Exceeded some maximum' など)
12 重大エラー - 起こりうる一時的な状態 一時的な I/O エラー ('file locked' または 'database locked’ 状態など)
16 重大エラー - 永続的 - インストールの問題と考えられる 永続的な I/O エラー (無効なデータ セット名やメンバー名がユーティリティに入力された場合や、環境変数が正しく設定されていない場合など)
20 重大エラー - 永続的 回復不能な I/O エラーまたは他の予期しないエラー
INI
デフォルトの指令ファイルを指定します。
デフォルト: なし
サブパラメーター
filespec IMSDBU プログラム デフォルトをオーバーライドする指令を含んだ .INI ファイルの名前と場所。
構文規則
  1. filespec には、必要に応じてドライブまたはディレクトリ、あるいはその両方を含めることができます。ドライブやディレクトリを指定しない場合、IMSDBU は指定された .INI ファイルを現在のディレクトリで検索します。
  2. .INI ファイルにリストされた指令は、IMSDBU プログラム デフォルトをオーバーライドします。
  3. コマンド ラインまたは対話式画面で入力された指令は、.INI ファイル内の指令をオーバーライドします。
  4. 指定内容NOINI を指定すると、.INI ファイルによってプログラム デフォルトがオーバーライドされることはなくなります。
  5. 存在しない .INI ファイルを指定した場合は、NOINI が指定されたかのようにプログラム デフォルトの指令が使用されます。
一般規則
  1. .INI ファイルは ASCII テキスト形式のファイルで、見出し[IMSDBU] を行 1 に含み、列 1 から始まり、1 行に 1 つの指令が含まれる mfims imsdbu 指令のリストが続きます。行は改行またはファイル終わりによって終了します。コメント行は、列 1 のアスタリスク (*) またはセミコロン (;) によって示されます。次に例を示します。
    [IMSDBU]
    PROGRESS(1000)
    ;use local log
    LOG(C:\MYDIR\MYDB.LOG)
LIST
詳細リスティング ファイルの場所と名前を制御します。このリスティング ファイルには、ソース リスティング、完了状態、エラー メッセージ、および実行統計などの項目が含まれています。
デフォルト: LIST(*.LST)
サブパラメーター
filespec リスティング ファイルに使用する名前と場所。
構文規則
  1. filespec には、必要に応じてドライブまたはディレクトリ、あるいはその両方を含めることができます。ドライブやディレクトリを指定しない場合、IMDBU は現在のディレクトリにリスティング ファイルを作成します。
  2. NOLIST はリスティング ファイルの作成を抑制します。
  3. パスを指定するために、パスを表す環境変数名の冒頭にドル記号 ($) を置く表記法を使用できます。たとえば、LIST($ENVVAR\*.DOC) を使用すると、ENVVAR 環境変数によって指定されたディレクトリに dbdname.DOC のリスト ファイルが作成されます。
  4. 指定内容LIST(*.LST) またはLIST(*.RPT) を指定すると、プロジェクト リスティング ディレクトリにリスティング ファイルが作成されます。
  5. パスを指定しない場合、リスティング ファイルは現在のディレクトリに作成されます。
  6. filespec のベース名をアスタリスク (*) として指定した場合、そのアスタリスクは DBD 名に置き換えられます。これにより、IMSDBU は、複数のデータベースに作用することができる関数の個別レポートを提供できるようになります。また、これは DBD 名による履歴詳細レポートの管理にも役立ちます。
  7. 指定内容LISTfilespec なしで指定した場合、LIST(*.LST)を指定した場合と同じになります。
LISTOPEN
詳細リスティング ファイルのオープン ディスポジションを制御します。
デフォルト: LISTOPEN(NEW)
サブパラメーター
disp 使用するディスポジション。次のいずれかになります。
NEW
新しいリスティング ファイルを作成するか、または既存のリスティング ファイルを上書きします。
MOD
リスト出力を既存のファイルに追加します。既存のファイルがない場合は、新しいリスティングを作成します。MOD を指定すると、データベース関数の詳細履歴レコードを維持することができます。
構文規則
  1. NOLIST が指定されている場合は、LISTOPEN は無視されます。
LOG
各関数の終了メッセージ状態を示す IMSDBU アクティビティ ログを指定します。
デフォルト: LOG (IMSDBU.LOG)
サブパラメーター
filespec IMSDBU アクティビティ ログとして使用するファイルの名前と場所。
構文規則
  1. filespec には、必要に応じてドライブまたはディレクトリ、あるいはその両方を含めることができます。ドライブやディレクトリを指定しない場合は、現在のディレクトリにリスティングが作成されます。
  2. NOLOG を指定すると、ログ ファイル出力は抑制されます。
一般規則
  1. ログ ファイルが存在しない場合は、ログ ファイルが作成されます。
  2. ログ ファイルは、ファイル終わりまで記述されている最近のエントリを含んでいる履歴ファイルです。
  3. ログ ファイルのサイズが次第に増えると、状況により定期的に削除が必要になります。
MAKELISTDSN
IMSDBU コマンド用の出力ファイルのデータセット名を指定します。
デフォルト: MAKELISTDSN(MAKELIST.RUN)
サブパラメーター
output-dsn IMSDBU コマンド用の出力ファイルのデータセット名
一般規則
  1. ドライブやディレクトリが指定されていない場合、この出力ファイルは現在のディレクトリに書き込まれます。
PROGRESS
進捗レポーティングの頻度を制御します。
デフォルト: PROGRESS(200)
サブパラメーター
no-of-segments 進捗メッセージを表示する前に処理するセグメントの数を示す 0 ~ 9999 の値。0 を指定すると、進捗レポーティングは無効になります。
構文規則
  1. 指定するセグメント数はデフォルトの 200 より小さい値に減らさないことをお奨めします。非常に小さい値を使用すると、データベース関数のパフォーマンスがはっきりと低下します。
  2. 比較的高速なシステムの場合は、設定値を高くすると (たとえば、1000 以上にすると)、パフォーマンスが多少向上することがあります。
一般規則
  1. 進捗メッセージには、処理されたセグメントの数、または全体のうち完了した割合 (%) と予想される残り時間が表示されます。

入力

入力は、DBDGEN を使用して定義された開始物理 DBD 名です。この DBD から、論理関係に従って論理的に関連するデータベースのセットが作成されます。DBDGEN ファイルは、Makelist への入力です。

出力

出力は Runlist コマンド ファイルです。このファイルの名前とロケーションは、MAKELISTDSN 指令によって制御されます。これは ASCII テキスト ファイルです。指令やファイル名を変更する場合は、任意のテキスト エディターを使用してこのファイルの内容を変更できます。

論理的に関連するデータベース

Makelist は、論理的に関連するデータベースのリストを最初に作成します。DBDGEN 定義は、関係を確認するために使用されます。セットが確認されると、Makelist はデータベースをロードするために必要なロード ステップおよび論理ポインター更新ステップを作成します。

Makelist によって作成されるリストは、単一の DBD 名から始まります。入力 DBD 内の論理子によって参照されるデータベースは、このリストに追加されます。これらの新規に追加された DBD はスキャンされ、これらの DBD の論理子によって参照されるデータベースもリストに追加されます。この処理は、すべての関係が特定されるまで続きます。Makelist を使用するには、すべての物理 DBD が生成されている必要があります。論理子によって参照される DBD が見つからない場合は、エラー メッセージが発行され、Makelist は終了します。エラー メッセージには、必要な DBD 名が含まれています。ユーザーは、その DBD を生成して Makelist を再実行する必要があります。

また、論理子によって参照されるデータベースも生成して、少なくともそれを ゼロロードする必要があります。つまり、論理子が含まれているデータベースへのアクセスが必要な場合は、論理親データベースも生成して、少なくともそれを ゼロロードしなければなりません。

ただし、一方向関係の論理親だけが含まれているデータベースが必要な場合は、論理子が含まれているデータベースは不要です。したがって、始まりの DBD 名によっては、Makelist から得られる結果が異なる可能性があります。

一方向論理関係を定義するデータベースの場合は、Makelist の出力をよく調べる必要があります。また、異なる初期 DBD 名を使用して Makelist を複数回実行し、出力の Runlist ファイルをマージすることもできます。Runlist コマンド ファイルを手動で編集して、データベースのロード ステップを追加することも可能です。これは ASCII テキスト ファイルであり、任意のテキスト エディターで編集できます。特定されなかった必要な論理子データベースがある場合は、ファイルの一番上に Load ステップを追加し、一番下に PtrUpdate ステップを追加します。PtrUpdate ステップは、Load ステップの後に続く必要があります。

次の一方向のサンプルでは、論理的に関連する 3 つのデータベース「A」、「B」、および「C」があるとします。データベース A は、データベース B との一方向の論理的関係を定義する論理的な子セグメントを含みます。データベース B は、データベース A の論理的な子に対する論理的な親を含みます。2 つ目の一方向論理関係は、データベース B と C との間で定義されます。データベース B は、データベース C の論理親を指す論理子セグメントを含みます。つまり、データベース A はデータベース B を指し、データベース B はデータベース C を指します。A は B に関連付けられ、B は一方向の関係によって C に関連付けられています。

例 1

データベース A が開始 DBD 名として使用される場合は、データベース B と C はどちらも含められます。データベース C は、論理子セグメントが含まれていないため、ポインター更新ステップを必要としません。ロード ステップのシーケンスは次のようになります。

LOAD A DSN(...
LOAD B DSN(...
LOAD C DSN(...
PTRUPDATE A ...
PTRUPDATE B ...

例 2

データベース B が開始 DBD 名として使用される場合は、データベース C だけが含められます。データベース C は、論理子セグメントが含まれていないため、ポインター更新ステップを必要としません。ロード ステップのシーケンスは次のようになります。

LOAD B DSN(...
LOAD C DSN(...
PTRUPDATE B ...

アプリケーションでデータベース A を使用する必要がある場合は、Load および PtrUpdate ステップを手動で追加しなければなりません。データベース B および C にのみアクセスする場合、MFIMS はデータベース A を必要としません。A の Load ステップは、最初の PtrUpdate ステップの前に配置する必要があります。PtrUpdate ステップは、最後の Load ステップの後のどこにでも配置できます。

例 3

データベース C が開始 DBD 名として使用される場合は、データベース A と B は含められません。ロード ステップは、単に次のようになります。

LOAD C DSN(...

アプリケーションでデータベース A と B を使用する必要がある場合は、Load および PtrUpdate ステップを手動で追加しなければなりません。データベース C へのアクセスのみが必要な場合は、データベース A または B は必要ありません。3 つのデータベースすべてをロードする手順については、例 1 で示しています。