CICS allows you to write foreground as well as background tasks.
In an application, there are a number of options like Inquiry/Add/Update/Delete screens under one facility/main menu. In CICS, you'd XCTL from the Main-Menu program to the Inquiry/Add/Update/Delete programs.
If you had to invoke a sub-program, the caller wants the control back, you LINK PROGRAM(WS-SUB-PROGRAM) and RETURN. Now, lots of CICS screens have date fields. The date entered has got to be a valid date. So, a CICS application may LINK to the date-validation program, every-time a date check is required. The date routine is just a helper module and the main program expects the control back, so it makes sense to LINK to it.
When a CICS transaction does typical batch-style processing of big amounts of data, you create it as a CICS background task(instead of a foreground). CICS runs background tasks at a lower-priority. CICS background tasks are always START'ed.
Software Engineer, Lives at Borivali, Mumbai