CICS - 讀取



READ 命令使用主鍵從檔案讀取資料。以下是 READ 命令的語法:

語法

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

下表列出了 READ 命令中使用的引數:

序號 引數及描述
1

FILE

檔名是要讀取的檔案的名稱。這是標識檔案 FCT 條目的 CICS 符號檔名。檔名最多可以包含 8 個字元,如果它們是文字,則應括在引號中。

2

INTO

資料區是要將記錄讀取到的變數,通常是工作儲存中的結構。INTO 是 READ 命令使用的必要條件。

3

RIDFLD

它包含要讀取的記錄鍵的資料區的名稱。

4

LENGTH

它指定可以讀取到指定資料區的最大字元數。它必須是半字二進位制值 (PIC S9(4) COMP)。READ 命令完成後,CICS 會將我們指定的最大值替換為記錄的真實長度。出於這個原因,我們必須將 LENGTH 指定為資料區的名稱而不是文字,並且如果我們在程式中多次使用 LENGTH,則必須重新初始化此資料區。較長的記錄將引發錯誤條件。

5

KEYLENGTH

它指定鍵的長度。

示例

以下示例演示瞭如何從 'FL001' 檔案讀取記錄,其中 Student-id 是主鍵:

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 語句期間出現的異常列表:

序號 異常及描述
1

NOTOPEN

檔案未開啟。

2

NOTFND

正在搜尋的記錄在資料集中不存在。

3

FILENOTFOUND

FCT 中未建立檔案條目。

4

LENGERR

命令中指定的長度與記錄的實際長度不匹配。

5

NOTAUTH

如果使用者沒有足夠的許可權使用該檔案。

6

DUPKEY

如果多個記錄滿足備用鍵上的條件。

cics_file_handling.htm
廣告

© . All rights reserved.