オプション

各オプションには、2 つの異なる機能があります。
  1. OFFSET キーワードの開始位置を決定する。
  2. 実行する出力処理を決定する。

個々のオプションを組み合わせ複数フィールド・テストを形成した場合、OFFSET の使用は未変更のままです。ただし、出力処理は COND=E キーワードを指定してコーディングしたオプションによって決定されます。

PRINT
すべての選択レコードが SYSPRINT データ・セット上に表示されるようにします。
COPY
すべての選択レコードが指定の出力データ・セットに転送されるようにします。 また、PRTSYS キーワードをコーディングして、これらのレコードを SYSPRINT データ・セットに書き込むこともできます。
NEGOF
OFFSET キーワード値が、ジャーナル・レコードの終わりからの負のオフセットとして使用されるようにします。 この機能を使用して選択したすべてのレコードは、SYSPRINT データ・セットに表示されます。

次の OPTION 制御ステートメント・キーワードは、すべてオプションです。

OFFSET= または O=
レコード内のテスト対象フィールドの最初のバイトの位置を定義します。 デフォルトは、レコードの位置 1 です。
number
1 から、テストするレコードの長さまでの範囲になります。 最大値は 32767 バイトです。論理レコード長を超えているかどうかを判別するための検査は実行されません。
注: DSECT を使用して制御レコードまたはブロック内の値を見つける場合は、OFFSET パラメーターの開始値を調整する必要があります。 ほとんどの DSECT は相対値ゼロで始まります。これに対して、OFFSET キーワードに指定する値は、常にバイト 1 を基準とする相対値として表わされます。
FLDTYP= または T=
VALUE= フィールド内のデータのタイプを定義します。
X
データは 16 進数のペアとして取り扱われます。 テスト・データは (対応 する 16 進数に相当する値を形成するために 2 バイトが 1 バイトに) パックされます。 これはデフォルト値です。

例 : VALUE=D9D6D6E3E2C5C7 (14 バイト) を FLDTYP=X パラメーターと共に指定すると、その結果の VALUE= の値は、EBCDIC 文字では ROOTSEG、16 進数では D9D6D6E3E2C5C7 のようになります。いずれの場合も、長さは 7 バイトです。

C
データは EBCDIC 文字として取り扱われます。 DFHJUP は、OPTION ステートメントでコーディングされたデータを、変更せずに使用します。
VALUE= または V=
テスト・フィールドを構成する文字を定義します。 FLDTYPE=X を指定した場合には、このデータを 16 進文字の対として入力しなければなりません。 「マスク下のテスト」条件では、単一の対でテスト用の 16 進数値を表さなければなりません。 FLDTYP=C を指定した場合には、値データは EBCDIC 文字として入力する必要があります。 ただし、ブランクまたはコンマ文字が値に含まれる場合には、FLDTYP=X を指定し、値オペランドを 16 進文字としてコーディングし、ブランクには X'40' を、コンマには X'6B' を適宜使用しなければなりません。
ストリング
EBCDIC 文字で 255 桁、または 16 進文字で 510 桁を超えることはできません。 このフィールドの長さは、このフィールド内の非ヌル文字の数ではなく、FLDLEN= キーワードの値によって設定されます。
FLDLEN= または L=
テスト・フィールドから使用される文字数を定義します。
number
VALUE= キーワードに指定された文字数ではなく、使用される実際のバイト数を表します。 このフィールドの許容値の範囲は、1 から 255 までです。 デフォルトは、1 です。
COND= または C=
テストのタイプ、およびグループ内の他のテストとの関係を定義します。 このキーワードを指定しない場合、デフォルトは COND=E です。
E
テスト・シリーズ内の最後の (または唯一の) エレメントにマークを付けます。 この後に現れる OPTION 制御ステートメントはすべて、新規のテスト・シリーズを形成します。 テスト・シリーズを終了するために E をコーディングすると、DFHJUP が各種のテストを各レコードに対して実行できるようになり、各テスト・シリーズがレコード内のさまざまなフィールドに対して使用可能になります。 最終出力処理は、このキーワード値で定義された OPTION 機能によって決まります。
M
これが複数フィールド・テストであることを示します。 つまり、各入力レコードに対して複数のテストが行われます。 レコードの選択処理および出力処理を開始するには、このシリーズのすべてのテストを満たす必要があります。
T
VALUE= バイトが、比較フィールドとしてではなく、「マスク下のテスト」値として使用されます。 VALUE= フィールドの最初のバイト (FLDTYP=X の場合は 2 つの 16 進文字) のみが使用されます。 FLDTYP=C を使用する場合は、EBCDIC 文字に相当する 16 進文字がテスト値です。 COND=T をコーディングする場合、FLDLEN= キーワードを指定してはなりません。DFHJUP はデフォルトの長さとして 1 を使用します。
Y
マスク下のテストを満たしたと判断されるためには、テスト・バイトの各ビットに対応するビットが、レコード・テスト・フィールドに存在していなければならないことを示します。 これは、branch-if-ones (存在すれば分岐) テストに相当します。
N
マスク下のテストを満たしたと判断されるためには、テスト・バイトのどのビットに対応するビットも、レコード・テスト・フィールドに存在してはならないことを示します。 これは、branch-if-zeros (ゼロなら分岐) テストに相当します。
MT
上記の T について説明したように、マスク下テスト・オプションを定義します。ただし、M について説明したように、複数フィールド・テストのプロパティーを使用します。 T パラメーターによって FLDLEN のデフォルトが 1 になるため、マスク下テストの値で始まる複数フィールド・テストには、MT パラメーターを使用する必要があります。
ET
複数フィールドのテスト・シリーズが、「マスク下のテスト」条件で終了 することを示しています。
EXITR= または E=
候補レコードが現行テストのすべての選択基準を満たしたときに、制御を受け取る出口ルーチンのエントリー・ポイント名を指定します。

複数のテスト・グループが同じ出口ルーチンを指定した場合、DFHJUP はグループごとにそのルーチンをストレージにロードしようとします。したがって、そのルーチンは再入可能でなければなりません。 入力のファイルの終わりに達したとき、最終呼び出しが出口ルーチンに対して行われます。 ファイルの終わりに達したかどうかは、パラメーター・フィールド内にゼロがあるかどうかを検査することによって判断できます。

出口ルーチンへのインターフェースは次のとおりです。

ENTRY:
  • REGISTERS
  • R1 にはパラメーター・リストへのポインターが含まれています。
  • R13 は空の保管域を指しています。
  • R14 には戻りアドレスが含まれています。
  • R15 には出口ルーチンの入り口アドレスが含まれています。
  • PARMLIST
  • パラメーター・リストは 2 つのワードで構成されています。 最初のワードは候補レコードを指し、2 番目のワード (上位ビットがオン) は SYSPRINT データ・セット DCB を指しています。
EXIT:
  • 出口ルーチンから戻ったときに、このレコードの処理を続行するかどうかを、レジスター 15 の内容で判別します。
  • ゼロ以外の値であれば、このレコードをこれ以上処理せず、次の入力レコードに対して選択テストを再び開始します。
  • ゼロの値はこのレコードが必要であることを示します。COND=E キーワードが入っている最後の OPTIONステートメントによって、出力処理が決まります。
  • EXITR キーワードを省略した場合は、ゼロの戻りコード値を受け取ったときと同様に処理が続行されます。
DDNAME= または D=
DL/I 呼び出しトレース・ジャーナル・レコード検索ルーチンが使用する出力データ・セットを定義します (このルーチンがユーザー出口ルーチンとして指定されている場合)。 対応する DD ステートメントを指定する必要があります。
PRTSYS= または P=
選択されたすべてのレコードを SYSPRINT データ・セット上に出力するかどうかを決定します。
N
選択されたレコードを出力しないことを示します。
Y
出力データ・セットに転送されるすべてのレコードを形式設定して出力することを示します。

このキーワードが使用できるのは、OPTION COPY 機能と一緒の場合のみです。 N がデフォルトです。

NEWDCB
オリジナル・データ・セットの DCB 情報を無視するには、COPY 機能を使用するときに、NEWDCB を指定します。 出力データ・セットの JCL に、 新しい DCB 情報を提供してください。 このプロセスを使用して、 CICS® Transaction Server for OS/390®バージョン 1 リリース 1 で導入されたフォーマットのログ・ストリームから、 COMPAT41 モードの出力データ・セットを作成できます。 JCL で、出力データ・セットが可変長ブロック化フォーマットになるように指定することができます。
注: 入力ログ・データが COMPAT41 形式に変換されていない場合は、NEWDCB を使用して出力データ・セット属性を指定することができます。 つまり、このデータは、CICS Transaction Server for OS/390 バージョン 1 リリース 1 で導入された新しいログ・データ・フォーマットになります。 NEWDCB を使用して BSAM データ・セットにデータをコピーするということは、データが各種アクセス方式の制約事項および要件に準拠している必要があるということです。 例えば、BSAM データのサイズは 32 KB を超えることはできません。 また、変数にコピーされたデータ、可変長ブロック、NEWDCB を使用したデータ・セット (recfm=V or recfm=VB) では、可変長フォーマットのデータが必要です。 これは、NEWDCB のコピー手順で使用する場合に、新しいログ・レコード・フォーマットが原因で DFHJUP が S002 で失敗することを意味します。新しいログ・レコード・フォーマットは、レコードが LLBB フルワードで始まっておらず、入力データが可変長フォーマットではないためです。

CICS Transaction Server for OS/390 バージョン 1 リリース 1 で導入された形式の入力データに対して NEWDCB を使用する場合は、DFHJUP でレコードの形式を変更し、レコードの開始に LLBB 値を置くように、出口プログラムを定義することができます。 これを行うと、NEWDCB を使用してデータを別のレコード・フォーマットにコピーできます。

以下の例の出口プログラムを使用して、この結果を得ることができます。 このプログラムは、各レコードの最初のワードを変更して、LLBB フィールドに置き換えます。また、CICS ブロック・ヘッダー・レコードを返さないようにします (CICS で内部使用されるため)。 EXITR= または E=OPTION ステートメントを使用して、DFHJUP に出口プログラムを定義します。

      ****************************************************************
      *                                                              *
      * MODULE NAME = JUPEXIT                                        *
      *                                                              *
      * DESCRIPTIVE NAME = Sample exit program for DFHJUP            *
      *                                                              *
      * @BANNER_START                           01                   *
      * Licensed Materials - Property of IBM                         *
      *                                                              *
      *  5655-S97             JUPEXIT                                *
      *                                                              *
      * (C) Copyright IBM Corp. 2009                                 *
      *                                                              *
      * CICS                                                         *
      * (Element of CICS Transaction Server                          *
      * for z/OS, Version 4 Release 2)                               *
      * @BANNER_END                                                  *
      *                                                              *
      * STATUS = 4.2.0                                               *
      *                                                              *
      * Provide a sample exit routine for DFHJUP, to parse log       *
      * records and reject block header records. Adjust remaining    *
      * records to have an LLBB at their start. This means that      *
      * the remaining CICS TS log records returned by DFHJUP are     *
      * in RECFM=VB format, and so are eligible for blocking by      *
      * BSAM if COPY is used with a NEWDCB for the output data set.   *
      ****************************************************************
               DFHREGS                      Establish register equates
      JUPEXIT  CSECT
               STM   R14,R12,12(R13)        Save the registers
               BASR  R3,0                   Establish base register
               USING *,R3                   Tell the assembler
               ICM   R4,15,0(R1)            Address record
               BZ    EOF                    If plist empty then eof
               CLC   0(0,R4),=CL4'>DFH'     Test for block hdr record
               BE    EXITREJ                If so, reject record
               L     R5,0(,R4)              Pick up record length
               SLL   R5,16                  Convert to LLBB format
               ST    R5,0(,R4)              Store back at start
      *        WTO   'DFHJUP EXIT RAN'      Diagnostic message
               B     EXIT                   Leave the program
      EOF      DS    0H
      *        WTO   'EOF ENCOUNTERED'      Diagnostic message
      EXIT     DS    0H
               LM    R14,R12,12(R13)        Restore the registers
               SR    R15,R15                Set a good return code
               BR    R14                    Return to DFHJUP
      EXITREJ  DS    0H
               LM    R14,R12,12(R13)        Restore the registers
               LA    R15,1                  Set a bad rc (no base)
               BR    R14                    Return to DFHJUP
               DROP  R3                     Tell the assembler
               LTORG                        Define the literal pool
               END