00001 IDENTIFICATION DIVISION. 01/29/02 00002 PROGRAM-ID. DTSCU004 DTSCU004 00003 AUTHOR. TRICOASTAL CONSULTING LTD. LV008 00004 DATE-WRITTEN DECEMBER 1991. DTSCU004 00005 DATE-COMPILED. DTSCU004 00006 SKIP3 DTSCU004 00007 ***** DTSCU004 00008 * DTSCU004 00009 * FUNCTION: QUARTER EDIT/CONVERSION MODULE DTSCU004 00010 * DTSCU004 00011 * DTSCU004 00012 * MODIFICATION LOG: DTSCU004 00013 * DTSCU004 00014 * 07/31/98 INITIAL DEVELOPMENT. MODIFIED FROM MACCU004. DTSCU004 00015 * WORK ORDER: PROGRAMMER: ZL1. DTSCU004 00016 * DTSCU004 00017 * 09/29/1998 INSERTED L004-SLASH-5-QTR RELATED CODE. DTSCU004 00018 * REFERENCE: DC DEVELOPMENT PROGRAMMER: EHH DTSCU004 00019 * DTSCU004 00020 * MM/DD/YYYY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX DTSCU004 00021 * REFERENCE: XXXXXXXXXXXXXXX PROGRAMMER: XXX DTSCU004 00022 * DTSCU004 00023 * DTSCU004 00024 * DESCRIPTION: DTSCU004 00025 * DTSCU004 00026 * THE FUNCTION OF DTSCU004 IS TO VALIDATE QUARTER DATES DTSCU004 00027 * AND CONVERT AMONG VARIOUS QUARTER REPRESENTATIONS. DTSCU004 00028 * DTSCU004 00029 * EVERY CALL RETURNS THE FOLLOWING. DTSCU004 00030 * DTSCU004 00031 * 1. QUARTER DATE - YYYY Q DTSCU004 00032 * 2. QUARTER DATE - YY Q DTSCU004 00033 * 3. NINES COMPLEMENT OF QUARTER DATE 1 DTSCU004 00034 * 4. ABSOLUTE QUARTERS SINCE 1930 DTSCU004 00035 * 5. QUARTER START DATE - YYYYMMDD DTSCU004 00036 * 6. QUARTER END DATE - YYYYMMDD DTSCU004 00037 * 7. DEFAULT REPORT DUE DATE - YYYYMMDD DTSCU004 00038 * DTSCU004 00039 ***** DTSCU004 00040 SKIP3 DTSCU004 00041 ENVIRONMENT DIVISION. DTSCU004 00042 DATA DIVISION. DTSCU004 00043 SKIP3 DTSCU004 00044 WORKING-STORAGE SECTION. DTSCU004 000445 77 PAN-VALET PICTURE X(24) VALUE '008DTSCU004 01/29/02'. DTSCU004 00045 01 WRK-AREA. DTSCU004 00046 05 WS-ABEND-CODE PIC X(04) DTSCU004 00047 VALUE 'U004'. DTSCU004 00048 05 WS-QTR-YEAR. DTSCU004 00049 10 WS-QTR-CENTURY PIC 9(02). DTSCU004 00050 10 WS-QTR-YR PIC 9(02). DTSCU004 00051 05 WS-STARTING-DATE-X. DTSCU004 00052 10 WS-STARTING-YR PIC 9(04). DTSCU004 00053 10 WS-STARTING-MO PIC 9(02). DTSCU004 00054 10 WS-STARTING-DA PIC 9(02) DTSCU004 00055 VALUE 01. DTSCU004 00056 05 WS-STARTING-DATE-9 REDEFINES WS-STARTING-DATE-X DTSCU004 00057 PIC 9(08). DTSCU004 00058 05 WS-END-DATE-X. DTSCU004 00059 10 WS-END-YR PIC 9(04). DTSCU004 00060 10 WS-END-MO PIC 9(02). DTSCU004 00061 10 WS-END-DA PIC 9(02). DTSCU004 00062 05 WS-END-DATE-9 REDEFINES WS-END-DATE-X DTSCU004 00063 PIC 9(08). DTSCU004 00064 05 WS-DUE-DATE-X. DTSCU004 00065 10 WS-DUE-YR PIC 9(04). DTSCU004 00066 10 WS-DUE-MO PIC 9(02). DTSCU004 00067 10 WS-DUE-DA PIC 9(02). DTSCU004 00068 05 WS-DUE-DATE-9 REDEFINES WS-DUE-DATE-X DTSCU004 00069 PIC 9(08). DTSCU004 00070 05 WS-ANN-DUE-DATE-X. DTSCU004 00071 10 WS-ANN-DUE-YR PIC 9(04). DTSCU004 00072 10 WS-ANN-DUE-MO PIC 9(02). DTSCU004 00073 10 WS-ANN-DUE-DA PIC 9(02). DTSCU004 00074 05 WS-ANN-DUE-DATE-9 REDEFINES WS-ANN-DUE-DATE-X DTSCU004 00075 PIC 9(08). DTSCU004 00076 LINKAGE SECTION. DTSCU004 00077 01 DFHCOMMAREA. DTSCU004 00078 ++INCLUDE DTSIL004 DTSCU004 00079 PROCEDURE DIVISION. DTSCU004 00080 SKIP2 DTSCU004 00081 MOVE '0' TO L004-RETURN-CODE. DTSCU004 00082 IF L004-FROM-5 DTSCU004 00083 PERFORM P0100-FROM-5 THRU DTSCU004 00084 P0100-FROM-5-EXIT DTSCU004 00085 ELSE DTSCU004 00086 IF L004-FROM-3 DTSCU004 00087 PERFORM P0200-FROM-3 THRU DTSCU004 00088 P0200-FROM-3-EXIT DTSCU004 00089 ELSE DTSCU004 00090 IF L004-FROM-ABS DTSCU004 00091 PERFORM P0300-FROM-ABS THRU DTSCU004 00092 P0300-FROM-ABS-EXIT DTSCU004 00093 ELSE DTSCU004 00094 IF L004-FROM-DATE DTSCU004 00095 PERFORM P0400-FROM-DATE THRU DTSCU004 00096 P0400-FROM-DATE-EXIT DTSCU004 00097 ELSE DTSCU004 00098 IF L004-FROM-NINES-COMPLEMENT DTSCU004 00099 PERFORM P0500-FROM-COMP THRU DTSCU004 00100 P0500-FROM-COMP-EXIT DTSCU004 00101 ELSE DTSCU004 00102 EXEC CICS ABEND ABCODE (WS-ABEND-CODE) END-EXEC DTSCU004 00103 STOP RUN. DTSCU004 00104 INIT0199-GO-BACK. DTSCU004 00105 EXEC CICS DTSCU004 00106 RETURN DTSCU004 00107 END-EXEC. DTSCU004 00108 SKIP3 DTSCU004 00109 P0100-FROM-5. DTSCU004 00110 IF L004-QTR-5-X NOT NUMERIC OR DTSCU004 00111 L004-QTR-5-Q < 1 OR DTSCU004 00112 L004-QTR-5-Q > 4 DTSCU004 00113 PERFORM P0600-INVALID-ENTRY THRU DTSCU004 00114 P0600-INVALID-ENTRY-EXIT DTSCU004 00115 GO TO P0100-FROM-5-EXIT. DTSCU004 00116 PERFORM P0700-CHECK-YR THRU DTSCU004 00117 P0700-CHECK-YR-EXIT. DTSCU004 00118 MOVE L004-QTR-5-YR TO WS-QTR-YEAR. DTSCU004 00119 MOVE WS-QTR-YR TO L004-QTR-3-YR. DTSCU004 00120 MOVE L004-QTR-5-Q TO L004-QTR-3-Q. DTSCU004 00121 PERFORM P2000-CAL-COMP THRU DTSCU004 00122 P2000-CAL-COMP-EXIT. DTSCU004 00123 PERFORM P3000-CAL-ABS THRU DTSCU004 00124 P3000-CAL-ABS-EXIT. DTSCU004 00125 PERFORM P4000-SLASH-QTR THRU DTSCU004 00126 P4000-SLASH-QTR-EXIT. DTSCU004 00127 PERFORM P5000-START-END-DATES THRU DTSCU004 00128 P5000-START-END-DATES-EXIT. DTSCU004 00129 MOVE WS-STARTING-DATE-9 TO L004-QTR-START-DATE. DTSCU004 00130 MOVE WS-END-DATE-9 TO L004-QTR-END-DATE. DTSCU004 00131 MOVE WS-DUE-DATE-9 TO L004-QTR-DEFAULT-DUE-DATE. DTSCU004 00132 MOVE WS-ANN-DUE-DATE-9 TO L004-ANN-DEFAULT-DUE-DATE. DTSCU004 00133 P0100-FROM-5-EXIT. EXIT. DTSCU004 00134 SKIP3 DTSCU004 00135 P0200-FROM-3. DTSCU004 00136 IF L004-QTR-3-X NOT NUMERIC DTSCU004 00137 PERFORM P0600-INVALID-ENTRY THRU DTSCU004 00138 P0600-INVALID-ENTRY-EXIT DTSCU004 00139 GO TO P0200-FROM-3-EXIT. DTSCU004 00140 IF L004-QTR-3-Q < 1 DTSCU004 00141 OR DTSCU004 00142 L004-QTR-3-Q > 4 DTSCU004 00143 PERFORM P0600-INVALID-ENTRY THRU DTSCU004 00144 P0600-INVALID-ENTRY-EXIT DTSCU004 00145 GO TO P0200-FROM-3-EXIT. DTSCU004 00146 MOVE L004-QTR-3-Q TO L004-QTR-5-Q. DTSCU004 00147 IF L004-QTR-3-YR < 30 DTSCU004 00148 ADD L004-QTR-3-YR 2000 GIVING L004-QTR-5-YR DTSCU004 00149 ELSE DTSCU004 00150 ADD L004-QTR-3-YR 1900 GIVING L004-QTR-5-YR. DTSCU004 00151 PERFORM P2000-CAL-COMP THRU DTSCU004 00152 P2000-CAL-COMP-EXIT. DTSCU004 00153 PERFORM P3000-CAL-ABS THRU DTSCU004 00154 P3000-CAL-ABS-EXIT. DTSCU004 00155 PERFORM P4000-SLASH-QTR THRU DTSCU004 00156 P4000-SLASH-QTR-EXIT. DTSCU004 00157 PERFORM P5000-START-END-DATES THRU DTSCU004 00158 P5000-START-END-DATES-EXIT. DTSCU004 00159 MOVE WS-STARTING-DATE-9 TO L004-QTR-START-DATE. DTSCU004 00160 MOVE WS-END-DATE-9 TO L004-QTR-END-DATE. DTSCU004 00161 MOVE WS-DUE-DATE-9 TO L004-QTR-DEFAULT-DUE-DATE. DTSCU004 00162 MOVE WS-ANN-DUE-DATE-9 TO L004-ANN-DEFAULT-DUE-DATE. DTSCU004 00163 P0200-FROM-3-EXIT. EXIT. DTSCU004 00164 SKIP3 DTSCU004 00165 P0300-FROM-ABS. DTSCU004 00166 IF (L004-ABS-QTR < +1) DTSCU004 00167 OR DTSCU004 00168 (L004-ABS-QTR > +400) DTSCU004 00169 PERFORM P0600-INVALID-ENTRY THRU DTSCU004 00170 P0600-INVALID-ENTRY-EXIT DTSCU004 00171 GO TO P0300-FROM-ABS-EXIT. DTSCU004 00172 DIVIDE 4 INTO L004-ABS-QTR GIVING WS-END-YR DTSCU004 00173 REMAINDER L004-QTR-5-Q. DTSCU004 00174 ADD WS-END-YR 1930 GIVING L004-QTR-5-YR. DTSCU004 00175 IF L004-QTR-5-Q = 0 DTSCU004 00176 MOVE 4 TO L004-QTR-5-Q DTSCU004 00177 SUBTRACT 1 FROM L004-QTR-5-YR. DTSCU004 00178 PERFORM P0100-FROM-5 THRU DTSCU004 00179 P0100-FROM-5-EXIT. DTSCU004 00180 P0300-FROM-ABS-EXIT. EXIT. DTSCU004 00181 SKIP3 DTSCU004 00182 P0400-FROM-DATE. DTSCU004 00183 MOVE L004-DATE TO WS-DUE-DATE-9. DTSCU004 00184 MOVE WS-DUE-YR TO L004-QTR-5-YR. DTSCU004 00185 IF WS-DUE-MO < 04 DTSCU004 00186 MOVE 1 TO L004-QTR-5-Q DTSCU004 00187 ELSE DTSCU004 00188 IF WS-DUE-MO < 07 DTSCU004 00189 MOVE 2 TO L004-QTR-5-Q DTSCU004 00190 ELSE DTSCU004 00191 IF WS-DUE-MO < 10 DTSCU004 00192 MOVE 3 TO L004-QTR-5-Q DTSCU004 00193 ELSE DTSCU004 00194 MOVE 4 TO L004-QTR-5-Q. DTSCU004 00195 PERFORM P0100-FROM-5 THRU DTSCU004 00196 P0100-FROM-5-EXIT. DTSCU004 00197 P0400-FROM-DATE-EXIT. EXIT. DTSCU004 00198 SKIP3 DTSCU004 00199 P0500-FROM-COMP. DTSCU004 00200 IF (L004-NINES-COMPLEMENT-QTR NOT NUMERIC) DTSCU004 00201 OR DTSCU004 00202 (L004-NINES-COMPLEMENT-QTR NOT > 0) DTSCU004 00203 PERFORM P0600-INVALID-ENTRY THRU DTSCU004 00204 P0600-INVALID-ENTRY-EXIT DTSCU004 00205 GO TO P0500-FROM-COMP-EXIT. DTSCU004 00206 COMPUTE L004-QTR-5-9 DTSCU004 00207 = 99999 - L004-NINES-COMPLEMENT-QTR. DTSCU004 00208 PERFORM P0100-FROM-5 THRU DTSCU004 00209 P0100-FROM-5-EXIT. DTSCU004 00210 P0500-FROM-COMP-EXIT. EXIT. DTSCU004 00211 SKIP3 DTSCU004 00212 P0600-INVALID-ENTRY. DTSCU004 00213 MOVE '1' TO L004-RETURN-CODE. DTSCU004 00214 MOVE ZERO TO DTSCU004 00215 L004-NINES-COMPLEMENT-QTR DTSCU004 00216 L004-ABS-QTR DTSCU004 00217 L004-DATE DTSCU004 00218 L004-QTR-START-DATE DTSCU004 00219 L004-QTR-END-DATE DTSCU004 00220 L004-QTR-DEFAULT-DUE-DATE DTSCU004 00221 L004-ANN-DEFAULT-DUE-DATE. DTSCU004 00222 P0600-INVALID-ENTRY-EXIT. EXIT. DTSCU004 00223 SKIP3 DTSCU004 00224 P0700-CHECK-YR. DTSCU004 00225 IF L004-QTR-5-YR < 1930 DTSCU004 00226 OR DTSCU004 00227 L004-QTR-5-YR > 2029 DTSCU004 00228 PERFORM P0600-INVALID-ENTRY THRU DTSCU004 00229 P0600-INVALID-ENTRY-EXIT. DTSCU004 00230 P0700-CHECK-YR-EXIT. EXIT. DTSCU004 00231 SKIP3 DTSCU004 00232 P2000-CAL-COMP. DTSCU004 00233 COMPUTE L004-NINES-COMPLEMENT-QTR DTSCU004 00234 = 99999 - L004-QTR-5-9. DTSCU004 00235 P2000-CAL-COMP-EXIT. EXIT. DTSCU004 00236 SKIP3 DTSCU004 00237 P3000-CAL-ABS. DTSCU004 00238 COMPUTE L004-ABS-QTR = DTSCU004 00239 ((L004-QTR-5-YR - 1930) * 4) + L004-QTR-5-Q. DTSCU004 00240 P3000-CAL-ABS-EXIT. EXIT. DTSCU004 00241 SKIP3 DTSCU004 00242 P4000-SLASH-QTR. DTSCU004 00243 MOVE '/' TO L004-SLASH-LIT. DTSCU004 00244 MOVE L004-QTR-3-Q TO L004-SLASH-Q. DTSCU004 00245 MOVE L004-QTR-3-YR TO L004-SLASH-YR. DTSCU004 00246 DTSCU004 00247 MOVE '/' TO L004-SLASH-5-LIT. DTSCU004 00248 MOVE L004-QTR-5-Q TO L004-SLASH-5-Q. DTSCU004 00249 MOVE L004-QTR-5-YR TO L004-SLASH-5-YR. DTSCU004 00250 P4000-SLASH-QTR-EXIT. EXIT. DTSCU004 00251 SKIP3 DTSCU004 00252 P5000-START-END-DATES. DTSCU004 00253 MOVE L004-QTR-5-YR TO DTSCU004 00254 WS-STARTING-YR DTSCU004 00255 WS-END-YR DTSCU004 00256 WS-DUE-YR. DTSCU004 00257 IF L004-QTR-5-Q = 1 DTSCU004 00258 MOVE 01 TO WS-STARTING-MO DTSCU004 00259 MOVE 03 TO WS-END-MO DTSCU004 00260 MOVE 04 TO WS-DUE-MO DTSCU004 00261 MOVE 31 TO WS-END-DA DTSCU004 00262 MOVE 30 TO WS-DUE-DA DTSCU004 00263 ELSE DTSCU004 00264 IF L004-QTR-5-Q = 2 DTSCU004 00265 MOVE 04 TO WS-STARTING-MO DTSCU004 00266 MOVE 06 TO WS-END-MO DTSCU004 00267 MOVE 07 TO WS-DUE-MO DTSCU004 00268 MOVE 30 TO WS-END-DA DTSCU004 00269 MOVE 31 TO WS-DUE-DA DTSCU004 00270 ELSE DTSCU004 00271 IF L004-QTR-5-Q = 3 DTSCU004 00272 MOVE 07 TO WS-STARTING-MO DTSCU004 00273 MOVE 09 TO WS-END-MO DTSCU004 00274 MOVE 10 TO WS-DUE-MO DTSCU004 00275 MOVE 30 TO WS-END-DA DTSCU004 00276 MOVE 31 TO WS-DUE-DA DTSCU004 00277 ELSE DTSCU004 00278 MOVE 10 TO WS-STARTING-MO DTSCU004 00279 MOVE 12 TO WS-END-MO DTSCU004 00280 MOVE 01 TO WS-DUE-MO DTSCU004 00281 MOVE 31 TO WS-END-DA DTSCU004 00282 MOVE 31 TO WS-DUE-DA DTSCU004 00283 ADD +1 TO WS-DUE-YR. DTSCU004 00284 DTSCU004 00285 COMPUTE WS-ANN-DUE-YR = (L004-QTR-5-YR + 1). DTSCU004 00286 MOVE 04 TO WS-ANN-DUE-MO. DTSCU004 00287 MOVE 15 TO WS-ANN-DUE-DA. DTSCU004 00288 P5000-START-END-DATES-EXIT. EXIT. DTSCU004 00289 SKIP3 DTSCU004