To my knowledge there is no standard for entering arbitrary control
characters on EDCBIC terminals. When you search for how others have solved
the problem, you will probably find that depending on the purpose of the
software, the type of user, the kind of data, etc., that there are multiple
good ways to do it.

I suggest that without a standard, you will have to decide the best way for
you situation.

-----Original Message-----
From: Linux on 390 Port [mailto:[email protected]] On Behalf Of karl
williamson
Sent: Friday, April 02, 2010 1:59 PM
To: [email protected]
Subject: Re: How to enter control characters from an EBCDIC keyboard?

David Boyes wrote:
>> I'm working on EBCDIC support for Perl 5.  I'm not familiar with EBCDIC
>> terminals, but apparently there are asynchronous ones.
>
> Very, VERY rare -- to the point of almost non-existent. The 3270 is the
primary terminal type, and it's half-duplex, page-oriented. The older
line-mode terminal (the 3215) is emulated, and pretty much behaves as a dumb
TTY.
>
>> How can one enter a control character from such a terminal?  On ASCII
>> terminals, pressing the Ctrl key and another at the same time generates
>> a control sequence.  Since H is the eighth letter of the alphabet,
>> CTRL-H sends 8, which is a backspace on ASCII platforms.  Is there
>> something similar that happens on EBCDIC?
>
> The convention to enter a control character is to use the digraph
'^<letter>' (EBCDIC not or cent sign (depending on code page) + character)
and have apps translate that to the appropriate code point. The issue is
that control characters in a 3270 world don't work the way they do on
byte-oriented terminals, so they're rare (if not almost non-existent) in the
3270 environment. In the rare event a control character is used, it's almost
always represented as a hex value in a string (for example to enable color
or highlighting), and those don't occur as control characters.
>

I don't understand the above.  On ASCII terminals, often a control is
printed as '^<letter.', but entering requires pressing two keys at the
same time.  It seems like you are saying that the terminal will send a
control character whenever a not or cent or maybe caret is typed
whenever followed by a letter.  If so, how then does one enter these
three characters literally?  And where could I find a mapping to look
at, a sample for one of the code pages?

>> The few EBCDIC code pages that I'm familiar with have 65 controls: 0 to
>> 0x1F plus 0xFF.  Are all 65 enterable from the keyboard?
>
> See above.
>
>> I see from the archives that there are some problems between the ASCII
>> LF (or NL) and the EBCDIC NEL.  Is there a rule of thumb for which of
>> these, or both, should mean a new-line, matching, say, '\n' in the C
>> language?
>
> On a page-oriented terminal, the concept is somewhat difficult to
represent. Writing a newline doesn't actually update the screen until you
rewrite the page. On the older terminals (3215), the equivalent would be
processing a CR/LF pair. In fact, you pretty much need to assume that all
line-oriented I/O has exactly the function of a TTY. No cursor positioning,
nothing smarter than a TTY.
>
>> Also, in looking at the Perl 5 source code, it is clear to me that no
>> one is running modern Perl versions on EBCDIC platforms, because it
>> wouldn't work.  But I can't imagine a Linux system without Perl.  Could
>> someone explain?
>
> Linux on z is an ASCII system. Perl works just like it does elsewhere.
Ditto with OpenSolaris for Z.
>
> There isn't anything in the Z hardware that dictates the use of particular
character sets; it's just what you program it to recognize as character
graph 'A'. IBM has included machine instructions to help process EBCDIC
data, but that's for the convenience of OSes who choose to code data that
way.
>
> I guess I would ask "what kind of EBCDIC support are you creating"? Other
than providing a string translation function (to_ascii, or to_ebcdic), I'm
not sure what EBCDIC support for Perl would mean. Perl already has a
codepage mapping toolset, and there are a number of EBCDIC variations, so
the question of "which EBCDIC?" comes up. Are you porting Perl to a specific
IBM OS? If so, that might be a very different set of questions.
>
> -- db
>
> ----------------------------------------------------------------------
> For LINUX-390 subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO LINUX-390 or
visit
> http://www.marist.edu/htbin/wlvindex?LINUX-390
>

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO LINUX-390 or
visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390

Reply via email to