MFmainframe-rea
WS carddemo · 26f629ef

cobol · 695 lines · sha256 831433c6ec830603 · guides at columns 7 and 72app/cbl/COUSR00C.cbl

1 ******************************************************************
2 * Program : COUSR00C.CBL
3 * Application : CardDemo
4 * Type : CICS COBOL Program
5 * Function : List all users from USRSEC file
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. COUSR00C.
24 AUTHOR. AWS.
25
26 ENVIRONMENT DIVISION.
27 CONFIGURATION SECTION.
28
29 DATA DIVISION.
30 *----------------------------------------------------------------*
31 * WORKING STORAGE SECTION
32 *----------------------------------------------------------------*
33 WORKING-STORAGE SECTION.
34
35 01 WS-VARIABLES.
36 05 WS-PGMNAME PIC X(08) VALUE 'COUSR00C'.
37 05 WS-TRANID PIC X(04) VALUE 'CU00'.
38 05 WS-MESSAGE PIC X(80) VALUE SPACES.
39 05 WS-USRSEC-FILE PIC X(08) VALUE 'USRSEC '.
40 05 WS-ERR-FLG PIC X(01) VALUE 'N'.
41 88 ERR-FLG-ON VALUE 'Y'.
42 88 ERR-FLG-OFF VALUE 'N'.
43 05 WS-USER-SEC-EOF PIC X(01) VALUE 'N'.
44 88 USER-SEC-EOF VALUE 'Y'.
45 88 USER-SEC-NOT-EOF VALUE 'N'.
46 05 WS-SEND-ERASE-FLG PIC X(01) VALUE 'Y'.
47 88 SEND-ERASE-YES VALUE 'Y'.
48 88 SEND-ERASE-NO VALUE 'N'.
49
50 05 WS-RESP-CD PIC S9(09) COMP VALUE ZEROS.
51 05 WS-REAS-CD PIC S9(09) COMP VALUE ZEROS.
52 05 WS-REC-COUNT PIC S9(04) COMP VALUE ZEROS.
53 05 WS-IDX PIC S9(04) COMP VALUE ZEROS.
54 05 WS-PAGE-NUM PIC S9(04) COMP VALUE ZEROS.
55
56 01 WS-USER-DATA.
57 02 USER-REC OCCURS 10 TIMES.
58 05 USER-SEL PIC X(01).
59 05 FILLER PIC X(02).
60 05 USER-ID PIC X(08).
61 05 FILLER PIC X(02).
62 05 USER-NAME PIC X(25).
63 05 FILLER PIC X(02).
64 05 USER-TYPE PIC X(08).
65
66 COPY COCOM01Y.
67 05 CDEMO-CU00-INFO.
68 10 CDEMO-CU00-USRID-FIRST PIC X(08).
69 10 CDEMO-CU00-USRID-LAST PIC X(08).
70 10 CDEMO-CU00-PAGE-NUM PIC 9(08).
71 10 CDEMO-CU00-NEXT-PAGE-FLG PIC X(01) VALUE 'N'.
72 88 NEXT-PAGE-YES VALUE 'Y'.
73 88 NEXT-PAGE-NO VALUE 'N'.
74 10 CDEMO-CU00-USR-SEL-FLG PIC X(01).
75 10 CDEMO-CU00-USR-SELECTED PIC X(08).
76 COPY COUSR00.
77
78 COPY COTTL01Y.
79 COPY CSDAT01Y.
80 COPY CSMSG01Y.
81 COPY CSUSR01Y.
82
83 COPY DFHAID.
84 COPY DFHBMSCA.
85
86 *----------------------------------------------------------------*
87 * LINKAGE SECTION
88 *----------------------------------------------------------------*
89 LINKAGE SECTION.
90 01 DFHCOMMAREA.
91 05 LK-COMMAREA PIC X(01)
92 OCCURS 1 TO 32767 TIMES DEPENDING ON EIBCALEN.
93
94 *----------------------------------------------------------------*
95 * PROCEDURE DIVISION
96 *----------------------------------------------------------------*
97 PROCEDURE DIVISION.
98 MAIN-PARA.
99
100 SET ERR-FLG-OFF TO TRUE
101 SET USER-SEC-NOT-EOF TO TRUE
102 SET NEXT-PAGE-NO TO TRUE
103 SET SEND-ERASE-YES TO TRUE
104
105 MOVE SPACES TO WS-MESSAGE
106 ERRMSGO OF COUSR0AO
107
108 MOVE -1 TO USRIDINL OF COUSR0AI
109
110 IF EIBCALEN = 0
111 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM
112 PERFORM RETURN-TO-PREV-SCREEN
113 ELSE
114 MOVE DFHCOMMAREA(1:EIBCALEN) TO CARDDEMO-COMMAREA
115 IF NOT CDEMO-PGM-REENTER
116 SET CDEMO-PGM-REENTER TO TRUE
117 MOVE LOW-VALUES TO COUSR0AO
118 PERFORM PROCESS-ENTER-KEY
119 PERFORM SEND-USRLST-SCREEN
120 ELSE
121 PERFORM RECEIVE-USRLST-SCREEN
122 EVALUATE EIBAID
123 WHEN DFHENTER
124 PERFORM PROCESS-ENTER-KEY
125 WHEN DFHPF3
126 MOVE 'COADM01C' TO CDEMO-TO-PROGRAM
127 PERFORM RETURN-TO-PREV-SCREEN
128 WHEN DFHPF7
129 PERFORM PROCESS-PF7-KEY
130 WHEN DFHPF8
131 PERFORM PROCESS-PF8-KEY
132 WHEN OTHER
133 MOVE 'Y' TO WS-ERR-FLG
134 MOVE -1 TO USRIDINL OF COUSR0AI
135 MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE
136 PERFORM SEND-USRLST-SCREEN
137 END-EVALUATE
138 END-IF
139 END-IF
140
141 EXEC CICS RETURN
142 TRANSID (WS-TRANID)
143 COMMAREA (CARDDEMO-COMMAREA)
144 END-EXEC.
145
146 *----------------------------------------------------------------*
147 * PROCESS-ENTER-KEY
148 *----------------------------------------------------------------*
149 PROCESS-ENTER-KEY.
150
151 EVALUATE TRUE
152 WHEN SEL0001I OF COUSR0AI NOT = SPACES AND LOW-VALUES
153 MOVE SEL0001I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
154 MOVE USRID01I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
155 WHEN SEL0002I OF COUSR0AI NOT = SPACES AND LOW-VALUES
156 MOVE SEL0002I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
157 MOVE USRID02I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
158 WHEN SEL0003I OF COUSR0AI NOT = SPACES AND LOW-VALUES
159 MOVE SEL0003I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
160 MOVE USRID03I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
161 WHEN SEL0004I OF COUSR0AI NOT = SPACES AND LOW-VALUES
162 MOVE SEL0004I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
163 MOVE USRID04I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
164 WHEN SEL0005I OF COUSR0AI NOT = SPACES AND LOW-VALUES
165 MOVE SEL0005I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
166 MOVE USRID05I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
167 WHEN SEL0006I OF COUSR0AI NOT = SPACES AND LOW-VALUES
168 MOVE SEL0006I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
169 MOVE USRID06I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
170 WHEN SEL0007I OF COUSR0AI NOT = SPACES AND LOW-VALUES
171 MOVE SEL0007I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
172 MOVE USRID07I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
173 WHEN SEL0008I OF COUSR0AI NOT = SPACES AND LOW-VALUES
174 MOVE SEL0008I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
175 MOVE USRID08I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
176 WHEN SEL0009I OF COUSR0AI NOT = SPACES AND LOW-VALUES
177 MOVE SEL0009I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
178 MOVE USRID09I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
179 WHEN SEL0010I OF COUSR0AI NOT = SPACES AND LOW-VALUES
180 MOVE SEL0010I OF COUSR0AI TO CDEMO-CU00-USR-SEL-FLG
181 MOVE USRID10I OF COUSR0AI TO CDEMO-CU00-USR-SELECTED
182 WHEN OTHER
183 MOVE SPACES TO CDEMO-CU00-USR-SEL-FLG
184 MOVE SPACES TO CDEMO-CU00-USR-SELECTED
185 END-EVALUATE
186
187 IF (CDEMO-CU00-USR-SEL-FLG NOT = SPACES AND LOW-VALUES) AND
188 (CDEMO-CU00-USR-SELECTED NOT = SPACES AND LOW-VALUES)
189 EVALUATE CDEMO-CU00-USR-SEL-FLG
190 WHEN 'U'
191 WHEN 'u'
192 MOVE 'COUSR02C' TO CDEMO-TO-PROGRAM
193 MOVE WS-TRANID TO CDEMO-FROM-TRANID
194 MOVE WS-PGMNAME TO CDEMO-FROM-PROGRAM
195 MOVE 0 TO CDEMO-PGM-CONTEXT
196 EXEC CICS
197 XCTL PROGRAM(CDEMO-TO-PROGRAM)
198 COMMAREA(CARDDEMO-COMMAREA)
199 END-EXEC
200 WHEN 'D'
201 WHEN 'd'
202 MOVE 'COUSR03C' TO CDEMO-TO-PROGRAM
203 MOVE WS-TRANID TO CDEMO-FROM-TRANID
204 MOVE WS-PGMNAME TO CDEMO-FROM-PROGRAM
205 MOVE 0 TO CDEMO-PGM-CONTEXT
206 EXEC CICS
207 XCTL PROGRAM(CDEMO-TO-PROGRAM)
208 COMMAREA(CARDDEMO-COMMAREA)
209 END-EXEC
210 WHEN OTHER
211 MOVE
212 'Invalid selection. Valid values are U and D' TO
213 WS-MESSAGE
214 MOVE -1 TO USRIDINL OF COUSR0AI
215 END-EVALUATE
216 END-IF
217
218 IF USRIDINI OF COUSR0AI = SPACES OR LOW-VALUES
219 MOVE LOW-VALUES TO SEC-USR-ID
220 ELSE
221 MOVE USRIDINI OF COUSR0AI TO SEC-USR-ID
222 END-IF
223
224 MOVE -1 TO USRIDINL OF COUSR0AI
225
226
227 MOVE 0 TO CDEMO-CU00-PAGE-NUM
228 PERFORM PROCESS-PAGE-FORWARD
229
230 IF NOT ERR-FLG-ON
231 MOVE SPACE TO USRIDINO OF COUSR0AO
232 END-IF.
233
234 *----------------------------------------------------------------*
235 * PROCESS-PF7-KEY
236 *----------------------------------------------------------------*
237 PROCESS-PF7-KEY.
238
239 IF CDEMO-CU00-USRID-FIRST = SPACES OR LOW-VALUES
240 MOVE LOW-VALUES TO SEC-USR-ID
241 ELSE
242 MOVE CDEMO-CU00-USRID-FIRST TO SEC-USR-ID
243 END-IF
244
245 SET NEXT-PAGE-YES TO TRUE
246 MOVE -1 TO USRIDINL OF COUSR0AI
247
248 IF CDEMO-CU00-PAGE-NUM > 1
249 PERFORM PROCESS-PAGE-BACKWARD
250 ELSE
251 MOVE 'You are already at the top of the page...' TO
252 WS-MESSAGE
253 SET SEND-ERASE-NO TO TRUE
254 PERFORM SEND-USRLST-SCREEN
255 END-IF.
256
257 *----------------------------------------------------------------*
258 * PROCESS-PF8-KEY
259 *----------------------------------------------------------------*
260 PROCESS-PF8-KEY.
261
262 IF CDEMO-CU00-USRID-LAST = SPACES OR LOW-VALUES
263 MOVE HIGH-VALUES TO SEC-USR-ID
264 ELSE
265 MOVE CDEMO-CU00-USRID-LAST TO SEC-USR-ID
266 END-IF
267
268 MOVE -1 TO USRIDINL OF COUSR0AI
269
270 IF NEXT-PAGE-YES
271 PERFORM PROCESS-PAGE-FORWARD
272 ELSE
273 MOVE 'You are already at the bottom of the page...' TO
274 WS-MESSAGE
275 SET SEND-ERASE-NO TO TRUE
276 PERFORM SEND-USRLST-SCREEN
277 END-IF.
278
279 *----------------------------------------------------------------*
280 * PROCESS-PAGE-FORWARD
281 *----------------------------------------------------------------*
282 PROCESS-PAGE-FORWARD.
283
284 PERFORM STARTBR-USER-SEC-FILE
285
286 IF NOT ERR-FLG-ON
287
288 IF EIBAID NOT = DFHENTER AND DFHPF7 AND DFHPF3
289 PERFORM READNEXT-USER-SEC-FILE
290 END-IF
291
292 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
293 PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > 10
294 PERFORM INITIALIZE-USER-DATA
295 END-PERFORM
296 END-IF
297
298 MOVE 1 TO WS-IDX
299
300 PERFORM UNTIL WS-IDX >= 11 OR USER-SEC-EOF OR ERR-FLG-ON
301 PERFORM READNEXT-USER-SEC-FILE
302 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
303 PERFORM POPULATE-USER-DATA
304 COMPUTE WS-IDX = WS-IDX + 1
305 END-IF
306 END-PERFORM
307
308 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
309 COMPUTE CDEMO-CU00-PAGE-NUM =
310 CDEMO-CU00-PAGE-NUM + 1
311 PERFORM READNEXT-USER-SEC-FILE
312 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
313 SET NEXT-PAGE-YES TO TRUE
314 ELSE
315 SET NEXT-PAGE-NO TO TRUE
316 END-IF
317 ELSE
318 SET NEXT-PAGE-NO TO TRUE
319 IF WS-IDX > 1
320 COMPUTE CDEMO-CU00-PAGE-NUM = CDEMO-CU00-PAGE-NUM
321 + 1
322 END-IF
323 END-IF
324
325 PERFORM ENDBR-USER-SEC-FILE
326
327 MOVE CDEMO-CU00-PAGE-NUM TO PAGENUMI OF COUSR0AI
328 MOVE SPACE TO USRIDINO OF COUSR0AO
329 PERFORM SEND-USRLST-SCREEN
330
331 END-IF.
332
333 *----------------------------------------------------------------*
334 * PROCESS-PAGE-BACKWARD
335 *----------------------------------------------------------------*
336 PROCESS-PAGE-BACKWARD.
337
338 PERFORM STARTBR-USER-SEC-FILE
339
340 IF NOT ERR-FLG-ON
341
342 IF EIBAID NOT = DFHENTER AND DFHPF8
343 PERFORM READPREV-USER-SEC-FILE
344 END-IF
345
346 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
347 PERFORM VARYING WS-IDX FROM 1 BY 1 UNTIL WS-IDX > 10
348 PERFORM INITIALIZE-USER-DATA
349 END-PERFORM
350 END-IF
351
352 MOVE 10 TO WS-IDX
353
354 PERFORM UNTIL WS-IDX <= 0 OR USER-SEC-EOF OR ERR-FLG-ON
355 PERFORM READPREV-USER-SEC-FILE
356 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
357 PERFORM POPULATE-USER-DATA
358 COMPUTE WS-IDX = WS-IDX - 1
359 END-IF
360 END-PERFORM
361
362 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF
363 PERFORM READPREV-USER-SEC-FILE
364 IF NEXT-PAGE-YES
365 IF USER-SEC-NOT-EOF AND ERR-FLG-OFF AND
366 CDEMO-CU00-PAGE-NUM > 1
367 SUBTRACT 1 FROM CDEMO-CU00-PAGE-NUM
368 ELSE
369 MOVE 1 TO CDEMO-CU00-PAGE-NUM
370 END-IF
371 END-IF
372 END-IF
373
374 PERFORM ENDBR-USER-SEC-FILE
375
376 MOVE CDEMO-CU00-PAGE-NUM TO PAGENUMI OF COUSR0AI
377 PERFORM SEND-USRLST-SCREEN
378
379 END-IF.
380
381 *----------------------------------------------------------------*
382 * POPULATE-USER-DATA
383 *----------------------------------------------------------------*
384 POPULATE-USER-DATA.
385
386 EVALUATE WS-IDX
387 WHEN 1
388 MOVE SEC-USR-ID TO USRID01I OF COUSR0AI
389 CDEMO-CU00-USRID-FIRST
390 MOVE SEC-USR-FNAME TO FNAME01I OF COUSR0AI
391 MOVE SEC-USR-LNAME TO LNAME01I OF COUSR0AI
392 MOVE SEC-USR-TYPE TO UTYPE01I OF COUSR0AI
393 WHEN 2
394 MOVE SEC-USR-ID TO USRID02I OF COUSR0AI
395 MOVE SEC-USR-FNAME TO FNAME02I OF COUSR0AI
396 MOVE SEC-USR-LNAME TO LNAME02I OF COUSR0AI
397 MOVE SEC-USR-TYPE TO UTYPE02I OF COUSR0AI
398 WHEN 3
399 MOVE SEC-USR-ID TO USRID03I OF COUSR0AI
400 MOVE SEC-USR-FNAME TO FNAME03I OF COUSR0AI
401 MOVE SEC-USR-LNAME TO LNAME03I OF COUSR0AI
402 MOVE SEC-USR-TYPE TO UTYPE03I OF COUSR0AI
403 WHEN 4
404 MOVE SEC-USR-ID TO USRID04I OF COUSR0AI
405 MOVE SEC-USR-FNAME TO FNAME04I OF COUSR0AI
406 MOVE SEC-USR-LNAME TO LNAME04I OF COUSR0AI
407 MOVE SEC-USR-TYPE TO UTYPE04I OF COUSR0AI
408 WHEN 5
409 MOVE SEC-USR-ID TO USRID05I OF COUSR0AI
410 MOVE SEC-USR-FNAME TO FNAME05I OF COUSR0AI
411 MOVE SEC-USR-LNAME TO LNAME05I OF COUSR0AI
412 MOVE SEC-USR-TYPE TO UTYPE05I OF COUSR0AI
413 WHEN 6
414 MOVE SEC-USR-ID TO USRID06I OF COUSR0AI
415 MOVE SEC-USR-FNAME TO FNAME06I OF COUSR0AI
416 MOVE SEC-USR-LNAME TO LNAME06I OF COUSR0AI
417 MOVE SEC-USR-TYPE TO UTYPE06I OF COUSR0AI
418 WHEN 7
419 MOVE SEC-USR-ID TO USRID07I OF COUSR0AI
420 MOVE SEC-USR-FNAME TO FNAME07I OF COUSR0AI
421 MOVE SEC-USR-LNAME TO LNAME07I OF COUSR0AI
422 MOVE SEC-USR-TYPE TO UTYPE07I OF COUSR0AI
423 WHEN 8
424 MOVE SEC-USR-ID TO USRID08I OF COUSR0AI
425 MOVE SEC-USR-FNAME TO FNAME08I OF COUSR0AI
426 MOVE SEC-USR-LNAME TO LNAME08I OF COUSR0AI
427 MOVE SEC-USR-TYPE TO UTYPE08I OF COUSR0AI
428 WHEN 9
429 MOVE SEC-USR-ID TO USRID09I OF COUSR0AI
430 MOVE SEC-USR-FNAME TO FNAME09I OF COUSR0AI
431 MOVE SEC-USR-LNAME TO LNAME09I OF COUSR0AI
432 MOVE SEC-USR-TYPE TO UTYPE09I OF COUSR0AI
433 WHEN 10
434 MOVE SEC-USR-ID TO USRID10I OF COUSR0AI
435 CDEMO-CU00-USRID-LAST
436 MOVE SEC-USR-FNAME TO FNAME10I OF COUSR0AI
437 MOVE SEC-USR-LNAME TO LNAME10I OF COUSR0AI
438 MOVE SEC-USR-TYPE TO UTYPE10I OF COUSR0AI
439 WHEN OTHER
440 CONTINUE
441 END-EVALUATE.
442
443 *----------------------------------------------------------------*
444 * INITIALIZE-USER-DATA
445 *----------------------------------------------------------------*
446 INITIALIZE-USER-DATA.
447
448 EVALUATE WS-IDX
449 WHEN 1
450 MOVE SPACES TO USRID01I OF COUSR0AI
451 MOVE SPACES TO FNAME01I OF COUSR0AI
452 MOVE SPACES TO LNAME01I OF COUSR0AI
453 MOVE SPACES TO UTYPE01I OF COUSR0AI
454 WHEN 2
455 MOVE SPACES TO USRID02I OF COUSR0AI
456 MOVE SPACES TO FNAME02I OF COUSR0AI
457 MOVE SPACES TO LNAME02I OF COUSR0AI
458 MOVE SPACES TO UTYPE02I OF COUSR0AI
459 WHEN 3
460 MOVE SPACES TO USRID03I OF COUSR0AI
461 MOVE SPACES TO FNAME03I OF COUSR0AI
462 MOVE SPACES TO LNAME03I OF COUSR0AI
463 MOVE SPACES TO UTYPE03I OF COUSR0AI
464 WHEN 4
465 MOVE SPACES TO USRID04I OF COUSR0AI
466 MOVE SPACES TO FNAME04I OF COUSR0AI
467 MOVE SPACES TO LNAME04I OF COUSR0AI
468 MOVE SPACES TO UTYPE04I OF COUSR0AI
469 WHEN 5
470 MOVE SPACES TO USRID05I OF COUSR0AI
471 MOVE SPACES TO FNAME05I OF COUSR0AI
472 MOVE SPACES TO LNAME05I OF COUSR0AI
473 MOVE SPACES TO UTYPE05I OF COUSR0AI
474 WHEN 6
475 MOVE SPACES TO USRID06I OF COUSR0AI
476 MOVE SPACES TO FNAME06I OF COUSR0AI
477 MOVE SPACES TO LNAME06I OF COUSR0AI
478 MOVE SPACES TO UTYPE06I OF COUSR0AI
479 WHEN 7
480 MOVE SPACES TO USRID07I OF COUSR0AI
481 MOVE SPACES TO FNAME07I OF COUSR0AI
482 MOVE SPACES TO LNAME07I OF COUSR0AI
483 MOVE SPACES TO UTYPE07I OF COUSR0AI
484 WHEN 8
485 MOVE SPACES TO USRID08I OF COUSR0AI
486 MOVE SPACES TO FNAME08I OF COUSR0AI
487 MOVE SPACES TO LNAME08I OF COUSR0AI
488 MOVE SPACES TO UTYPE08I OF COUSR0AI
489 WHEN 9
490 MOVE SPACES TO USRID09I OF COUSR0AI
491 MOVE SPACES TO FNAME09I OF COUSR0AI
492 MOVE SPACES TO LNAME09I OF COUSR0AI
493 MOVE SPACES TO UTYPE09I OF COUSR0AI
494 WHEN 10
495 MOVE SPACES TO USRID10I OF COUSR0AI
496 MOVE SPACES TO FNAME10I OF COUSR0AI
497 MOVE SPACES TO LNAME10I OF COUSR0AI
498 MOVE SPACES TO UTYPE10I OF COUSR0AI
499 WHEN OTHER
500 CONTINUE
501 END-EVALUATE.
502
503 *----------------------------------------------------------------*
504 * RETURN-TO-PREV-SCREEN
505 *----------------------------------------------------------------*
506 RETURN-TO-PREV-SCREEN.
507
508 IF CDEMO-TO-PROGRAM = LOW-VALUES OR SPACES
509 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM
510 END-IF
511 MOVE WS-TRANID TO CDEMO-FROM-TRANID
512 MOVE WS-PGMNAME TO CDEMO-FROM-PROGRAM
513 MOVE ZEROS TO CDEMO-PGM-CONTEXT
514 EXEC CICS
515 XCTL PROGRAM(CDEMO-TO-PROGRAM)
516 COMMAREA(CARDDEMO-COMMAREA)
517 END-EXEC.
518
519 *----------------------------------------------------------------*
520 * SEND-USRLST-SCREEN
521 *----------------------------------------------------------------*
522 SEND-USRLST-SCREEN.
523
524 PERFORM POPULATE-HEADER-INFO
525
526 MOVE WS-MESSAGE TO ERRMSGO OF COUSR0AO
527
528 IF SEND-ERASE-YES
529 EXEC CICS SEND
530 MAP('COUSR0A')
531 MAPSET('COUSR00')
532 FROM(COUSR0AO)
533 ERASE
534 CURSOR
535 END-EXEC
536 ELSE
537 EXEC CICS SEND
538 MAP('COUSR0A')
539 MAPSET('COUSR00')
540 FROM(COUSR0AO)
541 * ERASE
542 CURSOR
543 END-EXEC
544 END-IF.
545
546 *----------------------------------------------------------------*
547 * RECEIVE-USRLST-SCREEN
548 *----------------------------------------------------------------*
549 RECEIVE-USRLST-SCREEN.
550
551 EXEC CICS RECEIVE
552 MAP('COUSR0A')
553 MAPSET('COUSR00')
554 INTO(COUSR0AI)
555 RESP(WS-RESP-CD)
556 RESP2(WS-REAS-CD)
557 END-EXEC.
558
559 *----------------------------------------------------------------*
560 * POPULATE-HEADER-INFO
561 *----------------------------------------------------------------*
562 POPULATE-HEADER-INFO.
563
564 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
565
566 MOVE CCDA-TITLE01 TO TITLE01O OF COUSR0AO
567 MOVE CCDA-TITLE02 TO TITLE02O OF COUSR0AO
568 MOVE WS-TRANID TO TRNNAMEO OF COUSR0AO
569 MOVE WS-PGMNAME TO PGMNAMEO OF COUSR0AO
570
571 MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM
572 MOVE WS-CURDATE-DAY TO WS-CURDATE-DD
573 MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY
574
575 MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF COUSR0AO
576
577 MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH
578 MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM
579 MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS
580
581 MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF COUSR0AO.
582
583 *----------------------------------------------------------------*
584 * STARTBR-USER-SEC-FILE
585 *----------------------------------------------------------------*
586 STARTBR-USER-SEC-FILE.
587
588 EXEC CICS STARTBR
589 DATASET (WS-USRSEC-FILE)
590 RIDFLD (SEC-USR-ID)
591 KEYLENGTH (LENGTH OF SEC-USR-ID)
592 * GTEQ
593 RESP (WS-RESP-CD)
594 RESP2 (WS-REAS-CD)
595 END-EXEC.
596
597 EVALUATE WS-RESP-CD
598 WHEN DFHRESP(NORMAL)
599 CONTINUE
600 WHEN DFHRESP(NOTFND)
601 CONTINUE
602 SET USER-SEC-EOF TO TRUE
603 MOVE 'You are at the top of the page...' TO
604 WS-MESSAGE
605 MOVE -1 TO USRIDINL OF COUSR0AI
606 PERFORM SEND-USRLST-SCREEN
607 WHEN OTHER
608 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
609 MOVE 'Y' TO WS-ERR-FLG
610 MOVE 'Unable to lookup User...' TO
611 WS-MESSAGE
612 MOVE -1 TO USRIDINL OF COUSR0AI
613 PERFORM SEND-USRLST-SCREEN
614 END-EVALUATE.
615
616 *----------------------------------------------------------------*
617 * READNEXT-USER-SEC-FILE
618 *----------------------------------------------------------------*
619 READNEXT-USER-SEC-FILE.
620
621 EXEC CICS READNEXT
622 DATASET (WS-USRSEC-FILE)
623 INTO (SEC-USER-DATA)
624 LENGTH (LENGTH OF SEC-USER-DATA)
625 RIDFLD (SEC-USR-ID)
626 KEYLENGTH (LENGTH OF SEC-USR-ID)
627 RESP (WS-RESP-CD)
628 RESP2 (WS-REAS-CD)
629 END-EXEC.
630
631 EVALUATE WS-RESP-CD
632 WHEN DFHRESP(NORMAL)
633 CONTINUE
634 WHEN DFHRESP(ENDFILE)
635 CONTINUE
636 SET USER-SEC-EOF TO TRUE
637 MOVE 'You have reached the bottom of the page...' TO
638 WS-MESSAGE
639 MOVE -1 TO USRIDINL OF COUSR0AI
640 PERFORM SEND-USRLST-SCREEN
641 WHEN OTHER
642 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
643 MOVE 'Y' TO WS-ERR-FLG
644 MOVE 'Unable to lookup User...' TO
645 WS-MESSAGE
646 MOVE -1 TO USRIDINL OF COUSR0AI
647 PERFORM SEND-USRLST-SCREEN
648 END-EVALUATE.
649
650 *----------------------------------------------------------------*
651 * READPREV-USER-SEC-FILE
652 *----------------------------------------------------------------*
653 READPREV-USER-SEC-FILE.
654
655 EXEC CICS READPREV
656 DATASET (WS-USRSEC-FILE)
657 INTO (SEC-USER-DATA)
658 LENGTH (LENGTH OF SEC-USER-DATA)
659 RIDFLD (SEC-USR-ID)
660 KEYLENGTH (LENGTH OF SEC-USR-ID)
661 RESP (WS-RESP-CD)
662 RESP2 (WS-REAS-CD)
663 END-EXEC.
664
665 EVALUATE WS-RESP-CD
666 WHEN DFHRESP(NORMAL)
667 CONTINUE
668 WHEN DFHRESP(ENDFILE)
669 CONTINUE
670 SET USER-SEC-EOF TO TRUE
671 MOVE 'You have reached the top of the page...' TO
672 WS-MESSAGE
673 MOVE -1 TO USRIDINL OF COUSR0AI
674 PERFORM SEND-USRLST-SCREEN
675 WHEN OTHER
676 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
677 MOVE 'Y' TO WS-ERR-FLG
678 MOVE 'Unable to lookup User...' TO
679 WS-MESSAGE
680 MOVE -1 TO USRIDINL OF COUSR0AI
681 PERFORM SEND-USRLST-SCREEN
682 END-EVALUATE.
683
684 *----------------------------------------------------------------*
685 * ENDBR-USER-SEC-FILE
686 *----------------------------------------------------------------*
687 ENDBR-USER-SEC-FILE.
688
689 EXEC CICS ENDBR
690 DATASET (WS-USRSEC-FILE)
691 END-EXEC.
692
693 *
694 * Ver: CardDemo_v1.0-15-g27d6c6f-68 Date: 2022-07-19 23:12:34 CDT
695 *