Portal | Manuals | References | Downloads | Info | Programs | JCLs | Master the Mainframes
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Usergroups Profile Log in to check your private messages Log in
 

 

Calling a static routine(which has EXCI calls) from CICS pgm

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CICS
View previous topic :: :: View next topic  
Author Message
asukumar

New User


Joined: 15 Apr 2009
Posts: 8
Location: bangalore

PostPosted: Wed Jul 28, 2010 5:32 pm    Post subject: Calling a static routine(which has EXCI calls) from CICS pgm
Reply with quote

Hi,

Can any one of you please advise on my below query.

Recently we have made some changes to one of our batch static routine (RFLCTFLC) to include CICS EXCI calls to fetch the data from an external system (Oracle). This subroutine is being called by one of the CICS program.

After the changes have been made to the subroutine, we have recompiled the CICS program (PCTS0003) as well to fetch the latest load of the subroutine. When we were testing the CICS program it is failing with the error message 'CSV003I REQUESTED MODULE DFHXCPRX NOT FOUND'.

Actually the DFHXCPRX module is present in one of the CICS related load module datasets, but CICS support team guys are saying that this loadlib must have to be used for BATCH programs only, not for any ONLINE programs. We have used the load library dataset which has DFHXCPRX loadlib in our batch subroutine. However, the CICS program is abending with the above error message.

Please can any of you suggest how can we proceed in this case in order to run this CICS program - calling batch subroutine having CICS EXCI calls.

Please let me if you want me to provide the CODE of both subroutine and the CICS program.

Your help would be very useful. Thanks in advance.

Sukumar.
Back to top
View user's profile Send private message

dick scherrer

Site Director


Joined: 23 Nov 2006
Posts: 19270
Location: Inside the Matrix

PostPosted: Wed Jul 28, 2010 9:46 pm    Post subject:
Reply with quote

Hello,

I believe it is time to re-think the implementation. . .

EXCI is used to interface with cics from batch, not from cics to batch. . .
Back to top
View user's profile Send private message
asukumar

New User


Joined: 15 Apr 2009
Posts: 8
Location: bangalore

PostPosted: Fri Jul 30, 2010 1:51 pm    Post subject: Reply to: Calling a static routine(which has EXCI calls) fro
Reply with quote

Hi thanks for your reply.

As per our requirement the sub-routine has to have EXCI calls to fetch the data from Oracle tables. Since this is being called by a CICS program and CICS pgm can't call a batch routine which has EXCI, please can you advise any alternative solution, if you aware of, to achieve this (any changes required to either CICS or sub-routine) ??

Thanks in advance.

Sukumar.
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Fri Jul 30, 2010 2:28 pm    Post subject:
Reply with quote

would suggest that you find another way
Quote:
to fetch the data from an external system (Oracle).


EXCI was designed, originally, as an interface from Batch to CICS.

I, being in one of my usual pessimistic and surly moods,
- which admittedly affects my thinking -
imagine, that since the EXCI methodology works for batch,
some genius decided that implementing EXCI in CICS would be the way to go,
save money, reuse code - slick - unfortunately not technically sound.

offloading the oracle data to db2,
or implementing any other of a million methods of accessing the data
seems to have been overruled, due probably to cost.

one positive suggestion -
have the CICS module send a message via MQS to a batch program,
which would initiate the EXCI,
retrieve the oracle data,
and return via mqs to another cics task which would process the data.

back to the negative perspective.
CICS is an online system and is often mis-used for batch processes,
because some idiot decides the data has to be instantly available.

has anyone thought of using db2 as the interface?
or, admittedly not knowing what is going on or why,
implemented Materialized Data Tables to acquire the data?

or is db2 not running at all?
Back to top
View user's profile Send private message
Garry Carroll

Active Member


Joined: 08 May 2006
Posts: 988
Location: Dublin, Ireland / Edinburgh, Scotland

PostPosted: Fri Jul 30, 2010 2:29 pm    Post subject:
Reply with quote

Quote:
As per our requirement the sub-routine has to have EXCI calls to fetch the data from Oracle tables.


How does EXCI give access to Oracle tables in your batch sub-routine?? Surely you would access Oracle tables using SQL?

I would have thought that you would use EXCI in batch to execute a CICS program which uses SQL to access Oracle and return the data via CICS to the EXCI batch program. I would expect a CICS program needing Oracle data to issue SQL, not EXCI, comands.

Garry.
Back to top
View user's profile Send private message
asukumar

New User


Joined: 15 Apr 2009
Posts: 8
Location: bangalore

PostPosted: Fri Jul 30, 2010 5:09 pm    Post subject: Reply to: Calling a static routine(which has EXCI calls) fro
Reply with quote

Hi all, thanks for your replies and suggestions. The reason why we have made some changes to our batch static subroutine which is being used by one of the CICS program is:-

Our system is planned to covert to Oracle by end of Sep 2010. Hence all our system data will be moved to Oracle and from October 2010 onwards all the underwriting systems will directly send the feed to oracle. Since our systems will not be having up to date data from October, the current batch static sub-routine which is being used by underwriting systems will not return accurate values back.

Hence we have made changes to existing batch sub-routine to get the data from Oracle and pass it back to underwriting systems. Once the underwriting systems invokes our sub-routine, using HTTP calls sub-routine will pass the data through CICS (using EXCI calls) to Oracle. Oracle will send the output details in XML format and this will be parsed in the cics program which is called inside the batch static subroutne and pass the results back to underwrtiting CICS program in COBOL copybook layout.

Except one underwriting system all the others are calling our batch sub-routine in their batch programs. But the other one is calling our sub-routine in their CICS program. And during the testing phase this failed with the error message given in my first post.

I really dont know if any other approaches are available to get the above requirement done. Please can any one of you suggest if any.

Let me know if you guys need any additional information.

Thanks in advance.

Sukumar.
Back to top
View user's profile Send private message
Garry Carroll

Active Member


Joined: 08 May 2006
Posts: 988
Location: Dublin, Ireland / Edinburgh, Scotland

PostPosted: Fri Jul 30, 2010 6:22 pm    Post subject:
Reply with quote

Quote:
Once the underwriting systems invokes our sub-routine, using HTTP calls sub-routine will pass the data through CICS (using EXCI calls) to Oracle. Oracle will send the output details in XML format and this will be parsed in the cics program which is called inside the batch static subroutne and pass the results back to underwrtiting CICS program in COBOL copybook layout.


This starts out as what I'd expect - a batch program passing data to CICS via EXCI and CICS accessing Oracle. I would expect the request type to be specified by the batch program in the COMMAREA - if applying data to Oracle, the request type and the data - if retrieving from Oracle, the request type and an area for the Oracle data to be returned.

I don't see where the CICS program needs to be invoking a batch routine.

Garry.
Back to top
View user's profile Send private message
asukumar

New User


Joined: 15 Apr 2009
Posts: 8
Location: bangalore

PostPosted: Fri Jul 30, 2010 7:15 pm    Post subject:
Reply with quote

Garry,

Our batch sub-routine will be invoked when one of the CICS transaction is triggered. Once the control is been passed from a CICS program to the sub-routine, then all services will be happened as explained above ie. sub-routine will call another CICS program and sends the input data to Oracle and gets the output data from Oracle.

Since as part of conversion we included the EXCI calls in the batch sub-routine, now the control will go like this.

CICS program<------>batch sub-routine<----->CICS program<------>Oracle database.

As part of testing, we have triggered the CICS transaction and it's failed while calling the sub-routine.

I believe that the aproach to call batch sub-routine (which has EXCI calls) from a CICS program should be changed. But i'm not aware which approach to be follwed.

do you have any idea. Please advise.


Thanks
Sukumar.
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Fri Jul 30, 2010 7:52 pm    Post subject:
Reply with quote

what Garry said is:
instead of this:
CICS program<------>batch sub-routine<----->CICS program<------>Oracle database.


why not this?
CICS program<----->CICS program<------>Oracle database.
Back to top
View user's profile Send private message
Garry Carroll

Active Member


Joined: 08 May 2006
Posts: 988
Location: Dublin, Ireland / Edinburgh, Scotland

PostPosted: Fri Jul 30, 2010 8:22 pm    Post subject:
Reply with quote

or even (if we MUST have a batch element)...

Batch Job<---exci--->CICS Program<------>Oracle database

Garry.
Back to top
View user's profile Send private message
Earl Haigh

Active User


Joined: 25 Jul 2006
Posts: 475

PostPosted: Sat Aug 07, 2010 4:11 am    Post subject:
Reply with quote

phew, reviewing this gave me a headache,

you need to call in some outside help, try contacting Document Systems Inc. >> www.dsisolultions.com

They have a BatchCICS product , so I'm sure they would be glad
to discuss a solution for your oracle feed.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> CICS All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts How does a called pgm know if its cal... Graeme Westerman COBOL Programming 4 Tue Nov 29, 2016 9:25 pm
No new posts CICS Roll back partially - Need to re... dwijadas CICS 4 Wed Nov 16, 2016 4:30 pm
No new posts CICS NEW SIT PARAMETERS CICS BEHAVIOR... Kyle Carroll CICS 0 Fri Nov 04, 2016 11:55 pm
No new posts Single COPY CICS TS datasets and when... Kyle Carroll CICS 2 Tue Oct 11, 2016 9:47 pm
No new posts CICS VSAM RLS READ akodakka CICS 3 Tue Oct 04, 2016 3:09 pm


Facebook
Back to Top
 
Mainframe Wiki | Forum Rules | Bookmarks | Subscriptions | FAQ | Tutorials | Contact Us