Focal Point
[SOLVED] How to get business days?

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/1717081976

November 03, 2015, 07:59 AM
Ricardo Augusto
[SOLVED] How to get business days?
Hi,

I need to print current business days on some reports but it´s showing wrong values.

-* File: IBFS:/localhost/EDA/EDASERVE/APPPATH/vesir21815/Procedure1.fex Created by WebFOCUS AppStudio
-DEFAULT &WEEK_DAY= 'XX';

SET BUSDAYS = _MTWTF_


-RUN

-***************************************************
-* REMOVE THIS BEFORE GOING TO PRODUCTION
-* THIS IS A TEST TO COMPARE VALUES FROM USER´S REPORT
-***************************************************
-SET &MONTH_YYMD = '20150502';

-SET &WEEEK_DAY = DOWK('&MONTH_YYMD.EVAL', 'A4');


-****************************************
-* GET FIRST DAY OF THE CURRENT MONTH
-****************************************

-SET &START_MONTH = DATECVT( DATEMOV(DATECVT(&MONTH_YYMD,'I8YYMD','YYMD'),'BOM'),'YYMD','I8YYMD');


-****************************************
-* GET LAST DAY OF THE CURRENT MONTH
-****************************************

-SET &END_MONTH = DATECVT( DATEMOV(DATECVT(&MONTH_YYMD,'I8YYMD','YYMD'),'EOM'),'YYMD','I8YYMD');


-****************************************
-* GET WORKING DAYS FROM 1ST DAY TO TODAY
-****************************************

-SET &CURRENT_WORKING_DAYS = DATEDIF(&START_MONTH, &MONTH_YYMD , 'BD');


-****************************************
-* GET WORKING DAYS FROM CURRENT MONTH
-****************************************
-SET &WORKING_DAYS = DATEDIF(&START_MONTH, &END_MONTH, 'BD');

-TYPE START: &START_MONTH END: &END_MONTH CURRENT_WD: &CURRENT_WORKING_DAYS TOTAL_WD: &WORKING_DAYS WEEKDAY: &WEEEK_DAY
-EXIT


reply: START: 20150501 END: 20150531 CURRENT_WD: 1 TOTAL_WD: 22 WEEKDAY: SAT

It was supposed to show:
CURRENT_WD = 0 (cause 20150501 was a holliday and 20150502 is Saturday).
TOTAL_WD = 20

Can anyone help me how to manipulate BUSDAYS?

Thanks

This message has been edited. Last edited by: Ricardo Augusto,


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 08:03 AM
Ricardo Augusto
http://infocenter.informationb...source%2Ftopic85.htm


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 08:20 AM
Tom Flynn
You are missing the MAIN piece, the Holiday file; click on DATEDIF and read about Business Days...

I also would not use Dialogue Manager(nothing but text strings); put into a DEFINE or COMPUTE.

This link should help...

This message has been edited. Last edited by: Tom Flynn,


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
November 03, 2015, 08:31 AM
Ricardo Augusto
Ok. It needs a HDAY file.


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 09:41 AM
Ricardo Augusto
Now it seems to be ok.

DEFINE FILE CAR
TODAY/YYMD= '&MONTH_YYMD.EVAL';
START_CURRENT_MONTH/YYMD = DATECVT( DATEMOV(DATECVT(&MONTH_YYMD,'I8YYMD','YYMD'),'BOM'),'YYMD','I8YYMD');
END_CURRENT_MONTH/YYMD = DATECVT( DATEMOV(DATECVT(&MONTH_YYMD,'I8YYMD','YYMD'),'EOM'),'YYMD','I8YYMD');
CURRENT_WORKING_DAYS/I4 = DATEDIF(START_CURRENT_MONTH, TODAY, 'BD');
TOTAL_WORKING_DAYS/I4 = DATEDIF(START_CURRENT_MONTH, END_CURRENT_MONTH, 'BD');

END

TABLE FILE CAR
PRINT TODAY START_CURRENT_MONTH END_CURRENT_MONTH CURRENT_WORKING_DAYS TOTAL_WORKING_DAYS
BY COUNTRY NOPRINT
WHERE RECORDLIMIT EQ 1
END



-EXIT

This message has been edited. Last edited by: Ricardo Augusto,


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 10:40 AM
Ricardo Augusto
This logic is not good.

-* File: IBFS:/localhost/EDA/EDASERVE/APPPATH/vesir21815/Procedure1.fex Created by WebFOCUS AppStudio


SET BUSDAYS = _MTWTF_
SET HDAY=BRZ


-***************************************************
-* REMOVE THIS BEFORE GOING TO PRODUCTION
-* THIS IS A TEST TO COMPARE VALUES FROM USER´S REPORT
-***************************************************
-SET &MONTH_YYMD = '20150101';


DEFINE FILE CAR

-***************
-* CURRENT MONTH
-***************
TODAY/YYMD= '&MONTH_YYMD.EVAL';
START_CURRENT_MONTH/YYMD = DATECVT( DATEMOV(DATECVT(&MONTH_YYMD,'I8YYMD','YYMD'),'BOM'),'YYMD','I8YYMD');
END_CURRENT_MONTH/YYMD = DATECVT( DATEMOV(DATECVT(&MONTH_YYMD,'I8YYMD','YYMD'),'EOM'),'YYMD','I8YYMD');

CURRENT_WORKING_DAYS/I4 = DATEDIF(START_CURRENT_MONTH, TODAY, 'BD');
TOTAL_WORKING_DAYS/I4 = DATEDIF(START_CURRENT_MONTH, END_CURRENT_MONTH, 'BD');


-***************
-* LAST MONTH
-***************
TODAY_YYM/I6YYM =TODAY;

LAST_MONTH/I6YYM =AYM(TODAY_YYM, -1, 'I6YYM');

START_LAST_MONTH/YYMD = DATECVT( DATEMOV(DATECVT(LAST_MONTH,'I6YYM','YYMD'),'BOM'),'YYMD','I8YYMD');
END_LAST_MONTH/YYMD = DATECVT( DATEMOV(DATECVT(LAST_MONTH,'I6YYM','YYMD'),'EOM'),'YYMD','I8YYMD');
LAST_WORKING_DAYS/I4 = DATEDIF(START_LAST_MONTH, END_LAST_MONTH, 'BD');

END

TABLE FILE CAR
PRINT TODAY START_CURRENT_MONTH END_CURRENT_MONTH CURRENT_WORKING_DAYS TOTAL_WORKING_DAYS LAST_MONTH START_LAST_MONTH END_LAST_MONTH LAST_WORKING_DAYS
BY COUNTRY NOPRINT
WHERE RECORDLIMIT EQ 1
END


Results:
PAGE 1

TODAY START_CURRENT_MONTH END_CURRENT_MONTH CURRENT_WORKING_DAYS TOTAL_WORKING_DAYS LAST_MONTH START_LAST_MONTH END_LAST_MONTH LAST_WORKING_DAYS
2015/01/01 2015/01/01 2015/01/31 0 22 2014/12 2014/12/01 2014/12/31 0

Can anyone share a working logic to handle working days?

thanks


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 11:04 AM
Tom Flynn
Don't see the FILEDEF anywhere.
Did you click on this link and follow the instructions?


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
November 03, 2015, 11:05 AM
Ricardo Augusto
I created it under C:\ibi\AppStudio81\srv81\home\nls\HDAYBRZ.err

I got it adding this lines on HDAYBRZ.err:

20141231
20150501
20151225
20151231
29991231


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 11:21 AM
Tom Flynn
Well, then does your code include the FILEDEF(which my question referred to?

FILEDEF HDAYBRZ DISK C:\ibi\AppStudio81\srv81\home\nls\HDAYBRZ.err
SET BUSDAYS = _MTWTF_
SET HDAY=BRZ

Also see you are on 8.1, version unknown???



Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
November 03, 2015, 11:40 AM
Ricardo Augusto
No, I didn´t add a FILEDEF and my fex is able to read HDAYBRZ.err content.


Edition: WebFOCUS
Product Release: 8.1
Service Pack: 0.5
Build Version: branch8105
Build/GEN Number: 119
Build/GEN Date: September 16, 2015 3:04:25 PM BRT
Application Server: Apache Tomcat/8.0.21


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 11:46 AM
Tom Flynn
8.1.05 is your version.
Can't tell if you got it, but, if you did, CONGRATULATIONS!
OH, now I see SOLVED, so, CONGRATS!
It is better that you figure it out, imo...
Tom


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
November 03, 2015, 11:56 AM
Ricardo Augusto
I guess when I send it into production I will need a FILEDEF to use HDAYBRZ.err under apps/application directory. Right?


WebFOCUS 8.1.05 / APP Studio
November 03, 2015, 11:57 AM
Tom Flynn
It depends, do not know your architecture.
But, if it doesn't work, I'll wager you will figure it out...
Good Luck!


Tom Flynn
WebFOCUS 8.1.05 - PROD/QA
DB2 - AS400 - Mainframe
November 03, 2015, 11:59 AM
Ricardo Augusto
Thanks


WebFOCUS 8.1.05 / APP Studio