00-java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 * PROGRAM-ID ()) * DATE-WRITTENTO0EXITELSE * * 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. PERFORM 050000-SUBTRACT-DAYS CONFIGURATIONSECTION * * * * FILE-CONTROL 00-java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 * I-O-CONTROLELSE * DATADIVISION. * FILESECTION. * WORKING-STORAGESECTION 0700-UBTRACT-MONTHS * ****************************************************************** * * * 7 7 ' S * * * ****************************************************************** *
77 WS-ANSWERIF = ""
77 WS-ESCAPE-FLAG PICPERFORMADD-YEARS * ****************************************************************** * * * S C R E E N H O L D A R E A * * * ****************************************************************** *
01 SCREEN-HOLD-AREA.
03 SH-EDIT-DATE = I" *
03 SH-WORK-MMDDYYYY PIC 9(08 0900-java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
0SH-WORK-MMDDYYYY-ALPHA
0SH-WORK-MONTH (2.
05 SH-WORK-DAY * THE FORMULA IS: *
05 SH-WORK-YEAR * <DATE DAY NBR> = ( (YEAR * 365) * *
03 SH-WORK-YYYYMMDD PIC 1000CALC-OFFSET * - INT(YEAR / 100) * * + INT(MONTH * 30.6001) *
05 SH-WORK-YYYY PIC* *
05 SH-WORK-MM ()java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
05 SH-WORK-DD PIC 9(02) * YEAR = YEAR - 1 (JAN & FEB) * *
10*
03 SH-JUL-DATE-ALPHA * * * PIC0)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
05 SH-JUL-DDD * THRU 001100-EXIT. * * * *
0 * *
0 *
05 SH-BEG-MM * Judson D. McClendon * PIC 0. *
03 SH-END-YYYYMMDD PIC* 329 37th Court NE *
03 SH-END-YYYYMMDD-ALPHA ******************************************************************.
05 SH-END-YYYY(4.
0 0110-.
05 SH-END-DD PIC * * *
03 SH-OFFSET PIC.
03 90 0.
03SH-AGE-MONTHSVALUE* * IF
3SH-AGE-TOTDAYS * * *
1
0SH-MONTHS
03 * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * SH-JUL-DATE *
03 SH-RESULT PIC 0. * ****************************************************************** * * * D A T E W O R K A R E A * * * ****************************************************************** *
01 *
DIVIDE DW-TEMP-YYY * * * * ** TODAYS DATE ** * PIC( *
03DIVIDE 0 9) 0.
GTO
0SUBTRACTPICVALUEjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
00 PIC(07) * *
03 DW-TODAYS-YYYYMMDD PIC 9(08).
0 .
05 DW-TODAYS-YYYY PIC*
05 DW-TODAYS-YYYY-R REDEFINES .
07 DW-TODAYS-CC *
07DW-TODAYS-YYMOVETO *java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
05 DW-TODAYS-MM 9(0) PIC (2. * * * ** DATE WORK AREA ** *
03 DW-WORK-DATE *
0 2
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
0 10 9(2
(java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58 *
0 java.lang.StringIndexOutOfBoundsException: Range [39, 11) out of bounds for length 72
0 DW-WORK-YYYYMMDD *
*
00 90.
07 DW-WORK-CC PICREMAINDER
07 DW-WORK-YY PIC*
MP 9(0). PIC9(2. * * * ** SHORT MMDDYY DATE ** *
3DW-SHORT-DATE*java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
03 DW-SHORT-DATE-ALPHA REDEFINESIFDW-WORK-DD)
05 DW-SHORT-MONTH PIC 9(02).
90) GO00-. * * * ** OFFSET DATE AREAS ** *
0DW-OFFSET *
03 DW-OFFSET-UNSIGNED *
03DW-OFFSET-UNSIGNED-ALPHA.
05 DW-OFFSET-YYYY0 PIC 9(02).
05 DW-OFFSET-MM PIC* *.
05 DW-OFFSET-DD * ** SHORT MMDDYY DATE ** * * * ** JULIAN DATE ** *
5 PIC
0 D REDEFINESBYTHE
05 DW-JUL-YYYY PICPIC*java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
05 DW-JUL-YYYY-R REDEFINES.
07 DW-JUL-CC PIC 9(02). * + INT(YEAR / 4) *
*java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 * * * ** BEGIN DATE ** *
03 DW-BEG-YYYYMMDD * 4 = WEDNESDAY *
03 java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
05 DW-BEG-YYYY PIC 9(04).
05 DW-BEG-YYYY-R * * * <DATE DAY NBR> = ( (YEAR * 365) ** ** BEGIN DATE **
07 DW-BEG-YY* + INT(YEAR / 4) ** MONTH = MONTH OF THE YEAR (JAN AND FEB COUNT AS * * *
05 5 * * * ** END DATE ** *
03 DW-END-YYYYMMDD * *
03 DW-END-YYYYMMDD-ALPHA REDEFINESPIC
05 DW-END-YYYY PIC 9(04).
05 DW-END-YYYY-RREDEFINES.
07 DW-END-CC PIC 9(02).
0DW-END-YYDW-END-YYYY-RDW-END-YYYY
05 DW-END-MM PIC* *0 90.
0* THE DATE-DAY-NUMBER CAN BE USED TO DETERMINE THE NUMBER OF * * * * ** RESULTS OF AGE COMPUTATION ** *
00 PIC
NTHS2.
03 DW-AGE-DAYS PIC 9(02).
03 * MOVE <FIRST DATE> TO DW-WORK-YYYYMMDD. ** * * * ** INPUT/OUTPUT VARIABLES ** *
03 DW-YEARS THRU010-. * THRU 001100-EXIT.
03 DW-MONTHS PIC S9(07).
03 DW-DAYS S907.
03 DW-WEEKDAY03 MOVE <SECOND DATE> TO DW-WORK-YYYYMMDD. * * * * ** SCRATCH WORK AREAS FOR DATE ROUTINES ** * ** (ASSUME MODIFIED BY ALL DATE ROUTINES) ** *
3 DW-WORK1* THRU 001100-EXIT. *
0ADDTO .
3SUBTRACTFROMDAY>
S9).
03 DW-TEMP-MM DIVIDEDW-TEMP-YYYYjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 7 * * * ** NUMBER OF DAYS IN EACH MONTH ** * ** (DAYS IN FEBRUARY ARE ADJUSTED BY DATE ROUTINES) ** *
03 IVIDEDW-TEMP-YYYY00
05 DW-DAYS-IN-MONTH OCCURS 12 TIMES00110-ATE-DAYS * PIC * * * ** 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 ** * * ** EXAMPLE: CHRISTMAS, 1998, OFF FRIDAY 12/25 THROUGH ** * ** MONDAY 12/28 UNTIL TUESDAY 12/29. THE ENTRIES IN THE ** * ** TABLE WOULD BE: 1998 12 25 04 AND 1998 12 28 01 ** *
03 DW-HOLIDAY-TABLE.
05 DW-HT-VALUES. * YYYYMMDDCC
DW-TEMP-YYYY.
07 FILLERPIC 9 ADDDW-WORK1 DW-DAYS
07 FILLER*
07 FILLERPIC 9(10) VALUE 1998122801. *
05 DW-HT-HOLIDAYS REDEFINES DW-HT-VALUES * BY.
07 DW-HT-DATE.
09 DW-HT-YYYY PIC 9(04).
9 DW-HT-YYYY-R DW-HT-YYYY.
11 BY DW-HT-HX
11 DW-HT-YY * PERFORM 001300-ADD-DAYS *0 .
09 DW-HT-MM9DW-HT-YYYY-R*
09 DW-HT-DD PIC 9( MULTIPLY* *PIC 9(02. * ** WEEKDAY NAMES ** * * * ** WEEKDAY NAMES ** *
03 java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 7 * PIC X(03). *
SCREENDIVIDEINTOGIVING * * * M E N U S C R E E N *
0.
3 .
9 DW-DAYS-IN-MONTH
*
03 LINE0D DW-WORK1
4 "B=Date days"
03 LINE 05 COLUMN 17 3 LINECOLUMN"C=Weekday.
03 LINE 06 COLUMN* PERFORM 001200-WEEKDAY *
03 DIVIDEGIVING
03 LINE 08 COLUMN 17 VALUE"F = Add Months".
03 LINE 09 COLUMN 17 VALUE"G = Sub Months".
0LINE"H Years"
03 LINE 11 COLUMN0 TO
3 0013-java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
0 0 37 0 3VALUE.
03 LINE 05 COLUMN 37 VALUE"L = Greg * = (INT((13 * MONTH + 3) / 5) *
3 06 COLUMN7VALUE Juljava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
0 07 3 "N Add Days ".
0 PIC WS-ANSWERAUTO
03 * * * * I N P U T S C R E E N S * * * G E T E D I T D A T E *
01 GET-EDIT-DATE-SCREEN.
0
03 PIC X 0 PIC12-. * * * G E T W O R K M M D D Y Y Y Y *
0 .
03 LINE3LINECOLUMN"Date MMDD/YYYY:"java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
03 PIC 99/99USING * * * *
01 GET-WORK-YYYYMMDD-SCREEN.
0 14COLUMN" * DAY = DAY OF THE MONTH *
03 PIC 9999/99/99 USING03 PIC 99999999 SH-WORK-YYYYMMDD. * * * G E T J U L Y Y Y Y D D D *
01 GET-JUL-YYYYDDD-SCREEN.
03 LINE 14 COLUMN 1 * MONTHS 13 AND 14 OF THE PREVIOUS YEAR) *
D0 DW-WORK1 * * * G E T D A T E D A Y S *
01 *
0 14COLUMNVALUEDate*java.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 72
03 PIC 9999/99/99 USING SH-WORK-YYYYMMDD.
03 LINE 16 COLUMN 10 VALUE"Days: ".
03 PICUSING * * * G E T D A T E M O N T H S *
01 GET-DATE-MONTHS-SCREEN.
03 LINE 14 COLUMN 10 VALUE GET-DATE-MONTHS-SCREEN.
03 PIC 9999/99/99 USING SH-WORK-YYYYMMDD.
03 16 COLUMN1 VALUEREMAINDER
03 PIC ZZZZZZ USING 999/999USING * * * G E T D A T E Y E A R S *
java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 7
0*java.lang.StringIndexOutOfBoundsException: Range [51, 24) out of bounds for length 51
03 PIC 9999/99/9 *
1COLUMNjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
3ZZZZ * * * G E T D A T E O F F S E T *
01 GET-DATE-OFFSET-SCREEN.
03 LINE 14 COLUMN*
03 * G E T D A T E O F F S E T
03 LINE* SUBTRACT THE NUMBER OF DAYS FROM THE DATE. *1 COLUMN*
03 PIC -9999/99/99 USING SH-OFFSET. * * * G E T B E G / E N D D A T E S *
01 *
03 * MOVE <DAYS> TO DW-DAYS. *
03PIC999
3 LINE6COLUMN0VALUE
99/ * * * O U T P U T S C R E E N S * * * S H O W R E S U L T * *
0LINE 2java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33 PIC* * * * S H O W D A T E D A Y S *
0.
03 0 18COLUMN"DW-DAYS0
03 PIC Z,ZZZ * * * * S H O W N E W D A T E *
01 SHOW-NEW-DATE-SCREEN. 040EXIT
82VALUEjava.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
* * * S H O W A G E *
0.
03 LINEPIC,ZZZ.
03 PICZ,ZZZSH-AGE-YEARS
0 1 DW-WORK-MM
0 *java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72 COLUMN" java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
03 A 12 DW-WORK-MM
03 LINE 22 COLUMN 20 VALUE"Days Only: ".
0 * * * * S H O W J U L Y Y Y Y D D D *
01 SHOW-JUL-YYYYDDD-SCREEN01SHOW-JUL-YYYYDDD-SCREEN
3 DW-WORK2************************* PIC/9 FROM. * * * S H O W Y Y Y Y M M D D *
01 SHOW-YYYYMMDD-SCREEN * ** SET DAYS IN FEBRUARY **
0 8COLUMNVALUE(/MM*
03 PIC 9999/ 28 TO0 PIC99/ . * * * S H O W M M D D Y Y Y Y *
01 SHOW-MMDDYYYY-SCREEN IF )
3PIC9/9 SH-WORK-MMDDYYYY *
ROCEDURE * * * C O N T R O L *
000-. * PERFORM 0 *
THRU0-XIT UNTIL *
00-. STOP * * * P R O C E S S *
000100-PROCESS. * * DISPLAY MENU-SCREEN. ACCEPT MENU-SCREEN ONTO. MOVE 1 * GOTO 03- INSPECT WS-ANSWER "" TOTO *
. * IF
0D DW-WORK-DD
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 ELSE IF( = "B") PERFORM 020000 * USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. *
THRU 020000-EXIT
0300-java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 IF (WS-ANSWER 000-java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 PERFORM (DW-WORK-MM2)
THRU ELSE* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * IF (WS-ANSWER = "D") PERFORM 040000- 060000-ADD-MONTHS2 DW-DAYS-IN-MONTH
THRU 040000-EXIT ELSE IF = "E PERFORM 050000SUBTRACT-DAYS ( = ""java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
THRU 050000-EXIT ELSE
WS-ANSWER PERFORM 060000-ADD-MONTHS 0800ADD-YEARS
THRU 060000-EXIT ELSE IF (WS-ANSWER = "G") PERFORM 070000-SUBTRACT-MONTHS
HRUIF = I"java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 IF (WS-ANSWER = "H")
000
THRU 080000-EXIT
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 IF (WS-ANSWER = " 28 DW-DAYS-IN-MONTH(2. PERFORM 09000 11000-
THRU 090000-EXIT ELSE IF (WS-ANSWER = "J") REMAINDER. PERFORM*
THRU * ELSE IF ( = "K") PERFORMTHRU-java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
THRU (WS-ANSWER ELSE IF (WS-ANSWER = "L") PERFORM 120000-GREG-JUL *
0 TO. IF (WS-ANSWER = "M")
java.lang.StringIndexOutOfBoundsException: Range [38, 15) out of bounds for length 38
THRU 130000-EXIT ELSE IF (WS-ANSWER = "N") PERFORM*
THRU * * *
0-. * * ****************************************************************** * * * 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 * * * ****************************************************************** *
0 DW-WORK-YYYY * * ** ERROR FLAG WILL BE RESET TO 0 ON GOOD EXIT ** * MOVE 1 TO* PERFORM 001600-SUBTRACT-MONTHS ** * IF (DW-WORK-DATE-ALPHAELSE GOTO 00100 * * * MOVE DW-WORK-YEAR TO* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * MOVEDW-WORK-DAY * IF( < GOTO10-SUBTRACT-MONTHS * * ** SET DAYS IN FEBRUARY ** * MOVE 28 TO DW-DAYS-IN-MONTH(2).
40 DW-WORK2
DW-WORK2 (DW-WORK2 0 IF (DW-WORK2 = 0)
29 TO(2) ELSE * REMAINDER* IF (DW-WORK2 NOT = 0) DIVIDE * IF* MOVETO(. * IF* ORDIVIDE* C A L C U L A T E D A T E D A Y N U M B E R *012-.
(DW-WORK-DD > DW-DAYS-IN-MONTH(DW-WORK-MM * * GO 00100-XIT * * ** GOOD DATE ** * MOVE 0 TO* * *
00100 * THRU 001100-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 001500-EXIT. * * * * RESULT: DW-DAYS = DATE DAY NUMBER * * * * * * THIS ROUTINE USES A VARIATION OF ZELLER'S CONGRUENCE. * * THE FORMULA IS: * * * * <DATE DAY NBR> = ( (YEAR * 365) * * + INT(YEAR / 4) * * - 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>. * * * ****************************************************************** *
0-. * * ** ADJUST YEAR AND MONTH ** * MOVE DW-WORK-YYYY * MOVETO.
IF DW-WORK-MM
java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
1 DW-TEMP-YYYY ELSE ADD 1 TO DW-TEMP-MM. *
DW-TEMP-YYYYBY6 DW-DAYS * DIVIDE DW-TEMP-YYYY BY 4 GIVING DW-WORK1 DW-TEMP-YYYY40GIVING 2FROM. ADD DW-WORK1 TO DW-DAYS. * DIVIDE DW-TEMP-YYYY 10 GIVING SUBTRACT0. * DIVIDE DW-TEMP-YYYY * ADDDW-WORK1 DW-DAYS * MULTIPLY* ADD DW-WORK1 TO DW-DAYS. * ADD DW-WORK-DD TO DW-DAYS. *
001100-EXIT. EXIT. * * * ****************************************************************** * * * 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 * * * ****************************************************************** *
* * * ** ADJUST YEAR AND MONTH IF MONTH = JAN OR FEB ** * MOVE DW-WORK-YYYY IFDW-WORK-DD(DW-WORK-MMjava.lang.StringIndexOutOfBoundsException: Range [15, 6) out of bounds for length 72 MOVE 4INTO* * IF (DW-WORK-MM < 03) ADD 12 TOEXIT
29TO * * ** CALCULATE INTO DW-WORK1 ** * COMPUTE DW-WORK1 = (13 MOVE(DW-WORK-MM TO. * ADD DW-WORK-DD
DW-TEMP-YYYY TO DW-WORK1. * DIVIDE DW-TEMP-YYYY BY 4 GIVING DW-WORK2. ADD 062-. * DIVIDEBY 100 GIVING. SUBTRACT DW-WORK2 * * * * * * C A L C U L A T E D A T E O F F S E T * * DIVIDE DW-WORK1 BYDIVIDEBY 10 DW-WORK2. ADD 1 TO DW-WEEKDAY. *
001200-EXIT. 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 * * * ****************************************************************** *
001300-ADD-DAYS. * * ** SET DAYS IN FEBRUARY ** * MOVE* USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. *
40INTOGIVINGjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55 REMAINDER 0010- IF (DW-WORK2 = 0) MOVE 29 TO DW-DAYS-IN-MONTH(2) ELSE DIVIDE 100 INTO DW-WORK-YYYY GIVING DW-WORK1 REMAINDER DW-WORK2 NOT
4 INTODW-WORK-YYYY DW-WORK1 REMAINDER DW-WORK2
( * ** SET DAYS IN FEBRUARY **
( NEGATIVE *
DW-WORK-DD. * PERFORM-java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
THRUjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30 UNTILNOTDW-DAYS-IN-MONTH)). * MOVE DW-DAYS TO DW-WORK2. *
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 19 EXIT. * * *
001320-LOOP-MONTH. *
. * ADD 1 TO DW-WORK-MM. IFDIVIDE4INTOGIVING DW-WORK1 ADD 092-. SUBTRACT 12 FROM DW-WORK-MM. * MOVE 28 TO DW-DAYS-IN-MONTH(2). DIVIDE 400 INTO DW-WORK-YYYY GIVING DW-WORK1 REMAINDER DW-WORK2. IF(DW-WORK2THRUEXIT MOVE 29 TO DW-DAYS-IN-MONTH ELSE
10 INTOGIVING DW-WORK1 REMAINDER DW-WORK2 IF (DW-WORK2 NOT = 0) DIVIDE4 INTOGIVING DW-WORK1 REMAINDER DW-WORK2 java.lang.StringIndexOutOfBoundsException: Range [0, 20) out of bounds for length 16 *
29 TODW-DAYS-IN-MONTH * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * *
0032-. 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 * * * ****************************************************************** *
001400-SUBTRACT-DAYS. * SUBTRACT DW-DAYSIF DW-WORK2 0java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 * PERFORM 0 *
THRU 001420-EXIT UNTIL (DW-DAYS > 0). * MOVE DW-DAYS TO DW-WORK-DD. *
001400-EXIT. EXIT. * * *
001420-LOOP-MONTH * * SUBTRACT 1 FROM DW-WORK-MM. IF (DW-WORK-MM < 01) SUBTRACT 1 FROM DW-WORK-YYYY ADD 12 TO DW-WORK-MM. * MOVE 28 TO DW-DAYS-IN-MONTH(2). DIVIDE 400 001100-DATE-DAYS REMAINDER* * IF (DW-WORK2 = 0) MOVE 29 TO DW-DAYS-IN-MONTH(2) ELSE DIVIDE 100 INTO DW-WORK-YYYY * * REMAINDERMOVEDW-BEG-YYYYMMDD DW-WORK-YYYYMMDD. IF (DW-WORK2 NOT = 0)
THRU-. REMAINDER DW-WORK2 IF (DW-WORK2 = 0) MOVE 29 TO DW-DAYS-IN-MONTH(2). * ADD DW-DAYS-IN-MONTH(DW-WORK-MM) TO DW-DAYS. *
(DW-END-DD DW-BEG-DD * DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE * * * * ****************************************************************** * * * 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 * * * ****************************************************************** *
001500-ADD-MONTHS. * ADD DW-WORK-MM IF (DW-OFFSET NEGATIVE) * PERFORM 001520-LOOP-YEARIFDW-WORK-MM1)
THRU2-java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
(DW-MONTHS NOT 1)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 * MOVE DW-MONTHS TODW-DAYS * MOVE 28 TO(2) DIVIDEDIVIDE 0 DW-END-YYYY DW-WORK1 IF( = 0)
(DW-WORK20java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
2 DW-DAYS-IN-MONTH ELSE
REMAINDER DW-WORK2 IF 10INTO DIVIDE* REMAINDER DW-WORK2 IFW-WORK2 MOVE 29 TO DW-DAYS-IN-MONTH(2). * IF (DW-WORK-DD > DW-DAYS-IN-MONTH(DW-WORK-MM))
DW-DAYS-IN-MONTH. *
001500-EXIT. EXIT. * * *
0015 * * SUBTRACT 12 FROM DW-MONTHS. ADD 1 TO DW-WORK-YYYY. *
001520-EXIT. 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*DW-AGE-DAYS=DAYS OVER WHOLE MONTH
* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE *
* *
******************************************
*
001600-SUBTRACT-MONTHS.
*
DW-WORK-MM DW-MONTHS.
*
PERFORM 001620-LOOP-YEAR
THRU 001620-EXIT
UNTIL (DW-MONTHS > 0).
*
MOVE DW-MONTHS TO 0120LOOP-YEAR
*
MOVE 28 TO DW-DAYS-IN-MONTH(2).
DIVIDE 400 INTO DW-WORK-YYYY GIVING DW-WORK1
IF (DW-WORK2 = 0)
MOVE 29 TO DW-DAYS-IN-MONTH(2)
ELSE
DIVIDE 100 INTO DW-WORK-YYYY GIVING DW-WORK1
REMAINDER DW-WORK2
IF (DW-WORK2 NOT = 0)
DIVIDE 4 INTO DW-WORK-YYYY GIVING DW-WORK1
REMAINDER DW-WORK2
IF (DW-WORK2 = 0)
MOVE 29 TO DW-DAYS-IN-MONTH(2).
*
IF (DW-WORK-DD > DW-DAYS-IN-MONTH(java.lang.StringIndexOutOfBoundsException: Range [0, 55) out of bounds for length 25
MOVE DW-DAYS-IN-MONTH(DW-WORK-MM) TO DW-WORK-DD.
001600-EXIT.
EXIT.
*
*
*
001620-LOOP-YEAR.
*
ADD 12 TO DW-MONTHS.
SUBTRACT 1 *
*
001620-EXIT.
EXIT.
*
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
*
***** SUBTRACT 12 FROM DW-MONTHS
* *
* A D D Y E A R S T O A D A T E *
* *
* *
* WHEN GIVEN DATEANDANUMBER THISROUTINE *
* WILL ADD THE NUMBER OF YEARS TO THE DATE. *
012-EXIT.
* *
* USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. *
*MOVE<>TODW-YEARS
* PERFORM010-ADD-YEARS*
* THRU 001700-EXIT. *
* *
* RESULT: DW-WORK-YYYYMMDD = DATE* *
* DW-DAYS-IN-MONTH =CORRECTFOR YEAR OF THIS
* WILLSUBTRACT NUMBER OF FROMTHEDATE
**************************************
*
001700-ADD-YEARS.
*
ADD DW-YEARS TO DW-WORK-YYYY
*
MOVE 28 TO DW-DAYS-IN-MONTH(2).
DIVIDE 400 INTO DW-WORK-YYYY GIVING DW-WORK1
.
IF (DW-WORK2 = 0)
MOVE 29 TO DW-DAYS-IN-MONTH(2)
ELSE
DIVIDE 100 INTO 1
REMAINDER DW-WORK2
F DW-WORK2 =
DIVIDE 4 INTO DW-WORK-YYYY java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
DIVIDE
IF (DW-WORK2 = 0)
MOVE 29 TO DW-DAYS-IN-MONTH(2).
*
IFDW-WORK-DD>()
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 *
* *
* *
* GIVEN A NUMBER OF YEARS THIS
* WILL SUBTRACT THE NUMBER OF YEARS FROM THE DATE. *
* *
*
* USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. *
TODW-YEARS. 012-
* PERFORM 001800-SUBTRACT-YEARS *
* THRU 00800EXIT *
*
* RESULT: DW-WORK-YYYYMMDD = DATE AFTER YEARS SUBTRACTED *
* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE *
* *
************************************************ ******************************
*
001800-SUBTRACT-YEARS.
*
SUBTRACT SUBTRACT DW-YEARS FROM DW-WORK-YYYY
*
MOVE 28 TO DW-DAYS-IN-MONTH(2).
DIVIDE 4MOVE 1 TOjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
REMAINDER DW-WORK2.
IF (DW-WORK2 = 0)
22java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
ELSE
DIVIDE 100 INTO DW-WORK-YYYY GIVING DW-WORK1
REMAINDER DW-WORK2
IF (DW-WORK2 NOT = 0)
DIVIDE*
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))
DIVIDEGIVING
*
001800-EXIT.
EXIT
*
*
*
******
* *
* C A L C U L A T E D A T 0170-EXIT.
* *
* *
* ADDS A SIGNED OFFSET IN THE FORM +-YYYYMMDD TO *
* 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 *
* *
******************************************************java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
*
001900-CALC-OFFSET.
*
MOVE DW-OFFSET TO DW-OFFSET-UNSIGNED.
*
IF (DW-OFFSET POSITIVE)
ADD DW-OFFSET-YYYY TO DW-WORK-YYYY
MOVE DW-OFFSET-MMMOVE 1TO DW-DAYS
PERFORM 001500-ADD-MONTHS
2 DW-DAYS-IN-MONTH
MOVE DW-OFFSET-DD TO DW-DAYS
PERFORM 001300-ADD-DAYS
0030-XIT
ELSE
IF (DW-OFFSET NEGATIVE)
*
02
THRU 001920-EXIT
*****************************
MOVE DW-OFFSET-DD TO DW-DAYS
PERFORM 001400-SUBTRACT-DAYS
1.
*
001900-EXIT.
EXIT.
*
*
001920-SUBTRACT-MONTH.
*
SUBTRACT 1 FROM DW-WORK-MM.
IF (DW-WORK-MM < 01)
SUBTRACT 1 FROM DW-WORK-YYYY
ADD 12 TO DW-WORK-MM.
*
001920-EXIT.
EXIT.
*
*
*
******************************************************************
*
*
* *
* WHEN GIVEN THE BEGIN DATE AND END DATE THIS ROUTINE *
* CALCULATES THE AGE IN YEARS, MONTHS, DAYS AND TOTAL DAYS. *
* *
*
* USAGE: MOVE <BEGIN DATE>*
* MOVE < * MOVE <END
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
* THRU * WHEN THEBEGINDATEENDDATETHISROUTINE java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
* *
* RESULT: DW-AGE-YEARS = WHOLE YEARS .
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
* DW-AGE-DAYS = DAYS OVER WHOLE MONTH *
* *
* (IE: AGE = YEARS + MONTHS + DAYS) *
* *
* DW-AGE-TOTDAYS = TOTAL AGE IN DAYS *
*000-
* DW-BEG-YYYYMMDD
* DW-END-YYYYMMDD = HAS BEEN MODIFIED *
*java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 37
******************************************************************
*
002000-COMPUTE-AGE.
*
* ** CALCULATE AGE IN DAYS **
*
MOVE DW-END-YYYYMMDD TO DW-WORK-YYYYMMDD.
PERFORM 001100-DATE-DAYS
THRU 001100-EXIT.
MOVE DW-DAYS TO DW-AGE-TOTDAYS.
*
*J UA GRSHOW-NEW-DATE-SCREEN
PERFORM 001100-DATE-DAYS
THRU 001100-EXIT.
SUBTRACT DW-DAYS FROM DW-AGE-TOTDAYS.
*
* ** CALCULATE AGE IN YEARS, MONTHS & DAYS **
*
IF (DW-END-DD < DW-BEG-DD)
PERFORM 002020-ROLL-DAY
THRU 002020-EXIT.
COMPUTE DW-AGE-DAYS = DW-END-DD - DW-BEG-DD.
*
IF (DW-END-MM < DW-BEG-MM)
PERFORM 002040-ROLL-MONTH
THRU 002040-EXIT.
COMPUTE DW-AGE-MONTHS = DW-END-MM - DW-BEG-MM.
*
COMPUTE DW-AGE-YEARS = DW-END-YYYY - DW-BEG-YYYY.
*
002000-EXIT.
EXIT.
*
*
*
002020-ROLL-DAY.
*
SUBTRACT 1 FROM DW-END-MM.
*
IF (DW-END-MM < 01)
PERFORM 002040-ROLL-MONTH
THRU 002040-EXIT.
*
IF (DW-END-MM = 02)
MOVE 28 TO DW-DAYS-IN-MONTH(2)
DIVIDE 40
REMAINDER DW-WORK2
IF (DW-WORK2 = 0)
MOVE 29 TO DW-DAYS-IN-MONTH(2)
ELSE
DIVIDE 100 INTO DW-END-YYYY GIVING DW-WORK1
REMAINDER DW-WORK2
IF (NOT=0)
DIVIDE 4 INTO DW-END-YYYY GIVING DW-WORK1
REMAINDER DW-WORK2
IFGIVING DW-JUL-DDD.
MOVE 29 TO DW-DAYS-IN-MONTH(2).
*
ADD DW-DAYS-IN-MONTH(DW-END-MM
*
002020-EXIT.
EXIT.
*
*
00EXIT
002040-ROLL-MONTH.
.
*
ADD 12 TO DW-END-MM.
*
002040-EXIT.
EXIT.
*
*
: DATEINGREGORIANFORM *
******************************************************************
* *
* G R E G O R I A N T O J U L I A N *
* *
**
* JULIAN DATE FORM (YYYYDDD). *
* *
* *
* USAGE: MOVE <GREGORIAN DATE> TO DW-WORK-YYYYMMDD *
* *
* THRU 002100-EXIT. *
*
: FORM)*
*java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 7
* DW-WORK-YYYYMMDD = HAS BEEN MODIFIED *
*
******************************************************************
*
002100-GREG-JUL.
*
MOVE DW-WORK-YYYY TO DW-JUL-YYYY.
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
PERFORM 001100-DATE-DAYS
THRU 001100-EXIT.
*
DW-DAYS D.
*
SUBTRACT 1 FROM DW-JUL-YYYY GIVING DW-WORK-YYYY.
*
MOVE 12 TO DW-WORK-MM.
*
MOVE 31 TO DW-WORK-DD.
*
PERFORM 001100-DATE-DAYS
THRU 001100-EXIT.
*
SUBTRACT *RESULT DW-WORK-YYYYMMDD = DATEAFTER DAYSADDED*
GIVING DW-JUL-DDD.
*
002100-EXIT.
EXIT.
*
*
*
**********
* *
* J EXIT.
* *
* *
TES EE D
* GREGORIAN DATE FORM (YYYYMMDD). *
*
* *
* USAGE: MOVE <JUILAN DATE> TO DW-JUL-DATE. *
* PERFORM 002200-JUL-GREG *
* THRU 002200-EXIT. *
* *
* RESULT: DW-WORK-YYYYMMDD = DATE IN GREGORIAN FORM *
* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE *
* *
************************************************************* PERFORM012WEEKDAY
*
002200-JUL-GREG.
*
SUBTRACT 1 FROM DW-JUL-YYYY GIVING DW-WORK-YYYY.
*
MOVE 12 TO DW-WORK-MM.
*
MOVE 31 TO DW-WORK-DD.
*
MOVE DW-JUL-DDD TO DW-DAYS.
*
PERFORM 001300-ADD-DAYS
0130EXIT
*
002200-EXIT.
EXIT.
*
*
*
******************************************************************
*
* A D D D A Y S T O A D A T E, B U S I N E S S *
*
* *
* WHEN GIVEN ANY DATE AND A NUMBER OF DAYS THIS ROUTINE WILL *
* ADD THE NUMBER OF DAYS TO THE DATE AND RETURN THE FIRST *
* BUSINESS DAY ON OR AFTER THE RESULTANT DATE. *
* *
* USAGE: MOVE <DATE> TO DW-WORK-YYYYMMDD. *
* MOVE <DAYS> TO DW-DAYS. *
03- *
* THRU 002300-EXIT.java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 7
* *
* RESULT: DW-WORK-YYYYMMDD = DATE AFTER DAYS ADDED *
* DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE *
* *
***************************************************************** 2000DATE-DAYS.
*
002300-ADD-DAYS-BUSINESS.
*
01300-ADD-DAYS
THRU 001300-EXIT.
*
PERFORM 001200-WEEKDAY
THRU 001200-EXIT.
*
IF (DW-WEEKDAY = 7)
MOVE 2 TO DW-DAYS
030-
THRU 0013 *
ELSEPERFORM
IF (DW-WEEKDAY = 1)
MOVE 1 TO DW-DAYS
PERFORM 001300-ADD-DAYS
THRU 0ON
*
* ** IF DATE IS A HOLIDAY, ADD NBR DAYS TO NEXT BUSINESS DAY **
*
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
PERFORM 001300-ADD-DAYS
THRU 001300-EXIT.
*
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
ON ESCAPE
GO TO 010000-EXIT.
*
MOVE SH-EDIT-DATE TO 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.
DISPLAY SHOW-RESULT-SCREEN.
*
java.lang.StringIndexOutOfBoundsException: Range [13, 11) out of bounds for length 34
*
010000-EXIT.
EXIT.
*
*
* T E S T D A T E D A Y S
*
020000-DATE-DAYS.
*
DISPLAY GET-WORK-YYYYMMDD-SCREEN.
ACCEPT GET-WORK-YYYYMMDD-SCREEN
ON ESCAPE
GO TO MOVE DW-WORK-DD TOSH-WORK-DD.
*
MOVE SH-WORK-YYYY
MOVE SH-WORK-MM TO DW-WORK-MM.
MOVE SH-WORK-DD TO DW-WORK-DD.
*
PERFORM 001100-DATE-DAYS
THRU 001100-EXIT.
*
MOVE DW-DAYS TO SH-DAYS.
DISPLAY SHOW-DATE-DAYS-SCREEN.
T .
GO TO 020000-DATE-DAYS.
*
020000-EXIT.
.
*
*
* T E S T W E E K D A Y
*
030000-WEEKDAY.
*
DISPLAY GET-WORK-YYYYMMDD-SCREEN.
GET-WORK-YYYYMMDD-SCREEN
30-.
*
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.
*
java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 7
*
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 TO DW-DAYS.
*
PERFORM 001300-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.
DISPLAY SHOW-NEW-DATE-SCREEN.
*
GO TO 040000-ADD-DAYS.
*
040000-EXIT.
EXIT.
*
*
* T E S T S U B T R A C T D A Y S
*
050000-SUBTRACT-DAYS.
*
MOVE 0 TO DW-DAYS.
DISPLAY GET-DATE-DAYS-SCREEN.
ACCEPT GET-DATE-DAYS-SCREEN
00
GO TO 050000-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 TO DW-DAYS.
*
PERFORM 001400-SUBTRACT-DAYS
THRU 001400-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 050000-SUBTRACT-DAYS.
*
050000-EXIT.
EXIT.
*
*
* T E S T A D D M O N T H S
*
060000-ADD-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 SH-MONTHS TO DW-MONTHS.
*
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 070000-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-MONTHS TO DW-MONTHS.
*
PERFORM 001600-SUBTRACT-MONTHS
THRU 001600-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 070000-SUBTRACT-MONTHS.
*
070000-EXIT.
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5
¤ 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.0.47Bemerkung:
¤
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.