PCB record part properties

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" }]}};

Related reference
Record types and properties

Feedback
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.