package customer; //definir registros que coincidan con segmentos en la bd DL/I Record CustomerRecordPart type DLISegment { segmentName="STSCCST", keyItem="customerNo" } 10 customerNo char(6) { dliFieldName = "STQCCNO" }; //campo de clave 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 LocationRecordPart type DLISegment { segmentName="STSCLOC", keyItem="locationNo" } 10 locationNo char(6) { dliFieldName = "STQCLNO" }; //campo de clave 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 OrderRecordPart type DLISegment { segmentName="STPCORD", keyItem="orderDateNo" } 10 orderDateNo char(12) { dliFieldName = "STQCODN" }; //campo de clave 10 orderReference char(25) { dliFieldName = "STFCORF" }; 10 orderItemCount num(6) { dliFieldName = "STFCOIC" }; 10 orderAmount decimal(12,2) { dliFieldName = "STFCOAM" }; end Record ItemRecordPart type DLISegment { segmentName="STLCITM", keyItem="itemKey" } 10 itemKey char(8); //campo de clave 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 CreditRecordPart type DLISegment { segmentName="STSCSTA" } 10 creditLimit char(12) { dliFieldName = "STFCSCL" }; 10 creditBalance char(12) { dliFieldName = "STFCSBL" }; end Record HistoryRecordPart 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 //declarar diseño global de bd en el PSB Record CustomerPSBRecordPart type PSBRecord { defaultPSBName="STBICLG" } // tres PCB necesarios para CBLTDLI en IMS iopcb IO_PCBRecord { @PCB { pcbType = TP } }; elaalt ALT_PCBRecord { @PCB { pcbType = TP } }; elaexp ALT_PCBRecord { @PCB { pcbType = TP } }; // PCB de base de datos customerPCB DB_PCBRecord { @PCB { pcbType = DB, pcbName = "STDCDBL", hierarchy = [ @Relationship { segmentRecord = "CustomerRecordPart" }, @Relationship { segmentRecord = "LocationRecordPart", parentRecord = "CustomerRecordPart" }, @Relationship { segmentRecord = "OrderRecordPart", parentRecord = "LocationRecordPart" }, @Relationship { segmentRecord = "ItemRecordPart", parentRecord = "OrderRecordPart" }, @Relationship { segmentRecord = "CreditRecordPart", parentRecord = "CustomerRecordPart" }, @Relationship { segmentRecord = "HistoryRecordPart", parentRecord = "CustomerRecordPart" }]}}; end program PrintCatalog type basicProgram { @DLI{ psb = "myPSB", callInterface = CBLTDLI, // dejar espacio para los PCB de E/S y ALT pcbParms = ["", "", "", "customerPCB"] } } //crear instancias de los registros myCustomer CustomerRecordPart; myLocation LocationRecordPart; myOrder OrderRecordPart; myItem ItemRecordPart; myCrStatus CreditRecordPart myHistory HistoryRecordPart myPSB CustomerPSBRecordPart; function main() ... end end
Conceptos relacionados:
Conceptos básicos de base de datos DL/I
Soporte de bases de datos DL/I
Tipos de registros y propiedades
Consulta relacionada:
@DLI