Guardian Procedure Calls Reference Manual
Table 44 SETMODE Functions (continued)
Parameters and EffectFunction
If the file is audited and structured, the file must be opened with an access mode of read-only. The exclusion
mode can be shared, protected, or exclusive. If the exclusion mode is shared, updates done by other
openers of the file might not be seen by this opener.
If the file is audited and unstructured, only read operations can be performed on the file after this SETMODE
is issued with param1 set to 1. Write operations must not be issued until the SETMODE is reissued with
param1 set to 0.
If the file is not audited, the file can be opened with any access mode and any exclusion mode. If the
exclusion mode is shared, updates done by other openers of the file might not be seen by this opener.
To issue write requests after the SETMODE is issued with param1 set to 1, the exclusion mode must be
exclusive.
Once the large transfer mode is enabled, only the data transfer operations of READ[X], READUPDATE[X],
WRITE[X], and WRITEUPDATE[X] are allowed. No record locks are supported. READ[X] and WRITE[X]
use the record address in NEXTREC. READUPDATE[X] and WRITEUPDATE[X] use the record address in
CURREC. POSITION can be used to set CURREC and NEXTREC. Relative byte addressing is used for
positioning.
The operation is done nowait if the file is opened for nowait I/O. The operation must then be completed
by a call to AWAITIOX. The operation can be canceled by CANCEL or CANCELREQ.
With the large transfer mode enabled, data is read or written directly from the user's buffer. The user's
buffer is locked in memory until completion of the operation. The data is not moved to or from the PFS
(regardless of the setting of SETMODE function 72). If the I/O is done nowait, the user must not modify
or examine the data in the buffer until the I/O has finished. This also applies to other processes sharing
the segment containing the buffer. If the I/O is done in a nowait manner and the buffer is in the stack,
the buffer must be in the high end of the stack.
The record address (in NEXTREC or CURREC) must be on a page boundary (a multiple of 2K bytes) or
error 550, "invalid position," will be returned. Note that, as usual, when performing successive READ[X]s
without intervening POSITIONs, NEXTREC is incremented by the count actually read, and that just before
the EOF, the count read will probably not be a multiple of 2K bytes, hence violating the record address
constraint for the next READ[X] call. A POSITION before each READX call ensures that the record address
meets the page boundary constraint.
f -1D positioning is used, the current EOF must be on a page boundary, otherwise the disk process returns
an error. If -1D positioning is used or writes are done that change the EOF, some performance gains are
lost. When the EOF is changed, DP2 must do extra checkpoints. To avoid the extra checkpoints, issue a
CONTROL 2 to set the EOF to a high value before starting a series of large writes. When the writes are
complete, another CONTROL 2 can be issued to set EOF to the correct value.
The length of the transfer cannot be more than 57344 bytes. The length must be a multiple of 2K bytes.
Also, some older Expand connections do not support transfers of more than 30K bytes and return an
error if a larger transfer is attempted.
Large transfer requests are considered repeatable, so no sync ID is passed to the disk process. If the file
is opened with a positive sync depth, normal retries occur after path failures.
A positive sync depth must not be used with -1D positioning, because writes to the end of a file are not
repeatable. If a path failure occurs, determine whether the data was written before the path failure. If the
data was not written, issue a retry.
Since DP2's cache is bypassed by these operations and the data is read from or written to the disk file
directly, records or blocks modified by other openers might not be seen by these requests. The user might
see "dirty" data if access mode and exclusion mode are not set carefully.
Select Character Set142
select default character set.= 0param1
select IBM PC character set.= 1
param2 is not used with function 142. If supplied, it must be 0.
For 5512, 5515/5516, and 5573 printers, the I/O process sends these ESC sequences to select the
character set:
select default character set.ESC(1O@
select IBM PC character set.ESC(1OU
SETMODE Procedure 1337