package customer; //define records to match segments in DL/I db Record myCustomerRecordPart type DLISegment { segmentName="STSCCST", keyItem="customerNo" } 10 customerNo char(6) { dliFieldName = "STQCCNO" }; //key field 10 customerName char(25) { dliFieldName = "STUCCNM" }; 10 customerAddr1 char(25) { dliFieldName = "STQCCA1" }; 10 customerAddr2 char(25) { dliFieldName = "STQCCA2" }; 10 customerAddr3 char(25) { dliFieldName = "STQCCA3" }; end Record myLocationRecordPart type DLISegment { segmentName="STSCLOC", keyItem="locationNo" } 10 locationNo char(6) { dliFieldName = "STQCLNO" }; //key field 10 locationName char(25) { dliFieldName = "STFCLNM" }; 10 locationAddr1 char(25) { dliFieldName = "STFCLA1" }; 10 locationAddr2 char(25) { dliFieldName = "STFCLA2" }; 10 locationAddr3 char(25) { dliFieldName = "STFCLA3" }; end Record myOrderRecordPart type DLISegment { segmentName="STPCORD", keyItem="orderDateNo" } 10 orderDateNo char(12) { dliFieldName = "STQCODN" }; //key field 10 orderReference char(25) { dliFieldName = "STFCORF" }; 10 orderItemCount num(6) { dliFieldName = "STFCOIC" }; 10 orderAmount decimal(12,2) { dliFieldName = "STFCOAM" }; end Record myItemRecordPart type DLISegment { segmentName="STLCITM", keyItem="itemKey" } 10 itemKey char(8); //key field 15 itemInventoryNo char(6) { dliFieldName = "STKCIIN" }; 15 itemLineNo smallint { dliFieldName = "STQCILI" }; 10 itemQtyOrdered num(6) { dliFieldName = "STFCIQO" }; 10 itemQtyShipped num(6) { dliFieldName = "STFCIQS" }; 10 itemQtyBackOrdered num(6) { dliFieldName = "STFCIQB" }; 10 itemAmount decimal(12,2) { dliFieldName = "STFCIAM" }; 10 itemNumber char(6) { dliFieldName = "STQIINO" }; 10 itemDescription char(25) { dliFieldName = "STFIIDS" }; 10 itemQtyOnHand num(6) { dliFieldName = "STFIIQH" }; 10 itemQtyOnOrder num(6) { dliFieldName = "STFIIQH" }; 10 itemQtyReserved num(6) { dliFieldName = "STFIIQR" }; 10 itemUnitPrice char(6) { dliFieldName = "STFIIPR" }; 10 itemUnitOfIssue char(1) { dliFieldName = "STFIIUN" }; end Record myCreditRecordPart type DLISegment { segmentName="STSCSTA" } 10 creditLimit char(12) { dliFieldName = "STFCSCL" }; 10 creditBalance char(12) { dliFieldName = "STFCSBL" }; end Record myHistoryRecordPart type DLISegment { segmentName="STSCHIS", lengthItem="historySegmentLength", keyItem="historyDateNo" } 10 historySegmentLength smallint { dliFieldName = "STGCSL" }; 10 historyDateNo char(12) { dliFieldName = "STQCHDN" }; 10 historyReference char(25) { dliFieldName = "STFCHRF" }; 10 historyItemCount smallint { dliFieldName = "STFCHIC" }; 10 historyAmount decimal(12,2) { dliFieldName = "STQCHAM" }; 10 historyStatus char(77) { dliFieldName = "STQCLOS" }; end //declare overall db layout in PSB Record myCustomerPSBRecordPart 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 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" }]}}; end program PrintCatalog type basicProgram { @DLI{ psb = "myPSB", callInterface = CBLTDLI, // leave space for IO and ALT PCBs pcbParms = ["", "", "", "customerPCB"] } } //create instances of the records myCustomer myCustomerRecordPart; myLocation myLocationRecordPart; myOrder myOrderRecordPart; myItem myItemRecordPart; myCrStatus myCreditRecordPart myHistory myHistoryRecordPart myPSB CustomerPSB; function main() ... end end
Related concepts:
Basic DL/I database concepts
DL/I database support
Record types and properties
Related reference:
@DLI