The job controller can request seven functions from the symbiont.
They are identified by the following codes:
SMBMSG$K_START_STREAM SMBMSG$K_STOP_STREAM
SMBMSG$K_START_TASK SMBMSG$K_PAUSE_TASK
SMBMSG$K_RESUME_TASK SMBMSG$K_STOP_TASK
SMBMSG$K_RESET_STREAM
The job controller passes the symbiont a request containing
a code and, optionally, a number of message items containing
information the symbiont might need to perform the function. The
code specifies what function the request is for, and the message
items contain information that the symbiont needs to carry out
the function.
By calling SMB$READ_MESSAGE, the symbiont reads the request
and writes the message items into the specified buffer. The
symbiont then obtains the individual message items by calling
the SMB$READ_MESSAGE_ITEM routine.
Each message item consists of a code that identifies the
information the item represents, and the item itself. For
example, the SMB$K_JOB_NAME code tells the symbiont that the
item specifies a job's name.
The number of items in a request varies with each type of
request. Therefore, you must call SMB$READ_MESSAGE_ITEM
repeatedly for each request to ensure that all message items
are read. Each time SMB$READ_MESSAGE_ITEM reads a message item,
it updates the value in the longword specified by the context
argument. SMB$READ_MESSAGE_ITEM returns the code SMB$_NOMOREITEMS
after it has read the last message item.
The following table shows the message items that can be delivered
with each request:
Request Message Item
SMBMSG$K_START_TASK SMBMSG$K_ACCOUNT_NAME
SMBMSG$K_AFTER_TIME
SMBMSG$K_BOTTOM_MARGIN
SMBMSG$K_CHARACTERISTICS
SMBMSG$K_CHECKPOINT_DATA
SMBMSG$K_ENTRY_NUMBER
SMBMSG$K_FILE_COPIES
SMBMSG$K_FILE_COUNT
SMBMSG$K_FILE_IDENTIFICATION
SMBMSG$K_FILE_SETUP_MODULES
SMBMSG$K_FILE_SPECIFICATION
SMBMSG$K_FIRST_PAGE
SMBMSG$K_FORM_LENGTH
SMBMSG$K_FORM_NAME
SMBMSG$K_FORM_SETUP_MODULES
SMBMSG$K_FORM_WIDTH
SMBMSG$K_JOB_COPIES
SMBMSG$K_JOB_COUNT
SMBMSG$K_JOB_NAME
SMBMSG$K_JOB_RESET_MODULES
SMBMSG$K_LAST_PAGE
SMBMSG$K_LEFT_MARGIN
SMBMSG$K_MESSAGE_VECTOR
SMBMSG$K_NOTE
SMBMSG$K_PAGE_SETUP_MODULES
SMBMSG$K_PARAMETER_1
.
.
.
SMBMSG$K_PARAMETER_8
SMBMSG$K_PRINT_CONTROL
SMBMSG$K_SEPARATION_CONTROL
SMBMSG$K_REQUEST_CONTROL
SMBMSG$K_PRIORITY
SMBMSG$K_QUEUE
SMBMSG$K_RIGHT_MARGIN
SMBMSG$K_TIME_QUEUED
SMBMSG$K_TOP_MARGIN
SMBMSG$K_UIC
SMBMSG$K_USER_NAME
SMBMSG$K_STOP_TASK SMBMSG$K_STOP_CONDITION
SMBMSG$K_PAUSE_TASK None
SMBMSG$K_RESUME_ SMBMSG$K_ALIGNMENT_PAGES
TASK
SMBMSG$K_RELATIVE_PAGE
SMBMSG$K_REQUEST_CONTROL
SMBMSG$K_SEARCH_STRING
SMBMSG$K_START_ SMBMSG$K_DEVICE_NAME
STREAM
SMBMSG$K_EXECUTOR_QUEUE
SMBMSG$K_JOB_RESET_MODULES
SMBMSG$K_LIBRARY_SPECIFICATION
SMBMSG$K_STOP_ None
STREAM
SMBMSG$K_RESET_ None
STREAM
The following list describes each item code. For each code, the
list describes the contents of the message item identified by
the code and whether the code identifies an item sent from the
job controller to the symbiont or from the symbiont to the job
controller.
Many of the codes described are specifically oriented toward
print symbionts. The symbiont you implement, which might not
print files or serve an output device, need not recognize all
these codes. In addition, it need not respond in the same way as
the print symbiont to the codes it recognizes. The descriptions
in the list describe how the standard print symbiont (PRTSMB.EXE)
processes these items.
NOTE
Because new codes might be added in the future, you should
write your symbiont so that it ignores codes it does not
recognize.