Cics-read

提供:Dev Guides
移動先:案内検索

CICS-読み取り

READコマンドは、主キーを使用してファイルからデータを読み取ります。 READコマンドの構文は次のとおりです-

構文

EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
END-EXEC.

次の表は、READコマンドで使用されるパラメータを示しています-

Sr.No Parameter & Description
1

FILE

ファイル名は、読み取りたいファイルの名前です。 これは、ファイルのFCTエントリを識別するCICSシンボリックファイル名です。 ファイル名は最大8文字で、リテラルの場合は引用符で囲む必要があります。

2

INTO

データ領域は、レコードが読み込まれる変数であり、通常は作業用ストレージの構造です。 INTOは、READコマンドを使用するために必要です。

3

RIDFLD

読み取りたいレコードのキーを含むデータ領域の名前があります。

4

LENGTH

指定されたデータ領域に読み込まれる最大文字数を指定します。 ハーフワードのバイナリ値でなければなりません(PIC S9(4)COMP)。 READコマンドが完了すると、CICSは指定された最大値をレコードの実際の長さに置き換えます。 このため、リテラルではなくデータ領域の名前としてLENGTHを指定し、プログラムでLENGTHに複数回使用する場合、このデータ領域を再初期化する必要があります。 長いレコードはエラー状態を引き起こします。

5

KEYLENGTH

キーの長さを指定します。

次の例は、学生IDが主キーである「FL001」ファイルからレコードを読み取る方法を示しています-

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STD-REC-LEN    PIC S9(4) COMP.
01 WS-STD-KEY-LEN    PIC S9(4) COMP.
01 WS-STD-REC-KEY    PIC 9(3).
01 WS-STD-REC        PIC X(70).
PROCEDURE DIVISION.
MOVE +70           TO WS-STD-REC-LEN.
MOVE ‘100’         TO WS-STD-REC-KEY.
MOVE 3             TO WS-STD-KEY-LEN.
EXEC CICS READ
   FILE ('FL001')
   INTO (WS-STD-REC)
   LENGTH (WS-STD-REC-LEN)
   RIDFLD (WS-STD-REC-KEY)
   KEYLENGTH (WS-STD-KEY-LEN)
END-EXEC.

読み取りコマンドオプション

次のオプションはREADコマンドで使用できます-

  • GENERIC -完全なキー値がわからない場合に使用されます。 たとえば、主キーが「10」で始まり、残りのキーは何でもよいレコードが必要です。 キーの長さは3文字ですが、言及しているのは2文字のみです。 マッチングを行うために必要な長さを与えるキーの長さに言及することが重要です。 基準を満たす最初のレコードが選択されます。
  • UPDATE -現在のトランザクションでレコードを更新することを指定します。 UPDATEを指定すると、トランザクションは要求されたレコードを排他的に制御します。 レコードを書き換えたいときに使用します。
  • EQUAL -キーがRIDFLDで指定されたものと完全に一致するレコードのみが必要であることを指定します。
  • GTEQ -キーが指定されたキー以上である最初のレコードが必要であることを指定します。
EXEC CICS READ
   FILE('name')
   INTO(data-area)
   RIDFLD(data-area)
   LENGTH(data-value)
   KEYLENGTH(data-value)
   GENERIC
   UPDATE
   EQUAL
   GTEQ
END-EXEC.

読み取りコマンドの例外

次の表は、READステートメント中に発生する例外のリストを示しています-

Sr.No Exception & Description
1

NOTOPEN

ファイルが開いていません。

2

NOTFND

検索中のレコードはデータセットに存在しません。

3

FILENOTFOUND

ファイルエントリはFCTでは作成されません。

4

LENGERR

コマンドで指定された長さとレコードの実際の長さとの不一致。

5

NOTAUTH

ユーザーにファイルを使用するための十分な権限がない場合。

6

DUPKEY

複数のレコードが代替キーの条件を満たしている場合。