関数

mfpubspl インターフェイス データ構造には、API 関数フィールドの設定に使用できる定数フィールドが複数含まれています。これらは、構造自体 (Function というラベルの付いたセクション) に記述されています。各フィールドの名前が、その関数の説明になっています。OPEN 関数および CLOSE 関数は 1 つですが、スプール ファイルごとに次の関数があります。

START
Greater than、Less than、Greater than or equal to、および Less than or equal to。これらの関数を使用すると、対応するキーのデータ領域で指定されたキーを基準にファイル内の位置を確立できます。
GET NEXT
選択した索引に基づいて、論理シーケンスの次のレコードを取得します。
GET PREV
論理シーケンスの前のレコードを取得します。
GET UNIQUE
対応するキーのデータ領域で提供されたキーに一致するレコードを取得します。

COBOL プログラムでは、関数名の前に replacing 句で指定された文字列が付きます。例については、「プログラムの要件」を参照してください。PL/I プログラムでは、関数名の前に mfpubspl_ が付きます。

COBOL の例

...
      *=================================================================
      *    Function
      *=================================================================

           03  ()-FUNC                       PIC X(8).
              88 ()-FUNC-OPEN                        VALUE 'OPEN'. 
              88 ()-FUNC-OPEN-IO                     VALUE 'OPEN-IO'. 
              88 ()-FUNC-CLOSE                       VALUE 'CLOSE'.
      *             Get SPLJOB - Next, Previous, or Unique (i.e. by key)
              88 ()-FUNC-GN-JOB                      VALUE 'GN-JOB'.
              88 ()-FUNC-GP-JOB                      VALUE 'GP-JOB'.
              88 ()-FUNC-GU-JOB                      VALUE 'GU-JOB'.
...

PL/I の例

...	
    /*
       mfpubspl_FUNC_CONSTANTS
    */
    DCL mfpubspl_FUNC_OPEN                CHAR(8) VALUE('OPEN');
    DCL mfpubspl_FUNC_OPEN_IO             CHAR(8) VALUE('OPEN-IO'); 
    DCL mfpubspl_FUNC_CLOSE               CHAR(8) VALUE('CLOSE');
    /*          Get SPLJOB - Next, Previous, or Unique (i.e. by key) */
    DCL mfpubspl_FUNC_GN_JOB              CHAR(8) VALUE('GN-JOB');
    DCL mfpubspl_FUNC_GP_JOB              CHAR(8) VALUE('GP-JOB');
    DCL mfpubspl_FUNC_GU_JOB              CHAR(8) VALUE('GU-JOB');
...

関数を指定するには、これらのフィールドのいずれかの値を mfpubspl データ構造体で定義された関数フィールドに設定します。たとえば、COBOL プログラムで mfpubspl.cpy をインクルードした場合、() を WS-API に置き換えて次のように記述します。

set WS-API-FUNC-GN-JOB to TRUE.

PL/I プログラムの場合は次のようになります。

mfpubspl_FUNC = mfpubspl_FUNC_GN_JOB;

典型的な呼び出しのシーケンスには、次の関数が含まれます。

シーケンス番号 関数 目的
1 OPEN スプール ファイルを開きます。
2 STGT-JOB 特定の SPLJOB レコードに位置を指定します (たとえば、start、key greater than)。
3 GN-JOB 次の論理 SPLJOB レコードを取得します。
4 STGE-DSN 上記の 3 で取得したジョブの最初の SPLDSN レコードに位置を指定します。JESYSMSG レコード (ジョブ ログ) は、常にジョブの最初の SPLDSN レコードであり、DD 番号は 0 です。関連付けられた OUTPUT 文がない場合、出力シーケンス番号は 0 になります。関連付けられた OUTPUT 文がある場合は、そのそれぞれに対応するレコードが生成され、0 以外の出力シーケンス番号が付けられます。
5 GN-DSN 次の論理 SPLDSN レコードを取得します。
6 CLOSE ファイルを閉じます。

シーケンス番号 5 は、ジョブに対する SPLDSN レコード (API 戻りコード 3 – Job number has changed) がなくなるまで繰り返されます。その後、次のジョブ レコードを取得するためにシーケンス番号 2 と 3 が繰り返されます。