PUT [ HP Transact Reference Manual ] MPE/iX 5.0 Documentation
HP Transact Reference Manual
PUT
Moves data from the data register to a file, data set, or a VPLUS form.
Syntax
PUT[(modifier)] destination [,option-list];
PUT moves an entry from the list and data registers into a file or a data
set; or it displays data in a VPLUS form.
Statement Parts
modifier To specify the type of access from the data set or file,
choose one of the following modifiers.
none Adds an entry, based on the list and data
registers, into a file or a data set.
FORM Displays a VPLUS form on any VPLUS compatible
terminal, and moves data to the form from the
data register. If this modifier is not used,
the destination must be a file or data set.
destinationThe file, data set, or form to be accessed in the write
operation.
If the destination is a data set that is not in the home base
as defined in the SYSTEM statement, the base name must be
specified in parentheses as follows:
set-name(base-name)
In a PUT(FORM) statement, the destination must identify a form
in a forms file that was named in the SYSTEM statement. For
PUT(FORM) only, destination can be specified as any of the
following:
form-name Name of the form to be displayed by PUT(FORM).
(item-name Name of an item that contains the name of the
[(sub- form to be displayed by PUT(FORM). The item-name
script)]) can be subscripted if an array item is being
referenced. (See "Array Subscripting" in
Chapter 3.)
* Displays the form identified by the "current"
form name. That is the form name most recently
specified in a statement that references VPLUS
forms. Note that this option is not the same as
the CURRENT option (described under option-list)
that indicates the currently displayed form.
& Displays the form identified as the "next" form
name. That is the form name defined as "NEXT
FORM" in the FORMSPEC definition of the current
form.
option- The LIST= option and the STATUS option are always available.
list The other options described below, may be used only without or
only with the FORM modifier.
The list of items from the list register to be used for the
PUT operation. For data sets, no child items can be specified
in the range list. For PUT(FORM) only, items in the range
list can be child items.
If the LIST= option is omitted with any modifier except FORM,
all the items named in the list register are used. If the
LIST option is omitted for PUT(FORM), the list of items in the
list register, and either in the SYSTEM statement or the data
dictionary for the form are used.
The LIST= option should not be used when specifying an
asterisk (*) as the source.
LIST= The list of items from the list register to be
(range-list) used for the PUT operation. For PUT(FORM) only,
items in the range list can be child items.
For all options of range-list, the data items
selected are the result of scanning the data
items in the list register from top to bottom,
where top is the last or most recent entry.
(See Chapter 4 for more information on
registers.)
The LIST= option has a limit of 64 individually
listed item names. A range limitation of 255
items for TurboIMAGE data sets and 128 items for
VPLUS forms also exists.
All item names specified must be parent items
for files or data sets.
The options for range-list and the records upon
which they operate include the following:
(item-name) A single data item.
(item-nameX: All the data items in the range
item-nameY) from item-nameX through the last
occurrence of item-nameY.
In other words, the list register
is scanned for the occurrence of
item-nameY closest to the top of
the list register. From that
entry, the list register is
scanned for item-nameX. All data
items between are selected. An
error is returned if item-nameX is
between item-nameY and the top of
the list register.
Duplicate data items can be
included or excluded from the
range, depending on their position
on the list register. For
example, if range-list is A:D and
the list register is as follows,
then data items A, B, C, D, and D
are selected. For database files,
an error is returned if duplicate
entries are selected.
If item-nameX and item-nameY are
marker items (see DEFINE(ITEM)
verb) and if there are no data
items between the two in the list
register, no database access is
performed.
(item- All data items in the range from
nameX:) the last entry through the
occurrence of item-nameX closest
to the top of the list register.
(:item- All data items in the range from
nameY) the occurrence of item-nameY
closest to the top through the
bottom of the list register
(item-nameX, The data items are selected from
item-nameY, the list register. For databases,
... data items can be specified in any
item-nameZ) order. For KSAM and MPE files and
VPLUS forms, data items must be
specified in the order of their
occurrence in the physical record
or form. This order need not
match the order of the data items
on the list register. Do not
include child items in the list
unless they are defined in the
VPLUS form. This option incurs
some system overhead.
(@) Specifies a range list of all data
items of destination as defined in
a dictionary. This range is
defined as item-name-1:item-name-n
for the file.
(#) Specifies an enumeration of all
data items of destination as
defined in the data dictionary.
The data items are specified in
the order of their occurrence in
the physical record or form as
defined in the dictionary. This
order need not match the order of
the data items in the list
register.
( ) A null data item list. That is,
accesses the file or data set, or
displays the form, but does not
transfer any data.
STATUS Suppresses the action defined in Chapter 7 under
"Automatic Error Handling." If you use this
option, you should program your own error
handling procedures.
When STATUS is specified, the effect of a PUT
statement is described by the 32-bit integer
value in the status register:
Status Meaning
Register
Value
0 The PUT operation was successful.
-1 A KSAM or MPE end-of-file condition
occurred.
> 0 For a description of the condition
that occurred, refer to the
condition word or MPE/KSAM file
system error documentation
corresponding to the value.
PUT with the STATUS option could be used as
shown in the following example. When a data set
is full, you may want to write to an overflow
file. To trap and display the full error
condition, you could use the following code:
PUT DATA-SET,
LIST=(A:N),
STATUS;
IF STATUS <> 0 THEN << Error, check it out >>
IF STATUS <> 16 THEN << Unexpected error >>
GO TO ERROR-CLEANUP
ELSE << Write to overflow >>
DO << Set full >>
PUT OVERFLOW,
LIST=(A:N),
STATUS;
IF STATUS <> 0 THEN
GO TO ERROR-CLEANUP;
DISPLAY "OVERFLOW FILE USED";
DOEND;
Options Available Without the Form Modifier
ERROR=label Suppresses the default error return that Transact
([item-name]) normally takes. Instead, the program branches to the
statement identified by label, and Transact sets the
list register pointer to the data item item-name.
Transact generates an error at execution time if the
item cannot be found in the list register. The
item-name must be a parent.
If you do not specify an item-name, as in
ERROR=label();, the list register is reset to empty.
If you use an "*" instead of item-name, as in
ERROR=label(*);, then the list register is not
changed. For more information, see "Automatic Error
Handling" in Chapter 7.
LOCK Locks the specified file or database. If a data set
is being accessed, the lock is set the whole time
that PUT executes. If the LOCK option is not
specified but the database is opened in mode 1, then
automatic locking will execute the lock.
For a KSAM or MPE file, if LOCK is not specified on
PUT but is specified for the file in the SYSTEM
statement, then the file is locked before each entry
is retrieved, remains locked while the entry is
processed by any PERFORM= statements, but is unlocked
briefly before the next entry is retrieved.
Including the LOCK option will override the
SET(OPTION) NOLOCK for the execution of the PUT verb.
A database opened in mode 1 must be locked while PUT
executes. For transaction locking, you can use the
LOCK option on the LOGTRAN verb instead of the LOCK
option on PUT if SET(OPTION) NOLOCK is specified. If
a lock is not specified (for a database opened in
mode 1) an error is returned.
See "Database and File Locking" in Chapter 6 for more
information on locking.
NOMSG Suppresses the standard error message produced by
Transact as a result of a file or database error.
RECNO=item-name Places the record number of the new entry into the
[(subscript)] data register space for item-name. Item-name must be
defined as a 32-bit integer. such as I(10,,4). It
can be subscripted if an array item is being
referenced. (See "Array Subscripting" in Chapter 3.)
Options Available Only With the Form Modifier
APPEND Appends the next form to the specified form,
overriding any freeze or append condition specified
for the form in its FORMSPEC definition. APPEND sets
the FREEZAPP field of the VPLUS comarea to 1.
CLEAR Clears the previously displayed form when the
requested form is displayed, overriding any freeze or
append condition specified for the form in its
FORMSPEC definition. CLEAR resets the FREEZAPP field
of the VPLUS comarea to zero.
CURRENT Uses the form currently displayed on the terminal
screen. That is, performs all the PUT(FORM)
processing except retrieving and displaying the form.
Use this option to avoid the processing that normally
occurs when a new form is displayed.
CURSOR=field-name Positions the cursor within the specified field. The
item-name field-name identifies the field and the item-name
[(subscript)] identifies the item which names the field. The
item-name can be subscripted if an array item is
being referenced. (See "Array Subscripting" in
Chapter 3.)
____________________________________________________
NOTE To ensure that the cursor will be positioned on
the correct field, you must have a one to one
correspondence between the fields defined in
VPLUS. Transact determines where to position
the cursor by counting the fields.
____________________________________________________
FEDIT Performs the field edits defined in the FORMSPEC
definition for the form immediately before displaying
it.
FKEY=item-name Moves the number of the function key pressed by the
[(subscript)] user in this operation to the single word integer
item-name. The function key number is a digit from 1
through 8 for function keys f1 through f8, or zero
for the ENTER key. Transact determines which
function key was pressed from the value of the field
LAST-KEY in the VPLUS comarea. The item-name may be
subscripted if an array item is being referenced.
(See "Array Subscripting" in Chapter 3.)
Fn=label Control passes to the labeled statement if the user
presses function key n. n can have a value of 0
through 8, inclusive, where zero indicates the ENTER
key. This option can be repeated as many times as
necessary in a single PUT(FORM) statement.
FREEZE Freezes the specified form on the screen and appends
the next form to it, overriding any freeze or append
condition specified for the form in its FORMSPEC
definition. FREEZE sets the FREEZAPP field of the
VPLUS comarea to 2.
INIT Initializes the fields in the displayed form to any
initial values defined for the form by FORMSPEC, or
performs any Init Phase processing specified for the
form by FORMSPEC. PUT(FORM) performs the INIT
processing before it transfers any data from the data
register and before it displays the form on the
screen.
WAIT=[Fn] Does not return control to the program until the
terminal user has pressed the function key n. n can
have a value of 0 through 8, where 1 through 8
indicate the keys f1 through f8 and 0 indicates the
ENTER key.
If the user presses any function key other than one
requested by the WAIT option, Transact displays a
message in the window and waits for the next function
key to be pressed. If Fn is any key other than f8,
the f8 exit function is disabled.
If Fn is omitted, PUT(FORM) waits until any function
key is pressed. If the user presses any of the
function keys f1 through f7, the next record will be
PUT; f8 retains its exit function.
If the WAIT option is omitted altogether, PUT(FORM)
clears the screen and returns control to the program
immediately after displaying the form with its data.
For example:
PUT(FORM) (FORMNAME), << Display form named in FORMNAME >>
LIST=(A:C),
WAIT=; << Wait for user to press any key >>
WINDOW= ([field,] Places a message in the window area of the screen
message) and, optionally, enhances a field in the form. The
fields field and message can be specified as follows:
field Either the name of the data item
for the field to be enhanced, or
an item-name within parentheses
which will contain the data item
of the field to be enhanced at
run time.
message Either a "string" in quotes that
specifies the message to be
displayed, or an item-name within
parentheses containing the
message string to be displayed in
the window.
The following example shows this
option when the field name and
message are specified directly:
PUT(FORM) FORM1,
LIST=(A,C,E),
WINDOW=(A,"Press f1 if data is correct."),
WAIT=F1;
In the next example, both the
field and the message are
specified through an item-name
reference:
DEFINE(ITEM) ENHANCE U(16):
MESSAGE U(72);
MOVE (ENHANCE) = "FIELD1";
MOVE (MESSAGE) = "This field may not be changed";
PUT(FORM) *, << Display current form >>
LIST=(),
WINDOW=((ENHANCE),(MESSAGE));
Examples
The following command sequence prompts for new customer information and
adds this information to the customer master file:
$$ADD:
$CUSTOMER:
PROMPT CUST-NO:
CUST-NAME:
CUST-ADDR:
CUST-CITY:
CUST-STATE:
CUST-ZIP;
PUT CUST-MAST, LIST=(CUST-NO:CUST-ZIP);
The next example displays a header form and then appends a form with data
to the header. After appending the data form 10 times, each time with
new data, the program asks the user if he wants to continue. The data to
be displayed is taken from the data register; the particular items are
determined by the LIST= option. In this example, the data in the data
register is retrieved from a data set by the FIND statement.
LIST CUST-NO:
LAST-NAME:
FIRST-NAME:
COUNT;
PUT(FORM) HEADER, << Freeze header form on screen >>
LIST=(),
FREEZE;
LET (COUNT) 0;
FIND(SERIAL) CUSTOMER, << Get data from database >>
LIST=(CUST-NO:FIRST-NAME),
PERFORMLIST-FORM;
:
LIST-FORM:
IF (COUNT) < 10 THEN << Append data form 9 times >>
DO
LET (COUNT) = (COUNT) + 1;
PUT(FORM) CUSTLIST,
LIST=(CUST-NO:FIRST-NAME),
APPEND;
DOEND
ELSE
DO
LET (COUNT) = 0;
PUT(FORM) CUSTLIST, << At 10th iteration, >>
LIST=(CUST-NO:FIRST-NAME), << wait for user input >>
WINDOW=("Press any function key to continue"),
APPEND,
WAIT=;
DOEND;
RETURN;
The last example shows how the LIST=(#) option works, given a data set
defined as follows:
NAME: SUP-MASTER, MANUAL(13/12,18), DISC1
ENTRY: SUPPLIER(1),
STREET-ADD,
CITY,
STATE,
ZIP,
CAPACITY: 200;
The statement:
PUT SUP-MASTER,LIST=(#);
is equivalent to the statement:
PUT SUP-MASTER,LIST=(SUPPLIER,STREET-ADD,CITY,STATE,ZIP);
MPE/iX 5.0 Documentation