MFmainframe-rea
WS carddemo · 26f629ef

cobol · 386 lines · sha256 309468a5c4745f92 · guides at columns 7 and 72app/app-authorization-ims-db2-mq/cbl/CBPAUP0C.cbl

1 ******************************************************************
2 * Program : CBPAUP0C.CBL
3 * Application : CardDemo - Authorization Module
4 * Type : BATCH COBOL IMS Program
5 * Function : Delete Expired Pending Authoriation Messages
6 ******************************************************************
7 * Copyright Amazon.com, Inc. or its affiliates.
8 * All Rights Reserved.
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License").
11 * You may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing,
17 * software distributed under the License is distributed on an
18 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
19 * either express or implied. See the License for the specific
20 * language governing permissions and limitations under the License
21 ******************************************************************
22 IDENTIFICATION DIVISION.
23 PROGRAM-ID. CBPAUP0C.
24 AUTHOR. AWS.
25
26 ENVIRONMENT DIVISION.
27 CONFIGURATION SECTION.
28
29 INPUT-OUTPUT SECTION.
30 FILE-CONTROL.
31 *
32 *----------------------------------------------------------------*
33 DATA DIVISION.
34 *----------------------------------------------------------------*
35 *
36 FILE SECTION.
37 *
38 *----------------------------------------------------------------*
39 WORKING-STORAGE SECTION.
40 *----------------------------------------------------------------*
41 01 WS-VARIABLES.
42 05 WS-PGMNAME PIC X(08) VALUE 'CBPAUP0C'.
43 05 CURRENT-DATE PIC 9(06).
44 05 CURRENT-YYDDD PIC 9(05).
45 05 WS-AUTH-DATE PIC 9(05).
46 05 WS-EXPIRY-DAYS PIC S9(4) COMP.
47 05 WS-DAY-DIFF PIC S9(4) COMP.
48 05 IDX PIC S9(4) COMP.
49 05 WS-CURR-APP-ID PIC 9(11).
50 *
51 05 WS-NO-CHKP PIC 9(8) VALUE 0.
52 05 WS-AUTH-SMRY-PROC-CNT PIC 9(8) VALUE 0.
53 05 WS-TOT-REC-WRITTEN PIC S9(8) COMP VALUE 0.
54 05 WS-NO-SUMRY-READ PIC S9(8) COMP VALUE 0.
55 05 WS-NO-SUMRY-DELETED PIC S9(8) COMP VALUE 0.
56 05 WS-NO-DTL-READ PIC S9(8) COMP VALUE 0.
57 05 WS-NO-DTL-DELETED PIC S9(8) COMP VALUE 0.
58 *
59 05 WS-ERR-FLG PIC X(01) VALUE 'N'.
60 88 ERR-FLG-ON VALUE 'Y'.
61 88 ERR-FLG-OFF VALUE 'N'.
62 05 WS-END-OF-AUTHDB-FLAG PIC X(01) VALUE 'N'.
63 88 END-OF-AUTHDB VALUE 'Y'.
64 88 NOT-END-OF-AUTHDB VALUE 'N'.
65 05 WS-MORE-AUTHS-FLAG PIC X(01) VALUE 'N'.
66 88 MORE-AUTHS VALUE 'Y'.
67 88 NO-MORE-AUTHS VALUE 'N'.
68 05 WS-QUALIFY-DELETE-FLAG PIC X(01) VALUE 'N'.
69 88 QUALIFIED-FOR-DELETE VALUE 'Y'.
70 88 NOT-QUALIFIED-FOR-DELETE VALUE 'N'.
71 05 WS-INFILE-STATUS PIC X(02) VALUE SPACES.
72 05 WS-CUSTID-STATUS PIC X(02) VALUE SPACES.
73 88 END-OF-FILE VALUE '10'.
74 *
75 05 WK-CHKPT-ID.
76 10 FILLER PIC X(04) VALUE 'RMAD'.
77 10 WK-CHKPT-ID-CTR PIC 9(04) VALUE ZEROES.
78 *
79 01 WS-IMS-VARIABLES.
80 05 PSB-NAME PIC X(8) VALUE 'PSBPAUTB'.
81 05 PCB-OFFSET.
82 10 PAUT-PCB-NUM PIC S9(4) COMP VALUE +2.
83 05 IMS-RETURN-CODE PIC X(02).
84 88 STATUS-OK VALUE ' ', 'FW'.
85 88 SEGMENT-NOT-FOUND VALUE 'GE'.
86 88 DUPLICATE-SEGMENT-FOUND VALUE 'II'.
87 88 WRONG-PARENTAGE VALUE 'GP'.
88 88 END-OF-DB VALUE 'GB'.
89 88 DATABASE-UNAVAILABLE VALUE 'BA'.
90 88 PSB-SCHEDULED-MORE-THAN-ONCE VALUE 'TC'.
91 88 COULD-NOT-SCHEDULE-PSB VALUE 'TE'.
92 88 RETRY-CONDITION VALUE 'BA', 'FH', 'TE'.
93 05 WS-IMS-PSB-SCHD-FLG PIC X(1).
94 88 IMS-PSB-SCHD VALUE 'Y'.
95 88 IMS-PSB-NOT-SCHD VALUE 'N'.
96
97 *
98 01 PRM-INFO.
99 05 P-EXPIRY-DAYS PIC 9(02).
100 05 FILLER PIC X(01).
101 05 P-CHKP-FREQ PIC X(05).
102 05 FILLER PIC X(01).
103 05 P-CHKP-DIS-FREQ PIC X(05).
104 05 FILLER PIC X(01).
105 05 P-DEBUG-FLAG PIC X(01).
106 88 DEBUG-ON VALUE 'Y'.
107 88 DEBUG-OFF VALUE 'N'.
108 05 FILLER PIC X(01).
109 *
110 *
111 *----------------------------------------------------------------*
112 * IMS SEGMENT LAYOUT
113 *----------------------------------------------------------------*
114
115 *- PENDING AUTHORIZATION SUMMARY SEGMENT - ROOT
116 01 PENDING-AUTH-SUMMARY.
117 COPY CIPAUSMY.
118
119 *- PENDING AUTHORIZATION DETAILS SEGMENT - CHILD
120 01 PENDING-AUTH-DETAILS.
121 COPY CIPAUDTY.
122
123 *
124 *----------------------------------------------------------------*
125 LINKAGE SECTION.
126 *----------------------------------------------------------------*
127 * PCB MASKS FOLLOW
128 01 IO-PCB-MASK PIC X.
129 01 PGM-PCB-MASK PIC X.
130 *
131 *----------------------------------------------------------------*
132 PROCEDURE DIVISION USING IO-PCB-MASK
133 PGM-PCB-MASK.
134 *----------------------------------------------------------------*
135 *
136 MAIN-PARA.
137 *
138 PERFORM 1000-INITIALIZE THRU 1000-EXIT
139 *
140 PERFORM 2000-FIND-NEXT-AUTH-SUMMARY THRU 2000-EXIT
141
142 PERFORM UNTIL ERR-FLG-ON OR END-OF-AUTHDB
143
144 PERFORM 3000-FIND-NEXT-AUTH-DTL THRU 3000-EXIT
145
146 PERFORM UNTIL NO-MORE-AUTHS
147 PERFORM 4000-CHECK-IF-EXPIRED THRU 4000-EXIT
148
149 IF QUALIFIED-FOR-DELETE
150 PERFORM 5000-DELETE-AUTH-DTL THRU 5000-EXIT
151 END-IF
152
153 PERFORM 3000-FIND-NEXT-AUTH-DTL THRU 3000-EXIT
154 END-PERFORM
155
156 IF PA-APPROVED-AUTH-CNT <= 0 AND PA-APPROVED-AUTH-CNT <= 0
157 PERFORM 6000-DELETE-AUTH-SUMMARY THRU 6000-EXIT
158 END-IF
159
160 IF WS-AUTH-SMRY-PROC-CNT > P-CHKP-FREQ
161 PERFORM 9000-TAKE-CHECKPOINT THRU 9000-EXIT
162
163 MOVE 0 TO WS-AUTH-SMRY-PROC-CNT
164 END-IF
165 PERFORM 2000-FIND-NEXT-AUTH-SUMMARY THRU 2000-EXIT
166
167 END-PERFORM
168 *
169 PERFORM 9000-TAKE-CHECKPOINT THRU 9000-EXIT
170 *
171 DISPLAY ' '
172 DISPLAY '*-------------------------------------*'
173 DISPLAY '# TOTAL SUMMARY READ :' WS-NO-SUMRY-READ
174 DISPLAY '# SUMMARY REC DELETED :' WS-NO-SUMRY-DELETED
175 DISPLAY '# TOTAL DETAILS READ :' WS-NO-DTL-READ
176 DISPLAY '# DETAILS REC DELETED :' WS-NO-DTL-DELETED
177 DISPLAY '*-------------------------------------*'
178 DISPLAY ' '
179 *
180 GOBACK.
181 *
182 *----------------------------------------------------------------*
183 1000-INITIALIZE.
184 *----------------------------------------------------------------*
185 *
186 ACCEPT CURRENT-DATE FROM DATE
187 ACCEPT CURRENT-YYDDD FROM DAY
188
189 ACCEPT PRM-INFO FROM SYSIN
190 DISPLAY 'STARTING PROGRAM CBPAUP0C::'
191 DISPLAY '*-------------------------------------*'
192 DISPLAY 'CBPAUP0C PARM RECEIVED :' PRM-INFO
193 DISPLAY 'TODAYS DATE :' CURRENT-YYDDD
194 DISPLAY ' '
195
196 IF P-EXPIRY-DAYS IS NUMERIC
197 MOVE P-EXPIRY-DAYS TO WS-EXPIRY-DAYS
198 ELSE
199 MOVE 5 TO WS-EXPIRY-DAYS
200 END-IF
201 IF P-CHKP-FREQ = SPACES OR 0 OR LOW-VALUES
202 MOVE 5 TO P-CHKP-FREQ
203 END-IF
204 IF P-CHKP-DIS-FREQ = SPACES OR 0 OR LOW-VALUES
205 MOVE 10 TO P-CHKP-DIS-FREQ
206 END-IF
207 IF P-DEBUG-FLAG NOT = 'Y'
208 MOVE 'N' TO P-DEBUG-FLAG
209 END-IF
210 .
211 *
212 1000-EXIT.
213 EXIT.
214 *
215 *----------------------------------------------------------------*
216 2000-FIND-NEXT-AUTH-SUMMARY.
217 *----------------------------------------------------------------*
218 *
219 IF DEBUG-ON
220 DISPLAY 'DEBUG: AUTH SMRY READ : ' WS-NO-SUMRY-READ
221 END-IF
222
223 EXEC DLI GN USING PCB(PAUT-PCB-NUM)
224 SEGMENT (PAUTSUM0)
225 INTO (PENDING-AUTH-SUMMARY)
226 END-EXEC
227
228 EVALUATE DIBSTAT
229 WHEN ' '
230 SET NOT-END-OF-AUTHDB TO TRUE
231 ADD 1 TO WS-NO-SUMRY-READ
232 ADD 1 TO WS-AUTH-SMRY-PROC-CNT
233 MOVE PA-ACCT-ID TO WS-CURR-APP-ID
234 WHEN 'GB'
235 SET END-OF-AUTHDB TO TRUE
236 WHEN OTHER
237 DISPLAY 'AUTH SUMMARY READ FAILED :' DIBSTAT
238 DISPLAY 'SUMMARY READ BEFORE ABEND :'
239 WS-NO-SUMRY-READ
240 PERFORM 9999-ABEND
241 END-EVALUATE
242 .
243 2000-EXIT.
244 EXIT.
245 *
246 *
247 *----------------------------------------------------------------*
248 3000-FIND-NEXT-AUTH-DTL.
249 *----------------------------------------------------------------*
250 *
251 IF DEBUG-ON
252 DISPLAY 'DEBUG: AUTH DTL READ : ' WS-NO-DTL-READ
253 END-IF
254
255 EXEC DLI GNP USING PCB(PAUT-PCB-NUM)
256 SEGMENT (PAUTDTL1)
257 INTO (PENDING-AUTH-DETAILS)
258 END-EXEC
259 EVALUATE DIBSTAT
260 WHEN ' '
261 SET MORE-AUTHS TO TRUE
262 ADD 1 TO WS-NO-DTL-READ
263 WHEN 'GE'
264 WHEN 'GB'
265 SET NO-MORE-AUTHS TO TRUE
266 WHEN OTHER
267 DISPLAY 'AUTH DETAIL READ FAILED :' DIBSTAT
268 DISPLAY 'SUMMARY AUTH APP ID :' PA-ACCT-ID
269 DISPLAY 'DETAIL READ BEFORE ABEND :' WS-NO-DTL-READ
270 PERFORM 9999-ABEND
271 END-EVALUATE
272 .
273 3000-EXIT.
274 EXIT.
275 *
276 *----------------------------------------------------------------*
277 4000-CHECK-IF-EXPIRED.
278 *----------------------------------------------------------------*
279 *
280 COMPUTE WS-AUTH-DATE = 99999 - PA-AUTH-DATE-9C
281
282 COMPUTE WS-DAY-DIFF = CURRENT-YYDDD - WS-AUTH-DATE
283
284 IF WS-DAY-DIFF >= WS-EXPIRY-DAYS
285 SET QUALIFIED-FOR-DELETE TO TRUE
286
287 IF PA-AUTH-RESP-CODE = '00'
288 SUBTRACT 1 FROM PA-APPROVED-AUTH-CNT
289 SUBTRACT PA-APPROVED-AMT FROM PA-APPROVED-AUTH-AMT
290 ELSE
291 SUBTRACT 1 FROM PA-DECLINED-AUTH-CNT
292 SUBTRACT PA-TRANSACTION-AMT FROM PA-DECLINED-AUTH-AMT
293 END-IF
294 ELSE
295 SET NOT-QUALIFIED-FOR-DELETE TO TRUE
296 END-IF
297
298 .
299 4000-EXIT.
300 EXIT.
301 *
302 *----------------------------------------------------------------*
303 5000-DELETE-AUTH-DTL.
304 *----------------------------------------------------------------*
305 *
306 IF DEBUG-ON
307 DISPLAY 'DEBUG: AUTH DTL DLET : ' PA-ACCT-ID
308 END-IF
309
310 EXEC DLI DLET USING PCB(PAUT-PCB-NUM)
311 SEGMENT (PAUTDTL1)
312 FROM (PENDING-AUTH-DETAILS)
313 END-EXEC
314
315 IF DIBSTAT = SPACES
316 ADD 1 TO WS-NO-DTL-DELETED
317 ELSE
318 DISPLAY 'AUTH DETAIL DELETE FAILED :' DIBSTAT
319 DISPLAY 'AUTH APP ID :' PA-ACCT-ID
320 PERFORM 9999-ABEND
321 END-IF
322
323 .
324 5000-EXIT.
325 EXIT.
326 *
327 *----------------------------------------------------------------*
328 6000-DELETE-AUTH-SUMMARY.
329 *----------------------------------------------------------------*
330 *
331 IF DEBUG-ON
332 DISPLAY 'DEBUG: AUTH SMRY DLET : ' PA-ACCT-ID
333 END-IF
334
335 EXEC DLI DLET USING PCB(PAUT-PCB-NUM)
336 SEGMENT (PAUTSUM0)
337 FROM (PENDING-AUTH-SUMMARY)
338 END-EXEC
339
340 IF DIBSTAT = SPACES
341 ADD 1 TO WS-NO-SUMRY-DELETED
342 ELSE
343 DISPLAY 'AUTH SUMMARY DELETE FAILED :' DIBSTAT
344 DISPLAY 'AUTH APP ID :' PA-ACCT-ID
345 PERFORM 9999-ABEND
346 END-IF
347 .
348 6000-EXIT.
349 EXIT.
350 *
351 *----------------------------------------------------------------*
352 9000-TAKE-CHECKPOINT.
353 *----------------------------------------------------------------*
354 *
355 EXEC DLI CHKP ID(WK-CHKPT-ID)
356 END-EXEC
357 *
358 IF DIBSTAT = SPACES
359 ADD 1 TO WS-NO-CHKP
360 IF WS-NO-CHKP >= P-CHKP-DIS-FREQ
361 MOVE 0 TO WS-NO-CHKP
362 DISPLAY 'CHKP SUCCESS: AUTH COUNT - ' WS-NO-SUMRY-READ
363 ', APP ID - ' WS-CURR-APP-ID
364 END-IF
365 ELSE
366 DISPLAY 'CHKP FAILED: DIBSTAT - ' DIBSTAT
367 ', REC COUNT - ' WS-NO-SUMRY-READ
368 ', APP ID - ' WS-CURR-APP-ID
369 PERFORM 9999-ABEND
370 END-IF
371 *
372 .
373 9000-EXIT.
374 EXIT.
375 *
376 *----------------------------------------------------------------*
377 9999-ABEND.
378 *----------------------------------------------------------------*
379 *
380 DISPLAY 'CBPAUP0C ABENDING ...'
381
382 MOVE 16 TO RETURN-CODE
383 GOBACK.
384 *
385 9999-EXIT.
386 EXIT.