| 1 | **************************************** *************************00010032 |
| 2 | * Program: COBTUPDT.CBL *00020032 |
| 3 | * Layer: Business logic *00030032 |
| 4 | * Function: Update Transaction type based on user input *00040032 |
| 5 | ******************************************************************00050032 |
| 6 | * Copyright Amazon.com, Inc. or its affiliates. 00060032 |
| 7 | * All Rights Reserved. 00070032 |
| 8 | * 00080032 |
| 9 | * Licensed under the Apache License, Version 2.0 (the "License"). 00090032 |
| 10 | * You may not use this file except in compliance with the License.00100032 |
| 11 | * You may obtain a copy of the License at 00110032 |
| 12 | * 00120032 |
| 13 | * http://www.apache.org/licenses/LICENSE-2.0 00130032 |
| 14 | * 00140032 |
| 15 | * Unless required by applicable law or agreed to in writing, 00150032 |
| 16 | * software distributed under the License is distributed on an 00160032 |
| 17 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 00170032 |
| 18 | * either express or implied. See the License for the specific 00180032 |
| 19 | * language governing permissions and limitations under the License00190032 |
| 20 | ******************************************************************00200032 |
| 21 | 00210032 |
| 22 | IDENTIFICATION DIVISION. 00220032 |
| 23 | PROGRAM-ID. COBTUPDT. 00230032 |
| 24 | 00240032 |
| 25 | ENVIRONMENT DIVISION. 00250032 |
| 26 | 00260032 |
| 27 | CONFIGURATION SECTION. 00270032 |
| 28 | 00280032 |
| 29 | INPUT-OUTPUT SECTION. 00290032 |
| 30 | FILE-CONTROL. 00300032 |
| 31 | SELECT TR-RECORD ASSIGN TO INPFILE 00310032 |
| 32 | ORGANIZATION IS SEQUENTIAL 00311032 |
| 33 | ACCESS MODE IS SEQUENTIAL 00312032 |
| 34 | FILE STATUS IS WS-INF-STATUS. 00313032 |
| 35 | 00314032 |
| 36 | DATA DIVISION. 00315032 |
| 37 | 00316032 |
| 38 | FILE SECTION. 00317032 |
| 39 | FD TR-RECORD RECORDING MODE F. 00318032 |
| 40 | 01 WS-INPUT-VARS. 00319032 |
| 41 | 05 INPUT-TYPE PIC X(1) 00320032 |
| 42 | VALUE SPACES. 00330032 |
| 43 | 05 INPUT-TR-NUMBER PIC X(2) 00340032 |
| 44 | VALUE SPACES. 00350032 |
| 45 | 05 INPUT-TR-DESC PIC X(50) 00360032 |
| 46 | VALUE SPACES. 00370032 |
| 47 | 00380032 |
| 48 | WORKING-STORAGE SECTION. 00390032 |
| 49 | 00400032 |
| 50 | EXEC SQL 00410032 |
| 51 | INCLUDE SQLCA 00420032 |
| 52 | END-EXEC 00430032 |
| 53 | 00440032 |
| 54 | EXEC SQL INCLUDE DCLTRTYP END-EXEC 00450046 |
| 55 | 00451046 |
| 56 | 00460032 |
| 57 | 01 FLAGS. 00470032 |
| 58 | 05 LASTREC PIC X(1) 00480032 |
| 59 | VALUE SPACES. 00490032 |
| 60 | 01 WORKING-VARIABLES. 00500032 |
| 61 | 05 WS-RETURN-MSG PIC X(80) 00510044 |
| 62 | VALUE SPACES. 00520032 |
| 63 | 00530032 |
| 64 | 01 WS-MISC-VARS. 00540032 |
| 65 | 05 WS-VAR-SQLCODE PIC ----9. 00550032 |
| 66 | 00560032 |
| 67 | 01 WS-INF-STATUS. 00570032 |
| 68 | 05 WS-INF-STAT1 PIC X. 00580032 |
| 69 | 05 WS-INF-STAT2 PIC X. 00590032 |
| 70 | 00590133 |
| 71 | 01 WS-INPUT-REC. 00591033 |
| 72 | 05 INPUT-REC-TYPE PIC X(1) 00592033 |
| 73 | VALUE SPACES. 00593033 |
| 74 | 05 INPUT-REC-NUMBER PIC X(2) 00594033 |
| 75 | VALUE SPACES. 00595033 |
| 76 | 05 INPUT-REC-DESC PIC X(50) 00596033 |
| 77 | VALUE SPACES. 00597033 |
| 78 | 00598033 |
| 79 | 00600032 |
| 80 | PROCEDURE DIVISION. 00610032 |
| 81 | 00620032 |
| 82 | 0001-OPEN-FILES. 00630032 |
| 83 | OPEN INPUT TR-RECORD. 00640032 |
| 84 | IF WS-INF-STATUS = '00' THEN 00650032 |
| 85 | DISPLAY 'OPEN FILE OK' 00660046 |
| 86 | ELSE 00670032 |
| 87 | DISPLAY 'OPEN FILE NOT OK' 00680046 |
| 88 | END-IF 00690032 |
| 89 | EXIT. 00700032 |
| 90 | 00710032 |
| 91 | 1001-READ-NEXT-RECORDS. 00720032 |
| 92 | PERFORM 1002-READ-RECORDS 00740443 |
| 93 | PERFORM UNTIL LASTREC = 'Y' 00740543 |
| 94 | PERFORM 1003-TREAT-RECORD 00740743 |
| 95 | PERFORM 1002-READ-RECORDS 00740843 |
| 96 | END-PERFORM. 00740943 |
| 97 | PERFORM 2001-CLOSE-STOP 00742041 |
| 98 | EXIT. 00780032 |
| 99 | STOP RUN. 00790041 |
| 100 | 1002-READ-RECORDS. 00840032 |
| 101 | READ TR-RECORD NEXT RECORD INTO WS-INPUT-REC 00850033 |
| 102 | AT END MOVE 'Y' TO LASTREC 00860032 |
| 103 | END-READ. 00870032 |
| 104 | IF LASTREC NOT EQUAL TO 'Y' THEN 00870144 |
| 105 | DISPLAY 'PROCESSING ' WS-INPUT-REC 00871044 |
| 106 | END-IF. 00872044 |
| 107 | EXIT. 00880032 |
| 108 | 00890032 |
| 109 | 1003-TREAT-RECORD. 00900032 |
| 110 | EVALUATE INPUT-REC-TYPE 00910033 |
| 111 | WHEN 'A' 00920034 |
| 112 | DISPLAY 'ADDING RECORD' 00921034 |
| 113 | PERFORM 10031-INSERT-DB 00930032 |
| 114 | WHEN 'U' 00940032 |
| 115 | DISPLAY 'UPDATING RECORD' 00941034 |
| 116 | PERFORM 10032-UPDATE-DB 00950032 |
| 117 | WHEN 'D' 00960032 |
| 118 | DISPLAY 'DELETING RECORD' 00961034 |
| 119 | PERFORM 10033-DELETE-DB 00970032 |
| 120 | WHEN '*' 00971045 |
| 121 | DISPLAY 'IGNORING COMMENTED LINE' 00972045 |
| 122 | WHEN OTHER 00980032 |
| 123 | STRING 00990032 |
| 124 | 'ERROR: TYPE NOT VALID' 01000041 |
| 125 | DELIMITED BY SIZE 01020032 |
| 126 | INTO WS-RETURN-MSG 01030032 |
| 127 | END-STRING 01040032 |
| 128 | PERFORM 9999-ABEND 01050032 |
| 129 | END-EVALUATE. 01060032 |
| 130 | EXIT. 01070032 |
| 131 | 01080041 |
| 132 | 10031-INSERT-DB. 01090032 |
| 133 | ******************************************************************01100032 |
| 134 | * SQL TO INSERT THE RECORD 01110032 |
| 135 | ******************************************************************01120032 |
| 136 | * 01130032 |
| 137 | EXEC SQL 01140032 |
| 138 | INSERT INTO CARDDEMO.TRANSACTION_TYPE 01150032 |
| 139 | ( 01160032 |
| 140 | TR_TYPE, 01170032 |
| 141 | TR_DESCRIPTION 01180032 |
| 142 | ) 01190032 |
| 143 | VALUES 01200032 |
| 144 | ( 01210032 |
| 145 | :INPUT-REC-NUMBER, 01220033 |
| 146 | :INPUT-REC-DESC 01230033 |
| 147 | ) 01240032 |
| 148 | END-EXEC. 01250034 |
| 149 | MOVE SQLCODE TO WS-VAR-SQLCODE 01260032 |
| 150 | 01270032 |
| 151 | EVALUATE TRUE 01310032 |
| 152 | WHEN SQLCODE = ZERO 01320032 |
| 153 | DISPLAY 'RECORD INSERTED SUCCESSFULLY' 01330044 |
| 154 | WHEN SQLCODE < 0 01340032 |
| 155 | STRING 01350032 |
| 156 | 'Error accessing:' 01360032 |
| 157 | ' TRANSACTION_TYPE table. SQLCODE:' 01370032 |
| 158 | WS-VAR-SQLCODE 01380044 |
| 159 | DELIMITED BY SIZE 01410032 |
| 160 | INTO WS-RETURN-MSG 01420032 |
| 161 | END-STRING 01430032 |
| 162 | PERFORM 9999-ABEND 01440032 |
| 163 | END-EVALUATE 01450032 |
| 164 | EXIT. 01460032 |
| 165 | 01470032 |
| 166 | 10032-UPDATE-DB. 01480032 |
| 167 | ******************************************************************01490032 |
| 168 | * SQL TO UPDATE THE RECORD 01500032 |
| 169 | ******************************************************************01510032 |
| 170 | * 01520032 |
| 171 | EXEC SQL 01522037 |
| 172 | UPDATE CARDDEMO.TRANSACTION_TYPE 01523040 |
| 173 | SET TR_DESCRIPTION = :INPUT-REC-DESC 01524041 |
| 174 | WHERE TR_TYPE = :INPUT-REC-NUMBER 01525041 |
| 175 | END-EXEC 01526037 |
| 176 | MOVE SQLCODE TO WS-VAR-SQLCODE 01580032 |
| 177 | EVALUATE TRUE 01630032 |
| 178 | WHEN SQLCODE = ZERO 01640032 |
| 179 | DISPLAY 'RECORD UPDATED SUCCESSFULLY' 01650044 |
| 180 | WHEN SQLCODE = +100 01660032 |
| 181 | STRING 'No records found.' DELIMITED BY SIZE 01670041 |
| 182 | INTO WS-RETURN-MSG 01680041 |
| 183 | END-STRING 01690041 |
| 184 | PERFORM 9999-ABEND 01700041 |
| 185 | WHEN SQLCODE < 0 01710032 |
| 186 | STRING 01711044 |
| 187 | 'Error accessing:' 01712044 |
| 188 | ' TRANSACTION_TYPE table. SQLCODE:' 01713044 |
| 189 | WS-VAR-SQLCODE 01714044 |
| 190 | DELIMITED BY SIZE 01717044 |
| 191 | INTO WS-RETURN-MSG 01718044 |
| 192 | END-STRING 01719044 |
| 193 | PERFORM 9999-ABEND 01719144 |
| 194 | END-EVALUATE 01820032 |
| 195 | EXIT. 01830032 |
| 196 | 10033-DELETE-DB. 01850032 |
| 197 | ******************************************************************01860032 |
| 198 | * SQL TO DELETE THE RECORD 01870032 |
| 199 | ******************************************************************01880032 |
| 200 | * 01890032 |
| 201 | EXEC SQL 01900032 |
| 202 | DELETE FROM CARDDEMO.TRANSACTION_TYPE 01910032 |
| 203 | WHERE TR_TYPE = :INPUT-REC-NUMBER 01920033 |
| 204 | END-EXEC. 01930034 |
| 205 | MOVE SQLCODE TO WS-VAR-SQLCODE 01940032 |
| 206 | 01950032 |
| 207 | EVALUATE TRUE 01990032 |
| 208 | WHEN SQLCODE = ZERO 02000032 |
| 209 | DISPLAY 'RECORD DELETED SUCCESSFULLY' 02010032 |
| 210 | WHEN SQLCODE = +100 02020032 |
| 211 | STRING 'No records found.' DELIMITED BY SIZE 02030032 |
| 212 | INTO WS-RETURN-MSG 02040032 |
| 213 | END-STRING 02050032 |
| 214 | PERFORM 9999-ABEND 02060032 |
| 215 | 02070032 |
| 216 | WHEN SQLCODE < 0 02080032 |
| 217 | STRING 02090032 |
| 218 | 'Error accessing:' 02100032 |
| 219 | ' TRANSACTION_TYPE table. SQLCODE:' 02110032 |
| 220 | WS-VAR-SQLCODE 02120032 |
| 221 | DELIMITED BY SIZE 02150032 |
| 222 | INTO WS-RETURN-MSG 02160032 |
| 223 | END-STRING 02170032 |
| 224 | PERFORM 9999-ABEND 02180032 |
| 225 | END-EVALUATE 02190032 |
| 226 | EXIT. 02200032 |
| 227 | 02210032 |
| 228 | 02220032 |
| 229 | 02230032 |
| 230 | 9999-ABEND. 02240032 |
| 231 | DISPLAY WS-RETURN-MSG. 02250032 |
| 232 | MOVE 4 TO RETURN-CODE 02251044 |
| 233 | EXIT. 02260032 |
| 234 | 2001-CLOSE-STOP. 02261041 |
| 235 | CLOSE TR-RECORD. 02262041 |
| 236 | EXIT. 02264041 |
| 237 | 02270032 |