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



David Gibbs wrote:
Joe Pluta wrote:
you use the high-level EGL debugger which is very powerful.

Yeah, I don't doubt it is ... I'm only curious because sometimes the EGL support functionality (i.e., development client) isn't necessarily available. Especially if the code is deployed at a customer site.
Yup, but of course that's the same problem with Java code or even RPG programs with observability removed. Software vendors have an additional set of problems that in-house applications often don't have to deal with.

That's interesting ... and somewhat surprising. I've observed that most (at least the ones I've looked at) third party framework providers charge a license fee for distributing any runtime components required for code generated with their tool. That's refreshing to see they didn't go this route.
Yup. The idea is to create code that works. I have no idea how this may change in the future, but for now it's licensing free.

service HelloService function hello(toWhom string in) returns
(string) SysLib.setRemoteUser("RUI00001", "RUI00001"); hrq
HelloRequest { Name = toWhom }; hrs HelloResponse; call "HELLO" (
hrq, hrs ); return (hrs.Salutation); end end

What's 'hrq' and 'hrs'? I'm assuming they are request and response, but where are they defined? Are they built in?
Take a look at the program:

package services;

service HelloService
function hello(toWhom string in) returns (string)
SysLib.setRemoteUser("RUI00001", "RUI00001");
hrq HelloRequest { Name = toWhom };
hrs HelloResponse;
call "HELLO" ( hrq, hrs );
return (hrs.Salutation);
end
end

Record HelloRequest type BasicRecord
10 Name char(30);
end

Record HelloResponse type BasicRecord
10 Salutation char(40);
end


At the bottom of the code you'll see the definition for the Records HelloRequest and HelloResponse. This is roughly equivalent to creating a named data structure in an RPG program.
hrs HelloResponse;

The above line then creates a variable named hrs of type HelloResponse - sort of like using LIKEDS (or like defining a variable of a specific class, if you want to get all OO on me <grin>). Note the reverse of many languages. In EGL, you specify the name of the variable then the type, as you do in D specs in RPG. The nice thing about this approach is this line:

hrq HelloRequest { Name = toWhom };

It allows you to add a definition clause. In this case, the definition clause is simple; it just initializes one of the fields in the data structure (yes, the data structure only has one field, but again, trying to be simple). This ability to define a variable and initialize it in one line is very powerful.

Other types have other clauses that can be invoked when you define the variables.


What about native code on the i? You've mentioned that it can generate native interactive code. I would be interested to see what that looks like (both the EGL and the generated code).
EGL will generate COBOL code, but I haven't had the opportunity to play a lot with that side of things. Not exactly my are area of expertise <grin>.

Joe

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.