Verb Control Blocks (VCBs)

Programming Note: The base operating system optimizes performance by executing some subsystems in the calling application's address space. This means that incorrect use of local descriptor table (LDT) selectors by application programs can cause improper operation, or perhaps system failures.Accordingly, application programs should not perform pointer arithmetic operations that involve changing the LDT selector field of a pointer.

The segment used for the verb control block (VCB) must be a read/write data segment. Your program can either declare the VCB as a variable in your program, allocate it, or suballocate it from a larger segment. It must be sufficiently large to contain all the fields for the verb your program is issuing.

An application program should not change any part of the verb control block after it has been issued until the verb completes. When Node Operator Facility finishes the execution of a verb, it copies a complete, modified VCB back onto the original block. Therefore, if your program declares a verb control block as a variable, consider declaring it in static storage rather than on the stack of an internal procedure.

Fill all reserved and unused fields in each VCB with zeros (X'00'). In fact, it might be more time-efficient to set the entire verb control block to zeros before your program assigns the values to the parameters. Setting reserved fields to zeros is particularly important.
Note:
If the VCB is not read/write, or if it is not at least 10 bytes (that is, large enough to hold the Node Operator Facility primary and secondary return codes), Node Operator Facility cannot access it, and the base operating system abnormally ends the process. This termination is recognized as a general protection fault, processor exception trap D.

Node Operator Facility returns the INVALID_VERB_SEGMENT primary return code when the VCB is too short or the incorrect type of segment is used.