
{PURPOSE:
{
{ IIP$VTP_GET_NEXT conceptually replaces AMP$GET_NEXT and AMP$GET_PARTIAL.  It
{ skips the Interactive FAP associated with the AMP$ interfaces, and directly
{ calls NAM/VE.  Thus device dependency is the responsibility of the application.
{
{ IIP$VTP_GET_NEXT has parameters similar to AMP$GET_NEXT, but has some
{ essential behavioral differences:
{
{   AMP$GET_NEXT always discards the VTP header.  IIP$VTP_GET_NEXT always
{   returns the VTP header thru an additional parameter. The header is
{   described by type IIT$VT_INPUT_INFORMATION.
{
{   AMP$GET_NEXT is normally used in conjunction with AMP$PUT_NEXT to
{   provide a variety of services.  IIP$VTP_GET_NEXT is intended to be used in
{   conjunction with IIP$VTP_PUT_NEXT, and they do not provide most of the
{   special services.  This is discussed in greater detail in the documentation
{   of IIP$VTP_PUT_NEXT.
{
{   With the AMP$ routines, the file identifier must be for a terminal file.
{   With the these routines, it must be that of a network file.
{   For the ordinary one-job/one-terminal architecture, filename $LOCAL.$TERMINAL
{   will suffice. IIP$VTP_OPEN_NETWORK will take care of this for you.
{
{ Compared to AMP$GET_NEXT, IIP$VTP_GET_NEXT adds some parameters.  One is used
{ to return the VTP header, as discussed above.  The other
{ new parameter is used by the application to specify input timeout.  This is
{ done because AMP$GET_NEXT normally uses the "input timeout" connection
{ attributes stored with the instance of open to know what to do.  Since
{ IIP$VTP_GET_NEXT has no capability to know which attributes belong with each
{ instance of open, it must have this information thru an extra parameter.
{ Remember that "input timeout" is not the same as transparent inter-character
{ timeout.
{
{ When an input timeout actually occurs, this is reflected by any of the error
{ codes nae$no_data_available, nae$no_event, or nae$data_transfer_timeout.
{ Note that these error codes are different from the ones returned by
{ AMP$GET_NEXT for input timeout.
{
{       IIP$VTP_GET_NEXT (FILE_IDENTIFIER, WORKING_STORAGE_AREA,
{         WORKING_STORAGE_LENGTH, TRANSFER_COUNT,
{         FILE_POSITION, STATUS)
{
{ FILE_IDENTIFIER: (input) This parameter specifies the file access
{       identifier established when the file was opened.
{
{ WORKING_STORAGE_AREA: (input) This parameter specifies the address of the
{       first byte of a contiguous area bounded by the working_storage_length
{       into which all or part of a record from the file will be moved.
{       If the length of the record is less than the working storage length
{       the access method does NOT guarantee that the area between the
{       transfer count and the end of the working storage area will be left
{       unmodified.
{
{ WORKING_STORAGE_LENGTH: (input) This parameter specifies the size of the
{       working storage area. The size of the working storage area should
{       equal or exceed the length of the longest record to be input.
{       If a record exceeds the working storage length, subsequent
{       amp$get_partial requests may be issued to obtain the remainder.
{       A zero or negative value for working_storage_length is improper.
{
{ TIMEOUT: (input) This parameter specifies input timeout.
{
{ INPUT_INFORMATION: (output) This parameter specifies the Virtual Terminal
{       Protocol header associated with the input.
{
{ TRANSFER_COUNT: (output) This parameter specifies the number of bytes
{       of data moved to the working_storage_area by this request.
{
{ STATUS: (output) This parameter specifies the request status.
{
