0% found this document useful (0 votes)
41 views16 pages

ABC

The document describes a PROCESS TEST program that extracts data from a DCAP file and formats it for SAP. It includes sections to open and close files, process the data, and handle errors. Key variables and data structures are also defined.

Uploaded by

rizwansurti1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views16 pages

ABC

The document describes a PROCESS TEST program that extracts data from a DCAP file and formats it for SAP. It includes sections to open and close files, process the data, and handle errors. Key variables and data structures are also defined.

Uploaded by

rizwansurti1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 16

PROCESS TEST(SYM)

ID DIVISION.
PROGRAM-ID. ERP0103 INITIAL.
AUTHOR. HEMANT GROVER ([email protected])
*---------------------------------------------------------------*
* *
*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