Suppose you are updating a program called
PGMA, that controls all
the account deposits for a savings bank. Your program must work with
two older programs that are complex and do not have source code available.
The first program, called SUBPGMA, was updated six years ago and
runs in 31-bit addressing mode; it records deposits in money market
accounts. It cannot use data spaces. The other program, SUBPGMB, is
much older and records deposits in standard savings accounts. It runs
in 24-bit addressing mode. See Figure 1 for
a representation
of the storage.
Program PGMA, the main program, was written
to keep all of its
data in one large data space. PGMA must continually obtain appropriate
storage in the address space that is addressed by SUBPGMA and SUBPGMB.
After SUBPGMA and SUBPGMB finish, PGMA must copy all the updated
data back to the data space. This is degrading performance and needs
to be fixed. By using IARVSERV, you can eliminate the copying, and
reduce the complexity of PGMA.
Your update to PGMA would cause
the programs to work together this
way:
- PGMA creates a data space and initializes it with data.
- Before PGMA calls SUBPGMA to do a money market deposit, PGMA issues
GETMAIN for storage in the private area for a buffer. This buffer
is BUFFER31.
- PGMA issues IARVSERV SHARE to share the source
in the data space
with the target, BUFFER31. Use TARGET_VIEW=SHAREDWRITE so updates
can be made directly into the data space.
- PGMA now calls SUBPGMA
to update the data, passing the address
of BUFFER31 as the area to be updated.
- Once SUBPGMA updates
the data in BUFFER31, PGMA issues IARVSERV
UNSHARE followed by FREEMAIN to release the storage.
- When
PGMA needs to call SUBPGMB to do a savings account deposit,
the only difference is that PGMA must obtain storage below 16 megabytes
for the buffer. This buffer is BUFFER24.
- PGMA again issues
IARVSERV SHARE with TARGET_VIEW=SHAREDWRITE,
but identifies the target as BUFFER24.
- PGMA calls SUBPGMB
to update the data, passing the address of
BUFFER24 as the area to be updated.
- Once SUBPGMB updates the
data in BUFFER24, PGMA issues IARVSERV
UNSHARE and FREEMAIN to release the storage as before.
Note
that all three programs could share the data in the data space
at the same time. Sharing continues until PGMA issues IARVSERV UNSHARE
for that buffer area.
Figure 1. Sharing
Storage
with IARVSERV