|
I finally figured this one out. As you know, the main method of a Java
class is a special method. It is always defined as "public static void"
with an argument of a string array. This provides some special
circumstances for calling this method from within an RPG program. After
referencing the RPG Programmers manual and some trial and error, I have come
up with the resolution. Why the importance of the main method you ask?
Well, when I develop classes, and other Java programmers I have spoken to, I
code the main method to test all aspects of the class. Normally I print the
results out to System.out. Well, enough babble. Lets look at the example
and the explanation.
Calling the main method -- and the appropriate definitions
first, define the parameter array:
D args S O Class(*JAVA:'java.lang.String')
D DIM(1)
Next, define the main method prototype:
D main PR ExtProc(*JAVA:
D 'com.shipley.ssl.CRD001J':
D 'main')
D STATIC
D O Class(*JAVA:'java.lang.String')
D CONST
D DIM(1)
D OPTIONS(*VARSIZE)
Note on the prototype - the array definition must be the same size as the
definition of the "args" variable. Remember, this is a static method, so it
must be prototyped as such.
Next, define the prototype to create a String object:
D string PR O ExtProc(*JAVA:
D 'java.lang.String':
D *CONSTRUCTOR)
D value 100A CONST VARYING
Finally, add an element to the array & call the method:
/Free
args(1) = string('Test Value');
main(args);
/End-Free
Remember that RPG arrays are based on 1 where Java arrays are zero based.
The main method in the class I am testing does not require any parameters.
Actually, the class will not reference any parameters passed in to the
method. You MUST pass a valid array to the method on the call. I tried
passing *NULL without any luck. I tried to pass an empty array with no
luck.
Hope this helps someone out there!
Mike
This mailing list archive is Copyright 1997-2026 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.