by Robert Sample » Tue Jul 30, 2019 12:17 am
I've been working with CICS (both applications development and system programming) for over 30 years. So far, I have NEVER found any reason to use the SUSPEND API call -- so you're not very likely to ever run into a situation where you need to use it. I'm sure there are times when it comes in handy, but a programmer new to CICS is not likely to need it.
Where do you expect to see the DISPLAY? CICS programs operate quite a bit differently from batch programs and you won't see the DISPLAY output on your terminal (for example). DISPLAY used to cause transaction ABENDs but that has been fixed for many years. Now, DISPLAY output is routed to an extrapartition TDQ with the name CESE, which is often (but not always) assigned to MSGUSR or CEEMSG. You would have to discuss with your site support group where the CESE TDQ is routed for the CICS region you are executing your program in. Your DISPLAY output should appear in the output for one of those DD names in the CICS region.
How, exactly, do you expect the programs to execute differently if you run without the SUSPEND call (that is, what do you think the SUSPEND call will do for your code)? And most of the time, program to program transfers in CICS are done via EXEC CICS XCTL or EXEC CICS LINK (or sometimes COBOL CALL verb) instead of START TRANSACTION. It is not necessarily wrong to use START TRANSACTION but that imposes additional overhead to the system that aren't part of the other transfers.
If you are coding pseudo-conversational programs, then there is no need to suspend anything because the inter-program communications are handled by the way the code executes.