MFmainframe-rea
WS carddemo · 26f629ef

cobol · 887 lines · sha256 d5af307fb4b1a155 · guides at columns 7 and 72app/cbl/COCRDSLC.cbl

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