MFmainframe-rea
WS carddemo · 26f629ef

cobol · 414 lines · sha256 85d36699cbd30793 · guides at columns 7 and 72app/cbl/COUSR02C.cbl

1 ******************************************************************
2 * Program : COUSR02C.CBL
3 * Application : CardDemo
4 * Type : CICS COBOL Program
5 * Function : Update a user in 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. COUSR02C.
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 'COUSR02C'.
37 05 WS-TRANID PIC X(04) VALUE 'CU02'.
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-RESP-CD PIC S9(09) COMP VALUE ZEROS.
44 05 WS-REAS-CD PIC S9(09) COMP VALUE ZEROS.
45 05 WS-USR-MODIFIED PIC X(01) VALUE 'N'.
46 88 USR-MODIFIED-YES VALUE 'Y'.
47 88 USR-MODIFIED-NO VALUE 'N'.
48
49 COPY COCOM01Y.
50 05 CDEMO-CU02-INFO.
51 10 CDEMO-CU02-USRID-FIRST PIC X(08).
52 10 CDEMO-CU02-USRID-LAST PIC X(08).
53 10 CDEMO-CU02-PAGE-NUM PIC 9(08).
54 10 CDEMO-CU02-NEXT-PAGE-FLG PIC X(01) VALUE 'N'.
55 88 NEXT-PAGE-YES VALUE 'Y'.
56 88 NEXT-PAGE-NO VALUE 'N'.
57 10 CDEMO-CU02-USR-SEL-FLG PIC X(01).
58 10 CDEMO-CU02-USR-SELECTED PIC X(08).
59
60 COPY COUSR02.
61
62 COPY COTTL01Y.
63 COPY CSDAT01Y.
64 COPY CSMSG01Y.
65 COPY CSUSR01Y.
66
67 COPY DFHAID.
68 COPY DFHBMSCA.
69
70 *----------------------------------------------------------------*
71 * LINKAGE SECTION
72 *----------------------------------------------------------------*
73 LINKAGE SECTION.
74 01 DFHCOMMAREA.
75 05 LK-COMMAREA PIC X(01)
76 OCCURS 1 TO 32767 TIMES DEPENDING ON EIBCALEN.
77
78 *----------------------------------------------------------------*
79 * PROCEDURE DIVISION
80 *----------------------------------------------------------------*
81 PROCEDURE DIVISION.
82 MAIN-PARA.
83
84 SET ERR-FLG-OFF TO TRUE
85 SET USR-MODIFIED-NO TO TRUE
86
87 MOVE SPACES TO WS-MESSAGE
88 ERRMSGO OF COUSR2AO
89
90 IF EIBCALEN = 0
91 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM
92 PERFORM RETURN-TO-PREV-SCREEN
93 ELSE
94 MOVE DFHCOMMAREA(1:EIBCALEN) TO CARDDEMO-COMMAREA
95 IF NOT CDEMO-PGM-REENTER
96 SET CDEMO-PGM-REENTER TO TRUE
97 MOVE LOW-VALUES TO COUSR2AO
98 MOVE -1 TO USRIDINL OF COUSR2AI
99 IF CDEMO-CU02-USR-SELECTED NOT =
100 SPACES AND LOW-VALUES
101 MOVE CDEMO-CU02-USR-SELECTED TO
102 USRIDINI OF COUSR2AI
103 PERFORM PROCESS-ENTER-KEY
104 END-IF
105 PERFORM SEND-USRUPD-SCREEN
106 ELSE
107 PERFORM RECEIVE-USRUPD-SCREEN
108 EVALUATE EIBAID
109 WHEN DFHENTER
110 PERFORM PROCESS-ENTER-KEY
111 WHEN DFHPF3
112 PERFORM UPDATE-USER-INFO
113 IF CDEMO-FROM-PROGRAM = SPACES OR LOW-VALUES
114 MOVE 'COADM01C' TO CDEMO-TO-PROGRAM
115 ELSE
116 MOVE CDEMO-FROM-PROGRAM TO
117 CDEMO-TO-PROGRAM
118 END-IF
119 PERFORM RETURN-TO-PREV-SCREEN
120 WHEN DFHPF4
121 PERFORM CLEAR-CURRENT-SCREEN
122 WHEN DFHPF5
123 PERFORM UPDATE-USER-INFO
124 WHEN DFHPF12
125 MOVE 'COADM01C' TO CDEMO-TO-PROGRAM
126 PERFORM RETURN-TO-PREV-SCREEN
127 WHEN OTHER
128 MOVE 'Y' TO WS-ERR-FLG
129 MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE
130 PERFORM SEND-USRUPD-SCREEN
131 END-EVALUATE
132 END-IF
133 END-IF
134
135 EXEC CICS RETURN
136 TRANSID (WS-TRANID)
137 COMMAREA (CARDDEMO-COMMAREA)
138 END-EXEC.
139
140 *----------------------------------------------------------------*
141 * PROCESS-ENTER-KEY
142 *----------------------------------------------------------------*
143 PROCESS-ENTER-KEY.
144
145 EVALUATE TRUE
146 WHEN USRIDINI OF COUSR2AI = SPACES OR LOW-VALUES
147 MOVE 'Y' TO WS-ERR-FLG
148 MOVE 'User ID can NOT be empty...' TO
149 WS-MESSAGE
150 MOVE -1 TO USRIDINL OF COUSR2AI
151 PERFORM SEND-USRUPD-SCREEN
152 WHEN OTHER
153 MOVE -1 TO USRIDINL OF COUSR2AI
154 CONTINUE
155 END-EVALUATE
156
157 IF NOT ERR-FLG-ON
158 MOVE SPACES TO FNAMEI OF COUSR2AI
159 LNAMEI OF COUSR2AI
160 PASSWDI OF COUSR2AI
161 USRTYPEI OF COUSR2AI
162 MOVE USRIDINI OF COUSR2AI TO SEC-USR-ID
163 PERFORM READ-USER-SEC-FILE
164 END-IF.
165
166 IF NOT ERR-FLG-ON
167 MOVE SEC-USR-FNAME TO FNAMEI OF COUSR2AI
168 MOVE SEC-USR-LNAME TO LNAMEI OF COUSR2AI
169 MOVE SEC-USR-PWD TO PASSWDI OF COUSR2AI
170 MOVE SEC-USR-TYPE TO USRTYPEI OF COUSR2AI
171 PERFORM SEND-USRUPD-SCREEN
172 END-IF.
173
174 *----------------------------------------------------------------*
175 * UPDATE-USER-INFO
176 *----------------------------------------------------------------*
177 UPDATE-USER-INFO.
178
179 EVALUATE TRUE
180 WHEN USRIDINI OF COUSR2AI = SPACES OR LOW-VALUES
181 MOVE 'Y' TO WS-ERR-FLG
182 MOVE 'User ID can NOT be empty...' TO
183 WS-MESSAGE
184 MOVE -1 TO USRIDINL OF COUSR2AI
185 PERFORM SEND-USRUPD-SCREEN
186 WHEN FNAMEI OF COUSR2AI = SPACES OR LOW-VALUES
187 MOVE 'Y' TO WS-ERR-FLG
188 MOVE 'First Name can NOT be empty...' TO
189 WS-MESSAGE
190 MOVE -1 TO FNAMEL OF COUSR2AI
191 PERFORM SEND-USRUPD-SCREEN
192 WHEN LNAMEI OF COUSR2AI = SPACES OR LOW-VALUES
193 MOVE 'Y' TO WS-ERR-FLG
194 MOVE 'Last Name can NOT be empty...' TO
195 WS-MESSAGE
196 MOVE -1 TO LNAMEL OF COUSR2AI
197 PERFORM SEND-USRUPD-SCREEN
198 WHEN PASSWDI OF COUSR2AI = SPACES OR LOW-VALUES
199 MOVE 'Y' TO WS-ERR-FLG
200 MOVE 'Password can NOT be empty...' TO
201 WS-MESSAGE
202 MOVE -1 TO PASSWDL OF COUSR2AI
203 PERFORM SEND-USRUPD-SCREEN
204 WHEN USRTYPEI OF COUSR2AI = SPACES OR LOW-VALUES
205 MOVE 'Y' TO WS-ERR-FLG
206 MOVE 'User Type can NOT be empty...' TO
207 WS-MESSAGE
208 MOVE -1 TO USRTYPEL OF COUSR2AI
209 PERFORM SEND-USRUPD-SCREEN
210 WHEN OTHER
211 MOVE -1 TO FNAMEL OF COUSR2AI
212 CONTINUE
213 END-EVALUATE
214
215 IF NOT ERR-FLG-ON
216 MOVE USRIDINI OF COUSR2AI TO SEC-USR-ID
217 PERFORM READ-USER-SEC-FILE
218
219 IF FNAMEI OF COUSR2AI NOT = SEC-USR-FNAME
220 MOVE FNAMEI OF COUSR2AI TO SEC-USR-FNAME
221 SET USR-MODIFIED-YES TO TRUE
222 END-IF
223 IF LNAMEI OF COUSR2AI NOT = SEC-USR-LNAME
224 MOVE LNAMEI OF COUSR2AI TO SEC-USR-LNAME
225 SET USR-MODIFIED-YES TO TRUE
226 END-IF
227 IF PASSWDI OF COUSR2AI NOT = SEC-USR-PWD
228 MOVE PASSWDI OF COUSR2AI TO SEC-USR-PWD
229 SET USR-MODIFIED-YES TO TRUE
230 END-IF
231 IF USRTYPEI OF COUSR2AI NOT = SEC-USR-TYPE
232 MOVE USRTYPEI OF COUSR2AI TO SEC-USR-TYPE
233 SET USR-MODIFIED-YES TO TRUE
234 END-IF
235
236 IF USR-MODIFIED-YES
237 PERFORM UPDATE-USER-SEC-FILE
238 ELSE
239 MOVE 'Please modify to update ...' TO
240 WS-MESSAGE
241 MOVE DFHRED TO ERRMSGC OF COUSR2AO
242 PERFORM SEND-USRUPD-SCREEN
243 END-IF
244
245 END-IF.
246
247 *----------------------------------------------------------------*
248 * RETURN-TO-PREV-SCREEN
249 *----------------------------------------------------------------*
250 RETURN-TO-PREV-SCREEN.
251
252 IF CDEMO-TO-PROGRAM = LOW-VALUES OR SPACES
253 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM
254 END-IF
255 MOVE WS-TRANID TO CDEMO-FROM-TRANID
256 MOVE WS-PGMNAME TO CDEMO-FROM-PROGRAM
257 MOVE ZEROS TO CDEMO-PGM-CONTEXT
258 EXEC CICS
259 XCTL PROGRAM(CDEMO-TO-PROGRAM)
260 COMMAREA(CARDDEMO-COMMAREA)
261 END-EXEC.
262
263 *----------------------------------------------------------------*
264 * SEND-USRUPD-SCREEN
265 *----------------------------------------------------------------*
266 SEND-USRUPD-SCREEN.
267
268 PERFORM POPULATE-HEADER-INFO
269
270 MOVE WS-MESSAGE TO ERRMSGO OF COUSR2AO
271
272 EXEC CICS SEND
273 MAP('COUSR2A')
274 MAPSET('COUSR02')
275 FROM(COUSR2AO)
276 ERASE
277 CURSOR
278 END-EXEC.
279
280 *----------------------------------------------------------------*
281 * RECEIVE-USRUPD-SCREEN
282 *----------------------------------------------------------------*
283 RECEIVE-USRUPD-SCREEN.
284
285 EXEC CICS RECEIVE
286 MAP('COUSR2A')
287 MAPSET('COUSR02')
288 INTO(COUSR2AI)
289 RESP(WS-RESP-CD)
290 RESP2(WS-REAS-CD)
291 END-EXEC.
292
293 *----------------------------------------------------------------*
294 * POPULATE-HEADER-INFO
295 *----------------------------------------------------------------*
296 POPULATE-HEADER-INFO.
297
298 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
299
300 MOVE CCDA-TITLE01 TO TITLE01O OF COUSR2AO
301 MOVE CCDA-TITLE02 TO TITLE02O OF COUSR2AO
302 MOVE WS-TRANID TO TRNNAMEO OF COUSR2AO
303 MOVE WS-PGMNAME TO PGMNAMEO OF COUSR2AO
304
305 MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM
306 MOVE WS-CURDATE-DAY TO WS-CURDATE-DD
307 MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY
308
309 MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF COUSR2AO
310
311 MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH
312 MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM
313 MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS
314
315 MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF COUSR2AO.
316
317 *----------------------------------------------------------------*
318 * READ-USER-SEC-FILE
319 *----------------------------------------------------------------*
320 READ-USER-SEC-FILE.
321
322 EXEC CICS READ
323 DATASET (WS-USRSEC-FILE)
324 INTO (SEC-USER-DATA)
325 LENGTH (LENGTH OF SEC-USER-DATA)
326 RIDFLD (SEC-USR-ID)
327 KEYLENGTH (LENGTH OF SEC-USR-ID)
328 UPDATE
329 RESP (WS-RESP-CD)
330 RESP2 (WS-REAS-CD)
331 END-EXEC.
332
333 EVALUATE WS-RESP-CD
334 WHEN DFHRESP(NORMAL)
335 CONTINUE
336 MOVE 'Press PF5 key to save your updates ...' TO
337 WS-MESSAGE
338 MOVE DFHNEUTR TO ERRMSGC OF COUSR2AO
339 PERFORM SEND-USRUPD-SCREEN
340 WHEN DFHRESP(NOTFND)
341 MOVE 'Y' TO WS-ERR-FLG
342 MOVE 'User ID NOT found...' TO
343 WS-MESSAGE
344 MOVE -1 TO USRIDINL OF COUSR2AI
345 PERFORM SEND-USRUPD-SCREEN
346 WHEN OTHER
347 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
348 MOVE 'Y' TO WS-ERR-FLG
349 MOVE 'Unable to lookup User...' TO
350 WS-MESSAGE
351 MOVE -1 TO FNAMEL OF COUSR2AI
352 PERFORM SEND-USRUPD-SCREEN
353 END-EVALUATE.
354
355 *----------------------------------------------------------------*
356 * UPDATE-USER-SEC-FILE
357 *----------------------------------------------------------------*
358 UPDATE-USER-SEC-FILE.
359
360 EXEC CICS REWRITE
361 DATASET (WS-USRSEC-FILE)
362 FROM (SEC-USER-DATA)
363 LENGTH (LENGTH OF SEC-USER-DATA)
364 RESP (WS-RESP-CD)
365 RESP2 (WS-REAS-CD)
366 END-EXEC.
367
368 EVALUATE WS-RESP-CD
369 WHEN DFHRESP(NORMAL)
370 MOVE SPACES TO WS-MESSAGE
371 MOVE DFHGREEN TO ERRMSGC OF COUSR2AO
372 STRING 'User ' DELIMITED BY SIZE
373 SEC-USR-ID DELIMITED BY SPACE
374 ' has been updated ...' DELIMITED BY SIZE
375 INTO WS-MESSAGE
376 PERFORM SEND-USRUPD-SCREEN
377 WHEN DFHRESP(NOTFND)
378 MOVE 'Y' TO WS-ERR-FLG
379 MOVE 'User ID NOT found...' TO
380 WS-MESSAGE
381 MOVE -1 TO USRIDINL OF COUSR2AI
382 PERFORM SEND-USRUPD-SCREEN
383 WHEN OTHER
384 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
385 MOVE 'Y' TO WS-ERR-FLG
386 MOVE 'Unable to Update User...' TO
387 WS-MESSAGE
388 MOVE -1 TO FNAMEL OF COUSR2AI
389 PERFORM SEND-USRUPD-SCREEN
390 END-EVALUATE.
391
392 *----------------------------------------------------------------*
393 * CLEAR-CURRENT-SCREEN
394 *----------------------------------------------------------------*
395 CLEAR-CURRENT-SCREEN.
396
397 PERFORM INITIALIZE-ALL-FIELDS.
398 PERFORM SEND-USRUPD-SCREEN.
399
400 *----------------------------------------------------------------*
401 * INITIALIZE-ALL-FIELDS
402 *----------------------------------------------------------------*
403 INITIALIZE-ALL-FIELDS.
404
405 MOVE -1 TO USRIDINL OF COUSR2AI
406 MOVE SPACES TO USRIDINI OF COUSR2AI
407 FNAMEI OF COUSR2AI
408 LNAMEI OF COUSR2AI
409 PASSWDI OF COUSR2AI
410 USRTYPEI OF COUSR2AI
411 WS-MESSAGE.
412 *
413 * Ver: CardDemo_v1.0-15-g27d6c6f-68 Date: 2022-07-19 23:12:34 CDT
414 *