Page 1 of 1

EXEC CICS SUSPEND END-EXEC

PostPosted: Mon Jul 29, 2019 6:03 pm
by aazizi
Hello everyone,
I'm trying to suspend a task with this command EXEC CICS SUSPEND END-EXEC using COBOL Programme, but i didn't see his utility.
Can anyone tell me pls how to suspend a task with correct way? and thanks :D

Re: EXEC CICS SUSPEND END-EXEC

PostPosted: Mon Jul 29, 2019 6:38 pm
by Robert Sample
Your post makes almost no sense. "his utility" -- WHOSE utility? EXEC CICS SUSPEND is used to allow a task with a higher dispatching priority to execute, after which the suspended task will be continued. Why are you wanting to suspend your task? What are you wanting to suspend your task to allow to execute?
Can anyone tell me pls how to suspend a task with correct way?
Depending upon what you want to do, and why, EXEC CICS SUSPEND may -- or may not -- be the correct way to do what you want.

Re: EXEC CICS SUSPEND END-EXEC

PostPosted: Mon Jul 29, 2019 10:36 pm
by aazizi
Firstly I am a beginner on this Forum and on CICS, and I just wanted to test the operation of this command and have a result in the final.

For my case I made a first program COBOL (CICS01) with its transaction (S001), this program uses another transaction (S002) by the command START TRANSID.
The transaction (S002) is related to the second COBOL program (CICS02), and in which I declared my SUSPEND order, and after the SUSPEND I made a DISPLAY to have the utility of SUSPEND.

Expected result:
Is that the first program will make a call to the transaction (S002), the second program runs and it will suspend a moment and it will show me the DISPLAY.

Any advice?

Re: EXEC CICS SUSPEND END-EXEC

PostPosted: Tue Jul 30, 2019 12:17 am
by Robert Sample
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.