Re: PCML Call reality check

Pete Helgren <[email protected]> Fri, 8 Oct 2021 08:47:12 -0500
Newsgroups gmane.comp.lang.as400.java
Message-ID <[email protected]>
Again, thanks Dieter...seems like a lot of work just to pass a single 
string to an API!  I thought about wrapping an RPG program, creating a C 
command program I could call with a system call from Java and a bunch of 
other approaches.  I appreciate the pointers. I'm getting closer.....

Pete Helgren
www.petesworkshop.com
GIAC Secure Software Programmer-Java
AWS Certified Cloud Practitioner
Microsoft Certified: Azure Fundamentals
Twitter - Sys_i_Geek  IBM_i_Geek

On 10/8/2021 1:19 AM, D*B wrote:
> Pete,
>
> PCML is made for people, who want to write java code, looking like 
> rpg. Thinking in rpg, you would have to do:
> - write an rpg wrapper for your api, with the same parms as the api 
> (one to one)
> - compile it with CRTBNDRPG PGMINFO(*PCML) and throw it away and 
> delete the rpg source
> - use the PCML to call the api, don't think about, how it works
>
> Thinking in java, you would need some Javabeans, one for each 
> Datastructure, your api is using. This beans would be responsable to 
> convert java datatypes to a compound of binary bits and bytes. This 
> beans would have java like setXxx and getXxx methods, for each single 
> component and the binary huddle, rpg named this binary huddle 
> datastructure (a funny name, isn't it?).
> To call the Api, you would use ProgrammCall from jtopen.
>
> a little example for such a bean would look like:
>
> public class QualifiedName extends Converter {
>     private byte[] huddle;
>     private String name;
>     private String library;
>
>     public QualifiedName(String name, String library) {
>         super(500);
>         huddle = new byte[20];
>         setName(name);
>         setLibrary(library);
>     }
>
>     public byte[] getHuddle() {
>         return huddle;
>     }
>
>     public void setName(String name) {
>         this.name = name;
>         System.arraycopy(stringToAS400Text(name, 10), 0, huddle, 0, 10);
>     }
>
>     public void setLibrary(String library) {
>         this.library = library;
>         System.arraycopy(stringToAS400Text(library, 10), 0, huddle, 
> 10, 10);
>     }
> }
>
> getName, getLibrary and set Huddle would look very similar to the 
> corresponding methods in the example.
> Datastructure is a Conveniance wrapper for the jtopen Objects to 
> convert rpg types to java types and vice versa. The source could be 
> found here:
>
> https://sourceforge.net/p/appserver4rpg/codeSVN/HEAD/tree/appserver4rpg/src/de/bender_dv/as400/datastructure/Converter.java 
>
>
> Dieter
>
>
>
-- 
This is the Java Programming on and around the IBM i (JAVA400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/java400-l
or email: [email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/java400-l.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com