Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Cobol/verschiedene-Autoren/Judson-McClendon/   (Columbo Version 0.7©)  Datei vom 4.1.2008 mit Größe 69 kB image not shown  

Bilddatei date.cbl   Sprache: Cobol

 
                00-java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
      *
       PROGRAM-ID  ())
      *
       DATE-WRITTEN                TO0EXITELSE
      *
      *    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         *
      *        *                             *
      *        *******************************
      *
       ENVIRONMENT DIVISION.
               PERFORM 050000-SUBTRACT-DAYS
       CONFIGURATION SECTION       
      *
      *                                                                *
      *
       FILE-CONTROL 00-java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
      *
       I-O-CONTROLELSE
      *
       DATA DIVISION.
      *
       FILE SECTION.
      *
       WORKING-STORAGE SECTION 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         REDEFINES                 IFDW-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           REDEFINES BYTHE
               05  DW-JUL-YYYY                 PIC                 PIC*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       REDEFINES                     PIC
               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.                                    *
           0ADD TO .
           3SUBTRACT FROM DAY>                        
 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  FILLER              PIC  9           ADDDW-WORK1 DW-DAYS
07  FILLER*                                                                
                   07  FILLER              PIC  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).
      *
       SCREENDIVIDEINTO GIVING
      *
      *
      *                      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  DIVIDE  GIVING
           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  PIC           USING
      *
      *
      *                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  LINE           PIC,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
               ON TO.
                   MOVE 1      *
                   GO TO 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
               GO TO 00100      *                                                                *
      *
           MOVE DW-WORK-YEAR   TO      *            DW-DAYS-IN-MONTH = CORRECT FOR YEAR OF THIS DATE    *
      *                                                                *
           MOVEDW-WORK-DAY
      *
IF( <      
               GO TO10-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       *
               OR           DIVIDE       *        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      *
MOVE   TO.
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-.
      *
           DIVIDE BY 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 BY       DIVIDE BY 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.                    *
            40INTO GIVINGjava.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
              UNTIL NOTDW-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.
           IFDIVIDE4INTO GIVING 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 INTO GIVING DW-WORK1
                                         REMAINDER DW-WORK2
               IF (DW-WORK2 NOT = 0)
DIVIDEINTO GIVING 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      *                                                                *
                                         REMAINDER           MOVEDW-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)
           DIVIDE               DIVIDE 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
C=74 H=99 G=87

¤ 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:  ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.