2008/05/21

REXX,예제] 일자계산

/* REXX */
START_DATE = '2008-05-19'
START_TIME = '00:05:59'
END_DATE = '2008-05-19'
END_TIME = '20:19:20'

ELAPSE_TIME = GET_ETM(START_DATE,START_TIME,END_DATE,END_TIME)
SAY '********* ' ELAPSE_TIME '*********'
EXIT

/* GETTING ELAPSE TIME */
GET_ETM:
ARG D1,T1,D2,T2
/*SAY D1 T1 D2 T2 */

D1 = SUBSTR(D1,1,4) || SUBSTR(D1,6,2) || SUBSTR(D1,9,2)
D2 = SUBSTR(D2,1,4) || SUBSTR(D2,6,2) || SUBSTR(D2,9,2)

D1_JUL = DATE('B',DATE(,D1,'S'))
D2_JUL = DATE('B',DATE(,D2,'S'))

T1_SEC = SUBSTR(T1,1,2) * 60 * 60 ,
+ SUBSTR(T1,4,2) * 60 ,
+ SUBSTR(T1,7,2)

T2_SEC = SUBSTR(T2,1,2) * 60 * 60 ,
+ SUBSTR(T2,4,2) * 60 ,
+ SUBSTR(T2,7,2) ,
+ ( ( D2_JUL - D1_JUL ) * 60 * 60 * 24 ) /* DAY */

GAP = ( T2_SEC - T1_SEC )

E_HH = TRANSLATE(FORMAT(GAP%(60*60),2),'0',' ')
E_MM = TRANSLATE(FORMAT((GAP-(E_HH*60*60))%60,2),'0',' ')
E_SS = TRANSLATE(FORMAT(GAP//60,2),'0',' ')
E_TM = E_HH':'E_MM':'E_SS

RETURN E_TM