Joined: 14 Apr 2010 Posts: 9 Location: Hartford, CT. USA
IMS 10.1
I am loading a HISAM DB (Procopt = L) with a user load program. Have del/def'd the datasets with reuse option and the correct key & record size for the DBD [see below]. I init. the DB with DFSURPR0.
I get a DFS0730I UNABLE TO OPEN DATA SET WITH DDNAME DMBBS1BA FOR REASON I,31. The DDNAME points to the secondary index DB dataset.
IBM's explanation: An attempt was made to open a VSAM data set associated with a PCB, which has a processing option other than L, and the data set is empty.
1.) I do not see why IMS is trying to open the secondary Index DB in the load step.
2.) I do not see why the dataset can not be opened.
Below is the secondary Index DBD:
Code:
DBD NAME=DMBBS100,ACCESS=PSINDEX
SEGM NAME=AYS1ROOT,BYTES=15,PARENT=0
FIELD NAME=(IDCLEMSX,SEQ,U),BYTES=15,START=1
LCHILD NAME=(AYAUROOT,DMBBAU00),INDEX=IDCLEMCS,PTR=SNGL,
RKSIZE=5
Below is the IDCAMs control cards for the dataset:
At the same time I also receive the abend error:
DFS0840I INDEX ERROR DMBBS1B NI 12N on the same secondary index.
IBM's explanation:
Either a data set could not be opened or there was a duplicate
segment in a unique secondary index. If a data set could not be
opened, the message is preceded by a DFS0730I message . . .
I have eliminated the possibility of a duplicate entry.
Joined: 27 Oct 2009 Posts: 2481 Location: Netherlands, Amstelveen
Using DFSPREC0 to build index for HALDB, if VSAM REUSE is
specified (rather than Delete/Define) it is possible to get
MSGDFS0730I I,31 I31 saying the dataset is empty, but not load
mode. For DFSPREC0 this is an expected condition, and should
be handled without a msg by reissuing open with ACBRST set.
Joined: 14 Apr 2010 Posts: 9 Location: Hartford, CT. USA
I said in my post that I am loading a HISAM database. That was WRONG, it is a PHIDAM database. Thanks for the quick reply from Peter, I am looking at it.
Joined: 14 Apr 2010 Posts: 9 Location: Hartford, CT. USA
I have found the answer to my problems. With a User Load program HALDB is inserting records into the primary and any seconday indexes with every insert of a data record. [Not true of non-HALDB loads, secondary indexes are not updated.] Thus the secondary index dataset open fails because it has not been initialized. Partions are not initialized by DFSURPR0 unless the PINIT flag is set on. I could set the PINIT flag on, but chose to switch to DFSUPNT0 and the DFSOVRDS input with INITALL.
This sounds like a lot of extra work, but it isn't. Annually we have to unload the data, merge/update with a very large amount of data, and then reload. We prefer to do a del/def of the DB datasets rather than load over the existing data (reuse).