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


  • Subject: Re: Large screen monitor
  • From: Douglas Handy <dhandy1@xxxxxxxxxxxxx>
  • Date: Fri, 28 Jul 2000 22:31:46 -0400

Rob,

>Such as (apart from graphical features)?

The GUI part doesn't matter so much with a text editor.  I was a happy
user of Flex/Edit for DOS before I ever ran Windoze.

The biggest disadvantage of a block-mode interface over a workstation
(in terms of inherent differences) is that you can't be context
sensitive at the keystroke level.  For example, my tab key and backtab
key really work, and are dynamically sensitive to the type of line
containing the cursor.  Color coding is immediate and automatic; eg,
keyword values appear in a different color than keywords, or
column-sensitive stuff has different colors for adjoining fields.  As
you move the cursor, the ruler line at the top of the window changes
to match the source line containing the cursor.  And for calcs, you
get a different ruler line for each opcode, with each field labeled
for what it does for *that* opcode.

Undo/redo really works, to an infinite level.  It is *vastly*
different than F5=Refresh.  I can back up literally one keystroke at a
time, until back to the original state.  In Flex/Edit, it also will
undo cursor movement and virtually any other activity, such as global
replacements of text.  With CODE, I *think* it only will undo buffer
changes, not cursor movements.  I'd have to adjust to that, because I
sometimes use undo where I could use a bookmark -- as a method to
quickly return to a given point after looking at something else.

Another feature I suspect we'll see in editors like CODE but not SEU
is word completion and function tooltips.  Word completion is where it
offers to complete a variable or function name based on your first few
letters -- much like Quicken does with a Payee name.  Now that we're
all using longer variable names and meaningful procedure names (arent
we??) this has more value than 6 char names.

Function tooltips are balloons which float over your cursor as soon as
you type the leading "(" of a function or BIF.  It displays the list
of arguments based on the BIF or prototype, and highlights in bold the
one you are currently keying.  As soon as you type the closing ), the
tooltip disappears.  Stuff like this happens today with other
languages and editors.  There is no reason we shouldn't have the same
capabilities.

Think about it.  Name your service procedures right and you can nearly
forget about help files or documentation crib sheets.  Type a % and
see all the BIF names, or "rtv"see all your service procedures to
retrieve a value.  It can also be smart enough to not do anything
until it sees you pause longer before typing another character.  Pick
the right one, and then a tooltip appears listing the arguments, in
order.  Key the values, type the ) and keep on going.  Hoover the
mouse over an existing function to see its argument definitions.

I suppose a F4 prompt could throw up a window to select from, but
having the list sensitive to each keystroke as you type it is way more
convienent.  

Then there is the issue of performance.  I have a dedicated RISC
machine for development.  I'm the only user, so basically have all
160MB of memory at my disposal.  Response time in SEU is way better
than SEU at my client sites.  But it still can't match my PC editor,
which is virtually instanteous no matter how I jump or scroll.  Even
cursor movement is harder on a dumb terminal because you can't jump a
"word" at a time ala Ctrl-Left/Right.  You can do this with an
emulator and SEU, but now we're talking about a PC again.  A good
editor also has a better definition of a "word" for the sake of cursor
movement, and doesn't need whitespace but will recognize whatever you
configure for that language for delimiters, such as : or ( or
whatever.

>There is one copy of Code/400 on every PC that has a
>developer using it and PC's require constant attention.

PC's don't require constant attention unless you are constantly
installing software and getting into "DLL Hell", or you've never
gotten out of DLL Hell after a previous install of something.  Run NT
or W2K and quit playing with settings and they are much more stable
than you give them credit for.  I'm by no means saying it is on par
with OS/400 -- but constant attention is only required when you
constantly change the machine.

>I know that Code/400 has facilities not in SEU, but I (and others) don't want 
>to
>use a Windows based product and want the features added to SEU.

The features I talked about above were in relation to a block-mode
device vs keystroke sensitive logic.  Many other features are not as
reliant on real-time keystroke processing but are context sensitive,
for example:

 - Jump to a subroutine/subprocedure named under the cursor, and
optionally put it in a different window for concurrent work.  (When
not in a new wnidow, set an automatic bookmark to make it easy to
return to where you had been.)  This makes navigating programs
incredibly easy.  Sure you can press F10 and type F name x where x is
18 or 12 (rpg iv) or 8 (proc name), but by the time your finger is off
the F10 key I'm already looking at the new source

 - Jump to a matching end statement regardless of nest levels (or from
an end to a begining of a structure), or select an entire block with a
single key instead of having to find the start and end points.  As you
"desk-check" code, this lets you immediately branch to an end point to
follow program flow, regardless of whether or not it is visible and
regardless of intervening nest levels.

 - Collapse view to just lines containing field under the cursor (like
doing an exclude all then find of the word -- but where it only finds
occurences where the word is used as a field name, not within a
comment or whatever).  Plus the ability to expand just the lines
around a given occurence for inspection/edit.

Numerous other things aren't even context sensitive -- they are just
basic editing features.  For example:

 - Multiple windows to the *same* source member, all editable at the
same time, with changes in one obviously affecting the others (in real
time if visible).  One window on D-specs for adding/viewing variable
definitions, one on the program mainline or other area of interest,
others drilled down to various other positions.

 - Multiple different members open for edit (not browse) with copy and
paste or drag & drop between them.  This precludes using multiple
sessions, one per member.  It is more like F15, with an editible
lower-half of the screen.

 - File differencing for comparing versions, with color coded
highlighting, side-by-side synchronized scrolling, and the ability to
transfer changes*easily* or manual drag & drop.  You may consider this
the domain of a change management system, but my editor (Flex/Edit)
has it built-in.  I don't know if CODE does or not.

 - Regular expression search and replace for advanced pattern
matching.  Regex is something every unix person understands, but
probably not as many 400 folk.  The more you use it, the more you
appreciate its flexibility.

 - Collapsible compact mode. This is like doing an exclude all, then a
find of every BEGSR and procedure begin statement.  Select any line to
expand just the one routine, then be able to collapse it again.

 - Bookmarks to set return points to spots of interest.

 - Template expansion for code blocks with prompting for variables to
be inserted, and control over where the cursor ends after expansion

 - Macro support which is more than just keystroke playback, but more
like what VBA macros would allow in Word.  These need to be able to
manipulate the buffer, but not duplicate function already in SEU.  EG,
you should be able to cause a find or replace to occur, but using
SEU's find/replace support.  Then based on the success of the
operation, perform other operations.  

Some of these could be done in SEU with line commands or command line
actions, but most of them not with the current exit points.  You can't
make SEU go through a sequence of actions like even a simple macro
processor.  You can't issue a single action for that matter - like a
Find or Replace.  You can't even reposition the source for goodness
sake.  And you can't modify text outside the block or line containing
the command, so you can't make a simple command to act on the source
without having to mark the top and bottom statements then suffer the
overhead of copying the SEU work area to the qtemp user space, then
have SEU reload it.

The idea of user-defined SEU commands sounded great at first blush,
since I've been using extensible editors for a long time.  But the
implementation in SEU only touches the surface of what you'd need to
make it really extensible.

Doug

PS - I don't store my source on the PC either.  I keep it on the 400.
And I use PDM, with a user-defined option to edit it via the PC.  It
opens in my PC editor *faster* than SEU except for real small members,
which don't take much time with either method.

PPS - I realize I won't convert you, because your mind is made up.
But you asked why SEU's block-mode interface is inherently incapable
of matching a workstation-based editor.  It is not Windoze or a GUI
which enables this stuff -- I did it under DOS too.
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@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.