50 CICS Interview Questions and Answers (2026) — Fresher to Experienced

Introduction: Acing Your CICS Interview
CICS roles — developer, administrator, analyst — are among the most in-demand mainframe positions globally. Banks, insurance companies, government agencies, and retailers all run mission-critical CICS applications, and experienced CICS professionals command excellent salaries. Whether you are a fresher applying for your first mainframe role or an experienced developer targeting a senior position, this guide prepares you for the questions you will actually face.
The 50 questions below are organised from foundational to advanced, mirroring how a real interview typically progresses. For each question, the answer covers what an interviewer is really testing and what a strong answer includes.
Section 1: CICS Fundamentals (Questions 1–10)
Q1. What is CICS and what is it used for?
CICS (Customer Information Control System) is IBM's transaction processing middleware for z/OS (and distributed platforms). It manages multi-user online transaction processing — routing terminal input to application programs, managing task scheduling, providing access to VSAM files and DB2, and ensuring the integrity of concurrent transactions. CICS processes billions of transactions daily in banking, insurance, retail, and government — any industry where reliable, high-volume online processing is required.
Q2. What is the difference between a CICS task and a CICS transaction?
A transaction is a defined unit of work identified by a 4-character TRANSID (e.g., EMPI). It is a resource definition in the CSD that maps to an entry-point program. A task is a runtime instance of a transaction — what happens when a user actually types EMPI and presses Enter. Multiple tasks of the same transaction can run concurrently (100 users all running EMPI simultaneously = 100 tasks). The transaction defines what; the task is what runs.
Q3. What is pseudo-conversational programming and why is it preferred over conversational?
In conversational programming, the CICS task stays active while waiting for the user to type — it holds storage, a dispatcher slot, and possibly file cursors for the entire duration of user think time (potentially minutes). In pseudo-conversational programming, the task terminates after each SEND MAP, saves state in a COMMAREA, and is restarted fresh when the user presses an AID key. CICS resources are only consumed during the milliseconds of actual processing. This allows one CICS region to serve thousands of users that a conversational design could not handle.
Q4. What is the Execute Interface Block (EIB)?
The EIB is a CICS-maintained control block automatically available to every CICS program via the LINKAGE SECTION (DFHEIBLK copybook). It contains: EIBTRNID (transaction ID), EIBTRMID (terminal ID), EIBCALEN (COMMAREA length), EIBAID (last AID key pressed), EIBRESP and EIBRESP2 (response codes from last command), EIBFN (last command function code), and EIBRSRCE (resource name). EIB fields are READ-ONLY — never write to them.
Q5. What is EIBCALEN and how is it used in pseudo-conversational programs?
EIBCALEN contains the length of the COMMAREA passed to the current task invocation. In pseudo-conversational logic: if EIBCALEN = 0, this is the first entry (no saved state — initialise and display the initial screen). If EIBCALEN > 0, this is a re-entry (saved state exists — copy DFHCOMMAREA to WORKING-STORAGE and process the user's input). Testing EIBCALEN must be the FIRST action in any pseudo-conversational program — accessing DFHCOMMAREA when EIBCALEN is 0 causes an ASRA ABEND (storage protection exception).
Q6. What AID keys are available in CICS and how do you test for them?
AID (Attention Identifier) keys are the keys that generate a CICS interrupt: Enter, PF1-PF24, PA1-PA3, and Clear. After RECEIVE MAP, the pressed key is available in EIB field EIBAID. To test it, COPY DFHAID into WORKING-STORAGE and compare EIBAID to the named constants: DFHENTER, DFHPF3, DFHPF12, DFHCLEAR, DFHPA1, etc. Example: IF EIBAID = DFHPF3 PERFORM RETURN-TO-MENU.
Q7. What is the COMMAREA and what are its limitations?
The COMMAREA (DFHCOMMAREA in LINKAGE SECTION) is a block of memory passed between programs (via EXEC CICS LINK/XCTL) and across pseudo-conversational task boundaries (via EXEC CICS RETURN COMMAREA). Limitations: maximum 32,767 bytes; passed by reference on LINK (both programs see the same storage); fixed layout must be shared by all programs that use it. For data exceeding 32 KB, use Temporary Storage queues and store only the queue name in the COMMAREA.
Q8. What is the difference between EXEC CICS LINK and EXEC CICS XCTL?
LINK invokes another program and returns to the caller when the called program issues EXEC CICS RETURN. It is analogous to a COBOL CALL statement. XCTL transfers control to another program without returning — the original program terminates and its storage is freed. It is analogous to CALL ... without any intention to return. Use LINK when you need a result from the called program. Use XCTL when navigating to a new screen or subsystem permanently.
Q9. What does EXEC CICS RETURN do with and without TRANSID?
Without TRANSID: terminates the current program and returns to the calling LINK program, or ends the task entirely if this is the top-level program.
With TRANSID and COMMAREA: ends the current task but schedules a new task for the specified TRANSID when the terminal user provides input (the pseudo-conversational continuation mechanism). The COMMAREA content is saved by CICS and passed to the new task.
Q10. Name and describe three common CICS ABEND codes.
- ASRA: Program check — divide by zero, data exception (non-numeric data in COMP-3 field), storage violation, invalid address. Always generates a dump.
- AICA: Runaway task — task exceeded maximum CPU time. Usually caused by an infinite loop or an SQL query with no row limit.
- AEY9: DB2 not available — CICS-DB2 Attachment Facility is not started or DB2 subsystem is down.
- PGMI (bonus): Program not installed — LINK or XCTL to a program that is not defined/installed in CICS.
Section 2: BMS Maps and Screen Handling (Questions 11–18)
Q11. What is BMS and what are the three BMS macro levels?
BMS (Basic Mapping Support) is the CICS component that defines and manages 3270 terminal screen layouts. The three assembler macro levels are: DFHMSD (mapset — the outer container, produces the load module), DFHMDI (map — one screen within the mapset), and DFHMDF (field — one data field on the screen with position, length, and attributes).
Q12. What is the difference between the physical map and the symbolic map?
The physical map (assembled with TYPE=MAP) is the load module installed as a CICS MAPSET resource — it is sent to the 3270 terminal to paint the screen layout. The symbolic map (assembled with TYPE=DSECT) is the COBOL copybook structure that programmers use in WORKING-STORAGE — it has L (length), A (attribute), O (output), and I (input) suffix fields for each named field on the map.
Q13. When do you use ERASE vs DATAONLY on EXEC CICS SEND MAP?
ERASE clears the entire screen and re-paints all labels, attributes, and data — used on the first send of a transaction or when switching between different maps. DATAONLY sends only the data fields (not the static labels and attribute bytes) — used for re-sends of the same map to update field values after processing. DATAONLY is significantly more efficient than ERASE for re-sends because it transmits less data to the terminal.
Q14. What is the MDT (Modified Data Tag) and why does it matter?
The MDT is a bit in the field's 3270 attribute byte that is set when the user types in that field. Only fields with the MDT set are included in the data stream sent to CICS on RECEIVE MAP. Fields the user didn't touch contain low-values (X'00') in the input symbolic map. This is why checking the L (length) suffix field of an input field is important — if EMPNOL = 0, the user didn't enter data in the EMPNO field.
Q15. How do you protect a field from user input at runtime?
Move the DFHBMPROT value (from DFHBMSCA copybook) to the field's attribute byte before SEND MAP. Example: MOVE DFHBMPROT TO EMPNAMEA. This changes the field to protected, so the user cannot type in it. To make it visible but protected and bright: use MOVE DFHBMBRY TO EMPNAMEA.
Q16. How do you position the cursor to a specific field?
Three methods: (1) Set ATTRB=(...,IC) in the DFHMDF macro for the default cursor position — use EXEC CICS SEND MAP with CURSOR option. (2) Specify CURSOR(n) on SEND MAP with n = the absolute screen offset (row-1 × width + column-1). (3) At runtime, set the attribute byte of the target field to include the IC attribute before SEND MAP with CURSOR option.
Q17. What is TIOAPFX=YES in the DFHMSD macro and what happens if you omit it?
TIOAPFX=YES generates a 12-byte FILLER at the start of the symbolic map to account for the TIOA (Terminal I/O Area) prefix. If omitted, the symbolic map is misaligned by 12 bytes from the physical map — field data written to the output map goes to the wrong screen positions, and input data is read from the wrong offsets. Always include TIOAPFX=YES.
Q18. What is DFHBMSCA and why is it important?
DFHBMSCA is the CICS-supplied copybook defining BMS attribute byte constants for runtime attribute modification. Key constants: DFHBMUNP (unprotected normal), DFHBMPROT (protected), DFHBMBRY (bright/highlighted), DFHBMDAR (dark/invisible — for passwords), DFHBMFSE (field set — forces MDT). Always COPY DFHBMSCA into WORKING-STORAGE of any program that modifies field attributes at runtime.
Section 3: File Control, Storage, and Queues (Questions 19–28)
Q19. How do you update a VSAM record in CICS?
Use READ UPDATE to acquire an exclusive lock, modify the record in WORKING-STORAGE, then REWRITE to update it. Example: EXEC CICS READ FILE('EMPFILE') RIDFLD(key) INTO(rec) UPDATE RESP(r) END-EXEC followed by EXEC CICS REWRITE FILE('EMPFILE') FROM(rec) RESP(r) END-EXEC. If you decide not to update, issue EXEC CICS UNLOCK to release the exclusive lock.
Q20. What is the CICS browse sequence and what does ENDFILE mean?
Browse sequence: STARTBR (position cursor) → loop of READNEXT (or READPREV) → ENDBR (close cursor). ENDFILE is returned by READNEXT when there are no more records beyond the current position. Exit your READNEXT loop when DFHRESP(ENDFILE) is returned. Always issue ENDBR after finishing a browse, whether ENDFILE was reached or the user pressed PF3 to exit.
Q21. What is the difference between TS and TD queues?
TS (Temporary Storage) queues: random-access (read by item number), non-destructive reads, re-readable. Used for session state, paging buffers, inter-task data sharing. Max item length ~32 KB. TD (Transient Data) queues: sequential, destructive reads (once read, item is gone), support ATI (Automatic Transaction Initiation). Used for logging, printing, sequential messaging. Items cannot be re-read.
Q22. What is ATI (Automatic Transaction Initiation)?
ATI is a CICS feature where CICS automatically starts a transaction when an intrapartition TD queue reaches a defined trigger level (item count). The TDQUEUE CSD definition specifies TRIGGERLEVEL and TRANSID. When the queue accumulates enough items, CICS starts the specified transaction — typically a print processor or log aggregator — without any human or program intervention.
Q23. How do you name a TS queue for a user session?
Use TRANSID (4 chars) + TERMID (4 chars) = 8-character queue name. Example: STRING EIBTRNID DELIMITED SIZE EIBTRMID DELIMITED SIZE INTO WS-TS-QUEUE. This guarantees a unique name per transaction+terminal combination, preventing queue name collisions when multiple users run the same transaction simultaneously.
Q24. What causes a QIDERR response on READQ TS vs QZERO?
QIDERR means the named TS queue does not exist at all — it was never written to or has already been deleted. QZERO means the queue exists but has no more unread items (for TD, it means the queue is empty). In a READQ TS loop, ITEMERR means you've requested an item number that doesn't exist. Always handle all three in a TS/TD reading program.
Q25. What is GETMAIN in CICS and when is it needed?
EXEC CICS GETMAIN allocates a block of storage from the CICS DSA at runtime. It is needed when: the buffer size is unknown at compile time (e.g., record count × record size), storage must persist beyond the current task (SHARED option), or a LINKAGE SECTION pointer needs to reference a dynamically allocated data area. Most CICS COBOL programs never need GETMAIN — CICS handles WORKING-STORAGE automatically.
Q26. What is a CICS storage violation?
A storage violation occurs when a program writes to storage it does not own — typically adjacent WORKING-STORAGE fields (caused by MOVE overflow), another task's storage, or CICS system storage. Symptoms: ASRA ABEND, data corruption in other tasks, or CICS storage violation messages in the job log. Prevention: check OCCURS subscripts, use MOVE with explicit lengths, always check EIBCALEN before accessing DFHCOMMAREA.
Q27. What are the CICS DSA sub-areas?
Below the 16 MB line: CDSA (CICS system storage) and UDSA (user application task storage). Above the 16 MB line: ECDSA and EUDSA (extended versions). Above the 2 GB bar: GCDSA and GUDSA (64-bit storage for very large data). A2xx ABENDs indicate storage shortage in specific DSA sub-areas.
Q28. What is STRINGS in a CICS FILE definition?
STRINGS controls how many concurrent VSAM I/O operations can be active against a file simultaneously. Each active READ UPDATE, STARTBR, or other operation consumes one string. If all strings are in use, the next operation must wait. Increase STRINGS in the CSD FILE definition when file control statistics show high string wait counts.
Section 4: DB2, SYNCPOINT, and Performance (Questions 29–38)
Q29. How does CICS connect to DB2?
Through the CICS-DB2 Attachment Facility, configured with a DB2CONN resource (which DB2 subsystem) and DB2ENTRY resources (which transactions use which DB2 plan and thread pool). When a task issues its first EXEC SQL, the Attachment Facility allocates a DB2 thread from the pool defined in the matching DB2ENTRY.
Q30. Why must you use EXEC CICS SYNCPOINT instead of EXEC SQL COMMIT in CICS?
EXEC SQL COMMIT commits only DB2 changes and bypasses CICS two-phase commit coordination. If the same UOW also modified a CICS VSAM recoverable file, those VSAM changes will NOT be committed — creating inconsistency. EXEC CICS SYNCPOINT coordinates a two-phase commit across ALL recoverable resources (DB2 and VSAM), ensuring atomicity. Always use EXEC CICS SYNCPOINT.
Q31. What is SQLCODE -911 and how do you handle it in CICS?
SQLCODE -911 means DB2 selected your transaction as the victim of a deadlock — your SQL changes were rolled back. Correct handling: (1) Issue EXEC CICS SYNCPOINT ROLLBACK to also roll back VSAM changes. (2) Display a "transaction conflict — please retry" message to the user. Do not retry automatically in the same task (the deadlock conditions may still exist); let the user re-initiate the transaction.
Q32. What is a protected vs unprotected DB2 thread in CICS?
Protected threads (PROTECTNUM in DB2ENTRY) stay allocated between uses, avoiding the overhead of thread allocation for each new task — faster for high-frequency transactions. Unprotected threads are freed after each task use — slower per use but consume fewer DB2 resources. Set PROTECTNUM to the expected steady-state concurrent usage; unprotected threads handle peak overflow.
Q33. What is NEWCOPY in CICS?
CEMT SET PROGRAM(name) NEWCOPY forces CICS to load a fresh copy of the program from the load library on the next invocation. Used after recompiling a CICS program to deploy the new version without recycling the CICS region. Note: tasks already running the program continue with the old copy; NEWCOPY only affects new task invocations.
Q34. How do you diagnose a slow CICS transaction?
Check SMF Type 110 records (or use CICS PA) to identify where time is being spent: DB2 thread wait time (size the thread pool), VSAM I/O wait (check file strings, look for missing indexes), CICS suspend time (contention or storage waits), or CPU time (expensive SQL or loops). CEMT INQUIRE TASK at runtime shows active task states and elapsed times.
Q35. What CICS ABEND code indicates the CICS region is running out of task storage?
A2xx codes. Specifically: A201 (CDSA shortage), A202 (UDSA shortage), A20B (ECDSA shortage), A20D (EUDSA shortage). Diagnose with CEMT INQUIRE DSAS. Causes: too many concurrent tasks, large WORKING-STORAGE programs, or SHARED GETMAIN memory leaks.
Q36. What is MRO (Multi-Region Operation) in CICS?
MRO allows multiple CICS regions within the same z/OS system to communicate with each other without going through a network. Typical MRO topology: a TOR (Terminal-Owning Region) receives terminal input and routes requests to AORs (Application-Owning Regions) for processing, and FORs (File-Owning Regions) for file access. This separation improves scalability and availability.
Q37. What is CICSplex?
CICSplex (CICS Parallel Sysplex) is IBM's framework for managing a collection of CICS regions across one or more z/OS systems as a single managed entity. CICSPlex SM (System Manager) provides workload balancing, monitoring, and administration across all regions from a single point.
Q38. What is the CICS HANDLE CONDITION command and why is it deprecated?
EXEC CICS HANDLE CONDITION was the pre-CICS/ESA mechanism for handling specific command error conditions — for example, EXEC CICS HANDLE CONDITION NOTFND(NOTFOUND-PARA). When a NOTFND condition occurred, control jumped to the specified paragraph. This approach is deprecated because it uses non-structured control flow (similar to a GOTO) and makes code hard to read. Modern CICS programs use RESP and RESP2 options on every command with EVALUATE for structured, precise error handling.
Section 5: Administration and Career (Questions 39–50)
Q39. What is the CSD and how is it managed?
The CSD (CICS System Definition) is a VSAM dataset storing all CICS resource definitions. Online management: CEDA transaction (DEFINE, ALTER, INSTALL, DELETE, VIEW). Batch management: DFHCSDUP utility (LIST, COPY, EXTRACT, MIGRATE). Definitions are organised into Groups and Lists. CICS installs resources from Lists at startup.
Q40. What is the difference between CEDA INSTALL and CEDA NEWCOPY?
CEDA INSTALL activates a CSD definition by loading it into the CICS region's resource tables. CEMT (not CEDA) SET PROGRAM NEWCOPY forces CICS to reload a program's load module. They operate at different layers: INSTALL manages resource definitions; NEWCOPY manages the program load module in memory.
Q41. How do you deploy a new CICS COBOL program?
(1) Compile and link-edit to a load library in DFHRPL. (2) CEDA DEFINE PROGRAM, CEDA DEFINE TRANSACTION. (3) CEDA INSTALL GROUP. (4) Test with CEMT INQUIRE PROGRAM to verify it is enabled.
Q42. What is DFHRPL in CICS?
DFHRPL is the DD statement in the CICS region's JCL that concatenates the load libraries from which CICS loads program modules. Application programs must be link-edited into a dataset in the DFHRPL concatenation. If a program is installed in CICS but not found in DFHRPL, the task ABENDs with PGMI.
Q43. What is the CICS SIT (System Initialisation Table)?
The SIT defines the startup parameters for a CICS region: which CSD lists to process at startup, the MAXTASKS setting, DSA size parameters (DSASZE, EDSASZE), the DB2 connection defaults, and many other region-wide settings. The SIT is assembled as a load module (DFHSIT) and referenced in CICS startup JCL.
Q44. What is a CICS dump and when is it produced?
A CICS dump is a formatted memory snapshot produced when CICS detects a serious error condition or when explicitly requested. Transaction dumps (EXEC CICS ABEND without NODUMP, or ASRA ABENDs) capture the failing task's storage. System dumps capture the entire CICS region. Dumps are written to the CICS auxiliary dump dataset (DFHDMPA/DFHDMPB). Use IPCS (Interactive Problem Control System) to format and analyse CICS dumps.
Q45. What are CICS RACF security considerations?
CICS uses RACF (Resource Access Control Facility) for security. Key areas: transaction security (which users/groups can run which TRANSID), command security (which users can issue CECS — the CICS command security transaction), resource-level security (which users can access specific files or programs), and sign-on security (EXEC CICS SIGNON/SIGNOFF for identifying the user to CICS).
Q46. What is the CICS CEDA DEFINE GROUP vs LIST?
A Group is a logical container for related resource definitions (e.g., all definitions for one application). A List is an ordered sequence of groups that CICS processes at startup. Resources must be in a Group. Groups are added to Lists. Lists are specified in the SIT for startup processing.
Q47. How do you cold start vs warm start CICS?
Cold start: CICS starts with no recovery — all in-flight UOWs from the previous session are discarded, and all resources are reinitialised. Used after a corruption or when a clean slate is required. Warm start: CICS recovers in-flight UOWs from the recovery log and restores resource states. Emergency restart: CICS performs recovery after an abnormal termination. Specify in CICS startup JCL: START=COLD, START=WARM, or START=AUTO (CICS decides based on recovery log).
Q48. What is the purpose of the CICS auxiliary trace facility?
CICS auxiliary trace records every EXEC CICS command issued by every task, with its parameters and response codes. This produces a very detailed audit trail useful for debugging intermittent errors. Trace records are written to the DFHAUXT/DFHBUXT datasets. Because tracing every task generates enormous I/O, auxiliary trace is enabled selectively (for specific transactions or for a time-limited window) during problem determination, never permanently in production.
Q49. Explain the lifecycle of a CICS region startup.
(1) CICS JCL job starts, CICS nucleus loads. (2) SIT is read — startup parameters established. (3) Datasets are opened (DFHCSD, DFHAUXT, DFHTEMP, etc.). (4) CSD Lists specified in SIT are processed — Groups are installed, resources (programs, transactions, files, mapsets) are loaded into CICS resource tables. (5) DB2CONN is activated if configured. (6) TCPIPSERVICE listeners start for web services. (7) CICS master terminal (CEMT) becomes available. (8) System is open for transactions.
Q50. What are the key differences between CICS TS (older versions) and CICS TS 6.x?
Key improvements in modern CICS TS 6.x: native JSON REST API support (without SOAP); enhanced Liberty JVM server (run Java/Node.js within CICS); cloud-native deployment with containers (CICS on containers); enhanced CICSplex SM with CICS Explorer dashboards; API gateway integration with IBM z/OS Connect EE; improved security with TLS 1.3; and support for 64-bit storage (above-the-bar) for very large data structures. The programming model (EXEC CICS commands, COBOL, pseudo-conversational) remains fundamentally unchanged.
Key Takeaways
CICS interview success comes from mastering the fundamentals first: pseudo-conversational design, EIB fields, COMMAREA handling, file control, and common ABEND codes. Build on that with deeper knowledge of BMS maps, TS/TD queues, and DB2 integration. For senior roles, add performance monitoring with SMF records and CICS PA, DSA tuning, CSD administration, and modern CICS web services. Every concept in this guide is covered in detail in the CICS Mastery Course — a comprehensive resource for developers and administrators at every stage of their mainframe career.
