|
On Wed, 26 Feb 2003, Andy Hautamaki wrote:
>
> I have a series of batch jobs that if they get a record lock on update will
> call a CLP program and pass it how long to do a DLYJOB and then after the
> 'Delay' my RPG programs will try to retrieve the record again.
>
Well... you could just do OVRDBF FILE(MYFILE) WAITRCD(xxx), and not have
to do a delay at all... (Unless I don't understand your question
correctly)
> My question is, instead of doing this 'DLYJOB' from a CLP can it be done
> directly from within RPG? ........ API maybe????
>
If for some reason, you don't want to use the WAITRCD() method above,
here's a few ways of doing delays in an RPG program. This is an actual
program that compiles and runs :)
H DFTACTGRP(*NO) BNDDIR('QC2LE')
D QcmdExc PR extpgm('QCMDEXC')
D command 200A const
D length 15P 5 const
d cmd s 200A
D len s 15P 5
D select PR 10I 0 extproc('select')
D max 10I 0 value
d read * value
d write * value
d except * value
d timeout * value
D tv ds
D tv_sec 10I 0
D tv_usec 10I 0
D sleep PR 10U 0 extproc('sleep')
D seconds 10U 0 value
D usleep PR 10I 0 extproc('usleep')
D microsecs 10U 0 value
*
* QcmdExc can run just about any command that you
* can type from the command-line, including DLYJOB
*
c 'one' dsply
c callp QcmdExc('DLYJOB DLY(1)': 200)
*
* Or, if you're feeling nostalgic, here's another way to
* call QCMDEXC
*
c 'two' dsply
c eval cmd = 'DLYJOB DLY(1)'
c eval len = 200
c call 'QCMDEXC'
c parm cmd
c parm len
*
* Another exciting way would be to use the select() API.
* This has the advantage that you can wait for strange time
* values... such as 1.8 seconds...
*
c 'three' dsply
c eval tv_sec = 1
c eval tv_usec = 800000
c callp select(0: *NULL: *NULL: *NULL: %addr(tv))
*
* Then, there's the ILE C runtime (requires BNDDIR('QC2LE'))
*
c 'four' dsply
c callp sleep(1)
*
* Or, the ILE C runtime that can do things in microseconds
* (also requires BNDDIR('QC2LE'))
*
c 'five' dsply
c callp usleep(1000000)
c eval *inlr = *on
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.