MFmainframe-rea
WS carddemo · 26f629ef

cobol · 941 lines · sha256 4f1e55176f69edfb · guides at columns 7 and 72app/cbl/COACTVWC.cbl

1 *****************************************************************
2 * Program: COACTVWC.CBL *
3 * Layer: Business logic *
4 * Function: Accept and process Account View request *
5 ******************************************************************
6 * Copyright Amazon.com, Inc. or its affiliates.
7 * All Rights Reserved.
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License").
10 * You may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing,
16 * software distributed under the License is distributed on an
17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
18 * either express or implied. See the License for the specific
19 * language governing permissions and limitations under the License
20 ******************************************************************
21 IDENTIFICATION DIVISION.
22 PROGRAM-ID.
23 COACTVWC.
24 DATE-WRITTEN.
25 May 2022.
26 DATE-COMPILED.
27 Today.
28
29 ENVIRONMENT DIVISION.
30 INPUT-OUTPUT SECTION.
31
32 DATA DIVISION.
33
34 WORKING-STORAGE SECTION.
35 01 WS-MISC-STORAGE.
36 ******************************************************************
37 * General CICS related
38 ******************************************************************
39 05 WS-CICS-PROCESSNG-VARS.
40 07 WS-RESP-CD PIC S9(09) COMP
41 VALUE ZEROS.
42 07 WS-REAS-CD PIC S9(09) COMP
43 VALUE ZEROS.
44 07 WS-TRANID PIC X(4)
45 VALUE SPACES.
46 ******************************************************************
47 * Input edits
48 ******************************************************************
49
50 05 WS-INPUT-FLAG PIC X(1).
51 88 INPUT-OK VALUE '0'.
52 88 INPUT-ERROR VALUE '1'.
53 88 INPUT-PENDING VALUE LOW-VALUES.
54 05 WS-PFK-FLAG PIC X(1).
55 88 PFK-VALID VALUE '0'.
56 88 PFK-INVALID VALUE '1'.
57 88 INPUT-PENDING VALUE LOW-VALUES.
58 05 WS-EDIT-ACCT-FLAG PIC X(1).
59 88 FLG-ACCTFILTER-NOT-OK VALUE '0'.
60 88 FLG-ACCTFILTER-ISVALID VALUE '1'.
61 88 FLG-ACCTFILTER-BLANK VALUE ' '.
62 05 WS-EDIT-CUST-FLAG PIC X(1).
63 88 FLG-CUSTFILTER-NOT-OK VALUE '0'.
64 88 FLG-CUSTFILTER-ISVALID VALUE '1'.
65 88 FLG-CUSTFILTER-BLANK VALUE ' '.
66 ******************************************************************
67 * Output edits
68 ******************************************************************
69 * 05 EDIT-FIELD-9-2 PIC +ZZZ,ZZZ,ZZZ.99.
70 ******************************************************************
71 * File and data Handling
72 ******************************************************************
73 05 WS-XREF-RID.
74 10 WS-CARD-RID-CARDNUM PIC X(16).
75 10 WS-CARD-RID-CUST-ID PIC 9(09).
76 10 WS-CARD-RID-CUST-ID-X REDEFINES
77 WS-CARD-RID-CUST-ID PIC X(09).
78 10 WS-CARD-RID-ACCT-ID PIC 9(11).
79 10 WS-CARD-RID-ACCT-ID-X REDEFINES
80 WS-CARD-RID-ACCT-ID PIC X(11).
81 05 WS-FILE-READ-FLAGS.
82 10 WS-ACCOUNT-MASTER-READ-FLAG PIC X(1).
83 88 FOUND-ACCT-IN-MASTER VALUE '1'.
84 10 WS-CUST-MASTER-READ-FLAG PIC X(1).
85 88 FOUND-CUST-IN-MASTER VALUE '1'.
86 05 WS-FILE-ERROR-MESSAGE.
87 10 FILLER PIC X(12)
88 VALUE 'File Error: '.
89 10 ERROR-OPNAME PIC X(8)
90 VALUE SPACES.
91 10 FILLER PIC X(4)
92 VALUE ' on '.
93 10 ERROR-FILE PIC X(9)
94 VALUE SPACES.
95 10 FILLER PIC X(15)
96 VALUE
97 ' returned RESP '.
98 10 ERROR-RESP PIC X(10)
99 VALUE SPACES.
100 10 FILLER PIC X(7)
101 VALUE ',RESP2 '.
102 10 ERROR-RESP2 PIC X(10)
103 VALUE SPACES.
104 10 FILLER PIC X(5)
105 VALUE SPACES.
106 ******************************************************************
107 * Output Message Construction
108 ******************************************************************
109 05 WS-LONG-MSG PIC X(500).
110 05 WS-INFO-MSG PIC X(40).
111 88 WS-NO-INFO-MESSAGE VALUES
112 SPACES LOW-VALUES.
113 88 WS-PROMPT-FOR-INPUT VALUE
114 'Enter or update id of account to display'.
115 88 WS-INFORM-OUTPUT VALUE
116 'Displaying details of given Account'.
117 05 WS-RETURN-MSG PIC X(75).
118 88 WS-RETURN-MSG-OFF VALUE SPACES.
119 88 WS-EXIT-MESSAGE VALUE
120 'PF03 pressed.Exiting '.
121 88 WS-PROMPT-FOR-ACCT VALUE
122 'Account number not provided'.
123 88 NO-SEARCH-CRITERIA-RECEIVED VALUE
124 'No input received'.
125 88 SEARCHED-ACCT-ZEROES VALUE
126 'Account number must be a non zero 11 digit number'.
127 88 SEARCHED-ACCT-NOT-NUMERIC VALUE
128 'Account number must be a non zero 11 digit number'.
129 88 DID-NOT-FIND-ACCT-IN-CARDXREF VALUE
130 'Did not find this account in account card xref file'.
131 88 DID-NOT-FIND-ACCT-IN-ACCTDAT VALUE
132 'Did not find this account in account master file'.
133 88 DID-NOT-FIND-CUST-IN-CUSTDAT VALUE
134 'Did not find associated customer in master file'.
135 88 XREF-READ-ERROR VALUE
136 'Error reading account card xref File'.
137 88 CODING-TO-BE-DONE VALUE
138 'Looks Good.... so far'.
139 *****************************************************************
140 * Literals and Constants
141 ******************************************************************
142 01 WS-LITERALS.
143 05 LIT-THISPGM PIC X(8)
144 VALUE 'COACTVWC'.
145 05 LIT-THISTRANID PIC X(4)
146 VALUE 'CAVW'.
147 05 LIT-THISMAPSET PIC X(8)
148 VALUE 'COACTVW '.
149 05 LIT-THISMAP PIC X(7)
150 VALUE 'CACTVWA'.
151 05 LIT-CCLISTPGM PIC X(8)
152 VALUE 'COCRDLIC'.
153 05 LIT-CCLISTTRANID PIC X(4)
154 VALUE 'CCLI'.
155 05 LIT-CCLISTMAPSET PIC X(7)
156 VALUE 'COCRDLI'.
157 05 LIT-CCLISTMAP PIC X(7)
158 VALUE 'CCRDSLA'.
159 05 LIT-CARDUPDATEPGM PIC X(8)
160 VALUE 'COCRDUPC'.
161 05 LIT-CARDUDPATETRANID PIC X(4)
162 VALUE 'CCUP'.
163 05 LIT-CARDUPDATEMAPSET PIC X(8)
164 VALUE 'COCRDUP '.
165 05 LIT-CARDUPDATEMAP PIC X(7)
166 VALUE 'CCRDUPA'.
167
168 05 LIT-MENUPGM PIC X(8)
169 VALUE 'COMEN01C'.
170 05 LIT-MENUTRANID PIC X(4)
171 VALUE 'CM00'.
172 05 LIT-MENUMAPSET PIC X(7)
173 VALUE 'COMEN01'.
174 05 LIT-MENUMAP PIC X(7)
175 VALUE 'COMEN1A'.
176 05 LIT-CARDDTLPGM PIC X(8)
177 VALUE 'COCRDSLC'.
178 05 LIT-CARDDTLTRANID PIC X(4)
179 VALUE 'CCDL'.
180 05 LIT-CARDDTLMAPSET PIC X(7)
181 VALUE 'COCRDSL'.
182 05 LIT-CARDDTLMAP PIC X(7)
183 VALUE 'CCRDSLA'.
184 05 LIT-ACCTFILENAME PIC X(8)
185 VALUE 'ACCTDAT '.
186 05 LIT-CARDFILENAME PIC X(8)
187 VALUE 'CARDDAT '.
188 05 LIT-CUSTFILENAME PIC X(8)
189 VALUE 'CUSTDAT '.
190 05 LIT-CARDFILENAME-ACCT-PATH PIC X(8)
191 VALUE 'CARDAIX '.
192 05 LIT-CARDXREFNAME-ACCT-PATH PIC X(8)
193 VALUE 'CXACAIX '.
194 05 LIT-ALL-ALPHA-FROM PIC X(52)
195 VALUE
196 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.
197 05 LIT-ALL-SPACES-TO PIC X(52)
198 VALUE SPACES.
199 05 LIT-UPPER PIC X(26)
200 VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
201 05 LIT-LOWER PIC X(26)
202 VALUE 'abcdefghijklmnopqrstuvwxyz'.
203
204 ******************************************************************
205 *Other common working storage Variables
206 ******************************************************************
207 COPY CVCRD01Y.
208
209 ******************************************************************
210 *Application Commmarea Copybook
211 COPY COCOM01Y.
212
213 01 WS-THIS-PROGCOMMAREA.
214 05 CA-CALL-CONTEXT.
215 10 CA-FROM-PROGRAM PIC X(08).
216 10 CA-FROM-TRANID PIC X(04).
217
218 01 WS-COMMAREA PIC X(2000).
219
220 *IBM SUPPLIED COPYBOOKS
221 COPY DFHBMSCA.
222 COPY DFHAID.
223
224 *COMMON COPYBOOKS
225 *Screen Titles
226 COPY COTTL01Y.
227
228 *BMS Copybook
229 COPY COACTVW.
230
231 *Current Date
232 COPY CSDAT01Y.
233
234 *Common Messages
235 COPY CSMSG01Y.
236
237 *Abend Variables
238 COPY CSMSG02Y.
239
240 *Signed on user data
241 COPY CSUSR01Y.
242
243 *ACCOUNT RECORD LAYOUT
244 COPY CVACT01Y.
245
246
247 *CUSTOMER RECORD LAYOUT
248 COPY CVACT02Y.
249
250 *CARD XREF LAYOUT
251 COPY CVACT03Y.
252
253 *CUSTOMER LAYOUT
254 COPY CVCUS01Y.
255
256 LINKAGE SECTION.
257 01 DFHCOMMAREA.
258 05 FILLER PIC X(1)
259 OCCURS 1 TO 32767 TIMES DEPENDING ON EIBCALEN.
260
261 PROCEDURE DIVISION.
262 0000-MAIN.
263
264 EXEC CICS HANDLE ABEND
265 LABEL(ABEND-ROUTINE)
266 END-EXEC
267
268 INITIALIZE CC-WORK-AREA
269 WS-MISC-STORAGE
270 WS-COMMAREA
271 *****************************************************************
272 * Store our context
273 *****************************************************************
274 MOVE LIT-THISTRANID TO WS-TRANID
275 *****************************************************************
276 * Ensure error message is cleared *
277 *****************************************************************
278 SET WS-RETURN-MSG-OFF TO TRUE
279 *****************************************************************
280 * Store passed data if any *
281 *****************************************************************
282 IF EIBCALEN IS EQUAL TO 0
283 OR (CDEMO-FROM-PROGRAM = LIT-MENUPGM
284 AND NOT CDEMO-PGM-REENTER)
285 INITIALIZE CARDDEMO-COMMAREA
286 WS-THIS-PROGCOMMAREA
287 ELSE
288 MOVE DFHCOMMAREA (1:LENGTH OF CARDDEMO-COMMAREA) TO
289 CARDDEMO-COMMAREA
290 MOVE DFHCOMMAREA(LENGTH OF CARDDEMO-COMMAREA + 1:
291 LENGTH OF WS-THIS-PROGCOMMAREA ) TO
292 WS-THIS-PROGCOMMAREA
293 END-IF
294
295 *****************************************************************
296 * Remap PFkeys as needed.
297 * Store the Mapped PF Key
298 *****************************************************************
299 PERFORM YYYY-STORE-PFKEY
300 THRU YYYY-STORE-PFKEY-EXIT
301 *****************************************************************
302 * Check the AID to see if its valid at this point *
303 * F3 - Exit
304 * Enter show screen again
305 *****************************************************************
306 SET PFK-INVALID TO TRUE
307 IF CCARD-AID-ENTER OR
308 CCARD-AID-PFK03
309 SET PFK-VALID TO TRUE
310 END-IF
311
312 IF PFK-INVALID
313 SET CCARD-AID-ENTER TO TRUE
314 END-IF
315
316 *****************************************************************
317 * Decide what to do based on inputs received
318 *****************************************************************
319 *****************************************************************
320 *****************************************************************
321 * Decide what to do based on inputs received
322 *****************************************************************
323 EVALUATE TRUE
324 WHEN CCARD-AID-PFK03
325 ******************************************************************
326 * XCTL TO CALLING PROGRAM OR MAIN MENU
327 ******************************************************************
328 IF CDEMO-FROM-TRANID EQUAL LOW-VALUES
329 OR CDEMO-FROM-TRANID EQUAL SPACES
330 MOVE LIT-MENUTRANID TO CDEMO-TO-TRANID
331 ELSE
332 MOVE CDEMO-FROM-TRANID TO CDEMO-TO-TRANID
333 END-IF
334 IF CDEMO-FROM-PROGRAM EQUAL LOW-VALUES
335 OR CDEMO-FROM-PROGRAM EQUAL SPACES
336 MOVE LIT-MENUPGM TO CDEMO-TO-PROGRAM
337 ELSE
338 MOVE CDEMO-FROM-PROGRAM TO CDEMO-TO-PROGRAM
339 END-IF
340
341 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
342 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
343
344 SET CDEMO-USRTYP-USER TO TRUE
345 SET CDEMO-PGM-ENTER TO TRUE
346 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
347 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
348 *
349 EXEC CICS XCTL
350 PROGRAM (CDEMO-TO-PROGRAM)
351 COMMAREA(CARDDEMO-COMMAREA)
352 END-EXEC
353 WHEN CDEMO-PGM-ENTER
354 ******************************************************************
355 * COMING FROM SOME OTHER CONTEXT
356 * SELECTION CRITERIA TO BE GATHERED
357 ******************************************************************
358 PERFORM 1000-SEND-MAP THRU
359 1000-SEND-MAP-EXIT
360 GO TO COMMON-RETURN
361 WHEN CDEMO-PGM-REENTER
362 PERFORM 2000-PROCESS-INPUTS
363 THRU 2000-PROCESS-INPUTS-EXIT
364 IF INPUT-ERROR
365 PERFORM 1000-SEND-MAP
366 THRU 1000-SEND-MAP-EXIT
367 GO TO COMMON-RETURN
368 ELSE
369 PERFORM 9000-READ-ACCT
370 THRU 9000-READ-ACCT-EXIT
371 PERFORM 1000-SEND-MAP
372 THRU 1000-SEND-MAP-EXIT
373 GO TO COMMON-RETURN
374 END-IF
375 WHEN OTHER
376 MOVE LIT-THISPGM TO ABEND-CULPRIT
377 MOVE '0001' TO ABEND-CODE
378 MOVE SPACES TO ABEND-REASON
379 MOVE 'UNEXPECTED DATA SCENARIO'
380 TO WS-RETURN-MSG
381 PERFORM SEND-PLAIN-TEXT
382 THRU SEND-PLAIN-TEXT-EXIT
383 END-EVALUATE
384
385 * If we had an error setup error message that slipped through
386 * Display and return
387 IF INPUT-ERROR
388 MOVE WS-RETURN-MSG TO CCARD-ERROR-MSG
389 PERFORM 1000-SEND-MAP
390 THRU 1000-SEND-MAP-EXIT
391 GO TO COMMON-RETURN
392 END-IF
393 .
394 COMMON-RETURN.
395 MOVE WS-RETURN-MSG TO CCARD-ERROR-MSG
396
397 MOVE CARDDEMO-COMMAREA TO WS-COMMAREA
398 MOVE WS-THIS-PROGCOMMAREA TO
399 WS-COMMAREA(LENGTH OF CARDDEMO-COMMAREA + 1:
400 LENGTH OF WS-THIS-PROGCOMMAREA )
401
402 EXEC CICS RETURN
403 TRANSID (LIT-THISTRANID)
404 COMMAREA (WS-COMMAREA)
405 LENGTH(LENGTH OF WS-COMMAREA)
406 END-EXEC
407 .
408 0000-MAIN-EXIT.
409 EXIT
410 .
411 0000-MAIN-EXIT.
412 EXIT
413 .
414
415
416 1000-SEND-MAP.
417 PERFORM 1100-SCREEN-INIT
418 THRU 1100-SCREEN-INIT-EXIT
419 PERFORM 1200-SETUP-SCREEN-VARS
420 THRU 1200-SETUP-SCREEN-VARS-EXIT
421 PERFORM 1300-SETUP-SCREEN-ATTRS
422 THRU 1300-SETUP-SCREEN-ATTRS-EXIT
423 PERFORM 1400-SEND-SCREEN
424 THRU 1400-SEND-SCREEN-EXIT
425 .
426
427 1000-SEND-MAP-EXIT.
428 EXIT
429 .
430
431 1100-SCREEN-INIT.
432 MOVE LOW-VALUES TO CACTVWAO
433
434 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
435
436 MOVE CCDA-TITLE01 TO TITLE01O OF CACTVWAO
437 MOVE CCDA-TITLE02 TO TITLE02O OF CACTVWAO
438 MOVE LIT-THISTRANID TO TRNNAMEO OF CACTVWAO
439 MOVE LIT-THISPGM TO PGMNAMEO OF CACTVWAO
440
441 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
442
443 MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM
444 MOVE WS-CURDATE-DAY TO WS-CURDATE-DD
445 MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY
446
447 MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF CACTVWAO
448
449 MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH
450 MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM
451 MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS
452
453 MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF CACTVWAO
454
455 .
456
457 1100-SCREEN-INIT-EXIT.
458 EXIT
459 .
460 1200-SETUP-SCREEN-VARS.
461 * INITIALIZE SEARCH CRITERIA
462 IF EIBCALEN = 0
463 SET WS-PROMPT-FOR-INPUT TO TRUE
464 ELSE
465 IF FLG-ACCTFILTER-BLANK
466 MOVE LOW-VALUES TO ACCTSIDO OF CACTVWAO
467 ELSE
468 MOVE CC-ACCT-ID TO ACCTSIDO OF CACTVWAO
469 END-IF
470
471 IF FOUND-ACCT-IN-MASTER
472 OR FOUND-CUST-IN-MASTER
473 MOVE ACCT-ACTIVE-STATUS TO ACSTTUSO OF CACTVWAO
474
475 MOVE ACCT-CURR-BAL TO ACURBALO OF CACTVWAO
476
477 MOVE ACCT-CREDIT-LIMIT TO ACRDLIMO OF CACTVWAO
478
479 MOVE ACCT-CASH-CREDIT-LIMIT
480 TO ACSHLIMO OF CACTVWAO
481
482 MOVE ACCT-CURR-CYC-CREDIT
483 TO ACRCYCRO OF CACTVWAO
484
485 MOVE ACCT-CURR-CYC-DEBIT TO ACRCYDBO OF CACTVWAO
486
487 MOVE ACCT-OPEN-DATE TO ADTOPENO OF CACTVWAO
488 MOVE ACCT-EXPIRAION-DATE TO AEXPDTO OF CACTVWAO
489 MOVE ACCT-REISSUE-DATE TO AREISDTO OF CACTVWAO
490 MOVE ACCT-GROUP-ID TO AADDGRPO OF CACTVWAO
491 END-IF
492
493 IF FOUND-CUST-IN-MASTER
494 MOVE CUST-ID TO ACSTNUMO OF CACTVWAO
495 * MOVE CUST-SSN TO ACSTSSNO OF CACTVWAO
496 STRING
497 CUST-SSN(1:3)
498 '-'
499 CUST-SSN(4:2)
500 '-'
501 CUST-SSN(6:4)
502 DELIMITED BY SIZE
503 INTO ACSTSSNO OF CACTVWAO
504 END-STRING
505 MOVE CUST-FICO-CREDIT-SCORE
506 TO ACSTFCOO OF CACTVWAO
507 MOVE CUST-DOB-YYYY-MM-DD TO ACSTDOBO OF CACTVWAO
508 MOVE CUST-FIRST-NAME TO ACSFNAMO OF CACTVWAO
509 MOVE CUST-MIDDLE-NAME TO ACSMNAMO OF CACTVWAO
510 MOVE CUST-LAST-NAME TO ACSLNAMO OF CACTVWAO
511 MOVE CUST-ADDR-LINE-1 TO ACSADL1O OF CACTVWAO
512 MOVE CUST-ADDR-LINE-2 TO ACSADL2O OF CACTVWAO
513 MOVE CUST-ADDR-LINE-3 TO ACSCITYO OF CACTVWAO
514 MOVE CUST-ADDR-STATE-CD TO ACSSTTEO OF CACTVWAO
515 MOVE CUST-ADDR-ZIP TO ACSZIPCO OF CACTVWAO
516 MOVE CUST-ADDR-COUNTRY-CD TO ACSCTRYO OF CACTVWAO
517 MOVE CUST-PHONE-NUM-1 TO ACSPHN1O OF CACTVWAO
518 MOVE CUST-PHONE-NUM-2 TO ACSPHN2O OF CACTVWAO
519 MOVE CUST-GOVT-ISSUED-ID TO ACSGOVTO OF CACTVWAO
520 MOVE CUST-EFT-ACCOUNT-ID TO ACSEFTCO OF CACTVWAO
521 MOVE CUST-PRI-CARD-HOLDER-IND
522 TO ACSPFLGO OF CACTVWAO
523 END-IF
524
525 END-IF
526
527 * SETUP MESSAGE
528 IF WS-NO-INFO-MESSAGE
529 SET WS-PROMPT-FOR-INPUT TO TRUE
530 END-IF
531
532 MOVE WS-RETURN-MSG TO ERRMSGO OF CACTVWAO
533
534 MOVE WS-INFO-MSG TO INFOMSGO OF CACTVWAO
535 .
536
537 1200-SETUP-SCREEN-VARS-EXIT.
538 EXIT
539 .
540
541 1300-SETUP-SCREEN-ATTRS.
542 * PROTECT OR UNPROTECT BASED ON CONTEXT
543 MOVE DFHBMFSE TO ACCTSIDA OF CACTVWAI
544
545 * POSITION CURSOR
546 EVALUATE TRUE
547 WHEN FLG-ACCTFILTER-NOT-OK
548 WHEN FLG-ACCTFILTER-BLANK
549 MOVE -1 TO ACCTSIDL OF CACTVWAI
550 WHEN OTHER
551 MOVE -1 TO ACCTSIDL OF CACTVWAI
552 END-EVALUATE
553
554 * SETUP COLOR
555 MOVE DFHDFCOL TO ACCTSIDC OF CACTVWAO
556
557 IF FLG-ACCTFILTER-NOT-OK
558 MOVE DFHRED TO ACCTSIDC OF CACTVWAO
559 END-IF
560
561 IF FLG-ACCTFILTER-BLANK
562 AND CDEMO-PGM-REENTER
563 MOVE '*' TO ACCTSIDO OF CACTVWAO
564 MOVE DFHRED TO ACCTSIDC OF CACTVWAO
565 END-IF
566
567 IF WS-NO-INFO-MESSAGE
568 MOVE DFHBMDAR TO INFOMSGC OF CACTVWAO
569 ELSE
570 MOVE DFHNEUTR TO INFOMSGC OF CACTVWAO
571 END-IF
572 .
573
574 1300-SETUP-SCREEN-ATTRS-EXIT.
575 EXIT
576 .
577 1400-SEND-SCREEN.
578
579 MOVE LIT-THISMAPSET TO CCARD-NEXT-MAPSET
580 MOVE LIT-THISMAP TO CCARD-NEXT-MAP
581 SET CDEMO-PGM-REENTER TO TRUE
582
583 EXEC CICS SEND MAP(CCARD-NEXT-MAP)
584 MAPSET(CCARD-NEXT-MAPSET)
585 FROM(CACTVWAO)
586 CURSOR
587 ERASE
588 FREEKB
589 RESP(WS-RESP-CD)
590 END-EXEC
591 .
592 1400-SEND-SCREEN-EXIT.
593 EXIT
594 .
595
596 2000-PROCESS-INPUTS.
597 PERFORM 2100-RECEIVE-MAP
598 THRU 2100-RECEIVE-MAP-EXIT
599 PERFORM 2200-EDIT-MAP-INPUTS
600 THRU 2200-EDIT-MAP-INPUTS-EXIT
601 MOVE WS-RETURN-MSG TO CCARD-ERROR-MSG
602 MOVE LIT-THISPGM TO CCARD-NEXT-PROG
603 MOVE LIT-THISMAPSET TO CCARD-NEXT-MAPSET
604 MOVE LIT-THISMAP TO CCARD-NEXT-MAP
605 .
606
607 2000-PROCESS-INPUTS-EXIT.
608 EXIT
609 .
610 2100-RECEIVE-MAP.
611 EXEC CICS RECEIVE MAP(LIT-THISMAP)
612 MAPSET(LIT-THISMAPSET)
613 INTO(CACTVWAI)
614 RESP(WS-RESP-CD)
615 RESP2(WS-REAS-CD)
616 END-EXEC
617 .
618
619 2100-RECEIVE-MAP-EXIT.
620 EXIT
621 .
622 2200-EDIT-MAP-INPUTS.
623
624 SET INPUT-OK TO TRUE
625 SET FLG-ACCTFILTER-ISVALID TO TRUE
626
627 * REPLACE * WITH LOW-VALUES
628 IF ACCTSIDI OF CACTVWAI = '*'
629 OR ACCTSIDI OF CACTVWAI = SPACES
630 MOVE LOW-VALUES TO CC-ACCT-ID
631 ELSE
632 MOVE ACCTSIDI OF CACTVWAI TO CC-ACCT-ID
633 END-IF
634
635 * INDIVIDUAL FIELD EDITS
636 PERFORM 2210-EDIT-ACCOUNT
637 THRU 2210-EDIT-ACCOUNT-EXIT
638
639 * CROSS FIELD EDITS
640 IF FLG-ACCTFILTER-BLANK
641 SET NO-SEARCH-CRITERIA-RECEIVED TO TRUE
642 END-IF
643 .
644
645 2200-EDIT-MAP-INPUTS-EXIT.
646 EXIT
647 .
648
649 2210-EDIT-ACCOUNT.
650 SET FLG-ACCTFILTER-NOT-OK TO TRUE
651
652 * Not supplied
653 IF CC-ACCT-ID EQUAL LOW-VALUES
654 OR CC-ACCT-ID EQUAL SPACES
655 SET INPUT-ERROR TO TRUE
656 SET FLG-ACCTFILTER-BLANK TO TRUE
657 IF WS-RETURN-MSG-OFF
658 SET WS-PROMPT-FOR-ACCT TO TRUE
659 END-IF
660 MOVE ZEROES TO CDEMO-ACCT-ID
661 GO TO 2210-EDIT-ACCOUNT-EXIT
662 END-IF
663 *
664 * Not numeric
665 * Not 11 characters
666 IF CC-ACCT-ID IS NOT NUMERIC
667 OR CC-ACCT-ID EQUAL ZEROES
668 SET INPUT-ERROR TO TRUE
669 SET FLG-ACCTFILTER-NOT-OK TO TRUE
670 IF WS-RETURN-MSG-OFF
671 MOVE
672 'Account Filter must be a non-zero 11 digit number' 00
673 TO WS-RETURN-MSG
674 END-IF
675 MOVE ZERO TO CDEMO-ACCT-ID
676 GO TO 2210-EDIT-ACCOUNT-EXIT
677 ELSE
678 MOVE CC-ACCT-ID TO CDEMO-ACCT-ID
679 SET FLG-ACCTFILTER-ISVALID TO TRUE
680 END-IF
681 .
682
683 2210-EDIT-ACCOUNT-EXIT.
684 EXIT
685 .
686
687 9000-READ-ACCT.
688
689 SET WS-NO-INFO-MESSAGE TO TRUE
690
691 MOVE CDEMO-ACCT-ID TO WS-CARD-RID-ACCT-ID
692
693 PERFORM 9200-GETCARDXREF-BYACCT
694 THRU 9200-GETCARDXREF-BYACCT-EXIT
695
696 * IF DID-NOT-FIND-ACCT-IN-CARDXREF
697 IF FLG-ACCTFILTER-NOT-OK
698 GO TO 9000-READ-ACCT-EXIT
699 END-IF
700
701 PERFORM 9300-GETACCTDATA-BYACCT
702 THRU 9300-GETACCTDATA-BYACCT-EXIT
703
704 IF DID-NOT-FIND-ACCT-IN-ACCTDAT
705 GO TO 9000-READ-ACCT-EXIT
706 END-IF
707
708 MOVE CDEMO-CUST-ID TO WS-CARD-RID-CUST-ID
709
710 PERFORM 9400-GETCUSTDATA-BYCUST
711 THRU 9400-GETCUSTDATA-BYCUST-EXIT
712
713 IF DID-NOT-FIND-CUST-IN-CUSTDAT
714 GO TO 9000-READ-ACCT-EXIT
715 END-IF
716
717
718 .
719
720 9000-READ-ACCT-EXIT.
721 EXIT
722 .
723 9200-GETCARDXREF-BYACCT.
724
725 * Read the Card file. Access via alternate index ACCTID
726 *
727 EXEC CICS READ
728 DATASET (LIT-CARDXREFNAME-ACCT-PATH)
729 RIDFLD (WS-CARD-RID-ACCT-ID-X)
730 KEYLENGTH (LENGTH OF WS-CARD-RID-ACCT-ID-X)
731 INTO (CARD-XREF-RECORD)
732 LENGTH (LENGTH OF CARD-XREF-RECORD)
733 RESP (WS-RESP-CD)
734 RESP2 (WS-REAS-CD)
735 END-EXEC
736
737 EVALUATE WS-RESP-CD
738 WHEN DFHRESP(NORMAL)
739 MOVE XREF-CUST-ID TO CDEMO-CUST-ID
740 MOVE XREF-CARD-NUM TO CDEMO-CARD-NUM
741 WHEN DFHRESP(NOTFND)
742 SET INPUT-ERROR TO TRUE
743 SET FLG-ACCTFILTER-NOT-OK TO TRUE
744 IF WS-RETURN-MSG-OFF
745 MOVE WS-RESP-CD TO ERROR-RESP
746 MOVE WS-REAS-CD TO ERROR-RESP2
747 STRING
748 'Account:'
749 WS-CARD-RID-ACCT-ID-X
750 ' not found in'
751 ' Cross ref file. Resp:'
752 ERROR-RESP
753 ' Reas:'
754 ERROR-RESP2
755 DELIMITED BY SIZE
756 INTO WS-RETURN-MSG
757 END-STRING
758 END-IF
759 WHEN OTHER
760 SET INPUT-ERROR TO TRUE
761 SET FLG-ACCTFILTER-NOT-OK TO TRUE
762 MOVE 'READ' TO ERROR-OPNAME
763 MOVE LIT-CARDXREFNAME-ACCT-PATH TO ERROR-FILE
764 MOVE WS-RESP-CD TO ERROR-RESP
765 MOVE WS-REAS-CD TO ERROR-RESP2
766 MOVE WS-FILE-ERROR-MESSAGE TO WS-RETURN-MSG
767 * WS-LONG-MSG
768 * PERFORM SEND-LONG-TEXT
769 END-EVALUATE
770 .
771 9200-GETCARDXREF-BYACCT-EXIT.
772 EXIT
773 .
774 9300-GETACCTDATA-BYACCT.
775
776 EXEC CICS READ
777 DATASET (LIT-ACCTFILENAME)
778 RIDFLD (WS-CARD-RID-ACCT-ID-X)
779 KEYLENGTH (LENGTH OF WS-CARD-RID-ACCT-ID-X)
780 INTO (ACCOUNT-RECORD)
781 LENGTH (LENGTH OF ACCOUNT-RECORD)
782 RESP (WS-RESP-CD)
783 RESP2 (WS-REAS-CD)
784 END-EXEC
785
786 EVALUATE WS-RESP-CD
787 WHEN DFHRESP(NORMAL)
788 SET FOUND-ACCT-IN-MASTER TO TRUE
789 WHEN DFHRESP(NOTFND)
790 SET INPUT-ERROR TO TRUE
791 SET FLG-ACCTFILTER-NOT-OK TO TRUE
792 * SET DID-NOT-FIND-ACCT-IN-ACCTDAT TO TRUE
793 IF WS-RETURN-MSG-OFF
794 MOVE WS-RESP-CD TO ERROR-RESP
795 MOVE WS-REAS-CD TO ERROR-RESP2
796 STRING
797 'Account:'
798 WS-CARD-RID-ACCT-ID-X
799 ' not found in'
800 ' Acct Master file.Resp:'
801 ERROR-RESP
802 ' Reas:'
803 ERROR-RESP2
804 DELIMITED BY SIZE
805 INTO WS-RETURN-MSG
806 END-STRING
807 END-IF
808 *
809 WHEN OTHER
810 SET INPUT-ERROR TO TRUE
811 SET FLG-ACCTFILTER-NOT-OK TO TRUE
812 MOVE 'READ' TO ERROR-OPNAME
813 MOVE LIT-ACCTFILENAME TO ERROR-FILE
814 MOVE WS-RESP-CD TO ERROR-RESP
815 MOVE WS-REAS-CD TO ERROR-RESP2
816 MOVE WS-FILE-ERROR-MESSAGE TO WS-RETURN-MSG
817 * WS-LONG-MSG
818 * PERFORM SEND-LONG-TEXT
819 END-EVALUATE
820 .
821 9300-GETACCTDATA-BYACCT-EXIT.
822 EXIT
823 .
824
825 9400-GETCUSTDATA-BYCUST.
826 EXEC CICS READ
827 DATASET (LIT-CUSTFILENAME)
828 RIDFLD (WS-CARD-RID-CUST-ID-X)
829 KEYLENGTH (LENGTH OF WS-CARD-RID-CUST-ID-X)
830 INTO (CUSTOMER-RECORD)
831 LENGTH (LENGTH OF CUSTOMER-RECORD)
832 RESP (WS-RESP-CD)
833 RESP2 (WS-REAS-CD)
834 END-EXEC
835
836 EVALUATE WS-RESP-CD
837 WHEN DFHRESP(NORMAL)
838 SET FOUND-CUST-IN-MASTER TO TRUE
839 WHEN DFHRESP(NOTFND)
840 SET INPUT-ERROR TO TRUE
841 SET FLG-CUSTFILTER-NOT-OK TO TRUE
842 * SET DID-NOT-FIND-CUST-IN-CUSTDAT TO TRUE
843 MOVE WS-RESP-CD TO ERROR-RESP
844 MOVE WS-REAS-CD TO ERROR-RESP2
845 IF WS-RETURN-MSG-OFF
846 STRING
847 'CustId:'
848 WS-CARD-RID-CUST-ID-X
849 ' not found'
850 ' in customer master.Resp: '
851 ERROR-RESP
852 ' REAS:'
853 ERROR-RESP2
854 DELIMITED BY SIZE
855 INTO WS-RETURN-MSG
856 END-STRING
857 END-IF
858 WHEN OTHER
859 SET INPUT-ERROR TO TRUE
860 SET FLG-CUSTFILTER-NOT-OK TO TRUE
861 MOVE 'READ' TO ERROR-OPNAME
862 MOVE LIT-CUSTFILENAME TO ERROR-FILE
863 MOVE WS-RESP-CD TO ERROR-RESP
864 MOVE WS-REAS-CD TO ERROR-RESP2
865 MOVE WS-FILE-ERROR-MESSAGE TO WS-RETURN-MSG
866 * WS-LONG-MSG
867 * PERFORM SEND-LONG-TEXT
868 END-EVALUATE
869 .
870 9400-GETCUSTDATA-BYCUST-EXIT.
871 EXIT
872 .
873
874 *****************************************************************
875 * Plain text exit - Dont use in production *
876 *****************************************************************
877 SEND-PLAIN-TEXT.
878 EXEC CICS SEND TEXT
879 FROM(WS-RETURN-MSG)
880 LENGTH(LENGTH OF WS-RETURN-MSG)
881 ERASE
882 FREEKB
883 END-EXEC
884
885 EXEC CICS RETURN
886 END-EXEC
887 .
888 SEND-PLAIN-TEXT-EXIT.
889 EXIT
890 .
891 *****************************************************************
892 * Display Long text and exit *
893 * This is primarily for debugging and should not be used in *
894 * regular course *
895 *****************************************************************
896 SEND-LONG-TEXT.
897 EXEC CICS SEND TEXT
898 FROM(WS-LONG-MSG)
899 LENGTH(LENGTH OF WS-LONG-MSG)
900 ERASE
901 FREEKB
902 END-EXEC
903
904 EXEC CICS RETURN
905 END-EXEC
906 .
907 SEND-LONG-TEXT-EXIT.
908 EXIT
909 .
910 *****************************************************************
911 *Common code to store PFKey
912 ******************************************************************
913 COPY 'CSSTRPFY'
914 .
915
916 ABEND-ROUTINE.
917
918 IF ABEND-MSG EQUAL LOW-VALUES
919 MOVE 'UNEXPECTED ABEND OCCURRED.' TO ABEND-MSG
920 END-IF
921
922 MOVE LIT-THISPGM TO ABEND-CULPRIT
923
924 EXEC CICS SEND
925 FROM (ABEND-DATA)
926 LENGTH(LENGTH OF ABEND-DATA)
927 NOHANDLE
928 END-EXEC
929
930 EXEC CICS HANDLE ABEND
931 CANCEL
932 END-EXEC
933
934 EXEC CICS ABEND
935 ABCODE('9999')
936 END-EXEC
937 .
938
939 *
940 * Ver: CardDemo_v1.0-15-g27d6c6f-68 Date: 2022-07-19 23:12:32 CDT
941 *