Coding considerations for PSBs
This topic provides some guidelines for coding PSBs for the DRA when using CICS®.
PSBs for Online Transactions
- A PSB is needed for each online program that accesses DL/I databases.
- The name of the PSB specified in the PSBNAME= keyword of the PSBGEN macro must be exactly the same as one of the entries in the PDIR.
- The name of the PSB must also be the same as the name specified in the scheduling call issued by an online transaction. If the online transaction does not specify any name in the scheduling call, the name of the PSB must be exactly the same as the name of the program associated with the transaction in the CICS program control table (PCT). For example, assume transaction X is associated with program Y. If program Y links or transfers control to program Z, which issues the scheduling call without specifying any PSB name, the default name for the PSB is Y, because it is program Y that is associated with transaction X in the PCT.
- The CMPAT=YES option on the PSBGEN statement can be omitted.
- There is no specific maximum size for an individual PSB that can be used in CICS/ESA. However, a limitation is set by the PSB pool size in DBCTL.
Additional Processing Intent Options (PROCOPT)
Two additional types of processing intent can be specified with the PROCOPT= keyword of the PCB or SENSEG statement. The two additional options are O and E.
PROCOPT=O specifies read without integrity
; no dynamic enqueue is done by resource lock
management for calls against the database. With the G intent option, you can specify GO, GOP, GON,
or GOT. This option is only valid for the PCB statement. Read note number 1 under Attention for more information.
PROCOPT=E forces exclusive use of this database or segment by the online transaction. Other application programs scheduling a PSB referring to this database/segment wait during their scheduling process. No dynamic enqueue by resource lock management is done, but dynamic logging of database updates will be done. PROCOPT E can be specified with G, I, D, R, and A.
- The PROCOPT=O option affects integrity in reading and using uncommitted data. When you specify this option, IMS does not check the ownership of the segments returned. This means that the read-only user might have access to a segment that had been updated by another user. If the updating user then abends and is backed out, the read-only user would have seen a segment that no longer exists in the same form in the database. Consequently, if you specify this option, do not use the data that is read as a basis for updating records in any database.
- An abend might occur with PROCOPT=GO if another program updates pointers when this program is following the pointers. Pointers are updated during insert, delete, and backout operations.
- If PROCOPT=O in the PCB statement, the SENSEG statement must not specify a PROCOPT of I, R, D, H, or A.
- If the O or E option is used, it must be coded immediately after the associated function code; for example GO, not OG.