我正在尝试打开顺序数据集。
我得到文件状态 37,其中 IBM说:
An OPEN statement was attempted on a file that would not support the open mode specified in the OPEN statement. Possible violations are:
- The EXTEND or OUTPUT phrase was specified but the file would not support write operations.
- The I-O phrase was specified but the file would not support the input and output operations permitted.
- The INPUT phrase was specified but the file would not support read operations.
我怀疑第三个,因为我的程序的相关部分是:
*----------------------
INPUT-OUTPUT SECTION.
*----------------------
FILE-CONTROL.
* input file 1
SELECT INPUT-1-FILE
ASSIGN TO EXAMPLE
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS INPUT-1-ACCESS-KEY
FILE STATUS IS INPUT-1-FS
.
****************
DATA DIVISION.
****************
*--------------
FILE SECTION.
*--------------
* fichier 1
FD INPUT-1-FILE
.
01 INPUT-1-LINE.
05 filler PIC X(300).
*-------------------------
WORKING-STORAGE SECTION.
*-------------------------
77 INPUT-1-ACCESS-KEY PIC 9(3) comp value 1.
01 INPUT-1-FS PIC 99 value 00.
*********************
PROCEDURE DIVISION.
*********************
OPEN INPUT INPUT-1-FILE
DISPLAY INPUT-1-FS
我的 JCL 中的 DD 卡如下所示:
EXAMPLE DD DISP=SHR,DSN=MY.DATASET.NAME
我们使用的是 COBOL v5,所以我检查了 IBM的relevant docs ,但我找不到任何原因导致我的文件无法在输入模式下打开。
以下是我的数据集的特征:
VSAM listcat 的结果:
最佳答案
在您的程序中,组织是相对
表示输入文件必须是相对记录数据集( rrds
)VSAM文件,可以使用来定义该文件。 IDCAMS DEFINE 命令。可能发生的事情是,如果您打开的文件是一个顺序文件,则获得37个文件状态。有关
。 'Relative record data set '. IDCAMS DEDINE
的更多信息,请在IBM Redbook中提到
您可以将输入文件设为 VSAM 文件,如下所示:
//[YOURID] JOB ,
// MSGCLASS=S,REGION=0M,COND=(9,LT),NOTIFY=&SYSUID,TIME=(1,1)
//*********************************************************************
//* Create a VSAM
//*********************************************************************
//S1IDCAMS EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE ([YOURID].P00695.VSAMRRDS) CLUSTER PURGE
DEFINE CLUSTER (NAME([YOURID].P00695.VSAMRRDS) -
NUMBERED -
RECORDSIZE(80 80) -
BUFFERSPACE(2048) -
SHAREOPTIONS(4 3) -
VOLUMES(SYS162)) -
DATA (NAME([YOURID].P00695.VSAMRRDS.DATA) -
TRACK(1,1) -
CISZ (1024))
/*
//S2REPRO EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//VSAM DD DISP=SHR,DSN=[YOURID].P00695.VSAMRRDS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
REPRO OUTFILE(VSAM) INFILE(INREC)
/*
//INREC DD *
XXXXXXX060ALISONALISONALISONALISONALISONALISONALISONALISONAL ISONALIS
XXXXXXX060ALISONALISONALISONALISONALISONALISONALISONALISONAL ISONALIS
/*
关于file - COBOL - 使用相对和动态选项打开顺序数据集时的文件状态 37,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53213368/