Last active
August 29, 2015 14:05
-
-
Save greghelton/bbcf149ef2d8a989904b to your computer and use it in GitHub Desktop.
Testing the RPGLE Date Function Subprocedure. This technique was devised by my coworker, Deborah. The TST_ADDDUR RPGLE program below calls the ADDDUR subprocedure that is shown in the previous gist.. The TST_ADDDUR program requires the ADDDUR module to be linked into a SRVPGM and added to the ADDDUR binding directory. See the H spec in the code …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
H option(*srcstmt : *nodebugio) debug(*yes) bnddir('ADDDUR') | |
H dftactgrp(*no) actgrp(*caller) | |
H EXTBININT(*YES) | |
H ALWNULL(*USRCTL) | |
H copyright('(C) COPYRIGHT StoneEagle Insurance Systems, Inc. 2010') | |
*========================================================================= | |
* | |
* Pgm : TST_ADDDUR - Test Add Duration | |
* Pgmer: | |
* Date : August 2014 | |
*========================================================================= | |
FTestAddD up e k disk rename(TestAddD:TestRec) | |
F prefix('T.') | |
*Data structures for the files | |
D T e ds qualified extname(TestAddD) inz | |
* prototype for subprocedure under test | |
d adddur pr 26A | |
d initalValue 26A VALUE | |
d scale 3P 0 VALUE | |
d units 7A VALUE | |
d success 4A | |
/free | |
if T.Processed <> 'Y'; | |
T.outdate = adddur(T.InDate:T.Scale:T.Unit:T.SuccessCd); | |
T.Processed = 'Y'; | |
update TestRec; | |
endif; | |
/end-free |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE GHELTON.TESTADDD ( | |
ID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, | |
INDATE CHAR(26) NOT NULL DEFAULT '', | |
SCALE DECIMAL(3,0) NOT NULL DEFAULT 0, | |
UNIT CHAR(7) NOT NULL DEFAULT '', | |
EXPECTEDDT CHAR(26) NOT NULL DEFAULT '', | |
OUTDATE CHAR(26) NOT NULL DEFAULT '', | |
SUCCESSCD CHAR(4) NOT NULL DEFAULT '', | |
NOTES CHAR(1000) NOT NULL DEFAULT '', | |
PROCESSED CHAR(1) NOT NULL DEFAULT ''); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 3, 'HOURS', '2014-08-21-03.00.00.000000', '', '', '+ 3 hours' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 3, 'MINUTES', '2014-08-21-00.03.00.000000', '', '', '+ 3 minutes' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 3, 'SECONDS', '2014-08-21-00.00.03.000000', '', '', '+ 3 seconds' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 3, 'MONTHS', '2014-11-21-00.00.00.000000', '', '', '+ 3 months' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 3, 'DAYS', '2014-08-24-00.00.00.000000', '', '', '+ 3 days' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 30, 'DAYS', '2014-09-20-00.00.00.000000', '', '', '+ 30 days' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 300, 'DAYS', '2015-06-17-00.00.00.000000', '', '', '+ 300 days' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', -3, 'DAYS', '2014-08-18-00.00.00.000000', '', '', '- 3 days' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', 3, 'TEST', '2014-08-21-00.00.00.000000', '', '', 'bad units - should show success code of 9999 ' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( 'Deborah', 3, 'DAYS', '2014-08-21-00.00.00.000000', '', '', 'bad indate - should show success code of 9999' ); | |
INSERT INTO GHELTON.TESTADDD (INDATE, SCALE, UNIT, EXPECTEDDT, OUTDATE, SUCCESSCD, NOTES) VALUES | |
( '2014-08-21-00.00.00.000000', -3, 'YEARS', '2011-08-21-00.00.00.000000', '', '', '-3 years' ); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- This SQL statement shows results for any test where expected date not equal to date returned from the new program. | |
SELECT * FROM GHELTON.TESTADDD WHERE EXPECTEDDT <> OUTDATE; | |
-- To prepare to re-run tests | |
UPDATE GHELTON.TESTADDD SET SUCCESSCD = ''; | |
UPDATE GHELTON.TESTADDD SET PROCESSED = ''; | |
UPDATE GHELTON.TESTADDD SET OUTDATE = ''; | |
-- Call RPG program from within SQL session | |
CL: CALL GHELTON/TST_ADDDUR |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment