Please help me to solve this error. I am doing DBDGEN for the secondary index and following is the code
PRINT NOGEN
DBD NAME=EMPTOTAL,ACCESS=(HIDAM,VSAM)
DATASET DD1=DATADD,DEVICE=3390
SEGM NAME=EMPLOYEE,PARENT=0,BYTES=34
LCHILD NAME=(NAMESEG,EMPTOTDX),POINTER=INDEX
FIELD NAME=(EMPNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=EMPNAME,BYTES=20,START=5,TYPE=C
FIELD NAME=DEPTNAME,BYTES=4,START=25,TYPE=C
XDFLD NAME=XDNAME,SRCH=DEPTNAME
FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
DBDGEN
FINISH
END
and
Following is the error received, i tried a lot but could not
1 PRINT NOGEN
2 DBD NAME=EMPTOTAL,ACCESS=(HIDAM,VSAM)
4 DATASET DD1=DATADD,DEVICE=3390
6 *
7 SEGM NAME=EMPLOYEE,PARENT=0,BYTES=34
14 LCHILD NAME=(NAMESEG,EMPTOTDX),POINTER=INDEX
16+ 8,LCHD140 - POINTER OR PTR OPERAND IS INVALID.
19 FIELD NAME=(EMPNO,SEQ,U),BYTES=4,START=1,TYPE=C
21 FIELD NAME=EMPNAME,BYTES=20,START=5,TYPE=C
23 FIELD NAME=DEPTNAME,BYTES=4,START=25,TYPE=C
25 XDFLD NAME=XDNAME,SRCH=DEPTNAME
26+ 8,XDFLD002 - SECONDARY INDEX LCHILD STATEMENT WITH
27+*, PTR=INDX/SYMB MUST PRECEDE THIS XDFLD
28+*, STATEMENT.
30 FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
28+*, STATEMENT.
30 FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
32 *
33 DBDGEN
34+ 8,DGEN150 - LCHILD STATEMENT FOR ROOT SEGMENT EMPLOYEE
35+*, OMITTED OR INVALID.
36+ 8,DGEN110 - DBDGEN TERMINATED; ERRORS IN DBD.
37 FINISH
38 END
See if you can get any clue from the below error descripion:
Explanation
One of the following occurred:
1. Both the POINTER and PTR operands were specified.
2. The POINTER or the PTR operand contains an invalid value as related to the access method defined for this DBD.
3. The POINTER or the PTR operand contains an invalid value as related to the relationship currently being described within this DBD.
System action
The value specified is used to validate following parameters.
Programmer response
Correct the POINTER/PTR operand, and rerun DBDGEN.
Thanx for the reply. I tried with PTR=INDX it is working but unable to solve the next error.
23 FIELD NAME=DEPTNAME,BYTES=4,START=25,TYPE=C
25 XDFLD NAME=XDNAME,SRCH=DEPTNAME
26+ 8,XDFLD002 - SECONDARY INDEX LCHILD STATEMENT WITH
27+*, PTR=INDX/SYMB MUST PRECEDE THIS XDFLD
28+*, STATEMENT.
30 FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
Explanation
This XDFLD statement must be paired to a preceding LCHILD statement which has a POINTER value of INDX or SYMB. This required LCHILD statement is missing.
System action
The specified XDFLD operand information is used in subsequent validity checking.
Programmer response
Correct the error, and rerun DBDGEN.
PRINT NOGEN
DBD NAME=EMPTOTAL,ACCESS=HIDAM
DATASET DD1=HIDAMB,DEVICE=3390
SEGM NAME=EMPLOYEE,PARENT=0,BYTES=34
FIELD NAME=(DEPTNAME,SEQ,U),BYTES=4,START=1,TYPE=C
LCHILD NAME=(INPXPNTR,EMPTOTDX),PTR=INDX
XDFLD NAME=DINDX,SRCH=DEPTNAME
FIELD NAME=EMPNO,BYTES=4,START=5,TYPE=C
FIELD NAME=EMPNAME,BYTES=20,START=9,TYPE=C
FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
DBDGEN
FINISH
END
And it returns as following
1 PRINT NOGEN
2 DBD NAME=EMPTOTAL,ACCESS=HIDAM
4 DATASET DD1=HIDAMB,DEVICE=3390
6 *
7 SEGM NAME=EMPLOYEE,PARENT=0,BYTES=34
4 FIELD NAME=(DEPTNAME,SEQ,U),BYTES=4,START=1,TYPE=C
6 LCHILD NAME=(INPXPNTR,EMPTOTDX),PTR=INDX
0 XDFLD NAME=DINDX,SRCH=DEPTNAME
1+ 8,XDFLD002 - SECONDARY INDEX LCHILD STATEMENT WITH
2+*, PTR=INDX/SYMB MUST PRECEDE THIS XDFLD
3+*, STATEMENT.
5 FIELD NAME=EMPNO,BYTES=4,START=5,TYPE=C
7 FIELD NAME=EMPNAME,BYTES=20,START=9,TYPE=C
9 FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
I tried some changes to the existing DATABASE definition but still error occurs. I am stucked going further.
Following is the Secondary database defined
PRINT NOGEN
DBD NAME=EMPTOTAL,ACCESS=(HIDAM,VSAM)
DATASET DD1=DATADD,DEVICE=3390
SEGM NAME=EMPLOYEE,PARENT=0,BYTES=34
LCHILD NAME=(NAMESEG,EMPTOTDX),POINTER=INDEX
FIELD NAME=(EMPNO,SEQ,U),BYTES=4,START=1,TYPE=C
FIELD NAME=EMPNAME,BYTES=20,START=5,TYPE=C
FIELD NAME=DEPTNAME,BYTES=4,START=25,TYPE=C
XDFLD NAME=XDNAME,SRCH=DEPTNAME
FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
DBDGEN
FINISH
END
Following is the error
1 PRINT NOGEN
2 DBD NAME=EMPTOTAL,ACCESS=HIDAM
4 DATASET DD1=DATADD,DEVICE=3390
6 SEGM NAME=EMPLOYEE,PARENT=0,BYTES=34
13 LCHILD NAME=(NAMESEG,EMPTOTDX),POINTER=INDEX
15+ 8,LCHD140 - POINTER OR PTR OPERAND IS INVALID.
18 FIELD NAME=(DEPTNAME,SEQ,U),BYTES=4,START=25,TYPE=C
20 XDFLD NAME=XDNAME,SRCH=DEPTNAME
21+ 8,XDFLD002 - SECONDARY INDEX LCHILD STATEMENT WITH
22+*, PTR=INDX/SYMB MUST PRECEDE THIS XDFLD
23+*, STATEMENT.
25 FIELD NAME=EMPNO,BYTES=4,START=1,TYPE=C
27 FIELD NAME=EMPNAME,BYTES=20,START=5,TYPE=C
29 FIELD NAME=EMPADDR,BYTES=6,START=29,TYPE=C
31 DBDGEN
32+ 8,DGEN150 - LCHILD STATEMENT FOR ROOT SEGMENT EMPLOYEE
33+*, OMITTED OR INVALID.
34+ 8,DGEN110 - DBDGEN TERMINATED; ERRORS IN DBD.
35 FINISH
36 END
Following is the index database definition.
PRINT NOGEN
DBD NAME=EMPTOTDX,ACCESS=(INDEX,VSAM)
DATASET DD1=HIDAMX,DEVICE=3390
*
SEGM NAME=INPXPNTR,BYTES=4
LCHILD NAME=(EMPLOYEE,EMPTOTAL),INDEX=DEPTNAME
FIELD NAME=(INDEXFLD,SEQ),BYTES=4,START=1,TYPE=C
DBDGEN
FINISH
END