
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