IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

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


IBM Mainframe Forums -> CICS
Post new topic   Reply to topic
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
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

Moderator Emeritus


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

PostPosted: Wed Jul 28, 2010 9:46 pm
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
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
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

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Fri Jul 30, 2010 2:29 pm
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
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

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Fri Jul 30, 2010 6:22 pm
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
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
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

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Fri Jul 30, 2010 8:22 pm
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
Reply with quote

phew, reviewing this gave me a headache,

you need to call in some outside help, try contacting Document Systems Inc. >> Use [URL] BBCode for External Links

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 View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CICS

 


Similar Topics
Topic Forum Replies
No new posts Using API Gateway from CICS program CICS 0
No new posts COBOL ZOS Web Enablement Toolkit HTTP... COBOL Programming 0
No new posts Calling DFSORT from Cobol, using OUTF... DFSORT/ICETOOL 5
No new posts Calling Java method from batch COBOL ... COBOL Programming 5
No new posts Calling an Open C library function in... CICS 1
Search our Forums:

Back to Top