(This is a copy of the query submitted in CICS section)
I am a CA-IDEAL user (which is a programming language based on CICS), but I am not conversant with the concepts of CICS. So please try to be simple in CICS terms.
I am trying to submit a batch Job from an online IDEAL program (say, transaction 'A'). I am following the same logic which an existing program does (say, trxn 'B'):
1. (CICS) ENQueue internal reader (which is defined as an IDEAL sequential dataview)
2. Create the JCL statements and write onto the internal reader
3. (CICS) DEQueue the internal reader
(Note: I am using the same job userid as in the other existing program 'B'. Otherwise job fails due to RACF authorisation.)
Now the problem is:
The job supposed to be submitted from my transaction (A) never actually gets submitted until and unless I submit transaction B (which is the existing one.) Job B seems to push out job A from the internal reader.
I am confused and utterly distressed. (Is internal reader mapped to a particular CICS transaction?)
One colleage remembers that another person (who has resigned) encountered similar problem a year back, and he recollects that then there was a discussion on the difference between something called a 'background' job and a 'batchground' job!! What the hell is it?
(Note: the job A gets submitted from an IDEAL subprogram which is 'INITIATE'd rather than being 'CALL'ed from main program. INITIATE runs the subprogram parallel to the main program, as a separate thread.)
Any quick resolution/suggestion would be very highly appreciated.
Joined: 23 Nov 2006 Posts: 19270 Location: Inside the Matrix
In IDEAL, your sequential dataview contains a ddname (if you have permission, enter the command "dis dvw the-dvw-name v prod". You should be able to see the ddname.
Make sure there is a dd with the same ddname in the cics startup.
There is typically no need/reason to try to enqueue the internal reader - this was probably done due to poor performance that caused jobs/jcl to be interleaved. Create an internal array in the IDEAL working data and build the complete JCL in the array. Once it is built, write it to the internal reader dvw. It may help if your last entry in the submitted jcl is "/*EOF".