cdc:nos2.source:nam5871:dlcnd
Table of Contents
DLCND
Table Of Contents
- [00005] PROC DLCND(COM$DATE,SEC$VALUE)
Source Code
- DLCND.txt
- *DECK DLCND
- USETEXT DLFPDEF
- USETEXT DLNOD
- USETEXT OUTCDA
- PROC DLCND(COM$DATE,SEC$VALUE);# COMPUTE NO OF DAYS DIFFERENCE IN
- SECONDS #
- *IF DEF,IMS
- #
- *1DC DLCND
- *
- * 1. PROC NAME AUTHOR DATE
- * DLCND P.C.TAM 78/01/14
- *
- * 2. FUNCTIONAL DESCRIPTION
- * COMPUTE NUMBER OF DAYS DIFFERENCE IN SECONDS
- *
- * 3. METHOD USED
- * IF COM$DATE IS EQUAL TO START DATE, RETURN ZERO.
- * IF COM$DATE IS LS START DATE, SET INIT$DATE TO
- * COM$DATE, OFF$DATE TO START DATE, NEGATIVE TO
- * TRUE, OTHERWISE SET OFF$DATE TO COM$DATE, START
- * DATE TO INT$DATE, NEGATIVE TO FALSE.
- * COMPUTE DIFFERENCE BETW OFF$DATE AND INIT$DATE IN
- * SECONDS.
- * IF NEGATIVE IS TRUE, RETURN MINUS DIFFERENCE,
- * OTHERWISE, RETURN DIFFERENCE.
- *
- * 4. ENTRY PARAMETERS
- * COM$DATE DATE TO BE COMPARED
- * IN YYMMDD FORMAT
- * SDTYYMMDD START DATE
- * IN BYY/MM/DD FORMAT
- *
- * 5. EXIT PARAMETERS
- * SEC$VALUE RESULT IN MILLISECONDS,
- * CAN BE NEGATIVE.
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * DLFPDEF DLNOD OUTCDA
- *
- * 7. ROUTINES CALLED
- * NONE
- *
- * 8. DAYFILE MESSAGES
- * NONE
- *
- #
- *ENDIF
- ITEM
- COM$DATE U, # COMPARE DATE FROM CALLING PROG #
- SEC$VALUE I, # DIFFERENCE IN SECS #
- NEGATIVE B, # RESULT PLUS/MINUS FLAG #
- SUM I, # TEMPORARY SUM VARIABLE #
- INIDD, # START POINT DAY #
- INIMM, # START POINT MONTH #
- INIYY, # START POINT YEAR #
- FINDD, # END POINT DAY #
- FINMM, # END POINT MONTH #
- FINYY, # END POINT YEAR #
- JLIMIT, # J LOOP LIMIT #
- EDLIMIT, # DAY IN MONTH LIMIT #
- I, # LOOP VARIABLE #
- J, # LOOP VARIABLE #
- TEMP1; # TEMPORARY VARIABLE #
- # ******************************************************************** #
- BEGIN
- INIYY = (C<1,1> SDTYYMMDD - O"33") * 10
- + C<2,1> SDTYYMMDD - O"33";
- FINYY = (C<0,1> COM$DATE - O"33") * 10
- + C<1,1> COM$DATE - O"33";
- INIMM = (C<4,1> SDTYYMMDD - O"33") * 10
- + C<5,1> SDTYYMMDD - O"33";
- FINMM = (C<2,1> COM$DATE - O"33") * 10
- + C<3,1> COM$DATE - O"33";
- INIDD = (C<7,1>SDTYYMMDD - O"33") * 10
- + C<8,1> SDTYYMMDD - O"33";
- FINDD = (C<4,1> COM$DATE - O"33") * 10
- + C<5,1> COM$DATE - O"33";
- IF INIYY LS 70 THEN INIYY = INIYY + 100; # ADJUST FOR CENTURY #
- IF FINYY LS 70 THEN FINYY = FINYY + 100; # ADJUST FOR CENTURY #
- IF FINYY*10000+FINMM*100+FINDD EQ INIYY*10000+INIMM*100+INIDD
- THEN
- SEC$VALUE = 0;
- ELSE
- BEGIN
- IF FINYY*10000+FINMM*100+FINDD LS INIYY*10000+INIMM*100+INIDD
- THEN
- BEGIN
- NEGATIVE = TRUE;
- TEMP1 = FINYY;
- FINYY = INIYY;
- INIYY = TEMP1;
- TEMP1 = FINMM;
- FINMM = INIMM;
- INIMM = TEMP1;
- TEMP1 = FINDD;
- FINDD = INIDD;
- INIDD = TEMP1;
- END
- ELSE
- BEGIN
- NEGATIVE = FALSE;
- END
- SUM = 0;
- JLIMIT = 12;
- #
- LOOP TO CALCULATE EACH ELAPSED YEAR
- #
- FOR I = INIYY STEP 1 UNTIL FINYY
- DO
- BEGIN
- IF I - I/4*4 EQ 0
- THEN
- NOD[2] = 29;
- ELSE
- NOD[2] = 28;
- IF I EQ FINYY
- THEN
- JLIMIT = FINMM;
- #
- LOOP TO CALCULATE ELAPSED DAYS IN EACH MONTH
- #
- FOR J = INIMM STEP 1 UNTIL JLIMIT
- DO
- BEGIN
- IF I EQ FINYY AND J EQ FINMM
- THEN
- EDLIMIT = FINDD - 1;
- ELSE
- EDLIMIT = NOD[J];
- SUM = SUM + (EDLIMIT - INIDD + 1);
- INIDD = 1;
- END
- INIMM = 1;
- END
- #
- RETURN RESULT
- #
- SUM = SUM * 86400000;
- IF NEGATIVE
- THEN
- SEC$VALUE = - SUM;
- ELSE
- SEC$VALUE = SUM;
- END
- END
- TERM
cdc/nos2.source/nam5871/dlcnd.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator