SlideShare a Scribd company logo
1 of 12
COBOL Program RPR6621F
Project: RSSP Franchise Service Plan Automation
DEVELOPED BY APPROVED BY
NAME Jon Fortman Tim Reagan
ROLE SME/Developer Asst. Dir.
******************************************************************
IDENTIFICATION DIVISION.
******************************************************************
PROGRAM-ID. RPR6621F.
AUTHOR. JON FORTMAN.
DATE-WRITTEN. MAR 2015.
DATE-COMPILED.
*INSTALLATION. RADIOSHACK TECHNOLOGY SERVICES.
*COPYRIGHT (C) 2015,RADIOSHACK TECHNOLOGY SERVICES
*SECURITY. RACF.
*REMARKS.
******************************************************************
* C O N T R A C T S E R V I C E S
******************************************************************
*
* RADIO SHACK FRANCHISE SERVICE PLAN SALES/REFUNDS
*
******************************************************************
* MODULE RESPONSIBLE FOR FORMATTING THE FILE FROM RPR6620F INTO
* SCSALE COPYBOOK FORMAT [UNIT 010118 DR FORMAT].
*
* UNIT: 0 1 0 1 1 8 ONLY
******************************************************************
ENVIRONMENT DIVISION.
******************************************************************
CONFIGURATION SECTION.
*SOURCE-COMPUTER. IBM-ZOS WITH DEBUGGING MODE.
SOURCE-COMPUTER. IBM-ZOS.
OBJECT-COMPUTER. IBM-ZOS.
******************************************************************
INPUT-OUTPUT SECTION.
******************************************************************
FILE-CONTROL.
SELECT SCFRNSR2-IN ASSIGN TO SCFRNS2I.
SELECT SCSALE-OUT ASSIGN TO SCSALEO.
SELECT CONTROL-FILE ASSIGN TO CTRLVSM
FILE STATUS WS-CTRL-STATUS
RECORD KEY CTRL-FILE-KEYS
ORGANIZATION INDEXED
ACCESS RANDOM.
******************************************************************
DATA DIVISION.
******************************************************************
FILE SECTION.
*--------------------------------------------------------------
* INPUT FILE OF FRANCHISE SERVICE PLAN SALES/REFUNDS
*--------------------------------------------------------------
FD SCFRNSR2-IN
RECORDING MODE F
BLOCK CONTAINS 0 RECORDS
DATA RECORD IS SCFRNSR2-IN-REC.
01 SCFRNSR2-IN-REC.
COPY SCFRNSR2 REPLACING ==:F:== BY ==FI==.
FD SCSALE-OUT
RECORDING MODE IS F
BLOCK CONTAINS 0 RECORDS
DATA RECORD IS SCSALE-OUT-RECORD.
01 SCSALE-OUT-RECORD PIC X(500).
FD CONTROL-FILE
RECORD CONTAINS 250 CHARACTERS.
01 SCCTRL-CONTROL-RECORD.
COPY SCCTRL REPLACING ==:CTRL:== BY ==CTRL==.
****************************************************************
WORKING-STORAGE SECTION.
****************************************************************
01 SCSALE-OUT-REC.
COPY SCSALE REPLACING ==:SALE:== BY ==SALE==.
01 SCFRNSR2-PREV-REC.
COPY SCFRNSR2 REPLACING ==:F:== BY ==FP==.
01 MODULE-LIT-NAME-AUD PIC X(50)
VALUE ' COBOL PROGRAM RPR6621F'.
01 WS-ERR-MSG1 PIC X(85) VALUE SPACES.
01 WS-ERR-MSG2 PIC X(85) VALUE SPACES.
01 WS-ERR-MSG3 PIC X(85) VALUE SPACES.
01 WS-ERR-MSG4 PIC X(85) VALUE SPACES.
01 SYSOUT-TOTAL-LINE.
05 SYSOUT-NBR PIC ZZZ,ZZZ,ZZ9-.
05 F PIC X(1) VALUE SPACES.
05 SYSOUT-MSG PIC X(80) VALUE SPACES.
01 WS-COUNTERS.
05 WS-SCFRNSR2-IN-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-SCSALE-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-B-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-BB-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-BD-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-BE-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-BF-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
05 WS-BFA-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO.
01 WS-MISC-FIELDS.
05 WS-ABEND-CD PIC S9(9) BINARY.
05 WS-TIMING PIC S9(9) BINARY.
05 WS-CTRL-STATUS PIC 9(2).
05 WS-VARIANCE PIC S9(4) COMP.
05 WS-ADMIN-STR PIC X(6) VALUE '010118'.
05 WS-DISPLAY-S9999999 PIC ------9.
05 WS-TKT-NBR PIC S9(7) COMP-3 VALUE ZERO.
05 WS-START-TKT-NBR PIC S9(7) COMP-3 VALUE ZERO.
05 WS-END-TKT-NBR PIC S9(7) COMP-3 VALUE ZERO.
05 WS-SLTKT-NBR-LINES PIC S9(3) COMP-3 VALUE ZERO.
05 WS-SLTKT-NBR-DSCNT PIC S9(3) COMP-3 VALUE ZERO.
05 WS-SVP-RTL-QTY PIC S9(5) COMP-3 VALUE ZERO.
01 WS-INDICATORS.
05 WS-EOF-SCFRNSR2-IN-IND PIC X.
88 EOF-SCFRNSR2-IN VALUE 'Y'.
05 WS-SLTKT-COMPLETE-IND PIC X.
88 WS-TICKET-COMPLETED VALUE 'Y'.
88 WS-TICKET-NOT-COMPLETED VALUE 'N'.
******************************************************************
PROCEDURE DIVISION.
******************************************************************
000-MAIN SECTION.
PERFORM 100-INITIALIZE
IF NOT EOF-SCFRNSR2-IN
PERFORM 200-PROCESS-SCFRNSR2 UNTIL EOF-SCFRNSR2-IN
ELSE
PERFORM 911-EMPTY-FILE-MESSAGE
END-IF
PERFORM 9000-TERMINATE
STOP RUN
.
******************************************************************
100-INITIALIZE.
******************************************************************
DISPLAY '***************************************'
UPON CONSOLE
DISPLAY '* R P R 6 6 2 1 F *'
UPON CONSOLE
DISPLAY '***************************************'
UPON CONSOLE
INITIALIZE SALE-REC-KEY-INIT
OPEN INPUT SCFRNSR2-IN
OUTPUT SCSALE-OUT
OPEN I-O CONTROL-FILE
IF WS-CTRL-STATUS NOT = ZERO AND
WS-CTRL-STATUS NOT = 97
MOVE 'RPR6621F HAD A PROBLEM OPENING THE VSAM '
TO WS-ERR-MSG1
STRING 'CONTROL FILE, THE STATUS WAS ' WS-CTRL-STATUS
DELIMITED BY SIZE INTO WS-ERR-MSG2
MOVE 16 TO WS-ABEND-CD
PERFORM 9999-ABEND
END-IF
PERFORM 800-READ-SCFRNSR2
IF NOT EOF-SCFRNSR2-IN
* the daily rpt dt is figured in rpr6622f
MOVE ZERO TO SALE-DAILY-RPT-DT
* these pieces of the scsale rec key are constant
MOVE WS-ADMIN-STR TO SALE-STORE-NBR
MOVE 'B ' TO SALE-REC-TYPE1
PERFORM 810-READ-CONTROL-FILE
PERFORM 300-SETUP-REC-KEY
MOVE SCFRNSR2-IN-REC TO SCFRNSR2-PREV-REC
* we assume the tkt is complete until we encounter any error
SET WS-TICKET-COMPLETED TO TRUE
END-IF
.
******************************************************************
200-PROCESS-SCFRNSR2.
******************************************************************
* this is the tkt-level break block. we process the b rec using
* the prev input rec. the b rec gets output out of order but
* we'll correct that with syncsort in a subsequent jcl step
* p r e v i o u s t k t
IF NOT
(FI-POS-USERID = FP-POS-USERID AND
FI-POS-STOREID = FP-POS-STOREID AND
FI-POS-TICKET-NUMBER = FP-POS-TICKET-NUMBER AND
FI-POS-TRANS-DATE-TIME = FP-POS-TRANS-DATE-TIME)
PERFORM 310-B-REC-TKT
PERFORM 320-BB-REC-CUST
PERFORM 330-BD-REC-PAYMENT
IF WS-SLTKT-NBR-DSCNT > ZERO
PERFORM 340-BE-REC-DISCOUNT
END-IF
* c u r r e n t t k t r e a d i n - s e t u p
PERFORM 300-SETUP-REC-KEY
* reset tkt level accummulators
MOVE ZERO TO WS-SLTKT-NBR-LINES
WS-SLTKT-NBR-DSCNT
* we assume the tkt is complete until we encounter any error
SET WS-TICKET-COMPLETED TO TRUE
MOVE SCFRNSR2-IN-REC TO SCFRNSR2-PREV-REC
END-IF
*------------------------------------------------------------
* any error present means the tkt is not complete
IF FI-SVP-CMNT-LN1-DESC NOT = SPACES
SET WS-TICKET-NOT-COMPLETED TO TRUE
END-IF
ADD FI-SVP-RTL-QTY TO WS-SLTKT-NBR-LINES
IF FI-DISCOUNT-AMT > ZERO
ADD 1 TO WS-SLTKT-NBR-DSCNT
END-IF
EVALUATE TRUE
WHEN FI-SVP-RTL-QTY IS POSITIVE
MOVE -1 TO WS-VARIANCE
WHEN FI-SVP-RTL-QTY IS NEGATIVE
MOVE +1 TO WS-VARIANCE
WHEN FI-SVP-RTL-QTY IS ZERO
PERFORM 911-QTY-ZERO-MSG
END-EVALUATE
PERFORM VARYING WS-SVP-RTL-QTY
FROM FI-SVP-RTL-QTY
BY WS-VARIANCE
UNTIL WS-SVP-RTL-QTY = ZERO
PERFORM 350-BF-REC-SKU-LINE
PERFORM 360-BFA-REC-SER-NBR
END-PERFORM
PERFORM 800-READ-SCFRNSR2
.
******************************************************************
300-SETUP-REC-KEY.
******************************************************************
* put the next avail tkt nbr from the scctrl read into our first
* tkt
MOVE WS-TKT-NBR TO SALE-TICKET-NBR
* now stage next avail tkt nbr+1 for the tkt after the one
* we're processing now
IF WS-TKT-NBR = 999999
MOVE 0 TO WS-TKT-NBR
ELSE
ADD 1 TO WS-TKT-NBR
END-IF
.
******************************************************************
310-B-REC-TKT.
******************************************************************
* although this is the first rec type at the tkt level, we
* have to output it last because we need to do tkt-level
* totaling and assessments that have to be recorded on this rec.
INITIALIZE SALE-RECORD-B
MOVE WS-SLTKT-COMPLETE-IND TO SALE-SLTKT-COMPLETE-IND
MOVE FP-POS-TRANS-MM TO SALE-SLTKT-MM
MOVE FP-POS-TRANS-DD TO SALE-SLTKT-DD
MOVE FP-POS-TRANS-YYYY(1:2) TO SALE-SLTKT-CC
MOVE FP-POS-TRANS-YYYY(3:2) TO SALE-SLTKT-YY
MOVE FP-POS-TRANS-HH TO SALE-SLTKT-HH
MOVE FP-POS-TRANS-MN TO SALE-SLTKT-MN
MOVE FP-POS-TRANS-SS TO SALE-SLTKT-SS
EVALUATE TRUE
WHEN FP-SALE
MOVE 'FRS' TO SALE-SLMKR-SALES-ID
MOVE SPACE TO SALE-FRAN-ISCT-IND
SALE-FRAN-ISCT-TYPE
WHEN FP-REFUND
MOVE 'FRR' TO SALE-SLMKR-SALES-ID
MOVE 'Y' TO SALE-FRAN-ISCT-IND
MOVE 'N' TO SALE-FRAN-ISCT-TYPE
MOVE 'RETURNED' TO SALE-REASON-FOR-REFUND
WHEN OTHER
PERFORM 911-INVALID-TRANS-TYPE-MSG
END-EVALUATE
MOVE ZERO TO SALE-SLMKR-ID
MOVE '21F' TO SALE-OPER-ID
MOVE 'F' TO SALE-SLTKT-TRAN-TYP-CD
MOVE FP-POS-STORE-NBR TO SALE-FRNCHS-STR-NBR
MOVE ZERO TO SALE-SLTKT-OSSRVC-SUBTOT-AMT
SALE-ZONE-NBR
SALE-ZONE-PCT
SALE-SVP-TOTL-ZNE-SRCHRG-AMT
MOVE FP-UNIT-SELL-PRICE TO SALE-SLTKT-SUBTOT-AMT
MOVE ZERO TO SALE-SLTKT-TAX-AMT
MOVE FP-UNIT-SELL-PRICE TO SALE-SLTKT-TOTL-AMT
MOVE FP-EXTENDED-PRICE TO SALE-SLTKT-TNDR-AMT
MOVE FP-STATE TO SALE-SLTKT-TAX-STATE-ID
MOVE SPACES TO SALE-CUST-TAX-XMP-ID
SALE-LAB-TYP-CD
MOVE WS-SLTKT-NBR-LINES TO SALE-SLTKT-NBR-LINES
MOVE 1 TO SALE-SLTKT-NBR-PYMT
SALE-SLTKT-NBR-GOOD-PYMT
MOVE ZERO TO SALE-SLTKT-NBR-OSSRVC
MOVE WS-SLTKT-NBR-DSCNT TO SALE-SLTKT-NBR-DSCNT
MOVE ZERO TO SALE-SLTKT-DSCNT-PCT
SALE-SLTKT-NBR-RFNDS
SET SALE-NO-TAX-EXEMPT-FORM TO TRUE
MOVE SPACES TO SALE-ALT-STR-NBR
SET SALE-NO-COMMERCIAL-CHG TO TRUE
SET SALE-NO-BAD-DEBT TO TRUE
SET SALE-NO-ISCT TO TRUE
MOVE ZERO TO SALE-SLTKT-NBR-SALES
MOVE SPACES TO SALE-SHOP-NBR
SALE-SHOP-PHONE-NBR
SET SALE-NO-SANWA TO TRUE
MOVE FP-POS-TICKET-NUMBER TO SALE-ORG-FRAN-SLTKT-NBR
MOVE FP-POS-TRANS-MM TO SALE-ORG-FRAN-SLTKT-DT(1:2)
MOVE FP-POS-TRANS-DD TO SALE-ORG-FRAN-SLTKT-DT(3:2)
MOVE FP-POS-TRANS-YYYY TO SALE-ORG-FRAN-SLTKT-DT(5:4)
MOVE SPACES TO SALE-CUST-TYP-CD
ADD 1 TO WS-B-REC-OUT-CNT
PERFORM 820-WRITE-SCSALE-FILE
.
******************************************************************
320-BB-REC-CUST.
******************************************************************
INITIALIZE SALE-RECORD-BB
MOVE 'B ' TO SALE-REC-TYPE2
MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR
MOVE FI-CUST-NM TO SALE-CUST-NM
MOVE FI-ADDRESS-1 TO SALE-CUST-LINE1-ADDR
MOVE FI-ADDRESS-2 TO SALE-CUST-LINE2-ADDR
MOVE FI-CITY TO SALE-CUST-CITY-NM
MOVE FI-STATE TO SALE-CUST-STATE-ID
MOVE FI-CUST-CNTRY-ISO-CD TO SALE-CUST-CNTRY-CD
MOVE FI-ZIP TO SALE-CUST-POSTL-CD
MOVE FI-TELEPHONE TO SALE-CUST-PHONE-NBR
MOVE SPACES TO SALE-SVP-CNTCT-NM
SALE-BB-SCPHONE-KEY
ADD 1 TO WS-BB-REC-OUT-CNT
PERFORM 820-WRITE-SCSALE-FILE
.
******************************************************************
330-BD-REC-PAYMENT.
******************************************************************
* current business rule only allows one payment rec per tkt
* on franchise tkts. that is why there is only one call to
* this routine at the tkt level break.
*-----------------------------------------------------------------
INITIALIZE SALE-RECORD-BD
MOVE 'D ' TO SALE-REC-TYPE2
MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR
SET SALE-PAYMENT-NOT-DELETED TO TRUE
MOVE 'C' TO SALE-SLTKT-PYMT-CD
MOVE FI-EXTENDED-PRICE TO SALE-SLTKT-PYMT-AMT
MOVE SPACES TO SALE-CHK-ID
SALE-TRVLR-CHK-ID
SALE-COMCHG-CMPNY-ID
SALE-COMCHG-ACCT-ID
SALE-COMCHG-AUTH-ID
SALE-PO-ID
SALE-COMCHG-RCV-NM
SALE-LEASE-ID
SALE-LEASE-CUST-NM
SALE-CRCRD-ACCT-ID
SALE-CRCRD-TYP-CD
SALE-CRCRD-AUTH-ID
SALE-BAD-DEBT-TYP
SALE-BAD-DEBT-CD
SALE-REASON-FOR-ISCT
SALE-MISCTRAN-TYP-CD
SALE-MISCTRAN-TYP
SALE-MISCTRAN-OTH-DESC
SALE-ACCT-SCRTY-ID
MOVE ZERO TO SALE-COMCHG-NBR-INVOICES
SALE-LEASE-APRVL-NBR
SALE-LEASE-CUST-NBR
SALE-CRCRD-EXP-DT
SALE-CRCRD-TRNS-ID
SALE-NBR-INVC-COPIES
SALE-ORG-INVC-NBR
SALE-FRAN-SVP-PCT
SALE-FRAN-SVP-AMT
MOVE FI-POS-STORE-NBR TO SALE-ISCT-STR-NBR
MOVE SALE-TICKET-NBR TO SALE-PYMT-ISCT-NBR
MOVE 'NEW' TO SALE-ISCT-ACCT-TYP
MOVE '8' TO SALE-ISCT-ACCT-CD
MOVE 1 TO SALE-SLTKT-PMTSEQ-NBR
ADD 1 TO WS-BD-REC-OUT-CNT
PERFORM 820-WRITE-SCSALE-FILE
.
******************************************************************
340-BE-REC-DISCOUNT.
******************************************************************
INITIALIZE SALE-RECORD-BE
MOVE 'E ' TO SALE-REC-TYPE2
MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR
MOVE 'OTH' TO SALE-SLTKT-DSCNT-TYP-CD
* in the 010118 cics program, sc53p53, there is an algorithm
* that parses through all lines entered on the tkt to make sure
* all lines have the same discount%. that is not being carried
* into this automated version. this tkt-level rec will carry
* whatever discount% is present on the last scfrnsr2 input line
* for a given tkt
MOVE FP-SVP-DSCNT-PCT TO SALE-DSCNT-PCT
MOVE SPACES TO SALE-DSCNT-CNTL-ID
MOVE 'ADJUSTMENT' TO SALE-SLTKT-OTHDSC-DESC
ADD 1 TO WS-BE-REC-OUT-CNT
PERFORM 820-WRITE-SCSALE-FILE
.
******************************************************************
350-BF-REC-SKU-LINE.
******************************************************************
INITIALIZE SALE-RECORD-BF
MOVE 'F ' TO SALE-REC-TYPE2
MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR
SET SALE-SKU-LINE-NOT-DELETED TO TRUE
MOVE 1 TO SALE-SVP-RTL-QTY
MOVE FI-PARENTSKU TO SALE-SKU-ID
MOVE SPACES TO SALE-SVP-EQUIP-MODFY-CD
MOVE 'S' TO SALE-SVP-TYP-CD
MOVE FI-SVP-COVER-MTH-QTY TO SALE-SVP-COVER-MTH-QTY
SALE-SVP-ACTUAL-NBR-MTHS
MOVE FI-SVP-LOC-WRNTY-COND-CD TO SALE-SVP-LOC-WRNTY-COND-CD
MOVE FI-SKU-SLMKR-DESC TO SALE-SKU-SLMKR-DESC
MOVE FI-UNIT-SELL-PRICE TO SALE-SVP-REGL-PRICE-AMT
MOVE FI-POS-TRANS-MM TO SALE-SVP-CALC-MM
MOVE FI-POS-TRANS-DD TO SALE-SVP-CALC-DD
MOVE FI-POS-TRANS-YYYY(1:2) TO SALE-SVP-CALC-CC
MOVE FI-POS-TRANS-YYYY(3:2) TO SALE-SVP-CALC-YY
MOVE FI-SVP-BEG-DT TO SALE-SVP-BEG-DT
MOVE FI-SVP-END-DT TO SALE-SVP-END-DT
MOVE FI-SVP-DSCNT-PCT TO SALE-SVP-DSCNT-PCT
COMPUTE SALE-SVP-DSCNT-AMT = FI-DISCOUNT-AMT /
FI-SVP-RTL-QTY
MOVE FI-SVP-RTL-AMT TO SALE-SVP-RTL-AMT
MOVE FI-ORG-POS-TICKET-NUMBER TO SALE-SLTKT-PUR-NBR
MOVE FI-ORG-POS-TRANS-MM TO SALE-SLTKT-PUR-MM
MOVE FI-ORG-POS-TRANS-DD TO SALE-SLTKT-PUR-DD
MOVE FI-ORG-POS-TRANS-YYYY(1:2) TO SALE-SLTKT-PUR-CC
MOVE FI-ORG-POS-TRANS-YYYY(3:2) TO SALE-SLTKT-PUR-YY
MOVE FI-ORG-POS-STORE-NBR TO SALE-SLTKT-PUR-STR
MOVE SPACES TO SALE-REF-CNTL-ID
SALE-REF-DROP-ID
MOVE 1 TO SALE-NBR-SER-IDS
MOVE ZEROS TO SALE-NBR-EQIP-CDS
SALE-SVP-ZNE-SRCHRG-AMT
SALE-FRAN-PCT
MOVE FI-UNIT-SELL-PRICE TO SALE-SVP-BEG-PRICE-AMT
* these two fields are auto-generated during nightly processing
* by rpr6602
MOVE SPACES TO SALE-SVP-CNTL-ID
SALE-SVP-DROP-ID
* this field is obsolete. it once indicated what type of
* direct mail solicitation would be performed
SALE-SVP-SOLIC-TYP
MOVE FI-SKU-ID TO SALE-SVP-SKU-ID
MOVE FI-SVP-COST-AMT TO SALE-SVP-COST-AMT
MOVE FI-UNIT-SELL-PRICE TO SALE-ORG-SVP-RTL-AMT
MOVE FI-SVP-CATG-ID TO SALE-SVP-CATG-ID
MOVE FI-FRAN-PRECISION-PCT TO SALE-FRAN-PRECISION-PCT
MOVE FI-CORP-PROFIT-PCT TO SALE-CORP-PROFIT-PCT
ADD 1 TO WS-BF-REC-OUT-CNT
PERFORM 820-WRITE-SCSALE-FILE
.
******************************************************************
360-BFA-REC-SER-NBR.
******************************************************************
INITIALIZE SALE-RECORD-BFA
MOVE 'F ' TO SALE-REC-TYPE2
MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR
MOVE 'A ' TO SALE-REC-TYPE3
MOVE 1 TO SALE-REC-TYPE3-SEQ-NBR
MOVE '01NOSN' TO SALE-SKU-SER-ID
MOVE SPACES TO SALE-EQUIP-TYP-CD
ADD 1 TO WS-BFA-REC-OUT-CNT
PERFORM 820-WRITE-SCSALE-FILE
.
******************************************************************
800-READ-SCFRNSR2.
******************************************************************
READ SCFRNSR2-IN
AT END
SET EOF-SCFRNSR2-IN TO TRUE
NOT AT END
ADD 1 TO WS-SCFRNSR2-IN-CNT
END-READ
.
******************************************************************
810-READ-CONTROL-FILE.
******************************************************************
MOVE SPACES TO CTRL-FILE-KEYS
MOVE 'VALIDSTORE' TO CTRL-KEY1-REC-TYPE
MOVE WS-ADMIN-STR TO CTRL-KEY2
READ CONTROL-FILE
INVALID KEY
MOVE 'CONTROL-FILE IS MISSING VALIDSTORE RECORD FOR:'
TO WS-ERR-MSG1
MOVE WS-ADMIN-STR TO WS-ERR-MSG2
MOVE 16 TO WS-ABEND-CD
PERFORM 9999-ABEND
END-READ
IF WS-CTRL-STATUS = ZERO OR 97
MOVE CTRL-NEXT-AVL-TICK-NBR TO WS-START-TKT-NBR,
WS-TKT-NBR
ELSE
MOVE 'RPR6621F HAD A PROBLEM READING FROM THE VSAM '
TO WS-ERR-MSG1
STRING 'CONTROL FILE, THE STATUS WAS ' WS-CTRL-STATUS
DELIMITED BY SIZE INTO WS-ERR-MSG2
MOVE 16 TO WS-ABEND-CD
PERFORM 9999-ABEND
END-IF
.
******************************************************************
820-WRITE-SCSALE-FILE.
******************************************************************
WRITE SCSALE-OUT-RECORD FROM SCSALE-OUT-REC
ADD 1 TO WS-SCSALE-OUT-CNT
MOVE SPACES TO SALE-REC-TYPE2
SALE-REC-TYPE3
SALE-REC-TYPE4
MOVE ZERO TO SALE-REC-TYPE2-SEQ-NBR
SALE-REC-TYPE3-SEQ-NBR
SALE-REC-TYPE4-SEQ-NBR
.
******************************************************************
830-WRITE-CONTROL-FILE.
******************************************************************
MOVE WS-TKT-NBR TO CTRL-NEXT-AVL-TICK-NBR
REWRITE SCCTRL-CONTROL-RECORD
IF WS-CTRL-STATUS NOT = 0
MOVE 'RPR6621F HAD A PROBLEM REWRITING TO THE VSAM '
TO WS-ERR-MSG1
STRING 'CONTROL FILE, THE STATUS WAS ' WS-CTRL-STATUS
DELIMITED BY SIZE INTO WS-ERR-MSG2
MOVE WS-TKT-NBR TO WS-DISPLAY-S9999999
STRING 'NEXT AVL TKT NBR IS: ' WS-DISPLAY-S9999999
DELIMITED BY SIZE INTO WS-ERR-MSG3
MOVE 16 TO WS-ABEND-CD
PERFORM 9999-ABEND
END-IF
.
******************************************************************
911-EMPTY-FILE-MESSAGE.
******************************************************************
DISPLAY SPACE
DISPLAY '>>>>>>>>>>>>>>>> IMPORTANT <<<<<<<<<<<<<<<<<<<'
UPON CONSOLE
DISPLAY '***************************************************'
UPON CONSOLE
DISPLAY '* SCFRNS2I INPUT FILE CONTAINED NO DATA. THIS IS *'
UPON CONSOLE
DISPLAY '* EXTREMELY UNLIKELY TO HAPPEN ON NORMAL BUSINESS *'
UPON CONSOLE
DISPLAY '* DAYS BUT MAY BE TRUE ON HOLIDAYS SUCH AS *'
UPON CONSOLE
DISPLAY '* THANKSGIVING AND CHRISTMAS. *'
UPON CONSOLE
DISPLAY '* THIS SITUATION SHOULD BE VETTED WITH CLOSE *'
UPON CONSOLE
DISPLAY '* SCRUTINY SINCE FRANCHISE STORES SELL SERVICE *'
UPON CONSOLE
DISPLAY '* PLANS ON MOST EVERY DAY, HOLIDAYS *'
UPON CONSOLE
DISPLAY '* NOTWITHSTANDING. *'
UPON CONSOLE
DISPLAY '***************************************************'
UPON CONSOLE
.
******************************************************************
911-QTY-ZERO-MSG.
******************************************************************
DISPLAY '**************************************' UPON CONSOLE
DISPLAY '* FI-SVP-RTL-QTY FOUND EQUAL TO ZERO ' UPON CONSOLE
DISPLAY '* ON SCFRNS2I INPUT. VALUE DETECTED ' UPON CONSOLE
DISPLAY '* WAS: ' FI-SVP-RTL-QTY UPON CONSOLE
DISPLAY '* FATAL ERROR. PROCESSING CANNOT ' UPON CONSOLE
DISPLAY '* CONTINUE. PROGRAMMER INVESTIGATION ' UPON CONSOLE
DISPLAY '* NECESSARY. ' UPON CONSOLE
DISPLAY '**************************************' UPON CONSOLE
MOVE 'INVALID FI-SVP-RTL-QTY DETECTED. SEE MESSAGE ABOVE'
TO WS-ERR-MSG1
MOVE 16 TO WS-ABEND-CD
PERFORM 9999-ABEND
.
******************************************************************
911-INVALID-TRANS-TYPE-MSG.
******************************************************************
DISPLAY '**************************************' UPON CONSOLE
DISPLAY '* INVALID POS TRANS TYPE DETECTED ON ' UPON CONSOLE
DISPLAY '* SCFRNS2I INPUT. VALUE DETECTED ' UPON CONSOLE
DISPLAY '* WAS: ' FP-POS-TRANS-TYPE UPON CONSOLE
DISPLAY '* FATAL ERROR. PROCESSING CANNOT ' UPON CONSOLE
DISPLAY '* CONTINUE. PROGRAMMER INVESTIGATION ' UPON CONSOLE
DISPLAY '* NECESSARY. ' UPON CONSOLE
DISPLAY '**************************************' UPON CONSOLE
MOVE 'INVALID FI-POS-TRANS-TYPE DETECTED. SEE MESSAGE ABOVE'
TO WS-ERR-MSG1
MOVE 16 TO WS-ABEND-CD
PERFORM 9999-ABEND
.
******************************************************************
9000-TERMINATE.
******************************************************************
IF WS-SCSALE-OUT-CNT > 0
PERFORM 310-B-REC-TKT
PERFORM 320-BB-REC-CUST
PERFORM 330-BD-REC-PAYMENT
IF WS-SLTKT-NBR-DSCNT > ZERO
PERFORM 340-BE-REC-DISCOUNT
END-IF
* do the write to the control file with the next avail tkt nbr
* to set up for the next run
PERFORM 830-WRITE-CONTROL-FILE
* decrement the tkt nbr var to show the range we actually used
* in the current run
SUBTRACT 1 FROM WS-TKT-NBR GIVING WS-END-TKT-NBR
DISPLAY 'TKT NBR RANGE USED FROM VSAM SCCTRL FILE:'
UPON CONSOLE
MOVE WS-START-TKT-NBR TO WS-DISPLAY-S9999999
DISPLAY 'FROM: ' WS-DISPLAY-S9999999
UPON CONSOLE
MOVE WS-END-TKT-NBR TO WS-DISPLAY-S9999999
DISPLAY ' TO: ' WS-DISPLAY-S9999999
UPON CONSOLE
DISPLAY '-----------------------------------------------'
UPON CONSOLE
ELSE
DISPLAY 'NO TKT NBRS USED FROM VSAM SCCTRL FILE DUE TO EMP
- 'TY INPUT FILE' UPON CONSOLE
DISPLAY '-----------------------------------------------'
UPON CONSOLE
END-IF
MOVE WS-SCFRNSR2-IN-CNT TO SYSOUT-NBR
MOVE 'TOTAL SCFRNS2I RECS READ' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
MOVE WS-SCSALE-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL SCSALEO RECS WRITTEN SHOULD FOOT WITH REC TYPE TO
- 'TALS BELOW'
TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
DISPLAY '-----------------------------------------------'
UPON CONSOLE
MOVE WS-B-REC-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL B TYPE RECS WRITTEN' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
MOVE WS-BB-REC-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL BB TYPE RECS WRITTEN' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
MOVE WS-BD-REC-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL BD TYPE RECS WRITTEN' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
MOVE WS-BE-REC-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL BE TYPE RECS WRITTEN' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
MOVE WS-BF-REC-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL BF TYPE RECS WRITTEN' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
MOVE WS-BFA-REC-OUT-CNT TO SYSOUT-NBR
MOVE 'TOTAL BFA TYPE RECS WRITTEN' TO SYSOUT-MSG
DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE
DISPLAY '-----------------------------------------------'
UPON CONSOLE
CLOSE SCFRNSR2-IN
SCSALE-OUT
CONTROL-FILE
.
******************************************************************
9999-ABEND.
******************************************************************
DISPLAY '***********************************************'
UPON CONSOLE
DISPLAY '** ABEND TAKEN BY USER PROGRAM ' UPON CONSOLE
DISPLAY '** ' MODULE-LIT-NAME-AUD
UPON CONSOLE
DISPLAY '**' UPON CONSOLE
DISPLAY '** MSG : ' WS-ERR-MSG1 UPON CONSOLE
DISPLAY '** MSG : ' WS-ERR-MSG2 UPON CONSOLE
DISPLAY '** MSG : ' WS-ERR-MSG3 UPON CONSOLE
DISPLAY '** MSG : ' WS-ERR-MSG4 UPON CONSOLE
DISPLAY '** ' UPON CONSOLE
DISPLAY '***********************************************'
UPON CONSOLE
MOVE 0 TO WS-TIMING
CALL "CEE3ABD" USING WS-ABEND-CD , WS-TIMING
.

More Related Content

Viewers also liked

Placa prema radnom ucinku
Placa prema radnom ucinkuPlaca prema radnom ucinku
Placa prema radnom ucinkuDejan Jeremic
 
Final Presentation
Final PresentationFinal Presentation
Final PresentationTyler Totten
 
14185358 오민지 타이포최종
14185358 오민지 타이포최종14185358 오민지 타이포최종
14185358 오민지 타이포최종dydy3254
 
Economic institution ch 21
Economic institution ch 21Economic institution ch 21
Economic institution ch 21Liaqat Jogi .
 
Kissan ketchup brand extension analysis
Kissan ketchup brand extension analysisKissan ketchup brand extension analysis
Kissan ketchup brand extension analysisSameer Mathur
 

Viewers also liked (7)

Readmisija
ReadmisijaReadmisija
Readmisija
 
Placa prema radnom ucinku
Placa prema radnom ucinkuPlaca prema radnom ucinku
Placa prema radnom ucinku
 
Final Presentation
Final PresentationFinal Presentation
Final Presentation
 
14185358 오민지 타이포최종
14185358 오민지 타이포최종14185358 오민지 타이포최종
14185358 오민지 타이포최종
 
FAHID HSE CV
FAHID HSE CVFAHID HSE CV
FAHID HSE CV
 
Economic institution ch 21
Economic institution ch 21Economic institution ch 21
Economic institution ch 21
 
Kissan ketchup brand extension analysis
Kissan ketchup brand extension analysisKissan ketchup brand extension analysis
Kissan ketchup brand extension analysis
 

Similar to COBOL BATCH EXAMPLE-RPR6621F

COBOL DB2 BATCH EXAMPLE-RPR6520
COBOL DB2 BATCH EXAMPLE-RPR6520COBOL DB2 BATCH EXAMPLE-RPR6520
COBOL DB2 BATCH EXAMPLE-RPR6520Jon Fortman
 
qmx_reeher_transaction_dl_sql_ex.sql
qmx_reeher_transaction_dl_sql_ex.sqlqmx_reeher_transaction_dl_sql_ex.sql
qmx_reeher_transaction_dl_sql_ex.sqlBob Werner
 
Alv interactive ABAPreport
Alv interactive ABAPreportAlv interactive ABAPreport
Alv interactive ABAPreportRavi Kanudawala
 
Data Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDE
Data Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDEData Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDE
Data Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDEJon Fortman
 
COBOL CICS EXAMPLE-SC52P52
COBOL CICS EXAMPLE-SC52P52COBOL CICS EXAMPLE-SC52P52
COBOL CICS EXAMPLE-SC52P52Jon Fortman
 
qmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sqlqmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sqlBob Werner
 
Alvedit programs
Alvedit programsAlvedit programs
Alvedit programsmcclintick
 
Z390 Designare REV1.0.pdf
Z390 Designare REV1.0.pdfZ390 Designare REV1.0.pdf
Z390 Designare REV1.0.pdfQuangSngBi
 
OOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAsOOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAsConnor McDonald
 
Lab08Lab08.cppLab08Lab08.cpp.docx
Lab08Lab08.cppLab08Lab08.cpp.docxLab08Lab08.cppLab08Lab08.cpp.docx
Lab08Lab08.cppLab08Lab08.cpp.docxDIPESH30
 

Similar to COBOL BATCH EXAMPLE-RPR6621F (20)

COBOL DB2 BATCH EXAMPLE-RPR6520
COBOL DB2 BATCH EXAMPLE-RPR6520COBOL DB2 BATCH EXAMPLE-RPR6520
COBOL DB2 BATCH EXAMPLE-RPR6520
 
qmx_reeher_transaction_dl_sql_ex.sql
qmx_reeher_transaction_dl_sql_ex.sqlqmx_reeher_transaction_dl_sql_ex.sql
qmx_reeher_transaction_dl_sql_ex.sql
 
ZFINDALLZPROGAM
ZFINDALLZPROGAMZFINDALLZPROGAM
ZFINDALLZPROGAM
 
Alv interactive ABAPreport
Alv interactive ABAPreportAlv interactive ABAPreport
Alv interactive ABAPreport
 
Data Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDE
Data Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDEData Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDE
Data Mapping - SCSALE COPYBOOK MAPPING PRELIM GUIDE
 
COBOL CICS EXAMPLE-SC52P52
COBOL CICS EXAMPLE-SC52P52COBOL CICS EXAMPLE-SC52P52
COBOL CICS EXAMPLE-SC52P52
 
qmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sqlqmx_acknowledgement_dl_sql_ex.sql
qmx_acknowledgement_dl_sql_ex.sql
 
Casnewb
CasnewbCasnewb
Casnewb
 
Alvedit programs
Alvedit programsAlvedit programs
Alvedit programs
 
Classical report
Classical reportClassical report
Classical report
 
Alv barra her
Alv barra herAlv barra her
Alv barra her
 
Tables
TablesTables
Tables
 
Z390 Designare REV1.0.pdf
Z390 Designare REV1.0.pdfZ390 Designare REV1.0.pdf
Z390 Designare REV1.0.pdf
 
Quick reference for sqoop
Quick reference for sqoopQuick reference for sqoop
Quick reference for sqoop
 
Readme
ReadmeReadme
Readme
 
ECE 468 Lab Project 2
ECE 468 Lab Project 2ECE 468 Lab Project 2
ECE 468 Lab Project 2
 
OOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAsOOW19 - Flashback, not just for DBAs
OOW19 - Flashback, not just for DBAs
 
The Cost Based Optimiser in 11gR2
The Cost Based Optimiser in 11gR2The Cost Based Optimiser in 11gR2
The Cost Based Optimiser in 11gR2
 
ICP DAS USA Full Catalog
ICP DAS USA Full CatalogICP DAS USA Full Catalog
ICP DAS USA Full Catalog
 
Lab08Lab08.cppLab08Lab08.cpp.docx
Lab08Lab08.cppLab08Lab08.cpp.docxLab08Lab08.cppLab08Lab08.cpp.docx
Lab08Lab08.cppLab08Lab08.cpp.docx
 

More from Jon Fortman

Technical Specification - RPR6620F cobol
Technical Specification - RPR6620F cobolTechnical Specification - RPR6620F cobol
Technical Specification - RPR6620F cobolJon Fortman
 
System Architecture v3.0
System Architecture v3.0System Architecture v3.0
System Architecture v3.0Jon Fortman
 
Impact Analysis FRAN PCT DATA DEFINITION CHANGE
Impact Analysis FRAN PCT DATA DEFINITION CHANGEImpact Analysis FRAN PCT DATA DEFINITION CHANGE
Impact Analysis FRAN PCT DATA DEFINITION CHANGEJon Fortman
 
Technical Specification - CSVRD02 proc
Technical Specification - CSVRD02 procTechnical Specification - CSVRD02 proc
Technical Specification - CSVRD02 procJon Fortman
 
Test Proofing Protocol - RPR6320 Assurant Xmit-a
Test Proofing Protocol - RPR6320 Assurant Xmit-aTest Proofing Protocol - RPR6320 Assurant Xmit-a
Test Proofing Protocol - RPR6320 Assurant Xmit-aJon Fortman
 
RSSP Franchise Service Plan Automation
RSSP Franchise Service Plan AutomationRSSP Franchise Service Plan Automation
RSSP Franchise Service Plan AutomationJon Fortman
 

More from Jon Fortman (6)

Technical Specification - RPR6620F cobol
Technical Specification - RPR6620F cobolTechnical Specification - RPR6620F cobol
Technical Specification - RPR6620F cobol
 
System Architecture v3.0
System Architecture v3.0System Architecture v3.0
System Architecture v3.0
 
Impact Analysis FRAN PCT DATA DEFINITION CHANGE
Impact Analysis FRAN PCT DATA DEFINITION CHANGEImpact Analysis FRAN PCT DATA DEFINITION CHANGE
Impact Analysis FRAN PCT DATA DEFINITION CHANGE
 
Technical Specification - CSVRD02 proc
Technical Specification - CSVRD02 procTechnical Specification - CSVRD02 proc
Technical Specification - CSVRD02 proc
 
Test Proofing Protocol - RPR6320 Assurant Xmit-a
Test Proofing Protocol - RPR6320 Assurant Xmit-aTest Proofing Protocol - RPR6320 Assurant Xmit-a
Test Proofing Protocol - RPR6320 Assurant Xmit-a
 
RSSP Franchise Service Plan Automation
RSSP Franchise Service Plan AutomationRSSP Franchise Service Plan Automation
RSSP Franchise Service Plan Automation
 

COBOL BATCH EXAMPLE-RPR6621F

  • 1. COBOL Program RPR6621F Project: RSSP Franchise Service Plan Automation DEVELOPED BY APPROVED BY NAME Jon Fortman Tim Reagan ROLE SME/Developer Asst. Dir.
  • 2. ****************************************************************** IDENTIFICATION DIVISION. ****************************************************************** PROGRAM-ID. RPR6621F. AUTHOR. JON FORTMAN. DATE-WRITTEN. MAR 2015. DATE-COMPILED. *INSTALLATION. RADIOSHACK TECHNOLOGY SERVICES. *COPYRIGHT (C) 2015,RADIOSHACK TECHNOLOGY SERVICES *SECURITY. RACF. *REMARKS. ****************************************************************** * C O N T R A C T S E R V I C E S ****************************************************************** * * RADIO SHACK FRANCHISE SERVICE PLAN SALES/REFUNDS * ****************************************************************** * MODULE RESPONSIBLE FOR FORMATTING THE FILE FROM RPR6620F INTO * SCSALE COPYBOOK FORMAT [UNIT 010118 DR FORMAT]. * * UNIT: 0 1 0 1 1 8 ONLY ****************************************************************** ENVIRONMENT DIVISION. ****************************************************************** CONFIGURATION SECTION. *SOURCE-COMPUTER. IBM-ZOS WITH DEBUGGING MODE. SOURCE-COMPUTER. IBM-ZOS. OBJECT-COMPUTER. IBM-ZOS. ****************************************************************** INPUT-OUTPUT SECTION. ****************************************************************** FILE-CONTROL. SELECT SCFRNSR2-IN ASSIGN TO SCFRNS2I. SELECT SCSALE-OUT ASSIGN TO SCSALEO. SELECT CONTROL-FILE ASSIGN TO CTRLVSM FILE STATUS WS-CTRL-STATUS RECORD KEY CTRL-FILE-KEYS ORGANIZATION INDEXED ACCESS RANDOM. ****************************************************************** DATA DIVISION. ****************************************************************** FILE SECTION. *-------------------------------------------------------------- * INPUT FILE OF FRANCHISE SERVICE PLAN SALES/REFUNDS *-------------------------------------------------------------- FD SCFRNSR2-IN RECORDING MODE F BLOCK CONTAINS 0 RECORDS DATA RECORD IS SCFRNSR2-IN-REC. 01 SCFRNSR2-IN-REC. COPY SCFRNSR2 REPLACING ==:F:== BY ==FI==. FD SCSALE-OUT RECORDING MODE IS F BLOCK CONTAINS 0 RECORDS DATA RECORD IS SCSALE-OUT-RECORD. 01 SCSALE-OUT-RECORD PIC X(500). FD CONTROL-FILE RECORD CONTAINS 250 CHARACTERS. 01 SCCTRL-CONTROL-RECORD.
  • 3. COPY SCCTRL REPLACING ==:CTRL:== BY ==CTRL==. **************************************************************** WORKING-STORAGE SECTION. **************************************************************** 01 SCSALE-OUT-REC. COPY SCSALE REPLACING ==:SALE:== BY ==SALE==. 01 SCFRNSR2-PREV-REC. COPY SCFRNSR2 REPLACING ==:F:== BY ==FP==. 01 MODULE-LIT-NAME-AUD PIC X(50) VALUE ' COBOL PROGRAM RPR6621F'. 01 WS-ERR-MSG1 PIC X(85) VALUE SPACES. 01 WS-ERR-MSG2 PIC X(85) VALUE SPACES. 01 WS-ERR-MSG3 PIC X(85) VALUE SPACES. 01 WS-ERR-MSG4 PIC X(85) VALUE SPACES. 01 SYSOUT-TOTAL-LINE. 05 SYSOUT-NBR PIC ZZZ,ZZZ,ZZ9-. 05 F PIC X(1) VALUE SPACES. 05 SYSOUT-MSG PIC X(80) VALUE SPACES. 01 WS-COUNTERS. 05 WS-SCFRNSR2-IN-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-SCSALE-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-B-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-BB-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-BD-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-BE-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-BF-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 05 WS-BFA-REC-OUT-CNT PIC S9(7) COMP-3 VALUE ZERO. 01 WS-MISC-FIELDS. 05 WS-ABEND-CD PIC S9(9) BINARY. 05 WS-TIMING PIC S9(9) BINARY. 05 WS-CTRL-STATUS PIC 9(2). 05 WS-VARIANCE PIC S9(4) COMP. 05 WS-ADMIN-STR PIC X(6) VALUE '010118'. 05 WS-DISPLAY-S9999999 PIC ------9. 05 WS-TKT-NBR PIC S9(7) COMP-3 VALUE ZERO. 05 WS-START-TKT-NBR PIC S9(7) COMP-3 VALUE ZERO. 05 WS-END-TKT-NBR PIC S9(7) COMP-3 VALUE ZERO. 05 WS-SLTKT-NBR-LINES PIC S9(3) COMP-3 VALUE ZERO. 05 WS-SLTKT-NBR-DSCNT PIC S9(3) COMP-3 VALUE ZERO. 05 WS-SVP-RTL-QTY PIC S9(5) COMP-3 VALUE ZERO. 01 WS-INDICATORS. 05 WS-EOF-SCFRNSR2-IN-IND PIC X. 88 EOF-SCFRNSR2-IN VALUE 'Y'. 05 WS-SLTKT-COMPLETE-IND PIC X. 88 WS-TICKET-COMPLETED VALUE 'Y'. 88 WS-TICKET-NOT-COMPLETED VALUE 'N'. ****************************************************************** PROCEDURE DIVISION. ****************************************************************** 000-MAIN SECTION. PERFORM 100-INITIALIZE IF NOT EOF-SCFRNSR2-IN PERFORM 200-PROCESS-SCFRNSR2 UNTIL EOF-SCFRNSR2-IN ELSE PERFORM 911-EMPTY-FILE-MESSAGE END-IF PERFORM 9000-TERMINATE STOP RUN
  • 4. . ****************************************************************** 100-INITIALIZE. ****************************************************************** DISPLAY '***************************************' UPON CONSOLE DISPLAY '* R P R 6 6 2 1 F *' UPON CONSOLE DISPLAY '***************************************' UPON CONSOLE INITIALIZE SALE-REC-KEY-INIT OPEN INPUT SCFRNSR2-IN OUTPUT SCSALE-OUT OPEN I-O CONTROL-FILE IF WS-CTRL-STATUS NOT = ZERO AND WS-CTRL-STATUS NOT = 97 MOVE 'RPR6621F HAD A PROBLEM OPENING THE VSAM ' TO WS-ERR-MSG1 STRING 'CONTROL FILE, THE STATUS WAS ' WS-CTRL-STATUS DELIMITED BY SIZE INTO WS-ERR-MSG2 MOVE 16 TO WS-ABEND-CD PERFORM 9999-ABEND END-IF PERFORM 800-READ-SCFRNSR2 IF NOT EOF-SCFRNSR2-IN * the daily rpt dt is figured in rpr6622f MOVE ZERO TO SALE-DAILY-RPT-DT * these pieces of the scsale rec key are constant MOVE WS-ADMIN-STR TO SALE-STORE-NBR MOVE 'B ' TO SALE-REC-TYPE1 PERFORM 810-READ-CONTROL-FILE PERFORM 300-SETUP-REC-KEY MOVE SCFRNSR2-IN-REC TO SCFRNSR2-PREV-REC * we assume the tkt is complete until we encounter any error SET WS-TICKET-COMPLETED TO TRUE END-IF . ****************************************************************** 200-PROCESS-SCFRNSR2. ****************************************************************** * this is the tkt-level break block. we process the b rec using * the prev input rec. the b rec gets output out of order but * we'll correct that with syncsort in a subsequent jcl step * p r e v i o u s t k t IF NOT (FI-POS-USERID = FP-POS-USERID AND FI-POS-STOREID = FP-POS-STOREID AND FI-POS-TICKET-NUMBER = FP-POS-TICKET-NUMBER AND FI-POS-TRANS-DATE-TIME = FP-POS-TRANS-DATE-TIME) PERFORM 310-B-REC-TKT PERFORM 320-BB-REC-CUST PERFORM 330-BD-REC-PAYMENT IF WS-SLTKT-NBR-DSCNT > ZERO PERFORM 340-BE-REC-DISCOUNT END-IF * c u r r e n t t k t r e a d i n - s e t u p PERFORM 300-SETUP-REC-KEY
  • 5. * reset tkt level accummulators MOVE ZERO TO WS-SLTKT-NBR-LINES WS-SLTKT-NBR-DSCNT * we assume the tkt is complete until we encounter any error SET WS-TICKET-COMPLETED TO TRUE MOVE SCFRNSR2-IN-REC TO SCFRNSR2-PREV-REC END-IF *------------------------------------------------------------ * any error present means the tkt is not complete IF FI-SVP-CMNT-LN1-DESC NOT = SPACES SET WS-TICKET-NOT-COMPLETED TO TRUE END-IF ADD FI-SVP-RTL-QTY TO WS-SLTKT-NBR-LINES IF FI-DISCOUNT-AMT > ZERO ADD 1 TO WS-SLTKT-NBR-DSCNT END-IF EVALUATE TRUE WHEN FI-SVP-RTL-QTY IS POSITIVE MOVE -1 TO WS-VARIANCE WHEN FI-SVP-RTL-QTY IS NEGATIVE MOVE +1 TO WS-VARIANCE WHEN FI-SVP-RTL-QTY IS ZERO PERFORM 911-QTY-ZERO-MSG END-EVALUATE PERFORM VARYING WS-SVP-RTL-QTY FROM FI-SVP-RTL-QTY BY WS-VARIANCE UNTIL WS-SVP-RTL-QTY = ZERO PERFORM 350-BF-REC-SKU-LINE PERFORM 360-BFA-REC-SER-NBR END-PERFORM PERFORM 800-READ-SCFRNSR2 . ****************************************************************** 300-SETUP-REC-KEY. ****************************************************************** * put the next avail tkt nbr from the scctrl read into our first * tkt MOVE WS-TKT-NBR TO SALE-TICKET-NBR * now stage next avail tkt nbr+1 for the tkt after the one * we're processing now IF WS-TKT-NBR = 999999 MOVE 0 TO WS-TKT-NBR ELSE ADD 1 TO WS-TKT-NBR END-IF . ****************************************************************** 310-B-REC-TKT. ****************************************************************** * although this is the first rec type at the tkt level, we * have to output it last because we need to do tkt-level * totaling and assessments that have to be recorded on this rec. INITIALIZE SALE-RECORD-B MOVE WS-SLTKT-COMPLETE-IND TO SALE-SLTKT-COMPLETE-IND MOVE FP-POS-TRANS-MM TO SALE-SLTKT-MM MOVE FP-POS-TRANS-DD TO SALE-SLTKT-DD MOVE FP-POS-TRANS-YYYY(1:2) TO SALE-SLTKT-CC MOVE FP-POS-TRANS-YYYY(3:2) TO SALE-SLTKT-YY MOVE FP-POS-TRANS-HH TO SALE-SLTKT-HH MOVE FP-POS-TRANS-MN TO SALE-SLTKT-MN
  • 6. MOVE FP-POS-TRANS-SS TO SALE-SLTKT-SS EVALUATE TRUE WHEN FP-SALE MOVE 'FRS' TO SALE-SLMKR-SALES-ID MOVE SPACE TO SALE-FRAN-ISCT-IND SALE-FRAN-ISCT-TYPE WHEN FP-REFUND MOVE 'FRR' TO SALE-SLMKR-SALES-ID MOVE 'Y' TO SALE-FRAN-ISCT-IND MOVE 'N' TO SALE-FRAN-ISCT-TYPE MOVE 'RETURNED' TO SALE-REASON-FOR-REFUND WHEN OTHER PERFORM 911-INVALID-TRANS-TYPE-MSG END-EVALUATE MOVE ZERO TO SALE-SLMKR-ID MOVE '21F' TO SALE-OPER-ID MOVE 'F' TO SALE-SLTKT-TRAN-TYP-CD MOVE FP-POS-STORE-NBR TO SALE-FRNCHS-STR-NBR MOVE ZERO TO SALE-SLTKT-OSSRVC-SUBTOT-AMT SALE-ZONE-NBR SALE-ZONE-PCT SALE-SVP-TOTL-ZNE-SRCHRG-AMT MOVE FP-UNIT-SELL-PRICE TO SALE-SLTKT-SUBTOT-AMT MOVE ZERO TO SALE-SLTKT-TAX-AMT MOVE FP-UNIT-SELL-PRICE TO SALE-SLTKT-TOTL-AMT MOVE FP-EXTENDED-PRICE TO SALE-SLTKT-TNDR-AMT MOVE FP-STATE TO SALE-SLTKT-TAX-STATE-ID MOVE SPACES TO SALE-CUST-TAX-XMP-ID SALE-LAB-TYP-CD MOVE WS-SLTKT-NBR-LINES TO SALE-SLTKT-NBR-LINES MOVE 1 TO SALE-SLTKT-NBR-PYMT SALE-SLTKT-NBR-GOOD-PYMT MOVE ZERO TO SALE-SLTKT-NBR-OSSRVC MOVE WS-SLTKT-NBR-DSCNT TO SALE-SLTKT-NBR-DSCNT MOVE ZERO TO SALE-SLTKT-DSCNT-PCT SALE-SLTKT-NBR-RFNDS SET SALE-NO-TAX-EXEMPT-FORM TO TRUE MOVE SPACES TO SALE-ALT-STR-NBR SET SALE-NO-COMMERCIAL-CHG TO TRUE SET SALE-NO-BAD-DEBT TO TRUE SET SALE-NO-ISCT TO TRUE MOVE ZERO TO SALE-SLTKT-NBR-SALES MOVE SPACES TO SALE-SHOP-NBR SALE-SHOP-PHONE-NBR SET SALE-NO-SANWA TO TRUE MOVE FP-POS-TICKET-NUMBER TO SALE-ORG-FRAN-SLTKT-NBR MOVE FP-POS-TRANS-MM TO SALE-ORG-FRAN-SLTKT-DT(1:2) MOVE FP-POS-TRANS-DD TO SALE-ORG-FRAN-SLTKT-DT(3:2) MOVE FP-POS-TRANS-YYYY TO SALE-ORG-FRAN-SLTKT-DT(5:4) MOVE SPACES TO SALE-CUST-TYP-CD ADD 1 TO WS-B-REC-OUT-CNT PERFORM 820-WRITE-SCSALE-FILE . ****************************************************************** 320-BB-REC-CUST. ****************************************************************** INITIALIZE SALE-RECORD-BB MOVE 'B ' TO SALE-REC-TYPE2 MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR MOVE FI-CUST-NM TO SALE-CUST-NM MOVE FI-ADDRESS-1 TO SALE-CUST-LINE1-ADDR MOVE FI-ADDRESS-2 TO SALE-CUST-LINE2-ADDR MOVE FI-CITY TO SALE-CUST-CITY-NM
  • 7. MOVE FI-STATE TO SALE-CUST-STATE-ID MOVE FI-CUST-CNTRY-ISO-CD TO SALE-CUST-CNTRY-CD MOVE FI-ZIP TO SALE-CUST-POSTL-CD MOVE FI-TELEPHONE TO SALE-CUST-PHONE-NBR MOVE SPACES TO SALE-SVP-CNTCT-NM SALE-BB-SCPHONE-KEY ADD 1 TO WS-BB-REC-OUT-CNT PERFORM 820-WRITE-SCSALE-FILE . ****************************************************************** 330-BD-REC-PAYMENT. ****************************************************************** * current business rule only allows one payment rec per tkt * on franchise tkts. that is why there is only one call to * this routine at the tkt level break. *----------------------------------------------------------------- INITIALIZE SALE-RECORD-BD MOVE 'D ' TO SALE-REC-TYPE2 MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR SET SALE-PAYMENT-NOT-DELETED TO TRUE MOVE 'C' TO SALE-SLTKT-PYMT-CD MOVE FI-EXTENDED-PRICE TO SALE-SLTKT-PYMT-AMT MOVE SPACES TO SALE-CHK-ID SALE-TRVLR-CHK-ID SALE-COMCHG-CMPNY-ID SALE-COMCHG-ACCT-ID SALE-COMCHG-AUTH-ID SALE-PO-ID SALE-COMCHG-RCV-NM SALE-LEASE-ID SALE-LEASE-CUST-NM SALE-CRCRD-ACCT-ID SALE-CRCRD-TYP-CD SALE-CRCRD-AUTH-ID SALE-BAD-DEBT-TYP SALE-BAD-DEBT-CD SALE-REASON-FOR-ISCT SALE-MISCTRAN-TYP-CD SALE-MISCTRAN-TYP SALE-MISCTRAN-OTH-DESC SALE-ACCT-SCRTY-ID MOVE ZERO TO SALE-COMCHG-NBR-INVOICES SALE-LEASE-APRVL-NBR SALE-LEASE-CUST-NBR SALE-CRCRD-EXP-DT SALE-CRCRD-TRNS-ID SALE-NBR-INVC-COPIES SALE-ORG-INVC-NBR SALE-FRAN-SVP-PCT SALE-FRAN-SVP-AMT MOVE FI-POS-STORE-NBR TO SALE-ISCT-STR-NBR MOVE SALE-TICKET-NBR TO SALE-PYMT-ISCT-NBR MOVE 'NEW' TO SALE-ISCT-ACCT-TYP MOVE '8' TO SALE-ISCT-ACCT-CD MOVE 1 TO SALE-SLTKT-PMTSEQ-NBR ADD 1 TO WS-BD-REC-OUT-CNT PERFORM 820-WRITE-SCSALE-FILE . ****************************************************************** 340-BE-REC-DISCOUNT. ****************************************************************** INITIALIZE SALE-RECORD-BE MOVE 'E ' TO SALE-REC-TYPE2
  • 8. MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR MOVE 'OTH' TO SALE-SLTKT-DSCNT-TYP-CD * in the 010118 cics program, sc53p53, there is an algorithm * that parses through all lines entered on the tkt to make sure * all lines have the same discount%. that is not being carried * into this automated version. this tkt-level rec will carry * whatever discount% is present on the last scfrnsr2 input line * for a given tkt MOVE FP-SVP-DSCNT-PCT TO SALE-DSCNT-PCT MOVE SPACES TO SALE-DSCNT-CNTL-ID MOVE 'ADJUSTMENT' TO SALE-SLTKT-OTHDSC-DESC ADD 1 TO WS-BE-REC-OUT-CNT PERFORM 820-WRITE-SCSALE-FILE . ****************************************************************** 350-BF-REC-SKU-LINE. ****************************************************************** INITIALIZE SALE-RECORD-BF MOVE 'F ' TO SALE-REC-TYPE2 MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR SET SALE-SKU-LINE-NOT-DELETED TO TRUE MOVE 1 TO SALE-SVP-RTL-QTY MOVE FI-PARENTSKU TO SALE-SKU-ID MOVE SPACES TO SALE-SVP-EQUIP-MODFY-CD MOVE 'S' TO SALE-SVP-TYP-CD MOVE FI-SVP-COVER-MTH-QTY TO SALE-SVP-COVER-MTH-QTY SALE-SVP-ACTUAL-NBR-MTHS MOVE FI-SVP-LOC-WRNTY-COND-CD TO SALE-SVP-LOC-WRNTY-COND-CD MOVE FI-SKU-SLMKR-DESC TO SALE-SKU-SLMKR-DESC MOVE FI-UNIT-SELL-PRICE TO SALE-SVP-REGL-PRICE-AMT MOVE FI-POS-TRANS-MM TO SALE-SVP-CALC-MM MOVE FI-POS-TRANS-DD TO SALE-SVP-CALC-DD MOVE FI-POS-TRANS-YYYY(1:2) TO SALE-SVP-CALC-CC MOVE FI-POS-TRANS-YYYY(3:2) TO SALE-SVP-CALC-YY MOVE FI-SVP-BEG-DT TO SALE-SVP-BEG-DT MOVE FI-SVP-END-DT TO SALE-SVP-END-DT MOVE FI-SVP-DSCNT-PCT TO SALE-SVP-DSCNT-PCT COMPUTE SALE-SVP-DSCNT-AMT = FI-DISCOUNT-AMT / FI-SVP-RTL-QTY MOVE FI-SVP-RTL-AMT TO SALE-SVP-RTL-AMT MOVE FI-ORG-POS-TICKET-NUMBER TO SALE-SLTKT-PUR-NBR MOVE FI-ORG-POS-TRANS-MM TO SALE-SLTKT-PUR-MM MOVE FI-ORG-POS-TRANS-DD TO SALE-SLTKT-PUR-DD MOVE FI-ORG-POS-TRANS-YYYY(1:2) TO SALE-SLTKT-PUR-CC MOVE FI-ORG-POS-TRANS-YYYY(3:2) TO SALE-SLTKT-PUR-YY MOVE FI-ORG-POS-STORE-NBR TO SALE-SLTKT-PUR-STR MOVE SPACES TO SALE-REF-CNTL-ID SALE-REF-DROP-ID MOVE 1 TO SALE-NBR-SER-IDS MOVE ZEROS TO SALE-NBR-EQIP-CDS SALE-SVP-ZNE-SRCHRG-AMT SALE-FRAN-PCT MOVE FI-UNIT-SELL-PRICE TO SALE-SVP-BEG-PRICE-AMT * these two fields are auto-generated during nightly processing * by rpr6602 MOVE SPACES TO SALE-SVP-CNTL-ID SALE-SVP-DROP-ID * this field is obsolete. it once indicated what type of * direct mail solicitation would be performed SALE-SVP-SOLIC-TYP MOVE FI-SKU-ID TO SALE-SVP-SKU-ID MOVE FI-SVP-COST-AMT TO SALE-SVP-COST-AMT MOVE FI-UNIT-SELL-PRICE TO SALE-ORG-SVP-RTL-AMT
  • 9. MOVE FI-SVP-CATG-ID TO SALE-SVP-CATG-ID MOVE FI-FRAN-PRECISION-PCT TO SALE-FRAN-PRECISION-PCT MOVE FI-CORP-PROFIT-PCT TO SALE-CORP-PROFIT-PCT ADD 1 TO WS-BF-REC-OUT-CNT PERFORM 820-WRITE-SCSALE-FILE . ****************************************************************** 360-BFA-REC-SER-NBR. ****************************************************************** INITIALIZE SALE-RECORD-BFA MOVE 'F ' TO SALE-REC-TYPE2 MOVE 1 TO SALE-REC-TYPE2-SEQ-NBR MOVE 'A ' TO SALE-REC-TYPE3 MOVE 1 TO SALE-REC-TYPE3-SEQ-NBR MOVE '01NOSN' TO SALE-SKU-SER-ID MOVE SPACES TO SALE-EQUIP-TYP-CD ADD 1 TO WS-BFA-REC-OUT-CNT PERFORM 820-WRITE-SCSALE-FILE . ****************************************************************** 800-READ-SCFRNSR2. ****************************************************************** READ SCFRNSR2-IN AT END SET EOF-SCFRNSR2-IN TO TRUE NOT AT END ADD 1 TO WS-SCFRNSR2-IN-CNT END-READ . ****************************************************************** 810-READ-CONTROL-FILE. ****************************************************************** MOVE SPACES TO CTRL-FILE-KEYS MOVE 'VALIDSTORE' TO CTRL-KEY1-REC-TYPE MOVE WS-ADMIN-STR TO CTRL-KEY2 READ CONTROL-FILE INVALID KEY MOVE 'CONTROL-FILE IS MISSING VALIDSTORE RECORD FOR:' TO WS-ERR-MSG1 MOVE WS-ADMIN-STR TO WS-ERR-MSG2 MOVE 16 TO WS-ABEND-CD PERFORM 9999-ABEND END-READ IF WS-CTRL-STATUS = ZERO OR 97 MOVE CTRL-NEXT-AVL-TICK-NBR TO WS-START-TKT-NBR, WS-TKT-NBR ELSE MOVE 'RPR6621F HAD A PROBLEM READING FROM THE VSAM ' TO WS-ERR-MSG1 STRING 'CONTROL FILE, THE STATUS WAS ' WS-CTRL-STATUS DELIMITED BY SIZE INTO WS-ERR-MSG2 MOVE 16 TO WS-ABEND-CD PERFORM 9999-ABEND END-IF . ****************************************************************** 820-WRITE-SCSALE-FILE. ****************************************************************** WRITE SCSALE-OUT-RECORD FROM SCSALE-OUT-REC ADD 1 TO WS-SCSALE-OUT-CNT MOVE SPACES TO SALE-REC-TYPE2 SALE-REC-TYPE3 SALE-REC-TYPE4
  • 10. MOVE ZERO TO SALE-REC-TYPE2-SEQ-NBR SALE-REC-TYPE3-SEQ-NBR SALE-REC-TYPE4-SEQ-NBR . ****************************************************************** 830-WRITE-CONTROL-FILE. ****************************************************************** MOVE WS-TKT-NBR TO CTRL-NEXT-AVL-TICK-NBR REWRITE SCCTRL-CONTROL-RECORD IF WS-CTRL-STATUS NOT = 0 MOVE 'RPR6621F HAD A PROBLEM REWRITING TO THE VSAM ' TO WS-ERR-MSG1 STRING 'CONTROL FILE, THE STATUS WAS ' WS-CTRL-STATUS DELIMITED BY SIZE INTO WS-ERR-MSG2 MOVE WS-TKT-NBR TO WS-DISPLAY-S9999999 STRING 'NEXT AVL TKT NBR IS: ' WS-DISPLAY-S9999999 DELIMITED BY SIZE INTO WS-ERR-MSG3 MOVE 16 TO WS-ABEND-CD PERFORM 9999-ABEND END-IF . ****************************************************************** 911-EMPTY-FILE-MESSAGE. ****************************************************************** DISPLAY SPACE DISPLAY '>>>>>>>>>>>>>>>> IMPORTANT <<<<<<<<<<<<<<<<<<<' UPON CONSOLE DISPLAY '***************************************************' UPON CONSOLE DISPLAY '* SCFRNS2I INPUT FILE CONTAINED NO DATA. THIS IS *' UPON CONSOLE DISPLAY '* EXTREMELY UNLIKELY TO HAPPEN ON NORMAL BUSINESS *' UPON CONSOLE DISPLAY '* DAYS BUT MAY BE TRUE ON HOLIDAYS SUCH AS *' UPON CONSOLE DISPLAY '* THANKSGIVING AND CHRISTMAS. *' UPON CONSOLE DISPLAY '* THIS SITUATION SHOULD BE VETTED WITH CLOSE *' UPON CONSOLE DISPLAY '* SCRUTINY SINCE FRANCHISE STORES SELL SERVICE *' UPON CONSOLE DISPLAY '* PLANS ON MOST EVERY DAY, HOLIDAYS *' UPON CONSOLE DISPLAY '* NOTWITHSTANDING. *' UPON CONSOLE DISPLAY '***************************************************' UPON CONSOLE . ****************************************************************** 911-QTY-ZERO-MSG. ****************************************************************** DISPLAY '**************************************' UPON CONSOLE DISPLAY '* FI-SVP-RTL-QTY FOUND EQUAL TO ZERO ' UPON CONSOLE DISPLAY '* ON SCFRNS2I INPUT. VALUE DETECTED ' UPON CONSOLE DISPLAY '* WAS: ' FI-SVP-RTL-QTY UPON CONSOLE DISPLAY '* FATAL ERROR. PROCESSING CANNOT ' UPON CONSOLE DISPLAY '* CONTINUE. PROGRAMMER INVESTIGATION ' UPON CONSOLE DISPLAY '* NECESSARY. ' UPON CONSOLE DISPLAY '**************************************' UPON CONSOLE MOVE 'INVALID FI-SVP-RTL-QTY DETECTED. SEE MESSAGE ABOVE' TO WS-ERR-MSG1 MOVE 16 TO WS-ABEND-CD PERFORM 9999-ABEND
  • 11. . ****************************************************************** 911-INVALID-TRANS-TYPE-MSG. ****************************************************************** DISPLAY '**************************************' UPON CONSOLE DISPLAY '* INVALID POS TRANS TYPE DETECTED ON ' UPON CONSOLE DISPLAY '* SCFRNS2I INPUT. VALUE DETECTED ' UPON CONSOLE DISPLAY '* WAS: ' FP-POS-TRANS-TYPE UPON CONSOLE DISPLAY '* FATAL ERROR. PROCESSING CANNOT ' UPON CONSOLE DISPLAY '* CONTINUE. PROGRAMMER INVESTIGATION ' UPON CONSOLE DISPLAY '* NECESSARY. ' UPON CONSOLE DISPLAY '**************************************' UPON CONSOLE MOVE 'INVALID FI-POS-TRANS-TYPE DETECTED. SEE MESSAGE ABOVE' TO WS-ERR-MSG1 MOVE 16 TO WS-ABEND-CD PERFORM 9999-ABEND . ****************************************************************** 9000-TERMINATE. ****************************************************************** IF WS-SCSALE-OUT-CNT > 0 PERFORM 310-B-REC-TKT PERFORM 320-BB-REC-CUST PERFORM 330-BD-REC-PAYMENT IF WS-SLTKT-NBR-DSCNT > ZERO PERFORM 340-BE-REC-DISCOUNT END-IF * do the write to the control file with the next avail tkt nbr * to set up for the next run PERFORM 830-WRITE-CONTROL-FILE * decrement the tkt nbr var to show the range we actually used * in the current run SUBTRACT 1 FROM WS-TKT-NBR GIVING WS-END-TKT-NBR DISPLAY 'TKT NBR RANGE USED FROM VSAM SCCTRL FILE:' UPON CONSOLE MOVE WS-START-TKT-NBR TO WS-DISPLAY-S9999999 DISPLAY 'FROM: ' WS-DISPLAY-S9999999 UPON CONSOLE MOVE WS-END-TKT-NBR TO WS-DISPLAY-S9999999 DISPLAY ' TO: ' WS-DISPLAY-S9999999 UPON CONSOLE DISPLAY '-----------------------------------------------' UPON CONSOLE ELSE DISPLAY 'NO TKT NBRS USED FROM VSAM SCCTRL FILE DUE TO EMP - 'TY INPUT FILE' UPON CONSOLE DISPLAY '-----------------------------------------------' UPON CONSOLE END-IF MOVE WS-SCFRNSR2-IN-CNT TO SYSOUT-NBR MOVE 'TOTAL SCFRNS2I RECS READ' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE MOVE WS-SCSALE-OUT-CNT TO SYSOUT-NBR MOVE 'TOTAL SCSALEO RECS WRITTEN SHOULD FOOT WITH REC TYPE TO - 'TALS BELOW' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE DISPLAY '-----------------------------------------------' UPON CONSOLE MOVE WS-B-REC-OUT-CNT TO SYSOUT-NBR
  • 12. MOVE 'TOTAL B TYPE RECS WRITTEN' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE MOVE WS-BB-REC-OUT-CNT TO SYSOUT-NBR MOVE 'TOTAL BB TYPE RECS WRITTEN' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE MOVE WS-BD-REC-OUT-CNT TO SYSOUT-NBR MOVE 'TOTAL BD TYPE RECS WRITTEN' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE MOVE WS-BE-REC-OUT-CNT TO SYSOUT-NBR MOVE 'TOTAL BE TYPE RECS WRITTEN' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE MOVE WS-BF-REC-OUT-CNT TO SYSOUT-NBR MOVE 'TOTAL BF TYPE RECS WRITTEN' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE MOVE WS-BFA-REC-OUT-CNT TO SYSOUT-NBR MOVE 'TOTAL BFA TYPE RECS WRITTEN' TO SYSOUT-MSG DISPLAY SYSOUT-TOTAL-LINE UPON CONSOLE DISPLAY '-----------------------------------------------' UPON CONSOLE CLOSE SCFRNSR2-IN SCSALE-OUT CONTROL-FILE . ****************************************************************** 9999-ABEND. ****************************************************************** DISPLAY '***********************************************' UPON CONSOLE DISPLAY '** ABEND TAKEN BY USER PROGRAM ' UPON CONSOLE DISPLAY '** ' MODULE-LIT-NAME-AUD UPON CONSOLE DISPLAY '**' UPON CONSOLE DISPLAY '** MSG : ' WS-ERR-MSG1 UPON CONSOLE DISPLAY '** MSG : ' WS-ERR-MSG2 UPON CONSOLE DISPLAY '** MSG : ' WS-ERR-MSG3 UPON CONSOLE DISPLAY '** MSG : ' WS-ERR-MSG4 UPON CONSOLE DISPLAY '** ' UPON CONSOLE DISPLAY '***********************************************' UPON CONSOLE MOVE 0 TO WS-TIMING CALL "CEE3ABD" USING WS-ABEND-CD , WS-TIMING .