×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Barbara,

Thanks for the reply.  It compiles fine, but now something strange is
happening.

My RPG program has two parms

D file_in         S            255
D format          S             10I 0

And I'm trying to call it from the command line with the following command:

CALL PGM(ICR001) PARM('/JavaUtil/ImageConversion/in' 13)

In calling it from the command line, I am getting garbage in file_in,
because I'm not padding it out to 255 characters with blanks.  If I clean
it up by looking for the first blank and substringing out everything before
that and putting the result back in file_in, I get exception
"java.lang.NoSuchMethodError:" when calling method "<init>" with signature
(Ljava.io.file;I)V" in class "conversionTest".  If I comment out the
cleanup stuff, it runs, but it obviously does not find the correct
directory.

If I define file_in as

D file_in         S            255A   Varying

I get a "Length of varying length variable is out of range" error.  If I
look at the dump, it tells me that file_in  is 257 characters long.

Mike E.





                    Barbara Morris
                    <bmorris@ca.ibm.c       To:     rpg400-l@midrange.com
                    om>                     cc:
                    Sent by:                Subject:     Re: Prototyping and 
Creating integer objects in RPG for
                    rpg400-l-admin@mi        callingJavaclasses
                    drange.com


                    11/22/02 10:26 AM
                    Please respond to
                    rpg400-l






meovino=/SPx079MrvAgMxX8nMqP6gC/G2K4zDHf@public.gmane.org wrote:
>
> I have re-read the chapter several times, and it looks as if I need to
call
> the Java method passing an instance parameter as the first parm.
> Unfortunately, the book does not appear to give any examples of calling a
> non-static method that does not return a value.  The method is defined as
> follows:
>
> public class conversionTest
> {
>
>   public conversionTest(File f, int format)
>

Ok, I get it now.  A method whose name is the same as the class name is
called a "constructor".  It returns an object of the class.  In RPG, you
prototype it with the special method name *CONSTRUCTOR, and define it to
return an object.  (But you don't have to code the CLASS keyword for the
return value.)

D Class1          C                   'conversionTest'
 *  conversionTest constructor
 *  Java:  public conversionTest(File f, int format);
D newConversionTest...
D                 PR              O   ExtProc(*JAVA:
D                                            Class1:*CONSTRUCTOR)
 *  method parameters
D  f                              O   Class(*JAVA:'java.io.File')
D                                     Const
D  format                       10I 0 Value

D obj             S               O   Class(*JAVA:Class1)

c        eval   obj = newConversionTest (fFile : format)

It's a good idea to put the Java version of the method header as a
comment in the RPG.

Sorry if I was a bit snarky before.  As well as reading about RPG and
Java, I think it's important for you to read a bit about Java.  Sun has
a nice tutorial here:
http://java.sun.com/docs/books/tutorial/java/index.html.


_______________________________________________
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
or email: RPG400-L-request@midrange.com
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.







As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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

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.