MFmainframe-rea
WS carddemo · 26f629ef

cobol · 1459 lines · sha256 d6a9210ad3062bd6 · guides at columns 7 and 72app/cbl/COCRDLIC.cbl

1 *****************************************************************
2 * Program: COCRDLIC.CBL *
3 * Layer: Business logic *
4 * Function: List Credit Cards
5 * a) All cards if no context passed and admin user
6 * b) Only the ones associated with ACCT in COMMAREA
7 * if user is not admin
8 ******************************************************************
9 * Copyright Amazon.com, Inc. or its affiliates.
10 * All Rights Reserved.
11 *
12 * Licensed under the Apache License, Version 2.0 (the "License").
13 * You may not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
15 *
16 * http://www.apache.org/licenses/LICENSE-2.0
17 *
18 * Unless required by applicable law or agreed to in writing,
19 * software distributed under the License is distributed on an
20 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
21 * either express or implied. See the License for the specific
22 * language governing permissions and limitations under the License
23 ******************************************************************
24
25 IDENTIFICATION DIVISION.
26 PROGRAM-ID.
27 COCRDLIC.
28 DATE-WRITTEN.
29 April 2022.
30 DATE-COMPILED.
31 Today.
32
33 ENVIRONMENT DIVISION.
34 INPUT-OUTPUT SECTION.
35
36 DATA DIVISION.
37
38 WORKING-STORAGE SECTION.
39
40
41 01 WS-MISC-STORAGE.
42 ******************************************************************
43 * General CICS related
44 ******************************************************************
45
46 05 WS-CICS-PROCESSNG-VARS.
47 07 WS-RESP-CD PIC S9(09) COMP
48 VALUE ZEROS.
49 07 WS-REAS-CD PIC S9(09) COMP
50 VALUE ZEROS.
51 07 WS-TRANID PIC X(4)
52 VALUE SPACES.
53 ******************************************************************
54 * Input edits
55 ******************************************************************
56 05 WS-INPUT-FLAG PIC X(1).
57 88 INPUT-OK VALUES '0'
58 ' '
59 LOW-VALUES.
60 88 INPUT-ERROR VALUE '1'.
61 05 WS-EDIT-ACCT-FLAG PIC X(1).
62 88 FLG-ACCTFILTER-NOT-OK VALUE '0'.
63 88 FLG-ACCTFILTER-ISVALID VALUE '1'.
64 88 FLG-ACCTFILTER-BLANK VALUE ' '.
65 05 WS-EDIT-CARD-FLAG PIC X(1).
66 88 FLG-CARDFILTER-NOT-OK VALUE '0'.
67 88 FLG-CARDFILTER-ISVALID VALUE '1'.
68 88 FLG-CARDFILTER-BLANK VALUE ' '.
69 05 WS-EDIT-SELECT-COUNTER PIC S9(04)
70 USAGE COMP-3
71 VALUE 0.
72 05 WS-EDIT-SELECT-FLAGS PIC X(7)
73 VALUE LOW-VALUES.
74 05 WS-EDIT-SELECT-ARRAY REDEFINES WS-EDIT-SELECT-FLAGS.
75 10 WS-EDIT-SELECT PIC X(1)
76 OCCURS 7 TIMES.
77 88 SELECT-OK VALUES 'S', 'U'.
78 88 VIEW-REQUESTED-ON VALUE 'S'.
79 88 UPDATE-REQUESTED-ON VALUE 'U'.
80 88 SELECT-BLANK VALUES
81 ' ',
82 LOW-VALUES.
83 05 WS-EDIT-SELECT-ERROR-FLAGS PIC X(7).
84 05 WS-EDIT-SELECT-ERROR-FLAGX REDEFINES
85 WS-EDIT-SELECT-ERROR-FLAGS.
86 10 WS-EDIT-SELECT-ERRORS OCCURS 7 TIMES.
87 20 WS-ROW-CRDSELECT-ERROR PIC X(1).
88 88 WS-ROW-SELECT-ERROR VALUE '1'.
89 05 WS-SUBSCRIPT-VARS.
90 10 I PIC S9(4) COMP
91 VALUE 0.
92 10 I-SELECTED PIC S9(4) COMP
93 VALUE 0.
94 88 DETAIL-WAS-REQUESTED VALUES 1 THRU 7.
95 ******************************************************************
96 * Output edits
97 ******************************************************************
98 05 CICS-OUTPUT-EDIT-VARS.
99 10 CARD-ACCT-ID-X PIC X(11).
100 10 CARD-ACCT-ID-N REDEFINES CARD-ACCT-ID-X
101 PIC 9(11).
102 10 CARD-CVV-CD-X PIC X(03).
103 10 CARD-CVV-CD-N REDEFINES CARD-CVV-CD-X
104 PIC 9(03).
105 10 FLG-PROTECT-SELECT-ROWS PIC X(1).
106 88 FLG-PROTECT-SELECT-ROWS-NO VALUE '0'.
107 88 FLG-PROTECT-SELECT-ROWS-YES VALUE '1'.
108 ******************************************************************
109 * Output Message Construction
110 ******************************************************************
111 05 WS-LONG-MSG PIC X(500).
112 05 WS-INFO-MSG PIC X(45).
113 88 WS-NO-INFO-MESSAGE VALUES
114 SPACES LOW-VALUES.
115 88 WS-INFORM-REC-ACTIONS VALUE
116 'TYPE S FOR DETAIL, U TO UPDATE ANY RECORD'.
117 05 WS-ERROR-MSG PIC X(75).
118 88 WS-ERROR-MSG-OFF VALUE SPACES.
119 88 WS-EXIT-MESSAGE VALUE
120 'PF03 PRESSED.EXITING'.
121 88 WS-NO-RECORDS-FOUND VALUE
122 'NO RECORDS FOUND FOR THIS SEARCH CONDITION.'.
123 88 WS-MORE-THAN-1-ACTION VALUE
124 'PLEASE SELECT ONLY ONE RECORD TO VIEW OR UPDATE'.
125 88 WS-INVALID-ACTION-CODE VALUE
126 'INVALID ACTION CODE'.
127 05 WS-PFK-FLAG PIC X(1).
128 88 PFK-VALID VALUE '0'.
129 88 PFK-INVALID VALUE '1'.
130 05 WS-CONTEXT-FLAG PIC X(1).
131 88 WS-CONTEXT-FRESH-START VALUE '0'.
132 88 WS-CONTEXT-FRESH-START-NO VALUE '1'.
133 ******************************************************************
134 * File and data Handling
135 ******************************************************************
136 05 WS-FILE-HANDLING-VARS.
137 10 WS-CARD-RID.
138 20 WS-CARD-RID-CARDNUM PIC X(16).
139 20 WS-CARD-RID-ACCT-ID PIC 9(11).
140 20 WS-CARD-RID-ACCT-ID-X REDEFINES
141 WS-CARD-RID-ACCT-ID PIC X(11).
142
143
144
145 05 WS-SCRN-COUNTER PIC S9(4) COMP VALUE 0.
146
147 05 WS-FILTER-RECORD-FLAG PIC X(1).
148 88 WS-EXCLUDE-THIS-RECORD VALUE '0'.
149 88 WS-DONOT-EXCLUDE-THIS-RECORD VALUE '1'.
150 05 WS-RECORDS-TO-PROCESS-FLAG PIC X(1).
151 88 READ-LOOP-EXIT VALUE '0'.
152 88 MORE-RECORDS-TO-READ VALUE '1'.
153 05 WS-FILE-ERROR-MESSAGE.
154 10 FILLER PIC X(12)
155 VALUE 'File Error:'.
156 10 ERROR-OPNAME PIC X(8)
157 VALUE SPACES.
158 10 FILLER PIC X(4)
159 VALUE ' on '.
160 10 ERROR-FILE PIC X(9)
161 VALUE SPACES.
162 10 FILLER PIC X(15)
163 VALUE
164 ' returned RESP '.
165 10 ERROR-RESP PIC X(10)
166 VALUE SPACES.
167 10 FILLER PIC X(7)
168 VALUE ',RESP2 '.
169 10 ERROR-RESP2 PIC X(10)
170 VALUE SPACES.
171 10 FILLER PIC X(5).
172
173 ******************************************************************
174 * Literals and Constants
175 ******************************************************************
176 01 WS-CONSTANTS.
177 05 WS-MAX-SCREEN-LINES PIC S9(4) COMP
178 VALUE 7.
179 05 LIT-THISPGM PIC X(8)
180 VALUE 'COCRDLIC'.
181 05 LIT-THISTRANID PIC X(4)
182 VALUE 'CCLI'.
183 05 LIT-THISMAPSET PIC X(7)
184 VALUE 'COCRDLI'.
185 05 LIT-THISMAP PIC X(7)
186 VALUE 'CCRDLIA'.
187 05 LIT-MENUPGM PIC X(8)
188 VALUE 'COMEN01C'.
189 05 LIT-MENUTRANID PIC X(4)
190 VALUE 'CM00'.
191 05 LIT-MENUMAPSET PIC X(7)
192 VALUE 'COMEN01'.
193 05 LIT-MENUMAP PIC X(7)
194 VALUE 'COMEN1A'.
195 05 LIT-CARDDTLPGM PIC X(8)
196 VALUE 'COCRDSLC'.
197 05 LIT-CARDDTLTRANID PIC X(4)
198 VALUE 'CCDL'.
199 05 LIT-CARDDTLMAPSET PIC X(7)
200 VALUE 'COCRDSL'.
201 05 LIT-CARDDTLMAP PIC X(7)
202 VALUE 'CCRDSLA'.
203 05 LIT-CARDUPDPGM PIC X(8)
204 VALUE 'COCRDUPC'.
205 05 LIT-CARDUPDTRANID PIC X(4)
206 VALUE 'CCUP'.
207 05 LIT-CARDUPDMAPSET PIC X(7)
208 VALUE 'COCRDUP'.
209 05 LIT-CARDUPDMAP PIC X(7)
210 VALUE 'CCRDUPA'.
211
212
213 05 LIT-CARD-FILE PIC X(8)
214 VALUE 'CARDDAT '.
215 05 LIT-CARD-FILE-ACCT-PATH PIC X(8)
216
217 VALUE 'CARDAIX '.
218 ******************************************************************
219 *Other common working storage Variables
220 ******************************************************************
221 COPY CVCRD01Y.
222
223 ******************************************************************
224 * Commarea manipulations
225 ******************************************************************
226 *Application Commmarea Copybook
227 COPY COCOM01Y.
228
229 01 WS-THIS-PROGCOMMAREA.
230 10 WS-CA-LAST-CARDKEY.
231 15 WS-CA-LAST-CARD-NUM PIC X(16).
232 15 WS-CA-LAST-CARD-ACCT-ID PIC 9(11).
233 10 WS-CA-FIRST-CARDKEY.
234 15 WS-CA-FIRST-CARD-NUM PIC X(16).
235 15 WS-CA-FIRST-CARD-ACCT-ID PIC 9(11).
236
237 10 WS-CA-SCREEN-NUM PIC 9(1).
238 88 CA-FIRST-PAGE VALUE 1.
239 10 WS-CA-LAST-PAGE-DISPLAYED PIC 9(1).
240 88 CA-LAST-PAGE-SHOWN VALUE 0.
241 88 CA-LAST-PAGE-NOT-SHOWN VALUE 9.
242 10 WS-CA-NEXT-PAGE-IND PIC X(1).
243 88 CA-NEXT-PAGE-NOT-EXISTS VALUE LOW-VALUES.
244 88 CA-NEXT-PAGE-EXISTS VALUE 'Y'.
245
246 10 WS-RETURN-FLAG PIC X(1).
247 88 WS-RETURN-FLAG-OFF VALUE LOW-VALUES.
248 88 WS-RETURN-FLAG-ON VALUE '1'.
249 ******************************************************************
250 * File Data Array 28 CHARS X 7 ROWS = 196
251 ******************************************************************
252 05 WS-SCREEN-DATA.
253 10 WS-ALL-ROWS PIC X(196).
254 10 FILLER REDEFINES WS-ALL-ROWS.
255 15 WS-SCREEN-ROWS OCCURS 7 TIMES.
256 20 WS-EACH-ROW.
257 25 WS-EACH-CARD.
258 30 WS-ROW-ACCTNO PIC X(11).
259 30 WS-ROW-CARD-NUM PIC X(16).
260 30 WS-ROW-CARD-STATUS PIC X(1).
261
262 01 WS-COMMAREA PIC X(2000).
263
264
265
266 *IBM SUPPLIED COPYBOOKS
267 COPY DFHBMSCA.
268 COPY DFHAID.
269
270 *COMMON COPYBOOKS
271 *Screen Titles
272 COPY COTTL01Y.
273 *Credit Card Search Screen Layout
274 *COPY COCRDSL.
275 *Credit Card List Screen Layout
276 COPY COCRDLI.
277
278 *Current Date
279 COPY CSDAT01Y.
280 *Common Messages
281 COPY CSMSG01Y.
282 *Abend Variables
283 *COPY CSMSG02Y.
284 *Signed on user data
285 COPY CSUSR01Y.
286
287 *Dataset layouts
288
289 *CARD RECORD LAYOUT
290 COPY CVACT02Y.
291
292 LINKAGE SECTION.
293 01 DFHCOMMAREA.
294 05 FILLER PIC X(1)
295 OCCURS 1 TO 32767 TIMES DEPENDING ON EIBCALEN.
296
297 PROCEDURE DIVISION.
298 0000-MAIN.
299
300 INITIALIZE CC-WORK-AREA
301 WS-MISC-STORAGE
302 WS-COMMAREA
303
304 *****************************************************************
305 * Store our context
306 *****************************************************************
307 MOVE LIT-THISTRANID TO WS-TRANID
308 *****************************************************************
309 * Ensure error message is cleared *
310 *****************************************************************
311 SET WS-ERROR-MSG-OFF TO TRUE
312 *****************************************************************
313 * Retrived passed data if any. Initialize them if first run.
314 *****************************************************************
315 IF EIBCALEN = 0
316 INITIALIZE CARDDEMO-COMMAREA
317 WS-THIS-PROGCOMMAREA
318 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
319 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
320 SET CDEMO-USRTYP-USER TO TRUE
321 SET CDEMO-PGM-ENTER TO TRUE
322 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
323 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
324 SET CA-FIRST-PAGE TO TRUE
325 SET CA-LAST-PAGE-NOT-SHOWN TO TRUE
326 ELSE
327 MOVE DFHCOMMAREA (1:LENGTH OF CARDDEMO-COMMAREA) TO
328 CARDDEMO-COMMAREA
329 MOVE DFHCOMMAREA(LENGTH OF CARDDEMO-COMMAREA + 1:
330 LENGTH OF WS-THIS-PROGCOMMAREA )TO
331 WS-THIS-PROGCOMMAREA
332 END-IF
333 *****************************************************************
334 * If coming in from menu. Lets forget the past and start afresh *
335 *****************************************************************
336 IF (CDEMO-PGM-ENTER
337 AND CDEMO-FROM-PROGRAM NOT EQUAL LIT-THISPGM)
338 INITIALIZE WS-THIS-PROGCOMMAREA
339 SET CDEMO-PGM-ENTER TO TRUE
340 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
341 SET CA-FIRST-PAGE TO TRUE
342 SET CA-LAST-PAGE-NOT-SHOWN TO TRUE
343 END-IF
344
345 ******************************************************************
346 * Remap PFkeys as needed.
347 * Store the Mapped PF Key
348 *****************************************************************
349 PERFORM YYYY-STORE-PFKEY
350 THRU YYYY-STORE-PFKEY-EXIT
351
352 ******************************************************************
353 * If something is present in commarea
354 * and the from program is this program itself,
355 * read and edit the inputs given
356 *****************************************************************
357 IF EIBCALEN > 0
358 AND CDEMO-FROM-PROGRAM EQUAL LIT-THISPGM
359 PERFORM 2000-RECEIVE-MAP
360 THRU 2000-RECEIVE-MAP-EXIT
361
362 END-IF
363 *****************************************************************
364 * Check the mapped key to see if its valid at this point *
365 * F3 - Exit
366 * Enter - List of cards for current start key
367 * F8 - Page down
368 * F7 - Page up
369 *****************************************************************
370 SET PFK-INVALID TO TRUE
371 IF CCARD-AID-ENTER OR
372 CCARD-AID-PFK03 OR
373 CCARD-AID-PFK07 OR
374 CCARD-AID-PFK08
375 SET PFK-VALID TO TRUE
376 END-IF
377
378 IF PFK-INVALID
379 SET CCARD-AID-ENTER TO TRUE
380 END-IF
381 *****************************************************************
382 * If the user pressed PF3 go back to main menu
383 *****************************************************************
384 IF (CCARD-AID-PFK03
385 AND CDEMO-FROM-PROGRAM EQUAL LIT-THISPGM)
386 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
387 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
388 SET CDEMO-USRTYP-USER TO TRUE
389 SET CDEMO-PGM-ENTER TO TRUE
390 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
391 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
392 MOVE LIT-MENUPGM TO CDEMO-TO-PROGRAM
393
394 MOVE LIT-MENUMAPSET TO CCARD-NEXT-MAPSET
395 MOVE LIT-THISMAP TO CCARD-NEXT-MAP
396 SET WS-EXIT-MESSAGE TO TRUE
397
398 * CALL MENU PROGRAM
399 *
400 SET CDEMO-PGM-ENTER TO TRUE
401 *
402 EXEC CICS XCTL
403 PROGRAM (LIT-MENUPGM)
404 COMMAREA(CARDDEMO-COMMAREA)
405 END-EXEC
406 END-IF
407 *****************************************************************
408 * If the user did not press PF8, lets reset the last page flag
409 *****************************************************************
410 IF CCARD-AID-PFK08
411 CONTINUE
412 ELSE
413 SET CA-LAST-PAGE-NOT-SHOWN TO TRUE
414 END-IF
415 *****************************************************************
416 * Now we decide what to do
417 *****************************************************************
418 EVALUATE TRUE
419 WHEN INPUT-ERROR
420 *****************************************************************
421 * ASK FOR CORRECTIONS TO INPUTS
422 *****************************************************************
423 MOVE WS-ERROR-MSG TO CCARD-ERROR-MSG
424 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
425 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
426 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
427
428 MOVE LIT-THISPGM TO CCARD-NEXT-PROG
429 MOVE LIT-THISMAPSET TO CCARD-NEXT-MAPSET
430 MOVE LIT-THISMAP TO CCARD-NEXT-MAP
431 IF NOT FLG-ACCTFILTER-NOT-OK
432 AND NOT FLG-CARDFILTER-NOT-OK
433 PERFORM 9000-READ-FORWARD
434 THRU 9000-READ-FORWARD-EXIT
435 END-IF
436 PERFORM 1000-SEND-MAP
437 THRU 1000-SEND-MAP
438 GO TO COMMON-RETURN
439 WHEN CCARD-AID-PFK07
440 AND CA-FIRST-PAGE
441 *****************************************************************
442 * PAGE UP - PF7 - BUT ALREADY ON FIRST PAGE
443 *****************************************************************
444 WHEN CCARD-AID-PFK07
445 AND CA-FIRST-PAGE
446 MOVE WS-CA-FIRST-CARD-NUM
447 TO WS-CARD-RID-CARDNUM
448 * MOVE WS-CA-FIRST-CARD-ACCT-ID
449 * TO WS-CARD-RID-ACCT-ID
450 PERFORM 9000-READ-FORWARD
451 THRU 9000-READ-FORWARD-EXIT
452 PERFORM 1000-SEND-MAP
453 THRU 1000-SEND-MAP
454 GO TO COMMON-RETURN
455 *****************************************************************
456 * BACK - PF3 IF WE CAME FROM SOME OTHER PROGRAM
457 *****************************************************************
458 WHEN CCARD-AID-PFK03
459 WHEN CDEMO-PGM-REENTER AND
460 CDEMO-FROM-PROGRAM NOT EQUAL LIT-THISPGM
461
462 INITIALIZE CARDDEMO-COMMAREA
463 WS-THIS-PROGCOMMAREA
464 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
465 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
466 SET CDEMO-USRTYP-USER TO TRUE
467 SET CDEMO-PGM-ENTER TO TRUE
468 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
469 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
470 SET CA-FIRST-PAGE TO TRUE
471 SET CA-LAST-PAGE-NOT-SHOWN TO TRUE
472
473 MOVE WS-CA-FIRST-CARD-NUM
474 TO WS-CARD-RID-CARDNUM
475 * MOVE WS-CA-FIRST-CARD-ACCT-ID
476 * TO WS-CARD-RID-ACCT-ID
477
478 PERFORM 9000-READ-FORWARD
479 THRU 9000-READ-FORWARD-EXIT
480 PERFORM 1000-SEND-MAP
481 THRU 1000-SEND-MAP
482 GO TO COMMON-RETURN
483 *****************************************************************
484 * PAGE DOWN
485 *****************************************************************
486 WHEN CCARD-AID-PFK08
487 AND CA-NEXT-PAGE-EXISTS
488 MOVE WS-CA-LAST-CARD-NUM
489 TO WS-CARD-RID-CARDNUM
490 * MOVE WS-CA-LAST-CARD-ACCT-ID
491 * TO WS-CARD-RID-ACCT-ID
492 ADD +1 TO WS-CA-SCREEN-NUM
493 PERFORM 9000-READ-FORWARD
494 THRU 9000-READ-FORWARD-EXIT
495 PERFORM 1000-SEND-MAP
496 THRU 1000-SEND-MAP-EXIT
497 GO TO COMMON-RETURN
498 *****************************************************************
499 * PAGE UP
500 *****************************************************************
501 WHEN CCARD-AID-PFK07
502 AND NOT CA-FIRST-PAGE
503
504 MOVE WS-CA-FIRST-CARD-NUM
505 TO WS-CARD-RID-CARDNUM
506 * MOVE WS-CA-FIRST-CARD-ACCT-ID
507 * TO WS-CARD-RID-ACCT-ID
508 SUBTRACT 1 FROM WS-CA-SCREEN-NUM
509 PERFORM 9100-READ-BACKWARDS
510 THRU 9100-READ-BACKWARDS-EXIT
511 PERFORM 1000-SEND-MAP
512 THRU 1000-SEND-MAP-EXIT
513 GO TO COMMON-RETURN
514 *****************************************************************
515 * TRANSFER TO CARD DETAIL VIEW
516 *****************************************************************
517 WHEN CCARD-AID-ENTER
518 AND VIEW-REQUESTED-ON(I-SELECTED)
519 AND CDEMO-FROM-PROGRAM EQUAL LIT-THISPGM
520 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
521 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
522 SET CDEMO-USRTYP-USER TO TRUE
523 SET CDEMO-PGM-ENTER TO TRUE
524 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
525 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
526 MOVE LIT-CARDDTLPGM TO CCARD-NEXT-PROG
527
528 MOVE LIT-CARDDTLMAPSET TO CCARD-NEXT-MAPSET
529 MOVE LIT-CARDDTLMAP TO CCARD-NEXT-MAP
530
531 MOVE WS-ROW-ACCTNO (I-SELECTED)
532 TO CDEMO-ACCT-ID
533 MOVE WS-ROW-CARD-NUM (I-SELECTED)
534 TO CDEMO-CARD-NUM
535
536 * CALL CARD DETAIL PROGRAM
537 *
538 EXEC CICS XCTL
539 PROGRAM (CCARD-NEXT-PROG)
540 COMMAREA(CARDDEMO-COMMAREA)
541 END-EXEC
542 *****************************************************************
543 * TRANSFER TO CARD UPDATED PROGRAM
544 *****************************************************************
545 WHEN CCARD-AID-ENTER
546 AND UPDATE-REQUESTED-ON(I-SELECTED)
547 AND CDEMO-FROM-PROGRAM EQUAL LIT-THISPGM
548 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
549 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
550 SET CDEMO-USRTYP-USER TO TRUE
551 SET CDEMO-PGM-ENTER TO TRUE
552 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
553 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
554 MOVE LIT-CARDUPDPGM TO CCARD-NEXT-PROG
555
556 MOVE LIT-CARDUPDMAPSET TO CCARD-NEXT-MAPSET
557 MOVE LIT-CARDUPDMAP TO CCARD-NEXT-MAP
558
559 MOVE WS-ROW-ACCTNO (I-SELECTED)
560 TO CDEMO-ACCT-ID
561 MOVE WS-ROW-CARD-NUM (I-SELECTED)
562 TO CDEMO-CARD-NUM
563
564 * CALL CARD UPDATE PROGRAM
565 *
566 EXEC CICS XCTL
567 PROGRAM (CCARD-NEXT-PROG)
568 COMMAREA(CARDDEMO-COMMAREA)
569 END-EXEC
570
571 *****************************************************************
572 WHEN OTHER
573 *****************************************************************
574 MOVE WS-CA-FIRST-CARD-NUM
575 TO WS-CARD-RID-CARDNUM
576 * MOVE WS-CA-FIRST-CARD-ACCT-ID
577 * TO WS-CARD-RID-ACCT-ID
578 PERFORM 9000-READ-FORWARD
579 THRU 9000-READ-FORWARD-EXIT
580 PERFORM 1000-SEND-MAP
581 THRU 1000-SEND-MAP
582 GO TO COMMON-RETURN
583 END-EVALUATE
584
585 * If we had an error setup error message to display and return
586 IF INPUT-ERROR
587 MOVE WS-ERROR-MSG TO CCARD-ERROR-MSG
588 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
589 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
590 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
591
592 MOVE LIT-THISPGM TO CCARD-NEXT-PROG
593 MOVE LIT-THISMAPSET TO CCARD-NEXT-MAPSET
594 MOVE LIT-THISMAP TO CCARD-NEXT-MAP
595 * PERFORM 1000-SEND-MAP
596 * THRU 1000-SEND-MAP
597 GO TO COMMON-RETURN
598 END-IF
599
600 MOVE LIT-THISPGM TO CCARD-NEXT-PROG
601 GO TO COMMON-RETURN
602 .
603
604 COMMON-RETURN.
605 MOVE LIT-THISTRANID TO CDEMO-FROM-TRANID
606 MOVE LIT-THISPGM TO CDEMO-FROM-PROGRAM
607 MOVE LIT-THISMAPSET TO CDEMO-LAST-MAPSET
608 MOVE LIT-THISMAP TO CDEMO-LAST-MAP
609 MOVE CARDDEMO-COMMAREA TO WS-COMMAREA
610 MOVE WS-THIS-PROGCOMMAREA TO
611 WS-COMMAREA(LENGTH OF CARDDEMO-COMMAREA + 1:
612 LENGTH OF WS-THIS-PROGCOMMAREA )
613
614
615 EXEC CICS RETURN
616 TRANSID (LIT-THISTRANID)
617 COMMAREA (WS-COMMAREA)
618 LENGTH(LENGTH OF WS-COMMAREA)
619 END-EXEC
620 .
621 0000-MAIN-EXIT.
622 EXIT
623 .
624 1000-SEND-MAP.
625 PERFORM 1100-SCREEN-INIT
626 THRU 1100-SCREEN-INIT-EXIT
627 PERFORM 1200-SCREEN-ARRAY-INIT
628 THRU 1200-SCREEN-ARRAY-INIT-EXIT
629 PERFORM 1250-SETUP-ARRAY-ATTRIBS
630 THRU 1250-SETUP-ARRAY-ATTRIBS-EXIT
631 PERFORM 1300-SETUP-SCREEN-ATTRS
632 THRU 1300-SETUP-SCREEN-ATTRS-EXIT
633 PERFORM 1400-SETUP-MESSAGE
634 THRU 1400-SETUP-MESSAGE-EXIT
635 PERFORM 1500-SEND-SCREEN
636 THRU 1500-SEND-SCREEN-EXIT
637 .
638
639 1000-SEND-MAP-EXIT.
640 EXIT
641 .
642 1100-SCREEN-INIT.
643 MOVE LOW-VALUES TO CCRDLIAO
644
645 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
646
647 MOVE CCDA-TITLE01 TO TITLE01O OF CCRDLIAO
648 MOVE CCDA-TITLE02 TO TITLE02O OF CCRDLIAO
649 MOVE LIT-THISTRANID TO TRNNAMEO OF CCRDLIAO
650 MOVE LIT-THISPGM TO PGMNAMEO OF CCRDLIAO
651
652 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
653
654 MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM
655 MOVE WS-CURDATE-DAY TO WS-CURDATE-DD
656 MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY
657
658 MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF CCRDLIAO
659
660 MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH
661 MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM
662 MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS
663
664 MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF CCRDLIAO
665 * PAGE NUMBER
666 *
667 MOVE WS-CA-SCREEN-NUM TO PAGENOO OF CCRDLIAO
668
669 SET WS-NO-INFO-MESSAGE TO TRUE
670 MOVE WS-INFO-MSG TO INFOMSGO OF CCRDLIAO
671 MOVE DFHBMDAR TO INFOMSGC OF CCRDLIAO
672 .
673
674 1100-SCREEN-INIT-EXIT.
675 EXIT
676 .
677
678 1200-SCREEN-ARRAY-INIT.
679 * USE REDEFINES AND CLEAN UP REPETITIVE CODE !!
680 IF WS-EACH-CARD(1) EQUAL LOW-VALUES
681 CONTINUE
682 ELSE
683 MOVE WS-EDIT-SELECT(1) TO CRDSEL1O OF CCRDLIAO
684 MOVE WS-ROW-ACCTNO(1) TO ACCTNO1O OF CCRDLIAO
685 MOVE WS-ROW-CARD-NUM(1) TO CRDNUM1O OF CCRDLIAO
686 MOVE WS-ROW-CARD-STATUS(1) TO CRDSTS1O OF CCRDLIAO
687 END-IF
688
689 IF WS-EACH-CARD(2) EQUAL LOW-VALUES
690 CONTINUE
691 ELSE
692 MOVE WS-EDIT-SELECT(2) TO CRDSEL2O OF CCRDLIAO
693 MOVE WS-ROW-ACCTNO(2) TO ACCTNO2O OF CCRDLIAO
694 MOVE WS-ROW-CARD-NUM(2) TO CRDNUM2O OF CCRDLIAO
695 MOVE WS-ROW-CARD-STATUS(2) TO CRDSTS2O OF CCRDLIAO
696 END-IF
697
698 IF WS-EACH-CARD(3) EQUAL LOW-VALUES
699 CONTINUE
700 ELSE
701 MOVE WS-EDIT-SELECT(3) TO CRDSEL3O OF CCRDLIAO
702 MOVE WS-ROW-ACCTNO(3) TO ACCTNO3O OF CCRDLIAO
703 MOVE WS-ROW-CARD-NUM(3) TO CRDNUM3O OF CCRDLIAO
704 MOVE WS-ROW-CARD-STATUS(3) TO CRDSTS3O OF CCRDLIAO
705 END-IF
706
707 IF WS-EACH-CARD(4) EQUAL LOW-VALUES
708 CONTINUE
709 ELSE
710 MOVE WS-EDIT-SELECT(4) TO CRDSEL4O OF CCRDLIAO
711 MOVE WS-ROW-ACCTNO(4) TO ACCTNO4O OF CCRDLIAO
712 MOVE WS-ROW-CARD-NUM(4) TO CRDNUM4O OF CCRDLIAO
713 MOVE WS-ROW-CARD-STATUS(4) TO CRDSTS4O OF CCRDLIAO
714 END-IF
715
716 IF WS-EACH-CARD(5) EQUAL LOW-VALUES
717 CONTINUE
718 ELSE
719 MOVE WS-EDIT-SELECT(5) TO CRDSEL5O OF CCRDLIAO
720 MOVE WS-ROW-ACCTNO(5) TO ACCTNO5O OF CCRDLIAO
721 MOVE WS-ROW-CARD-NUM(5) TO CRDNUM5O OF CCRDLIAO
722 MOVE WS-ROW-CARD-STATUS(5) TO CRDSTS5O OF CCRDLIAO
723 END-IF
724
725
726 IF WS-EACH-CARD(6) EQUAL LOW-VALUES
727 CONTINUE
728 ELSE
729 MOVE WS-EDIT-SELECT(6) TO CRDSEL6O OF CCRDLIAO
730 MOVE WS-ROW-ACCTNO(6) TO ACCTNO6O OF CCRDLIAO
731 MOVE WS-ROW-CARD-NUM(6) TO CRDNUM6O OF CCRDLIAO
732 MOVE WS-ROW-CARD-STATUS(6) TO CRDSTS6O OF CCRDLIAO
733 END-IF
734
735 IF WS-EACH-CARD(7) EQUAL LOW-VALUES
736 CONTINUE
737 ELSE
738 MOVE WS-EDIT-SELECT(7) TO CRDSEL7O OF CCRDLIAO
739 MOVE WS-ROW-ACCTNO(7) TO ACCTNO7O OF CCRDLIAO
740 MOVE WS-ROW-CARD-NUM(7) TO CRDNUM7O OF CCRDLIAO
741 MOVE WS-ROW-CARD-STATUS(7) TO CRDSTS7O OF CCRDLIAO
742 END-IF
743 .
744
745 1200-SCREEN-ARRAY-INIT-EXIT.
746 EXIT
747 .
748 1250-SETUP-ARRAY-ATTRIBS.
749 * USE REDEFINES AND CLEAN UP REPETITIVE CODE !!
750
751 IF WS-EACH-CARD(1) EQUAL LOW-VALUES
752 OR FLG-PROTECT-SELECT-ROWS-YES
753 MOVE DFHBMPRF TO CRDSEL1A OF CCRDLIAI
754 ELSE
755 IF WS-ROW-CRDSELECT-ERROR(1) = '1'
756 MOVE DFHRED TO CRDSEL1C OF CCRDLIAO
757 IF WS-EDIT-SELECT(1) = SPACE OR LOW-VALUES
758 MOVE '*' TO CRDSEL1O OF CCRDLIAO
759 END-IF
760 END-IF
761 MOVE DFHBMFSE TO CRDSEL1A OF CCRDLIAI
762 END-IF
763
764 IF WS-EACH-CARD(2) EQUAL LOW-VALUES
765 OR FLG-PROTECT-SELECT-ROWS-YES
766 MOVE DFHBMPRO TO CRDSEL2A OF CCRDLIAI
767 ELSE
768 IF WS-ROW-CRDSELECT-ERROR(2) = '1'
769 MOVE DFHRED TO CRDSEL2C OF CCRDLIAO
770 MOVE -1 TO CRDSEL2L OF CCRDLIAI
771 END-IF
772 MOVE DFHBMFSE TO CRDSEL2A OF CCRDLIAI
773 END-IF
774
775 IF WS-EACH-CARD(3) EQUAL LOW-VALUES
776 OR FLG-PROTECT-SELECT-ROWS-YES
777 MOVE DFHBMPRO TO CRDSEL3A OF CCRDLIAI
778
779 ELSE
780 IF WS-ROW-CRDSELECT-ERROR(3) = '1'
781 MOVE DFHRED TO CRDSEL3C OF CCRDLIAO
782 MOVE -1 TO CRDSEL3L OF CCRDLIAI
783 END-IF
784 MOVE DFHBMFSE TO CRDSEL3A OF CCRDLIAI
785 END-IF
786
787 IF WS-EACH-CARD(4) EQUAL LOW-VALUES
788 OR FLG-PROTECT-SELECT-ROWS-YES
789 MOVE DFHBMPRO TO CRDSEL4A OF CCRDLIAI
790 I
791 ELSE
792 IF WS-ROW-CRDSELECT-ERROR(4) = '1'
793 MOVE DFHRED TO CRDSEL4C OF CCRDLIAO
794 MOVE -1 TO CRDSEL4L OF CCRDLIAI
795 END-IF
796 MOVE DFHBMFSE TO CRDSEL4A OF CCRDLIAI
797 END-IF
798
799 IF WS-EACH-CARD(5) EQUAL LOW-VALUES
800 OR FLG-PROTECT-SELECT-ROWS-YES
801 MOVE DFHBMPRO TO CRDSEL5A OF CCRDLIAI
802 ELSE
803 IF WS-ROW-CRDSELECT-ERROR(5) = '1'
804 MOVE DFHRED TO CRDSEL5C OF CCRDLIAO
805 MOVE -1 TO CRDSEL5L OF CCRDLIAI
806 END-IF
807 MOVE DFHBMFSE TO CRDSEL5A OF CCRDLIAI
808 END-IF
809
810 IF WS-EACH-CARD(6) EQUAL LOW-VALUES
811 OR FLG-PROTECT-SELECT-ROWS-YES
812 MOVE DFHBMPRO TO CRDSEL6A OF CCRDLIAI
813
814 ELSE
815 IF WS-ROW-CRDSELECT-ERROR(6) = '1'
816 MOVE DFHRED TO CRDSEL6C OF CCRDLIAO
817 MOVE -1 TO CRDSEL6L OF CCRDLIAI
818 END-IF
819 MOVE DFHBMFSE TO CRDSEL6A OF CCRDLIAI
820 END-IF
821
822 IF WS-EACH-CARD(7) EQUAL LOW-VALUES
823 OR FLG-PROTECT-SELECT-ROWS-YES
824 MOVE DFHBMPRO TO CRDSEL7A OF CCRDLIAI
825 ELSE
826 IF WS-ROW-CRDSELECT-ERROR(7) = '1'
827 MOVE DFHRED TO CRDSEL7C OF CCRDLIAO
828 MOVE -1 TO CRDSEL7L OF CCRDLIAI
829 END-IF
830 MOVE DFHBMFSE TO CRDSEL7A OF CCRDLIAI
831 END-IF
832 .
833
834 1250-SETUP-ARRAY-ATTRIBS-EXIT.
835 EXIT
836 .
837 1300-SETUP-SCREEN-ATTRS.
838 * INITIALIZE SEARCH CRITERIA
839 IF EIBCALEN = 0
840 OR (CDEMO-PGM-ENTER
841 AND CDEMO-FROM-PROGRAM = LIT-MENUPGM)
842 CONTINUE
843 ELSE
844 EVALUATE TRUE
845 WHEN FLG-ACCTFILTER-ISVALID
846 WHEN FLG-ACCTFILTER-NOT-OK
847 MOVE CC-ACCT-ID TO ACCTSIDO OF CCRDLIAO
848 MOVE DFHBMFSE TO ACCTSIDA OF CCRDLIAI
849 WHEN CDEMO-ACCT-ID = 0
850 MOVE LOW-VALUES TO ACCTSIDO OF CCRDLIAO
851 WHEN OTHER
852 MOVE CDEMO-ACCT-ID TO ACCTSIDO OF CCRDLIAO
853 MOVE DFHBMFSE TO ACCTSIDA OF CCRDLIAI
854 END-EVALUATE
855
856 EVALUATE TRUE
857 WHEN FLG-CARDFILTER-ISVALID
858 WHEN FLG-CARDFILTER-NOT-OK
859 MOVE CC-CARD-NUM TO CARDSIDO OF CCRDLIAO
860 MOVE DFHBMFSE TO CARDSIDA OF CCRDLIAI
861 WHEN CDEMO-CARD-NUM = 0
862 MOVE LOW-VALUES TO CARDSIDO OF CCRDLIAO
863 WHEN OTHER
864 MOVE CDEMO-CARD-NUM
865 TO CARDSIDO OF CCRDLIAO
866 MOVE DFHBMFSE TO CARDSIDA OF CCRDLIAI
867 END-EVALUATE
868 END-IF
869
870 * POSITION CURSOR
871
872 IF FLG-ACCTFILTER-NOT-OK
873 MOVE DFHRED TO ACCTSIDC OF CCRDLIAO
874 MOVE -1 TO ACCTSIDL OF CCRDLIAI
875 END-IF
876
877 IF FLG-CARDFILTER-NOT-OK
878 MOVE DFHRED TO CARDSIDC OF CCRDLIAO
879 MOVE -1 TO CARDSIDL OF CCRDLIAI
880 END-IF
881
882 * IF NO ERRORS POSITION CURSOR AT ACCTID
883
884 IF INPUT-OK
885 MOVE -1 TO ACCTSIDL OF CCRDLIAI
886 END-IF
887
888
889 .
890 1300-SETUP-SCREEN-ATTRS-EXIT.
891 EXIT
892 .
893
894
895 1400-SETUP-MESSAGE.
896 * SETUP MESSAGE
897 EVALUATE TRUE
898 WHEN FLG-ACCTFILTER-NOT-OK
899 WHEN FLG-CARDFILTER-NOT-OK
900 CONTINUE
901 WHEN CCARD-AID-PFK07
902 AND CA-FIRST-PAGE
903 MOVE 'NO PREVIOUS PAGES TO DISPLAY'
904 TO WS-ERROR-MSG
905 WHEN CCARD-AID-PFK08
906 AND CA-NEXT-PAGE-NOT-EXISTS
907 AND CA-LAST-PAGE-SHOWN
908 MOVE 'NO MORE PAGES TO DISPLAY'
909 TO WS-ERROR-MSG
910 WHEN CCARD-AID-PFK08
911 AND CA-NEXT-PAGE-NOT-EXISTS
912 SET WS-INFORM-REC-ACTIONS TO TRUE
913 IF CA-LAST-PAGE-NOT-SHOWN
914 AND CA-NEXT-PAGE-NOT-EXISTS
915 SET CA-LAST-PAGE-SHOWN TO TRUE
916 END-IF
917 WHEN WS-NO-INFO-MESSAGE
918 WHEN CA-NEXT-PAGE-EXISTS
919 SET WS-INFORM-REC-ACTIONS TO TRUE
920 WHEN OTHER
921 SET WS-NO-INFO-MESSAGE TO TRUE
922 END-EVALUATE
923
924 MOVE WS-ERROR-MSG TO ERRMSGO OF CCRDLIAO
925
926 IF NOT WS-NO-INFO-MESSAGE
927 AND NOT WS-NO-RECORDS-FOUND
928 MOVE WS-INFO-MSG TO INFOMSGO OF CCRDLIAO
929 MOVE DFHNEUTR TO INFOMSGC OF CCRDLIAO
930 END-IF
931
932 .
933 1400-SETUP-MESSAGE-EXIT.
934 EXIT
935 .
936
937
938 1500-SEND-SCREEN.
939 EXEC CICS SEND MAP(LIT-THISMAP)
940 MAPSET(LIT-THISMAPSET)
941 FROM(CCRDLIAO)
942 CURSOR
943 ERASE
944 RESP(WS-RESP-CD)
945 FREEKB
946 END-EXEC
947 .
948 1500-SEND-SCREEN-EXIT.
949 EXIT
950 .
951 2000-RECEIVE-MAP.
952 PERFORM 2100-RECEIVE-SCREEN
953 THRU 2100-RECEIVE-SCREEN-EXIT
954
955 PERFORM 2200-EDIT-INPUTS
956 THRU 2200-EDIT-INPUTS-EXIT
957 .
958
959 2000-RECEIVE-MAP-EXIT.
960 EXIT
961 .
962 2100-RECEIVE-SCREEN.
963 EXEC CICS RECEIVE MAP(LIT-THISMAP)
964 MAPSET(LIT-THISMAPSET)
965 INTO(CCRDLIAI)
966 RESP(WS-RESP-CD)
967 END-EXEC
968
969 MOVE ACCTSIDI OF CCRDLIAI TO CC-ACCT-ID
970 MOVE CARDSIDI OF CCRDLIAI TO CC-CARD-NUM
971
972 MOVE CRDSEL1I OF CCRDLIAI TO WS-EDIT-SELECT(1)
973 MOVE CRDSEL2I OF CCRDLIAI TO WS-EDIT-SELECT(2)
974 MOVE CRDSEL3I OF CCRDLIAI TO WS-EDIT-SELECT(3)
975 MOVE CRDSEL4I OF CCRDLIAI TO WS-EDIT-SELECT(4)
976 MOVE CRDSEL5I OF CCRDLIAI TO WS-EDIT-SELECT(5)
977 MOVE CRDSEL6I OF CCRDLIAI TO WS-EDIT-SELECT(6)
978 MOVE CRDSEL7I OF CCRDLIAI TO WS-EDIT-SELECT(7)
979 .
980
981 2100-RECEIVE-SCREEN-EXIT.
982 EXIT
983 .
984
985 2200-EDIT-INPUTS.
986 SET INPUT-OK TO TRUE
987 SET FLG-PROTECT-SELECT-ROWS-NO TO TRUE
988
989 PERFORM 2210-EDIT-ACCOUNT
990 THRU 2210-EDIT-ACCOUNT-EXIT
991
992 PERFORM 2220-EDIT-CARD
993 THRU 2220-EDIT-CARD-EXIT
994
995 PERFORM 2250-EDIT-ARRAY
996 THRU 2250-EDIT-ARRAY-EXIT
997 .
998
999 2200-EDIT-INPUTS-EXIT.
1000 EXIT
1001 .
1002
1003 2210-EDIT-ACCOUNT.
1004 SET FLG-ACCTFILTER-BLANK TO TRUE
1005
1006 * Not supplied
1007 IF CC-ACCT-ID EQUAL LOW-VALUES
1008 OR CC-ACCT-ID EQUAL SPACES
1009 OR CC-ACCT-ID-N EQUAL ZEROS
1010 SET FLG-ACCTFILTER-BLANK TO TRUE
1011 MOVE ZEROES TO CDEMO-ACCT-ID
1012 GO TO 2210-EDIT-ACCOUNT-EXIT
1013 END-IF
1014 *
1015 * Not numeric
1016 * Not 11 characters
1017 IF CC-ACCT-ID IS NOT NUMERIC
1018 SET INPUT-ERROR TO TRUE
1019 SET FLG-ACCTFILTER-NOT-OK TO TRUE
1020 SET FLG-PROTECT-SELECT-ROWS-YES TO TRUE
1021 MOVE
1022 'ACCOUNT FILTER,IF SUPPLIED MUST BE A 11 DIGIT NUMBER'
1023 TO WS-ERROR-MSG
1024 MOVE ZERO TO CDEMO-ACCT-ID
1025 GO TO 2210-EDIT-ACCOUNT-EXIT
1026 ELSE
1027 MOVE CC-ACCT-ID TO CDEMO-ACCT-ID
1028 SET FLG-ACCTFILTER-ISVALID TO TRUE
1029 END-IF
1030 .
1031
1032 2210-EDIT-ACCOUNT-EXIT.
1033 EXIT
1034 .
1035
1036 2220-EDIT-CARD.
1037 * Not numeric
1038 * Not 16 characters
1039 SET FLG-CARDFILTER-BLANK TO TRUE
1040
1041 * Not supplied
1042 IF CC-CARD-NUM EQUAL LOW-VALUES
1043 OR CC-CARD-NUM EQUAL SPACES
1044 OR CC-CARD-NUM-N EQUAL ZEROS
1045 SET FLG-CARDFILTER-BLANK TO TRUE
1046 MOVE ZEROES TO CDEMO-CARD-NUM
1047 GO TO 2220-EDIT-CARD-EXIT
1048 END-IF
1049 *
1050 * Not numeric
1051 * Not 16 characters
1052 IF CC-CARD-NUM IS NOT NUMERIC
1053 SET INPUT-ERROR TO TRUE
1054 SET FLG-CARDFILTER-NOT-OK TO TRUE
1055 SET FLG-PROTECT-SELECT-ROWS-YES TO TRUE
1056 IF WS-ERROR-MSG-OFF
1057 MOVE
1058 'CARD ID FILTER,IF SUPPLIED MUST BE A 16 DIGIT NUMBER'
1059 TO WS-ERROR-MSG
1060 END-IF
1061 MOVE ZERO TO CDEMO-CARD-NUM
1062 GO TO 2220-EDIT-CARD-EXIT
1063 ELSE
1064 MOVE CC-CARD-NUM-N TO CDEMO-CARD-NUM
1065 SET FLG-CARDFILTER-ISVALID TO TRUE
1066 END-IF
1067 .
1068
1069 2220-EDIT-CARD-EXIT.
1070 EXIT
1071 .
1072
1073 2250-EDIT-ARRAY.
1074
1075 IF INPUT-ERROR
1076 GO TO 2250-EDIT-ARRAY-EXIT
1077 END-IF
1078
1079 INSPECT WS-EDIT-SELECT-FLAGS
1080 TALLYING I
1081 FOR ALL 'S'
1082 ALL 'U'
1083
1084 IF I > +1
1085 SET INPUT-ERROR TO TRUE
1086 SET WS-MORE-THAN-1-ACTION TO TRUE
1087
1088 MOVE WS-EDIT-SELECT-FLAGS
1089 TO WS-EDIT-SELECT-ERROR-FLAGS
1090 INSPECT WS-EDIT-SELECT-ERROR-FLAGS
1091 REPLACING ALL 'S' BY '1'
1092 ALL 'U' BY '1'
1093 CHARACTERS BY '0'
1094
1095 END-IF
1096
1097 MOVE ZERO TO I-SELECTED
1098
1099 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 7
1100 EVALUATE TRUE
1101 WHEN SELECT-OK(I)
1102 MOVE I TO I-SELECTED
1103 IF WS-MORE-THAN-1-ACTION
1104 MOVE '1' TO WS-ROW-CRDSELECT-ERROR(I)
1105 END-IF
1106 WHEN SELECT-BLANK(I)
1107 CONTINUE
1108 WHEN OTHER
1109 SET INPUT-ERROR TO TRUE
1110 MOVE '1' TO WS-ROW-CRDSELECT-ERROR(I)
1111 IF WS-ERROR-MSG-OFF
1112 SET WS-INVALID-ACTION-CODE TO TRUE
1113 END-IF
1114 END-EVALUATE
1115 END-PERFORM
1116
1117 .
1118
1119 2250-EDIT-ARRAY-EXIT.
1120 EXIT
1121 .
1122
1123 9000-READ-FORWARD.
1124 MOVE LOW-VALUES TO WS-ALL-ROWS
1125
1126 *****************************************************************
1127 * Start Browse
1128 *****************************************************************
1129 EXEC CICS STARTBR
1130 DATASET(LIT-CARD-FILE)
1131 RIDFLD(WS-CARD-RID-CARDNUM)
1132 KEYLENGTH(LENGTH OF WS-CARD-RID-CARDNUM)
1133 GTEQ
1134 RESP(WS-RESP-CD)
1135 RESP2(WS-REAS-CD)
1136 END-EXEC
1137 *****************************************************************
1138 * Loop through records and fetch max screen records
1139 *****************************************************************
1140 MOVE ZEROES TO WS-SCRN-COUNTER
1141 SET CA-NEXT-PAGE-EXISTS TO TRUE
1142 SET MORE-RECORDS-TO-READ TO TRUE
1143
1144 PERFORM UNTIL READ-LOOP-EXIT
1145
1146 EXEC CICS READNEXT
1147 DATASET(LIT-CARD-FILE)
1148 INTO (CARD-RECORD)
1149 LENGTH(LENGTH OF CARD-RECORD)
1150 RIDFLD(WS-CARD-RID-CARDNUM)
1151 KEYLENGTH(LENGTH OF WS-CARD-RID-CARDNUM)
1152 RESP(WS-RESP-CD)
1153 RESP2(WS-REAS-CD)
1154 END-EXEC
1155
1156 EVALUATE WS-RESP-CD
1157 WHEN DFHRESP(NORMAL)
1158 WHEN DFHRESP(DUPREC)
1159 PERFORM 9500-FILTER-RECORDS
1160 THRU 9500-FILTER-RECORDS-EXIT
1161
1162 IF WS-DONOT-EXCLUDE-THIS-RECORD
1163 ADD 1 TO WS-SCRN-COUNTER
1164
1165 MOVE CARD-NUM TO WS-ROW-CARD-NUM(
1166 WS-SCRN-COUNTER)
1167 MOVE CARD-ACCT-ID TO
1168 WS-ROW-ACCTNO(WS-SCRN-COUNTER)
1169 MOVE CARD-ACTIVE-STATUS
1170 TO WS-ROW-CARD-STATUS(
1171 WS-SCRN-COUNTER)
1172
1173 IF WS-SCRN-COUNTER = 1
1174 MOVE CARD-ACCT-ID
1175 TO WS-CA-FIRST-CARD-ACCT-ID
1176 MOVE CARD-NUM TO WS-CA-FIRST-CARD-NUM
1177 IF WS-CA-SCREEN-NUM = 0
1178 ADD +1 TO WS-CA-SCREEN-NUM
1179 ELSE
1180 CONTINUE
1181 END-IF
1182 ELSE
1183 CONTINUE
1184 END-IF
1185 ELSE
1186 CONTINUE
1187 END-IF
1188 ******************************************************************
1189 * Max Screen size
1190 ******************************************************************
1191 IF WS-SCRN-COUNTER = WS-MAX-SCREEN-LINES
1192 SET READ-LOOP-EXIT TO TRUE
1193
1194 MOVE CARD-ACCT-ID TO WS-CA-LAST-CARD-ACCT-ID
1195 MOVE CARD-NUM TO WS-CA-LAST-CARD-NUM
1196
1197 EXEC CICS READNEXT
1198 DATASET(LIT-CARD-FILE)
1199 INTO (CARD-RECORD)
1200 LENGTH(LENGTH OF CARD-RECORD)
1201 RIDFLD(WS-CARD-RID-CARDNUM)
1202 KEYLENGTH(LENGTH OF WS-CARD-RID-CARDNUM)
1203 RESP(WS-RESP-CD)
1204 RESP2(WS-REAS-CD)
1205 END-EXEC
1206
1207 EVALUATE WS-RESP-CD
1208 WHEN DFHRESP(NORMAL)
1209 WHEN DFHRESP(DUPREC)
1210 SET CA-NEXT-PAGE-EXISTS
1211 TO TRUE
1212 MOVE CARD-ACCT-ID TO
1213 WS-CA-LAST-CARD-ACCT-ID
1214 MOVE CARD-NUM TO WS-CA-LAST-CARD-NUM
1215 WHEN DFHRESP(ENDFILE)
1216 SET CA-NEXT-PAGE-NOT-EXISTS TO TRUE
1217
1218 IF WS-ERROR-MSG-OFF
1219 MOVE 'NO MORE RECORDS TO SHOW'
1220 TO WS-ERROR-MSG
1221 END-IF
1222 WHEN OTHER
1223 * This is some kind of error. Change to END BR
1224 * And exit
1225 SET READ-LOOP-EXIT TO TRUE
1226 MOVE 'READ' TO ERROR-OPNAME
1227 MOVE LIT-CARD-FILE TO ERROR-FILE
1228 MOVE WS-RESP-CD TO ERROR-RESP
1229 MOVE WS-REAS-CD TO ERROR-RESP2
1230 MOVE WS-FILE-ERROR-MESSAGE TO WS-ERROR-MSG
1231 END-EVALUATE
1232 END-IF
1233 WHEN DFHRESP(ENDFILE)
1234 SET READ-LOOP-EXIT TO TRUE
1235 SET CA-NEXT-PAGE-NOT-EXISTS TO TRUE
1236 MOVE CARD-ACCT-ID TO WS-CA-LAST-CARD-ACCT-ID
1237 MOVE CARD-NUM TO WS-CA-LAST-CARD-NUM
1238 IF WS-ERROR-MSG-OFF
1239 MOVE 'NO MORE RECORDS TO SHOW' TO WS-ERROR-MSG
1240 END-IF
1241 IF WS-CA-SCREEN-NUM = 1
1242 AND WS-SCRN-COUNTER = 0
1243 * MOVE 'NO RECORDS TO SHOW' TO WS-ERROR-MSG
1244 SET WS-NO-RECORDS-FOUND TO TRUE
1245 END-IF
1246 WHEN OTHER
1247 * This is some kind of error. Change to END BR
1248 * And exit
1249 SET READ-LOOP-EXIT TO TRUE
1250 MOVE 'READ' TO ERROR-OPNAME
1251 MOVE LIT-CARD-FILE TO ERROR-FILE
1252 MOVE WS-RESP-CD TO ERROR-RESP
1253 MOVE WS-REAS-CD TO ERROR-RESP2
1254 MOVE WS-FILE-ERROR-MESSAGE TO WS-ERROR-MSG
1255 END-EVALUATE
1256 END-PERFORM
1257
1258 EXEC CICS ENDBR FILE(LIT-CARD-FILE)
1259 END-EXEC
1260 .
1261 9000-READ-FORWARD-EXIT.
1262 EXIT
1263 .
1264 9100-READ-BACKWARDS.
1265
1266 MOVE LOW-VALUES TO WS-ALL-ROWS
1267
1268 MOVE WS-CA-FIRST-CARDKEY TO WS-CA-LAST-CARDKEY
1269
1270 *****************************************************************
1271 * Start Browse
1272 *****************************************************************
1273 EXEC CICS STARTBR
1274 DATASET(LIT-CARD-FILE)
1275 RIDFLD(WS-CARD-RID-CARDNUM)
1276 KEYLENGTH(LENGTH OF WS-CARD-RID-CARDNUM)
1277 GTEQ
1278 RESP(WS-RESP-CD)
1279 RESP2(WS-REAS-CD)
1280 END-EXEC
1281 *****************************************************************
1282 * Loop through records and fetch max screen records
1283 *****************************************************************
1284 COMPUTE WS-SCRN-COUNTER =
1285 WS-MAX-SCREEN-LINES + 1
1286 END-COMPUTE
1287 SET CA-NEXT-PAGE-EXISTS TO TRUE
1288 SET MORE-RECORDS-TO-READ TO TRUE
1289
1290 *****************************************************************
1291 * Now we show the records from previous set.
1292 *****************************************************************
1293
1294 EXEC CICS READPREV
1295 DATASET(LIT-CARD-FILE)
1296 INTO (CARD-RECORD)
1297 LENGTH(LENGTH OF CARD-RECORD)
1298 RIDFLD(WS-CARD-RID-CARDNUM)
1299 KEYLENGTH(LENGTH OF WS-CARD-RID-CARDNUM)
1300 RESP(WS-RESP-CD)
1301 RESP2(WS-REAS-CD)
1302 END-EXEC
1303
1304 EVALUATE WS-RESP-CD
1305 WHEN DFHRESP(NORMAL)
1306 WHEN DFHRESP(DUPREC)
1307 SUBTRACT 1 FROM WS-SCRN-COUNTER
1308 WHEN OTHER
1309 * This is some kind of error. Change to END BR
1310 * And exit
1311 SET READ-LOOP-EXIT TO TRUE
1312 MOVE 'READ' TO ERROR-OPNAME
1313 MOVE LIT-CARD-FILE TO ERROR-FILE
1314 MOVE WS-RESP-CD TO ERROR-RESP
1315 MOVE WS-REAS-CD TO ERROR-RESP2
1316 MOVE WS-FILE-ERROR-MESSAGE TO WS-ERROR-MSG
1317 GO TO 9100-READ-BACKWARDS-EXIT
1318 END-EVALUATE
1319
1320 PERFORM UNTIL READ-LOOP-EXIT
1321
1322 EXEC CICS READPREV
1323 DATASET(LIT-CARD-FILE)
1324 INTO (CARD-RECORD)
1325 LENGTH(LENGTH OF CARD-RECORD)
1326 RIDFLD(WS-CARD-RID-CARDNUM)
1327 KEYLENGTH(LENGTH OF WS-CARD-RID-CARDNUM)
1328 RESP(WS-RESP-CD)
1329 RESP2(WS-REAS-CD)
1330 END-EXEC
1331
1332 EVALUATE WS-RESP-CD
1333 WHEN DFHRESP(NORMAL)
1334 WHEN DFHRESP(DUPREC)
1335 PERFORM 9500-FILTER-RECORDS
1336 THRU 9500-FILTER-RECORDS-EXIT
1337 IF WS-DONOT-EXCLUDE-THIS-RECORD
1338 MOVE CARD-NUM
1339 TO WS-ROW-CARD-NUM(WS-SCRN-COUNTER)
1340 MOVE CARD-ACCT-ID
1341 TO WS-ROW-ACCTNO(WS-SCRN-COUNTER)
1342 MOVE CARD-ACTIVE-STATUS
1343 TO
1344 WS-ROW-CARD-STATUS(WS-SCRN-COUNTER)
1345
1346 SUBTRACT 1 FROM WS-SCRN-COUNTER
1347 IF WS-SCRN-COUNTER = 0
1348 SET READ-LOOP-EXIT TO TRUE
1349
1350 MOVE CARD-ACCT-ID
1351 TO WS-CA-FIRST-CARD-ACCT-ID
1352 MOVE CARD-NUM
1353 TO WS-CA-FIRST-CARD-NUM
1354 ELSE
1355 CONTINUE
1356 END-IF
1357 ELSE
1358 CONTINUE
1359 END-IF
1360
1361 WHEN OTHER
1362 * This is some kind of error. Change to END BR
1363 * And exit
1364 SET READ-LOOP-EXIT TO TRUE
1365 MOVE 'READ' TO ERROR-OPNAME
1366 MOVE LIT-CARD-FILE TO ERROR-FILE
1367 MOVE WS-RESP-CD TO ERROR-RESP
1368 MOVE WS-REAS-CD TO ERROR-RESP2
1369 MOVE WS-FILE-ERROR-MESSAGE TO WS-ERROR-MSG
1370 END-EVALUATE
1371 END-PERFORM
1372 .
1373
1374 9100-READ-BACKWARDS-EXIT.
1375 EXEC CICS
1376 ENDBR FILE(LIT-CARD-FILE)
1377 END-EXEC
1378
1379 EXIT
1380 .
1381
1382 9500-FILTER-RECORDS.
1383 SET WS-DONOT-EXCLUDE-THIS-RECORD TO TRUE
1384
1385 IF FLG-ACCTFILTER-ISVALID
1386 IF CARD-ACCT-ID = CC-ACCT-ID
1387 CONTINUE
1388 ELSE
1389 SET WS-EXCLUDE-THIS-RECORD TO TRUE
1390 GO TO 9500-FILTER-RECORDS-EXIT
1391 END-IF
1392 ELSE
1393 CONTINUE
1394 END-IF
1395
1396 IF FLG-CARDFILTER-ISVALID
1397 IF CARD-NUM = CC-CARD-NUM-N
1398 CONTINUE
1399 ELSE
1400 SET WS-EXCLUDE-THIS-RECORD TO TRUE
1401 GO TO 9500-FILTER-RECORDS-EXIT
1402 END-IF
1403 ELSE
1404 CONTINUE
1405 END-IF
1406
1407 .
1408
1409 9500-FILTER-RECORDS-EXIT.
1410 EXIT
1411 .
1412
1413 *****************************************************************
1414 *Common code to store PFKey
1415 *****************************************************************
1416 COPY 'CSSTRPFY'
1417 .
1418
1419 *****************************************************************
1420 * Plain text exit - Dont use in production *
1421 *****************************************************************
1422 SEND-PLAIN-TEXT.
1423 EXEC CICS SEND TEXT
1424 FROM(WS-ERROR-MSG)
1425 LENGTH(LENGTH OF WS-ERROR-MSG)
1426 ERASE
1427 FREEKB
1428 END-EXEC
1429
1430 EXEC CICS RETURN
1431 END-EXEC
1432 .
1433 SEND-PLAIN-TEXT-EXIT.
1434 EXIT
1435 .
1436 *****************************************************************
1437 * Display Long text and exit *
1438 * This is primarily for debugging and should not be used in *
1439 * regular course *
1440 *****************************************************************
1441 SEND-LONG-TEXT.
1442 EXEC CICS SEND TEXT
1443 FROM(WS-LONG-MSG)
1444 LENGTH(LENGTH OF WS-LONG-MSG)
1445 ERASE
1446 FREEKB
1447 END-EXEC
1448
1449 EXEC CICS RETURN
1450 END-EXEC
1451 .
1452 SEND-LONG-TEXT-EXIT.
1453 EXIT
1454 .
1455
1456
1457 *
1458 * Ver: CardDemo_v1.0-15-g27d6c6f-68 Date: 2022-07-19 23:12:33 CDT
1459 *