Skip to content

Instantly share code, notes, and snippets.

@forstie
Created June 20, 2019 07:32
Show Gist options
  • Save forstie/db96774f4f236b7284196e726b4ed1f2 to your computer and use it in GitHub Desktop.
Save forstie/db96774f4f236b7284196e726b4ed1f2 to your computer and use it in GitHub Desktop.
Microsecond DLYJOB via SQL
-- Purpose: Delay job for fractions of a second
-- Author : Scott Forstie
-- Contact: forstie@us.ibm.com
-- Date : June 20, 2019
cl: addlible QSYSINC;
cl: crtsrcpf qtemp/qcsrc;
cl: addpfm file(qtemp/qcsrc) mbr(usleep);
--
-- The usleep() function suspends a thread for the number of microseconds specified by the of useconds parameter.
-- ============
-- 1 sec == 1,000 milisec == 1,000,000 microsec == 1,000,000,000 nanosec
--
insert into qtemp.qcsrc values
(1,010101,'{'),
(2,010101,'#include "unistd.h"'),
(3,010101,'while(USLEEP.SLEEPUS>1000000)'),
(4,010101,' { usleep(1000000); USLEEP.SLEEPUS-=1000000; }'),
(5,010101,'usleep(USLEEP.SLEEPUS);'),
(6,010101,'}');
CREATE OR REPLACE PROCEDURE systools.usleep(sleepus int)
program type sub
-- Use this SET OPTION if you see a compile failure [SQL7032]
-- SET OPTION dbgview = *source, output=*PRINT
BEGIN
INCLUDE qtemp / qcsrc(usleep);
END;
-- Sleep for 1 microsecond
CALL systools.usleep(1);
@forstie
Copy link
Author

forstie commented Jun 25, 2019

My posting on showing lprintfs to the joblog provides a solution of sorts.
Scott

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment