👁 0
Q: When should I use COMMIT in DB2?
Answer:
COMMIT saves all changes since the last COMMIT and releases locks.
When to COMMIT:
- After processing a logical unit of work
- Periodically in long-running batch (every N records)
- Before ending the program successfully
Frequency Guidelines:
- Too frequent: Performance overhead
- Too rare: Lock contention, large log
- Typical: Every 100-1000 records in batch
Best Practice:
MOVE 0 TO WS-COMMIT-COUNT.
PERFORM PROCESS-RECORD.
ADD 1 TO WS-COMMIT-COUNT.
IF WS-COMMIT-COUNT >= 500
EXEC SQL COMMIT END-EXEC
MOVE 0 TO WS-COMMIT-COUNT
END-IF.
Note: In CICS, syncpoint (COMMIT) happens automatically at task end. Explicit SYNCPOINT is rarely needed.
👁 0
Q: What is pseudo-conversational programming in CICS?
Answer:
Pseudo-conversational programming is a technique where the program ends between user interactions, freeing system resources.
How it works:
- Program sends screen to user and ends (RETURN TRANSID)
- User enters data and presses Enter
- CICS starts a new task with same program
- Program retrieves saved data from COMMAREA
- Process continues
Benefits:
- Efficient resource usage
- Better response times
- More concurrent users
Implementation:
* End task, wait for user
EXEC CICS RETURN
TRANSID('MENU')
COMMAREA(WS-COMM)
LENGTH(100)
END-EXEC.
* On return, check EIBCALEN
IF EIBCALEN = 0
PERFORM FIRST-TIME
ELSE
MOVE DFHCOMMAREA TO WS-COMM
PERFORM PROCESS-INPUT
END-IF.
👁 0
Q: What is pseudo-conversational programming?
Answer:
Pseudo-conversational ends task after sending screen, restarts on input. EXEC CICS RETURN TRANSID(trans) COMMAREA(data). Saves resources - no task waiting for user. Must restore state from COMMAREA. Standard CICS approach.
👁 0
Q: Explain CICS task and transaction
Answer:
Transaction is unit of work started by TRANSID. Task is CICS execution instance. One transaction may create multiple tasks. Task has TCA (Task Control Area). EIBTRNID has transaction ID. Concurrent tasks share resources.
👁 0
Q: How to use temporary storage?
Answer:
TS queue stores data across tasks. EXEC CICS WRITEQ TS QUEUE(name) FROM(data). READQ retrieves. DELETEQ removes. ITEM number for multiple items. MAIN/AUXILIARY for storage type. Named by string.
👁 0
Q: How to SYNCPOINT?
Answer:
SYNCPOINT commits changes. EXEC CICS SYNCPOINT. Makes updates permanent. Or SYNCPOINT ROLLBACK undoes since last sync. Implicit syncpoint at task end. Use for transaction consistency.
👁 0
Q: What is EIBTRMID?
Answer:
EIBTRMID contains terminal ID (4 chars). Available in EIB. Identifies user terminal. Used for session management, logging. May be blank for non-terminal tasks.
👁 0
Q: Explain SUSPEND command
Answer:
SUSPEND yields control to other tasks. EXEC CICS SUSPEND. Allows multitasking. Task resumes when dispatched. Use sparingly. May help long-running tasks. Usually unnecessary.
👁 0
Q: What is GETMAIN?
Answer:
GETMAIN allocates temporary storage. EXEC CICS GETMAIN SET(pointer) LENGTH(size) INITIMG(X'00'). Returns pointer. Use for dynamic memory. FREEMAIN releases. SHARED for multi-task access. Automatic cleanup on task end.
👁 0
Q: Explain RETURN command
Answer:
RETURN ends program or task. EXEC CICS RETURN returns to caller. EXEC CICS RETURN TRANSID(next) COMMAREA(data) for pseudo-conv. IMMEDIATE for no COMMAREA. End of logical unit.
👁 0
Q: What is CEMT?
Answer:
CEMT inquires and sets resources. CEMT I TASK shows tasks. CEMT S FILE(name) OPEN opens file. Master terminal transaction. Operational control. I for inquire, S for set.