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



Please at least give the procedures sane names. This naming is one of the
things that alienates us from the rest of the programming world and btw
names can have more that 6 characters. We are no longer in the 80s. Use a
decent editor. > Use content assist if you don't like to type long names.

No, i'm not going to rename "rm_p" to "rm_create_packed_decimal".
The short names keeps the code compact *and* readable.

The problem with RPG's short names was not that the opcodes had short
names, but that all variable names could only be up to 6 chars.

So the important names are the application specific names, such as
"customer number".
I want to name a field "Customer_Number" and not be restricted to "CUSTNO".
I don't mind that "setll" is not written as "setLowerLimit".

I don't know what is a "normal" map but i believe that a map with multiple
values per key is indeed called a multimap.
However, in my case, the map is simply storing multiple key/item pairs
having the same key, so the same key is simply stored more than once.
Drawback of this is that you shouldn't have a map with lots of duplicate
keys, as searching among duplicates is complexity n (linear), not log(n).

On Wed, Jul 5, 2017 at 10:22 PM, Mihael Schmidt <mihael@xxxxxxxxxxxxxx>
wrote:

On 05.07.2017 20:30, jacobus erps wrote:

Now I understand what you mean by cursors, setll, and setgt.

I posted a code example earlier, but i suppose it was rather cryptic.

cursor = rm_sll(rm_cur(map));
dow rm_rdn(cursor);
sum += rm_p_(rm_itm(cursor));
enddo;
rm_dis(cursor);

Explanation:
To iterate through all key/item pairs, procedure "rm_cur" creates a
cursor,
"rm_sll" does a setll (set lower limit, without key so the cursor is set
at
the beginning), "rm_rdn" (reads the next key/item pair) and "rm_itm"
returns the current item. "rm_sll" returns it's first argument which is
the
cursor, to enable "chaining" of procedure calls. Procedure "rm_p_" is the
opposite of "rm_p" and converts a packed decimal value stored in the map
to
a "normal" RPG packed decimal. "rm_dis" disposes the cursor.

Please at least give the procedures sane names. This naming is one of the
things that alienates us from the rest of the programming world and btw
names can have more that 6 characters. We are no longer in the 80s. Use a
decent editor. Use content assist if you don't like to type long names.

With duplicate keys you are not trying to implement something like a
"normal" map (I don't know if it was this thread but I think someone
mentioned the Java TreeMap). In a "normal" map keys are unique. What you
try to implement is rather something like a MultiMap or MultiValueMap where
you STILL can have a single key but the value is probably a list which can
hold multiple values. This is rather easy to implement when you already
have a normal map. No need to do something like duplicate keys.

My 2 cents

Mihael


--
This is the IBMi Open Source Roundtable (OpenSource) mailing list
To post a message email: OpenSource@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/opensource
or email: OpenSource-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/opensource.


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.