× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Yes - but you are using IWS - not rolling your own with RPG as that article describes. The article by the way shows how to get the value. IWS provides a mechanism to get the values passed to your RPG code - don't recall the details but it is in the documents and in IBM's on-line tutorials.

David must be asleep or he'd have yelled at us long ago to move this topic to WEB400 which is where it should be. I suggest you do that if you have problems because the IBMers responsible for IWS follow that forum but not this one.


Jon

On Jul 27, 2020, at 1:36 PM, Robert Rogerson <rogersonra@xxxxxxxxx> wrote:

Jon, I think you misunderstood my reply referring to your article. Charles
had already pointed out that using QzhbCgiParse was the wrong approach. I
pointed to your article as the correct way to accomplish what I'm trying to
do.

Sorry for this misunderstanding.

In my prior reply, I gave an example of what I'm trying to do. Does your
article not cover how I should be correctly extracting the parameter?

Thanks,

Rob

On Mon, Jul 27, 2020 at 1:20 PM Robert Rogerson <rogersonra@xxxxxxxxx>
wrote:

I'm creating a webservice and using IWS. I'm then using Postman to test
the webservice. All the endpoints call procedures in a service program..

So I have an endpoint /web/server/claims which will call the RPG procedure
GetAllClaims which returns all claims. I have tested this with Postman
and it works correctly.

My next step is to add a filter. So I call the same endpoint but this
time I pass a parameter of whid. So the endpoint now becomes
/web/server/claims/?whid=93 which will call the RPG procedure GetAllClaims
but this time I need to extract the parameter passed in the QUERY_STRING to
return only claims for warehouse 93.

I'm trying to understand how to extract the parameter whid=93 from the
QUERY_STRING. I thought the article I posted gave an example of this.

Thanks,

Rob


On Mon, Jul 27, 2020 at 1:04 PM Charles Wilt <charles.wilt@xxxxxxxxx>
wrote:

That's unlikely to provide your answer...

First off, you need to clarify what you are doing?

Calling web service?

Create a web service (with or with IWS?)

Charles

On Mon, Jul 27, 2020 at 10:43 AM Robert Rogerson <rogersonra@xxxxxxxxx>
wrote:

I think I found it here (

https://ibmsystemsmag.com/Power-Systems/02/2012/rest-web-services-with-rpg
).

Thanks for putting me on the right path Charles.

Rob

On Mon, Jul 27, 2020 at 12:27 PM Robert Rogerson <rogersonra@xxxxxxxxx>
wrote:

Charles, if I add *fixed then does this stop the need to append x'00'
to
the end of cmdstr when calling the api?

I checked in the config file for my HTTP server instance and could not
find %%MIXED%%. So I did a Google search and did find . Electronic
business and Web serving IBM HTTP Server for i (


https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzaie/rzaiepdf.pdf
).
It mentions

CGIConvMode:
Module: mod_cgi
Syntax: CGIConvMode mode

One of the modes listed is %%MIXED so I'm thinking this may be what
you
were referring to. But this also got me thinking, from how I
understand
this, CGIConvMode is in module the module mod_cgi which is not loaded
(LoadModule cgi_mod?).

Should I be loading cgi_mod?

OK, while writing this I just saw another post from you that I was
doing
it wrong. Thanks

In the past I did try to find how to access the environment variable
QUERY_STRING but the only reference I could find to access it was
using
the QzhbCgiParse api which you pointed out is wrong.

So how should I be accessing QUERY_STRING? (I don't mind if you just
point me to a document but I couldn't find one.

Thanks,

Rob

On Mon, Jul 27, 2020 at 10:26 AM Charles Wilt <charles.wilt@xxxxxxxxx

wrote:

Looks ok, though you should be using option(*trim:*string) to
automatically
trim and null terminate the cmdStr parm.

Did you see the note in the docs?

This API does not work with the %%MIXED%% CGI input mode.

Are you by chance using mixed? (would be in your Apache config)

Charles



On Mon, Jul 27, 2020 at 6:21 AM Robert Rogerson <
rogersonra@xxxxxxxxx>
wrote:

This is posted to both the RPG and the Midrange-L mailings lists.

I'm using IWS to call a REST API. I'm using QzhbCgiParse to
retrieve
the
passed parameter(s) from the QUERY_STRING. When I call the API
all I
see
is a 1 page dump in QPSRVDMP in QEZDEBUG with the user data FFDC
but
can't see anything other than
.SYMPTOM STRING-
5770 SP/QZHBCGI MSGMCH3601
I've used Google and the IBM API docs to research but I can't see
the
issue. My prototype and same call follow.

Dcl-Pr QzhbCgiParse extproc('QzhbCgiParse');
cmdStr char(65535) const options(*trim: *varsize);
outFmt char(8) const;
targetBuf char(65535);
targetSize int(10) const;
responseLen int(10);
errorCode char(56);
End-Pr;

//--------------------------------------------------------------
// GetInputParameter Get the passed parameter from QUERY_STRING
//--------------------------------------------------------------
dcl-proc GetInputParameter;
dcl-pi *n varchar(100);
pSearchParameter varchar(20) const;
end-pi;

dcl-s cmdStr char(65535);
dcl-s outFmt char(8) inz('CGII0100');
dcl-s targetBuf char(65535);
dcl-s targetSize int(10);
dcl-s responseLen int(10) inz(0);
dcl-s errorCode char(56);
dcl-s pos uns(5);

cmdStr = '-value ' + pSearchParameter + x'00';
QzhbCgiParse(cmdStr:outFmt: targetBuf: %size(targetBuf) :
responseLen
:errorcode);
dump(a);
If responseLen > 0;
pos = %SCAN(X'25':targetBuf);
Return %Trim(%Subst(targetBuf:1:pos-1));
Else;
Return ' ';
Endif;
end-proc;

I've commented out the call to QzhbCgiParse and the program
completes
without error and produces a dump (dump(a)). When I uncomment the
call
to
QzhbCgiParse the program fails but produces no dump for dump(a).
It
does
however create the QPSRVDMP dump I mentioned earlier.

Any help would be greatly appreciated as I've come to a brick wall.

Thanks,

Rob
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

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

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

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


--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription
related
questions.

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

--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.

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


--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.

Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.

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-Ups:
Replies:

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

This mailing list archive is Copyright 1997-2024 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.