MFmainframe-rea
WS carddemo · 26f629ef

Converted program · 218 lines of TypeScript from 359 lines of COBOL · 216 COBOL lines cited (60%)COUSR03C

TypeScript carddemo-ts/src/programs/COUSR03C.ts

1/**
2 * COUSR03C — delete a user from USRSEC (transaction CU03).
3 * Converted from app/cbl/COUSR03C.cbl; screen COUSR03/COUSR3A; file USRSEC.
4 */
5import { alnum, isBlank } from "../runtime/cobol.js";
6import { RESP, type Cics, type Program } from "../runtime/cics.js";
7import type { SymbolicMap } from "../runtime/screen.js";
8import type { SecUserData } from "../generated/records.js";
9import { CCDA_MSG_INVALID_KEY, populateHeaderInfo } from "./common.js";
10import { cuInfo, delimitedBySpace, returnToPrevScreen, WS_USRSEC_FILE } from "./users-lib.js";
11
12const WS_PGMNAME = "COUSR03C";
13const WS_TRANID = "CU03";
14
15/** WS-VARIABLES (COUSR03C.cbl:35-47) plus SEC-USER-DATA (CSUSR01Y). */
16interface Ws {
17 message: string;
18 errFlg: string;
19 respCd: number;
20 usrModified: string;
21 /** SEC-USER-DATA: LOW-VALUES until a READ fills it. */
22 rec: SecUserData;
23 /** Key of the record held by a successful READ ... UPDATE (DELETE without RIDFLD needs it). */
24 heldKey: string | null;
25}
26
27export const COUSR03C: Program = {
28 name: WS_PGMNAME,
29 source: "app/cbl/COUSR03C.cbl",
30 run(ctx: Cics) {
31 const ws: Ws = {
32 message: "",
33 errFlg: "N",
34 respCd: 0,
35 usrModified: "N",
36 rec: { secUsrId: "", secUsrFname: "", secUsrLname: "", secUsrPwd: "", secUsrType: "", secUsrFiller: "" },
37 heldKey: null,
38 };
39 let out = ctx.map("COUSR03", "COUSR3A");
40
41 // MAIN-PARA (COUSR03C.cbl:82-137)
42 ws.errFlg = "N";
43 ws.usrModified = "N";
44 ws.message = "";
45 out.set("ERRMSG", "");
46
47 if (ctx.eib.calen === 0) {
48 ctx.area().toProgram = "COSGN00C";
49 returnToPrevScreen(ctx, WS_TRANID, WS_PGMNAME);
50 }
51 const area = ctx.area();
52 const info = cuInfo(ctx);
53 if (area.pgmContext !== 1) {
54 area.pgmContext = 1;
55 out.clear();
56 out.cursor("USRIDIN");
57 // CDEMO-CU03-USR-SELECTED overlays CDEMO-CU00-USR-SELECTED set by COUSR00C.
58 if (!isBlank(info.usrSelected)) {
59 out.set("USRIDIN", info.usrSelected);
60 processEnterKey(ctx, out, ws);
61 }
62 sendUsrdelScreen(ctx, out, ws);
63 } else {
64 out = receiveUsrdelScreen(ctx, ws);
65 switch (ctx.eib.aid) {
66 case "ENTER":
67 processEnterKey(ctx, out, ws);
68 break;
69 case "PF3":
70 area.toProgram = isBlank(area.fromProgram) ? "COADM01C" : area.fromProgram;
71 returnToPrevScreen(ctx, WS_TRANID, WS_PGMNAME);
72 // falls through: XCTL does not return
73 case "PF4":
74 clearCurrentScreen(ctx, out, ws);
75 break;
76 case "PF5":
77 deleteUserInfo(ctx, out, ws);
78 break;
79 case "PF12":
80 area.toProgram = "COADM01C";
81 returnToPrevScreen(ctx, WS_TRANID, WS_PGMNAME);
82 // falls through: XCTL does not return
83 default:
84 ws.errFlg = "Y";
85 ws.message = CCDA_MSG_INVALID_KEY;
86 sendUsrdelScreen(ctx, out, ws);
87 }
88 }
89 ctx.return(WS_TRANID, area);
90 },
91};
92
93/** PROCESS-ENTER-KEY (COUSR03C.cbl:142-169) */
94function processEnterKey(ctx: Cics, out: SymbolicMap, ws: Ws): void {
95 if (isBlank(out.get("USRIDIN"))) {
96 ws.errFlg = "Y";
97 ws.message = "User ID can NOT be empty...";
98 out.cursor("USRIDIN");
99 sendUsrdelScreen(ctx, out, ws);
100 } else {
101 out.cursor("USRIDIN");
102 }
103
104 if (ws.errFlg !== "Y") {
105 for (const f of ["FNAME", "LNAME", "USRTYPE"]) out.set(f, " ".repeat(20));
106 ws.rec.secUsrId = alnum(out.get("USRIDIN"), 8);
107 readUserSecFile(ctx, out, ws);
108 }
109
110 if (ws.errFlg !== "Y") {
111 out.set("FNAME", ws.rec.secUsrFname);
112 out.set("LNAME", ws.rec.secUsrLname);
113 out.set("USRTYPE", ws.rec.secUsrType);
114 sendUsrdelScreen(ctx, out, ws);
115 }
116}
117
118/** DELETE-USER-INFO (COUSR03C.cbl:174-192) */
119function deleteUserInfo(ctx: Cics, out: SymbolicMap, ws: Ws): void {
120 if (isBlank(out.get("USRIDIN"))) {
121 ws.errFlg = "Y";
122 ws.message = "User ID can NOT be empty...";
123 out.cursor("USRIDIN");
124 sendUsrdelScreen(ctx, out, ws);
125 } else {
126 out.cursor("USRIDIN");
127 }
128
129 if (ws.errFlg !== "Y") {
130 ws.rec.secUsrId = alnum(out.get("USRIDIN"), 8);
131 readUserSecFile(ctx, out, ws);
132 // DELETE follows even when the READ failed.
133 deleteUserSecFile(ctx, out, ws);
134 }
135}
136
137/** SEND-USRDEL-SCREEN (COUSR03C.cbl:213-225) */
138function sendUsrdelScreen(ctx: Cics, out: SymbolicMap, ws: Ws): void {
139 populateHeaderInfo(ctx, out, WS_TRANID, WS_PGMNAME);
140 out.set("ERRMSG", ws.message);
141 ctx.sendMap(out, { erase: true, cursor: true });
142}
143
144/** RECEIVE-USRDEL-SCREEN (COUSR03C.cbl:230-238) */
145function receiveUsrdelScreen(ctx: Cics, ws: Ws): SymbolicMap {
146 const { resp, map } = ctx.receiveMap("COUSR03", "COUSR3A");
147 ws.respCd = resp;
148 return map;
149}
150
151/** READ-USER-SEC-FILE (COUSR03C.cbl:267-300) — READ ... UPDATE */
152function readUserSecFile(ctx: Cics, out: SymbolicMap, ws: Ws): void {
153 const { resp, record } = ctx.read<SecUserData>(WS_USRSEC_FILE, ws.rec.secUsrId, { update: true });
154 ws.respCd = resp;
155 switch (resp) {
156 case RESP.NORMAL:
157 ws.rec = record!;
158 ws.heldKey = record!.secUsrId;
159 ws.message = "Press PF5 key to delete this user ...";
160 out.color("ERRMSG", "NEUTRAL");
161 sendUsrdelScreen(ctx, out, ws);
162 break;
163 case RESP.NOTFND:
164 ws.errFlg = "Y";
165 ws.message = "User ID NOT found...";
166 out.cursor("USRIDIN");
167 sendUsrdelScreen(ctx, out, ws);
168 break;
169 default:
170 ws.errFlg = "Y";
171 ws.message = "Unable to lookup User...";
172 out.cursor("FNAME");
173 sendUsrdelScreen(ctx, out, ws);
174 }
175}
176
177/**
178 * DELETE-USER-SEC-FILE (COUSR03C.cbl:305-336). DELETE without RIDFLD removes the record
179 * held by READ UPDATE; with none held CICS answers INVREQ. The runtime's delete takes
180 * a key, so the held key is tracked here.
181 */
182function deleteUserSecFile(ctx: Cics, out: SymbolicMap, ws: Ws): void {
183 ws.respCd = ws.heldKey !== null ? ctx.delete(WS_USRSEC_FILE, ws.heldKey) : RESP.INVREQ;
184 ws.heldKey = null;
185 switch (ws.respCd) {
186 case RESP.NORMAL:
187 initializeAllFields(out, ws);
188 ws.message = "";
189 out.color("ERRMSG", "GREEN");
190 ws.message = `User ${delimitedBySpace(ws.rec.secUsrId)} has been deleted ...`;
191 sendUsrdelScreen(ctx, out, ws);
192 break;
193 case RESP.NOTFND:
194 ws.errFlg = "Y";
195 ws.message = "User ID NOT found...";
196 out.cursor("USRIDIN");
197 sendUsrdelScreen(ctx, out, ws);
198 break;
199 default:
200 ws.errFlg = "Y";
201 ws.message = "Unable to Update User...";
202 out.cursor("FNAME");
203 sendUsrdelScreen(ctx, out, ws);
204 }
205}
206
207/** CLEAR-CURRENT-SCREEN (COUSR03C.cbl:341-344) */
208function clearCurrentScreen(ctx: Cics, out: SymbolicMap, ws: Ws): void {
209 initializeAllFields(out, ws);
210 sendUsrdelScreen(ctx, out, ws);
211}
212
213/** INITIALIZE-ALL-FIELDS (COUSR03C.cbl:349-356) */
214function initializeAllFields(out: SymbolicMap, ws: Ws): void {
215 out.cursor("USRIDIN");
216 for (const f of ["USRIDIN", "FNAME", "LNAME", "USRTYPE"]) out.set(f, " ".repeat(20));
217 ws.message = "";
218}

COBOL app/cbl/COUSR03C.cbl

1 ******************************************************************
2 * Program : COUSR03C.CBL
3 * Application : CardDemo
4 * Type : CICS COBOL Program
5 * Function : Delete a user 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. COUSR03C.
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 'COUSR03C'.
37 05 WS-TRANID PIC X(04) VALUE 'CU03'.
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-CU03-INFO.
51 10 CDEMO-CU03-USRID-FIRST PIC X(08).
52 10 CDEMO-CU03-USRID-LAST PIC X(08).
53 10 CDEMO-CU03-PAGE-NUM PIC 9(08).
54 10 CDEMO-CU03-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-CU03-USR-SEL-FLG PIC X(01).
58 10 CDEMO-CU03-USR-SELECTED PIC X(08).
59
60 COPY COUSR03.
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 COUSR3AO
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 COUSR3AO
98 MOVE -1 TO USRIDINL OF COUSR3AI
99 IF CDEMO-CU03-USR-SELECTED NOT =
100 SPACES AND LOW-VALUES
101 MOVE CDEMO-CU03-USR-SELECTED TO
102 USRIDINI OF COUSR3AI
103 PERFORM PROCESS-ENTER-KEY
104 END-IF
105 PERFORM SEND-USRDEL-SCREEN
106 ELSE
107 PERFORM RECEIVE-USRDEL-SCREEN
108 EVALUATE EIBAID
109 WHEN DFHENTER
110 PERFORM PROCESS-ENTER-KEY
111 WHEN DFHPF3
112 IF CDEMO-FROM-PROGRAM = SPACES OR LOW-VALUES
113 MOVE 'COADM01C' TO CDEMO-TO-PROGRAM
114 ELSE
115 MOVE CDEMO-FROM-PROGRAM TO
116 CDEMO-TO-PROGRAM
117 END-IF
118 PERFORM RETURN-TO-PREV-SCREEN
119 WHEN DFHPF4
120 PERFORM CLEAR-CURRENT-SCREEN
121 WHEN DFHPF5
122 PERFORM DELETE-USER-INFO
123 WHEN DFHPF12
124 MOVE 'COADM01C' TO CDEMO-TO-PROGRAM
125 PERFORM RETURN-TO-PREV-SCREEN
126 WHEN OTHER
127 MOVE 'Y' TO WS-ERR-FLG
128 MOVE CCDA-MSG-INVALID-KEY TO WS-MESSAGE
129 PERFORM SEND-USRDEL-SCREEN
130 END-EVALUATE
131 END-IF
132 END-IF
133
134 EXEC CICS RETURN
135 TRANSID (WS-TRANID)
136 COMMAREA (CARDDEMO-COMMAREA)
137 END-EXEC.
138
139 *----------------------------------------------------------------*
140 * PROCESS-ENTER-KEY
141 *----------------------------------------------------------------*
142 PROCESS-ENTER-KEY.
143
144 EVALUATE TRUE
145 WHEN USRIDINI OF COUSR3AI = SPACES OR LOW-VALUES
146 MOVE 'Y' TO WS-ERR-FLG
147 MOVE 'User ID can NOT be empty...' TO
148 WS-MESSAGE
149 MOVE -1 TO USRIDINL OF COUSR3AI
150 PERFORM SEND-USRDEL-SCREEN
151 WHEN OTHER
152 MOVE -1 TO USRIDINL OF COUSR3AI
153 CONTINUE
154 END-EVALUATE
155
156 IF NOT ERR-FLG-ON
157 MOVE SPACES TO FNAMEI OF COUSR3AI
158 LNAMEI OF COUSR3AI
159 USRTYPEI OF COUSR3AI
160 MOVE USRIDINI OF COUSR3AI TO SEC-USR-ID
161 PERFORM READ-USER-SEC-FILE
162 END-IF.
163
164 IF NOT ERR-FLG-ON
165 MOVE SEC-USR-FNAME TO FNAMEI OF COUSR3AI
166 MOVE SEC-USR-LNAME TO LNAMEI OF COUSR3AI
167 MOVE SEC-USR-TYPE TO USRTYPEI OF COUSR3AI
168 PERFORM SEND-USRDEL-SCREEN
169 END-IF.
170
171 *----------------------------------------------------------------*
172 * DELETE-USER-INFO
173 *----------------------------------------------------------------*
174 DELETE-USER-INFO.
175
176 EVALUATE TRUE
177 WHEN USRIDINI OF COUSR3AI = SPACES OR LOW-VALUES
178 MOVE 'Y' TO WS-ERR-FLG
179 MOVE 'User ID can NOT be empty...' TO
180 WS-MESSAGE
181 MOVE -1 TO USRIDINL OF COUSR3AI
182 PERFORM SEND-USRDEL-SCREEN
183 WHEN OTHER
184 MOVE -1 TO USRIDINL OF COUSR3AI
185 CONTINUE
186 END-EVALUATE
187
188 IF NOT ERR-FLG-ON
189 MOVE USRIDINI OF COUSR3AI TO SEC-USR-ID
190 PERFORM READ-USER-SEC-FILE
191 PERFORM DELETE-USER-SEC-FILE
192 END-IF.
193
194 *----------------------------------------------------------------*
195 * RETURN-TO-PREV-SCREEN
196 *----------------------------------------------------------------*
197 RETURN-TO-PREV-SCREEN.
198
199 IF CDEMO-TO-PROGRAM = LOW-VALUES OR SPACES
200 MOVE 'COSGN00C' TO CDEMO-TO-PROGRAM
201 END-IF
202 MOVE WS-TRANID TO CDEMO-FROM-TRANID
203 MOVE WS-PGMNAME TO CDEMO-FROM-PROGRAM
204 MOVE ZEROS TO CDEMO-PGM-CONTEXT
205 EXEC CICS
206 XCTL PROGRAM(CDEMO-TO-PROGRAM)
207 COMMAREA(CARDDEMO-COMMAREA)
208 END-EXEC.
209
210 *----------------------------------------------------------------*
211 * SEND-USRDEL-SCREEN
212 *----------------------------------------------------------------*
213 SEND-USRDEL-SCREEN.
214
215 PERFORM POPULATE-HEADER-INFO
216
217 MOVE WS-MESSAGE TO ERRMSGO OF COUSR3AO
218
219 EXEC CICS SEND
220 MAP('COUSR3A')
221 MAPSET('COUSR03')
222 FROM(COUSR3AO)
223 ERASE
224 CURSOR
225 END-EXEC.
226
227 *----------------------------------------------------------------*
228 * RECEIVE-USRDEL-SCREEN
229 *----------------------------------------------------------------*
230 RECEIVE-USRDEL-SCREEN.
231
232 EXEC CICS RECEIVE
233 MAP('COUSR3A')
234 MAPSET('COUSR03')
235 INTO(COUSR3AI)
236 RESP(WS-RESP-CD)
237 RESP2(WS-REAS-CD)
238 END-EXEC.
239
240 *----------------------------------------------------------------*
241 * POPULATE-HEADER-INFO
242 *----------------------------------------------------------------*
243 POPULATE-HEADER-INFO.
244
245 MOVE FUNCTION CURRENT-DATE TO WS-CURDATE-DATA
246
247 MOVE CCDA-TITLE01 TO TITLE01O OF COUSR3AO
248 MOVE CCDA-TITLE02 TO TITLE02O OF COUSR3AO
249 MOVE WS-TRANID TO TRNNAMEO OF COUSR3AO
250 MOVE WS-PGMNAME TO PGMNAMEO OF COUSR3AO
251
252 MOVE WS-CURDATE-MONTH TO WS-CURDATE-MM
253 MOVE WS-CURDATE-DAY TO WS-CURDATE-DD
254 MOVE WS-CURDATE-YEAR(3:2) TO WS-CURDATE-YY
255
256 MOVE WS-CURDATE-MM-DD-YY TO CURDATEO OF COUSR3AO
257
258 MOVE WS-CURTIME-HOURS TO WS-CURTIME-HH
259 MOVE WS-CURTIME-MINUTE TO WS-CURTIME-MM
260 MOVE WS-CURTIME-SECOND TO WS-CURTIME-SS
261
262 MOVE WS-CURTIME-HH-MM-SS TO CURTIMEO OF COUSR3AO.
263
264 *----------------------------------------------------------------*
265 * READ-USER-SEC-FILE
266 *----------------------------------------------------------------*
267 READ-USER-SEC-FILE.
268
269 EXEC CICS READ
270 DATASET (WS-USRSEC-FILE)
271 INTO (SEC-USER-DATA)
272 LENGTH (LENGTH OF SEC-USER-DATA)
273 RIDFLD (SEC-USR-ID)
274 KEYLENGTH (LENGTH OF SEC-USR-ID)
275 UPDATE
276 RESP (WS-RESP-CD)
277 RESP2 (WS-REAS-CD)
278 END-EXEC.
279
280 EVALUATE WS-RESP-CD
281 WHEN DFHRESP(NORMAL)
282 CONTINUE
283 MOVE 'Press PF5 key to delete this user ...' TO
284 WS-MESSAGE
285 MOVE DFHNEUTR TO ERRMSGC OF COUSR3AO
286 PERFORM SEND-USRDEL-SCREEN
287 WHEN DFHRESP(NOTFND)
288 MOVE 'Y' TO WS-ERR-FLG
289 MOVE 'User ID NOT found...' TO
290 WS-MESSAGE
291 MOVE -1 TO USRIDINL OF COUSR3AI
292 PERFORM SEND-USRDEL-SCREEN
293 WHEN OTHER
294 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
295 MOVE 'Y' TO WS-ERR-FLG
296 MOVE 'Unable to lookup User...' TO
297 WS-MESSAGE
298 MOVE -1 TO FNAMEL OF COUSR3AI
299 PERFORM SEND-USRDEL-SCREEN
300 END-EVALUATE.
301
302 *----------------------------------------------------------------*
303 * DELETE-USER-SEC-FILE
304 *----------------------------------------------------------------*
305 DELETE-USER-SEC-FILE.
306
307 EXEC CICS DELETE
308 DATASET (WS-USRSEC-FILE)
309 RESP (WS-RESP-CD)
310 RESP2 (WS-REAS-CD)
311 END-EXEC.
312
313 EVALUATE WS-RESP-CD
314 WHEN DFHRESP(NORMAL)
315 PERFORM INITIALIZE-ALL-FIELDS
316 MOVE SPACES TO WS-MESSAGE
317 MOVE DFHGREEN TO ERRMSGC OF COUSR3AO
318 STRING 'User ' DELIMITED BY SIZE
319 SEC-USR-ID DELIMITED BY SPACE
320 ' has been deleted ...' DELIMITED BY SIZE
321 INTO WS-MESSAGE
322 PERFORM SEND-USRDEL-SCREEN
323 WHEN DFHRESP(NOTFND)
324 MOVE 'Y' TO WS-ERR-FLG
325 MOVE 'User ID NOT found...' TO
326 WS-MESSAGE
327 MOVE -1 TO USRIDINL OF COUSR3AI
328 PERFORM SEND-USRDEL-SCREEN
329 WHEN OTHER
330 DISPLAY 'RESP:' WS-RESP-CD 'REAS:' WS-REAS-CD
331 MOVE 'Y' TO WS-ERR-FLG
332 MOVE 'Unable to Update User...' TO
333 WS-MESSAGE
334 MOVE -1 TO FNAMEL OF COUSR3AI
335 PERFORM SEND-USRDEL-SCREEN
336 END-EVALUATE.
337
338 *----------------------------------------------------------------*
339 * CLEAR-CURRENT-SCREEN
340 *----------------------------------------------------------------*
341 CLEAR-CURRENT-SCREEN.
342
343 PERFORM INITIALIZE-ALL-FIELDS.
344 PERFORM SEND-USRDEL-SCREEN.
345
346 *----------------------------------------------------------------*
347 * INITIALIZE-ALL-FIELDS
348 *----------------------------------------------------------------*
349 INITIALIZE-ALL-FIELDS.
350
351 MOVE -1 TO USRIDINL OF COUSR3AI
352 MOVE SPACES TO USRIDINI OF COUSR3AI
353 FNAMEI OF COUSR3AI
354 LNAMEI OF COUSR3AI
355 USRTYPEI OF COUSR3AI
356 WS-MESSAGE.
357 *
358 * Ver: CardDemo_v1.0-15-g27d6c6f-68 Date: 2022-07-19 23:12:35 CDT
359 *