Re: Passing an as400structure in a ServiceProgramCall

Pete Helgren <[email protected]> Sun, 3 Apr 2022 19:58:48 -0500
Newsgroups gmane.comp.lang.as400.java
Message-ID <[email protected]>
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
www.petesworkshop.com
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 <[email protected]> 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"/>
>>    </struct>
>>
>>    <!-- 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"/>
>>    </program>
>> </pcml>
>>
>> The structure for the RNWC0300 format is:
>>
>> Offset
>> 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
>> www.petesworkshop.com
>> 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: [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
-- 
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