. * PROGRAM-IDPROGRAM-ID DATET. * DATE-WRITTEN. 04/10/89. * * MODIFIED 12/26/95. * 07/31/97. * 10/18/97. * * ******************************* * * * * * Judson D. McClendon * * * Sun Valley Systems * * * 329 37th Court N.E. * * * Birmingham, AL 35215 * * * 205-853-8440 * * * * * ******************************* * ENVIRONMENTDIVISION. * CONFIGURATIONSECTION. * INPUT-OUTPUTSECTION. * FILE-CONTROL. * I-O-CONTROL. * DATADIVISION. * FILESECTION. * WORKING-STORAGE* MODIFIED 12/26/95. * ****************************************************************** * * * 7 7 ' S * * * ****************************************************************** *
7 PICX0)VALUE.
77 WS-ESCAPE-FLAG CONFIGURATION . * ****************************************************************** * * * S C R E E N H O L D A R E A * * * ****************************************************************** *
01 SCREEN-HOLD-AREA.
03 SH-EDIT-DATE PIC X(08) VALUESPACESSECTION *
03 SH-WORK-MMDDYYYY PIC 9(08) VALUE 0.
03 SH-WORK-MMDDYYYY-ALPHA REDEFINES SH-WORK-MMDDYYYY.
05 SH-WORK-MONTH * *
0 PIC90)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
05 SH-WORK-YEAR PIC 9(04). *
03 SH-WORK-YYYYMMDD PIC 9(08) VALUE 0.
03 SH-WORK-YYYYMMDD-ALPHA REDEFINES SH-WORK-YYYYMMDD.
05 SH-WORK-YYYY PIC 9(0 * *
5 PIC0)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
05 SH-WORK-DD PIC 9(02). *
java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
03 SH-JUL-DATE-ALPHA REDEFINES03 SH-WORK-MMDDYYYY-ALPHA SH-WORK-MMDDYYYY.
05 SH-JUL-YYYY PIC 9(04).
05 SH-JUL-DDD PIC 9(03). *
03SH-BEG-YYYYMMDD (0 VALUE0.
03 SH-BEG-YYYYMMDD-ALPHA REDEFINES SH-BEG-YYYYMMDD.
05 SH-BEG-YYYY PIC0) PIC 9(02.
05 SH-BEG-DD PIC 9(02). *
03 SH-END-YYYYMMDD *
03 SH-END-YYYYMMDD-ALPHA SH-END-YYYYMMDD
05 SH-END-YYYY3SH-WORK-YYYYMMDD-ALPHA SH-WORK-YYYYMMDD
5 SH-WORK-YYYY 9(04) PIC(2. *
03 SH-OFFSET PIC S9(08) VALUE 0.
03 SH-AGE-YEARS PIC 9(04) VALUE 0 *
03 SH-AGE-MONTHS PIC 9(02) VALUE 0.
0 PIC(2 VALUE 0.
03 SH-AGE-TOTDAYS PIC 9(08) VALUE 0 PIC(4. *
03 SH-YEARS PIC S9(07) VALUE 0.
03 PICS9VALUE 0.
03 SH-DAYS PIC S9(07) VALUE 0. *
03 SH-RESULT PIC X(20) VALUESPACES. * ****************************************************************** * * * D A T E W O R K A R E A * * * ****************************************************************** *
0 .
03 DW-DATE-ERROR-FLAG PIC5 PIC90). * * * ** TODAYS DATE ** *
03 DW-TODAYS-DATE *
S .
05 DW-TODAYS-MONTH PIC 9(02).
05 PIC 9(0).
5DW-TODAYS-YEAR 90) *
03 DW-TODAYS-YYYYMMDD PIC 9(08).
03 DW-TODAYS-YYYYMMDD-ALPHA REDEFINES DW-TODAYS-YYYYMMDD.
05 DW-TODAYS-YYYY PIC 9(4.
05DW-TODAYS-YYYY-R java.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 72
07 DW-TODAYS-CC PIC 9 SH-AGE-MONTHS PIC92 0.
07 DW-TODAYS-YY PIC 9(02).
05 DW-TODAYS-MM *
0 DW-TODAYS-DD0. * * * ** DATE WORK AREA ** *
03 DW-WORK-DATE PIC 9(08).
03 DW-WORK-DATE-ALPHA3 PIC(0)VALUE
0 PIC *
0 * * *
03 DW-WORK-YYYYMMDD PIC 9(08).
03 DW-WORK-YYYYMMDD-ALPHA REDEFINES DW-WORK-YYYYMMDD.
05 DW-WORK-YYYY PIC 9(04).
05 DW-WORK-YYYY-R REDEFINES DW-WORK-YYYY. *
07 DW-WORK-YY 9(02)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
05 DW-WORK-MM *
05 PIC (2. * * * ** SHORT MMDDYY DATE ** *
0 PIC.
03 DW-SHORT-DATE-ALPHA REDEFINES0 PIC()java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
5 PIC4.
0 DW-SHORT-DAY 9(2.
05 DW-SHORT-YEAR PIC 9(02). * * * ** OFFSET DATE AREAS ** *
03 DW-OFFSET PIC S9(08). *
03 DW-OFFSET-UNSIGNED PIC 9(08).
03 DW-OFFSET-UNSIGNED-ALPHA DW-OFFSET-UNSIGNED.
050 DW-TODAYS-YY 9(0).
05 DW-OFFSET-MM PIC 9(02).
05 DW-OFFSET-DD (java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 * * * ** JULIAN DATE ** *
03 DW-JUL-DATE PIC 9 DW-WORK-MONTH ()
03 DW-JUL-DATE-ALPHA REDEFINES DW-JUL-DATE PIC4.
5DW-JUL-YYYY (4)java.lang.StringIndexOutOfBoundsException: Range [58, 59) out of bounds for length 58
0 DW-JUL-YYYY-R REDEFINES.
07 DW-JUL-CC PIC 9(02). PIC 9(2.
05 7DW-WORK-YY 90). * * * ** BEGIN DATE ** *
java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
03 DW-BEG-YYYYMMDD-ALPHA 5 DW-WORK-DD 9(02).
05 DW-BEG-YYYY *
05 DW-BEG-YYYY-R *
07 DW-BEG-CC 9(02)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
3DW-SHORT-DATE-ALPHA DW-SHORT-DATE
05DW-BEG-MM 9(0).
05 DW-BEG-DD PIC 9(02). * * * ** END DATE ** * *
03 05 9(4.
05 DW-END-YYYY PIC 9(04).
0 REDEFINES. * ** JULIAN DATE **
0 PIC0)
05 DW-END-MM PICREDEFINES.
05 DW-END-DD PIC0 REDEFINES. * * * ** RESULTS OF AGE COMPUTATION ** *
03 DW-AGE-YEARS PIC 9(04).
03 DW-AGE-MONTHS PIC 9(02).
03 DW-AGE-DAYS PIC*
03 DW-AGE-TOTDAYS PIC 9(08). * * * ** INPUT/OUTPUT VARIABLES ** *
03 DW-YEARS REDEFINES.
03 DW-MONTHSPIC(07).
03 DW-DAYS PIC (2.
03 DW-WEEKDAYPIC(0). * * * ** SCRATCH WORK AREAS FOR DATE ROUTINES ** * ** (ASSUME MODIFIED BY ALL DATE ROUTINES) ** *
03 DW-WORK1 (09).
03 DW-WORK2 PIC S9 *
03 DW-WORK33DW-END-YYYYMMDD (8.
03 DW-TEMP-YYYY PIC S9(09).
03 DW-TEMP-MM PIC S9(09). * * * ** NUMBER OF DAYS IN EACH MONTH ** * ** (DAYS IN FEBRUARY ARE ADJUSTED BY DATE ROUTINES) ** *
03 DW-DAYS-IN-MONTHS PIC)
5DW-DAYS-IN-MONTH 12 TIMES PIC 9(02). * * * ** HOLIDAY TABLE ** * * ** THIS TABLE CONTAINS EVERY HOLIDAY ON WHICH THE BUSINESS ** * ** OFFICE IS CLOSED. IT SHOULD BE UPDATED EVERY YEAR TO ** * ** INCLUDE ALL THE DATES OVER WHICH BUSINESS DAYS MIGHT ** * ** NEED TO BE CALCULATED. NO NEED TO ADD WEEKEND DATES. ** * * ** THE ENTRIES IN THIS TABLE CONSIST OF AN 8-DIGIT DATE ** * ** (YYYYMMDD), FOLLOWED BY A 2-DIGIT COUNT OF DAYS WHICH ** * ** MUST BE ADDED TO THE DATE TO GET THE NEXT BUSINESS DAY. ** * * ** EXAMPLE: THANKSGIVING, 1997, OFF THURSDAY 11/27 AND ** * ** FRIDAY 11/28 UNTIL THE NEXT MONDAY 11/31. THE ENTRIES ** * ** IN THE TABLE WOULD BE: 1997 11 27 04 AND 1997 11 28 03 ** 03 DW-AGE-MONTHS PIC 9(02). 03 DW-AGE-DAYS PIC 9(02). * ** MONDAY 12/28 UNTIL TUESDAY 12/29. THE ENTRIES IN THE ** * ** TABLE WOULD BE: 1998 12 25 04 AND 1998 12 28 01 ** * * ** INPUT/OUTPUT VARIABLES **
0 PIC(0) * YYYYMMDDCC
07 FILLERPIC 9(10) VALUE 1997112704.
07 FILLERPIC 9(10) VALUE 1997112803.
07 FILLERPIC 9(10) VALUE 1998122504.
07 FILLERPIC 9(0)VALUE2280. *
05 DW-HT-HOLIDAYS * OCCURS 4 TIMES *
07 DW-HT-DATE.
09 03 DW-WORK2 (09).
9DW-HT-YYYY-R DW-HT-YYYY
11 DW-HT-CC )
1 DW-HT-YY 9(02).
09 DW-HT-MM PIC 9(02).
09 DW-HT-DD PIC 9(02).
07 DW-HT-DAYS PIC 9(02). * * * ** WEEKDAY NAMES ** *
03 DW-DAY-NAMES VALUE"SUNMONTUEWEDTHUFRISAT * ** (DAYS IN FEBRUARY ARE ADJUSTED BY DATE ROUTINES) **
05DW-DAY-NAMEjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
(3. *
SCREEN SECTION. * * * M E N U S C R E E N *
01 MENU-SCREEN.
0 * ** INCLUDE ALL THE DATES OVER WHICH BUSINESS DAYS MIGHT **
03 LINE 01 COLUMN* "D A T * ** (YYYYMMDD), FOLLOWED BY A 2-DIGIT COUNT OF DAYS WHICH ** *
03 LINE 03 *
03 LINE 0 * ** FRIDAY 11/28 UNTIL THE NEXT MONDAY 11/31. THE ENTRIES **
03 LINE 05 COLUMN 17 VALUE*
03 LINE 06 COLUMN 17 VALUE"D = Add * ** TABLE WOULD BE: 1998 12 25 04 AND 1998 12 28 01 **
0 3DW-HOLIDAY-TABLE
03 LINE 08 COLUMN* YYYYMMDDCC
0 LINECOLUMN7VALUE=Sub
03 LINE 10 COLUMN 17 VALUEFILLER 91)VALUE183
03 LINE1COLUMN7VALUE"java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
0 LINE 3 VALUE" Offset".
03 LINE 04 COLUMN 37 VALUE"K = Compute Age".
3 05 COLUMN3 "L = Gregto Jul".
3 LINECOLUMN 3V "M = Jul Greg".
03 LINE 07 COLUMN 37 INDEXED .
03 LINE 12 COLUMN 25 VALUE"07 DW-HT-DATE.
03 PIC X TO WS-ANSWER AUTO9DW-HT-YYYY-R DW-HT-YYYY * * * I N P U T S C R E E N S * * * G E T E D I T D A T E *
01 DW-HT-MM.
03LINECOLUMN1 VALUEDate() .
03 PIC X(08) PIC(0) * * * G E T W O R K M M D D Y Y Y Y *
01 GET-WORK-MMDDYYYY-SCREEN0 java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
03 LINE 14 COLUMN 10 VALUE"Date (MM/DD/YYYY): "*
03 PIC 99/99/ * * * * G E T W O R K Y Y Y Y M M D D *
01 GET-WORK-YYYYMMDD-SCREEN.
03LINECOLUMN0VALUEYYYYjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
SH-WORK-YYYYMMDD * * * G E T J U L Y Y Y Y D D D *
0 GET-JUL-YYYYDDD-SCREEN.
3LINECOLUMN1 "JulianDate(/DDD): ".
3LINE 7 "D =Add ". * * * G E T D A T E D A Y S *
01 GET-DATE-DAYS-SCREEN.
3LINE1 1 VALUE"Date (YYYY/MM/DD):".
03 PIC 9999/99/99 USING SH-WORK-YYYYMMDD.
03 LINE 16 COLUMN 10 VALUE"Days: ".
03 PIC 0COLUMN"J Offset" * * * G E T D A T E M O N T H S *
01 LINE7VALUE N= Days
0LINE2COLUMN5VALUEEsc"
0 9999/999 SH-WORK-YYYYMMDD.
03 LINE 16 COLUMN 10 VALUE"java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 7
03 PIC ZZZZZZ * * * * G E T D A T E Y E A R S *
01 GET-DATE-YEARS-SCREEN.
03 LINE 14 COLUMN 10 VALUE"Date (YYYY/MM/DD): ".
03 PIC 9999/99/99 USING SH-WORK-YYYYMMDD * G E T W O R K M M D D Y Y Y Y
03 LINE 16 COLUMN 10 VALUE" 03 LINE 14 COLUMN 10 VALUE "Date (/DD/YYYY):"
03 PIC ZZZZ USING SH-YEARS. * * * G E T D A T E O F F S E T *
01 GET-DATE-OFFSET-SCREEN.
03 LINE 14 COLUMN 10 VALUE"Date (YYYY 3 14 COLUMN1 "Date YYYYDD
0 99999 SH-WORK-YYYYMMDD
03 LINE 16 COLUMN 1 *
03 PIC -9999/99/99 USING SH-OFFSET. * * * G E T B E G / E N D D A T E S *
01GET-BEG-END-YYYYMMDD-SCREEN.
03 LINE 14 COLUMN 10 VALUE"Begin Date (YYYY/MM/DD): ".
03 PIC 9999/99/99 USING*
03 LINE 3LINE4COLUMN0 "Date (/MM/DD):".
0 999/99 SH-END-YYYYMMDD * * * O U T P U T S C R E E N S * * * S H O W R E S U L T *
01 SHOW-RESULT-SCREEN.
03 LINE . PIC(0 SH-RESULT * * * S H O W D A T E D A Y S *
01 SHOW-DATE-DAYS-SCREEN1 GET-DATE-YEARS-SCREEN COLUMN20 VALUE" Day: "
03 PIC Z,ZZZ PIC 999/ USING . * * * S H O W N E W D A T E *
01 SHOW-NEW-DATE-SCREEN.
03 LINE 18 COLUMN 20 VALUE"New Date: ".
03 PIC 9999/99/99 FROM SH-WORK-YYYYMMDD. * * * S H O W A G E *
01 SHOW-AGE-SCREEN.
03 LINE 18 COLUMN 20 VALUE"Years: ".
03 PIC Z,ZZZ,ZZZ FROM SH-AGE-YEARS.
03 LINE 19 COLUMN 20 VALUE"Months: ".
03 PIC Z,ZZZ,ZZZ FROM SH-AGE-MONTHS.
03 LINE 20 COLUMN 20 VALUE"Days: ".
03 PIC Z,ZZZ,ZZZ FROM SH-AGE-DAYS.
03 LINE 22 COLUMN 20 VALUE"Days Only: ".
03 PIC ZZ,ZZZ,ZZZ FROM SH-AGE-TOTDAYS. * * * S H O W J U L Y Y Y Y D D D *
01 SHOW-JUL-YYYYDDD-SCREEN.
03 LINE 18 COLUMN 10 VALUE"Julian Date: ".
03 PIC 9999/999 FROM SH-JUL-DATE. * * * S H O W Y Y Y Y M M D D *
01 SHOW-YYYYMMDD-SCREEN.
03 LINE 18 COLUMN 10 VALUE"Date (YYYY/MM/DD): ".
03 PIC 9999/99/99 FROM SH-WORK-YYYYMMDD. * * * S H O W M M D D Y Y Y Y *
01 SHOW-MMDDYYYY-SCREEN.
03 LINE 18 COLUMN 10 VALUE"Date (MM/DD/YYYY): ".
03 PIC 99/99/9999 FROM SH-WORK-MMDDYYYY. * PROCEDUREDIVISION. * * * C O N T R O L *
000000-CONTROL. * PERFORM 000100-PROCESS
THRU 000100-EXIT UNTIL (WS-ESCAPE-FLAG = 1). *
000000-EXIT. STOPRUN. * * * P R O C E S S *
000100-PROCESS. * MOVESPACE ZZZZSH-YEARS DISPLAY MENU-SCREEN. ACCEPT MENU-SCREEN ON MOVE 1 TO WS-ESCAPE-FLAG GOTO 000100-EXIT. INSPECT WS-ANSWER CONVERTING"abcdefghijklmnopqrstuvwxyz" TO"ABCDEFGHIJKLMNOPQRSTUVWXYZ". * INITIALIZE SCREEN-HOLD-AREA. * IF (WS-ANSWER = "A") PERFORM 010000-DATE-EDIT
THRU 010000-EXIT ELSE IF (WS-ANSWER = "B") PERFORM 020000-DATE-DAYS
THRU0-java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 ELSE IF (WS-ANSWER = "C")
PERFORM300WEEKDAY
THRU 030000-EXIT ELSE IF (WS-ANSWER = "D") PERFORM 000-ADD-DAYS
java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 34 ELSE IF (WS-ANSWER = "E") PERFORM*
THRU 050000-EXIT ELSE IF (WS-ANSWER 3LINE 20 PERFORM06000-ADD-MONTHS
THRU00EXIT ELSE IF (WS-ANSWER = "G") PERFORM 070000-SUBTRACT-MONTHS
THRU 070000-EXIT ELSE IF (WS-ANSWER = "H") PERFORM 080000-ADD-YEARS
080000-EXIT ELSE 3PICZZZ FROM. IF (WS-ANSWER = * PERFORM 090000-SUBTRACT-YEARS
THRU 090000-EXIT ELSE IF (WS-ANSWER = "J") PERFORM 1000-CALC-OFFSET
THRU0 99999/ SH-WORK-YYYYMMDD ELSE IF (WS-ANSWER = "K") * PERFORM03 18 2 VALUE": ".
110000-java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 ELSE
WS-ANSWERL" PERFORM 03PICZZZ FROM.
THRU0EXIT ELSE IF (WS-ANSWER = "M")
100-java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
THRU * ELSEPIC 99 SH-JUL-DATE * PERFORM 140000-ADD-DAYS-BUSINESS
THRU. *
-FLAG *
00100EXIT * * ****************************************************************** * * * D A T E E D I T * * * * Judson D. McClendon * * Sun Valley Systems * * 329 37th Court NE * * Birmingham, AL 35215 * * 205/853-8440 * * * * USAGE: MOVE <MMDDYYYY DATE> TO DW-WORK-DATE-ALPHA. * * PERFORM 001000-DATE-EDIT * * THRU 001000-EXIT. * * * * RESULT: DW-DATE-ERROR-FLAG = 0 IF DATE IS VALID * * DW-DATE-ERROR-FLAG = 1 IF DATE IS NOT VALID * * * * DW-WORK-YYYYMMDD = GIVEN DATE IN YYYYMMDD FORMAT * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
001000-DATE-EDIT. * * ** ERROR FLAG WILL BE RESET TO 0 ON GOOD EXIT ** *
1 DW-DATE-ERROR-FLAG * IFNOT) ACCEPTMENU-SCREEN * MOVE DW-WORK-YEAR TO DW-WORK-YYYY. MOVE DW-WORK-MONTH TO DW-WORK-MM. MOVE DW-WORK-DAY TO DW-WORK-DD. * IF (DW-WORK-MM < 01 OR > 12) GOTO 001000-EXIT. * * ** SET DAYS IN FEBRUARY ** * MOVEMOVETO WS-ESCAPE-FLAG DIVIDE0INTOGIVINGDW-WORK1 REMAINDER DW-WORK2. IFCONVERTING"" MOVE DW-DAYS-IN-MONTH ELSE DIVIDE 100 SCREEN-HOLD-AREA
(WS-ANSWERA) IF (DW-WORK2 = 0) DIVIDE 4 INTO DW-WORK-YYYY 010000-EXIT REMAINDER DW-WORK2 IF (DW-WORK2 = 0) MOVE9TO(2). * IF(DW-WORK-DD 2000-
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
(>DW-DAYS-IN-MONTH GOTO 00100-. * * ** GOOD DATE ** *
0400-java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 *
001000-EXIT. EXIT * * * ****************************************************************** * * * C A L C U L A T E D A T E D A Y N U M B E R * * * * * * RETURNS A NUMBER WHICH IS ONE GREATER FOR EACH SUCCESSIVE * * DATE. * * * * USAGE: MOVE <FIRST DATE> TO DW-WORK-YYYYMMDD. * * PERFORM 001100-DATE-DAYS * * THRU 001100-EXIT. * * * * * * * * * * THIS ROUTINE USES A VARIATION OF ZELLER'S CONGRUENCE. * * THE FORMULA IS: * * * * <DATE DAY NBR> = ( (YEAR * 365) * 03 SH-WORK-YYYYMMDD PIC 9(08) VALUE 0. * - INT(YEAR / 100) * * + INT(YEAR / 400) * * + INT(MONTH * 30.6001) * * + DAY) ) * * * * WHERE: DAY = DAY OF THE MONTH * * * * MONTH = MONTH + 13 (JAN & FEB) * * MONTH + 1 (MAR - DEC) * * * * YEAR = YEAR - 1 (JAN & FEB) * * YEAR (MAR - DEC) * * * * INT(...) MEANS TAKE THE INTEGER PART (NO ROUNDING) * * * * * * THE DATE-DAY-NUMBER CAN BE USED TO DETERMINE THE NUMBER OF * * DAYS BETWEEN TWO DATES BY COMPUTING THE DAY NUMBER OF EACH * * DATE AND SUBTRACTING, LIKE THIS: * * * * MOVE <FIRST DATE> TO DW-WORK-YYYYMMDD. * * PERFORM 001100-DATE-DAYS * * THRU 001100-EXIT. * * MOVE DW-DAYS TO <HOLD DAY>. * * MOVE <SECOND DATE> TO DW-WORK-YYYYMMDD. * * PERFORM 001100-DATE-DAYS * * THRU 001100-EXIT. * * SUBTRACT DW-DAYS FROM <HOLD DAY> * * GIVING <DAYS BETWEEN DATES>. * * * ****************************************************************** *
00DATE-DAYS * * ** ADJUST YEAR AND MONTH ** * MOVE DW-TEMP-YYYY * MOVE DW-WORK-MM TO* THRU 001000-EXIT. *PIC)VALUE IF* DW-DATE-ERROR-FLAG = 1 IF DATE IS NOT VALID * ADD 13 TO DW-TEMP-MM
1FROM
java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 15
9 * MULTIPLY DW-TEMP-YYYY BY* *
Y BY ** TODAYS DATE ** *
DW-TEMP-YYYYBY3SH-AGE-YEARS0)VALUE
DW-WORK1 0 90) VALUE DW-WORK-YEAR . * DIVIDETOjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 ADDTOREDEFINES *
. * * ( java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 * TO. *
0011 0 0PIC.
3 03 DW-TODAYS-YYYYMMDD-ALPHA. * * * ****************************************************************** * * * C A L C U L A T E D A Y O F W E E K * * * * * * WHEN GIVEN ANY DATE THIS ROUTINE RETURNS A NUMBER FROM * * 1 TO 7 INDICATING THE DAY OF WEEK ON WHICH THE DATE FALLS. * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * PERFORM 001200-WEEKDAY * * THRU 001200-EXIT. * * * * RESULT: DW-WEEKDAY = DAY OF WEEK * * * * * * THIS ROUTINE USES ZELLER'S CONGRUENCE, EXPRESSED BY THE * * FOLLOWING FORMULA: * * * * <WEEKDAY> = (INT((13 * MONTH + 3) / 5) * * + DAY * * + YEAR * * + INT(YEAR / 4) * * - INT(YEAR / 100) * * + INT(YEAR / 400) * * + 1) MOD 7) + 1 * * * * WHERE: WEEKDAY = 1 TO 7 WITH 1 = SUNDAY 5 = THURSDAY * * 2 = MONDAY 6 = FRIDAY * * 3 = TUESDAY 7 = SATURDAY * * 4 = WEDNESDAY * * * * DAY = DAY OF THE MONTH * * * * MONTH = MONTH OF THE YEAR (JAN AND FEB COUNT AS * * MONTHS 13 AND 14 OF THE PREVIOUS YEAR) * * * * YEAR = FOUR DIGIT YEAR (YEAR - 1 IF MONTH IS * * JAN OR FEB) * * * * INT(...) MEANS TAKE THE INTEGER PART (NO ROUNDING) * * * * X MOD Y MEANS THE REMAINDER AFTER DIVIDING Y * * INTO X * * * ****************************************************************** *
001200 7 PICREDEFINES. * * ** ADJUST YEAR AND MONTH IF MONTH = JAN OR FEB ** * MOVETO. MOVE DW-WORK-MM TO DW-TEMP-MM. IF (DW-WORK-MM0 * THE DATE-DAY-NUMBER CAN BE USED TO DETERMINE THE NUMBER OF * * SUBTRACT * * ** CALCULATE INTO DW-WORK1 ** * COMPUTE 03 DW-Y * * *
DW-TEMP-YYYY TOPIC()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 *
0 PIC
DW-WORK2DW-WORK1 * BY SUBTRACT DW-WORK2 FROM DW-WORK1 * ** (DAYS IN FEBRUARY ARE ADJUSTED BY DATE ROUTINES) ** *
DIVIDE BY 4 * ADD DW-WORK2 TO DW-WORK1 * * ADD* * DIVIDE* ** NEED TO BE CALCULATED. NO NEED TO ADD WEEKEND DATES. *** ** (YYYYMMDD), FOLLOWED BY A 2-DIGIT COUNT OF DAYS WHICH ** DW-WORK-MM . ADD 1 TO DW-WEEKDAY. *
0-**EXAMPLE, 98 FRIDAY EXIT. * * * ****************************************************************** * * A D D D A Y S T O A D A T E * * * * * * WHEN GIVEN ANY DATE AND A NUMBER OF DAYS THIS ROUTINE WILL * * ADD THE NUMBER OF DAYS TO THE DATE. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <DAYS> TO DW-DAYS. * * PERFORM 001300-ADD-DAYS * * THRU 001300-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD = DATE AFTER DAYS ADDED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
010-ADD-DAYS * * * ** SET DAYS IN FEBRUARY ** * MOVE*
400 DW-WORK-YYYY DW-WORK1 REMAINDER DW-WORK2. IF (DW-WORK21 MENU-SCREEN MOVE2 TO(2) ELSE DIVIDE0INTOGIVING* * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * IF (DW-WORK2 NOT = 0) DIVIDE 4 INTODW-WORK-YYYY DW-WORK1
R DW-WORK2
MOVE 29 TO DW-DAYS-IN-MONTH(2). *
RK-DD. * PERFORM0OOP-MONTH
THRU0 LINE4COLUMN 3LINECOLUMN M=to
(DW-DAYS > DW-DAYS-IN-MONTH0 LINECOLUMN 3 "M =Jul to Greg". * MOVE DW-DAYS 0 LINE7COLUMN7VALUE= Add,Business *
001300-EXIT. EXIT* * * *
030LOOP-MONTH * SUBTRACT DW-DAYS-IN-MONTH(DW-WORK-MM) FROM DW-DAYS * * ADD 1 TOPIC9/999 03 PIC 99/99/9999 USING * IF (DW-WORK-MM > 1. ADD 1 TO DW-WORK-YYYY SUBTRACT 1 * ** *
2 DW-DAYS-IN-MONTH
IVIDEDW-WORK-YYYY * IF (DW-WORK2 = 0)
*java.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 72 ELSE DIVIDE 100 INTO DW-WORK-YYYYPICZZZZZZ * IF (DW-WORK2 NOT = 0) DIVIDE 4 INTO******************************************************************
DW-WORK200100-WEEKDAY. IF (DW-WORK2 = 0) MOVE 29 TO DW-DAYS-IN-MONTH * *
001320-EXIT* EXIT. * * * ****************************************************************** * * * S U B T R A C T D A Y S F R O M A D A T E * * * * * * WHEN GIVEN ANY DATE AND A NUMBER OF DAYS THIS ROUTINE WILL * * SUBTRACT THE NUMBER OF DAYS FROM THE DATE. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <DAYS> TO DW-DAYS. * * PERFORM 001400-SUBTRACT-DAYS * * THRU 001400-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD = DATE AFTER DAYS SUBTRACTED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
0014 X2)FROM. * SUBTRACT* * *
0 .
( 0. * MOVE DW-DAYS * *
010-.
1COLUMNVALUE . * * *
001420-LOOP-MONTH java.lang.StringIndexOutOfBoundsException: Range [0, 12) out of bounds for length 7 * SUBTRACTFROMDW-WORK-MM. IF (DW-WORK-MM 3 USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * 20 2 "Days.
03 LINE 202 VALUE:".
DDTO. * MOVE 28 TO DW-DAYS-IN-MONTH(2). * S H O W J U L Y Y Y Y D D D* S H O W J U L Y Y Y Y D D D
DW-WORK2 ************************** IF (DW-WORK2 = 0) MOVE 29 TO DW-DAYS-IN-MONTH * S H O W Y Y Y Y M M D D ELSE DIVIDE 100 INTO DW-WORK-YYYY GIVING DW-WORK1 REMAINDER*
java.lang.StringIndexOutOfBoundsException: Range [36, 15) out of bounds for length 36 DIVIDE 4 INTO3999FROM
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 IF =000CONTROL MOVE 29 TO DW-DAYS-IN-MONTH(2). * ADD DW-DAYS-IN-MONTH (WS-ESCAPE-FLAG-. *
001420-EXIT. EXIT. * * * ****************************************************************** * * * A D D M O N T H S T O A D A T E * * * * * * WHEN GIVEN ANY DATE AND A NUMBER OF MONTHS THIS ROUTINE * * WILL ADD THE NUMBER OF MONTHS TO THE DATE. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <MONTHS> TO DW-MONTHS. * * PERFORM 001500-ADD-MONTHS * * THRU 001500-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD = DATE AFTER MONTHS ADDED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
00500-ADD-MONTHS600EXIT * ADD DW-WORK-MM TO DW-MONTHS. * PERFORMjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
THRU 0 ELSE UNTIL (DW-MONTHS NOT T 070 WS-ANSWERjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 * MOVEPERFORM800-ADD-YEARS 100 DW-WORK2 * MOVETO2java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
40 INTO java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
DW-WORK2 ELSE MOVE 29 TO java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 ELSE DIVIDE 100 INTO DW-WORK-YYYYjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 REMAINDER DW-WORK2 IF (DW-WORK2 NOT = 0) PERFORM 130000-JUL-GREG ****************************************************************** IF (DW-WORK2 = 0) MOVE* * * IF (DW-WORK-DD > DW-DAYS-IN-MONTH(DW-WORK-MM)) MOVE* 329 37th Court NE * *
001500-EXIT. EXIT. * * * * RESULT: DW-DATE-ERROR-FLAG = 0 IF DATE IS VALID * * SUBTRACT00100EXIT * * *
001520-EXIT. EXIT * ** ERROR FLAG WILL BE RESET TO 0 ON GOOD EXIT ** * * * ****************************************************************** * * * S U B T R A C T M O N T H S F R O M A D A T E * * * * * * WHEN GIVEN ANY DATE AND A NUMBER OF MONTHS THIS ROUTINE * * WILL SUBTRACT THE NUMBER OF MONTHS FROM THE DATE. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <MONTHS> TO DW-MONTHS. * * PERFORM 001600-SUBTRACT-MONTHS * * THRU 001600-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD = DATE AFTER MONTHS SUBTRACTED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
0SUBTRACT-MONTHS * SUBTRACT DW-WORK-MM. * PERFORM 001620-LOOP-YEAR
THRU 001620-EXIT UNTIL DW-DAYS-IN-MONTH *
000IF = 0java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 *
28TODW-DAYS-IN-MONTHjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54 DIVIDE REMAINDER* *. IF (DW-WORK2 TO00-. MOVE ******************************************************************* * ELSE * * REMAINDER DW-WORK2 IF (DW-WORK2 NOT = 0)
* WILL ADD THE NUMBER OF MONTHS TO THE DATE. * REMAINDER DW-WORK2 IF (DW-WORK2 = 0) MOVE 29 TO DW-DAYS-IN-MONTH(2). * IF (DW-WORK-DD > DW-DAYS-IN-MONTH(DW-WORK-MM)) MOVE DW-DAYS-IN-MONTH * + INT(MONTH * 30.6001) * *
001600-EXIT. EXIT. * * *
001620-LOOP-YEAR. * ADD 1 DW-MONTHS SUBTRACT 1 * - INT(YEAR / 100) * *
012-. EXIT. * * * ****************************************************************** * * * A D D Y E A R S T O A D A T E * * * * * * WHEN GIVEN ANY DATE AND A NUMBER OF YEARS THIS ROUTINE * * WILL ADD THE NUMBER OF YEARS TO THE DATE. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <YEARS> TO DW-YEARS. * * PERFORM 001700-ADD-YEARS * * THRU 001700-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD = DATE AFTER YEARS ADDED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
0-. * ADD DW-YEARS F ( < 03) * MOVE 28 TOSUBTRACTFROMjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 DIVIDE 40 SUBTRACT DW-WORK1 FROM DW-DAYS. REMAINDER DW-WORK2. DIVIDEBY0 DW-WORK11 DW-MONTHS MOVE9 O DW-DAYS-IN-MONTH ELSE DIVIDE 100 INTO DW-WORK-YYYY GIVING DW-WORK1 REMAINDER DW-WORK2 IF* DIVIDE 4 INTO DW-WORK-YYYY GIVING DW-WORK1 * IF (DW-WORK2 = 0) * MOVE 29 TO DW-DAYS-IN-MONTH(2). * IF* C A L C U L A T E D A Y O F W E E K * MOVE DW-DAYS-IN-MONTH(DW-WORK-MM) TO DW-WORK-DD. *
001700-EXIT. EXIT. * * * ****************************************************************** * * * S U B T R A C T Y E A R S F R O M A D A T E * * * * * * WHEN GIVEN ANY DATE AND A NUMBER OF YEARS THIS ROUTINE * * WILL SUBTRACT THE NUMBER OF YEARS FROM THE DATE. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <YEARS> TO DW-YEARS. * * PERFORM 001800-SUBTRACT-YEARS * * THRU 001800-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD = DATE AFTER YEARS SUBTRACTED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
400 DW-WORK-YYYYGIVING * SUBTRACT* MONTHS 13 AND 14 OF THE PREVIOUS YEAR) * * MOVE 28 TO DW-DAYS-IN-MONTH(2). DIVIDE 400 INTO DW-WORK-YYYY GIVING DW-WORK1
. IF (DW-WORK2 REMAINDER MOVE 29 TO* INTO X * ELSE****************************************************************** DIVIDE INT(...) MEANS TAKE THE INTEGER PART (NO ROUNDING) * REMAINDER DW-WORK2 INTO X * DIVIDE DW-WORK-YYYY REMAINDER DW-WORK2 IF (DW-WORK2 = 0) MOVE* * IF (DW-WORK-DD > DW-DAYS-IN-MONTH(DW-WORK-MM)) MOVE DW-DAYS-IN-MONTH) DW-WORK-DD *
001800-EXIT. EXIT. * * * ****************************************************************** * * * C A L C U L A T E D A T E O F F S E T * * * * * * ADDS A SIGNED OFFSET IN THE FORM +-YYYYMMDD TO A DATE * * IN YYYYMMDD FORM. * * * * * * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. * * MOVE <OFFSET> TO DW-OFFSET. * * PERFORM 001900-CALC-OFFSET * * THRU 001900-EXIT. * * * * RESULT: DW-WORK-YYYYMMDD DATE AFTER OFFSET APPLIED * * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * ****************************************************************** *
001900-CALC-OFFSET * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * MOVE DW-OFFSET TO DW-OFFSET-UNSIGNED. ******************************************************************** WHEN GIVEN ANY DATE AND A NUMBER OF DAYS THIS ROUTINE WILL * * IF* ADD DW-OFFSET-YYYY TO DW-WORK-YYYY MOVE DW-OFFSET-MM TO DW-MONTHS PERFORM50ADD-MONTHSMOVETO(2 * THRU 001300-EXIT. *
THRU1 DW-WORK-YYYY
PERFORM 001300-IFNOT java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
THRUREMAINDER ELSEDW-WORK2 IFDW-OFFSET) SUBTRACT DW-DAYS PERFORM 0 400INTODW-WORK-YYYY00320OOP-MONTH
THRU 001920-EXIT
DW-OFFSET-MM TIMES
010-. PERFORM
THRU 001400-EXIT. *
001900-EXIT.
EXIT * * *
010SUBTRACT-MONTH *
2 * WHEN GIVEN ANY DATE AND A NUMBER OF YEARS THIS ROUTINE *
DW-WORK-DD DW-DAYS SUBTRACT 1 FROM* ADD 12 TO (DW-WORK2THRU0EXIT *
001920-EXITDIVIDE0 DW-WORK-YYYYDW-WORK1 EXIT. * * * ****************************************************************** * * * C O M P U T E A G E * * * * * * WHEN GIVEN THE BEGIN DATE AND END DATE THIS ROUTINE * * CALCULATES THE AGE IN YEARS, MONTHS, DAYS AND TOTAL DAYS. * * * * * * USAGE: MOVE <BEGIN DATE> TO DW-BEG-YYYYMMDD. * * MOVE <END DATE> TO DW-END-YYYYMMDD. * * PERFORM 002000-COMPUTE-AGE * * THRU 002000-EXIT. * * * * RESULT: DW-AGE-YEARS = WHOLE YEARS * * DW-AGE-MONTHS = MONTHS OVER WHOLE YEAR * * DW-AGE-DAYS = DAYS OVER WHOLE MONTH * * * * (IE: AGE = YEARS + MONTHS + DAYS) * * * * DW-AGE-TOTDAYS = TOTAL AGE IN DAYS * * * * DW-BEG-YYYYMMDD = HAS BEEN MODIFIED * * DW-END-YYYYMMDD = HAS BEEN MODIFIED * * * ****************************************************************** *
002000-COMPUTE-AGE. * * ** CALCULATE AGE IN DAYS ** * MOVE * C A L C U L A T E D A T E O F F S E T * PERFORM-DATE-DAYS
THRU 001100-EXIT. MOVE DW-DAYS * * * TO. PERFORM 001100-DATE-DAYS
001100EXIT * PERFORM 001400-SUBTRACT-DAYS * * * ** CALCULATE AGE IN YEARS, MONTHS & DAYS ** * IF <) PERFORM 002020-ROLL-DAY
THRU * * COMPUTE DW-AGE-DAYS * * IF (DW-END-MM < DW-BEG-MM) PERFORM 002040-ROLL-MONTH
0 * COMPUTE = DW-END-MMDW-BEG-MM. * COMPUTE DW-AGE-YEARS = ADD DW-OFFSET-YYYY DW-WORK-YYYY * PERFORM 001500-ADD-MONTHS *
002000-EXIT. DW-DAYSTO. EXIT. * * *
* * SUBTRACT 1 FROM DW-END-MM. * IF (DW-END-MM < 01) PERFORM 002040-ROLL-MONTH
THRU 002040-EXIT. * IF (DW-END-MM = 02) MOVE DW-DAYS-IN-MONTH DIVIDE40INTOGIVING DW-WORK1 REMAINDER DW-WORK2010-.
(DW-WORK2 9TO) MOVE2 TO(2) ELSE DIVIDE0 java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 29 REMAINDER DW-WORK2
(=0
DW-WORK2
IF (DW-WORK2 = 0)
REMAINDER DW-WORK2.
*
ADD (W-END-MMTODW-END-DD
*
002020-EXIT.
EXIT.
*
*
*
002040-ROLL-MONTH.
*
SUBTRACT 1 FROM DW-END-YYYY.
*
ADD 12 TO DW-END-MM.
*
002040-EXIT.
EXIT.
*
*
*
*************************************************
* *
* G R E G O R I A N T O J U L I A N *
* *
* *
* CONVERTS A DATE IN GREGORIAN DATE FORM (YYYYMMDD) INTO *
* JULIAN DATE FORM (YYYYDDD). *
* *
* WHENGIVENANY OFYEARS THIS
* * *
**
* THRU 002100-EXIT. *
YEARS TO .
* RESULT: DW-JUL-DATE = DATE IN JULIAN DATE PERFORM 070ADD-YEARS
* *
* DW-WORK-YYYYMMDD = HAS BEEN MODIFIED *
* *
******************************************************************
*
002100-GREG-JUL.
*
MOVE DW-WORK-YYYY TO DW-JUL-YYYY.
*
PERFORM 001100-DATE-DAYS
THRU00100-EXIT.
*
MOVE DW-DAYS TO DW-WORK3.
*
SUBTRACT 1 FROM DW-JUL-YYYY GIVING DW-WORK-YYYY.
MOVE 12 TO DW-WORK-MM.
SUBTRACT DW-MONTHSFROM DW-WORK-MM DW-MONTHS.
MOVE 31 TO DW-WORK-DD.
*
PERFORM 001100-DATE-DAYS
THRU 001100-EXIT.
*
SUBTRACT DW-DAYS FROM DW-WORK3
GIVING DW-JUL-DDDMONTH(
REMAINDER DW-WORK2.
EXIT.
*
*
*
*********************************************** ( )
* *
* J U L I A N T O G R E G O R I A N *
* *
* *
* CONVERTS A DATE IN JULIAN DATE FORM (YYYYDDD) INTO *
* GREGORIAN DATE FORM (YYYYMMDD). *
* *WHEN ANYDATEANDANUMBER OF THISROUTINE*
* *
* *
* PERFORM 002200-JUL-GREG *
* THRU 00220 . 1-EXIT
* 100.
=DATEIN
* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE *
*
*********************************java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
*
002200-JUL-GREG.
*
SUBTRACT1FROM DW-JUL-YYYY DW-WORK-YYYY
*
1TO DW-WORK-MM.
*
MOVE 31 TO DW-WORK-DD.
*
MOVE DW-JUL-DDD TO DW-DAYS.
*
ERFORM010-DD-DAYS
THRU 001300-EXIT.
*
002200-EXIT.
EXIT.
*
*
**************************************IF(DW-WORK2 =0java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
* *
* A D D D A Y S T O A D A TREMAINDER DW-WORK2
IF DW-WORK2NOT 0
* INTODW-WORK-YYYY DW-WORK1
* WHEN GIVEN ANY DATE AND A NUMBER OF DAYS THIS ROUTINE WILL *
* ADD THE NUMBER OF DAYS TO THE DATE AND RETURN EXIT.
* BUSINESS DAY ON OR AFTER THE RESULTANT DATE. *
* *
* USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. *
* MOVE <DAYS> TO DW-DAYS. *
* PERFORM 002300-ADD-DAYS-BUSINESS *
* THRU 002300-EXIT. *
* *
* RESULT: DW-WORK-YYYYMMDD = DATE AFTER DAYS ADDED *
* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE *
*
**********************************java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
*
002300-ADD-DAYS-BUSINESS.
*
PERFORM 001300-ADD-DAYS
THRU 001300-EXIT.
*
PERFORM 001200-WEEKDAY
THRU 001200-EXIT.
*
IF (DW-WEEKDAY = 7)
MOVE 2 TO DW-DAYS
PERFORM 0java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
THRU 001300-EXIT
ELSE
IF (DW-WEEKDAYMOVE 8TO DW-DAYS-IN-MONTH).
DW-DAYS
PERFORM 001300-ADD-DAYS
THRU 001300-EXIT.
*
* ** IF DATE IS A HOLIDAY, ADD NBR DAYS TO NEXT BUSINESS THRU000-XIT
*
SET DW-HT-HX TO 1.
SEARCH DW-HT-HOLIDAYS
WHEN (DW-HT-DATE(DW-HT-HX) = DW-WORK-YYYYMMDD)
MOVE DW-HT-DAYS(DW-HT-HX) TO DW-DAYS
THRU 0013java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
002300-EXIT.
EXIT.
*
*
* T E S T D A T E E D I T
*
010000-DATE-EDIT.
*
DISPLAY GET-EDIT-DATE-SCREEN.
ACCEPT GET-EDIT-DATE-SCREEN
N ESCAPE
GO TO 010000-EXIT.
*
SH-EDIT-DATETO DW-WORK-DATE-ALPHA.
*
PERFORM 001000-DATE-EDIT
THRU 001000-EXIT.
*
IF (DW-DATE-ERROR-FLAG = 0)
MOVE "DATE VALID" TO SH-RESULT
ELSE
MOVE "DATE INVALID" TO SH-RESULT. THRU 001400-EXIT
DISPLAY SHOW-RESULT-SCREEN.
*
GO TO 010000-DATE-EDIT.
*
010000-EXIT.
EXIT. MOVE DW-OFFSET-DDTO java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
*
IF(W-OFFSET NEGATIVE)
* T E S T D A T E D A Y S
*
000-.
*
DISPLAY GET-WORK-YYYYMMDD-SCREEN.
-java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
ON ESCAPE
GO TO 020000-EXIT.
*
MOVE SH-WORK-YYYY TO DW-WORK-YYYY.
MOVE SH-WORK-MM TO DW-WORK-MM.90-
MOVE SH-WORK-DD TO DW-WORK-DD.
*
PERFORM 001100-DATE-DAYS
THRU 0011012-.
*
MOVE DW-DAYS TO SH-DAYS.
DISPLAY SHOW-DATE-DAYS-SCREEN.
*
GO TO 020000-DATE-DAYS.
*
020000-EXIT.
*
*
* T E S T Wjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 23
*
0*
*
DISPLAY GET-WORK-YYYYMMDD-SCREEN.
020EXIT 0000ROLL-MONTH
ON ESCAPE
GO TO *RESULT DW-AGE-YEARS YEARS*
*
MOVE SH-WORK-YYYY TO DW-WORK-YYYY.
MOVE SH-WORK-MM TO DW-WORK-MM.
MOVE SH-WORK-DD TO DW-WORK-DD.
*
PERFORM 001200-WEEKDAY
THRU 001200-EXIT.
*
MOVE DW-DAY-NAME(DW-WEEKDAY) TO SH-RESULT.
DISPLAY SHOW-RESULT-SCREEN.
*
GO TO 030000-WEEKDAY.
*
030000-EXIT.
EXIT.
*
*
* T E S T A D D D A Y S
*
040000-ADD-DAYS.
*
DISPLAY GET-DATE-DAYS-SCREEN.
ACCEPT GET-DATE-DAYS-SCREEN
ON ESCAPE
GO TO 040000-EXIT.
*
MOVE SH-WORK-YYYY TO DW-WORK-YYYY.
MOVE SH-WORK-MM TO DW-WORK-MM.
MOVE SH-WORK-DD TO DW-WORK-DD.
MOVE SH-DAYS DW-AGE-DAYS =DW-END-DD-.
*
PERFORM 010-ADD-DAYS
THRU 001300-EXIT.
*
MOVE DW-WORK-YYYY TO SH-WORK-YYYY.
MOVE DW-WORK-MM TO SH-WORK-MM.
MOVE DW-WORK-DD TO SH-WORK-DD.
.
*
GO ******************************************
*
040000-EXIT.
EXIT.
*
*
* T E S T S U B T R A C T D A Y S
*
500SUBTRACT-DAYS.
*JULIAN ( * JULIAN DATE FORM (YYYYDDD
MOVE 0 TO DW-DAYS.
DISPLAY GET-DATE-DAYS-SCREEN.
ACCEPT GET-DATE-DAYS-SCREEN
ON ESCAPE
GO TO 050000-EXIT.
*
MOVE *
MOVE*
MOVE SH-WORK-DD TO DW-WORK-DD.
MOVE SH-DAYS TO DW-DAYS.
*
PERFORM 001400-SUBTRACT-DAYS
THRU 001400-EXIT.
*
MOVE DW-WORK-YYYY TO SH-WORK-YYYY.
MOVE DW-WORK-MM TOSH-WORK-MM
MOVE DW-WORK-DD TO SH-WORK-DD.
DISPLAY SHOW-NEW-DATE-SCREEN.
*
GO TO 050000-SUBTRACT-DAYS.
*
050000-EXIT.
EXIT.
*
* FROM DW-JUL-YYYY GIVINGDW-WORK-YYYY.
* T E S T A D D M O N T H S
*
000ADD-MONTHS.
DISPLAY GET-DATE-MONTHS-SCREEN.
ACCEPT GET-DATE-MONTHS-SCREEN
ON ESCAPE
GO TO 060000-EXIT.
*
MOVE SH-WORK-YYYY TO DW-WORK-YYYY.
MOVE SH-WORK-MM TO DW-WORK-MM.
MOVE SH-WORK-DD TO DW-WORK-DD.
MOVE *
*
PERFORM 001500-ADD-MONTHS
THRU 001500-EXIT.
*
MOVE DW-WORK-YYYY TO SH-WORK-YYYY.
MOVE DW-WORK-MM TO SH-WORK-MM.
MOVE DW-WORK-DD TO SH-WORK-DD.
DISPLAY SHOW-NEW-DATE-SCREEN.
*
GO TO 060000-ADD-MONTHS.
*
060000-EXIT.
EXIT.
*
*
* T E S T S U B T R A C T M O N T H S
*
070000-SUBTRACT-MONTHS.
*
MOVE 0 TO DW-MONTHS.
DISPLAY GET-DATE-MONTHS-SCREEN.
ACCEPT GET-DATE-MONTHS-SCREEN
ON ESCAPE
GO TO 07*
*
MOVE SH-WORK-YYYY TO DW-WORK-YYYY.
SH-WORK-MM TO DW-WORK-MM.
MOVE SH-WORK-DD TO DW-WORK-DD.
MOVE SH-MONTHS TO DW-MONTHS 1TO DW-WORK-MM.
*
PERFORM 001600-SUBTRACT-MONTHS
0160-.
*
MOVE DW-WORK-YYYY TO SH-WORK-YYYY.
DIVIDE 40 INTO DW-END-YYYY GIVING DW-WORK1
MOVE DW-WORK-DD TO SH-WORK-DD
DISPLAY SHOW-NEW-DATE-SCREEN.
*
GO TO 070000-SUBTRACT-MONTHS.
*
070000-EXIT.
--> --------------------
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.