MFmainframe-rea
WS carddemo · 26f629ef

cobol · 369 lines · sha256 5694a2ed8a12dd4d · guides at columns 7 and 72app/app-authorization-ims-db2-mq/cbl/PAUDBLOD.CBL

1 ******************************************************************
2 * Copyright Amazon.com, Inc. or its affiliates.
3 * All Rights Reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License").
6 * You may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing,
12 * software distributed under the License is distributed on an
13 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14 * either express or implied. See the License for the specific
15 * language governing permissions and limitations under the License
16 ******************************************************************
17 IDENTIFICATION DIVISION. 00010026
18 PROGRAM-ID. PAUDBLOD. 00020053
19 AUTHOR. AWS. 00030026
20 00040026
21 ENVIRONMENT DIVISION. 00050026
22 CONFIGURATION SECTION. 00060026
23 00070026
24 INPUT-OUTPUT SECTION. 00080026
25 FILE-CONTROL. 00090026
26 SELECT INFILE1 ASSIGN TO INFILE1 00100053
27 ORGANIZATION IS SEQUENTIAL 00110026
28 ACCESS MODE IS SEQUENTIAL 00120026
29 FILE STATUS IS WS-INFIL1-STATUS. 00130053
30 00140026
31 * 00150026
32 SELECT INFILE2 ASSIGN TO INFILE2 00151053
33 ORGANIZATION IS SEQUENTIAL 00152026
34 ACCESS MODE IS SEQUENTIAL 00153026
35 FILE STATUS IS WS-INFIL2-STATUS. 00154053
36 00155026
37 * 00156026
38 *----------------------------------------------------------------*00160026
39 DATA DIVISION. 00170026
40 *----------------------------------------------------------------*00180026
41 * 00190026
42 FILE SECTION. 00200026
43 FD INFILE1. 00210053
44 01 INFIL1-REC PIC X(100). 00220053
45 FD INFILE2. 00221053
46 01 INFIL2-REC. 00222053
47 05 ROOT-SEG-KEY PIC S9(11) COMP-3. 00223036
48 05 CHILD-SEG-REC PIC X(200). 00224036
49 * 00230026
50 *----------------------------------------------------------------*00240026
51 WORKING-STORAGE SECTION. 00250026
52 *----------------------------------------------------------------*00260026
53 01 WS-VARIABLES. 00270026
54 05 WS-PGMNAME PIC X(08) VALUE 'IMSUNLOD'. 00280026
55 05 CURRENT-DATE PIC 9(06). 00290026
56 05 CURRENT-YYDDD PIC 9(05). 00300026
57 05 WS-AUTH-DATE PIC 9(05). 00310026
58 05 WS-EXPIRY-DAYS PIC S9(4) COMP. 00320026
59 05 WS-DAY-DIFF PIC S9(4) COMP. 00330026
60 05 IDX PIC S9(4) COMP. 00340026
61 05 WS-CURR-APP-ID PIC 9(11). 00350026
62 * 00360026
63 05 WS-NO-CHKP PIC 9(8) VALUE 0. 00370026
64 05 WS-AUTH-SMRY-PROC-CNT PIC 9(8) VALUE 0. 00380026
65 05 WS-TOT-REC-WRITTEN PIC S9(8) COMP VALUE 0. 00390026
66 05 WS-NO-SUMRY-READ PIC S9(8) COMP VALUE 0. 00400026
67 05 WS-NO-SUMRY-DELETED PIC S9(8) COMP VALUE 0. 00410026
68 05 WS-NO-DTL-READ PIC S9(8) COMP VALUE 0. 00420026
69 05 WS-NO-DTL-DELETED PIC S9(8) COMP VALUE 0. 00430026
70 * 00440026
71 05 WS-ERR-FLG PIC X(01) VALUE 'N'. 00450026
72 88 ERR-FLG-ON VALUE 'Y'. 00460026
73 88 ERR-FLG-OFF VALUE 'N'. 00470026
74 05 WS-END-OF-AUTHDB-FLAG PIC X(01) VALUE 'N'. 00480026
75 88 END-OF-AUTHDB VALUE 'Y'. 00490026
76 88 NOT-END-OF-AUTHDB VALUE 'N'. 00500026
77 05 WS-MORE-AUTHS-FLAG PIC X(01) VALUE 'N'. 00510026
78 88 MORE-AUTHS VALUE 'Y'. 00520026
79 88 NO-MORE-AUTHS VALUE 'N'. 00530026
80 05 WS-END-OF-INFILE1 PIC X(01) VALUE SPACES. 00540053
81 05 WS-END-OF-INFILE2 PIC X(01) VALUE SPACES. 00550053
82 05 WS-INFILE-STATUS PIC X(02) VALUE SPACES. 00570026
83 05 WS-INFIL1-STATUS PIC X(02) VALUE SPACES. 00571053
84 05 WS-INFIL2-STATUS PIC X(02) VALUE SPACES. 00572053
85 05 END-ROOT-SEG-FILE PIC X(01) VALUE SPACES. 00573053
86 05 END-CHILD-SEG-FILE PIC X(01) VALUE SPACES. 00574053
87 05 WS-CUSTID-STATUS PIC X(02) VALUE SPACES. 00580026
88 88 END-OF-FILE VALUE '10'. 00590026
89 * 00600026
90 05 WK-CHKPT-ID. 00610026
91 10 FILLER PIC X(04) VALUE 'RMAD'. 00620026
92 10 WK-CHKPT-ID-CTR PIC 9(04) VALUE ZEROES. 00630026
93 * 00640026
94 01 WS-IMS-VARIABLES. 00650026
95 * 05 PSB-NAME PIC X(8) VALUE 'IMSUNLOD'. 00660042
96 * 05 PCB-OFFSET. 00670042
97 * 10 PAUT-PCB-NUM PIC S9(4) COMP VALUE +2. 00680042
98 05 IMS-RETURN-CODE PIC X(02). 00690026
99 88 STATUS-OK VALUE ' ', 'FW'. 00700026
100 88 SEGMENT-NOT-FOUND VALUE 'GE'. 00710026
101 88 DUPLICATE-SEGMENT-FOUND VALUE 'II'. 00720026
102 88 WRONG-PARENTAGE VALUE 'GP'. 00730026
103 88 END-OF-DB VALUE 'GB'. 00740026
104 88 DATABASE-UNAVAILABLE VALUE 'BA'. 00750026
105 88 PSB-SCHEDULED-MORE-THAN-ONCE VALUE 'TC'. 00760026
106 88 COULD-NOT-SCHEDULE-PSB VALUE 'TE'. 00770026
107 88 RETRY-CONDITION VALUE 'BA', 'FH', 'TE'. 00780026
108 05 WS-IMS-PSB-SCHD-FLG PIC X(1). 00790026
109 88 IMS-PSB-SCHD VALUE 'Y'. 00800026
110 88 IMS-PSB-NOT-SCHD VALUE 'N'. 00810026
111 00820026
112 * 00830026
113 01 ROOT-QUAL-SSA. 00831053
114 05 QUAL-SSA-SEG-NAME PIC X(08) VALUE 'PAUTSUM0'. 00831153
115 05 FILLER PIC X(01) VALUE '('. 00831253
116 05 QUAL-SSA-KEY-FIELD PIC X(08) VALUE 'ACCNTID '. 00831354
117 05 QUAL-SSA-REL-OPER PIC X(02) VALUE 'EQ'. 00831454
118 05 QUAL-SSA-KEY-VALUE PIC S9(11) COMP-3. 00831553
119 05 FILLER PIC X(01) VALUE ')'. 00831653
120 * 00831753
121 01 ROOT-UNQUAL-SSA. 00831853
122 05 FILLER PIC X(08) VALUE 'PAUTSUM0'. 00831953
123 05 FILLER PIC X(01) VALUE ' '. 00832053
124 * 00832153
125 01 CHILD-UNQUAL-SSA. 00832253
126 05 FILLER PIC X(08) VALUE 'PAUTDTL1'. 00832353
127 05 FILLER PIC X(01) VALUE ' '. 00832453
128 * 00833029
129 01 PRM-INFO. 00840026
130 05 P-EXPIRY-DAYS PIC 9(02). 00850026
131 05 FILLER PIC X(01). 00860026
132 05 P-CHKP-FREQ PIC X(05). 00870026
133 05 FILLER PIC X(01). 00880026
134 05 P-CHKP-DIS-FREQ PIC X(05). 00890026
135 05 FILLER PIC X(01). 00900026
136 05 P-DEBUG-FLAG PIC X(01). 00910026
137 88 DEBUG-ON VALUE 'Y'. 00920026
138 88 DEBUG-OFF VALUE 'N'. 00930026
139 05 FILLER PIC X(01). 00940026
140 * 00950026
141 * 00960026
142 COPY IMSFUNCS. 00961032
143 *----------------------------------------------------------------*00970026
144 * IMS SEGMENT LAYOUT 00980026
145 *----------------------------------------------------------------*00990026
146 01000026
147 *- PENDING AUTHORIZATION SUMMARY SEGMENT - ROOT 01010026
148 01 PENDING-AUTH-SUMMARY. 01020026
149 COPY CIPAUSMY. 01030026
150 01040026
151 *- PENDING AUTHORIZATION DETAILS SEGMENT - CHILD 01050026
152 01 PENDING-AUTH-DETAILS. 01060026
153 COPY CIPAUDTY. 01070026
154 01080026
155 * 01090026
156 *----------------------------------------------------------------*01100026
157 LINKAGE SECTION. 01110026
158 *----------------------------------------------------------------*01120026
159 * PCB MASKS FOLLOW 01130026
160 01 IO-PCB-MASK PIC X(1). 01131057
161 COPY PAUTBPCB. 01140027
162 * 01160026
163 *----------------------------------------------------------------*01170026
164 PROCEDURE DIVISION USING IO-PCB-MASK 01180057
165 PAUTBPCB. 01181056
166 * PGM-PCB-MASK. 01190028
167 *----------------------------------------------------------------*01200026
168 * 01210026
169 MAIN-PARA. 01220026
170 * DISPLAY 'CHECK PROG PCB:' PAUTBPCB. 01222039
171 ENTRY 'DLITCBL' USING PAUTBPCB. 01225033
172 01226029
173 DISPLAY 'STARTING PAUDBLOD'. 01227053
174 * 01230026
175 PERFORM 1000-INITIALIZE THRU 1000-EXIT 01240026
176 * 01250026
177 PERFORM 2000-READ-ROOT-SEG-FILE THRU 2000-EXIT 01260053
178 UNTIL END-ROOT-SEG-FILE = 'Y' 01280053
179 01281053
180 PERFORM 3000-READ-CHILD-SEG-FILE THRU 3000-EXIT 01290058
181 UNTIL END-CHILD-SEG-FILE = 'Y' 01300053
182 01531150
183 PERFORM 4000-FILE-CLOSE THRU 4000-EXIT 01532030
184 * 01540026
185 * 01560026
186 * 01650026
187 GOBACK. 01660026
188 * 01670026
189 *----------------------------------------------------------------*01680026
190 1000-INITIALIZE. 01690026
191 *----------------------------------------------------------------*01700026
192 * 01710026
193 ACCEPT CURRENT-DATE FROM DATE 01720026
194 ACCEPT CURRENT-YYDDD FROM DAY 01730026
195 01740026
196 DISPLAY '*-------------------------------------*' 01770026
197 DISPLAY 'TODAYS DATE :' CURRENT-DATE 01790043
198 DISPLAY ' ' 01800026
199 01810026
200 . 01960026
201 OPEN INPUT INFILE1 01961054
202 IF WS-INFIL1-STATUS = SPACES OR '00' 01962053
203 CONTINUE 01963028
204 ELSE 01964028
205 DISPLAY 'ERROR IN OPENING INFILE1:' WS-INFIL1-STATUS 01965053
206 PERFORM 9999-ABEND 01966028
207 END-IF 01967028
208 * 01968028
209 OPEN INPUT INFILE2 01969054
210 IF WS-INFIL2-STATUS = SPACES OR '00' 01969153
211 CONTINUE 01969228
212 ELSE 01969328
213 DISPLAY 'ERROR IN OPENING INFILE2:' WS-INFIL2-STATUS 01969453
214 PERFORM 9999-ABEND 01969528
215 END-IF. 01969634
216 * 01969728
217 * 01970026
218 1000-EXIT. 01980026
219 EXIT. 01990026
220 * 02000026
221 *----------------------------------------------------------------*02010026
222 2000-READ-ROOT-SEG-FILE. 02020053
223 *----------------------------------------------------------------*02030026
224 * 02040026
225 * DISPLAY 'IN 2000 READ ROOT SEG FILE PARA' 02041061
226 READ INFILE1 02042053
227 02042153
228 IF WS-INFIL1-STATUS = SPACES OR '00' 02042253
229 MOVE INFIL1-REC TO PENDING-AUTH-SUMMARY 02042353
230 PERFORM 2100-INSERT-ROOT-SEG THRU 2100-EXIT 02042454
231 ELSE 02042553
232 IF WS-INFIL1-STATUS = '10' 02042653
233 MOVE 'Y' TO END-ROOT-SEG-FILE 02042753
234 ELSE 02042853
235 DISPLAY 'ERROR READING ROOT SEG INFILE' 02042953
236 END-IF 02043053
237 END-IF. 02043153
238 02043253
239 2000-EXIT. 02043353
240 EXIT. 02043453
241 02043553
242 2100-INSERT-ROOT-SEG. 02043653
243 02043753
244 CALL 'CBLTDLI' USING FUNC-ISRT 02070053
245 PAUTBPCB 02080029
246 PENDING-AUTH-SUMMARY 02090029
247 ROOT-UNQUAL-SSA. 02100053
248 DISPLAY ' *******************************' 02130040
249 * DISPLAY ' AFTER THE ROOT SEG INSERT CALL ' 02130167
250 * DISPLAY 'PCB STATU: ' PAUT-PCB-STATUS 02133067
251 * DISPLAY 'SEG NAME : ' PAUT-SEG-NAME 02135067
252 DISPLAY ' *******************************' 02138053
253 IF PAUT-PCB-STATUS = SPACES 02140053
254 DISPLAY 'ROOT INSERT SUCCESS ' 02160053
255 END-IF 02191053
256 IF PAUT-PCB-STATUS = 'II' 02192053
257 DISPLAY 'ROOT SEGMENT ALREADY IN DB' 02194153
258 END-IF 02197053
259 IF PAUT-PCB-STATUS NOT EQUAL TO SPACES AND 'II' 02200053
260 DISPLAY 'ROOT INSERT FAILED :' PAUT-PCB-STATUS 02230053
261 PERFORM 9999-ABEND 02260053
262 END-IF 02270053
263 . 02271053
264 2100-EXIT. 02280053
265 EXIT. 02290053
266 * 02310026
267 * 02320026
268 *----------------------------------------------------------------*02330026
269 3000-READ-CHILD-SEG-FILE. 02340053
270 *----------------------------------------------------------------*02350026
271 * DISPLAY 'IN 3000 READ CHILD SEG FILE PARA' 02351067
272 READ INFILE2 02352053
273 02353053
274 IF WS-INFIL2-STATUS = SPACES OR '00' 02354053
275 IF ROOT-SEG-KEY IS NUMERIC 02354162
276 * DISPLAY 'GNGTO ROOT SEG KEY' 02355067
277 MOVE ROOT-SEG-KEY TO QUAL-SSA-KEY-VALUE 02355260
278 * DISPLAY 'ROOT-SEG-KEY : ' QUAL-SSA-KEY-VALUE 02355367
279 * DISPLAY 'MOVED ROOT SEG KEY' 02355467
280 MOVE CHILD-SEG-REC TO PENDING-AUTH-DETAILS 02355562
281 PERFORM 3100-INSERT-CHILD-SEG THRU 3100-EXIT 02356054
282 END-IF 02356162
283 ELSE 02357053
284 IF WS-INFIL2-STATUS = '10' 02358053
285 MOVE 'Y' TO END-CHILD-SEG-FILE 02359053
286 ELSE 02359153
287 DISPLAY 'ERROR READING CHILD SEG INFILE' 02359253
288 END-IF 02359353
289 END-IF. 02359453
290 3000-EXIT. 02359553
291 EXIT. 02359653
292 3100-INSERT-CHILD-SEG. 02359753
293 * 02360026
294 * DISPLAY 'IN 3100 INSERT CHILD SEG PARA' 02361061
295 INITIALIZE PAUT-PCB-STATUS 02362058
296 CALL 'CBLTDLI' USING FUNC-GU 02370053
297 PAUTBPCB 02380030
298 PENDING-AUTH-SUMMARY 02390053
299 ROOT-QUAL-SSA. 02400053
300 DISPLAY '***************************' 02401043
301 * DISPLAY ' AFTER ROOT SEG GU CALL ' 02402067
302 * DISPLAY 'PCB STATU: ' PAUT-PCB-STATUS 02410067
303 * DISPLAY 'SEG NAME : ' PAUT-SEG-NAME 02411067
304 DISPLAY '***************************' 02412043
305 IF PAUT-PCB-STATUS = SPACES 02420030
306 DISPLAY 'GU CALL TO ROOT SEG SUCCESS' 02430053
307 * ADD 2 TO PA-AUTH-DATE-9C 02430167
308 * ADD 2 TO PA-AUTH-TIME-9C 02430267
309 PERFORM 3200-INSERT-IMS-CALL THRU 3200-EXIT 02430353
310 IF PAUT-PCB-STATUS NOT EQUAL TO SPACES AND 'II' 02520059
311 DISPLAY 'ROOT GU CALL FAIL:' PAUT-PCB-STATUS 02530053
312 DISPLAY 'KFB AREA IN CHILD:' PAUT-KEYFB 02531048
313 PERFORM 9999-ABEND 02540049
314 END-IF. 02550051
315 3100-EXIT. 02590053
316 EXIT. 02600026
317 * 02610026
318 3200-INSERT-IMS-CALL. 02611053
319 * 02611153
320 * DISPLAY 'IN 3200 INSERT CALL' 02611261
321 CALL 'CBLTDLI' USING FUNC-ISRT 02611353
322 PAUTBPCB 02611453
323 PENDING-AUTH-DETAILS 02611553
324 CHILD-UNQUAL-SSA. 02611654
325 02611753
326 IF PAUT-PCB-STATUS = SPACES 02611866
327 DISPLAY 'CHILD SEGMENT INSERTED SUCCESS' 02611966
328 END-IF 02612055
329 IF PAUT-PCB-STATUS = 'II' 02612166
330 DISPLAY 'CHILD SEGMENT ALREADY IN DB' 02612266
331 END-IF 02612366
332 IF PAUT-PCB-STATUS NOT EQUAL TO SPACES AND 'II' 02612466
333 DISPLAY 'INSERT CALL FAIL FOR CHILD:' PAUT-PCB-STATUS 02612566
334 DISPLAY 'KFB AREA IN CHILD:' PAUT-KEYFB 02612666
335 PERFORM 9999-ABEND 02612766
336 END-IF. 02612866
337 02612966
338 3200-EXIT. 02613066
339 EXIT. 02614066
340 *----------------------------------------------------------------*02620026
341 4000-FILE-CLOSE. 02630030
342 DISPLAY 'CLOSING THE FILE' 02631043
343 CLOSE INFILE1. 02640053
344 02650030
345 IF WS-INFIL1-STATUS = SPACES OR '00' 02660053
346 CONTINUE 02670030
347 ELSE 02680034
348 DISPLAY 'ERROR IN CLOSING 1ST FILE:'WS-INFIL1-STATUS 02690053
349 END-IF. 02700034
350 CLOSE INFILE2. 02710053
351 02720030
352 IF WS-INFIL2-STATUS = SPACES OR '00' 02730053
353 CONTINUE 02740030
354 ELSE 02750034
355 DISPLAY 'ERROR IN CLOSING 2ND FILE:'WS-INFIL2-STATUS 02760053
356 END-IF. 02770034
357 4000-EXIT. 02780030
358 EXIT. 02790030
359 *----------------------------------------------------------------*03620026
360 9999-ABEND. 03630026
361 *----------------------------------------------------------------*03640026
362 * 03650026
363 DISPLAY 'IMS LOAD ABENDING ...' 03660054
364 03670026
365 MOVE 16 TO RETURN-CODE 03680026
366 GOBACK. 03690026
367 * 03700026
368 9999-EXIT. 03710026
369 EXIT. 03720026