Title: Honda Europe
1Honda Europe
- Based in Gent
- European logistic parts Centre for ...
2- Tom Decabooter
- member of the CICS/DB2/IMS system team
- Tom.Decabooter_at_honda-eu.com
- Honda Europe nv
- Langerbruggestraat 104
- B-9000 Gent
3Managing Batch Commit Frequency
4The Problem
- Multiple batch jobs.
- Accessing multiple tables simultaneously for
select, update and insert. - Only commit at the end of the job.
- Very long UOWs
- High risk for timeouts
JOB A
JOB D
Tab01
JOB B
Tab02
JOB E
JOB C
5A Solution
- Adapt programs to commit more frequently
- Commit after updating n rows
- Commit after t seconds elapsed time
- Shorter UOWs
JOB A
JOB D
Tab01
JOB B
Tab02
JOB E
JOB C
6Project grows more problems
- More tables
- More jobs
- More problems timeouts
- Adapt n and/or t in programs
- Change all programs
- Massive recompile
- Not very flexible
Tab01
JOB A
JOB D
Tab02
JOB B
JOB F
JOB E
Tab03
JOB C
7What we want
- be able to set/change the values n and t
- without recompiling the program
- for every program individually
- by using a very simple mechanism
8A better solution (1/3)
1. Create table HOV.OPROGT with a row for every
program, and a column for the values n and t
Commit every n rows
Commit every t seconds
Program description
Program name
9A better solution (2/3)
2. When a program starts, n and t are fetched
from the HOV.OPROGT table. If the row for the
program is not found, the DUMMY row is
automatically copied. This coding is
automatically inserted by the in-house developed
COBOL precompiler (AID).
10A better solution (3/3)
CICS transaction to maintain HOV.OPROGT table
11Development support
To aid the programmer in implementing this, a
macro was developed that supports the use of
the HOV.OPROGT table h-endluw(norestart,im
mediate) Macros are expanded automatically by
the in-house developed COBOL precompiler (AID).
12h-endluw logic
h-endluw
- check elapsed time vs t
- check number of rows vs n
initialisation
Y
Commit ?
- reset elapsed time
- reset counter
N
- Commit
- Update restart info
- x20s-reposition-after-commit
end