[SOLVED] How to increment an HHISsm formatted field by 15 mins?
Anyone know how to increment time values by 15 minutes? There are functions for DATETIME formats but none that I can see for just TIME fields.
Any help is much appreciated!
Thanks!This message has been edited. Last edited by: CoolGuy,
8.2.02M (production), 8.2.02M (test), Windows 10, all outputs.
March 21, 2016, 05:29 PM
Waz
I thought you can use the same function to add a period of time.
Waz...
Prod:
WebFOCUS 7.6.10/8.1.04
Upgrade:
WebFOCUS 8.2.07
OS:
Linux
Outputs:
HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!
March 21, 2016, 05:33 PM
Francis Mariani
As Waz suggests, look into the HADD function. HHISsm has hidden date components.
"The HADD function increments a date-time value by a given number of units."
TABLE FILE CAR
SUM
SALES
COMPUTE TIME1/HHISsm = DT('12:56:12.123');
COMPUTE TIME2/HHISsm = HADD(TIME1, 'minute', 15, 8, TIME2);
BY COUNTRY
END
In a slightly related issue, questions have been asked about time-only fields, which I don't think is possible.
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
March 21, 2016, 05:44 PM
CoolGuy
Thanks for your help guys. For some reason my SBTRANSTIME field with format HHISsm isn't valid as a DATE constant??
My code:
DEFINE FILE SCANDETAIL
TIME1/HHISsm = DT(SBTRANSTIME);
TIME2/HHISsm = HADD(TIME1, 'minute', 15, 8, TIME2);
END
TABLE FILE SCANDETAIL
SUM
SCANDETAIL.SCANDETAIL.SDEXTSALES
SCANDETAIL.SCANDETAIL.SDSCANQTY
SCANDETAIL.SCANDETAIL.SDWEIGHT
BY SCANDETAIL.SCANDETAIL.SDTRANSDATE
BY SCANDETAIL.SCANDETAIL.SDACCTNO
BY SCANDETAIL.SCANBASKET.SBCASHIER
BY SCANDETAIL.SCANBASKET.SBTRANSTIME
WHERE SCANDETAIL.SCANDETAIL.SDTRANSDATE EQ '20160317';
WHERE SCANDETAIL.SCANDETAIL.SDACCTNO EQ 10116;
WHERE SCANDETAIL.SCANBASKET.SBCASHIER EQ 120;
WHERE SCANDETAIL.SCANBASKET.SBTRANSTIME GE '17:00:00';
WHERE SCANDETAIL.SCANBASKET.SBTRANSTIME LT TIME2;
ON TABLE SET PAGE-NUM NOLEAD
ON TABLE SET ASNAMES ON
ON TABLE NOTOTAL
ON TABLE PCHOLD FORMAT HTML
ON TABLE SET HTMLEMBEDIMG ON
ON TABLE SET HTMLCSS ON
ON TABLE SET STYLE *
INCLUDE = IBFS:/EDA/EDASERVE/_EDAHOME/ETC/endeflt.sty,
$
ENDSTYLE
END
Output:
0 ERROR AT OR NEAR LINE 2 IN PROCEDURE ADHOCRQ FOCEXEC *
(FOC177) INVALID DATE CONSTANT: SBTRANSTIME
0 ERROR AT OR NEAR LINE 3 IN PROCEDURE ADHOCRQ FOCEXEC *
(FOC258) FIELDNAME OR COMPUTATIONAL ELEMENT NOT RECOGNIZED: TIME1
0 ERROR AT OR NEAR LINE 18 IN PROCEDURE ADHOCRQ FOCEXEC *
(FOC258) FIELDNAME OR COMPUTATIONAL ELEMENT NOT RECOGNIZED: TIME2
BYPASSING TO END OF COMMAND
(FOC009) INCOMPLETE REQUEST STATEMENT
8.2.02M (production), 8.2.02M (test), Windows 10, all outputs.
March 21, 2016, 05:53 PM
CoolGuy
Nevermind. Got it working finally. Thanks Francis!
Working code:
-DEFAULT &DATE1 = 20160317;
-DEFAULT &TIME1 = 171500;
DEFINE FILE SCANDETAIL
TRANSTIME/HHIS = SBTRANSTIME;
TIME1/HHIS = DT(&TIME1);
TIME2/HHIS = HADD(TIME1, 'minute', 15, 8, TIME2);
END
TABLE FILE SCANDETAIL
SUM
SDEXTSALES/D12.2CM
SDSCANQTY
SDWEIGHT/D12.2C
BY SDTRANSDATE
BY SDACCTNO
BY SBCASHIER
BY TRANSTIME
WHERE SDTRANSDATE EQ &DATE1;
WHERE SDACCTNO EQ 10116;
WHERE SBCASHIER EQ 120;
WHERE SBTRANSTIME GE TIME1;
WHERE SBTRANSTIME LT TIME2;
ON TABLE SET PAGE-NUM NOLEAD
ON TABLE SET ASNAMES ON
ON TABLE RECOMPUTE SUM. SDWEIGHT SUM. SDSCANQTY SUM. SDEXTSALES AS 'Total:'
ON TABLE PCHOLD FORMAT HTML
ON TABLE SET HTMLEMBEDIMG ON
ON TABLE SET HTMLCSS ON
ON TABLE SET STYLE *
INCLUDE = IBFS:/EDA/EDASERVE/_EDAHOME/ETC/endeflt.sty,
$
ENDSTYLE
END
8.2.02M (production), 8.2.02M (test), Windows 10, all outputs.