You are on page 1of 16

PROCESS TEST(SYM)

ID DIVISION.
PROGRAM-ID. ERP0103 INITIAL.
AUTHOR. HEMANT GROVER (SVERP64@SAUDIAIRLINES.COM.SA)
*---------------------------------------------------------------*
* *
*REMARKS. EXTRACT DATA FROM DCAP FILE AND FORMAT TO SAP *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-370.
OBJECT-COMPUTER. IBM-370.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT DCAP-IN ASSIGN TO DCAPIN
FILE STATUS IS FS-IN.
SELECT DCAP-OUT ASSIGN TO DCAPOUT
FILE STATUS IS FS-OUT.
DATA DIVISION.
FILE SECTION.
FD DCAP-IN
BLOCK CONTAINS 0
RECORD CONTAINS 900
RECORDING MODE F
LABEL RECORDS STANDARD.
01 DCAP-REC.
05 COMMON-REC.
10 FILLER PIC X(16).
10 INITIAL-CODE PIC X(01).
10 FILLER PIC X(01).
05 COMMON-REC2 PIC X(60).
05 DATA-REC.
10 FILLER PIC X(822).
FD DCAP-OUT
BLOCK CONTAINS 0
RECORD CONTAINS 198
RECORDING MODE F
LABEL RECORD STANDARD
DATA RECORD DCAP-OUT-REC.
01 DCAP-OUT-REC PIC X(198).
WORKING-STORAGE SECTION.

*--------------------------------------------------*
* WS DCAPTURE-1 *
*--------------------------------------------------*
01 WS-DCAP-1.
COPY DCAPTUR1.
*--------------------------------------------------*
* WS DCAPTURE-2 *
*--------------------------------------------------*
01 WS-DCAP-2.
COPY DCAPTUR2.
*--------------------------------------------------*
* WS DCAPTURE-3 *
*--------------------------------------------------*
01 WS-DCAP-3.
COPY DCAPTUR3.
*--------------------------------------------------*
* WS FILE STATUS *
*--------------------------------------------------*
01 WS-FILE-STATUS.
05 FS-IN PIC 9(02) VALUE ZERO.
05 FS-OUT PIC 9(02) VALUE ZERO.
*--------------------------------------------------*
* WS SWITCHES *
*--------------------------------------------------*
01 WS-SWITCHES.
05 WS-EOF-FLAG PIC X(01) VALUE 'N'.
88 WS-EOF-YES VALUE 'Y'.
88 WS-EOF-NO VALUE 'N'.
05 WS-FILE-OPEN-FLAG PIC X(01) VALUE 'Y'.
88 WS-FILE-OPEN-YES VALUE 'Y'.
88 WS-FILE-OPEN-NO VALUE 'N'.
05 WS-READ-FLAG PIC X(01) VALUE 'Y'.
88 WS-READ-YES VALUE 'Y'.
88 WS-READ-NO VALUE 'N'.
05 WS-TAX-FND-FLAG PIC X(01) VALUE 'N'.
88 WS-TAX-FND-YES VALUE 'Y'.
88 WS-TAX-FND-NO VALUE 'N'.
05 WS-TAX-END-FLAG PIC X(01) VALUE 'N'.
88 WS-TAX-END-YES VALUE 'Y'.
88 WS-TAX-END-NO VALUE 'N'.
05 WS-UR-FND-FLAG PIC X(01) VALUE 'N'.
88 WS-UR-FND-YES VALUE 'Y'.
88 WS-UR-FND-NO VALUE 'N'.
05 WS-YQ-FND-FLAG PIC X(01) VALUE 'N'.
88 WS-YQ-FND-YES VALUE 'Y'.
88 WS-YQ-FND-NO VALUE 'N'.
05 WS-XT-FND-FLAG PIC X(01) VALUE 'N'.
88 WS-XT-FND-YES VALUE 'Y'.
88 WS-XT-FND-NO VALUE 'N'.
05 WS-SPLIT-REC-FLAG PIC X(01) VALUE 'N'.
88 WS-SPLIT-YES VALUE 'Y'.
88 WS-SPLIT-NO VALUE 'N'.
05 WS-SQL-ERROR-FLAG PIC X(01) VALUE 'N'.
88 WS-SQL-ERROR-YES VALUE 'Y'.
88 WS-SQL-ERROR-NO VALUE 'N'.
05 WS-F-REC-FLAG PIC X(01) VALUE 'Y'.
88 WS-F-REC-YES VALUE 'Y'.
88 WS-F-REC-NO VALUE 'N'.
*--------------------------------------------------*
* WS VARIABLES *
*--------------------------------------------------*
01 WS-VARS.
05 WS-TEMP-TKT PIC X(13).
05 WS-TEMP-IATA PIC X(07) VALUE SPACES.
05 WS-TEMP-DATE PIC X(10) VALUE SPACES.
05 WS-TEMP-AMT PIC S9(09)V9(02) COMP-3.
05 WS-TEMP-UR PIC S9(09)V9(02) COMP-3.
05 WS-TEMP-YQ PIC S9(09)V9(02) COMP-3.
05 WS-TEMP-XT PIC S9(09)V9(02) COMP-3.
05 WS-TEMP-SUNDRY PIC S9(09)V9(02) COMP-3.
05 WS-TEMP-C-FEE PIC S9(09)V9(02) COMP-3.
05 WS-TEMP-TAX PIC X(18).
05 WS-REF-VAR1 PIC 9(03).
05 WS-REF-VAR2 PIC 9(03).
05 WS-TAX-CODE.
10 WS-TAX-CD PIC X(02).
10 FILLER PIC X(01) VALUE SPACES.
05 WS-FARE-CAL PIC X(244).
05 WS-TEMP-CC-AREA PIC X(900).
01 COUNT-FIELDS.
05 TOT-RECS-READ PIC S9(9) VALUE ZERO
SIGN LEADING SEPARATE.
05 TOT-RECS-WRITTEN PIC S9(9) VALUE ZERO
SIGN LEADING SEPARATE.
EXEC SQL INCLUDE ERPC0000 END-EXEC.
EXEC SQL INCLUDE SQLCA END-EXEC.
01 WS-SALES-LOCATION PIC X(03).
01 WS-DATE-OF-SALE.
05 DB-ISSUE-CC PIC X(02).
05 DB-ISSUE-YY PIC X(02).
05 FILLER PIC X(01) VALUE '-'.
05 DB-ISSUE-MM PIC X(02).
05 FILLER PIC X(01) VALUE '-'.
05 DB-ISSUE-DD PIC X(02).
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 HOST-DATE-OF-SALE PIC X(10).
EXEC SQL END DECLARE SECTION END-EXEC.
PROCEDURE DIVISION.
0000-MAIN-PARA.
PERFORM 1000-OPEN-FILES-PARA
THRU 1000-OPEN-FILES-EXIT.
PERFORM 2000-PROCESS-PARA
THRU 2000-PROCESS-EXIT.
PERFORM 3000-CLOSE-FILES-PARA
THRU 3000-CLOSE-FILES-EXIT.
PERFORM 9999-FINALIZE-PARA
THRU 9999-FINALIZE-EXIT.
GOBACK.
1000-OPEN-FILES-PARA.
DISPLAY '********************************'.
DISPLAY ' PROGRAM - ERP0103'.
OPEN INPUT DCAP-IN
OUTPUT DCAP-OUT.
IF FS-IN NOT = 0 OR FS-OUT NOT = 0
DISPLAY 'OPEN FAILED'
DISPLAY 'DCAP-IN STATUS : ' FS-IN
DISPLAY 'DCAP-OUT STATUS : ' FS-OUT
SET WS-FILE-OPEN-NO TO TRUE
ELSE
DISPLAY 'FILES OPENED'
INITIALIZE WS-OUT-REC
WS-DATE-OF-SALE
END-IF.
1000-OPEN-FILES-EXIT.
EXIT.
2000-PROCESS-PARA.
IF WS-FILE-OPEN-YES THEN
PERFORM 4500-HEADER-PARA
THRU 4500-HEADER-EXIT
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
PERFORM UNTIL WS-EOF-YES
OR WS-SQL-ERROR-YES
EVALUATE INITIAL-CODE
WHEN 'A'
MOVE COMMON-REC TO I-DATA-COMMON
MOVE COMMON-REC2 TO I-DATA-COMMN2
MOVE DATA-REC TO I-DATA-TICKET
IF I-TCKT-TYPE-INDIC = 'X' OR
I-TCKT-TYPE-INDIC = 'M' THEN
PERFORM 3110-PROCESS-X-PARA
THRU 3110-PROCESS-X-EXIT
ELSE
IF I-TCKT-USAGE-INDIC = 'C'
OR I-TCKT-USAGE-INDIC = 'N'
OR I-TCKT-USAGE-INDIC = 'V' THEN
CONTINUE
ELSE
PERFORM 3100-PROCESS-A-PARA
THRU 3100-PROCESS-A-EXIT
END-IF
END-IF
WHEN 'F'
MOVE COMMON-REC TO I-DATA-COMMON
MOVE COMMON-REC2 TO I-DATA-COMMN2
MOVE DATA-REC TO I-DATA-COUPON
IF COUPON-USAGE-REFUND THEN
PERFORM 3150-PROCESS-F-PARA
THRU 3150-PROCESS-F-EXIT
END-IF
END-EVALUATE
IF WS-READ-YES
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
ELSE
SET WS-READ-YES TO TRUE
END-IF
END-PERFORM
PERFORM 5000-TRAILER-PARA
THRU 5000-TRAILER-EXIT
END-IF.
2000-PROCESS-EXIT.
EXIT.
3000-CLOSE-FILES-PARA.
IF WS-FILE-OPEN-YES THEN
CLOSE DCAP-IN
DCAP-OUT
IF FS-IN NOT = 0 OR FS-OUT NOT = 0
DISPLAY 'CLOSE FAILED'
DISPLAY 'ATSR-IN STATUS : ' FS-IN
DISPLAY 'AR-OUT STATUS : ' FS-OUT
SET WS-FILE-OPEN-NO TO TRUE
ELSE
DISPLAY 'FILES CLOSED'
END-IF
END-IF.
3000-CLOSE-FILES-EXIT.
EXIT.
3100-PROCESS-A-PARA.
MOVE I-AGENT-NO TO BKPF-NEWKO
IATA-CODE.
IF I-TCKT-ISSUE-YEAR <= 50 THEN
MOVE '20' TO CC
ELSE
MOVE '19' TO CC
END-IF.
MOVE I-TCKT-ISSUE-DATE TO BKPF-BLDAT.
MOVE I-TCKT-FARE-CALCULATION TO WS-FARE-CAL.
IF I-NET-REV-SALES-VAL > 0 THEN
MOVE I-NET-REV-SALES-VAL TO RN-AMT
END-IF.
IF WS-TEMP-IATA NOT = IATA-CODE
OR HOST-DATE-OF-SALE NOT = WS-DATE-OF-SALE
MOVE CC TO DB-ISSUE-CC
MOVE YY TO DB-ISSUE-YY
MOVE MM TO DB-ISSUE-MM
MOVE DD TO DB-ISSUE-DD
MOVE WS-DATE-OF-SALE TO HOST-DATE-OF-SALE
MOVE IATA-CODE TO WS-TEMP-IATA
PERFORM 8050-GET-REV-REF-PARA
THRU 8050-GET-REV-REF-EXIT
END-IF.
MOVE '/' TO SLASH.
MOVE WS-SALES-LOCATION TO REV-REF.
IF WS-SQL-ERROR-NO THEN
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
IF INITIAL-CODE = 'C' AND
(DCAP-REC (56:2) = 'CC' OR
DCAP-REC (56:2) = 'GR' OR
DCAP-REC (56:2) = 'IN' OR
DCAP-REC (56:2) = 'EP' OR
DCAP-REC (56:2) = 'ES' OR
DCAP-REC (56:2) = 'CP')
MOVE DCAP-REC TO WS-DCAP-3
IF I-TCKT-FORM-OF-PYMT-AMT >=
I-SOLD-TCKT-VAL-NET-LOCL-CRY
OR I-TCKT-FORM-OF-PYMT-AMT = 0
PERFORM 3300-PROCESS-CC-PARA
THRU 3300-PROCESS-CC-EXIT
ELSE
SET WS-SPLIT-YES TO TRUE
PERFORM 3350-PROCESS-SPLIT-PARA
THRU 3350-PROCESS-SPLIT-EXIT
SET WS-SPLIT-NO TO TRUE
END-IF
ELSE
SET WS-READ-NO TO TRUE
PERFORM 3200-PROCESS-CASH-PARA
THRU 3200-PROCESS-CASH-EXIT
END-IF
END-IF.
3100-PROCESS-A-EXIT.
EXIT.
3110-PROCESS-X-PARA.
MOVE I-AGENT-NO TO BKPF-NEWKO
IATA-CODE.
IF I-TCKT-ISSUE-YEAR <= 50 THEN
MOVE '20' TO CC
ELSE
MOVE '19' TO CC
END-IF.
MOVE I-TCKT-ISSUE-DATE TO BKPF-BLDAT.
IF WS-TEMP-IATA NOT = IATA-CODE
OR HOST-DATE-OF-SALE NOT = WS-DATE-OF-SALE
MOVE CC TO DB-ISSUE-CC
MOVE YY TO DB-ISSUE-YY
MOVE MM TO DB-ISSUE-MM
MOVE DD TO DB-ISSUE-DD
MOVE WS-DATE-OF-SALE TO HOST-DATE-OF-SALE
MOVE IATA-CODE TO WS-TEMP-IATA
PERFORM 8050-GET-REV-REF-PARA
THRU 8050-GET-REV-REF-EXIT
END-IF.
MOVE '/' TO SLASH.
MOVE WS-SALES-LOCATION TO REV-REF.
IF WS-SQL-ERROR-NO THEN
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
IF INITIAL-CODE = 'C' THEN
MOVE DCAP-REC TO WS-DCAP-3
EVALUATE TRUE
WHEN I-SOLD-TCKT-VAL-NET-LOCL-CRY <=
I-TCKT-FORM-OF-PYMT-AMT
PERFORM 3115-PROCESS-XCC-PARA
THRU 3115-PROCESS-XCC-EXIT
WHEN I-SOLD-TCKT-VAL-NET-LOCL-CRY >
I-TCKT-FORM-OF-PYMT-AMT
COMPUTE WS-TEMP-AMT = I-SOLD-TCKT-VAL-NET-LOCL-CRY -
I-TCKT-FORM-OF-PYMT-AMT
PERFORM 3120-PROCESS-XA-PARA
THRU 3120-PROCESS-XA-EXIT
PERFORM 3115-PROCESS-XCC-PARA
THRU 3115-PROCESS-XCC-EXIT
END-EVALUATE
INITIALIZE DCAP-REC
ELSE
COMPUTE WS-TEMP-AMT = I-SOLD-TCKT-VAL-NET-LOCL-CRY
PERFORM 3120-PROCESS-XA-PARA
THRU 3120-PROCESS-XA-EXIT
SET WS-READ-NO TO TRUE
END-IF
INITIALIZE WS-OUT-REC
WS-TEMP-AMT
END-IF.
3110-PROCESS-X-EXIT.
EXIT.
3115-PROCESS-XCC-PARA.
IF I-TCKT-FORM-OF-PYMT-CODE = 'CC'
MOVE I-CRED-DOC-REF (1:2) TO BKPF-NEWKO
COMPANY
MOVE '/' TO SLASH1
SLASH2
MOVE I-CRED-DOC-REF (3:) TO CARD-NO
MOVE I-CRED-APPROVAL-CODE TO APP-CODE
ELSE
MOVE I-CRED-DOC-REF TO BKPF-NEWKO
MOVE I-TCKT-GR-INV-DATE TO GTR-DATE
MOVE '/' TO SLASH3
MOVE I-TCKT-GR-INV-NUM TO GTR-NUMBER
END-IF
MOVE I-TCKT-FORM-OF-PYMT-CUR TO BKPF-WAERS
IF I-TCKT-TYPE-INDIC = 'M'
EVALUATE TRUE
WHEN I-TCKT-FORM-OF-PYMT-CODE = 'GR'
MOVE 'MG' TO BSEG-ZLSCH
WHEN I-TCKT-FORM-OF-PYMT-CODE = 'IN'
MOVE 'MI' TO BSEG-ZLSCH
WHEN OTHER
MOVE 'MC' TO BSEG-ZLSCH
END-EVALUATE
ELSE
EVALUATE TRUE
WHEN I-TCKT-FORM-OF-PYMT-CODE = 'GR'
MOVE 'XG' TO BSEG-ZLSCH
WHEN I-TCKT-FORM-OF-PYMT-CODE = 'IN'
MOVE 'XI' TO BSEG-ZLSCH
WHEN OTHER
MOVE 'XC' TO BSEG-ZLSCH
END-EVALUATE
END-IF
MOVE I-TCKT-FORM-OF-PYMT-AMT TO BSEG-WRBTR
MOVE I-TCKT-NO OF WS-DCAP-3 TO BSEG-ZUONR
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT.
3115-PROCESS-XCC-EXIT.
EXIT.
3120-PROCESS-XA-PARA.
MOVE I-LOCL-CURRENCY-CODE TO BKPF-WAERS.
IF I-TCKT-TYPE-INDIC = 'M'
MOVE 'MS' TO BSEG-ZLSCH
ELSE
MOVE 'XS' TO BSEG-ZLSCH
END-IF
MOVE WS-TEMP-AMT TO BSEG-WRBTR.
MOVE I-TCKT-GR-INV-DATE TO BSEG-ZUONR.
MOVE I-TCKT-NO OF WS-DCAP-1 TO BSEG-ZUONR
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT.
3120-PROCESS-XA-EXIT.
EXIT.
3150-PROCESS-F-PARA.
PERFORM 6000-MOVE-F-DATA-PARA
THRU 6000-MOVE-F-DATA-EXIT.
IF WS-SQL-ERROR-NO THEN
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
IF INITIAL-CODE = 'F' THEN
PERFORM UNTIL WS-F-REC-NO
OR INITIAL-CODE NOT = 'F'
OR WS-EOF-YES
MOVE COMMON-REC TO I-DATA-COMMON
MOVE COMMON-REC2 TO I-DATA-COMMN2
MOVE DATA-REC TO I-DATA-COUPON
IF WS-TEMP-TKT = I-TCKT-NO OF WS-DCAP-1
IF COUPON-USAGE-REFUND
ADD I-SV-COUPON-VAL-REFUNDS TO WS-TEMP-AMT
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
END-IF
ELSE
MOVE WS-TEMP-AMT TO BSEG-WRBTR
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT
SET WS-F-REC-NO TO TRUE
END-IF
END-PERFORM
IF INITIAL-CODE NOT = 'F' OR WS-EOF-YES THEN
MOVE WS-TEMP-AMT TO BSEG-WRBTR
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT
END-IF
ELSE
MOVE WS-TEMP-AMT TO BSEG-WRBTR
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT
END-IF
SET WS-READ-NO TO TRUE
SET WS-F-REC-YES TO TRUE
INITIALIZE WS-OUT-REC
WS-TEMP-AMT
WS-TEMP-TKT
END-IF.
3150-PROCESS-F-EXIT.
EXIT.
3200-PROCESS-CASH-PARA.
MOVE I-SOLD-TCKT-VAL-NET-LOCL-CRY TO BSEG-WRBTR.
PERFORM 6200-MOVE-CASH-DATA-PARA
THRU 6200-MOVE-CASH-DATA-EXIT.
PERFORM 3400-PROCESS-SUB-ITEM-PARA
THRU 3400-PROCESS-SUB-ITEM-EXIT.
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT.
PERFORM 7000-REFRESH-PARA
THRU 7000-REFRESH-EXIT.
3200-PROCESS-CASH-EXIT.
EXIT.
3300-PROCESS-CC-PARA.
MOVE I-AGENT-CHRG-COMMISION-AMT TO COMM-FEE.
IF I-TCKT-FORM-OF-PYMT-CODE = 'CC' OR
I-TCKT-FORM-OF-PYMT-CODE = 'ES'
MOVE I-SOLD-TCKT-VAL-NET-LOCL-CRY TO BSEG-WRBTR
ELSE
MOVE I-TCKT-FORM-OF-PYMT-AMT TO BSEG-WRBTR
END-IF.
PERFORM 6100-MOVE-CC-DATA-PARA
THRU 6100-MOVE-CC-DATA-EXIT.
PERFORM 3400-PROCESS-SUB-ITEM-PARA
THRU 3400-PROCESS-SUB-ITEM-EXIT.
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT.
PERFORM 7000-REFRESH-PARA
THRU 7000-REFRESH-EXIT.
3300-PROCESS-CC-EXIT.
EXIT.
3350-PROCESS-SPLIT-PARA.
INITIALIZE WS-TEMP-CC-AREA
WS-TEMP-SUNDRY
WS-TEMP-C-FEE.
MOVE WS-DCAP-3 TO WS-TEMP-CC-AREA.
COMPUTE BSEG-WRBTR = I-SOLD-TCKT-VAL-NET-LOCL-CRY -
I-TCKT-FORM-OF-PYMT-AMT.
PERFORM 6200-MOVE-CASH-DATA-PARA
THRU 6200-MOVE-CASH-DATA-EXIT.
PERFORM 3400-PROCESS-SUB-ITEM-PARA
THRU 3400-PROCESS-SUB-ITEM-EXIT.
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT.
INITIALIZE BKPF-NEWKO
BKPF-WAERS
BSEG-ZLSCH
BSEG-WRBTR
RN-AMT
AIRPORT-TAX
WAR-RISK-TAX
OTHER-TAX
SUNDRY-CHRG
CHANGE-FEE
COMM-FEE.
MOVE WS-TEMP-CC-AREA TO WS-DCAP-3.
MOVE WS-TEMP-SUNDRY TO SUNDRY-CHRG.
MOVE WS-TEMP-C-FEE TO CHANGE-FEE.
MOVE I-TCKT-FORM-OF-PYMT-AMT TO BSEG-WRBTR.
PERFORM 6100-MOVE-CC-DATA-PARA
THRU 6100-MOVE-CC-DATA-EXIT.
PERFORM 3500-WRITE-OUT-PARA
THRU 3500-WRITE-OUT-EXIT.
PERFORM 7000-REFRESH-PARA
THRU 7000-REFRESH-EXIT.
3350-PROCESS-SPLIT-EXIT.
EXIT.
3400-PROCESS-SUB-ITEM-PARA.
IF WS-READ-YES THEN
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
ELSE
SET WS-READ-YES TO TRUE
END-IF.
INITIALIZE WS-TEMP-UR
WS-TEMP-YQ
WS-TEMP-XT
WS-TEMP-AMT.
PERFORM UNTIL INITIAL-CODE = 'F'
OR INITIAL-CODE = 'A'
OR WS-EOF-YES
EVALUATE INITIAL-CODE
WHEN 'C'
MOVE DCAP-REC TO WS-DCAP-3
EVALUATE I-TCKT-FORM-OF-PYMT-CODE
WHEN 'S1'
MOVE I-TCKT-FORM-OF-PYMT-AMT TO SUNDRY-CHRG
WHEN 'C1'
IF WS-SPLIT-YES
MOVE I-TCKT-FORM-OF-PYMT-AMT TO WS-TEMP-SUNDRY
ELSE
MOVE I-TCKT-FORM-OF-PYMT-AMT TO SUNDRY-CHRG
END-IF
WHEN 'S2'
MOVE I-TCKT-FORM-OF-PYMT-AMT TO CHANGE-FEE
WHEN 'CF'
IF WS-SPLIT-YES
MOVE I-TCKT-FORM-OF-PYMT-AMT TO WS-TEMP-C-FEE
ELSE
MOVE I-TCKT-FORM-OF-PYMT-AMT TO CHANGE-FEE
END-IF
WHEN OTHER
MOVE I-TCKT-FORM-OF-PYMT-CODE TO BSEG-ZLSCH
END-EVALUATE
WHEN 'T'
MOVE DCAP-REC TO WS-DCAP-2
EVALUATE I-DOC-TAX-CODE
WHEN 'UR'
SET WS-UR-FND-YES TO TRUE
MOVE I-DOC-TAX-AMT TO WS-TEMP-UR
ADD I-DOC-TAX-AMT TO WS-TEMP-AMT
COMPUTE AIRPORT-TAX = I-DOC-TAX-AMT
WHEN 'YQ'
SET WS-YQ-FND-YES TO TRUE
MOVE I-DOC-TAX-AMT TO WS-TEMP-YQ
ADD I-DOC-TAX-AMT TO WS-TEMP-AMT
COMPUTE WAR-RISK-TAX = I-DOC-TAX-AMT
WHEN 'XT'
SET WS-XT-FND-YES TO TRUE
ADD I-DOC-TAX-AMT TO WS-TEMP-AMT
WHEN OTHER
ADD I-DOC-TAX-AMT TO WS-TEMP-AMT
END-EVALUATE
END-EVALUATE
PERFORM 4000-READ-PARA
THRU 4000-READ-EXIT
END-PERFORM.
IF WS-XT-FND-YES THEN
IF WS-UR-FND-NO
MOVE 'UR ' TO WS-TAX-CODE
PERFORM 8000-FIND-TAX-PARA
THRU 8000-FIND-TAX-EXIT
COMPUTE WS-TEMP-UR = FUNCTION NUMVAL(WS-TEMP-TAX)
COMPUTE AIRPORT-TAX = WS-TEMP-UR
END-IF
IF WS-YQ-FND-NO
MOVE 'YQ ' TO WS-TAX-CODE
PERFORM 8000-FIND-TAX-PARA
THRU 8000-FIND-TAX-EXIT
COMPUTE WS-TEMP-YQ = FUNCTION NUMVAL(WS-TEMP-TAX)
COMPUTE WAR-RISK-TAX = WS-TEMP-YQ
END-IF
END-IF.
COMPUTE OTHER-TAX = WS-TEMP-AMT - WS-TEMP-UR - WS-TEMP-YQ.
SET WS-UR-FND-NO TO TRUE.
SET WS-YQ-FND-NO TO TRUE.
SET WS-XT-FND-NO TO TRUE.
SET WS-READ-NO TO TRUE.
3400-PROCESS-SUB-ITEM-EXIT.
EXIT.
3500-WRITE-OUT-PARA.
WRITE DCAP-OUT-REC FROM WS-OUT-REC.
ADD 1 TO TOT-RECS-WRITTEN.
3500-WRITE-OUT-EXIT.
EXIT.
4000-READ-PARA.
READ DCAP-IN
AT END
MOVE 'Y' TO WS-EOF-FLAG
NOT AT END
IF FS-IN = 0 OR FS-IN = 04
ADD 1 TO TOT-RECS-READ
ELSE
DISPLAY 'READ FAILED'
DISPLAY 'FILE STATUS: ' FS-IN
DISPLAY 'REC NO. : ' TOT-RECS-READ
DISPLAY 'REC : ' DCAP-REC
SET WS-EOF-YES TO TRUE
END-IF.
4000-READ-EXIT.
EXIT.
4500-HEADER-PARA.
MOVE FUNCTION CURRENT-DATE (1:8) TO WS-R-DATE.
ACCEPT WS-R-TIME FROM TIME.
MOVE 'ERP0103' TO WS-PROG-NAME.
WRITE DCAP-OUT-REC FROM WS-HEADER-REC.
WRITE DCAP-OUT-REC FROM WS-COLUMN-REC.
4500-HEADER-EXIT.
EXIT.
5000-TRAILER-PARA.
MOVE TOT-RECS-WRITTEN TO WS-RECS-WRITTEN.
WRITE DCAP-OUT-REC FROM WS-FOOTER-REC.
5000-TRAILER-EXIT.
EXIT.
6000-MOVE-F-DATA-PARA.
MOVE I-AGENT-NO TO BKPF-NEWKO
IATA-CODE.
MOVE I-TCKT-TOUR-CODE (10:3) TO BKPF-WAERS.
IF I-LIFT-USAGE-COUPON-YEAR <= 20
MOVE '20' TO CC
ELSE
MOVE '19' TO CC
END-IF.
MOVE I-LIFT-USAGE-COUPON-DATE TO BKPF-BLDAT.
IF WS-TEMP-IATA NOT = IATA-CODE
OR HOST-DATE-OF-SALE NOT = WS-DATE-OF-SALE
MOVE CC TO DB-ISSUE-CC
MOVE YY TO DB-ISSUE-YY
MOVE MM TO DB-ISSUE-MM
MOVE DD TO DB-ISSUE-DD
MOVE WS-DATE-OF-SALE TO HOST-DATE-OF-SALE
MOVE IATA-CODE TO WS-TEMP-IATA
PERFORM 8050-GET-REV-REF-PARA
THRU 8050-GET-REV-REF-EXIT
END-IF.
MOVE '/' TO SLASH.
MOVE WS-SALES-LOCATION TO REV-REF.
MOVE 'RK' TO BSEG-ZLSCH.
MOVE I-SV-COUPON-VAL-REFUNDS TO WS-TEMP-AMT.
MOVE I-TCKT-NO OF WS-DCAP-1 TO BSEG-ZUONR
WS-TEMP-TKT.
6000-MOVE-F-DATA-EXIT.
EXIT.
6100-MOVE-CC-DATA-PARA.
IF I-TCKT-FORM-OF-PYMT-CODE = 'CC' OR
I-TCKT-FORM-OF-PYMT-CODE = 'EP' OR
I-TCKT-FORM-OF-PYMT-CODE = 'CP'
MOVE I-CRED-DOC-REF (1:2) TO BKPF-NEWKO
COMPANY
MOVE '/' TO SLASH1
SLASH2
MOVE I-CRED-DOC-REF (3:) TO CARD-NO
MOVE I-CRED-APPROVAL-CODE TO APP-CODE
ELSE
MOVE I-CRED-DOC-REF TO BKPF-NEWKO
END-IF.
IF I-TCKT-FORM-OF-PYMT-CODE = 'GR' OR
I-TCKT-FORM-OF-PYMT-CODE = 'IN'
MOVE I-TCKT-GR-INV-DATE TO GTR-DATE
MOVE '/' TO SLASH3
MOVE I-TCKT-GR-INV-NUM TO GTR-NUMBER
END-IF.
EVALUATE TRUE
WHEN I-ORIGINAL-ISSUE-TCKT-NO > SPACES
MOVE 'EC' TO BSEG-ZLSCH
WHEN I-TCKT-FORM-OF-PYMT-CODE = 'ES'
MOVE 'SP' TO BSEG-ZLSCH
MOVE I-AGENT-NO TO BKPF-NEWKO
WHEN OTHER
MOVE I-TCKT-FORM-OF-PYMT-CODE TO BSEG-ZLSCH
END-EVALUATE.
MOVE I-TCKT-FORM-OF-PYMT-CUR TO BKPF-WAERS.
MOVE I-TCKT-NO OF WS-DCAP-3 TO BSEG-ZUONR.
6100-MOVE-CC-DATA-EXIT.
EXIT.
6200-MOVE-CASH-DATA-PARA.
MOVE I-LOCL-CURRENCY-CODE TO BKPF-WAERS.
EVALUATE TRUE
WHEN I-ORIGINAL-ISSUE-TCKT-NO > SPACES
MOVE 'EX' TO BSEG-ZLSCH
WHEN I-TCKT-FORM-OF-PYMT-TYPE (1:2) = 'CA'
MOVE I-TCKT-FORM-OF-PYMT-TYPE (1:2) TO BSEG-ZLSCH
WHEN I-TCKT-FORM-OF-PYMT-TYPE (1:2) = 'CS'
MOVE I-TCKT-FORM-OF-PYMT-TYPE (1:2) TO BSEG-ZLSCH
WHEN OTHER
MOVE 'CA' TO BSEG-ZLSCH
END-EVALUATE.
MOVE I-AGENT-CHRG-COMMISION-AMT TO COMM-FEE.
6200-MOVE-CASH-DATA-EXIT.
EXIT.
7000-REFRESH-PARA.
INITIALIZE WS-DCAP-1
WS-DCAP-2
WS-DCAP-3
WS-OUT-REC.
7000-REFRESH-EXIT.
EXIT.
8000-FIND-TAX-PARA.
INITIALIZE WS-TEMP-TAX.
MOVE 1 TO WS-REF-VAR1.
MOVE ZEROS TO WS-TEMP-TAX.
PERFORM UNTIL WS-TAX-FND-YES
OR WS-TAX-END-YES
IF WS-FARE-CAL (WS-REF-VAR1:3) = WS-TAX-CODE
IF WS-FARE-CAL (WS-REF-VAR1 - 1 : 1) IS NUMERIC
MOVE 18 TO WS-REF-VAR2
COMPUTE WS-REF-VAR1 = WS-REF-VAR1 - 1
PERFORM UNTIL WS-TAX-FND-YES
IF WS-FARE-CAL (WS-REF-VAR1:1) IS NUMERIC
OR WS-FARE-CAL (WS-REF-VAR1:1) = '.'
MOVE WS-FARE-CAL (WS-REF-VAR1:1)
TO
WS-TEMP-TAX (WS-REF-VAR2:1)
COMPUTE WS-REF-VAR1 = WS-REF-VAR1 - 1
COMPUTE WS-REF-VAR2 = WS-REF-VAR2 - 1
ELSE
SET WS-TAX-FND-YES TO TRUE
END-IF
END-PERFORM
END-IF
END-IF
ADD 1 TO WS-REF-VAR1
IF WS-REF-VAR1 > 242
SET WS-TAX-END-YES TO TRUE
END-IF
END-PERFORM.
INSPECT WS-TEMP-TAX REPLACING ALL SPACES BY ZEROS.
INITIALIZE WS-REF-VAR1
WS-REF-VAR2.
SET WS-TAX-END-NO TO TRUE.
SET WS-TAX-FND-NO TO TRUE.
8000-FIND-TAX-EXIT.
EXIT.
8050-GET-REV-REF-PARA.
INITIALIZE WS-SALES-LOCATION.
EXEC SQL
SELECT DIST_CODE
INTO :WS-SALES-LOCATION
FROM REV.TSLNGOFC
WHERE SO_IATANBR = :IATA-CODE
AND :HOST-DATE-OF-SALE BETWEEN SO_EFF_DATE
AND SO_DISC_DATE
END-EXEC.
EVALUATE SQLCODE
WHEN 0
CONTINUE
WHEN 100
DISPLAY 'NO SALES LOCATION FOR: ' IATA-CODE
WHEN OTHER
SET WS-SQL-ERROR-YES TO TRUE
DISPLAY '***ERROR WHILE PROCESSING SQL***'
DISPLAY 'IATA CODE: ' IATA-CODE
DISPLAY 'SQL CODE: ' SQLCODE
MOVE 12 TO RETURN-CODE
END-EVALUATE.
8050-GET-REV-REF-EXIT.
EXIT.
9999-FINALIZE-PARA.
DISPLAY 'TOTAL READ : ' TOT-RECS-READ.
DISPLAY 'TOTAL RECS WRITTEN : ' TOT-RECS-WRITTEN.
DISPLAY '********************************'.
9999-FINALIZE-EXIT.
EXIT.
EJECT

You might also like