× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.