+----------------------------------IBM 拡張----------------------------------+
ID-2 に指定された値に従って、START 操作のためのレコードのヌル・キー・マップを指定します。 ID-2 はブール項目または英数字項目でなければなりません。
ID-2 は、添え字を付けたり、参照変更できます。
ファイルに代替キーがある場合、ID-2 は、参照の現行キーのヌル・キー・マ ップに関連しています。
この句は、ALWNULL 属性をもち、ASSIGN 文節で DATABASE が指定された装置タイプのファイルにだけ指定できます。 キー・フィールドの 1 つがヌル可能で、NULL-KEY-MAP 句が使用されない場合は、すべてのブール・ゼロをもったヌル・キー・マップが使用されます。
この例では、以下の値はファイルの中のキーを表しており、これにはそれぞれが 2 バイトでできた 3 個のフィールドが入っています。 キーは、ファイル・セクションで以下のコードによって定義されます。
INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-1 ASSIGN to DATABASE-FILE1-ALWNULL ACCESS is DYNAMIC RECORD KEY IS FULL-PRODUCT-CODE IN FILE-1 ORGANIZATION IS INDEXED. FD FILE-1. 01 FULL-PRODUCT-CODE. 05 TYPE-CODE PIC X(2). 05 COLOR-CODE PIC X(2). 05 LOCATION-CODE PIC X(2). WORKING-STORAGE SECTION. 01 FILE1-N. 05 FULL-PRODUCT-CODE-NKM. 06 FILLER PIC X VALUE ZERO. 06 COLOR-CODE-NF PIC 1 VALUE B"0". 06 LOCATION-CODE-NF PIC 1 VALUE B"0".
フィールド 2 および 3 はヌル可能フィールドであり、&nexists. はヌルを示し、xx は任意の値を示します。 以下は、ファイルの中のレコードを表しています。
NN&nexists.&nexists.&nexists.&nexists. NN&nexists.&nexists.xx NNxx&nexists.&nexists.
以下の START ステートメントを考えてみます。
START FILE-1 NULL-KEY-MAP IS FULL-PRODUCT-CODE-NKM INVALID KEY DISPLAY "No data in system for product code " TYPE-CODE GO TO ERROR-ROUTINE END-START.
START ステートメントのヌル・キー・マップの値が 010 の場合は、 ポインターはキー NN&nexists.&nexists.xx をもったレコードを指すように設定されます。 START ステートメントのヌル・キー・マップの値が 011 の場合は、 ポインターはキー NN&nexists.&nexists.&nexists.&nexists. をもったレコードを指すように設定されます。
ヌル可能フィールドの使用についての詳細は、「WebSphere Development Studio: ILE COBOL プログラマーの手引き」を参照してください。
+------------------------------End of IBM 拡張-------------------------------+