OS/400 and i5/OS have a very nice "native" way to handle "work-with"
screens -- it's called the User Interface Manager (UIM). You create a
UIM panel (*PNLGRP), using the CRTPNLGRP command, and UIM source. This
is all described in the "Application Display Programming" manual.
This capability has been available since around V2R1M1 or V2R2.
Unfortunately, IBM did not do a very good job of "communicating the
vision" to ISVs and business partners, because UIM has had a rather low
uptake (or "adoption rate") among application vendors. And that's really
sad, because, using UIM to do "work with" panels makes the job very easy
and takes a lot of the work out of your hands. The User Interface
Manager does a lot "under the covers" for you. You define the UIM panel
using the UIM language, a tag language not unlike HTML. UIM does the
"layout" automatically for you. It arranges the fields nicely on the
screen, with some direction from you as to whether you want horizontal
or vettical arrangement of fields ,etc.
Also, if you use OS/400 user-defined commands, it is very easy to create
options that prompt commands with UIM. So each action (such as 1=Add,
2=Change, 4=Delete, 5=Display, etc.) becomes an OS/400 command. That
way, the OS/400 command interface takes care of providing the default
"fill-in-the-blanks" form for you, and passes each "field" as a separate
parameter to the Command Processing Program (CPP) for the command.
Again, user-defined commands is another area that IBM has not done a
good job of educating the user base and especially ISVs on the benefits
of developing your own commands.
UIM automatically handles all of the prompting, etc., so you can type an
option number next to an item, then press F4=Prompt, or just press
Enter, etc. And, UIM can even handle the "Confirm delete" panel that
lists all the items you selected for deleting (e.g. with option
4=Delete), so you can look at the list first, and if you want to change
anything, you press F12=Cancel to go back to the list panel to change
your selections, before you press Enter to delete them all.
I realize that many people have developed their own "work with" DDS
display files (subfiles, etc.) and corresponding RPG programs to do this
sort of thing, and I have seen a number of "code generators" that do
this. But, the code is much more "cumbersome" because you have to
include code to handle all of these features (prompting, delete
confirmation, etc.) that UIM provides for you automatically.
Once you become familiar with how to create a "work with" panel and a
set of commands, and have a set of "templates" you can use as a
"boiler-plate" for each new set of commands and their corresponding
"work with" panels, you should be able to "crank out" a new "work with"
panel and the commands to go with it, for each new entity type (e.g.
"Work with employees", "Work with Customers" etc.) in only a few days.
Definitely less than one week (more like 2 or 3 days). Definitely
faster than the "one or two weeks" estimates I have seen posted in
response to this topic using other "traditional" techniques.
I am also rather surprised that no one has yet developed a "work with"
generator (case tool) that uses UIM and commands.
That's my "take" on this topic.
All the best,
Mark S. Waterbury
> Paul Holm wrote:
We are working on a white paper which will compare RPG programming
productivity flexibility with other approaches for i5 application
development. I would be interested in feedback/insight on the following.
The #1 most used and needed programming task is development of a “WORK
WITH” screen. This typically in RPG is a subfile with a position to
type prompt. You typically can input a search parameter(s) and get a
list of records to work with. They are used everywhere and examples
include: work with orders, work with products, work with employees,
work with customers, etc.
Once you have a list of records then #2 most required task is file
maintenance. (Edit, insert, delete one of the records in your list. )
Roughly how long does it take in RPG to create a new “WORK WITH” and
Data maintenance application from your experience?
Thanks, Paul Holm