|
Larry,
nevermind, I meanwhile found out that the windows version of QC2LE is
MSVCRT.DLL
Looks like I'm gonna get lucky after all...
Best regards,
Peter Colpaert
Application Developer
Massive - Kontich, Belgium
-----
Yoda of Borg are we. Futile is resistance, assimilated will you be.
-----
----- Forwarded by Peter Colpaert/Misc/BE/massive on 17/03/2005 14:40
-----
Peter Colpaert
17/03/2005 08:13
To: RPG Discussion List
cc:
Subject: Re: [Fwd: RE: Random number in VARPG]
Larry,
this is all very interesting, and I tried it at home yesterday.
Which gave me a very strange error at runtime: Win32.dll doesn't seem to
exist on my system (WinXP Pro SP2 with all current patches).
Is this a standard Windows DLL, or do I need to install an additional
package?
Thanks,
Peter
---- Forwarded by Peter Colpaert/Misc/BE/massive on 11/03/2005 07:41 -----
"Larry Ducie" <Larry_Ducie@xxxxxxxxxxx>
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
10/03/2005 23:41
Please respond to RPG programming on the AS400 / iSeries
To: <rpg400-l@xxxxxxxxxxxx>
cc:
Subject: RE: Random number in VARPG
Hi Peter,
<snip>
As I don't have an iSeries at home, it has to be completely PC-based.
The problem I'm encountering is that I need to randomize the array with
questions, and I have no clue as to how to start this.
</snip>
Remember that you have access to the WinAPI (Win32 DLL) so most things you
can do on a PC you can do using VARPG. Or you could download a Java class
that generates a random number and interface to that. You just need to
"think PC" not "AS/400" for native solutions.
With that in mind, simply use the WinAPI rand() function (below is the C
prototype). So I'm sure you could simply prototype rand(), specifying
Win32.DLL, using a 10I 0 return variable:
*** start of include***
int rand ( void );
Generate random number.
Returns a pseudo-random number in the range from 0 to RAND_MAX constant.
This is generated by an algorithm that returns a series of non-related
numbers each time is called. This algorithm should be initialized to
different starting points using function srand
<http://www.cplusplus.com/ref/cstdlib/srand.html> to generate more
realistic random numbers.
RAND_MAX is a constant defined in stdlib.h. Its default value is
implementation defined.
Parameters.
(none)
Return Value.
An integer value between 0 and RAND_MAX.
Portability.
Defined in ANSI-C.
Example.
/* rand example */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
/* initialize random generator */
srand ( time(NULL) );
/* generate some random numbers */
printf ("A number between 0 and RAND_MAX (%d): %d\n", RAND_MAX, rand());
printf ("A number between 0 and 99: %d\n", rand()%100);
printf ("A number between 20 and 29: %d\n", rand()%10+20);
return 0;
}
Output:
A number between 0 and RAND_MAX (32767): 30159
A number between 0 and 99: 72
A number between 20 and 29: 23
A good way to generate almost-true random numbers is to initialize the
random algorithm using srand() with the current time in seconds as
parameter, as obtained from time function included in <time.h>. And,
generally, a good way to get an integer random number between a range is
to
perform a module (%) operation on a result provided by rand():
thus rand()%25 would be a random number between 0 and 24, both included.
*** end of include***
The most difficult thing about using VARPG to interface with "native" DLLs
is the nesting of the header files. That is, you find an example that
<includes> some prototypes in a header file, but when you find the header
file it simply <includes> more header files, and so on until you find that
the value you should be passing to the procedure is another int. And, yes,
it's 10I 0 on the PC too. :-)
Have a look at http://www.cplusplus.com/ref/cstdlib/rand.html
Good luck.
Larry Ducie
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.