我正在提交一个 JCL 作业以在 Mainframe 中分配一个 VB 数据集。提交作业后,数据集创建成功。
然后我在大型机的 omvs 区域运行一个 java 程序,打开文件并将一些内容写入其中。当我尝试将数据写入文件时,出现以下错误。
//DD:SYS00011 : fwrite() 失败。EDC5024I 尝试关闭已由另一个线程打开的文件。errno=24 errno2=0xc0640021 last_op=0 错误代码=0x0。
JCL提交分配数据集:
//USERNAME JOB ABC,,NOTIFY=&SYSUID,CLASS=F,MSGLEVEL=(1,1),MSGCLASS=X
//STEP1 EXEC PGM=IEFBR14
//STEP DD DSN=ASD00T.SM.ULRL,
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(1,(10,60),RLSE),AVGREC=M,
// DCB=(RECFM=VB),
// DSORG=PS
编写文件的代码:
zFileIn = new ZFile("//'ASD00T.INPUT.ULRL'", "rb,type=record,noseek");
if (zFileIn.getDsorg() != ZFile.DSORG_PS) {
throw new IllegalStateException("Input dataset must be DSORG=PS");
}
zFileOut = new ZFile("//'ASD00T.SM.ULRL'", "wb,type=record,noseek, recfm="+ zFileIn.getRecfm()+ ", lrecl="+ zFileIn.getLrecl());
long count = 0;
byte[] recBuf = new byte[zFileIn.getLrecl()];
int nRead;
while((nRead = zFileIn.read(recBuf)) >= 0) {
zFileOut.write(recBuf, 0, nRead);
count++;
}