RMODBB - DISTDEF FUNCTION=DD receives 'RMODBB01 Invalid syntax, Column=29' error

Document ID : KB000118491
Last Modified Date : 30/10/2018
Show Technical Document Details
A. The RMODBB utility JCL below was used to create a test/dummy distribution id TESTID9 in the CA Deliver DB:
//DATA DD * 

B. Tried running the RMODBB job again with the following //SYSIN DD * control statement to DELETE the same distribution id:

But the job failed with a 'RMODBB01 Invalid syntax, Column=29' error. 
- The cause of the error is having the FUNCTION parameter on the SYSIN DD * /DISTDEF statement coded as "FUNCTION=DD" instead of pointing to the location of the FUNCTION within the input DATA file.

- In conjunction with NOT having either a //DATA input file OR a //DATA DD * control statement coded for the RMODBB utility JCL when attempting to perform the delete. 
The CA Deliver Reference guide states the following regarding the RMODBB utility:

The RMODBB utility reads any sequential file containing fixed, variable, or undefined length records. Control statements define the data fields to be added to or modified in the database and provide the format of the records in the input file.

Defines the sequential input data set.
The data set can contain fixed, variable, or undefined length records.

Specifies the name of the card image data set where the control statements you want to input are located.

Since the problem JCL being executed had no reference to either a //DATA input file OR a //DATA DD * control statement, the following adjustments were suggested:

- Add a //DATA DD * control statement as:

- And code your //SYSIN DD *  /DESTDEF statement as:
/DISTDEF DISTID=(1,7) FUNCTION=(9,2)   -  (NOTE - Corresponds with locations of data in DATA file above) 

The 'RMODBB01 Invalid syntax, Column=29' error was resolved by making the above adjustments in the RMODBB JCL. 
Additional Information:
Typically, if the RMODBB utility is being run to perform large scale database updates, clients should consider running the RMOGRW utility to create a sequential data file, via the RMOGRW utilities "OUTFILE DD" statement, that contains the database records that are going to be updated by the RMODBB utility.

This RMOGRW OUTFILE would then serve as the RMODBB utilities //DATA INPUT file. And the //SYSIN DD statements coded for execution of RMODBB would simply parse the data in the input file based on the datas location within the file. 

Links to associated documentation in the CA Deliver Reference Guide:

RMODBB - Update Active Definitions 

RMOGRW - General Reporting