Rdb: Ruby-Nachbau der MWC /rdb-Werkzeuge

This commit is contained in:
wkh
2026-10-11 20:33:17 +02:00
commit a9990169e9
308 changed files with 16738 additions and 0 deletions
+190
View File
@@ -0,0 +1,190 @@
.TH screen "" "" "/rdb Command"
.PC "Convert a form into a screen-input shell program"
\fBscreen < \fIform\fB > \fIshellprogram\fR
.PP
.II "screen^make input form"
The command
.B screen
reads
.I form
and writes a COHERENT shell program that paints the screen and reads
a user's input.
Because the output of
.B screen
is a shell script, you can edit it to validate data,
read data and write it onto the screen, and so on.
.I form
must be in the same format as described in the manual entry for the command
.BR report .
.PP
.B screen
writes a simple shell script.
The script works ``as is'' to read data
typed onto the screen and to write a standard table.
It uses the
.B /rdb
command
.B cursor
to move to each input field on the screen.
.PP
A script output by
.B screen
can be used in many ways.
You can use it as a form, to enter data into a new table.
You can edit the script to have it append its output into an
existing table,
to pass its data via a pipe to another command, or to read
data from a table and display them on the screen.
Commands can be edited into the screen-form script.
You can add calls to the
.B /rdb
command
.BR validate ,
to confirm that the user has added data that are at least sensible.
You can even embed the script within another shell script, to perform
screen entry for it.
.SH "Setup Steps"
To create a screen-entry form, do the following:
.IP \fB1.\fR
Use your text editor to write the screen-form file.
.IP \fB2.\fR
Run
.B screen
to read the form file.
Redirect its output into the file in which you wish to store the form's
executable script.
.IP \fB3.\fR
Edit the shell script to meet your requirements,
such as adding validation, record locking, and so forth.
.IP \fB4.\fR
Run the executable shell script to input data and write a new table.
.SH Example
A simple form looks like this:
.DM
Mail List Entry Form
<!date!>
.sp \n(pDu
Name : <Name> Company: <Company>
Street: <Street>
City : <City> State : <State> ZIP: <ZIP>
Phone : <Phone>
.DE
.PP
Everything is written to the screen except what is between angle brackets
``<>'', which are variables to be input.
Exclamation marks within angle brackets (e.g., \fB<!date!>\fR)
mark commands to execute when the program is running.
.PP
When
.B screen
reads the above form and compiles it, it writes the following shell script:
.DM
: paint crt screen
exec 1>/dev/tty
cat <<SCREEN
${CLEAR} Mail List Entry Form
.DE
.DM
Name : Company:
Street:
City : State : ZIP:
Phone :
.DE
.DM
SCREEN
.sp \n(pDu
: read user input
cursor 1 23 ; date;
cursor 3 8 ; read Name;
cursor 3 36 ; read Company;
cursor 4 8 ; read Street;
cursor 5 8 ; read City;
cursor 5 36 ; read State;
cursor 5 55 ; read ZIP;
cursor 6 8 ; read Phone;
.DE
.DM
: output table head
exec 1>&2
echo "Name Company Street City State ZIP Phone"
echo "---- ------- ------ ---- ----- --- -----"
: append row
echo "$Name $Company $Street $City $State $ZIP $Phone"
.DE
.PP
This shell progam is in three parts, each introduced by a comment:
.IP "\fBpaint crt screen\fR"
This section clears the screen, then paints the form onto it.
.IP "\fBread user input\fR"
This section
moves the cursor to each input field, then waits for
the user to enter a string of characters.
Each field is linked to a column; that is, what the user types in that field
will be written into the column to which the field is linked.
.IP "\fBoutput table head\fR"
The final section writes the new table in standard
.B /rdb
format; that is, a column header followed by the row of data entered by the
user.
.PP
To let you use the screen program in a pipe,
the generated commands send the interactive output to the screen through the
standard output temporarily tied to
.BR /dev/tty ,
and to the output table through the standard-error device.
To accomodate COHERENT's implementation of
.BR exec ,
you must tie the standard error to the standard output
when you run the script screen has created.
For example
.DM
mail.s > mail.t 2>&1
.DE
.PP
The following shows the form compiled above, with example data:
.B1
Mail List Entry Form
Wed Sep 4 14:09:30 EDT 1987
.sp
Name : Hi Ho Company:
Street: 1st St.
City : LA State : CA ZIP: 90024
Phone : 213-555-1212
.B2
.PP
The above input creates the following table:
.PP
.DM
Name Company Street City State ZIP Phone
---- ------- ------ ---- ----- --- -----
Hi Ho HH Inc. 1st St. LA CA 90024 213-555-1212
.DE
.PP
You can redirect output into a file or pipe.
Here, it was directed into table
.BR mail.t .
You can use this table as its stands alone,
or you can append it to another table by by piping it to the
.B append
command.
For example:
.DM
mail.s 2>&1 | append mail.t
.DE
.SH "See Also"
.B
cursor,
lock,
unlock,
validate
.R
.br
COHERENT Lexicon:
.B
cat,
echo,
exec,
ksh,
read,
sh
.R