OY!  So beyond stretching my Java skills, and PCML skills, I now need to stretch my RPG skills.....

OK...I'll dig for an example of a calling a similar API in RPG but my guess is that my RPG skills will run out of gas before I can code the same interfaces.  Then I'll need to figure out how to "generate the PCML"...

I have to always be cautious when I think something will be *easy*  (Danger! Will Robinson!)....

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

On 4/3/2022 5:47 PM, Jon Paris wrote:
I can offer you one way too "cheat" Pete.

Code thew same interface in RPG (or I guess maybe the C compiler has it to) and have it generate the PCML for you. <grin>

On Apr 3, 2022, at 5:40 PM, Pete Helgren <pete@xxxxxxxxxx> wrote:

Thanks David,

EASIER is in the eye of the beholder. PCML doesn't exactly look easy and I am up against the same unknowns. Here is the PCML so far:

<pcml version="1.0">

<!-- PCML source for calling "Renew Certificate" (QYCDRNWC) API -->

<!-- Format RNWC0300 - Other formats are available -->
<struct name="rnwc0300">
<data name="offsettofile" type="int" length="4" usage="input"/>
<data name="lengthoffilename" type="int" length="4" usage="input"/>
<data name="certfile" type="char" length="lengthoffilename" usage="input"/>

<!-- Program QYCDRNWC and its parameter list for retrieving RNWC0300 format -->
<program name="qycdrnwc" path="/QSYS.LIB/QICSS.LIB/QYCDRNWC.SRVPGM">
<data name="certreqdata" type="struct" struct="rnwc0300" usage="input"/>
<data name="reqdataLength" type="int" length="4" usage="input" /> ???????????
<data name="format" type="char" length="8" usage="input" init="RNWC0300"/>
<data name="errorCode" type="int" length="4" usage="input" init="0"/>

The structure for the RNWC0300 format is:

Dec Hex Type Field
0 0 Binary (4) Offset to certificate path and file name
4 4 Binary (4) Length of certificate path and file name
Char (*) Certificate path and file name

So my first "stump the chump" query was "What PCML data type is a Char(*)??" You can see my guess above. Is that correct? Just a character string of a certain length? But, I think it is a pointer to the character string but couldn't find a good example of a Char(*) as an input parameter in a format structure.

The second conundrum was: How do I get the length of the structure? The parameters needed by the API are:

Required Parameter Group:

1 Certificate request data Input Char(*)

2 Length of certificate request data Input Binary(4)

3 Format name Input Char(8)

4 Error Code I/O Char(*)

Not sure if the whole thing is OK but I couldn't figure out how to get the length of the certificate request data (structure). I saw documentation in the PCML docs on "offset" and "offsetfrom" but didn't know if that is how to go about it.

This hasn't exactly been *easy* but I am willing to press on with a little hand-holding.....

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

On 4/2/2022 5:16 PM, David Gibbs via JAVA400-L wrote:
Use pcml. It handles memory allocation and is much easier to use.
This is the Java Programming on and around the IBM i (JAVA400-L) mailing list
To post a message email: JAVA400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxxxxxxxx
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

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