Download presentation
Presentation is loading. Please wait.
Published byTerry Walkley Modified over 9 years ago
1
Copyright 2007, Information Builders. Slide 1 Dates and Functions Noreen Redden Information Builders, Inc
2
Copyright 2007, Information Builders. Slide 2 Types of Dates Traditional Dates Traditional Dates A6YMD, I8YYMD, A6MYY, I4MTYY Component Declaration for Editing only No Validation Default in Dialogue Manager Date Components I2Y, I4YY, Y or YY are just integers MT is a 2 digit integer with value from 1 to 12 D is a 2 digit integer with value from 1 to 31.
3
Copyright 2007, Information Builders. Slide 3 Functions and Traditional Dates Select Components -SET &MONTH = EDIT(&YYMD, ’$$$$99’); Change Order of Components -SET &DTMDY = EDIT(&YYMD, '$$$$99$$') | - EDIT(&YYMD, '$$$$$$99') | - EDIT(&YYMD, '$$99') ; -TYPE DTMDY IS &DTMDY -SET &DTMDY2 = CHGDAT('YYMD', 'MDYY',&YYMD, - 'A8MDYY'); -SET &DTMDY3 = &MDYY ;
4
Copyright 2007, Information Builders. Slide 4 Types of Dates “Smart Dates” MYY, YYMD, MTrDYY, Displacement from Base Date FOCUS displacement from 12/31/1900 (day component) or 01/1901 (month/year only) Also supports W (day of week) Q (Quarter) DEFCENT and YRTHRESH Convert from Traditional Date to/from Smart Date DEFINE/COMPUTE or ACTUAL to USAGE datefield/dateformat = traddate; traddate/A8YYMD = datefield; Use DATECVT
5
Copyright 2007, Information Builders. Slide 5 Functions and Smart Dates Select Components, Change order of Components, Convert from Traditional to/from Smart Date DATECVT(date, 'infmt', 'outfmt'[, outfield]) DEFINE FILE EMPLOYEE HIRE_DATE/YYM DEFCENT 19 YRTHRESH 50 = DATECVT(HIRE_DATE,’I6YMD’,’YYM’); END -SET &DT2 = DATECVT (100101,'I6YMD','YYM'); -SET &DT3 = DATECVT (&DT2, 'YYM', 'I8YYMD'); Subtract two Dates DATEDIF (from_date, to_date, component_code) DEFINE FILE SUPPORT DAYS/I5 = END_DT – START_DT; WORK_DAYS/I5 = DATEDIF (END_DT,START_DT,’WD’);
6
Copyright 2007, Information Builders. Slide 6 Functions and Smart Dates Add/Subtract Days/Months DATEADD(date, 'unit', #units[, outfield]) Function adds a unit to or subtracts a unit from a date format DEFINE FILE EMPLOYEE HIRE_SMT/YYMD DEFCENT 19 YRTHRESH 50 = DATECVT(HIRE_DATE,'I6YMD','YYMD'); HIRE_WK/YYMD = HIRE_SMT + 7; MONANN/YYMD = DATEADD(HIRE_SMT,'M', 6 ); END Find Last Day of a Month DATEMOV(YYMDdate, 'move-point') -SET &DT2 =DATECVT((DATEMOV( - (DATECVT (&YYMD,'I8YYMD', - 'YYMD' )),'EOM')),'YYMD','I8YYMD');
7
Date Functions Argument ValueDefinition Yyear Mmonth DDay of month WD Working Day BDExcludes Holidays BOM/EOMBeginning/End of Month BOM/EOQBeginning/End of Quarter BOY/EOYBeginning/End of Year BOW/EOWBeginning/End of Week NWD/NBDNext Business/Week Day PWD/PBDPrior Business/Week Day WD+/BD+Move forward to get to week/business day if necessary WD-/BD-Move back to get to week/business day if necessary Arguments for Use With Date Functions
8
Copyright 2007, Information Builders. Slide 8 Types of Dates Date-Time (time stamps) HMDYYS – displays 02/27/2010 11:00:05 HYYMDs – displays 2010/02/27 11:00:05.444 HYYMDSA – displays 2010/02/27 11:00:05AM Convert to Time Stamps HDTTM Convert from date field to date-time HINPUTConvert from alpha to date-time Convert from Time Stamps HCNVRTConvert to alpha format HDATEConvert date portion to YYMD
9
Copyright 2007, Information Builders. Slide 9 Functions and Time Stamps Select Components HPART – passed to relational engine in 7.7 HPART (value, component, outfield) IHOUR/I2 = HPART(JOB_TIME,'HOUR', IHOUR); Subtract 2 timestamps HDIFF (end_timestamp, start_timestamp, component, outfield) DEFINE FILE JOBS DIFSEC/I9 = HDIF(ENDTM, STTM,'SECOND', 'D9.0'); END
10
Copyright 2007, Information Builders. Slide 10 Functions and Time Stamps Incrementing Date-Time Fields HADD (timestamp, component, increment, length, outfield) DEFINE FILE JOBS NXTDUE/HYYMDS = HADD(ST_TIME), 'MONTH', 6, 8, 'HYYMDS'); END Storing the Current Date/Time as a Time Stamp HGETC(length, outfield)
11
Date-Time Functions Component Name Valid Values year 0001 ‑ 9999 quarter 1 ‑ 4 month 1 ‑ 12 day ‑ of ‑ year 1 ‑ 366 day or day ‑ of ‑ month 1 ‑ 31 week 1 ‑ 53 weekday 1 ‑ 7 (Sunday ‑ Saturday) hour 0 ‑ 23 minute 0 ‑ 59 second 0 ‑ 59 millisecond 0 ‑ 999 microsecond 0 ‑ 999999 Arguments for Use With Date and Time Functions
12
Copyright 2007, Information Builders. Slide 12 Functions Functions may be used against any field in any file, so long as proper arguments are supplied. Functions may be use anywhere an expression is allowed. IBI-supplied functions may be augmented by user-written subroutines, called by FOCUS and coded in a 3GL language. IBI-supplied functions may be augmented by user-written functions written in FOCUS language DEFINE FUNCTION name (argument1/format1,..., argumentn/formatn) [tempvariablea/formata = expressiona;]... [tempvariablex/formatx = expressionx;] name/format = [result_expression]; END
13
FOCUS Functions WORKWEEK DEFINE FUNCTION WORKWEEK (INPTDT/I8) DT1/YYMD = DATECVT(INPTDT, 'I8YYMD', 'YYMD'); DTTIME/HYYMDIA = HDTTM(DT1, 8, 'HYYMDIA'); WORKWEEK/I2 = HPART(DTTIME, 'WEEK', 'I2'); END -SET &WORKWEEK = WORKWEEK(&YYMD ); -RUN DEFINE FILE EMPLOYEE INPTDT/I8YYMD DEFCENT 19 YRTHRESH 50 = DATECVT(HIRE_DATE, 'I6YMD', 'I8YYMD'); WORKWEEK/I2 = WORKWEEK(INPTDT); END
14
Work Week PAGE 1 THE CURRENT DATE February 22, 2010 IS IN WORK WEEK 8 EMP_ID LAST_NAME HIRE_DATE WORKWEEK ------ --------- --------- -------- 071382660 STEVENS 80/06/02 22 112847612 SMITH 81/07/01 26 117593129 JONES 82/05/01 18 119265415 SMITH 82/01/04 1 119329144 BANNING 82/08/01 31 123764317 IRVING 82/01/04 1 126724188 ROMANS 82/07/01 26 219984371 MCCOY 81/07/01 26 326179357 BLACKWOOD 82/04/01 13 451123478 MCKNIGHT 82/02/02 5 543729165 GREENSPAN 82/04/01 13 818692173 CROSS 81/11/02 44
15
Handling Times AGENT1 AGENT_TALK AGENT_TALK1 TTIME TTIME1 ALLEN 200 300 00:03:20 00:05:00 BILL 300 400 00:05:00 00:06:40 CARL 620 520 00:10:20 00:08:40 DAN 400 901 00:06:40 00:15:01 --------------------------------------------------------- TOTAL 1520 2121 00:25:20 00:35:21 We Need A Report That Reads Times In Seconds, Adds Them And Converts To Hours : Minutes : Seconds
16
FILEDEF AGNT DISK C:\IBI\APPS\DATES\AGNT.FTM FILEDEF FSEQ DISK C:\IBI\APPS\DATES\FSEQ.MAS DEFINE FUNCTION HRMISC (SEC/I10) -* CALCULATE HOURS HR/I2 = SEC/3600; HR_R/I2 = SEC -(HR* 3600) ; -* CALCULATE MIN MI/I2 = (HR_R / 60); -* CALCULATE SECONDS SC_D/I2 = SEC -((MI * 60) + HR); HRMISC/A8 = EDIT(HR) || ':' || EDIT(MI) || ':' || EDIT(SC_D) ; END DEFINE FILE AGNT TTIME/A8 = HRMISC(AGENT_TALK); TTIME1/A8 = HRMISC(AGENT_TALK1); END Handling Times
17
FILEDEF AGNT DISK C:\IBI\APPS\DATES\AGNT.FTM FILEDEF FSEQ DISK C:\IBI\APPS\DATES\FSEQ.MAS DEFINE FUNCTION HRMISC (SEC/I10) -* CALCULATE HOURS HR/I2 = SEC/3600; HR_R/I2 = SEC -(HR* 3600) ; -* CALCULATE MIN MI/I2 = (HR_R / 60); -* CALCULATE SECONDS SC_D/I2 = SEC -((MI * 60) + HR); HRMISC/A8 = EDIT(HR) || ':' || EDIT(MI) || ':' || EDIT(SC_D) ; END DEFINE FILE AGNT TTIME/A8 = HRMISC(AGENT_TALK); TTIME1/A8 = HRMISC(AGENT_TALK1); END Handling Times
18
TABLE FILE AGNT PRINT AGENT_TALK NOPRINT AGENT_TALK1 NOPRINT TTIME TTIME1 COMPUTE AVER1/I9 = (AGENT_TALK + AGENT_TALK1) / 2 +.5; NOPRINT COMPUTE AVERT/A8 = HRMISC(AVER1); AS 'AVERAGE' COMPUTE CNTAGENT/I5 = 1; NOPRINT BY AGENT ON TABLE RECAP TOTTIME/A8 = HRMISC(AGENT_TALK); TOTTIME1/A8 = HRMISC(AGENT_TALK1); TOTAVER/A8 = HRMISC((AGENT_TALK + AGENT_TALK1) /2); AVETIME/A8 = HRMISC(AGENT_TALK / CNTAGENT); AVETIME1/A8 = HRMISC(AGENT_TALK1 / CNTAGENT); AVEATIME/A8 = HRMISC((AGENT_TALK + AGENT_TALK1)/CNTAGENT/2); ON TABLE SUBFOOT "</1 TOTAL <TOTTIME <TOTTIME1 <TOTAVER " "AVERAGE <AVETIME <AVETIME1 <AVEATIME" END Handling Times
19
AGENT TTIME TTIME1 AVERAGE ----- ----- ------ ------- ALLEN 00:03:20 00:05:00 00:04:10 BILL 00:05:00 00:06:40 00:05:50 CARL 00:10:20 00:08:40 00:09:30 DAN 00:06:40 00:15:01 00:10:51 TOTAL 00:25:20 00:35:21 00:30:20 AVERAGE 00:06:20 00:08:50 00:07:35
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.