Blog › ICP guides

CICS developer on retainer: conversational EXEC CICS READ UPDATE on VSAM KSDS holds exclusive record lock 23 minutes while CSR steps away from terminal, IBM CICS developer, CICS TS developer on monthly retainer

October 10, 2026 · ~15 min read

A CICS developer was maintaining the account maintenance transaction for a regional bank’s customer service platform running on IBM z/OS 2.5 with IBM CICS TS 6.1 (region CICSPRD). The transaction code was ACMT (account maintenance), executed by the COBOL program ACMAINT. Customer service representatives (CSRs) at the bank’s branches used ACMT from 3270 green-screen terminals to process account maintenance requests: joint account holder name changes, address updates, beneficiary changes, and contact preference updates. The CUSTFILE VSAM KSDS (keyed sequential dataset) held the primary customer account records, 4.2 million records at 800 bytes each, keyed on account number. The bank had 43 branch locations, each with 6 to 12 CSR workstations accessing ACMT through a 3270 terminal network. At peak, the bank processed 280 account maintenance requests per business day. On Thursday, October 8, 2026, a customer service representative in the downtown branch opened account ACT-0009847-00 in the ACMT transaction to process a joint account holder name change for a married couple. The account had two joint holders, and the primary holder had legally changed her surname following a recent marriage.

The CICS ACMAINT program was a conversational CICS transaction — a single CICS task (ACMT0001, task number 1,847) that began when the CSR typed the account number and pressed ENTER, and remained active (a single long-running task) for the entire duration of the CSR’s interaction: reading the record, sending the display map to the terminal, waiting for the CSR to type the new data and press ENTER, and then writing the updated record. The program’s PROCEDURE DIVISION executed: EXEC CICS READ UPDATE FILE('CUSTFILE') INTO(WS-CUST-RECORD) RIDFLD(WS-ACCOUNT-NBR) LENGTH(800) END-EXEC. The EXEC CICS READ UPDATE command retrieves the specified VSAM KSDS record and places an exclusive hold on it — CICS acquires a VSAM exclusive record-level lock on the account record for ACT-0009847-00. This exclusive lock prevents any other CICS task (or batch program) from issuing a READ UPDATE on the same record until the lock is released. The lock is held for the duration of the current CICS task — from the READ UPDATE until either an EXEC CICS REWRITE (which writes the updated record and releases the hold), an EXEC CICS UNLOCK (which releases the hold without updating), or EXEC CICS SYNCPOINT or task termination (which commit or roll back the unit of work and release all holds).

After the READ UPDATE, ACMAINT sent the account details to the CSR’s terminal: EXEC CICS SEND MAP('ACMNT01') MAPSET('ACMNTMS') FROM(WS-ACMNT01O) ERASE END-EXEC. The terminal displayed the current account record — account number, current primary holder name, current joint holder name, address, phone, email — with the joint holder name field highlighted for editing. The program then issued EXEC CICS RECEIVE MAP('ACMNT01') MAPSET('ACMNTMS') INTO(WS-ACMNT01I) END-EXEC — entering a terminal wait: the CICS task ACMT0001 was suspended, waiting for the CSR to type the new joint holder surname and press ENTER. During this terminal wait, the CICS task was suspended in memory but the VSAM exclusive record lock on ACT-0009847-00 was actively held. No other CICS task could issue a READ UPDATE on that account record while ACMT0001 was suspended waiting for keyboard input.

At 10:14 AM, the CSR’s desk phone rang. She answered it — a call from the branch manager requiring immediate attention. She stepped away from her terminal without pressing ENTER (leaving the ACMT transaction waiting at the RECEIVE MAP). The CICS task ACMT0001 remained suspended, waiting for keyboard input. The VSAM exclusive record lock on ACT-0009847-00 remained held by ACMT0001. At 10:37 AM — 23 minutes later — the bank’s fraud team issued an internal alert for account ACT-0009847-00: a suspicious wire transfer attempt had been flagged by the fraud detection system. A fraud team CSR in the escalation center (downtown branch) entered transaction ACMT for account ACT-0009847-00 to immediately freeze the account (change the ACCOUNT_STATUS field from ACTIVE to FRAUD_REVIEW). This CSR’s CICS task ACMT0002 issued EXEC CICS READ UPDATE FILE('CUSTFILE') INTO(WS-CUST-RECORD) RIDFLD(WS-ACCOUNT-NBR) LENGTH(800) END-EXEC for account ACT-0009847-00. CICS could not acquire the exclusive record lock — it was held by ACMT0001. CICS suspended ACMT0002, waiting for the lock.

The ACMT transaction’s CICS profile was ACMTPROF, which defined DTIMOUT=120 (120-second deadlock timeout for terminal-wait situations). The DTIMOUT parameter causes CICS to time out a task that has been waiting for a terminal for more than 120 seconds — but ACMT0001 was waiting at EXEC CICS RECEIVE MAP (waiting for the CSR’s keyboard input), not waiting for a lock. ACMT0002, however, was waiting for a file lock (the VSAM exclusive record lock held by ACMT0001). After 120 seconds (10:39 AM), CICS issued the LOCKED response to ACMT0002’s EXEC CICS READ UPDATE command: EIBRESP=24 (LOCKED condition — EIB response code 24 indicates the record is locked by another CICS task and the DTIMOUT expired while waiting). The CICS program ACMAINT checked EIBRESP after the READ UPDATE command. Its error-handling logic evaluated: EVALUATE EIBRESP WHEN DFHRESP(NOTFND) PERFORM NOT-FOUND-ROUTINE WHEN DFHRESP(DUPKEY) PERFORM DUPKEY-ROUTINE WHEN DFHRESP(NORMAL) CONTINUE WHEN OTHER CONTINUE END-EVALUATE. EIBRESP=24 (LOCKED) is not DFHRESP(NOTFND) (which is 13 in CICS TS 6.1), not DFHRESP(DUPKEY) (which is 14), and not DFHRESP(NORMAL) (0). It fell through to WHEN OTHER CONTINUE — the program continued executing with the READ UPDATE having returned no data (WS-CUST-RECORD remained at its WORKING-STORAGE initialization value of binary zeros).

The program then moved fields from WS-CUST-RECORD into the display map output area. WS-ACCT-NBR (PIC X(14)) contained spaces (FILLER initialization). WS-HOLDER-NAME (PIC X(40)) contained spaces. WS-ACCT-STATUS (PIC X(12)) contained spaces. WS-ACCT-BALANCE (PIC S9(12)V99 COMP-3) contained binary zeros (X’000000000000000F’ — which displays as 0.00 when moved to a display field). The program issued EXEC CICS SEND MAP with this zero-initialized data. The fraud team CSR’s terminal displayed an account maintenance screen with blank account number, blank holder names, zero balance, and blank status. The CSR entered the FRAUD_REVIEW status in the status field and pressed ENTER to submit. The subsequent EXEC CICS REWRITE in ACMAINT wrote the binary-zero-initialized WS-CUST-RECORD with only the ACCOUNT_STATUS field populated (modified by the CSR) back to CUSTFILE for whatever record position CICS had. Because WS-CUST-RECORD was binary zeros (not the real account record), the REWRITE attempted to write an 800-byte record consisting mostly of binary zeros — CICS issued EXEC CICS REWRITE with the zero-initialized record. CICS returned EIBRESP=NORMAL (0) for the REWRITE, because VSAM accepted the write (the record was syntactically valid: right key, right length). The account record ACT-0009847-00 in CUSTFILE was now substantially corrupted: all fields except ACCOUNT_STATUS had been overwritten with binary zeros. The fraud team CSR saw a completed screen and assumed the freeze had been applied. A second fraud alert 4 minutes later found that ACT-0009847-00 now had a zero balance and blank account holder name — the corruption was discovered. The bank’s DBA team restored the account record from the nightly VSAM backup.

IBM CICS TS in 2026: the online transaction backbone of banking, insurance, and retail

IBM CICS Transaction Server for z/OS is the online transaction processing middleware that powers the majority of high-volume transactional workloads on IBM z/OS mainframes — bank teller systems, ATM networks, insurance policy administration, government benefit payment systems, airline reservation systems, retail point-of-sale networks, and stock exchange trading platforms. IBM CICS TS 5.4 entered General Availability in 2017; CICS TS 5.6 in 2019; CICS TS 6.1 in 2022 (the current widely deployed version, with z/OS 2.5 and Db2 13 support, Liberty server for Java EE 8 applications, and enhanced z/OS 3.1 compatibility). Most major financial services organizations are operating CICS TS 6.1 in production and are evaluating CICS TS 6.2 (announced 2025) for migration. A typical large bank runs dozens of CICS regions — production, test, development, disaster recovery — with CICSPlex SM (Systems Management) managing workload routing and monitoring across the multi-region configuration.

The CICS developer’s monthly retainer role at a bank’s core banking platform covers three main areas. First, CICS COBOL and PL/I application program maintenance: maintaining the EXEC CICS command-level programs that implement banking transactions — account inquiry (READ), account update (READ UPDATE / REWRITE), account creation (WRITE), account deletion (DELETE), inter-account transfer (READ UPDATE on source + READ UPDATE on target + REWRITE both), SYNCPOINT for multi-file or CICS-Db2 transaction boundaries, BMS map send/receive for 3270 terminal interactions, and EXEC CICS LINK/XCTL for program-to-program calls in a service-oriented CICS application. Second, CICS resource definition maintenance: maintaining the CICS resource definitions in the CSD (CICS System Dataset) — transaction definitions (CEDA DEFINE TRANSACTION) that specify the program name, transaction ID, priority, transaction class (TRANCLASS), and security key; program definitions (CEDA DEFINE PROGRAM) for loadable modules; file definitions (CEDA DEFINE FILE) for VSAM datasets; and profile definitions (CEDA DEFINE PROFILE) for transaction behavior parameters including DTIMOUT, DFLIMIT, SCRNSIZE, and PRINTERCOMP. Third, CICS ABEND diagnosis and resolution: tracing ABEND codes (ASRA for program check / data exception, ASRB for hardware check, AEY9 for unhandled Db2 SQL exception, AICA for runaway task, AEIO for I/O error, AEI0 for illegal CICS command) through CICS auxiliary trace dumps (DFHCESD output) to identify the program, paragraph, and EXEC CICS command at which the ABEND occurred, and correcting the application code or CICS resource definition to prevent recurrence.

The conversational vs. pseudo-conversational design distinction is the fundamental architectural decision for any CICS application that requires a user to view data, edit it, and submit the changes — a pattern that covers virtually every account maintenance, policy update, claim processing, and order entry CICS transaction in production. A conversational transaction is a single CICS task that spans the entire interaction: READ UPDATE (acquire lock), SEND MAP (display to terminal), RECEIVE MAP (wait for user input), REWRITE (commit update). The task is active — consuming CICS virtual storage, a CICS TCB slot, and the VSAM file lock — for the entire user interaction duration, which can range from seconds (a fast typist making a simple change) to hours (a CSR distracted by a call). A pseudo-conversational transaction splits the interaction into two or more short-lived tasks: Task 1 reads the record (READ, not READ UPDATE — no lock held), sends the display map, and returns with EXEC CICS RETURN TRANSID('ACMT') COMMAREA(WS-COMM) LENGTH(200) — ending the task and placing the CICS region’s resources (TCB, virtual storage, and all file locks) back in the pool. Task 1 holds no VSAM lock after it returns. When the CSR presses ENTER, CICS starts a new Task 2 execution: the program retrieves the COMMAREA from the prior task, validates that the record has not been changed by another task since Task 1 read it (optimistic concurrency check: re-read the record and compare a checksum or last-update timestamp stored in the COMMAREA), issues READ UPDATE, applies the CSR’s changes, REWRITE, and RETURN. The VSAM exclusive lock is held only from Task 2’s READ UPDATE to REWRITE — typically 200 milliseconds to 2 seconds.

CICS READ UPDATE lock, DTIMOUT, and EIBRESP=LOCKED in CICS TS 6.1

The CICS EXEC CICS READ UPDATE command acquires a VSAM exclusive record-level hold (sometimes called a “deferred write” hold) on the retrieved record. For a VSAM KSDS (Key-Sequenced Dataset), this hold prevents any other CICS task (including tasks in other CICS regions connected via MRO or ISC) from issuing a READ UPDATE on the same record key in the same VSAM cluster. The hold is NOT at the VSAM RLS (Record Level Sharing) lock level unless the VSAM file is opened for RLS access (VSAM RLS is required for cross-region sharing; classic non-RLS VSAM access serializes at the CI or record level within a region). For non-RLS VSAM files accessed by a single CICS region, the READ UPDATE hold is a within-region serialization: multiple tasks in the same CICS region are serialized by the hold; tasks in a batch job accessing the same VSAM file concurrently may see the record as locked (VSAM open conflict at the CI level) or may wait (depending on VSAM SHARE OPTIONS specified on the VSAM DEFINE CLUSTER command — SHROPT(2 3) allows multiple read users and one update user, while SHROPT(4 3) allows full sharing with CICS managing serialization at the record level via the hold mechanism).

The DTIMOUT profile parameter in the CICS profile definition (CEDA DEFINE PROFILE DTIMOUT(120)) is specifically a terminal wait timeout: it limits how long a CICS task can remain suspended at an EXEC CICS RECEIVE MAP or EXEC CICS CONVERSE command waiting for terminal keyboard input. DTIMOUT does NOT govern how long a CICS task can wait for a VSAM file lock. A task waiting for a VSAM READ UPDATE lock on a record held by another task will wait indefinitely by default (CICS does not automatically timeout lock waiters). The task waiting for the file lock (ACMT0002) received EIBRESP=LOCKED because the DTIMOUT on the holding task (ACMT0001) expired: CICS detected that ACMT0001 had been suspended at EXEC CICS RECEIVE MAP for 120 seconds (the DTIMOUT limit), cancelled ACMT0001, rolled back its unit of work (releasing the READ UPDATE hold on ACT-0009847-00), and — at the moment the hold was released — the waiting ACMT0002 task received the LOCKED response because CICS had already committed to returning LOCKED to the waiter after the DTIMOUT recovery sequence. The sequence: ACMT0001 suspended at RECEIVE MAP for 120 seconds → DTIMOUT expires → CICS cancels ACMT0001 (CDTS ABEND for timeout) → hold on ACT-0009847-00 released → ACMT0002 awakened → ACMT0002 receives EIBRESP=LOCKED (the response was set when the wait was initiated, 120 seconds earlier, and LOCKED reflects that the wait ended due to timeout rather than due to successful acquisition).

The root cause analysis required reviewing the ACMAINT COBOL source and the CICS profile definition. The CICS developer retrieved ACMAINT from the COBOL source library (CICS.COBOL.SOURCE member ACMAINT) and confirmed the conversational pattern: READ UPDATE immediately after the account number input, followed by SEND MAP and RECEIVE MAP. The developer also reviewed the CICS DFHCSDUP output (CSD listing) for the ACMT transaction definition and confirmed PROFILE(ACMTPROF), then checked the ACMTPROF profile: DTIMOUT(120). The fix had two components. First, an immediate patch: add EIBRESP=LOCKED handling in ACMAINT (WHEN DFHRESP(LOCKED) PERFORM LOCKED-ROUTINE) that re-reads the record as a non-update READ, displays the account data with a “RECORD TEMPORARILY UNAVAILABLE — PLEASE TRY AGAIN IN 2 MINUTES” message, and returns without attempting any update. This prevents the data corruption path (WS-CUST-RECORD binary zeros being written to CUSTFILE). Second, the structural fix: redesign ACMAINT to pseudo-conversational (Task 1 READ + SEND MAP + RETURN TRANSID COMMAREA; Task 2 READ UPDATE + validate COMMAREA CRC + REWRITE + RETURN). The pseudo-conversational redesign required 8 hours of COBOL coding, 3 hours of testing, and a separate change record (ServiceNow CHG0089214). After deployment: maximum VSAM exclusive lock duration for any account maintenance: ~1 second (Task 2 READ UPDATE to REWRITE). Garbled screen rate: 0. Account corruption incidents: 0.

Typical IBM CICS developer retainer work and what it looks like in a work log

Conversational CICS READ UPDATE holding VSAM record lock during human operator interaction is the canonical invisible CICS locking bug for any transaction that was written as a conversational design (single task spanning the full user interaction) in an era when terminals were dedicated to a single user and long holds were acceptable. It appears in CICS retainer work logs for bank account maintenance transactions (READ UPDATE on CUSTFILE during CSR interaction), insurance policy administration transactions (READ UPDATE on POLFILE during underwriter review), government benefit eligibility update transactions (READ UPDATE on BENESUPR during caseworker interaction), and healthcare patient record update transactions (READ UPDATE on PATFILE during registration clerk interaction). The work log entry: “IBM CICS TS 6.1 CICSPRD; transaction ACMT COBOL ACMAINT; EXEC CICS READ UPDATE FILE('CUSTFILE') RIDFLD ACT-0009847-00 — VSAM exclusive record lock acquired; EXEC CICS SEND MAP ACMNT01; EXEC CICS RECEIVE MAP — task suspended for terminal input; CSR away 23 minutes (phone call); VSAM lock on ACT-0009847-00 held 23 minutes by ACMT0001; ACMT0002 escalation CSR ACMT for same account; EXEC CICS READ UPDATE — EIBRESP=LOCKED (24) after DTIMOUT=120 seconds ACMTPROF; ACMAINT handles EIBRESP=NOTFND (13), EIBRESP=DUPKEY (14) not LOCKED (24); WHEN OTHER CONTINUE — WS-CUST-RECORD binary zeros; REWRITE writes zero-initialized record to CUSTFILE — account corruption; DBA restore from backup; immediate fix: add WHEN DFHRESP(LOCKED) error display in ACMAINT; structural fix: pseudo-conversational redesign CHG0089214; max lock duration: 23 min → 1s; corruption rate: 0; hours: 3h + 8h redesign.”

CICS ASRA ABEND (program check / data exception) from binary zero COMP-3 field in account number handling is the most common CICS ABEND in COBOL CICS programs that move user-entered terminal data into packed-decimal (COMP-3) or binary (COMP, BINARY) fields without editing validation. When a CSR presses ENTER with a blank or non-numeric account number field, the RECEIVE MAP returns the field as spaces or low-values in the input map area. A MOVE of spaces to a PIC S9(12)V99 COMP-3 WORKING-STORAGE field causes ABEND ASRA (interrupt code 0007 = data exception) at the MOVE instruction. Work log: “CICS TS 6.1 CICSPRD; transaction ACMT ABEND ASRA; DFHCESD dump offset +X'02A0' MOVE WS-BALANCE-INPUT TO WS-ACCT-BALANCE; WS-BALANCE-INPUT REDEFINES map field ABAL1I BMS PIC X(14); CSR entered spaces in balance field (empty input); WS-BALANCE-INPUT X'40404040404040404040404040404040' (spaces); MOVE to WS-ACCT-BALANCE PIC S9(12)V99 COMP-3 — X'40' in low nibble not valid packed decimal; data exception 0007; fix: INSPECT WS-BALANCE-INPUT CONVERTING ' ' TO '0' before MOVE; alternatively EXEC CICS HANDLE CONDITION INVREQ for numeric field validation; ASRA rate 3–5/day → 0; hours: 2h.”

CICS AEY9 ABEND from unhandled Db2 SQLCODE -803 (unique constraint violation) on WRITE occurs in CICS-Db2 programs that issue an INSERT via embedded SQL or EXEC CICS WRITE FILE (for Db2-backed CICS file definitions via the CICS File Control Bridge) without handling the duplicate-key condition. When a CSR attempts to create a new account with an account number that already exists in the Db2 CUSTOMERS table, the embedded SQL INSERT returns SQLCODE -803 (unique constraint violation on the primary key). If the CICS program only handles SQLCODE = 0 (success) and SQLCODE = +100 (not found), the -803 falls through to an unhandled condition, producing AEY9 (unhandled SQL exception in CICS-Db2 thread). Work log: “CICS TS 6.1 CICSPRD; transaction NEWACCT COBOL NEWACCTM; EXEC SQL INSERT INTO CUSTOMERS (ACCT_NBR, CUST_NAME, OPEN_DATE) VALUES (:WS-ACCT-NBR, :WS-CUST-NAME, CURRENT DATE) END-EXEC; SQLCODE -803 (unique constraint on CUST_PK index); NEWACCTM handles SQLCODE 0 and +100 only; CICS ABEND AEY9; DFHCESD: ABCODE=AEY9 PGMNAME=NEWACCTM OFFSET=+X'01B4' EXEC SQL INSERT; rate: 2–4/week (duplicate account number entry); fix: add WHEN SQLCODE = -803 PERFORM DUPLICATE-ACCOUNT-ROUTINE; display ‘ACCOUNT NUMBER ALREADY EXISTS — PLEASE VERIFY’; AEY9 rate 0; hours: 1.5h.”

Track IBM CICS developer retainer hours without the status emails

When a 3-hour investigation traces account record corruption to ACMAINT conversational READ UPDATE holding VSAM exclusive lock on ACT-0009847-00 for 23 minutes during CSR phone call — EIBRESP=LOCKED (24) after 120-second DTIMOUT; ACMAINT handles NOTFND and DUPKEY but not LOCKED; WS-CUST-RECORD binary zeros written to CUSTFILE via unhandled REWRITE — the work log must name the transaction, the EIBRESP value, the DTIMOUT setting, the corruption path, and the pseudo-conversational redesign that reduced lock duration to 1 second. HourTab gives your CICS retainer client a public dashboard URL they can bookmark: hours used, hours remaining, and a work log naming the READ UPDATE lock duration, the EIBRESP handling fix, and the zero-corruption outcome. No client login. No status emails. CSV in, URL out.

See HourTab pricing →

How HourTab tracks IBM CICS developer retainer hours

The conversational READ UPDATE lock bug is invisible in functional testing by the same mechanism that makes all human-interaction-time lock bugs invisible: the test always passes because the tester types quickly and the lock is held for seconds, not minutes. The ACMAINT developer who wrote the original conversational design was following a 1980s CICS programming pattern that was standard before pseudo-conversational was widely adopted — and the transaction worked correctly for 11 years in production, because CSRs typically typed within a few seconds and no concurrent access to the same account occurred during the interaction. The LOCKED condition had never appeared in 11 years of SDSF and CICS trace monitoring because the DTIMOUT of 120 seconds was long enough that 99.8% of normal CSR interactions completed within the window. The bug only materialized as a data corruption incident when, for the first time, two events aligned: a CSR held the lock for 23 minutes (longer than the 120-second DTIMOUT), and a concurrent urgent request arrived for the same account number within those 23 minutes.

The work log entry that makes CICS conversational READ UPDATE lock work auditable must name every element of the causal chain: the CICS TS version and region (CICS TS 6.1, CICSPRD), the transaction code and program (ACMT, ACMAINT), the CICS command (EXEC CICS READ UPDATE FILE('CUSTFILE') RIDFLD), the lock type (VSAM exclusive record hold), the lock duration (23 minutes), the trigger condition (CSR away from terminal, RECEIVE MAP terminal wait), the DTIMOUT setting (120 seconds, ACMTPROF), the EIBRESP value (24 = LOCKED), the unhandled condition code path (WHEN OTHER CONTINUE in ACMAINT), the data corruption mechanism (WS-CUST-RECORD binary zeros written via unhandled REWRITE), the corruption discovery method (second fraud alert found zero-balance record), the restoration method (VSAM backup restore), the immediate fix (LOCKED condition handling), the structural fix (pseudo-conversational redesign CHG0089214), and the zero-corruption outcome. A log that says “fixed CICS locking issue in account maintenance transaction, 11h” is not auditable to a bank’s operations manager who needs to explain to the compliance team why an account record was overwritten with binary zeros during a fraud response attempt. HourTab gives IBM CICS developers a public retainer-hours URL they send to clients — banks, insurance carriers, government agencies, and retailers that run critical online transaction processing applications on IBM CICS maintained by a CICS specialist on monthly retainer.

The broader context for IBM CICS retainer billing is that a conversational READ UPDATE holding a VSAM exclusive lock for the duration of a human operator interaction is the CICS instantiation of the universal principle that exclusive locks must be held for the minimum duration necessary to maintain data integrity — not for the duration of a human thought process. IBM Db2 developer retainers cover the equivalent at the Db2 relational layer: INVUPD01 FOR UPDATE OF cursor accumulating 847,000 Db2 X locks over 3.5 hours without intermediate COMMIT, blocking CICS WPQA queries with SQLCODE -911 REASON 00C90088 — same class of lock held longer than necessary, different technical layer. JCL developer retainers cover the equivalent at the z/OS allocation layer: PREMBIL1 STEP020 DISP=OLD holding z/OS ENQ EXCLUSIVE on a read-only VSAM dataset for 63 minutes, blocking PREMRPT1 STEP010 for 61 minutes — z/OS dataset-level exclusive lock, same pattern. IMS DB developer retainers cover the equivalent in IBM IMS hierarchical databases: CLMPAY01 BMP accumulating 3,847 POLICY segment exclusive locks over 4 hours and 45 minutes without an IMS checkpoint, blocking online MPP transaction CPMD with IMS status code DC — IMS hierarchical database lock, same root cause.

FAQ: IBM CICS developer retainers

What does an IBM CICS developer on retainer typically do?

An IBM CICS TS developer on monthly retainer covers CICS COBOL and PL/I application program maintenance (EXEC CICS READ, READ UPDATE, REWRITE, DELETE, WRITE, UNLOCK, SEND MAP, RECEIVE MAP, RETURN, LINK, XCTL, SYNCPOINT, HANDLE CONDITION, RESP/RESP2 checking), CICS resource definition maintenance (CEDA DEFINE / ALTER / INSTALL / ENABLE / DISABLE for transactions, programs, files, profiles, TSQ and TDQ definitions), CICS file control for VSAM and non-VSAM files (READ UPDATE / REWRITE / UNLOCK for pessimistic locking; optimistic concurrency check design for pseudo-conversational transactions), CICS ABEND diagnosis (ASRA for data exception, AEY9 for Db2 SQL exception, AICA for runaway task, AEIO for I/O error) via DFHCESD dump and auxiliary trace analysis, pseudo-conversational transaction design and conversational-to-pseudo-conversational migration, CICS-Db2 unit-of-work management, and CICS TS 5.x to 6.1 version migration.

What CICS debugging work is most commonly underlogged?

Conversational CICS transactions that issue READ UPDATE and then RECEIVE MAP — holding VSAM exclusive record locks for the duration of operator interaction — are the most systematically underlogged CICS retainer work. Pattern: ACMAINT EXEC CICS READ UPDATE FILE('CUSTFILE') acquires VSAM exclusive lock on ACT-0009847-00; EXEC CICS SEND MAP; EXEC CICS RECEIVE MAP — task suspended; CSR away 23 minutes; lock held 23 minutes; escalation CSR ACMT0002 EXEC CICS READ UPDATE EIBRESP=LOCKED (24) after DTIMOUT=120s; ACMAINT handles NOTFND (13), DUPKEY (14) not LOCKED (24); WHEN OTHER CONTINUE — WS-CUST-RECORD binary zeros; REWRITE corrupts account record; fix: LOCKED condition handling + pseudo-conversational redesign; READ UPDATE held ~1 second in Task 2; corruption rate 0. Log must name the EIBRESP value, the DTIMOUT setting, the corruption path, and the pseudo-conversational redesign.

What are typical IBM CICS developer retainer rates?

Entry-level IBM CICS developers with experience in CICS COBOL command-level programming (EXEC CICS READ/WRITE/REWRITE/DELETE, SEND MAP/RECEIVE MAP, RETURN, LINK), basic BMS map definitions, CEDA DEFINE/INSTALL/ENABLE, and ABEND code lookup typically bill at $80 to $130 per hour. Mid-level CICS developers with experience in pseudo-conversational transaction design (COMMAREA state transfer, TSQ browsing), CICS file control for VSAM KSDS/ESDS (READ UPDATE/REWRITE/UNLOCK), CICS ABEND diagnosis (DFHCESD dump, auxiliary trace, RESP/RESP2 analysis), CICS-Db2 unit-of-work management, program-to-program communication (LINK, XCTL, START/RETRIEVE), and CICS TS 5.x to 6.1 migration typically bill at $120 to $200 per hour. Senior CICS developers with expertise in CICS region tuning (MXT, TRANCLASS throttling, dispatcher weights, TCP/IP socket listeners), intersystem communication (ISC, MRO, IPIC), CICS Liberty server and JVM server configuration, large-scale CICS TS version upgrade planning, and CICSPlex SM workload management typically bill at $180 to $300 per hour. Monthly retainer ranges: $3,000 to $5,500/month for CICS program maintenance, transaction definition management, and ABEND diagnosis; $5,000 to $10,000/month for active CICS development, pseudo-conversational redesign, and CICS TS migration.

What should an IBM CICS developer retainer agreement include?

A CICS retainer agreement should specify: CICS TS version (5.4, 5.6, 6.1) and single-region vs. CICSPlex configuration (CICSPlex SM affects workload routing, monitoring, and resource definition management); whether the retainer covers CICS COBOL/PL/I application program maintenance, CICS resource definition management (CEDA/DFHCSDUP), or CICS system administration (MXT, DTIMOUT, trace, statistics); whether the developer has CEDA INSTALL/ENABLE authority and access to CICS auxiliary trace datasets; the specific CICS region name(s) and application transaction codes being maintained; whether CICS-Db2 or CICS-IMS interaction is in scope; whether pseudo-conversational redesign of existing conversational transactions is in scope (multi-week engagement work); and whether CICS TS version upgrade support is included.

How should IBM CICS developer retainer hours be logged?

Log each CICS retainer session with the CICS TS version, region name, transaction code, program name, specific EXEC CICS command, EIBRESP value, and before/after metric. For conversational READ UPDATE lock: IBM CICS TS 6.1 CICSPRD; ACMT ACMAINT; EXEC CICS READ UPDATE FILE('CUSTFILE') RIDFLD ACT-0009847-00 LENGTH(800) — VSAM exclusive lock; EXEC CICS SEND MAP ACMNT01; EXEC CICS RECEIVE MAP — suspended 23 min; escalation CSR ACMT0002 same account EIBRESP=LOCKED (24) after DTIMOUT=120s ACMTPROF; ACMAINT handles NOTFND (13) DUPKEY (14) not LOCKED (24); WHEN OTHER CONTINUE — WS-CUST-RECORD binary zeros; REWRITE overwrites account record — corruption; DBA restore from backup; immediate fix: WHEN DFHRESP(LOCKED) error display added in ACMAINT; structural fix: pseudo-conversational redesign CEDA DEFINE TRANSACTION ACMT PROGRAM(ACMAINT2) CHG0089214; Task 1 READ + SEND MAP + RETURN TRANSID COMMAREA; Task 2 READ UPDATE + CRC validate + REWRITE + RETURN; lock held ~1s; corruption rate 0; hours: 3h analysis + 8h redesign + 3h test.