Created On:  02 November 2010

Problem:

When in a COBOL program, 'ABORT is called as follows:

CALL 'ABORT'.

A Microsoft Runtime Error is displayed showing a problem in one of the Mainframe Express executables. Calling the 'ABORT' program is a way to stop the programs execution. This would give S806 in batch (load module not found). And in CICS a 4038 abend is displayed.

Resolution:

Calling ā€˜ABORT’ on the mainframe reports an ABEND 4038 because it is an unknown entry-point. However, it looks like there is an ABORT entry point on the Windows operating system which gets resolved and called, which is why a Microsoft Runtime error is displayed.

Duplicate entry point names can often occur between the Microsoft operating system DLL's (different versions), Micro Focus DLL's, third party
installed product DLL's, and user application load module entry points within DLL's, EXE's, GNT's, and 390 load modules. This situation that can
cause any application or newly installed product to fail is commonly referred to as "DLL Hell".

There are a number of C library and OS functions (e.g. "time", "abort", "clock", etc) that are exposed to the COBOL RTS when cob32api.dll is
invoked whose names will clash with those normally used by mainframe applications. cob32api is invoked by most of our emulators.

You will need to change your ā€œcall ABORTā€ line to either call an unknown entry-point, in which case a RTS 173 error will be displayed,
or call a routine they need to write to do the equivalent of an ABEND 4038.
Incident #2453384