IDENTIFICATION DIVISION. PROGRAM-ID. TABEGIN. DATA DIVISION. WORKING-STORAGE SECTION. 01 CON-FLAG-ON PIC S9(04) COMP VALUE 1. 01 CON-NORMAL PIC S9(04) COMP VALUE 0. 01 CON-STATUS-OFF PIC S9(08) COMP VALUE 0. 01 CON-COMMIT-MAX PIC 9(04) COMP VALUE 5. 01 WRK-COMMIT-COUNT PIC 9(04) COMP. 01 WRK-TARIFF-COUNT PIC 9(02) COMP VALUE 5. 01 WRK-TARIFF-TABLE. 03 TP-ENTRY OCCURS 5 TIMES. 05 TP-CODE PIC X(03). 05 TP-NAME PIC X(08). 05 TP-BASE-FEE PIC 9(09) COMP. 05 TP-UNIT-PRICE PIC 9(04) COMP. 05 TP-FREE-SEC PIC 9(09) COMP. 05 TP-OVER-PRICE PIC 9(04) COMP. 05 TP-ROAM-PRICE PIC 9(04) COMP. 05 TP-SMS-PRICE PIC 9(04) COMP. 05 TP-DATA-PRICE PIC 9(04) COMP. 01 CDR-TEST-COUNT PIC 9(02) COMP VALUE 8. 01 CDR-TEST-DATA. 03 CDR-TEST-ENTRY OCCURS 8 TIMES. 05 TE-ID PIC X(10). 05 TE-CALLER PIC X(11). 05 TE-CALLEE PIC X(11). 05 TE-START PIC X(14). 05 TE-DURATION PIC 9(09) COMP. 05 TE-TYPE PIC X(02). 05 TE-ROAM PIC X(01). 01 WRK-IDX PIC 9(02) COMP. 01 WRK-JDX PIC 9(02) COMP. 01 COMMONMEMORY GLOBAL EXTERNAL. 03 CM-TARIFF-TABLE. 05 CM-TP-ENTRY OCCURS 5 TIMES. 10 CTP-CODE PIC X(03). 10 CTP-NAME PIC X(08). 10 CTP-BASE-FEE PIC 9(09) COMP. 10 CTP-UNIT-PRICE PIC 9(04) COMP. 10 CTP-FREE-SEC PIC 9(09) COMP. 10 CTP-OVER-PRICE PIC 9(04) COMP. 10 CTP-ROAM-PRICE PIC 9(04) COMP. 10 CTP-SMS-PRICE PIC 9(04) COMP. 10 CTP-DATA-PRICE PIC 9(04) COMP. 03 CM-TARIFF-COUNT PIC 9(02) COMP. 03 CM-TEST-COUNT PIC 9(02) COMP. 03 CM-TEST-DATA. 05 CMT-ENTRY OCCURS 8 TIMES. 10 CMT-ID PIC X(10). 10 CMT-CALLER PIC X(11). 10 CMT-CALLEE PIC X(11). 10 CMT-START PIC X(14). 10 CMT-DURATION PIC 9(09) COMP. 10 CMT-TYPE PIC X(02). 10 CMT-ROAM PIC X(01). 03 CM-COMMIT-COUNT PIC 9(04) COMP. 03 CM-PROC-COUNT PIC 9(08) COMP. LINKAGE SECTION. 01 LK-STATUS PIC S9(08) COMP. PROCEDURE DIVISION USING LK-STATUS. 0000-BEGIN SECTION. MOVE CON-STATUS-OFF TO LK-STATUS. MOVE 5 TO WRK-TARIFF-COUNT. MOVE "P01" TO TP-CODE(1) MOVE "BASIC" TO TP-NAME(1) MOVE 3000 TO TP-BASE-FEE(1) MOVE 20 TO TP-UNIT-PRICE(1) MOVE 6000 TO TP-FREE-SEC(1) MOVE 20 TO TP-OVER-PRICE(1) MOVE 50 TO TP-ROAM-PRICE(1) MOVE 10 TO TP-SMS-PRICE(1) MOVE 30 TO TP-DATA-PRICE(1) MOVE "P02" TO TP-CODE(2) MOVE "BUSINESS" TO TP-NAME(2) MOVE 8000 TO TP-BASE-FEE(2) MOVE 10 TO TP-UNIT-PRICE(2) MOVE 30000 TO TP-FREE-SEC(2) MOVE 15 TO TP-OVER-PRICE(2) MOVE 30 TO TP-ROAM-PRICE(2) MOVE 5 TO TP-SMS-PRICE(2) MOVE 20 TO TP-DATA-PRICE(2) MOVE "P03" TO TP-CODE(3) MOVE "UNLIMIT" TO TP-NAME(3) MOVE 20000 TO TP-BASE-FEE(3) MOVE 5 TO TP-UNIT-PRICE(3) MOVE 120000 TO TP-FREE-SEC(3) MOVE 5 TO TP-OVER-PRICE(3) MOVE 20 TO TP-ROAM-PRICE(3) MOVE 3 TO TP-SMS-PRICE(3) MOVE 10 TO TP-DATA-PRICE(3) MOVE "P04" TO TP-CODE(4) MOVE "DATA" TO TP-NAME(4) MOVE 5000 TO TP-BASE-FEE(4) MOVE 0 TO TP-UNIT-PRICE(4) MOVE 0 TO TP-FREE-SEC(4) MOVE 0 TO TP-OVER-PRICE(4) MOVE 0 TO TP-ROAM-PRICE(4) MOVE 0 TO TP-SMS-PRICE(4) MOVE 20 TO TP-DATA-PRICE(4) MOVE "P05" TO TP-CODE(5) MOVE "CHEAP" TO TP-NAME(5) MOVE 1000 TO TP-BASE-FEE(5) MOVE 30 TO TP-UNIT-PRICE(5) MOVE 1800 TO TP-FREE-SEC(5) MOVE 30 TO TP-OVER-PRICE(5) MOVE 150 TO TP-ROAM-PRICE(5) MOVE 100 TO TP-SMS-PRICE(5) MOVE 50 TO TP-DATA-PRICE(5) MOVE 5 TO CM-TARIFF-COUNT PERFORM VARYING WRK-JDX FROM 1 BY 1 UNTIL WRK-JDX > 5 MOVE TP-CODE(WRK-JDX) TO CTP-CODE(WRK-JDX) MOVE TP-NAME(WRK-JDX) TO CTP-NAME(WRK-JDX) MOVE TP-BASE-FEE(WRK-JDX) TO CTP-BASE-FEE(WRK-JDX) MOVE TP-UNIT-PRICE(WRK-JDX) TO CTP-UNIT-PRICE(WRK-JDX) MOVE TP-FREE-SEC(WRK-JDX) TO CTP-FREE-SEC(WRK-JDX) MOVE TP-OVER-PRICE(WRK-JDX) TO CTP-OVER-PRICE(WRK-JDX) MOVE TP-ROAM-PRICE(WRK-JDX) TO CTP-ROAM-PRICE(WRK-JDX) MOVE TP-SMS-PRICE(WRK-JDX) TO CTP-SMS-PRICE(WRK-JDX) MOVE TP-DATA-PRICE(WRK-JDX) TO CTP-DATA-PRICE(WRK-JDX) END-PERFORM. MOVE 8 TO CM-TEST-COUNT MOVE "CDR0000001" TO CMT-ID(1) MOVE "86138001380" TO CMT-CALLER(1) MOVE "86139009990" TO CMT-CALLEE(1) MOVE "20250601083000" TO CMT-START(1) MOVE 120 TO CMT-DURATION(1) MOVE "01" TO CMT-TYPE(1) MOVE "N" TO CMT-ROAM(1) MOVE "CDR0000002" TO CMT-ID(2) MOVE "86138001380" TO CMT-CALLER(2) MOVE "86137007770" TO CMT-CALLEE(2) MOVE "20250601084500" TO CMT-START(2) MOVE 45 TO CMT-DURATION(2) MOVE "01" TO CMT-TYPE(2) MOVE "N" TO CMT-ROAM(2) MOVE "CDR0000003" TO CMT-ID(3) MOVE "86138001380" TO CMT-CALLER(3) MOVE "86136006660" TO CMT-CALLEE(3) MOVE "20250601090000" TO CMT-START(3) MOVE 300 TO CMT-DURATION(3) MOVE "01" TO CMT-TYPE(3) MOVE "N" TO CMT-ROAM(3) MOVE "CDR0000004" TO CMT-ID(4) MOVE "86139002100" TO CMT-CALLER(4) MOVE "86138001380" TO CMT-CALLEE(4) MOVE "20250601100000" TO CMT-START(4) MOVE 600 TO CMT-DURATION(4) MOVE "01" TO CMT-TYPE(4) MOVE "N" TO CMT-ROAM(4) MOVE "CDR0000005" TO CMT-ID(5) MOVE "86139002100" TO CMT-CALLER(5) MOVE "86138001380" TO CMT-CALLEE(5) MOVE "20250601110000" TO CMT-START(5) MOVE 1 TO CMT-DURATION(5) MOVE "02" TO CMT-TYPE(5) MOVE "N" TO CMT-ROAM(5) MOVE "CDR0000006" TO CMT-ID(6) MOVE "86137005500" TO CMT-CALLER(6) MOVE "86139002100" TO CMT-CALLEE(6) MOVE "20250601120000" TO CMT-START(6) MOVE 1200 TO CMT-DURATION(6) MOVE "01" TO CMT-TYPE(6) MOVE "Y" TO CMT-ROAM(6) MOVE "CDR0000007" TO CMT-ID(7) MOVE "86138001380" TO CMT-CALLER(7) MOVE "86136006660" TO CMT-CALLEE(7) MOVE "20250601130000" TO CMT-START(7) MOVE 900 TO CMT-DURATION(7) MOVE "03" TO CMT-TYPE(7) MOVE "N" TO CMT-ROAM(7) MOVE "CDR0000008" TO CMT-ID(8) MOVE "86137005500" TO CMT-CALLER(8) MOVE "86135005550" TO CMT-CALLEE(8) MOVE "20250601140000" TO CMT-START(8) MOVE 1800 TO CMT-DURATION(8) MOVE "01" TO CMT-TYPE(8) MOVE "N" TO CMT-ROAM(8) MOVE CON-COMMIT-MAX TO CM-COMMIT-COUNT. MOVE ZERO TO CM-PROC-COUNT. DISPLAY "TABEGIN: tariff=" CM-TARIFF-COUNT " cdrs=" CM-TEST-COUNT " loaded" GOBACK. END PROGRAM TABEGIN.