システム・ダンプをとる場合には、保管域チェーンに従い、障害ルーチンの名前と、IBM® がそのルーチンを所有しているかどうかを調べてください。エラーのあるルーチンの名前 (1 次エントリー・ポイント名) を検索する手順を次に示します。
- 現行保管域と関連したエントリー・ポイントを見つけます。変位 X'10' (10 進数 16) の以前の保管域にあるエントリー・ポイント・アドレス (EPA) が、このエントリー・ポイント・アドレスを指します。
- 次の 4 つの中からエントリー・ポイント・タイプを決定します。
| エントリー・ポイント・タイプ |
条件 |
| Language Environment® 準拠 |
エントリー・ポイント + 4 が X'00C3C5C5'。 |
| Language Environment 準拠 OPLINK |
エントリー・ポイント + 4 が X'01C3C5C5'。OPLINK リンケージ規約が適用されます。 |
| C/C++ |
エントリー・ポイント + 5 が X'CE'。 |
| 非準拠 |
エントリー・ポイントが上記のいずれでもない。非準拠エントリー・ポイントは、名前がルーチンの始めにあるというリンケージ規約に従うルーチ
ンのためのものです。このルーチン名の前後での分岐を行うための命令は X'47F0Fxxx' です。 |
Language Environment 準拠および C/C++ エントリー・ポイントをもつルーチンの場合には、Language Environment がプログラ
ム・プロローグ域 (PPA) を提供します。PPA1 には、エントリー・ポイント名と PPA2 のアドレスがあり、PPA2 には、リリース・レベル・キーワードがあるタイム・スタンプを指すポインターと、ルーチンの 1 次エントリー・ポイントと関連付けられた PPA1 を指すポインターがありま
す。
- エラーのあるルーチンのエントリー・ポイント・タイプが Language Environment 準拠である場合には、ステップ
3 に進んでください。
- エントリー・ポイント・タイプが C/C++ である場合には、ステップ 5 に進ん
でください。
- エントリー・ポイント・タイプが非準拠である場合には、ステップ 6 に進ん
でください。
- エントリー・ポイント・タイプが Language Environment 準拠である場合には、Language Environment または COBOL プログラムの
エントリー・ポイント名を見つけてください。
- エントリー・ポイントからのオフセット X'C' を使用して、PPA1 のアドレスを見つけます。
- PPA1 では、名前の長さまでのオフセットを見つけます。OPLINK の場合には、オフセットに 2 を乗じて、名前の長さまでの実際のオフ
セットを見つけます。
注: Enterprise COBOL V5.1 以降のリリースでは OPLINK を使用します。
- このオフセットを PPA1 アドレスに加えて、名前の長さを含むハーフワー
ドとそのあとに続くエントリー・ポイント名を見つけます。
エントリー・ポイント名は、システム・ダンプの右側のマージンに、変換されたバージョ
ンと共に EBCDIC で表示されます。
- Language Environment または COBOL プログラム名を見つけます。
- PPA1 の先頭からの X'04' で PPA2 のアドレスを見つけます。Enterprise COBOL V5.1 またはそれ以降のリリースで、PPA1 の開始から X'04' で符号付きオフセットを見つけて、このオフセットをエントリー・ポイント・アドレスに追加し、PPA2 のアドレスを取得してください。
- PPA2 の X'10' でコンパイル単位の 1 次エントリー・ポイントのアドレスを見つけます。Enterprise COBOL V5.1 以降のリリースでは、PPA2 の X'10' で符号付きオフセットを見つけて、このオフセットを PPA2 のアドレスに追加し、コンパイル単位で 1 次エントリー・ポイントを取得してください。
- 上記の 1 次エントリー・ポイントと関連付けられたエントリー・ポイント名を見つけます。1 次エントリー・ポイント名はルーチン名です。
以下の項目の詳細については、「
z/OS Language Environment Vendor Interfaces 」を参照してください。
- Language Environment 準拠の非 XPLINK 用の PPA1 および PPA2。
- XPLINK Language Environment 準拠の PPA1 および XPLINK PPA1 オプション域フィールド。
- 非 XPLINK Language Environment PPA2。
- XPLINK の Language Environment PPA2: コンパイル単位ブロック。
- PPA2 タイム・スタンプおよびバージョン情報。
- エントリー・ポイント・タイプが C/C++ である場合には、C/C++ ルーチン名を見
つけます。
- エントリー・ポイント + 4 を使用して、PPA1 のエントリー・ポイント名までのオフセットを見つけます (図 1 を参照)。
- このオフセットを使用して、名前の長さバイトとそのあとに続くルー
チン名を見つけます。
このルーチン名は、右側のマージンに、変換されたバージョンと共に EBCDIC で
表示されます。
- エントリー・ポイント・タイプが非準拠である場合には、PL/I ルーチン名を見つけます。
- エントリー・ポイントの直前にある 1 バイト長のエリアを見つけます。これがルーチン名の長さです。
- 名前の長さに指定されたバイト数分戻ります。これがルーチン名の始めです。
- エントリー・ポイント・タイプが非準拠である場合には、PL/I 以外のルーチンの名前を
見つけます。
- エントリー・ポイント + 4 をエントリー・ポイント名の位置として使用します。
- 次のバイトを名前の長さとして使用します。名前は、名前の長さバイトの直後に続きます。エントリー・ポイント名は、右側のマージンに、変換されたバージョンと共に EBCDIC で
表示されます。
図 2 は、非準拠エントリー・ポイント・タイプを示しています。
表示される非準拠エントリー・ポイントは、必ずしもリンケージ規約に従うとは限りません。これらの保管域におけるデータの位置は、予測できないことがあります。
図 2. 非準拠エントリー・ポイント・タイプとサンプル・ダンプ 020000 = 47F0F00C 06D3C9E2 E3C9E300 90ECD00C E0B |.00..LISTIT.....|
020010 = 18CF41B0 C29850BD 000850DB 000418DB |....Bq&...&.....|
020020 = 4510C052 E3E8D7D3 C9D54040 01020034 |....TYPLIN ....|
020030 = C200001E C5D5E3C5 D940D5E4 D4C2C5D9 |B...ENTER NUMBER|
020040 = 40D6C640 D9C5C3D6 D9C4E240 D6D940C1 | OF RECORDS OR A|
020050 = D3D30ACA 00020058 4510C06C E6C1C9E3 |LL.........%WAIT|
020060 = D9C44040 010202F0 E4000000 0ACA0002 |RD ...0U.......|