Century Support Products for CA-IDMS
Julian/Gregorian Date Conversion
1) Modify your DC COBOL program using the following as an example:
*DMLIST
IDENTIFICATION DIVISION.
PROGRAM-ID. progname.
ENVIRONMENT DIVISION.
IDMS-CONTROL SECTION.
PROTOCOL. MODE IS IDMS-DC DEBUG
IDMS-RECORDS MANUAL.
DATA DIVISION.
SCHEMA SECTION.
DB userss01 WITHIN userschm.
MAP SECTION.
MAP usermap.
WORKING-STORAGE SECTION.
COPY IDMS MAP-CONTROLS.
COPY IDMS DC-AID-CONDITION-NAMES.
COPY IDMS MAP-RECORDS.
01 COPY IDMS SUBSCHEMA-CTRL.
.
.
01 200-WORKFIELDS.
05 200-DATE.
10 200-YY PIC 9(2) VALUE ZERO.
10 200-MM PIC 9(2) VALUE ZERO.
10 200-DD PIC 9(2) VALUE ZERO.
05 200-TIME.
10 200-HH PIC 9(2) VALUE ZERO.
10 200-MIN PIC 9(2) VALUE ZERO.
10 200-SS PIC 9(2) VALUE ZERO.
*
* ADD THE FOLLOWING THREE LINES IN WORKING-STORAGE
*
01 COPY IDMS HSLW9090-01.
01 COPY IDMS HSLW9090-02.
01 COPY IDMS HSLW9090-03.
LINKAGE SECTION.
PROCEDURE DIVISION.
0000-MAIN-LINE.
.
.
*
* TO REPLACE THE ILLEGAL ACCEPT DATE AND TIME COMMANDS,
* REPLACE THE ILLEGAL CODE WITH THE FOLLOWING.
*
* ACCEPT 200-DATE FROM DATE.
* ACCEPT 200-TIME FROM TIME.
PERFORM 9999-GET-DATE-TIME.
MOVE HSLE9090-01-GREG-YY-34 TO 200-YY.
MOVE HSLE9090-01-GREG-MM TO 200-MM.
MOVE HSLE9090-01-GREG-DD TO 200-DD.
MOVE HSLE9090-03-HH TO 200-HH.
MOVE HSLE9090-03-MM TO 200-MIN.
MOVE HSLE9090-03-SS TO 200-SS.
.
.
*
* INCLUDE THE FOLLOWING COPY AT THE END OF THE PROGRAM
*
COPY IDMS HSLC9090.
IDMS-ABORT.
EXIT.
COPY IDMS IDMS-STATUS.
MSEND
.
2) Add the following three records and one module to your CA-IDMS
dictionary:
ADD
RECORD NAME IS HSLW9090-01 VERSION IS 1
.
05 HSLE9090-01-GREG-DATE
USAGE IS DISPLAY
.
10 HSLE9090-01-GREG-MM
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 HSLE9090-01-GREG-DD
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 HSLE9090-01-GREG-YYYY
USAGE IS DISPLAY
.
15 HSLE9090-01-GREG-YY-12
PICTURE IS 9(2)
USAGE IS DISPLAY
.
15 HSLE9090-01-GREG-YY-34
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 HSLE9090-01-GREG-YYYY-R
REDEFINES HSLE9090-01-GREG-YYYY
PICTURE IS 9(4)
USAGE IS DISPLAY
.
05 HSLE9090-01-GREG-DATE-R
REDEFINES HSLE9090-01-GREG-DATE
PICTURE IS X(8)
USAGE IS DISPLAY
.
05 HSLE9090-01-JUL-DATE
USAGE IS DISPLAY
.
10 HSLE9090-01-JUL-YYYY
USAGE IS DISPLAY
.
15 HSLE9090-01-JUL-YY-12
PICTURE IS 9(2)
USAGE IS DISPLAY
.
15 HSLE9090-01-JUL-YY-34
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 HSLE9090-01-JUL-YYYY-R
REDEFINES HSLE9090-01-JUL-YYYY
PICTURE IS 9(4)
USAGE IS DISPLAY
.
10 HSLE9090-01-JUL-DDD
PICTURE IS 9(3)
USAGE IS DISPLAY
.
05 HSLE9090-01-JUL-DATE-R
REDEFINES HSLE9090-01-JUL-DATE
PICTURE IS X(7)
USAGE IS DISPLAY
.
05 HSLE9090-01-DAY-OF-WEEK
PICTURE IS 9
USAGE IS DISPLAY
.
88 HSLE9090-01-DOW-MONDAY
USAGE IS CONDITION-NAME
.
05 HSLE9090-01-FIRST-DAY-OF-YEAR
PICTURE IS S9
USAGE IS DISPLAY
.
88 HSLE9090-01-FDOY-MONDAY
USAGE IS CONDITION-NAME
VALUE IS ( 1 )
.
05 HSLE9090-01-RETURN-CODE
PICTURE IS 99
USAGE IS DISPLAY
.
05 HSLE9090-01-MONTH-LITERAL
PICTURE IS X(9)
USAGE IS DISPLAY
.
05 HSLE9090-01-END
PICTURE IS X
USAGE IS DISPLAY
.
ADD
RECORD NAME IS HSLW9090-02 VERSION IS 1
.
05 HSLE9090-02-START-YEAR
PICTURE IS 9(4)
USAGE IS DISPLAY
VALUE IS ( 1985 )
.
05 HSLE9090-02-START-YEAR-R
REDEFINES HSLE9090-02-START-YEAR
USAGE IS DISPLAY
.
10 HSLE9090-02-START-YY-12
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 HSLE9090-02-START-YY-34
PICTURE IS 9(2)
USAGE IS DISPLAY
.
05 HSLE9090-02-START-COUNTER
PICTURE IS 9
USAGE IS DISPLAY
VALUE IS ( 1 )
.
05 HSLE9090-02-TARGET-YEAR
PICTURE IS 9(4)
USAGE IS DISPLAY
.
05 HSLE9090-02-YEAR-JUNK
USAGE IS DISPLAY
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 JANUARY' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '28 FEBRUARY' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 MARCH' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '30 APRIL' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 MAY' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '30 JUNE' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 JULY' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 AUGUST' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '30SEPTEMBER' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 OCTOBER' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '30 NOVEMBER' )
.
10 FILLER
PICTURE IS X(11)
USAGE IS DISPLAY
VALUE IS ( '31 DECEMBER' )
.
05 HSLE9090-02-YEAR-JUNK-R
REDEFINES HSLE9090-02-YEAR-JUNK
USAGE IS DISPLAY
.
10 HSLE9090-02-DAYS-MONTH
USAGE IS DISPLAY
OCCURS 12 TIMES
.
15 HSLE9090-02-DAYS-IN-MONTH
PICTURE IS 99
USAGE IS DISPLAY
.
15 HSLE9090-02-MONTH-DESC
PICTURE IS X(9)
USAGE IS DISPLAY
.
05 HSLE9090-02-SS
PICTURE IS 99
USAGE IS DISPLAY
.
05 HSLE9090-02-TEMP-DDD
PICTURE IS 999
USAGE IS DISPLAY
.
05 HSLE9090-02-END
PICTURE IS X
USAGE IS DISPLAY
.
ADD
RECORD NAME IS HSLW9090-03 VERSION IS 1
.
05 HSLE9090-03-TIME
USAGE IS DISPLAY
.
10 HSLE9090-03-HH
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 FILLER
PICTURE IS X
USAGE IS DISPLAY
.
10 HSLE9090-03-MM
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 FILLER
PICTURE IS X
USAGE IS DISPLAY
.
10 HSLE9090-03-SS
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 FILLER
PICTURE IS X(3)
USAGE IS DISPLAY
.
05 HSLE9090-03-DATE-COMP-3
PICTURE IS S9(7)
USAGE IS COMP-3
.
05 HSLE9090-03-DATE-DISPLAY
PICTURE IS 9(7)
USAGE IS DISPLAY
.
05 HSLE9090-03-DATE-DISPLAY-R
REDEFINES HSLE9090-03-DATE-DISPLAY
USAGE IS DISPLAY
.
10 FILLER
PICTURE IS X(2)
USAGE IS DISPLAY
.
10 HSLE9090-03-YY
PICTURE IS 9(2)
USAGE IS DISPLAY
.
10 HSLE9090-03-DDD
PICTURE IS 9(3)
USAGE IS DISPLAY
.
05 HSLE9090-03-END
PICTURE IS X
USAGE IS DISPLAY
.
ADD
MODULE NAME IS HSLC9090 VERSION IS 1
PUBLIC ACCESS IS ALLOWED FOR ALL
MODULE SOURCE FOLLOWS
*
* ! *********************************************************
* ! * *
* ! * ***** N O T I C E ***** *
* ! * *
* ! * THIS ROUTINE IS PROVIDED AS FREEWARE BY: *
* ! * *
* ! * HYBRID SYSTEMS LTD., INC. *
* ! * 200 UNIVERSITY PARK DRIVE *
* ! * SUITE 250 *
* ! * EDWARDSVILLE, IL 62025-3636 *
* ! * 618-692-4757 *
* ! * 800-779-2802 *
* ! * *
* ! * CONDITIONS OF ITS USE ARE AS FOLLOWS: *
* ! * *
* ! * 1) USER AGREES NOT TO REMOVE THIS NOTICE OF *
* ! * ORIGIN AND LIMITATION OF WARRANTY FROM THE *
* ! * SOFTWARE *
* ! * 2) THE SOFTWARE SHALL NOT BE RE-PACKAGED AND SOLD *
* ! * 3) USER AGREES TO ASSUME THE ENTIRE RISK OF USING *
* ! * THE SOFTWARE. HSL IS NOT RESPONSIBLE FOR ERRORS *
* ! * OR OMISSIONS IN THE SOFTWARE. NO WARRANTIES, *
* ! * WHETHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT *
* ! * LIMITATION, THE IMPLIED WARRANTIES OF *
* ! * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR *
* ! * PURPOSE, ARE MADE BY HSL. IN NO EVENT WILL HSL *
* ! * BE LIABLE TO ANY PARTY FOR ANY LOSS, INCLUDING *
* ! * TIME, MONEY, GOODWILL AND CONSEQUENTIAL DAMAGES, *
* ! * WHICH MAY ARISE FROM THE USE, OPERATION OR *
* ! * MODIFICATION OF THE SOFTWARE ENHANCEMENTS OR *
* ! * ROUTINES, OR MATERIAL, INFORMATION, CONCLUSIONS, *
* ! * TECHNIQUES OR PROCEDURES PROVIDED HEREIN. *
* ! * *
* ! * ***** N O T I C E ***** *
* ! * *
* ! *********************************************************
*
9999-GET-DATE-TIME.
GET TIME INTO HSLE9090-03-TIME EDIT
DATE INTO HSLE9090-03-DATE-COMP-3.
MOVE HSLE9090-03-DATE-COMP-3 TO HSLE9090-03-DATE-DISPLAY.
MOVE SPACE TO HSLE9090-01-GREG-DATE.
MOVE HSLE9090-03-YY TO HSLE9090-01-JUL-YY-34.
IF (HSLE9090-03-YY IS GREATER THAN 90)
MOVE 19 TO HSLE9090-01-JUL-YY-12
ELSE
MOVE 20 TO HSLE9090-01-JUL-YY-12.
MOVE HSLE9090-03-DDD TO HSLE9090-01-JUL-DDD.
PERFORM 9999-VALIDATE-DATE THRU 9999-VALIDATE-DATE-EXIT.
IF (HSLE9090-01-RETURN-CODE IS NOT EQUAL TO ZERO)
GO TO 9999-DATE-ABORT.
9999-VALIDATE-DATE.
MOVE ZERO TO HSLE9090-01-DAY-OF-WEEK
HSLE9090-01-FIRST-DAY-OF-YEAR
HSLE9090-01-RETURN-CODE.
MOVE SPACE TO HSLE9090-01-MONTH-LITERAL.
MOVE 1985 TO HSLE9090-02-START-YEAR.
MOVE 1 TO HSLE9090-02-START-COUNTER.
MOVE ZERO TO HSLE9090-02-TARGET-YEAR
HSLE9090-02-SS
HSLE9090-02-TEMP-DDD.
IF (HSLE9090-01-JUL-DATE-R IS NOT NUMERIC)
MOVE 1 TO HSLE9090-01-RETURN-CODE
GO TO 9999-VALIDATE-DATE-EXIT.
MOVE HSLE9090-01-JUL-YYYY
TO HSLE9090-02-TARGET-YEAR.
MOVE HSLE9090-01-JUL-YYYY TO HSLE9090-01-GREG-YYYY
MOVE 2 TO HSLE9090-01-FIRST-DAY-OF-YEAR.
PERFORM 9999-INCREMENT-YEAR
UNTIL (HSLE9090-02-TARGET-YEAR IS EQUAL TO
HSLE9090-02-START-YEAR).
IF (HSLE9090-02-START-COUNTER IS EQUAL TO 4)
MOVE 29 TO HSLE9090-02-DAYS-IN-MONTH (2).
MOVE 1 TO HSLE9090-02-SS.
MOVE HSLE9090-01-JUL-DDD TO HSLE9090-02-TEMP-DDD.
PERFORM 9999-SUBTRACT-DAYS
UNTIL (HSLE9090-02-DAYS-IN-MONTH (HSLE9090-02-SS)
IS NOT LESS THAN HSLE9090-02-TEMP-DDD) OR
(HSLE9090-02-SS IS NOT LESS THAN 12).
IF (HSLE9090-02-SS IS EQUAL TO 12) AND
(HSLE9090-02-DAYS-IN-MONTH (12) IS LESS THAN
HSLE9090-02-TEMP-DDD)
MOVE 2 TO HSLE9090-01-RETURN-CODE
GO TO 9999-VALIDATE-DATE-EXIT
ELSE
MOVE HSLE9090-02-SS TO HSLE9090-01-GREG-MM
MOVE HSLE9090-02-TEMP-DDD TO HSLE9090-01-GREG-DD
MOVE HSLE9090-02-MONTH-DESC (HSLE9090-01-GREG-MM)
TO HSLE9090-01-MONTH-LITERAL
MOVE HSLE9090-01-JUL-DDD TO HSLE9090-02-TEMP-DDD
ADD HSLE9090-01-FIRST-DAY-OF-YEAR
TO HSLE9090-02-TEMP-DDD
SUBTRACT 1 FROM HSLE9090-02-TEMP-DDD
PERFORM 9999-SUBTRACT-7
UNTIL (HSLE9090-02-TEMP-DDD IS NOT GREATER THAN 7)
MOVE HSLE9090-02-TEMP-DDD TO HSLE9090-01-DAY-OF-WEEK.
9999-VALIDATE-DATE-EXIT.
EXIT.
9999-INCREMENT-YEAR.
ADD 1 TO HSLE9090-02-START-YEAR.
IF (HSLE9090-02-START-COUNTER IS NOT EQUAL TO 4)
ADD 1 TO HSLE9090-01-FIRST-DAY-OF-YEAR
ELSE
ADD 2 TO HSLE9090-01-FIRST-DAY-OF-YEAR.
IF (HSLE9090-01-FIRST-DAY-OF-YEAR IS GREATER THAN 7)
SUBTRACT 7 FROM HSLE9090-01-FIRST-DAY-OF-YEAR.
ADD 1 TO HSLE9090-02-START-COUNTER.
IF (HSLE9090-02-START-COUNTER IS EQUAL TO 5)
MOVE 1 TO HSLE9090-02-START-COUNTER.
9999-SUBTRACT-7.
SUBTRACT 7 FROM HSLE9090-02-TEMP-DDD.
9999-SUBTRACT-DAYS.
SUBTRACT HSLE9090-02-DAYS-IN-MONTH (HSLE9090-02-SS)
FROM HSLE9090-02-TEMP-DDD.
ADD 1 TO HSLE9090-02-SS.
9999-DATE-ABORT.
SNAP FROM HSLW9090-01 TO HSLE9090-01-END.
SNAP FROM HSLW9090-02 TO HSLE9090-02-END.
SNAP FROM HSLW9090-03 TO HSLE9090-03-END.
MOVE 'HSL' TO ERROR-STATUS.
PERFORM IDMS-STATUS.
MSEND
.
Back to Project 2000.
Back to HSL.

Hybrid Systems Ltd., Inc.
200 University Park Drive
Edwardsville, IL 62025
US 1-800-779-2802
Outside US 1-618-692-4757
E-mail: HSL