IDENTIFICATION DIVISION.
PROGRAM-ID. JULIAN.
AUTHOR. MARTIN SULLIVAN.
* THIS PROGRAM WILL CONVERT A DATE FROM THE FORMAT DD/MM/CCYY
* TO JULIAN DATE CCYYDDD
* THIS IS A SUB PROGRAM
DATE-WRITTEN. 01/12/1999
DATE-COMPILED.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-AS400.
OBJECT-COMPUTER. IBM-AS400.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WORK-DATE.
03 N-DAY PIC 9(2).
03 N-MONTH PIC 9(2).
03 N-YEAR.
05 N-CENTURY PIC 9(2).
05 N-TENS-PART PIC 9(2).
88 CENTURY-YEAR VALUE 0 .
01 SCRATCH-PAD.
03 QUOTIENT PIC 9(2).
03 LEAP PIC 9.
88 LEAP-YEAR VALUE 0.
03 MONTH-SUB PIC 9(2).
COPY DAYSINMONT.
LINKAGE SECTION.
01 DATE-STRING PIC X(8).
01 JULIAN-DATE.
03 YEAR-OUT PIC 9(4).
03 DAY-NUMBER PIC 9(3).
PROCEDURE DIVISION
USING DATE-STRING, JULIAN-DATE.
TOP-CONTROL.
PERFORM INITIALISE-VARS.
PERFORM CONVERT-DATE.
PERFORM RETURN-CONTROAL.
INITIALISE-VARS.
MOVE ZERO TO DAY-NUMBER.
MOVE 28 TO DAYS-IN-MONTH(2).
MOVE DATE-STRING TO WORK-DATE.
COPY LEAPYEAR.
CONVERT-DATE.
PERFORM LEAP-YEAR-CALCS.
PERFORM POSS-LEAP-YEAR.
PERFORM ADD-IN-DAYS VARYING MONTH-SUB
FROM 1 BY 1
UNTIL MONTH-SUB = N-MONTH.
ADD N-DAY TO DAY-NUMBER.
MOVE N-YEAR TO YEAR-OUT.
ADD-IN-DAYS.
ADD DAYS-IN-MONTH(MONTH-SUB) TO DAY-NUMBER.
RETURN-CONTROAL.
EXIT PROGRAM.
Link back to cobol page