Focal Point
[SOLVED] how to get year quarter in SET command

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

December 08, 2014, 09:38 AM
SWES
[SOLVED] how to get year quarter in SET command
How can I convert my smart date (YYMD or Q) into YYQ format in a SET command rather than converting into a define? I have tried some DATECVT's and DATETRAN's but it didn't do the trick...

This message has been edited. Last edited by: SWES,


WebFOCUS 8105m
Windows 7, All Outputs

Member of the Benelux Usergroup
December 08, 2014, 11:54 AM
Shakila Subhan
-SET &YYQ = &DATEYYQ;


WebFOCUS 8.0.08 - BI Portal, Developer Studio, App Studio, Excel, PDF, Active Formats and HTML5
Windows, All Outputs
December 08, 2014, 01:51 PM
j.gross
Remember that you are dealing with two separate languages: Dialog Manager, and Focus reporting language. In the tag-team process of running a fex file, the dialog manager processor (which knows virtually nothing of Focus syntax) does some preprocessing and stacks the resolved code. At -RUN or eof or -EXIT, it hands off control to Focus -- which knows nothing of D.M. syntax -- to execute the stacked Focus code.

So:

If it's a dialog manager variable, which is just a typeless character string, it cannot be a "smart date".

Conversely, if you want to manipulate a variable defined as a smart date, DEFINE is at your disposal, but not -SET.

Now, please restate your question.


- Jack Gross
WF through 8.1.05
December 08, 2014, 02:48 PM
Francis Mariani
You can turn a Dialogue Manager string into a smart date temporarily to use a date function and then turn it back into a string:

-SET &EOMDATE = DATECVT((DATEMOV((DATECVT(&SYSTEM_DATE,'I8YYMD','YYMD')),'EOM')),'YYMD','I8YYMD');
-SET &BACK_DATE1 = DATECVT((DATECVT(&RUN_DATE,'I8YYMD','YYMD') - 1), 'YYMD','I8YYMD');
-SET &IRPT_RUN_DT = DATETRAN(DATECVT(&YYMD, 'I8YYMD', 'DMYY'), '(MDYY)', '(trD)', 'EN', 40, 'A40');


There seems to be a loophole in all this when it comes to quarters. The almighty DATETRAN function can translate a date into Lithuanian or Chinese or Czech but can't work with quarters.


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
December 08, 2014, 02:56 PM
Francis Mariani
Here's one convoluted method, I'm sure there are others:
-SET &MY_DATE = '20141223';

-SET &RUN_YYQ = EDIT(&MY_DATE,'9999$$$$') | '-' | EDIT(FIQTR(DATECVT(&YYMD, 'I8YYMD', 'YYMD'), 'D', 1, 1, 'FYS', 'I1'));




Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
December 08, 2014, 03:09 PM
jfr99
Here's another example:

-SET &YYMD = &YYMD;
-SET &MY_YYQ = FPRINT(DATECVT(DATECVT(&YYMD,'I8YYMD','YYMD'),'YYMD','YYQ'),'YYQ','A7');
-TYPE --------------------------
-TYPE YYMD ----- &YYMD
-TYPE MY_YYQ --- &MY_YYQ
-TYPE --------------------------

This give you this:

--------------------------
YYMD ----- 20141208
MY_YYQ --- 2014 Q4
--------------------------


WebFocus 8.201M, Windows, App Studio
December 08, 2014, 03:27 PM
Francis Mariani
Nice! I thought I could DATECVT a third time, but no dice. FPRINT is the correct answer.


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
December 09, 2014, 07:34 AM
SWES
Thank you all. I ended up using jfr99's solution and this works perfectly for me.

Thanks again


WebFOCUS 8105m
Windows 7, All Outputs

Member of the Benelux Usergroup