Skip to main content

Does ES_IMS_CANCEL_MODE=D work?

  • July 13, 2022
  • 3 replies
  • 0 views

Michael Schmitt

I'm evaluating Micro Focus Enterprise Developer to determine if it can be used for developing our IMS application.

Over the years, we've spent vast amounts of effort on performance improvement. A key component is caching: we run as a Reusable Runtime Environment, so once a program is loaded, it stays loaded along with all of its memory. This enables us to trade higher one-time processing for much lower processing on subsequent transactions.

From what I can see, the closest MFED ES can come to this is ES_IMS_CANCEL_MODE=D (or L, if we remove all of our DLITCBL entry points).

But when I try ES_IMS_CANCEL_MODE=D, it doesn't work. I executed the same transaction twice in a row in the same message region, and on the second time all of the program's working storage was reset back to the initial state.

Is there a trick to getting ES_IMS_CANCEL_MODE=D to work?

I'm wondering if it is just keeping the program DLLs loaded but still freeing all of the working storage.


#IMS
#EnterpriseDeveloper
#ims

3 replies

Kim Hoskin
Forum|alt.badge.img+2
  • Moderator
  • July 13, 2022

I'm evaluating Micro Focus Enterprise Developer to determine if it can be used for developing our IMS application.

Over the years, we've spent vast amounts of effort on performance improvement. A key component is caching: we run as a Reusable Runtime Environment, so once a program is loaded, it stays loaded along with all of its memory. This enables us to trade higher one-time processing for much lower processing on subsequent transactions.

From what I can see, the closest MFED ES can come to this is ES_IMS_CANCEL_MODE=D (or L, if we remove all of our DLITCBL entry points).

But when I try ES_IMS_CANCEL_MODE=D, it doesn't work. I executed the same transaction twice in a row in the same message region, and on the second time all of the program's working storage was reset back to the initial state.

Is there a trick to getting ES_IMS_CANCEL_MODE=D to work?

I'm wondering if it is just keeping the program DLLs loaded but still freeing all of the working storage.


#IMS
#EnterpriseDeveloper
#ims

Hi Michael,

Do you want to use a logical or physical cancel? From your description I believe logical cancel to reuse/cache modules and aid performance.

See documentation page:
www.microfocus.com/.../GUID-5702644E-2B55-4DB6-87A9-52077F96EFB5.html

Explains:
ES_IMS_CANCEL_MODE=D - Performs a deferred cancel, which will yield the same behavior as a logical cancel when the MPR services the same MPP back-to-back. It will behave as P (physical cancel) when the transaction changes.

As I believe you are looking for a logical cancel would using ES_IMS_CANCEL_MODE=L  be appropriate, the above documentation page explains: Performs a logical cancel. This gives the best performance of the options, but can only be used it there is only one DLITCBL entry point in an MPR.


Michael Schmitt
  • Author
  • Participating Frequently
  • July 13, 2022

Hi Michael,

Do you want to use a logical or physical cancel? From your description I believe logical cancel to reuse/cache modules and aid performance.

See documentation page:
www.microfocus.com/.../GUID-5702644E-2B55-4DB6-87A9-52077F96EFB5.html

Explains:
ES_IMS_CANCEL_MODE=D - Performs a deferred cancel, which will yield the same behavior as a logical cancel when the MPR services the same MPP back-to-back. It will behave as P (physical cancel) when the transaction changes.

As I believe you are looking for a logical cancel would using ES_IMS_CANCEL_MODE=L  be appropriate, the above documentation page explains: Performs a logical cancel. This gives the best performance of the options, but can only be used it there is only one DLITCBL entry point in an MPR.

I would want Logical but that would require massive changes to remove DLITCBL entry points, so I'm first testing with Deferred.

I think the problem is that the memory management releases allocated memory for a physical or logical cancel, so this isn't helping. I can't find any way to set up a resuable runtime environment.


Kim Hoskin
Forum|alt.badge.img+2
  • Moderator
  • July 13, 2022

I would want Logical but that would require massive changes to remove DLITCBL entry points, so I'm first testing with Deferred.

I think the problem is that the memory management releases allocated memory for a physical or logical cancel, so this isn't helping. I can't find any way to set up a resuable runtime environment.

Hi Michael, if you require any additional assistance I recommend you to consider raising a support case, where my colleagues can provide more dedicated assistance, research further and provide other alternatives that may be available.