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
.