VSAM KSDS 文件中的文件状态 39
File status 39 in VSAM KSDS file
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。
所有字段记录都匹配但问题仍未解决。请帮我解决一下。
您提供的数据显示记录长度为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).
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。 所有字段记录都匹配但问题仍未解决。请帮我解决一下。
您提供的数据显示记录长度为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).