Is it possible to call progress program from stored procedur

Posted by Fuelfire on 11-Nov-2015 04:37

Good day everyone! I use OpenEdge 10.1B03. I learned to use the MQ Series API to interact with queues from 4GL. Interaction with the MQ is only possible when accessing the queue manager from Progress server, not the client side. Now my program runs on the client.

Is it possible to do the following: run the stored procedure from client side, which would call the program to work with queues?

I keep in mind another option: make the interface table in the database and run the program on a server that will monitor the occurrence records in it and put/get data in/from queue. However the program should work constantly, and periodically listen the queue and monitor interface table.

Perhaps there is some other simple solution? I would be grateful for any help.

All Replies

Posted by scott_auge on 11-Nov-2015 08:39

I think you will want to look at the app server portion of the progress toolset.  It is basically a program clients can call that runs on the server (or where ever) - from there it will be existing code on the server (with some touch ups).

There is a whole book to get familiar with it as part of the documentation set.  It is called "Developing AppServer Applications."  

Basically it is calling a remote ABL procedure (think RPC in the C/other world but not so complicated.)

I have used it for complex queries that just need to run in shared memory and to call programs that are not native to the application.  (For example, a UNIX based system needs to call a Windows based program to do a credit card or something like that.)

If you want to stick with MQ, you will need to distribute and configure the MQ client portion on each client PC you want to it to access or to access it.

Posted by Fuelfire on 12-Nov-2015 02:20

I had planned to install MQ client only on the server. Accordingly, the client runs "something" from the program on client side and this "something" interacts with the MQ from the server. Is it possible? And how can I do it?

This thread is closed