The terminal user can enter data in the partial formats, but is not required to enter data in every one.
Since openUTM passes all variable fields, after the INIT call the KCRMF/kcrfn field contains the name of the first partial format containing variable fields. After the MGET call KCRMF/kcrfn contains the name of the next partial format with variable fields. After the last partial format with variable fields has been read KCMF = KCRMF (kcfn=kcrfn). If you try to read another partial format, although the message has already been entirely read, openUTM responds with the return code 10Z.
Example
In the preceding program unit run there was an MPUT output with the 3 partial formats: PARFOR1, PARFOR2, PARFOR3; variable fields are present only in PARFOR1, PARFOR2
KDCS call: | Returned by openUTM: | |
---|---|---|
INIT | KCRMF = PARFOR1 | |
MGET | KCMF = PARFOR1 KCLA = ... | KCRMF = PARFOR2 |
MGET | KCMF = PARFOR3 | KCRMF = PARFOR2 |
MGET | KCMF = PARFOR2 | KCRMF = PARFOR2 |
MGET | KCMF = ... | KCRMF = PARFORF2 |
Entering a format consisting of multiple partial formats to start a service
If you want to start a service by entering a format consisting of multiple partial formats you can use the first variable field of the first partial format to specify the transaction code (for other options, see "Using partial formats (BS2000 systems)".
openUTM then automatically separates the field with the transaction code from the
message: for *formats the first 8 characters (transaction code) are removed in the first partial format, for +formats the first 10 characters (attribute field and transaction code). The other partial formats remain unchanged.
An asynchronous service can also be started using a format consisting of multiple partial formats which was output at the end of a dialog service. The asynchronous program must be written in the same way as the dialog version: the INIT call provides the name of the first partial formats with variable fields in KCRMF/kcrfn. Using FGET the program can retrieve the input data from this partial format. In the case of an empty input message (transaction code without data), the FGET call returns 10Z to the program unit.