IBM 提供のコンパイラー・ユーザー出口 (IBMUEXIT) を使用して、メッセージを抑止したり、メッセージの重大度を変更したりすることができます。 SQL プリプロセスでは、プリプロセス自体と DB2 コプロセッサーの両方のメッセージを扱うので、次のことに注意する必要があります。
SQL プリプロセッサーは IBM7021 から IBM7999 の範囲のメッセージを生成します。 これらのメッセージの小サブセットである IBM7040、IBM7041、IBM7042、 IBM7043、および IBM7044 は「特殊」メッセージで、DB2 コプロセッサーから戻されたメッセージ情報を中継しています。 これらの「特殊」メッセージには 2 つのメッセージ番号が含まれています。1 つは SQL プリプロセッサーが割り当てた IBM704x (x は DB2 メッセージの重大度による) の番号で、もう 1 つは DB2 メッセージ・テキストを持つ DB2 メッセージです。 特殊 SQL プリプロセッサー・メッセージのこの小さなサブセットを、ユーザー出口を使用して変更または抑止することはできません。これらの各メッセージは、さまざまな個別の DB2 コプロセッサー・メッセージに使用されるからです。 ただし、その他の「通常」SQL プリプロセッサー・メッセージは、コンパイラー・ユーザー出口を使用して変更または抑止することができます。
ここで、これらの 2 つのタイプの SQL プリプロセッサー・メッセージの重大度を変更する方法の例を示します。
まず、「通常」SQL プリプロセッサー・メッセージを考えてみましょう。IBM7028 を例に取ります。
IBM7028I W Reference var-name is ambiguous.
IBM7028 のような「通常」SQL プリプロセッサー・メッセージの重大度を 4 (警告) から 12 (重大) に変更する場合は、SYSUEXIT DD カードを次のように変更します。
Fac Id Msg No Severity Suppress Comment +--------+--------+----------+----------+------------------------ 'SQL' 7028 12 0 Ambiguous reference
この例のフィールドと値の詳細については、ユーザー出口の用法を参照してください。
次に、「特殊」SQL プリプロセッサー・メッセージの 1 つである IBM7041 を考えてみましょう。
IBM7041I W DSNH527I DSNHOPTS THE PRECOMPILER ATTEMPTED TO USE
THE DB2-SUPPLIED DSNHDECP MODULEこれには 2 つのメッセージ番号が含まれていることに注目してください。「IBM7041」は SQL プリプロセッサーが割り当てたもので、「DSNH527」は DB2 コプロセッサーが割り当てたものです。 IBM7041 のような「特殊」SQL プリプロセッサー・メッセージの重大度を 4 (警告) から 12 (重大) に変更する場合は、SYSUEXIT DD カードを次のように変更します。
Fac Id Msg No Severity Suppress Comment +--------+--------+----------+----------+------------------------ 'SQL' 527 12 0 DB2 coprocessor message
両方のタイプの SQL プリプロセッサー・メッセージの機能 ID が同じであることに注目してください。 ただし、「特殊」SQL プリプロセッサー・メッセージの場合は、DB2 コプロセッサーが割り当てたメッセージ番号 (この場合は「527」) を、変更するメッセージ番号として使用することになります。