MFmainframe-rea
WS carddemo · 26f629ef

cobol · 1032 lines · sha256 7ab6dadad6d9d738 · guides at columns 7 and 72app/app-authorization-ims-db2-mq/cbl/COPAUS0C.cbl

1 ******************************************************************
2 * Program : COPAUS0C.CBL
3 * Application : CardDemo - Authorization Module
4 * Type : CICS COBOL IMS BMS Program
5 * Function : Summary View of 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. COPAUS0C.
24 AUTHOR. AWS.
25
26 ENVIRONMENT DIVISION.
27 CONFIGURATION SECTION.
28
29 DATA DIVISION.
30 WORKING-STORAGE SECTION.
31
32 01 WS-VARIABLES.
33 05 WS-PGM-AUTH-SMRY PIC X(08) VALUE 'COPAUS0C'.
34 05 WS-PGM-AUTH-DTL PIC X(08) VALUE 'COPAUS1C'.
35 05 WS-PGM-MENU PIC X(08) VALUE 'COMEN01C'.
36 05 WS-CICS-TRANID PIC X(04) VALUE 'CPVS'.
37 05 WS-MESSAGE PIC X(80) VALUE SPACES.
38 05 WS-ACCTFILENAME PIC X(8) VALUE 'ACCTDAT '.
39 05 WS-CUSTFILENAME PIC X(8) VALUE 'CUSTDAT '.
40 05 WS-CARDFILENAME PIC X(8) VALUE 'CARDDAT '.
41 05 WS-CARDXREFNAME-ACCT-PATH PIC X(8) VALUE 'CXACAIX '.
42 05 WS-CCXREF-FILE PIC X(08) VALUE 'CCXREF '.
43
44 05 WS-ACCT-ID PIC X(11).
45 05 WS-AUTH-KEY-SAVE PIC X(08).
46 05 WS-AUTH-APRV-STAT PIC X(01).
47 05 WS-RESP-CD PIC S9(09) COMP VALUE ZEROS.
48 05 WS-REAS-CD PIC S9(09) COMP VALUE ZEROS.
49 05 WS-RESP-CD-DIS PIC 9(09).
50 05 WS-REAS-CD-DIS PIC 9(09).
51 05 WS-REC-COUNT PIC S9(04) COMP VALUE ZEROS.
52 05 WS-IDX PIC S9(04) COMP VALUE ZEROS.
53 05 WS-PAGE-NUM PIC S9(04) COMP VALUE ZEROS.
54
55 05 WS-AUTH-AMT PIC -zzzzzzz9.99.
56 05 WS-DISPLAY-AMT12 PIC -zzzzzzz9.99.
57 05 WS-DISPLAY-AMT9 PIC -zzzz9.99.
58 05 WS-DISPLAY-COUNT PIC 9(03).
59 05 WS-AUTH-DATE PIC X(08) VALUE '00/00/00'.
60 05 WS-AUTH-TIME PIC X(08) VALUE '00:00:00'.
61
62 ******************************************************************
63 * File and data Handling
64 ******************************************************************
65 05 WS-XREF-RID.
66 10 WS-CARD-RID-CARDNUM PIC X(16).
67 10 WS-CARD-RID-CUST-ID PIC 9(09).
68 10 WS-CARD-RID-CUST-ID-X REDEFINES
69 WS-CARD-RID-CUST-ID PIC X(09).
70 10 WS-CARD-RID-ACCT-ID PIC 9(11).
71 10 WS-CARD-RID-ACCT-ID-X REDEFINES
72 WS-CARD-RID-ACCT-ID PIC X(11).
73
74 01 WS-IMS-VARIABLES.
75 05 PSB-NAME PIC X(8) VALUE 'PSBPAUTB'.
76 05 PCB-OFFSET.
77 10 PAUT-PCB-NUM PIC S9(4) COMP VALUE +1.
78 05 IMS-RETURN-CODE PIC X(02).
79 88 STATUS-OK VALUE ' ', 'FW'.
80 88 SEGMENT-NOT-FOUND VALUE 'GE'.
81 88 DUPLICATE-SEGMENT-FOUND VALUE 'II'.
82 88 WRONG-PARENTAGE VALUE 'GP'.
83 88 END-OF-DB VALUE 'GB'.
84 88 DATABASE-UNAVAILABLE VALUE 'BA'.
85 88 PSB-SCHEDULED-MORE-THAN-ONCE VALUE 'TC'.
86 88 COULD-NOT-SCHEDULE-PSB VALUE 'TE'.
87 88 RETRY-CONDITION VALUE 'BA', 'FH', 'TE'.
88 05 WS-IMS-PSB-SCHD-FLG PIC X(1).
89 88 IMS-PSB-SCHD VALUE 'Y'.
90 88 IMS-PSB-NOT-SCHD VALUE 'N'.
91
92
93 01 WS-SWITCHES.
94 05 WS-XREF-READ-FLG PIC X(1).
95 88 ACCT-NFOUND-XREF VALUE 'N'.
96 88 ACCT-FOUND-XREF VALUE 'Y'.
97 05 WS-ACCT-MASTER-READ-FLG PIC X(1).
98 88 FOUND-ACCT-IN-MSTR VALUE 'Y'.
99 88 NFOUND-ACCT-IN-MSTR VALUE 'N'.
100 05 WS-CUST-MASTER-READ-FLG PIC X(1).
101 88 FOUND-CUST-IN-MSTR VALUE 'Y'.
102 88 NFOUND-CUST-IN-MSTR VALUE 'N'.
103 05 WS-PAUT-SMRY-SEG-FLG PIC X(1).
104 88 FOUND-PAUT-SMRY-SEG VALUE 'Y'.
105 88 NFOUND-PAUT-SMRY-SEG VALUE 'N'.
106 05 WS-ERR-FLG PIC X(1) VALUE 'N'.
107 88 ERR-FLG-ON VALUE 'Y'.
108 88 ERR-FLG-OFF VALUE 'N'.
109 05 WS-AUTHS-EOF PIC X(1) VALUE 'N'.
110 88 AUTHS-EOF VALUE 'Y'.
111 88 AUTHS-NOT-EOF VALUE 'N'.
112 05 WS-SEND-ERASE-FLG PIC X(1) VALUE 'Y'.
113 88 SEND-ERASE-YES VALUE 'Y'.
114 88 SEND-ERASE-NO VALUE 'N'.
115
116 COPY COCOM01Y.
117 05 CDEMO-CPVS-INFO.
118 10 CDEMO-CPVS-PAU-SEL-FLG PIC X(01).
119 10 CDEMO-CPVS-PAU-SELECTED PIC X(08).
120 10 CDEMO-CPVS-PAUKEY-PREV-PG PIC X(08) OCCURS 20 TIMES.
121 10 CDEMO-CPVS-PAUKEY-LAST PIC X(08).
122 10 CDEMO-CPVS-PAGE-NUM PIC S9(04) COMP.
123 10 CDEMO-CPVS-NEXT-PAGE-FLG PIC X(01) VALUE 'N'.
124 88 NEXT-PAGE-YES VALUE 'Y'.
125 88 NEXT-PAGE-NO VALUE 'N'.
126 10 CDEMO-CPVS-AUTH-KEYS PIC X(08) OCCURS 5 TIMES.
127
128 *BMS Copybook
129 COPY COPAU00.
130
131 *Screen Titles
132 COPY COTTL01Y.
133
134 *Current Date
135 COPY CSDAT01Y.
136
137 *Common Messages
138 COPY CSMSG01Y.
139
140 *Abend Variables
141 COPY CSMSG02Y.
142
143 *ACCOUNT RECORD LAYOUT
144 COPY CVACT01Y.
145
146 *CUSTOMER RECORD LAYOUT
147 COPY CVACT02Y.
148
149 *CARD XREF LAYOUT
150 COPY CVACT03Y.
151
152 *CUSTOMER LAYOUT
153 COPY CVCUS01Y.
154
155 *----------------------------------------------------------------*
156 * IMS SEGMENT LAYOUT
157 *----------------------------------------------------------------*
158
159 *- PENDING AUTHORIZATION SUMMARY SEGMENT - ROOT
160 01 PENDING-AUTH-SUMMARY.
161 COPY CIPAUSMY.
162
163 *- PENDING AUTHORIZATION DETAILS SEGMENT - CHILD
164 01 PENDING-AUTH-DETAILS.
165 COPY CIPAUDTY.
166
167
168 COPY DFHAID.
169 COPY DFHBMSCA.
170
171 LINKAGE SECTION.
172 01 DFHCOMMAREA.
173 05 LK-COMMAREA PIC X(01)
174 OCCURS 1 TO 32767 TIMES DEPENDING ON EIBCALEN.
175
176 PROCEDURE DIVISION.
177 *****************************************************************
178 MAIN-PARA.
179 *****************************************************************
180
181 SET ERR-FLG-OFF TO TRUE
182 SET AUTHS-NOT-EOF TO TRUE
183 SET NEXT-PAGE-NO TO TRUE
184 SET SEND-ERASE-YES TO TRUE
185
186 MOVE SPACES TO WS-MESSAGE ERRMSGO OF COPAU0AO
187
188 MOVE -1 TO ACCTIDL OF COPAU0AI
189
190 IF EIBCALEN = 0
191 INITIALIZE CARDDEMO-COMMAREA
192 MOVE WS-PGM-AUTH-SMRY TO CDEMO-TO-PROGRAM
193
194 SET CDEMO-PGM-REENTER TO TRUE
195 MOVE LOW-VALUES TO COPAU0AO
196 MOVE -1 TO ACCTIDL OF COPAU0AI
197
198 PERFORM SEND-PAULST-SCREEN
199 ELSE
200 MOVE DFHCOMMAREA(1:EIBCALEN) TO CARDDEMO-COMMAREA
201
202 IF NOT CDEMO-PGM-REENTER
203 SET CDEMO-PGM-REENTER TO TRUE
204
205 MOVE LOW-VALUES TO COPAU0AO
206
207 IF CDEMO-ACCT-ID IS NUMERIC
208 MOVE CDEMO-ACCT-ID TO WS-ACCT-ID
209 ACCTIDO OF COPAU0AO
210 ELSE
211 MOVE SPACE TO ACCTIDO OF COPAU0AO
212 MOVE LOW-VALUES TO WS-ACCT-ID
213 END-IF
214
215 PERFORM GATHER-DETAILS
216
217 SET SEND-ERASE-YES TO TRUE
218
219 PERFORM SEND-PAULST-SCREEN
220
221 ELSE
222 PERFORM RECEIVE-PAULST-SCREEN
223
224 EVALUATE EIBAID
225 WHEN DFHENTER
226 PERFORM PROCESS-ENTER-KEY
227
228 IF WS-ACCT-ID = LOW-VALUES
229 MOVE SPACE TO ACCTIDO OF COPAU0AO
230 ELSE
231 MOVE WS-ACCT-ID TO ACCTIDO OF COPAU0AO
232 END-IF
233
234 PERFORM SEND-PAULST-SCREEN
235 WHEN DFHPF3
236 MOVE WS-PGM-MENU TO CDEMO-TO-PROGRAM
237 PERFORM RETURN-TO-PREV-SCREEN
238 PERFORM SEND-PAULST-SCREEN
239 WHEN DFHPF7
240 PERFORM PROCESS-PF7-KEY
241 PERFORM SEND-PAULST-SCREEN
242 WHEN DFHPF8
243 PERFORM PROCESS-PF8-KEY
244 PERFORM SEND-PAULST-SCREEN
245 WHEN OTHER
246 MOVE 'Y' TO WS-ERR-FLG
247 MOVE -1 TO ACCTIDL OF COPAU0AI
248 MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE
249 PERFORM SEND-PAULST-SCREEN
250 END-EVALUATE
251 END-IF
252 END-IF
253
254 EXEC CICS RETURN
255 TRANSID (WS-CICS-TRANID)
256 COMMAREA (CARDDEMO-COMMAREA)
257 END-EXEC.
258
259
260 *****************************************************************
261 PROCESS-ENTER-KEY.
262 *****************************************************************
263
264 IF ACCTIDI OF COPAU0AI = SPACES OR LOW-VALUES
265 MOVE LOW-VALUES TO WS-ACCT-ID
266
267 MOVE 'Y' TO WS-ERR-FLG
268 MOVE
269 'Please enter Acct Id...' TO WS-MESSAGE
270
271 MOVE -1 TO ACCTIDL OF COPAU0AI
272 ELSE
273 IF ACCTIDI OF COPAU0AI IS NOT NUMERIC
274 MOVE LOW-VALUES TO WS-ACCT-ID
275
276 MOVE 'Y' TO WS-ERR-FLG
277 MOVE
278 'Acct Id must be Numeric ...' TO WS-MESSAGE
279
280 MOVE -1 TO ACCTIDL OF COPAU0AI
281
282 ELSE
283 MOVE ACCTIDI OF COPAU0AI TO WS-ACCT-ID
284 CDEMO-ACCT-ID
285 EVALUATE TRUE
286 WHEN SEL0001I OF COPAU0AI NOT = SPACES AND LOW-VALUES
287 MOVE SEL0001I OF COPAU0AI TO CDEMO-CPVS-PAU-SEL-FLG
288 MOVE CDEMO-CPVS-AUTH-KEYS(1)
289 TO CDEMO-CPVS-PAU-SELECTED
290 WHEN SEL0002I OF COPAU0AI NOT = SPACES AND LOW-VALUES
291 MOVE SEL0002I OF COPAU0AI TO CDEMO-CPVS-PAU-SEL-FLG
292 MOVE CDEMO-CPVS-AUTH-KEYS(2)
293 TO CDEMO-CPVS-PAU-SELECTED
294 WHEN SEL0003I OF COPAU0AI NOT = SPACES AND LOW-VALUES
295 MOVE SEL0003I OF COPAU0AI TO CDEMO-CPVS-PAU-SEL-FLG
296 MOVE CDEMO-CPVS-AUTH-KEYS(3)
297 TO CDEMO-CPVS-PAU-SELECTED
298 WHEN SEL0004I OF COPAU0AI NOT = SPACES AND LOW-VALUES
299 MOVE SEL0004I OF COPAU0AI TO CDEMO-CPVS-PAU-SEL-FLG
300 MOVE CDEMO-CPVS-AUTH-KEYS(4)
301 TO CDEMO-CPVS-PAU-SELECTED
302 WHEN SEL0005I OF COPAU0AI NOT = SPACES AND LOW-VALUES
303 MOVE SEL0005I OF COPAU0AI TO CDEMO-CPVS-PAU-SEL-FLG
304 MOVE CDEMO-CPVS-AUTH-KEYS(5)
305 TO CDEMO-CPVS-PAU-SELECTED
306 WHEN OTHER
307 MOVE SPACES TO CDEMO-CPVS-PAU-SEL-FLG
308 MOVE SPACES TO CDEMO-CPVS-PAU-SELECTED
309 END-EVALUATE
310 IF (CDEMO-CPVS-PAU-SEL-FLG NOT = SPACES AND LOW-VALUES)
311 AND
312 (CDEMO-CPVS-PAU-SELECTED NOT = SPACES AND LOW-VALUES)
313 EVALUATE CDEMO-CPVS-PAU-SEL-FLG
314 WHEN 'S'
315 WHEN 's'
316 MOVE WS-PGM-AUTH-DTL TO CDEMO-TO-PROGRAM
317 MOVE WS-CICS-TRANID TO CDEMO-FROM-TRANID
318 MOVE WS-PGM-AUTH-SMRY TO CDEMO-FROM-PROGRAM
319 MOVE 0 TO CDEMO-PGM-CONTEXT
320 SET CDEMO-PGM-ENTER TO TRUE
321
322 EXEC CICS
323 XCTL PROGRAM(CDEMO-TO-PROGRAM)
324 COMMAREA(CARDDEMO-COMMAREA)
325 END-EXEC
326 WHEN OTHER
327 MOVE
328 'Invalid selection. Valid value is S'
329 TO WS-MESSAGE
330 MOVE -1 TO ACCTIDL OF COPAU0AI
331 END-EVALUATE
332 END-IF
333
334 END-IF
335 END-IF
336
337 PERFORM GATHER-DETAILS
338 .
339
340
341 *****************************************************************
342 GATHER-DETAILS.
343 *****************************************************************
344
345 MOVE -1 TO ACCTIDL OF COPAU0AI
346
347 MOVE 0 TO CDEMO-CPVS-PAGE-NUM
348
349 IF WS-ACCT-ID NOT = LOW-VALUES
350 PERFORM GATHER-ACCOUNT-DETAILS
351
352 PERFORM INITIALIZE-AUTH-DATA
353
354 IF FOUND-PAUT-SMRY-SEG
355 PERFORM PROCESS-PAGE-FORWARD
356 END-IF
357 END-IF
358 .
359
360
361 *****************************************************************
362 PROCESS-PF7-KEY.
363 *****************************************************************
364
365 IF CDEMO-CPVS-PAGE-NUM > 1
366 COMPUTE CDEMO-CPVS-PAGE-NUM = CDEMO-CPVS-PAGE-NUM - 1
367
368 MOVE CDEMO-CPVS-PAUKEY-PREV-PG(CDEMO-CPVS-PAGE-NUM)
369 TO WS-AUTH-KEY-SAVE
370 PERFORM GET-AUTH-SUMMARY
371
372 SET SEND-ERASE-NO TO TRUE
373
374 SET NEXT-PAGE-YES TO TRUE
375 MOVE -1 TO ACCTIDL OF COPAU0AI
376
377 PERFORM INITIALIZE-AUTH-DATA
378
379 PERFORM PROCESS-PAGE-FORWARD
380 ELSE
381 MOVE 'You are already at the top of the page...' TO
382 WS-MESSAGE
383 SET SEND-ERASE-NO TO TRUE
384 END-IF
385 .
386
387 *****************************************************************
388 PROCESS-PF8-KEY.
389 *****************************************************************
390
391 IF CDEMO-CPVS-PAUKEY-LAST = SPACES OR LOW-VALUES
392 MOVE LOW-VALUES TO WS-AUTH-KEY-SAVE
393 ELSE
394 MOVE CDEMO-CPVS-PAUKEY-LAST TO WS-AUTH-KEY-SAVE
395
396 PERFORM GET-AUTH-SUMMARY
397 PERFORM REPOSITION-AUTHORIZATIONS
398 END-IF
399
400 MOVE -1 TO ACCTIDL OF COPAU0AI
401
402 SET SEND-ERASE-NO TO TRUE
403
404 IF NEXT-PAGE-YES
405 PERFORM INITIALIZE-AUTH-DATA
406
407 PERFORM PROCESS-PAGE-FORWARD
408 ELSE
409 MOVE 'You are already at the bottom of the page...'
410 TO WS-MESSAGE
411 END-IF
412 .
413
414 *****************************************************************
415 PROCESS-PAGE-FORWARD.
416 *****************************************************************
417
418 IF ERR-FLG-OFF
419
420 MOVE 1 TO WS-IDX
421
422 MOVE LOW-VALUES TO CDEMO-CPVS-PAUKEY-LAST
423
424 PERFORM UNTIL WS-IDX > 5 OR AUTHS-EOF OR ERR-FLG-ON
425 IF EIBAID = DFHPF7 AND WS-IDX = 1
426 PERFORM REPOSITION-AUTHORIZATIONS
427 ELSE
428 PERFORM GET-AUTHORIZATIONS
429 END-IF
430 IF AUTHS-NOT-EOF AND ERR-FLG-OFF
431 PERFORM POPULATE-AUTH-LIST
432 COMPUTE WS-IDX = WS-IDX + 1
433
434 MOVE PA-AUTHORIZATION-KEY TO
435 CDEMO-CPVS-PAUKEY-LAST
436 IF WS-IDX = 2
437 COMPUTE CDEMO-CPVS-PAGE-NUM =
438 CDEMO-CPVS-PAGE-NUM + 1
439 MOVE PA-AUTHORIZATION-KEY TO
440 CDEMO-CPVS-PAUKEY-PREV-PG(CDEMO-CPVS-PAGE-NUM)
441 END-IF
442 END-IF
443 END-PERFORM
444
445 IF AUTHS-NOT-EOF AND ERR-FLG-OFF
446 PERFORM GET-AUTHORIZATIONS
447 IF AUTHS-NOT-EOF AND ERR-FLG-OFF
448 SET NEXT-PAGE-YES TO TRUE
449 ELSE
450 SET NEXT-PAGE-NO TO TRUE
451 END-IF
452 END-IF
453
454 END-IF.
455
456
457 *****************************************************************
458 GET-AUTHORIZATIONS.
459 *****************************************************************
460
461 EXEC DLI GNP USING PCB(PAUT-PCB-NUM)
462 SEGMENT (PAUTDTL1)
463 INTO (PENDING-AUTH-DETAILS)
464 END-EXEC
465
466 MOVE DIBSTAT TO IMS-RETURN-CODE
467 EVALUATE TRUE
468 WHEN STATUS-OK
469 SET AUTHS-NOT-EOF TO TRUE
470 WHEN SEGMENT-NOT-FOUND
471 WHEN END-OF-DB
472 SET AUTHS-EOF TO TRUE
473 WHEN OTHER
474 MOVE 'Y' TO WS-ERR-FLG
475
476 STRING
477 ' System error while reading AUTH Details: Code:'
478 IMS-RETURN-CODE
479 DELIMITED BY SIZE
480 INTO WS-MESSAGE
481 END-STRING
482 MOVE -1 TO ACCTIDL OF COPAU0AI
483 PERFORM SEND-PAULST-SCREEN
484 END-EVALUATE
485
486 .
487 *****************************************************************
488 REPOSITION-AUTHORIZATIONS.
489 *****************************************************************
490
491 MOVE WS-AUTH-KEY-SAVE TO PA-AUTHORIZATION-KEY
492
493 EXEC DLI GNP USING PCB(PAUT-PCB-NUM)
494 SEGMENT (PAUTDTL1)
495 INTO (PENDING-AUTH-DETAILS)
496 WHERE (PAUT9CTS = PA-AUTHORIZATION-KEY)
497 END-EXEC
498
499 MOVE DIBSTAT TO IMS-RETURN-CODE
500 EVALUATE TRUE
501 WHEN STATUS-OK
502 SET AUTHS-NOT-EOF TO TRUE
503 WHEN SEGMENT-NOT-FOUND
504 WHEN END-OF-DB
505 SET AUTHS-EOF TO TRUE
506 WHEN OTHER
507 MOVE 'Y' TO WS-ERR-FLG
508
509 STRING
510 ' System error while repos. AUTH Details: Code:'
511 IMS-RETURN-CODE
512 DELIMITED BY SIZE
513 INTO WS-MESSAGE
514 END-STRING
515 MOVE -1 TO ACCTIDL OF COPAU0AI
516 PERFORM SEND-PAULST-SCREEN
517 END-EVALUATE
518
519 .
520
521 *****************************************************************
522 POPULATE-AUTH-LIST.
523 *****************************************************************
524
525 MOVE PA-APPROVED-AMT TO WS-AUTH-AMT
526
527 MOVE PA-AUTH-ORIG-TIME(1:2) TO WS-AUTH-TIME(1:2)
528 MOVE PA-AUTH-ORIG-TIME(3:2) TO WS-AUTH-TIME(4:2)
529 MOVE PA-AUTH-ORIG-TIME(5:2) TO WS-AUTH-TIME(7:2)
530
531 MOVE PA-AUTH-ORIG-DATE(1:2) TO WS-CURDATE-YY
532 MOVE PA-AUTH-ORIG-DATE(3:2) TO WS-CURDATE-MM
533 MOVE PA-AUTH-ORIG-DATE(5:2) TO WS-CURDATE-DD
534 MOVE WS-CURDATE-MM-DD-YY TO WS-AUTH-DATE
535
536 IF PA-AUTH-RESP-CODE = '00'
537 MOVE 'A' TO WS-AUTH-APRV-STAT
538 ELSE
539 MOVE 'D' TO WS-AUTH-APRV-STAT
540 END-IF
541
542 EVALUATE WS-IDX
543 WHEN 1
544 MOVE PA-AUTHORIZATION-KEY
545 TO CDEMO-CPVS-AUTH-KEYS(1)
546
547 MOVE PA-TRANSACTION-ID TO TRNID01I OF COPAU0AI
548 MOVE WS-AUTH-DATE TO PDATE01I OF COPAU0AI
549 MOVE WS-AUTH-TIME TO PTIME01I OF COPAU0AI
550 MOVE PA-AUTH-TYPE TO PTYPE01I OF COPAU0AI
551 MOVE WS-AUTH-APRV-STAT TO PAPRV01I OF COPAU0AI
552 MOVE PA-MATCH-STATUS TO PSTAT01I OF COPAU0AI
553 MOVE WS-AUTH-AMT TO PAMT001I OF COPAU0AI
554 MOVE DFHBMUNP TO SEL0001A OF COPAU0AI
555 WHEN 2
556 MOVE PA-AUTHORIZATION-KEY
557 TO CDEMO-CPVS-AUTH-KEYS(2)
558
559 MOVE PA-TRANSACTION-ID TO TRNID02I OF COPAU0AI
560 MOVE WS-AUTH-DATE TO PDATE02I OF COPAU0AI
561 MOVE WS-AUTH-TIME TO PTIME02I OF COPAU0AI
562 MOVE PA-AUTH-TYPE TO PTYPE02I OF COPAU0AI
563 MOVE WS-AUTH-APRV-STAT TO PAPRV02I OF COPAU0AI
564 MOVE PA-MATCH-STATUS TO PSTAT02I OF COPAU0AI
565 MOVE WS-AUTH-AMT TO PAMT002I OF COPAU0AI
566 MOVE DFHBMUNP TO SEL0002A OF COPAU0AI
567 WHEN 3
568 MOVE PA-AUTHORIZATION-KEY
569 TO CDEMO-CPVS-AUTH-KEYS(3)
570
571 MOVE PA-TRANSACTION-ID TO TRNID03I OF COPAU0AI
572 MOVE WS-AUTH-DATE TO PDATE03I OF COPAU0AI
573 MOVE WS-AUTH-TIME TO PTIME03I OF COPAU0AI
574 MOVE PA-AUTH-TYPE TO PTYPE03I OF COPAU0AI
575 MOVE WS-AUTH-APRV-STAT TO PAPRV03I OF COPAU0AI
576 MOVE PA-MATCH-STATUS TO PSTAT03I OF COPAU0AI
577 MOVE WS-AUTH-AMT TO PAMT003I OF COPAU0AI
578 MOVE DFHBMUNP TO SEL0003A OF COPAU0AI
579 WHEN 4
580 MOVE PA-AUTHORIZATION-KEY
581 TO CDEMO-CPVS-AUTH-KEYS(4)
582
583 MOVE PA-TRANSACTION-ID TO TRNID04I OF COPAU0AI
584 MOVE WS-AUTH-DATE TO PDATE04I OF COPAU0AI
585 MOVE WS-AUTH-TIME TO PTIME04I OF COPAU0AI
586 MOVE PA-AUTH-TYPE TO PTYPE04I OF COPAU0AI
587 MOVE WS-AUTH-APRV-STAT TO PAPRV04I OF COPAU0AI
588 MOVE PA-MATCH-STATUS TO PSTAT04I OF COPAU0AI
589 MOVE WS-AUTH-AMT TO PAMT004I OF COPAU0AI
590 MOVE DFHBMUNP TO SEL0004A OF COPAU0AI
591 WHEN 5
592 MOVE PA-AUTHORIZATION-KEY
593 TO CDEMO-CPVS-AUTH-KEYS(5)
594
595 MOVE PA-TRANSACTION-ID TO TRNID05I OF COPAU0AI
596 MOVE WS-AUTH-DATE TO PDATE05I OF COPAU0AI
597 MOVE WS-AUTH-TIME TO PTIME05I OF COPAU0AI
598 MOVE PA-AUTH-TYPE TO PTYPE05I OF COPAU0AI
599 MOVE WS-AUTH-APRV-STAT TO PAPRV05I OF COPAU0AI
600 MOVE PA-MATCH-STATUS TO PSTAT05I OF COPAU0AI
601 MOVE WS-AUTH-AMT TO PAMT005I OF COPAU0AI
602 MOVE DFHBMUNP TO SEL0005A OF COPAU0AI
603 WHEN OTHER
604 CONTINUE
605 END-EVALUATE.
606
607 *****************************************************************
608 INITIALIZE-AUTH-DATA.
609 *****************************************************************
610
611 PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > 5
612 EVALUATE WS-IDX
613 WHEN 1
614 MOVE DFHBMPRO TO SEL0001A OF COPAU0AI
615 MOVE SPACES TO TRNID01I OF COPAU0AI
616 MOVE SPACES TO PDATE01I OF COPAU0AI
617 MOVE SPACES TO PTIME01I OF COPAU0AI
618 MOVE SPACES TO PTYPE01I OF COPAU0AI
619 MOVE SPACES TO PAPRV01I OF COPAU0AI
620 MOVE SPACES TO PSTAT01I OF COPAU0AI
621 MOVE SPACES TO PAMT001I OF COPAU0AI
622 WHEN 2
623 MOVE DFHBMPRO TO SEL0002A OF COPAU0AI
624 MOVE SPACES TO TRNID02I OF COPAU0AI
625 MOVE SPACES TO PDATE02I OF COPAU0AI
626 MOVE SPACES TO PTIME02I OF COPAU0AI
627 MOVE SPACES TO PTYPE02I OF COPAU0AI
628 MOVE SPACES TO PAPRV02I OF COPAU0AI
629 MOVE SPACES TO PSTAT02I OF COPAU0AI
630 MOVE SPACES TO PAMT002I OF COPAU0AI
631 WHEN 3
632 MOVE DFHBMPRO TO SEL0003A OF COPAU0AI
633 MOVE SPACES TO TRNID03I OF COPAU0AI
634 MOVE SPACES TO PDATE03I OF COPAU0AI
635 MOVE SPACES TO PTIME03I OF COPAU0AI
636 MOVE SPACES TO PTYPE03I OF COPAU0AI
637 MOVE SPACES TO PAPRV03I OF COPAU0AI
638 MOVE SPACES TO PSTAT03I OF COPAU0AI
639 MOVE SPACES TO PAMT003I OF COPAU0AI
640 WHEN 4
641 MOVE DFHBMPRO TO SEL0004A OF COPAU0AI
642 MOVE SPACES TO TRNID04I OF COPAU0AI
643 MOVE SPACES TO PDATE04I OF COPAU0AI
644 MOVE SPACES TO PTIME04I OF COPAU0AI
645 MOVE SPACES TO PTYPE04I OF COPAU0AI
646 MOVE SPACES TO PAPRV04I OF COPAU0AI
647 MOVE SPACES TO PSTAT04I OF COPAU0AI
648 MOVE SPACES TO PAMT004I OF COPAU0AI
649 WHEN 5
650 MOVE DFHBMPRO TO SEL0005A OF COPAU0AI
651 MOVE SPACES TO TRNID05I OF COPAU0AI
652 MOVE SPACES TO PDATE05I OF COPAU0AI
653 MOVE SPACES TO PTIME05I OF COPAU0AI
654 MOVE SPACES TO PTYPE05I OF COPAU0AI
655 MOVE SPACES TO PAPRV05I OF COPAU0AI
656 MOVE SPACES TO PSTAT05I OF COPAU0AI
657 MOVE SPACES TO PAMT005I OF COPAU0AI
658 WHEN OTHER
659 CONTINUE
660 END-EVALUATE
661 END-PERFORM
662 .
663
664 *****************************************************************
665 RETURN-TO-PREV-SCREEN.
666 *****************************************************************
667
668 IF CDEMO-TO-PROGRAM = LOW-VALUES OR SPACES
669 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM
670 END-IF
671 MOVE WS-CICS-TRANID TO CDEMO-FROM-TRANID
672 MOVE WS-PGM-AUTH-SMRY TO CDEMO-FROM-PROGRAM
673 MOVE ZEROS TO CDEMO-PGM-CONTEXT
674 EXEC CICS
675 XCTL PROGRAM(CDEMO-TO-PROGRAM)
676 COMMAREA(CARDDEMO-COMMAREA)
677 END-EXEC.
678
679
680 *****************************************************************
681 SEND-PAULST-SCREEN.
682 *****************************************************************
683
684 IF IMS-PSB-SCHD
685 SET IMS-PSB-NOT-SCHD TO TRUE
686 EXEC CICS SYNCPOINT
687 END-EXEC
688 END-IF
689
690 PERFORM POPULATE-HEADER-INFO
691
692 MOVE WS-MESSAGE TO ERRMSGO OF COPAU0AO
693
694 IF SEND-ERASE-YES
695 EXEC CICS SEND
696 MAP('COPAU0A')
697 MAPSET('COPAU00')
698 FROM(COPAU0AO)
699 ERASE
700 CURSOR
701 END-EXEC
702 ELSE
703 EXEC CICS SEND
704 MAP('COPAU0A')
705 MAPSET('COPAU00')
706 FROM(COPAU0AO)
707 CURSOR
708 END-EXEC
709 END-IF.
710
711 *****************************************************************
712 RECEIVE-PAULST-SCREEN.
713 *****************************************************************
714
715 EXEC CICS RECEIVE
716 MAP('COPAU0A')
717 MAPSET('COPAU00')
718 INTO(COPAU0AI)
719 RESP(WS-RESP-CD)
720 RESP2(WS-REAS-CD)
721 END-EXEC
722 .
723
724
725 *****************************************************************
726 POPULATE-HEADER-INFO.
727 *****************************************************************
728
729 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
730
731 MOVE CCDA-TITLE01 TO TITLE01O OF COPAU0AO
732 MOVE CCDA-TITLE02 TO TITLE02O OF COPAU0AO
733 MOVE WS-CICS-TRANID TO TRNNAMEO OF COPAU0AO
734 MOVE WS-PGM-AUTH-SMRY TO PGMNAMEO OF COPAU0AO
735
736 MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM
737 MOVE WS-CURDATE-DAY TO WS-CURDATE-DD
738 MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY
739
740 MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF COPAU0AO
741
742 MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH
743 MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM
744 MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS
745
746 MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF COPAU0AO
747 .
748
749 *****************************************************************
750 GATHER-ACCOUNT-DETAILS.
751 *****************************************************************
752
753 PERFORM GETCARDXREF-BYACCT
754 PERFORM GETACCTDATA-BYACCT
755 PERFORM GETCUSTDATA-BYCUST
756
757 MOVE CUST-ID TO CUSTIDO
758 STRING CUST-FIRST-NAME DELIMITED BY SPACES
759 ' ' DELIMITED BY SIZE
760 CUST-MIDDLE-NAME(1:1) DELIMITED BY SIZE
761 ' ' DELIMITED BY SIZE
762 CUST-LAST-NAME DELIMITED BY SPACES
763 INTO CNAMEO
764 END-STRING
765
766 STRING CUST-ADDR-LINE-1 DELIMITED BY ' '
767 ',' DELIMITED BY SIZE
768 CUST-ADDR-LINE-2 DELIMITED BY ' '
769 INTO ADDR001O
770 END-STRING
771 STRING CUST-ADDR-LINE-3 DELIMITED BY ' '
772 ',' DELIMITED BY SIZE
773 CUST-ADDR-STATE-CD DELIMITED BY SIZE
774 ',' DELIMITED BY SIZE
775 CUST-ADDR-ZIP(1:5) DELIMITED BY SIZE
776 INTO ADDR002O
777 END-STRING
778
779 MOVE CUST-PHONE-NUM-1 TO PHONE1O
780 MOVE ACCT-CREDIT-LIMIT TO WS-DISPLAY-AMT12
781 MOVE WS-DISPLAY-AMT12 TO CREDLIMO
782 MOVE ACCT-CASH-CREDIT-LIMIT TO WS-DISPLAY-AMT9
783 MOVE WS-DISPLAY-AMT9 TO CASHLIMO
784
785 PERFORM GET-AUTH-SUMMARY
786
787 IF FOUND-PAUT-SMRY-SEG
788 MOVE PA-APPROVED-AUTH-CNT TO WS-DISPLAY-COUNT
789 MOVE WS-DISPLAY-COUNT TO APPRCNTO
790 MOVE PA-DECLINED-AUTH-CNT TO WS-DISPLAY-COUNT
791 MOVE WS-DISPLAY-COUNT TO DECLCNTO
792 MOVE PA-CREDIT-BALANCE TO WS-DISPLAY-AMT12
793 MOVE WS-DISPLAY-AMT12 TO CREDBALO
794 MOVE PA-CASH-BALANCE TO WS-DISPLAY-AMT9
795 MOVE WS-DISPLAY-AMT9 TO CASHBALO
796 MOVE PA-APPROVED-AUTH-AMT TO WS-DISPLAY-AMT9
797 MOVE WS-DISPLAY-AMT9 TO APPRAMTO
798 MOVE PA-DECLINED-AUTH-AMT TO WS-DISPLAY-AMT9
799 MOVE WS-DISPLAY-AMT9 TO DECLAMTO
800 ELSE
801 MOVE ZERO TO APPRCNTO
802 DECLCNTO
803 CREDBALO
804 CASHBALO
805 APPRAMTO
806 DECLAMTO
807 END-IF
808 .
809
810
811 *****************************************************************
812 GETCARDXREF-BYACCT.
813 *****************************************************************
814
815 * Read the Card file. Access via alternate index ACCTID
816 *
817 MOVE WS-ACCT-ID TO WS-CARD-RID-ACCT-ID-X
818 EXEC CICS READ
819 DATASET (WS-CARDXREFNAME-ACCT-PATH)
820 RIDFLD (WS-CARD-RID-ACCT-ID-X)
821 KEYLENGTH (LENGTH OF WS-CARD-RID-ACCT-ID-X)
822 INTO (CARD-XREF-RECORD)
823 LENGTH (LENGTH OF CARD-XREF-RECORD)
824 RESP (WS-RESP-CD)
825 RESP2 (WS-REAS-CD)
826 END-EXEC
827
828 EVALUATE WS-RESP-CD
829 WHEN DFHRESP(NORMAL)
830 MOVE XREF-CUST-ID TO CDEMO-CUST-ID
831 MOVE XREF-CARD-NUM TO CDEMO-CARD-NUM
832 WHEN DFHRESP(NOTFND)
833 MOVE WS-RESP-CD TO WS-RESP-CD-DIS
834 MOVE WS-REAS-CD TO WS-REAS-CD-DIS
835
836 STRING
837 'Account:'
838 WS-ACCT-ID
839 ' not found in XREF file. Resp:' WS-RESP-CD-DIS
840 ' Reas:' WS-REAS-CD-DIS
841 DELIMITED BY SIZE
842 INTO WS-MESSAGE
843 END-STRING
844 MOVE -1 TO ACCTIDL OF COPAU0AI
845 PERFORM SEND-PAULST-SCREEN
846 WHEN OTHER
847 MOVE 'Y' TO WS-ERR-FLG
848 MOVE WS-RESP-CD TO WS-RESP-CD-DIS
849 MOVE WS-REAS-CD TO WS-REAS-CD-DIS
850
851 STRING
852 'Account:'
853 WS-CARD-RID-ACCT-ID-X
854 ' System error while reading XREF file. Resp:'
855 WS-RESP-CD-DIS ' Reas:' WS-REAS-CD-DIS
856 DELIMITED BY SIZE
857 INTO WS-MESSAGE
858 END-STRING
859 MOVE -1 TO ACCTIDL OF COPAU0AI
860 PERFORM SEND-PAULST-SCREEN
861 END-EVALUATE
862 .
863
864 *****************************************************************
865 GETACCTDATA-BYACCT.
866 *****************************************************************
867
868 MOVE XREF-ACCT-ID TO WS-CARD-RID-ACCT-ID
869 EXEC CICS READ
870 DATASET (WS-ACCTFILENAME)
871 RIDFLD (WS-CARD-RID-ACCT-ID-X)
872 KEYLENGTH (LENGTH OF WS-CARD-RID-ACCT-ID-X)
873 INTO (ACCOUNT-RECORD)
874 LENGTH (LENGTH OF ACCOUNT-RECORD)
875 RESP (WS-RESP-CD)
876 RESP2 (WS-REAS-CD)
877 END-EXEC
878
879 EVALUATE WS-RESP-CD
880 WHEN DFHRESP(NORMAL)
881 continue
882 WHEN DFHRESP(NOTFND)
883 MOVE WS-RESP-CD TO WS-RESP-CD-DIS
884 MOVE WS-REAS-CD TO WS-REAS-CD-DIS
885
886 STRING
887 'Account:'
888 WS-CARD-RID-ACCT-ID-X
889 ' not found in ACCT file. Resp:' WS-RESP-CD-DIS
890 ' Reas:' WS-REAS-CD-DIS
891 DELIMITED BY SIZE
892 INTO WS-MESSAGE
893 END-STRING
894 MOVE -1 TO ACCTIDL OF COPAU0AI
895 PERFORM SEND-PAULST-SCREEN
896 WHEN OTHER
897 MOVE 'Y' TO WS-ERR-FLG
898 MOVE WS-RESP-CD TO WS-RESP-CD-DIS
899 MOVE WS-REAS-CD TO WS-REAS-CD-DIS
900
901 STRING
902 'Account:'
903 WS-CARD-RID-ACCT-ID-X
904 ' System error while reading ACCT file. Resp:'
905 WS-RESP-CD-DIS ' Reas:' WS-REAS-CD-DIS
906 DELIMITED BY SIZE
907 INTO WS-MESSAGE
908 END-STRING
909 MOVE -1 TO ACCTIDL OF COPAU0AI
910 PERFORM SEND-PAULST-SCREEN
911 END-EVALUATE
912 .
913
914 *****************************************************************
915 GETCUSTDATA-BYCUST.
916 *****************************************************************
917
918 MOVE XREF-CUST-ID TO WS-CARD-RID-CUST-ID
919
920 EXEC CICS READ
921 DATASET (WS-CUSTFILENAME)
922 RIDFLD (WS-CARD-RID-CUST-ID-X)
923 KEYLENGTH (LENGTH OF WS-CARD-RID-CUST-ID-X)
924 INTO (CUSTOMER-RECORD)
925 LENGTH (LENGTH OF CUSTOMER-RECORD)
926 RESP (WS-RESP-CD)
927 RESP2 (WS-REAS-CD)
928 END-EXEC
929
930 EVALUATE WS-RESP-CD
931 WHEN DFHRESP(NORMAL)
932 CONTINUE
933 WHEN DFHRESP(NOTFND)
934 MOVE WS-RESP-CD TO WS-RESP-CD-DIS
935 MOVE WS-REAS-CD TO WS-REAS-CD-DIS
936
937 STRING
938 'Customer:'
939 WS-CARD-RID-CUST-ID-X
940 ' not found in CUST file. Resp:' WS-RESP-CD-DIS
941 ' Reas:' WS-REAS-CD-DIS
942 DELIMITED BY SIZE
943 INTO WS-MESSAGE
944 END-STRING
945 MOVE -1 TO ACCTIDL OF COPAU0AI
946 PERFORM SEND-PAULST-SCREEN
947 WHEN OTHER
948 MOVE 'Y' TO WS-ERR-FLG
949 MOVE WS-RESP-CD TO WS-RESP-CD-DIS
950 MOVE WS-REAS-CD TO WS-REAS-CD-DIS
951
952 STRING
953 'Customer:'
954 WS-CARD-RID-CUST-ID-X
955 ' System error while reading CUST file. Resp:'
956 WS-RESP-CD-DIS ' Reas:' WS-REAS-CD-DIS
957 DELIMITED BY SIZE
958 INTO WS-MESSAGE
959 END-STRING
960 MOVE -1 TO ACCTIDL OF COPAU0AI
961 PERFORM SEND-PAULST-SCREEN
962 END-EVALUATE
963 .
964
965 *****************************************************************
966 GET-AUTH-SUMMARY.
967 *****************************************************************
968
969 PERFORM SCHEDULE-PSB
970
971 MOVE CDEMO-ACCT-ID TO PA-ACCT-ID
972 * MOVE XREF-ACCT-ID TO PA-ACCT-ID
973 EXEC DLI GU USING PCB(PAUT-PCB-NUM)
974 SEGMENT (PAUTSUM0)
975 INTO (PENDING-AUTH-SUMMARY)
976 WHERE (ACCNTID = PA-ACCT-ID)
977 END-EXEC
978
979 MOVE DIBSTAT TO IMS-RETURN-CODE
980 EVALUATE TRUE
981 WHEN STATUS-OK
982 SET FOUND-PAUT-SMRY-SEG TO TRUE
983 WHEN SEGMENT-NOT-FOUND
984 SET NFOUND-PAUT-SMRY-SEG TO TRUE
985 WHEN OTHER
986 MOVE 'Y' TO WS-ERR-FLG
987
988 STRING
989 ' System error while reading AUTH Summary: Code:'
990 IMS-RETURN-CODE
991 DELIMITED BY SIZE
992 INTO WS-MESSAGE
993 END-STRING
994 MOVE -1 TO ACCTIDL OF COPAU0AI
995 PERFORM SEND-PAULST-SCREEN
996 END-EVALUATE
997 .
998 *****************************************************************
999 * SCHEDULE PSB *
1000 *****************************************************************
1001 SCHEDULE-PSB.
1002 EXEC DLI SCHD
1003 PSB((PSB-NAME))
1004 NODHABEND
1005 END-EXEC
1006 MOVE DIBSTAT TO IMS-RETURN-CODE
1007 IF PSB-SCHEDULED-MORE-THAN-ONCE
1008 EXEC DLI TERM
1009 END-EXEC
1010
1011 EXEC DLI SCHD
1012 PSB((PSB-NAME))
1013 NODHABEND
1014 END-EXEC
1015 MOVE DIBSTAT TO IMS-RETURN-CODE
1016 END-IF
1017 IF STATUS-OK
1018 SET IMS-PSB-SCHD TO TRUE
1019 ELSE
1020 MOVE 'Y' TO WS-ERR-FLG
1021
1022 STRING
1023 ' System error while scheduling PSB: Code:'
1024 IMS-RETURN-CODE
1025 DELIMITED BY SIZE
1026 INTO WS-MESSAGE
1027 END-STRING
1028 MOVE -1 TO ACCTIDL OF COPAU0AI
1029 PERFORM SEND-PAULST-SCREEN
1030 END-IF
1031 .
1032