EGL offers the following
program communication block (PCB) record parts:
- IO_PCBRecord
- PCB of pcbType=TP that lets a COBOL telecommunication program communicate
with a user through a terminal.
- ALT_PCBRecord
- PCB of pcbType=TP that lets a COBOL telecommunication program change the
destination for an outgoing message.
- DB_PCBRecord
- PCB of pcbType=DB that determines a COBOL program's access to a DL/I database.
- GSAM_PCBRecord
- PCB of pcbType=GSAM that determines a COBOL program's access to a simple
sequential data set such as a tape file or SYSIN.
For more about these record parts, including their definitions
and fields, see
Record types and properties.
All four record
parts share the following properties:
- @PCB
- This complex property defines basic characteristics of the runtime PCB.
The property is required for all four record parts, unless the record is a
redefinition of a previous PCB. Use a set-value block to specify any or all
of the following fields for the @PCB complex property:
- pcbType PCBKind
- This field tells EGL what kind of PCB the record defines. The pcbType should
be one of the following values of the PCBKind enumeration:
- DB
- A database PCB (DB_PCBRecord)
- GSAM
- A sequential file PCB (GSAM_PCBRecord)
- TP
- A telecommunication program PCB (IO_PCBRecord or ALT_PCBRecord)
The pcbType is required if you plan to use the PSB
in both the IMS™ and CICS® environments.
At run time in the CICS environment, EGL checks the value of pcbType and
ignores GSAM or TP PCBs.
- pcbName char(8)
- If you plan to use the AIBTDLI interface, you must tell EGL the names
of the PCBs in your DL/I PSB. You can do this in two ways:
- You can give your PCB records the same names that they have in the DL/I
PSB.
- You can use the pcbName field to associate the
DL/I PCB name with your EGL PCB name.
If you did not give your PCB record the same name as the runtime PCB
and you use the AIBTDLI interface, you can specify the name of the runtime
PCB here. The CBLTDLI interface does not use this name, so if you use CBLTDLI,
the name of your EGL PCB record must match the name of the runtime PCB.
- secondaryIndex char(8)
- If you use a secondary index to order database records, this is the name
of the index in the DL/I PCB. This name is used on the left side of a default
qualified SSA for a root segment instead of the key item specified for the
root segment record.
- secondaryIndexItem FieldReference
- If you use a secondary index, this is the name of the field in the associated
PCB record that holds the secondary index value. This is the host variable
value in the default qualified SSA of the root segment for the given PCB.
- hierarchy
- This field contains an array of @Relationship properties
that describe the relationships between the database segments. The structure
of those properties is as follows:
- @Relationship
- Each @Relationship property introduces a set-value
block with the following fields:
- segmentRecord STRING
- The name of a segment in the hierarchy
- parentRecord STRING
- The name of the parent record for the segmentRecord. If the segmentRecord
specifies the root segment, you can either set parentRecord to 0 or omit the
parentRecord field.
If your target environment is IMS using the CBLTDLI interface, you must
define the following PCBs, in order, by name. EGL uses these PCBs for internal
operations:
- iopcb
- A variable of type IO_PCBRecord, representing a PCB of PCBType TP.
- elaalt
- A variable of type ALT_PCBRecord, representing an Alternate Index PCB
of PCBType TP.
- elaexp
- A variable of type ALT_PCBRecord, representing an Alternate Express PCB
of PCBType TP.
If necessary, use the
pcbName field
above to associate these PCBs with their respective DL/I PCB names.
The
following example shows :
Record CustomerPSB type PSBRecord { defaultPSBName="STBICLG" }
// three PCBs required for CBLTDLI on IMS
iopcb IO_PCBRecord { @PCB { pcbType = TP } };
elaalt ALT_PCBRecord { @PCB { pcbType = TP } };
elaexp ALT_PCBRecord { @PCB { pcbType = TP } };
// database PCB defining three segment levels
customerPCB DB_PCBRecord { @PCB {
pcbType = DB,
pcbName = "STDCDBL",
hierarchy = [
@Relationship { segmentRecord = "myCustomerRecordPart" },
@Relationship {
segmentRecord = "myLocationRecordPart", parentRecord = "myCustomerRecordPart" },
@Relationship {
segmentRecord = "myOrderRecordPart", parentRecord = "myLocationRecordPart" },
@Relationship {
segmentRecord = "myItemRecordPart", parentRecord = "myOrderRecordPart" },
@Relationship {
segmentRecord = "myCreditRecordPart", parentRecord = "myCustomerRecordPart" },
@Relationship {
segmentRecord = "myHistoryRecordPart", parentRecord = "myCustomerRecordPart" }]}};