Vsam 檔案創建 -
//VSAMKSDS JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),PRTY=15,
// NOTIFY=&SYSUID
//STEP10 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER( -
NAME(RAHUL.KSDS.FILE) -
INDEXED -
KEYS(05 1) -
RECSZ(35 35) -
FREESPACE(10 20) -
TRACKS(50 30) -
CISZ(8192) -
VOLUME(ZASYS1))
/*
檔案記錄——
RBA Len 1<==5>..10....5...20....5...30....5..
0 35 12543rajjd jdhdjd 9876553
35 35 53221dfdffd jhsfhd 9778785
出現錯誤 -
KSDSFL 打開狀態 39
KSDSFL 關閉狀態 42
我的 Cobol 程式:-
IDENTIFICATION DIVISION.
PROGRAM-ID. KSDSPROG.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT KSDSFL ASSIGN TO INFLDD
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS EMP-ID
FILE STATUS IS RTCODE.
DATA DIVISION.
FILE SECTION.
FD KSDSFL.
01 KSDSFL-REC.
05 EMP-ID PIC X(05).
05 EMP-DESC PIC X(30).
WORKING-STORAGE SECTION.
01 RTCODE PIC X(02).
01 REC-OUT PIC X(35).
PROCEDURE DIVISION.
OPEN INPUT KSDSFL.
DISPLAY 'KSDSFL OPEN STATUS ' RTCODE.
MOVE '12345' TO EMP-ID
READ KSDSFL RECORD INTO REC-OUT
KEY IS EMP-ID
INVALID KEY
DISPLAY 'KEY IS INVALID'
NOT INVALID KEY
DISPLAY 'KEY IS VALID'
END-READ.
CLOSE KSDSFL.
DISPLAY 'KSDSFL CLOSE STATUS ' RTCODE.
STOP RUN.
不知道為什么我會遇到資料不匹配問題。程式編譯成功,但正在運行獲取檔案狀態 39。所有欄位記錄都匹配,但問題仍未解決。請幫我解決它。
uj5u.com熱心網友回復:
您提供的資料顯示記錄長度為 37。應該是 35。
我修改了記錄的問題部分以使其成為代碼,因此有一個固定寬度的字體,因為它讓我感到困惑記錄在哪里排列。如果我犯了錯誤,請更正。
您在FD( EMP-ID) 部分中的鍵從偏移量 0 開始;它應該偏移 1。
FILE SECTION.
FD KSDSFL.
01 KSDSFL-REC.
05 EMP-ID PIC X(05).
05 EMP-DESC PIC X(30).
改成
FILE SECTION.
FD KSDSFL.
01 KSDSFL-REC.
05 FILLER PIC X.
05 EMP-ID PIC X(05).
05 EMP-DESC PIC X(29).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/441137.html
下一篇:從.dat檔案中讀取物件不起作用
