/sys$common/syshlp/HELPLIB.HLB  —  TPU
    These routines are part of the callable VSI Text Processing
    Utility (TPU).

1  –  TPU$CLEANUP

    The TPU$CLEANUP routine cleans up internal data structures, frees
    memory, and restores terminals to their initial state.

    This is the final routine called in each interaction with TPU.

    Format

      TPU$CLEANUP  flags

1.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. The condition value that this routine
    can return is listed under Condition Value Returned.

1.2  –  Argument

 flags

    OpenVMS usage:mask_longword
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Flags (or mask) defining the cleanup options. The flags argument
    is the address of a longword bit mask defining the cleanup
    options or the address of a 32-bit mask defining the cleanup
    options. This mask is the logical OR of the flag bits you want to
    set. Following are the various cleanup options:

    Flag(1)              Function

    TPU$M_DELETE_        Closes and deletes the journal file if it is
    JOURNAL              open.
    TPU$M_DELETE_EXITH   Deletes the TPU exit handler.
    TPU$M_DELETE_        Deletes all text buffers. If this is not the
    BUFFERS              last time you are calling TPU, then all
                         variables referring to these data structures
                         are reset, as if by the built-in procedure
                         DELETE. If a buffer is deleted, then all
                         ranges and markers within that buffer, and
                         any subprocesses using that buffer, are also
                         deleted.
    TPU$M_DELETE_        Deletes all windows. If this is not the
    WINDOWS              last time you are calling TPU, then all
                         variables referring to these data structures
                         are reset, as if by the built-in procedure
                         DELETE.
    TPU$M_DELETE_CACHE   Deletes the virtual file manager's data
                         structures and caches. If this deletion
                         is requested, then all buffers are also
                         deleted. If the cache is deleted, the
                         initialization routine has to reinitialize
                         the virtual file manager the next time it is
                         called.
    TPU$M_PRUNE_CACHE    Frees up any virtual file manager caches
                         that have no pages allocated to buffers.
                         This frees up any caches that may have been
                         created during the session but are no longer
                         needed.
    TPU$M_EXECUTE_FILE   Reexecutes the command file if TPU$EXECUTE_
                         INIFILE is called again. You must set this
                         bit if you plan to specify a new file name
                         for the command file. This option is used
                         in conjunction with the option bit passed
                         to TPU$INITIALIZE indicating the presence of
                         the /COMMAND qualifier.
    TPU$M_EXECUTE_PROC   Looks up TPU$INIT_PROCEDURE and executes it
                         the next time TPU$EXECUTE_INIFILE is called.
    TPU$M_DELETE_        Deletes the entire context of TPU. If
    CONTEXT              this option is specified, then all other
                         options are implied, except for executing
                         the initialization file and initialization
                         procedure.
    TPU$M_RESET_         Resets the terminal to the state it was in
    TERMINAL             upon entry to TPU. The terminal mailbox
                         and all windows are deleted. If the terminal
                         is reset, then it is reinitialized the next
                         time TPU$INITIALIZE is called.
    TPU$M_KILL_          Deletes all subprocesses created during the
    PROCESSES            session.
    TPU$M_CLOSE_         Closes the section file and releases the
    SECTION(2)           associated memory. All buffers, windows, and
                         processes are deleted. The cache is purged
                         and the flags are set for reexecution of
                         the initialization file and initialization
                         procedure. If the section is closed and if
                         the option bit indicates the presence of
                         the SECTION qualifier, then the next call
                         to TPU$INITIALIZE attempts a new restore
                         operation.
    TPU$M_DELETE_        Deletes all miscellaneous preallocated data
    OTHERS               structures. Memory for these data structures
                         is reallocated the next time TPU$INITIALIZE
                         is called.
    TPU$M_LAST_TIME      This bit should be set only when you are
                         calling TPU for the last time. Note that
                         if you set this bit and then recall TPU,
                         the results are unpredictable.

    Footnotes:

    1. The flag prefix can be TPU$M_ or TPU$V_. TPU$M_ denotes a mask
       corresponding to the specific field in which the bit is set.
       TPU$V_ is a bit number.

    2. Using the simplified callable interface does not set TPU$_
       CLOSE_SECTION. This feature allows you to make multiple calls
       to TPU$TPU without requiring you to open and close the section
       file on each call.

1.3  –  Description

    The cleanup routine is the final routine called in each
    interaction with TPU. It tells TPU to clean up its internal
    data structures and prepare for additional invocations. You can
    control what is reset by this routine by setting or clearing the
    flags described previously.

    When you finish with TPU, call this routine to free the memory
    and restore the characteristics of the terminal to their original
    settings.

    If you intend to exit after calling TPU$CLEANUP, do not
    delete the data structures; the operating system does this
    automatically. Allowing the operating system to delete the
    structures improves the performance of your program.

    Notes

    1. When you use the simplified interface, TPU automatically
       sets the following flags:

       o  TPU$V_RESET_TERMINAL

       o  TPU$V_DELETE_BUFFERS

       o  TPU$V_DELETE_JOURNAL

       o  TPU$V_DELETE_WINDOWS

       o  TPU$V_DELETE_EXITH

       o  TPU$V_EXECUTE_PROC

       o  TPU$V_EXECUTE_FILE

       o  TPU$V_PRUNE_CACHE

       o  TPU$V_KILL_PROCESSES

    2. If this routine does not return a success status, no other
       calls to the editor should be made.

1.4  –  Condition Value Returned

    TPU$_SUCCESS       Normal successful completion.

2  –  TPU$CLIPARSE

    The TPU$CLIPARSE routine parses a command line and builds the
    item list for TPU$INITIALIZE.

    Format

      TPU$CLIPARSE  string ,fileio ,call_user

2.1  –  Returns

    OpenVMS usage:item_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference

    This routine returns the address of an item list.

2.2  –  Arguments

 string

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Command line. The string argument is the address of a descriptor
    of a TPU command.

 fileio

    OpenVMS usage:vector_longword_unsigned
    type:         bound procedure value
    access:       read only
    mechanism:    by descriptor
    File I/O routine. The fileio argument is the address of a
    descriptor of a file I/O routine.

 call_user

    OpenVMS usage:vector_longword_unsigned
    type:         bound procedure value
    access:       read only
    mechanism:    by descriptor
    Call-user routine. The call_user argument is the address of a
    descriptor of a call-user routine.

2.3  –  Description

    This routine calls CLI$DCL_PARSE to establish a command table and
    a command to parse. It then calls TPU$PARSEINFO to build an item
    list for TPU$INITIALIZE.

    If your application parses information that is not related to the
    operation of TPU, make sure the application obtains and uses
    all non-TPU parse information before the application calls
    TPU$CLIPARSE. You must do this because TPU$CLIPARSE destroys all
    parse information obtained and stored before TPU$CLIPARSE was
    called.

3  –  TPU$CLOSE_TERMINAL

    The TPU$CLOSE_TERMINAL routine closes the TPU channel to the
    terminal.

    Format

      TPU$CLOSE_TERMINAL

3.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. The condition value that this routine
    can return is listed under Condition Value Returned.

3.2  –  Arguments

    None.

3.3  –  Description

    This routine is used with the built-in procedure CALL_USER and
    its associated call-user routine to control the TPU access
    to the terminal. When a call-user routine invokes TPU$CLOSE_
    TERMINAL, TPU closes its channel to the terminal and the
    channel of the TPU associated mailbox.

    When the call-user routine returns control to it, TPU
    automatically reopens a channel to the terminal and redisplays
    the visible windows.

    A call-user routine can use TPU$CLOSE_TERMINAL at any point in
    the program and as many times as necessary. If the terminal is
    already closed to TPU when TPU$CLOSE_TERMINAL is used, the
    call is ignored.

3.4  –  Condition Value Returned

    TPU$_SUCCESS       Normal successful completion.

4  –  TPU$CONTROL

    The TPU$CONTROL routine is the main processing routine of the
    TPU editor. It is responsible for reading the text and
    commands and executing them. When you call this routine (after
    calling TPU$INITIALIZE), control is turned over to TPU.

    Format

      TPU$CONTROL  [integer]

4.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

4.2  –  Argument

 integer

    OpenVMS usage:integer
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Prevents TPU from displaying the message "Editing session is
    not being journaled" when the calling program gives control to
    TPU. Specify a true (odd) integer to preserve compatibility in
    future releases. If you omit the parameter, TPU displays the
    message if journaling is not enabled.

4.3  –  Description

    This routine controls the editing session. It is responsible for
    reading the text and commands and for executing them. Windows on
    the screen are updated to reflect the edits made. Your program
    can regain control by interrupting TPU using the TPU$SPECIFY_
    ASYNC_ACTION routine, together with the TPU$TRIGGER_ASYNC_ACTION
    routine.

                                   NOTE

       Control is also returned to your program if an error occurs
       or when you enter either the built-in procedure QUIT or the
       built-in procedure EXIT.

4.4  –  Condition Values Returned

    TPU$_EXITING       A result of EXIT (when the default condition
                       handler is established).
    TPU$_NONANSICRT    A result of operation termination - results
                       when you call TPU with TPU$DISPLAYFILE
                       set to nodisplay and you attempt to execute
                       screen-oriented commands.
    TPU$_QUITTING      A result of QUIT (when the default condition
                       handler is established).
    TPU$_RECOVERFAIL   A recovery operation was terminated
                       abnormally.

5  –  TPU$EDIT

    The TPU$EDIT routine builds a command string from its parameters
    and passes it to the TPU$TPU routine.

    TPU$EDIT is another entry point to the TPU simplified callable
    interface.

    Format

      TPU$EDIT  input ,output

5.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

5.2  –  Arguments

 input

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Input file name. The input argument is the address for a
    descriptor of a file specification.

 output

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Output file name. The output argument is the address for a
    descriptor of an output file specification. It is used with the
    /OUTPUT command qualifier.

5.3  –  Description

    This routine builds a command string and passes it to TPU$TPU. If
    the length of the output descriptor is nonzero, then the /OUTPUT
    qualifier is added to the command string. The /OUTPUT qualifier
    causes a file to be written to the specified file even if no
    modifications are made to the input file. If the QUIT built-
    in procedure is called, it prompts the user as if changes had
    been made to the buffer. This allows applications to check for
    the existence of the output file to see if the editing session
    was terminated, which is consistent with other OpenVMS callable
    editors.

    If your application parses information that is not related to the
    operation of TPU, make sure the application obtains and uses
    all non-TPU parse information before the application calls
    TPU$EDIT. Your application must do this because TPU$EDIT destroys
    all parse information obtained and stored before TPU$EDIT is
    called.

5.4  –  Condition Values Returned

    This routine returns the same values as TPU$TPU.

6  –  TPU$EXECUTE_COMMAND

    The TPU$EXECUTE_COMMAND routine allows your program to execute
    TPU statements.

    Format

      TPU$EXECUTE_COMMAND  string

6.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

6.2  –  Argument

 string

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by value
    TPU statement. The string argument is the address of a
    descriptor of a character string denoting one or more TPU
    statements.

6.3  –  Description

    This routine performs the same function as the built-in procedure
    EXECUTE described in the VSI Text Processing Utility Reference
    Manual.

6.4  –  Condition Values Returned

    TPU$_SUCCESS       Normal successful completion.
    TPU$_EXECUTEFAIL   Execution aborted. This could be because of
                       execution errors or compilation errors.
    TPU$_EXITING       EXIT built-in procedure was invoked.
    TPU$_QUITTING      QUIT built-in procedure was invoked.

7  –  TPU$EXECUTE_INIFILE

    The TPU$EXECUTE_INIFILE routine allows you to execute a user-
    written initialization file.

    This routine must be executed after the editor is initialized and
    before any other commands are processed.

    Format

      TPU$EXECUTE_INIFILE

7.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

7.2  –  Arguments

    None.

7.3  –  Description

    Calling the TPU$EXECUTE_INIFILE routine causes TPU to perform
    the following steps:

    1. The command file is read into a buffer. The default is
       TPU$COMMAND.TPU. If you specified a file on the command line
       that cannot be found, an error message is displayed and the
       routine is aborted.

    2. If you specified the /DEBUG qualifier on the command
       line, the DEBUG file is read into a buffer. The default is
       SYS$SHARE:TPU$DEBUG.TPU.

    3. The DEBUG file is compiled and executed (if available).

    4. TPU$INIT_PROCEDURE is executed (if available).

    5. The Command buffer is compiled and executed (if available).

    6. TPU$INIT_POSTPROCEDURE is executed (if available).

                                   NOTE

       If you call this routine after calling TPU$CLEANUP, you must
       set the flags TPU$_EXECUTEPROCEDURE and TPU$_EXECUTEFILE.
       Otherwise, the initialization file does not execute.

7.4  –  Condition Values Returned

    TPU$_SUCCESS       Normal successful completion.
    TPU$_COMPILEFAIL   The compilation of the initialization file was
                       unsuccessful.
    TPU$_EXECUTEFAIL   The execution of the statements in the
                       initialization file was unsuccessful.
    TPU$_EXITING       A result of EXIT. If the default condition
                       handler is being used, the session is
                       terminated.
    TPU$_FAILURE       General code for all other errors.
    TPU$_QUITTING      A result of QUIT. If the default condition
                       handler is being used, the session is
                       terminated.

8  –  TPU$FILEIO

    The TPU$FILEIO routine handles all TPU file operations.
    Your own file I/O routine can call this routine to perform some
    operations for it. However, the routine that opens the file must
    perform all operations for that file. For example, if TPU$FILEIO
    opens the file, it must also close it.

    Format

      TPU$FILEIO  code ,stream ,data

8.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

8.2  –  Arguments

 code

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item code specifying a TPU function. The code argument is
    the address of a longword containing an item code from TPU
    specifying a function to perform. Following are the item codes
    that you can specify in the file I/O routine:

    o  TPU$K_OPEN-This item code specifies that the data parameter
       is the address of an item list. This item list contains the
       information necessary to open the file. The stream parameter
       should be filled in with a unique identifying value to be used
       for all future references to this file. The resultant file
       name should also be copied with a dynamic string descriptor.

    o  TPU$K_CLOSE-The file specified by the stream argument is to
       be closed. All memory being used by its structures can be
       released.

    o  TPU$K_CLOSE_DELETE-The file specified by the stream argument
       is to be closed and deleted. All memory being used by its
       structures can be released.

    o  TPU$K_GET-The data parameter is the address of a dynamic
       string descriptor to be filled with the next record from the
       file specified by the stream argument. The routine should use
       the routines provided by the Run-Time Library to copy text
       into this descriptor. TPU frees the memory allocated for
       the data read when the file I/O routine indicates that the end
       of the file has been reached.

    o  TPU$K_PUT-The data parameter is the address of a descriptor
       for the data to be written to the file specified by the stream
       argument.

 stream

    OpenVMS usage:unspecified
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    File description. The stream argument is the address of a data
    structure consisting of four longwords. This data structure
    describes the file to be manipulated.

    This data structure is used to refer to all files. It is written
    to when an open file request is made. All other requests use
    information in this structure to determine which file is being
    referenced.

    The following figure shows the stream data structure:

    ----------------------------------------------
    |               File identifier              |
    ----------------------------------------------
    |     RFM      |              |  Allocation  |
    ----------------------------------------------
    |    Class     |    Type      |    Length    |
    ----------------------------------------------

    The first longword holds a unique identifier for each file. The
    user-written file I/O routine is restricted to values between 0
    and 511. Thus, you can have up to 512 files open simultaneously.

    The second longword is divided into three fields. The low word
    is used to store the allocation quantity, that is, the number
    of blocks allocated to this file from the FAB (FAB$L_ALQ).
    This value is used later to calculate the output file size for
    preallocation of disk space. The low-order byte of the second
    word is used to store the record attribute byte (FAB$B_RAT)
    when an existing file is opened. The high-order byte is used
    to store the record format byte (FAB$B_RFM) when an existing file
    is opened. The values in the low word and the low-order and high-
    order bytes of the second word are used for creating the output
    file in the same format as the input file. These three fields are
    to be filled in by the routine opening the file.

    The last two longwords are used as a descriptor for the resultant
    or the expanded file name. This name is used later when TPU
    processes EXIT commands. This descriptor is to be filled in with
    the file name after an open operation. It should be allocated
    with either the routine LIB$SCOPY_R_DX or the routine LIB$SCOPY_
    DX from the Run-Time Library. This space is freed by TPU when
    it is no longer needed.

 data

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Stream data. The data argument is either the address of an item
    list or the address of a descriptor.

                                   NOTE

       The meaning of this parameter depends on the item code
       specified in the code field.

    When the TPU$K_OPEN item code is issued, the data parameter is
    the address of an item list containing information about the
    open request. The following TPU item codes are available for
    specifying information about the open request:

    o  TPU$K_ACCESS item code lets you specify one of three item
       codes in the buffer address field, as follows:

       -  TPU$K_IO

       -  TPU$K_INPUT

       -  TPU$K_OUTPUT

    o  TPU$K_FILENAME item code is used for specifying the address
       of a string to use as the name of the file you are opening.
       The length field contains the length of this string, and the
       address field contains the address.

    o  TPU$K_DEFAULTFILE item code is used for assigning a default
       file name to the file being opened. The buffer length field
       contains the length, and the buffer address field contains the
       address of the default file name.

    o  TPU$K_RELATEDFILE item code is used for specifying a related
       file name for the file being opened. The buffer length field
       contains the length, and the buffer address field contains the
       address of a string to use as the related file name.

    o  TPU$K_RECORD_ATTR item code specifies that the buffer address
       field contains the value for the record attribute byte in the
       FAB (FAB$B_RAT) used for file creation.

    o  TPU$K_RECORD_FORM item code specifies that the buffer address
       field contains the value for the record format byte in the FAB
       (FAB$B_RFM) used for file creation.

    o  TPU$K_MAXIMIZE_VER item code specifies that the version number
       of the output file should be one higher than the highest
       existing version number.

    o  TPU$K_FLUSH item code specifies that the file should have
       every record flushed after it is written.

    o  TPU$K_FILESIZE item code is used for specifying a value to be
       used as the allocation quantity when creating the file. The
       value is specified in the buffer address field.

8.3  –  Description

    By default, TPU$FILEIO creates variable-length files with
    carriage-return record attributes (FAB$B_RFM = VAR, FAB$B_RAT
    FORM item, that item is used instead.

    The following combinations of formats and attributes are
    acceptable:

    Format           Attributes

    STM,STMLF,STMCR  0,BLK,CR,BLK+CR
    VAR              0,BLK,FTN,CR,BLK+FTN,BLK+CR

    All other combinations are converted to VAR format with CR
    attributes.

    This routine always puts values greater than 511 in the first
    longword of the stream data structure. Because a user-written
    file I/O routine is restricted to the values 0 through 511, you
    can easily distinguish the file control blocks (FCB) this routine
    fills in from the ones you created.

                                   NOTE

       TPU uses TPU$FILEIO by default when you use the
       simplified callable interface. When you use the full
       callable interface, you must explicitly invoke TPU$FILEIO
       or provide your own file I/O routine.

8.4  –  Condition Values Returned

    The TPU$FILEIO routine returns an OpenVMS RMS status code to
    TPU. The file I/O routine is responsible for signaling all
    errors if any messages are desired.

9  –  TPU$FILE_PARSE

    The TPU$FILE_PARSE routine provides a simplified interface to
    the $PARSE system service. TPU calls this routine when the
    built-in procedure FILE_PARSE is executed from TPU code.

    Format

      TPU$FILE_PARSE  result-string ,flags ,filespec ,default-spec

                      ,related-spec

9.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. See Condition Values Returned.

9.2  –  Arguments

 result-string

    OpenVMS usage: char_string
    type:          character string
    access:        write only
    mechanism:     by descriptor
    Includes the components of the file specification specified by
    the flags argument. The memory for the return string is allocated
    via the Run-Time Library routine LIB$SGET1_DD. Use the Run-Time
    Library routine LIB$SFREE1_DD to deallocate the memory for the
    return string.

 flags

    OpenVMS usage: longword_unsigned
    type:          longword (unsigned)
    access:        read only
    mechanism:     by reference
    Determine what file specification components should be returned.
    The following table shows the valid values for the flags
    argument:

    Flag Bit(1)       Description

    TPU$M_NODE        Returns the node component of the file
                      specification.
    TPU$M_DEV         Returns the device component of the file
                      specification.
    TPU$M_DIR         Returns the directory component of the file
                      specification.
    TPU$M_NAME        Returns the name component of the file
                      specification.
    TPU$M_TYPE        Returns the type component of the file
                      specification.
    TPU$M_VER         Returns the version component of the file
                      specification.
    TPU$M_HEAD        Returns NODE, DEVICE and DIRECTORY components
                      of the file specification. If the TPU$M_NODE,
                      TPU$M_DEV or TPU$M_DIR bits are set while
                      TPU$M_HEAD is set, the routine signals the
                      error TPU$_INCKWDCOM and returns control to the
                      caller.
    TPU$M_TAIL        Returns NAME, TYPE and VERSION components of
                      the file specification. If the TPU$M_NAME,
                      TPU$M_TYPE or TPU$M_VER bits are set while
                      TPU$M_TAIL is set, the routine signals the
                      error TPU$_INCKWDCOM and returns control to the
                      caller.

    (1) TPU$M... indicates a mask. There is a corresponding value for
    each mask in the form TPU$V...

 filespec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The object file specification.

 default-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    Contains the default file specification. The default file
    specification fields are used in the result string as substitutes
    for fields omitted in the filespec argument. You can also
    make substitutions in the result string using the related-spec
    argument.

    Use the value 0 when no default-spec is to be applied to the file
    specification.

 related-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    Contains the related file specification. The fields in the
    related file specification are substituted in the result-string
    if a particular field is missing from both the filespec and
    default-spec arguments.

    Use the value 0 when no default-spec is to be applied to the file
    specification.

9.3  –  Description

    The TPU$FILE_PARSE routine returns a string containing the fields
    requested of the file specified. The file is not required to
    exist when the parse is done. The intention of the TPU$FILE_
    PARSE routine is to construct a valid file specification from the
    information passed in through the file specification, the default
    file specification, and the related file specification.

    The routine uses the $PARSE system service to return the
    requested information.

    The TPU$FILE_PARSE routine is also called by TPU when the
    TPU built-in procedure FILE_PARSE is executed from TPU code. The
    return value of the built-in procedure is the string returned in
    the result-string argument.

9.4  –  Condition Values Returned

    TPU$_SUCCESS       Normal successful completion. If the return
                       string contains a null-string, then the last
                       match of the search operations has occurred.
    TPU$_INCKWDCOM     The flags argument had an illegal combination
                       of values.
    TPU$_PARSEFAIL     The parse failed.

10  –  TPU$FILE_SEARCH

    The TPU$FILE_SEARCH routine provides a simplified interface to
    the $SEARCH system service. TPU call this routine when TPU
    code executes the FILE_SEARCH built-in procedure.

    Format

      TPU$FILE_SEARCH  result-string ,flags ,filespec ,default-spec

                       ,related-spec

10.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. See Condition Values Returned.

10.2  –  Arguments

 result-string

    OpenVMS usage: char_string
    type:          character string
    access:        write only
    mechanism:     by descriptor
    Includes the components of the file specification passed by the
    flags argument. The memory for the return string is allocated via
    the Run-Time Library routine LIB$SGET1_DD. To deallocate memory
    for the string, use the Run-Time Library routine LIB$SFREE1_DD.

 flags

    OpenVMS usage: longword_unsigned
    type:          longword (unsigned)
    access:        read only
    mechanism:     by reference
    Determines what file specification components should be returned.
    The following table lists the valid flag values:

    Flag(1)           Function

    TPU$M_NODE        Returns the node component of the file
                      specification.
    TPU$M_DEV         Returns the device component of the file
                      specification.
    TPU$M_DIR         Returns the directory component of the file
                      specification.
    TPU$M_NAME        Returns the name component of the file
                      specification.
    TPU$M_TYPE        Returns the type component of the file
                      specification.
    TPU$M_VER         Returns the version component of the file
                      specification.
    TPU$M_REPARSE     Reparses the file specification before
                      processing. This is intended to be used to
                      reset the file search.
    TPU$M_HEAD        Returns NODE, DEVICE, and DIRECTORY components
                      of the file specification. If the TPU$M_NODE,
                      TPU$M_DEV or TPU$M_DIR bits are set while
                      TPU$M_HEAD is set, the routine will signal
                      the error TPU$_INCKWDCOM and return.
    TPU$M_TAIL        Returns NAME, TYPE and VERSION components of
                      the file specification. If the TPU$M_NAME,
                      TPU$M_TYPE or TPU$M_VER bits are set while
                      TPU$M_TAIL is set, the routine will signal the
                      error TPU$_INCKWDCOM and return.

    (1) TPU$M... indicates a mask. There is a corresponding value for
    each mask in the form TPU$V...

 filespec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    Object file specification.

 default-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The default file specification. The default file specification
    fields are used to fill in the result-string when fields are
    omitted in the filespec argument. Use the related-spec argument
    to specify other substitutions.

    Use the value 0 when no default-spec is to be applied to the file
    specification.

 related-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    Contains the related file specification. The fields in the
    related file specification are used in the result-string for
    fields omitted in the filespec and default-spec arguments.

    Use the value 0 when no default-spec is to be applied to the file
    specification.

10.3  –  Description

    This routine allows an application to verify the existence
    of, and return components of, a file specification. Wildcard
    operations are permitted. The routine uses the $PARSE and $SEARCH
    system services to seek the file specification.

    If no wildcards are included in the file specification string
    and the result-string returns a zero (0) length string, no
    file was found. If wildcard characters were present in the file
    specification and the result-string returns a zero (0) length
    string, there are no more files that match the wildcards.

    To find all the files that match a wildcard specification,
    repeatedly call this routine, passing the same arguments, until
    the routine returns a zero-length result string.

    The TPU$FILE_SEARCH routine is called by TPU when the TPU
    built-in procedure FILE_SEARCH is executed from TPU code. The
    return value of the built-in procedure is the string returned in
    the result-string argument.

10.4  –  Condition Values Returned

    TPU$_SUCCESS       Normal successful completion. If the return
                       string contains a null string, the final match
                       operation was detected.
    TPU$_INCKWDCOM     The flags argument had an illegal combination
                       of values.
    TPU$_PARSEFAIL     The requested repeat parse failed.
    TPU$_SEARCHFAIL    An error occurred during the search operation.

11  –  TPU$HANDLER

    The TPU$HANDLER routine is the TPU condition handler.

    The TPU condition handler invokes the $PUTMSG system service,
    passing it the address of TPU$MESSAGE.

    Format

      TPU$HANDLER  signal_vector ,mechanism_vector

11.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. See Condition Values Returned.

11.2  –  Arguments

 signal_vector

    OpenVMS usage:arg_list
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Signal vector. See the VSI OpenVMS System Services Reference
    Manual for information about the signal vector passed to a
    condition handler.

 mechanism_vector

    OpenVMS usage:arg_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Mechanism vector. See the VSI OpenVMS System Services Reference
    Manual for information about the mechanism vector passed to a
    condition handler.

11.3  –  Description

    The TPU$MESSAGE routine performs the actual output of the
    message. The $PUTMSG system service only formats the message.
    It gets the settings for the message flags and facility name from
    the variables described in the OpenVMS Utility Routines Manual in
    the section about the TPU Shareable Image. Those values can be
    modified only by the TPU built-in procedure SET.

    If the condition value received by the handler has a FATAL status
    or does not have the TPU facility code, the condition is
    resignaled.

    If the condition is TPU$_QUITTING, TPU$_EXITING, or TPU$_
    RECOVERFAIL, a request to UNWIND is made to the establisher of
    the condition handler.

    After handling the message, the condition handler returns with
    a continue status. TPU error message requests are made by
    signaling a condition to indicate which message should be written
    out. The arguments in the signal array are a correctly formatted
    message argument vector. This vector sometimes contains multiple
    conditions and formatted ASCII output (FAO) arguments for the
    associated messages. For example, if the editor attempts to open
    a file that does not exist, the TPU message TPU$_NOFILEACCESS
    is signaled. The FAO argument to this message is a string for the
    name of the file. This condition has an error status, followed by
    the OpenVMS RMS status field (STS) and status value field (STV).
    Because this condition does not have a fatal severity, the editor
    continues after handling the error.

    The editor does not automatically return from TPU$CONTROL. If
    you call the TPU$CONTROL routine, you must explicitly establish a
    way to regain control (for example, using the built-in procedure
    CALL_USER). If you establish your own condition handler but call
    the TPU handler for certain conditions, the default condition
    handler must be established at the point in your program where
    you want to return control. You can also interrupt TPU$CONTROL
    by having your program specify and then trigger an asynchronous
    routine via the TPU$SPECIFY_ASNYC_ACTION and TPU$TRIGGER_ASYNC_
    ACTION routines.

    See the VSI OpenVMS Calling Standard for details on writing a
    condition handler.

12  –  TPU$INITIALIZE

    The TPU$INITIALIZE routine initializes TPU for text
    processing. This routine allocates global data structures,
    initializes global variables, and calls the appropriate setup
    routines for each of the major components of the editor,
    including the Screen Manager and the I/O subsystem.

    Format

      TPU$INITIALIZE  callback [,user_arg]

12.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

12.2  –  Argument

 callback

    OpenVMS usage:vector_longword_unsigned
    type:         bound procedure value
    access:       read only
    mechanism:    by descriptor
    Callback routine. The callback argument is the address of a
    user-written routine that returns the address of an item list
    containing initialization parameters or a routine for handling
    file I/O operations. This callback routine must call a command
    line parsing routine, which can be TPU$CLIPARSE or a user-written
    parsing routine.

    Callable TPU defines item codes that you can use to specify
    initialization parameters. The following rules must be followed
    when building the item list:

    o  If you use the TPU$_OTHER_FILENAMES item code, it must follow
       the TPU$_FILENAME item code.

    o  If you use either the TPU$_CHAIN item code or the TPU$_ENDLIST
       code, it must be the last item code in the list.

    The following figure shows the general format of an item
    descriptor. For information about how to build an item list,
    refer to the programmer's manual associated with the language
    you are using. Any reference to command line qualifiers refer
    to those command line qualifiers that you use with the EDIT/TPU
    command.

    ---------------------------------------------
    |      Item code      |    Buffer length    |
    ---------------------------------------------
    |              Buffer address               |
    ---------------------------------------------
    |              Return address               |
    ---------------------------------------------

    The return address in an item descriptor is usually 0.

    The following item codes are available:

    Item Code         Description

    TPU$_OPTIONS      Enables the command qualifiers. The bits in
                      the bit mask specified by the buffer address
                      field correspond to the various TPU command
                      qualifiers.
    TPU$_JOURNALFILE  Passes the string specified with the /JOURNAL
                      qualifier. The buffer length field is the
                      length of the string, and the buffer address
                      field is the address of the string. This
                      string is available with GET_INFO (COMMAND_
                      LINE,"JOURNAL_FILE"). This string can be a null
                      string.
    TPU$_SECTIONFILE  Passes the string that is the name of the
                      binary initialization file (section file) to
                      be mapped in. The buffer length field is the
                      length of the string, and the buffer address
                      field is the address of the string. If the
                      TPU$V_SECTION bit is set, this item code must
                      be specified.
    TPU$_OUTPUTFILE   Passes the string specified with the /OUTPUT
                      qualifier. The buffer length field is the
                      length of the string, and the buffer address
                      field specifies the address of the string. This
                      string is returned by the built-in procedure
                      GET_INFO (COMMAND_LINE, "OUTPUT_FILE"). The
                      string can be a null string.
    TPU$_DISPLAYFILE  Passes the string specified with the /DISPLAY
                      qualifier. The buffer length field defines the
                      length of the string, and the buffer address
                      field defines the string address. The interface
                      between the TPUSHR image and the display file
                      image is not documented. Applications should
                      only use this option with documented display
                      files such as TPU$CCTSHR or TPU$MOTIFSHR.
    TPU$_COMMANDFILE  Passes the string specified with the /COMMAND
                      qualifier. The buffer length field is the
                      length of the string, and the buffer address
                      field is the address of the string. This string
                      is returned by the built-in procedure GET_INFO
                      (COMMAND_LINE, "COMMAND_FILE"). The string can
                      be a null string.
    TPU$_FILENAME     Passes the string that is the name of the first
                      input file specified on the command line.
                      The buffer length field specifies the length
                      of this string, and the buffer address field
                      specifies its address. This string is returned
                      by the built-in procedure GET_INFO (COMMAND_
                      LINE, "FIRST_FILE_NAME"). This file name can be
                      a null string.
    TPU$_OTHER_       Passes a string that contains the name of an
    FILENAMES         input file that follows the first input file
                      on the command line. The buffer length field
                      specifies the length of this string, and the
                      buffer address field specifies its address.
                      Each additional file specified on the command
                      line requires its own TPU$_OTHER_FILENAMES item
                      entry. These strings are returned by the GET_
                      INFO (COMMAND_LINE,"NEXT_FILE_NAME") built-
                      in procedure in the order they appear in the
                      item list. This item code must appear after the
                      TPU$_FILENAME item in the item list.
    TPU$_FILEIO       Passes the bound procedure value of a routine
                      to be used for handling file operations.
                      You can provide your own file I/O routine,
                      or you can call TPU$FILEIO, the utility
                      routine provided by TPU for handling file
                      operations. The buffer address field specifies
                      the address of a two-longword vector. The first
                      longword of the vector contains the address of
                      the routine. The second longword specifies the
                      environment value that TPU loads into R1
                      before calling the routine.
    TPU$_CALLUSER     Passes the bound procedure value of the user-
                      written routine that the built-in procedure
                      CALL_USER is to call. The buffer address field
                      specifies the address of a two-longword vector.
                      The first longword of the vector contains the
                      address of the routine. The second longword
                      specifies the environment value that TPU
                      loads into R1 before calling the routine.
    TPU$_INIT_FILE    Passes the string specified with the
                      /INITIALIZATION qualifier. The buffer length
                      field is the length of the string, and the
                      buffer address field is the address of the
                      string. This string is returned by the built-in
                      procedure GET_INFO (COMMAND_LINE,"INIT_FILE").
    TPU$_START_LINE   Passes the starting line number for the edit.
                      The buffer address field contains the first of
                      the two integer values you specified as part
                      of the /START_POSITION command qualifier. The
                      value is available using the built-in procedure
                      GET_INFO (COMMAND_LINE,"LINE"). Usually an
                      initialization procedure uses this information
                      to set the starting position in the main
                      editing buffer. The first line in the buffer
                      is line 1.
    TPU$_START_CHAR   Passes the starting column position for the
                      edit. The buffer address field contains
                      the second of the two integer values you
                      specified as part of the /START_POSITION
                      command qualifier. The value is available
                      using the built-in procedure GET_INFO (COMMAND_
                      LINE, "CHARACTER"). Usually an initialization
                      procedure uses this information to set the
                      starting position in the main editing buffer.
                      The first column on a line to character 1.
    TPU$_             Passes the string specified with the
    CHARACTERSET      /CHARACTER_SET qualifier. The buffer length
                      field specifies the string length and the
                      buffer address field specifies the string
                      address. Valid strings are "DEC_MCS" (the
                      default value), "ISO_LATIN1", and "GENERAL".
                      If the application tries to pass any other
                      string, the routine signals an error and passes
                      the default string (DEC_MCS).
    TPU$_WORKFILE     Passes the string specified with the /WORK
                      qualifier. The buffer length field specifies
                      the string length and the buffer address
                      specifies the string address. This string is
                      available with GET_INFO (COMMAND_LINE, "WORK_
                      FILE").
    TPU$_CHAIN        Passes the address of the next item list to the
                      process specified by the buffer address field.
    TPU$_ENDLIST      Signals the end of the item list.
    TPU$_PARENT_      Passes the appropriate parent widget when
    WIDGET            invoking the DECwindows version of the
                      editor. This routine is not specified by the
                      application; TPU invokes its own application
                      shell. The widget address is passed in the
                      buffer address field. This item code is only
                      valid when using the DECwindows interface.
    TPU$_             Passes the application context to use with the
    APPLICATION_      TPU$_PARENT_WIDGET. TPU defaults to its own
    CONTEXT           application context. The buffer address field
                      specifies the application context address.
                      This item code is only valid when using the
                      DECwindows interface.
    TPU$_             Specifies which file TPU uses to initialize
    DEFAULTSFILE      the X defaults database. The buffer length
                      field specifies the string length and the
                      buffer address field specifies the string
                      address. This item code is only valid when
                      using the DECwindows interface.
    TPU$_CTRL_C_      Passes the bound procedure value of a routine
    ROUTINE           to be used for handling Ctrl/C asynchronous
                      system traps (ASTs). TPU calls the routine
                      when a Ctrl/C AST occurs. If the routine
                      returns a FALSE value, TPU assumes that
                      the Ctrl/C has been handled. If the routine
                      returns a TRUE value, TPU aborts any
                      currently executing TPU procedure. The
                      buffer address field specifies the address
                      of a two-longword vector. The first longword of
                      the vector contains the address of the routine.
                      The second longword specifies the environment
                      value that TPU loads into R1 before calling
                      the routine.
    TPU$_DEBUGFILE    Passes the string specified with the /DEBUG
                      command qualifier. The buffer length field
                      is the length of the string, and the buffer
                      address field is the address of the string.
    TPU$_FILE_SEARCH  Passes the bound procedure value of a routine
                      to be used to replace the TPU$FILE_SEARCH
                      routine which is called when the built-in
                      procedure FILE_SEARCH is called from TPU code.
                      See the description of the TPU$FILE_SEARCH
                      and the user routine FILE_SEARCH for more
                      information.
    TPU$_FILE_PARSE   Passes the bound procedure value of a routine
                      to be used to replace the TPU$FILE_PARSE
                      routine which is called when the built-
                      in procedure FILE_PARSE is called from TPU
                      code. See the description of the TPU$FILE_
                      PARSE and the user routine FILE_PARSE for more
                      information.

    Valid Masks for the TPU$K_OPTIONS Item Code lists the bits and
    corresponding masks enabled by the item code TPU$K_OPTIONS and
    shows how each bit affects TPU$INITIALIZE operation. Several bits
    in the TPU$_OPTIONS mask require additional item code entries in
    the item list. An example of this is TPU$M_COMMAND which requires
    a TPU$_COMMANDFILE entry in the item list.

    Table 6-1 Valid Masks for the TPU$K_OPTIONS Item Code

                   GET_INFO
                   Request
    Mask(1)        String(2)     Description

    TPU$M_         COMMAND       If TPU senses the presence of
    COMMAND                      the TPU$_COMMANDFILE item, it tries
                                 to read, compile and execute the
                                 unbound TPU code.
    TPU$M_         Not           Specifies that TPU should use
    COMMAND_       applicable    the default command file name of
    DFLTED                       TPU$COMMAND.TPU when reading in the
                                 command file. No error is reported
                                 if the default command file is not
                                 found. TPU$INITIALIZE fails when the
                                 TPU$M_COMMAND_DFLTED bit is set to 0
                                 and no file is specified in the item
                                 list.
    TPU$M_CREATE   CREATE        The behavior of TPU is not
                                 affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.
    TPU$M_DEBUG    Not           If TPU senses the presence of
                   applicable    the TPU$_DEBUGFILE item, it tries to
                                 read the file, and then proceeds to
                                 compile and execute its contents as
                                 TPU statements.
    TPU$M_         Not           If TPU senses the presence of
    DEFAULTS       applicable    the TPU$_DEFAULTSFILE item, it uses
                                 the specified DECwindows X resource
                                 file to initialize the DECwindows X
                                 resource database.
    TPU$M_         DISPLAY       If TPU senses the presence of the
    DISPLAY                      TPU$_DISPLAYFILE item, it tries to
                                 image activate the specified image
                                 as its screen manager. When the
                                 bit is 0, TPU uses SYS$OUTPUT
                                 for display and only the READ_LINE
                                 built-in procedure may be used for
                                 input.
    TPU$M_INIT     INITIALIZATIONIf TPU senses the presence of the
                                 TPU$_INIT_FILE item, it returns the
                                 specified string through the built-
                                 in procedure GET_INFO (COMMAND_LINE,
                                 "INITIALIZATION_FILE"). Processing
                                 of the initialization file is left
                                 to the application.
    TPU$M_         JOURNAL       If TPU senses the presence of the
    JOURNAL                      TPU$_JOURNALFILE item, it outputs
                                 the keystrokes entered during the
                                 editing session to the specified
                                 file.

                                 Note: VSI recommends the use of
                                 buffer change journaling in new
                                 applications.
    TPU$M_MODIFY   MODIFY        The behavior of TPU is not
                                 affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.
    TPU$M_         Not           TPU initializes the DECwindows X
    NODEFAULTS     applicable    resource database only with resource
                                 files that the DECwindows toolkit
                                 routine XtApplInitialize loads into
                                 the database.
    TPU$M_         NOMODIFY      The behavior of TPU is not
    NOMODIFY                     affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.
    TPU$M_OUTPUT   OUTPUT        The behavior of TPU is not
                                 affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.
    TPU$M_READ     READ_ONLY     The behavior of TPU is not
                                 affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.
    TPU$M_         RECOVER       The behavior of TPU is not
    RECOVER                      affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.
    TPU$M_         SECTION       If TPU senses the presence of the
    SECTION                      TPU$_SECTIONFILE item, it tries to
                                 read the specified file as a binary
                                 initialization file. TPU$INITIALIZE
                                 fails if this bit is set to 1 and
                                 the TPU$_SECTIONFILE item is not
                                 present in the item list.
    TPU$M_SEC_     Not           If TPU senses the presence of the
    LNM_MODE       applicable    TPU$M_SEC_LNM_MODE item, it looks
                                 only at executive mode logical names
                                 when attempting to read in a section
                                 file.
    TPU$M_WORK     WORK          If TPU senses the presence of
                                 the TPU$_WORKFILE item, it uses the
                                 specifed file for memory management.
                                 If no item list entry is present,
                                 and this bit is set to 1, a file is
                                 created in SYS$LOGIN:.TPU$WORK.
    TPU$M_WRITE    WRITE         The behavior of TPU is not
                                 affected by this bit. Its
                                 interpretation is left to the
                                 application layered on TPU.

    Footnotes:

    1. The flag prefix can be TPU$M_ or TPU$V_. TPU$M_ denotes a mask
       corresponding to the specific field in which the bit is set.
       TPU$V_ is a bit number.

    2. Most bits in the mask have a corresponding GET_INFO (COMMAND_
       LINE) request string.

    To create the bits, start with the value 0, then use the OR
    operator on the mask (TPU$M . . . ) of each item you want to set.
    Another way to create the bits is to treat the 32 bits as a bit
    vector and set the bit (TPU$V . . . ) corresponding to the item
    you want.

 user_arg

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    User argument. The user_arg argument is passed to the user-
    written initialization routine INITIALIZE.

    The user_arg parameter is provided to allow an application to
    pass information through TPU$INITIALIZE to the user-written
    initialization routine. TPU does not interpret this data in
    any way.

12.3  –  Description

    This is the first routine that must be called after establishing
    a condition handler.

    This routine initializes the editor according to the information
    received from the callback routine. The initialization routine
    defaults all file specifications to the null string and all
    options to off. However, it does not default the file I/O or
    call-user routine addresses.

12.4  –  Condition Values Returned

    TPU$_SUCCESS       Initialization was completed successfully.
    TPU$_FAILURE       General code for all other errors during
                       initialization.
    TPU$_INSVIRMEM     Insufficient virtual memory exists for the
                       editor to initialize.
    TPU$_              No routine has been established to perform
    NOFILEROUTINE      file operations.
    TPU$_NONANSICRT    The input device (SYS$INPUT) is not a
                       supported terminal.
    TPU$_RESTOREFAIL   An error occurred during the restore
                       operation.
    TPU$_SYSERROR      A system service did not work correctly.

13  –  TPU$MESSAGE

    The TPU$MESSAGE routine writes error messages and strings using
    the built-in procedure, MESSAGE.

    Call this routine to have messages written and handled in a
    manner consistent with TPU. This routine should be used only
    after TPU$EXECUTE_INIFILE.

    Format

      TPU$MESSAGE  string

13.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value.

                                   NOTE

       The return status should be ignored because it is intended
       for use by the $PUTMSG system service.

13.2  –  Argument

 string

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Formatted message. The string argument is the address of
    a descriptor of text to be written. It must be completely
    formatted. This routine does not append the message prefixes.
    However, the text is appended to the message buffer if one
    exists. In addition, if the buffer is mapped to a window, the
    window is updated.

14  –  TPU$PARSEINFO

    The TPU$PARSEINFO routine parses a command and builds the item
    list for TPU$INITIALIZE.

    Format

      TPU$PARSEINFO  fileio ,call_user

14.1  –  Returns

    OpenVMS usage:item_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference

    The routine returns the address of an item list.

14.2  –  Arguments

 fileio

    OpenVMS usage:vector_longword_unsigned
    type:         bound procedure value
    access:       read only
    mechanism:    by descriptor
    File I/O routine. The fileio argument is the address for a
    descriptor of a file I/O routine.

 call_user

    OpenVMS usage:vector_longword_unsigned
    type:         bound procedure value
    access:       read only
    mechanism:    by descriptor
    Call-user routine. The call_user argument is the address for a
    descriptor of a call-user routine.

14.3  –  Description

    The TPU$PARSEINFO routine parses a command and builds the item
    list for TPU$INITIALIZE.

    This routine uses the command language (CLI) routines to
    parse the current command. It makes queries about the command
    parameters and qualifiers that TPU expects. The results of
    these queries are used to set up the proper information in an
    item list. The addresses of the user routines are used for those
    items in the list. The address of this list is the return value
    of the routine.

    If your application parses information that is not related to the
    operation of TPU, make sure the application obtains and uses
    all non-TPU parse information before the application calls the
    TPU$PARSEINFO interface. This is because TPU$PARSEINFO destroys
    all parse information obtained and stored before TPU$PARSEINFO
    was called.

15  –  TPU$SIGNAL

    The TPU$SIGNAL routine allows applications and user-written TPU
    routines such as FILEIO to easily signal error messages in order
    for TPU error handlers to perform correctly.

    Format

      TPU$SIGNAL  condition-code

15.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. In most cases, the routine returns
    either the same signal passed to it in the condition value
    argument, or the return value of LIB$SIGNAL. If the routine
    fails, it signals TPU$_FAILURE and returns control to the caller.

15.2  –  Argument

 condition-code

    OpenVMS usage: cond_value
    type:          longword (unsigned)
    access:        read only
    mechanism:     by value
    The condition-code is an unsigned longword that contains the
    condition code to be signaled. In most cases, this argument is a
    TPU message code.

15.3  –  Description

    TPU$SIGNAL performs the same function as the Run-Time Library
    routine LIB$SIGNAL, but it also processes TPU facility messages
    to allow TPU language ON_ERROR handlers to be called.

    For example, assume that a user-written file input/output routine
    is designed to signal the error TPU$_OPENIN when it fails to
    open a file. Calling the TPU$SIGNAL routine and passing the value
    TPU$_OPENIN allows a case-style TPU ON_ERROR handler to receive
    the error, thus preserving the documented return values for TPU
    built-in procedures such as READ_FILE.

                                   NOTE

       You must call TPU$INITIALIZE before you call the TPU$SIGNAL
       routine.

    If TPU$_QUITTING, TPU$_EXITING, or TPU$_RECOVERFAIL are passed to
    the routine, it calls the Run-Time Library routine LIB$SIGNAL.

    If facility messages other than TPU messages are passed to the
    TPU$SIGNAL routine, it calls the LIB$SIGNAL routine and passes
    the appropriate condition value.

16  –  TPU$SPECIFY_ASYNC_ACTION

    The TPU$SPECIFY_ASYNC_ACTION routine allows applications using
    the TPU full callable interface to register asynchronous
    actions with TPU.

    Format

      TPU$SPECIFY_ASYNC_ACTION  facility_index [,tpu_statement]

16.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

16.2  –  Argument

 facility_index

    OpenVMS usage:longword_unsigned
    type:         longword (signed)
    access:       read only
    mechanism:    by reference
    Represents an index of the asynchronous action. This index is
    used with the TPU$TRIGGER_ASYNC_ACTION routine to let TPU know
    what action to perform. It may also be used to delete an action
    routine (by omitting the tpu_statement). You may register several
    asynchronous actions depending on your application's needs. This
    facility index number may be any positive integer.

 tpu_statement

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    The TPU statement you want executed when you call the
    TPU$TRIGGER_ASYNC_ACTION routine. The statement is compiled and
    then stored internally. If you omit the parameter, TPU removes
    the action from its list of asynchronous events.

16.3  –  Description

    The TPU$SPECIFY_ASYNC_ACTION routine, along with TPU$TRIGGER_
    ASYNC_ACTION, allow applications to interrupt TPU after
    calling TPU$CONTROL. The specified TPU statement is compiled
    and saved.

    This routine must be called after TPU$INITIALIZE. It will not
    complete successfully if keystroke journaling is enabled.

16.4  –  Condition Values Returned

    TPU$_SUCCESS       Normal successful completion.
    TPU$_COMPILEFAIL   The code specified in tpu_statement did not
                       compile successfully.
    TPU$_INVPARM       An invalid parameter was passed.
    TPU$_JNLACTIVE     Keystroke journaling is active. This routine
                       requires that either journaling be turned off
                       or that buffer change journaling be used.

17  –  TPU$TPU

    The TPU$TPU routine invokes TPU and is equivalent to the DCL
    command EDIT/TPU.

    Format

      TPU$TPU  command

17.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

17.2  –  Argument

 command

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Command string. Note that the verb is TPU instead of EDIT/TPU.
    The command argument is the address for a descriptor of a command
    line.

17.3  –  Description

    This routine takes the command string specified and passes it to
    the editor. TPU uses the information from this command string
    for initialization purposes, just as though you had entered the
    command at the DCL level.

    Using the simplified callable interface does not set TPU$CLOSE_
    SECTION. This feature lets you make multiple calls to TPU$TPU
    without requiring you to open and close the section file on each
    call.

    If your application parses information that is not related to the
    operation of TPU, make sure the application obtains and uses
    all non-TPU parse information before the application calls
    TPU$TPU. This is because TPU$TPU destroys all parse information
    obtained and stored before TPU$TPU was called.

17.4  –  Condition Values Returned

    This routine returns any condition value returned by
    TPU$INITIALIZE, TPU$EXECUTE_INIFILE, TPU$CONTROL, and
    TPU$CLEANUP.

18  –  TPU$TRIGGER_ASYNC_ACTION

    The TPU$TRIGGER_ASYNC_ACTION routine allows applications using
    the TPU full callable interface to interrupt the TPU
    TPU$CONTROL loop at an asynchronous level.

    Format

      TPU$TRIGGER_ASYNC_ACTION  facility_index

18.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

18.2  –  Arguments

 facility_index

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    The facility_index argument represents the asynchronous action to
    be taken. This is the same index passed to the TPU$SPECIFY_ASYNC_
    ACTION routine registering what TPU statements to execute.

18.3  –  Description

    The TPU$TRIGGER_ASYNC_ACTION routine, along with TPU$SPECIFY_
    ASYNC_ACTION routine allow applications to interrupt TPU after
    calling TPU$CONTROL. The command that was specified for this
    facility_index is put on the TPU queue of work items and is
    handled as soon as no other work items are present. This allows
    TPU to complete and stabilize its environment before executing
    the command. This routine must be called after control has been
    passed to TPU via the TPU$CONTROL routine.

18.4  –  Condition Values Returned

    TPU$_SUCCESS       Normal successful completion.
    TPU$_UNKFACILITY   The facility_index passed to this routine
                       does not match any facility index passed to
                       TPU$SPECIFY_ASYNC_ACTION.

19  –  FILEIO

    The user-written FILEIO routine is used to handle TPU file
    operations. The name of this routine can be either your own
    file I/O routine or the name of the TPU file I/O routine
    (TPU$FILEIO).

    Format

      FILEIO  code ,stream ,data

19.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (usigned)
    access:       write only
    mechanism:    by reference

    Longword condition value. Most utility routines return a
    condition value in R0. Condition values that this routine can
    return are listed under Condition Values Returned.

19.2  –  Arguments

 code

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Item code specifying a TPU function. The code argument is the
    address of a longword containing an item code from TPU, which
    specifies a function to perform.

 stream

    OpenVMS usage:unspecified
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    File description. The stream argument is the address of a data
    structure containing four longwords. This data structure is used
    to describe the file to be manipulated.

 data

    OpenVMS usage:item_list_3
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Stream data. The data argument is either the address of an item
    list or the address of a descriptor.

                                   NOTE

       The value of this parameter depends on which item code you
       specify.

19.3  –  Description

    The bound procedure value of this routine is specified in the
    item list built by the callback routine. This routine is called
    to perform file operations. Instead of using your own file I/O
    routine, you can call TPU$FILEIO and pass it the parameters for
    any file operation you do not want to handle. Note, however, that
    TPU$FILEIO must handle all I/O requests for any file it opens.
    Also, if it does not open the file, it cannot handle any I/O
    requests for the file. In other words, you cannot mix the file
    operations between your own file I/O routine and the one supplied
    by TPU.

19.4  –  Condition Values Returned

    The condition values returned are determined by the user and
    should indicate success or failure of the operation.

20  –  FILE_PARSE

    This is a user-written routine that can be used in place of the
    TPU$FILE_PARSE routine.

    Format

      FILE_PARSE  result-string ,flags ,filespec ,default-spec

                  ,related-spec

20.1  –  Returns

    OpenVMS usage: cond_value
    type:          longword (unsigned)
    access:        write only
    mechanism:     by value

    Longword condition value. The return value is ignored by TPU.
    User-written FILE_PARSE routines should include calls to the
    TPU$SIGNAL routine to ensure proper error handling.

20.2  –  Arguments

 result-string

    OpenVMS usage: char_string
    type:          character string
    access:        write only
    mechanism:     by descriptor
    Return value for the built-in procedure FILE_PARSE. The calling
    program should fill in this descriptor with a dynamic string
    allocated by the string routines, such as the Run-Time Library
    routine LIB$SGET1_DD. TPU frees this string when necessary.

 flags

    OpenVMS usage: longword_unsigned
    type:          longword (unsigned)
    access:        read only
    mechanism:     by reference
    The following table lists the valid flag values used to request
    file specification components:

    Flag(1)           Function

    TPU$M_NODE        Requests for the node component of the file
                      specification.
    TPU$M_DEV         Requests for the device component of the file
                      specification.
    TPU$M_DIR         Requests for the directory component of the
                      file specification.
    TPU$M_NAME        Requests for the name component of the file
                      specification.
    TPU$M_TYPE        Requests for the type component of the file
                      specification.
    TPU$M_VER         Requests for the version component of the file
                      specification.
    TPU$M_HEAD        Requests for the NODE, DEVICE, and DIRECTORY
                      components of the file specification.
    TPU$M_TAIL        Requests for NAME, TYPE, and VERSION components
                      of the file specification.

    (1) TPU$M... indicates a mask. There is a corresponding value for
    each mask in the form TPU$V...

 filespec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The object file specification.

 default-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    Contains the default file specification. The value 0 is passed if
    there is no default-spec argument.

 related-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The related-spec argument contains the related file
    specification. The value 0 is passed if there is no related-spec.

20.3  –  Description

    This routine allows an application to replace the TPU$FILE_PARSE
    routine with its own file-parsing routine. The calling program
    passes the address of the file-parsing routine to TPU$INITIALIZE
    using the TPU$_FILE_PARSE item code.

    When the TPU built-in procedure FILE_PARSE is called from
    TPU code, TPU calls either the user-written routine (if one
    was passed to TPU$INITIALIZE) or the TPU$FILE_PARSE routine. The
    return value of the built-in procedure is the string returned in
    the result-string argument.

    To ensure proper operation of the user's ON_ERROR error handlers,
    errors should be signaled using the TPU$SIGNAL routine.

21  –  FILE_SEARCH

    This is a user-written routine that is used in place of the
    TPU$FILE_SEARCH routine.

    Format

      FILE_SEARCH  result-string ,flags ,filespec ,default-spec

                   ,related-spec

21.1  –  Returns

    OpenVMS usage: cond_value
    type:          longword (unsigned)
    access:        write only
    mechanism:     by value

    Longword condition value. If an odd numeric value is returned,
    the next call to the built-in procedure FILE_SEARCH automatically
    sets the TPU$M_REPARSE bit in the flags longword. TPU$M_REPARSE
    is also set if the result-string has a length of 0.

21.2  –  Arguments

 result-string

    OpenVMS usage: char_string
    type:          character string
    access:        write only
    mechanism:     by descriptor
    Return value for the built-in procedure FILE_SEARCH. Your program
    should fill in this descriptor with a dynamic string allocated
    by the string routines such as the Run-Time Library routine
    LIB$SGET1_DD. TPU frees this string when necessary.

    The TPU$M_REPARSE bit is set in the flags longword if the result-
    string has a length of zero. The bit is intended to reset the
    file search when wildcard searches are performed.

 flags

    OpenVMS usage: longword_unsigned
    type:          longword (unsigned)
    access:        read only
    mechanism:     by reference
    The following table shows the flags used for specifying the file
    components:

    Flag(1)           Function

    TPU$M_NODE        Requests for the node component of the file
                      specification.
    TPU$M_DEV         Requests for the device component of the file
                      specification.
    TPU$M_DIR         Requests for the directory component of the
                      file specification.
    TPU$M_NAME        Requests for the name component of the file
                      specification.
    TPU$M_TYPE        Requests for the type component of the file
                      specification.
    TPU$M_VER         Requests for the version component of the file
                      specification.
    TPU$M_REPARSE     Reparses the file specification before
                      processing. This is intended as a way to
                      restart the file search. This flag will
                      automatically be set by TPU if on a previous
                      call to the FILE_SEARCH user routine the
                      result-string has a zero length or the routine
                      returns a odd (noneven) status.
    TPU$M_HEAD        Requests for the NODE, DEVICE, and DIRECTORY
                      components of the file specification.
    TPU$M_TAIL        Requests for the NAME, TYPE, and VERSION
                      component of the file specification.

    (1) TPU$M... indicates a mask. There is a corresponding value for
    each mask in the form TPU$V...

 filespec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The object file specification.

 default-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The default-spec argument contains the default file
    specification.

    The value 0 is passed if there is no default-spec.

 related-spec

    OpenVMS usage: char_string
    type:          character string
    access:        read only
    mechanism:     by descriptor
    The related-spec argument contains the related file
    specification.

    The value 0 is passed if there is no related-spec.

21.3  –  Description

    The FILE_SEARCH user routine allows an application to replace
    the TPU$FILE_SEARCH routine with its own file-searching routine.
    The calling program passes the address of the routine to the
    TPU$INITIALIZE routine using the TPU$_FILE_SEARCH item code.

    When the TPU built-in procedure FILE_SEARCH is called from TPU
    code, TPU calls either the user-written FILE_SEARCH routine
    (if one was passed to TPU$INITIALIZE) or the TPU$FILE_SEARCH
    routine. The return value of the built-in procedure is the string
    returned in the result-string argument.

    To ensure proper operation of the user's ON_ERROR handlers,
    errors in the user-written FILE_PARSE routine should be signaled
    using the TPU$SIGNAL routine.

22  –  HANDLER

    The user-written HANDLER routine performs condition handling.

    Format

      HANDLER  signal_vector ,mechanism_vector

22.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value.

22.2  –  Arguments

 signal_vector

    OpenVMS usage:arg_list
    type:         longword (unsigned)
    access:       modify
    mechanism:    by reference
    Signal vector. See the VSI OpenVMS System Services Reference
    Manual for information about the signal vector passed to a
    condition handler.

 mechanism_vector

    OpenVMS usage:arg_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    Mechanism vector. See the VSI OpenVMS System Services Reference
    Manual for information about the mechanism vector passed to a
    condition handler.

22.3  –  Description

    If you need more information about writing condition handlers and
    programming concepts, refer to VSI OpenVMS Programming Concepts
    Manual.

    Instead of writing your own condition handler, you can use the
    default condition handler, TPU$HANDLER. If you want to write your
    own routine, you must call TPU$HANDLER with the same parameters
    that your routine received to handle TPU internal signals.

23  –  INITIALIZE

    The user-written initialization callback routine is passed to
    TPU$INITIALIZE as a bound procedure value and called to supply
    information needed to initialize TPU.

    Format

      INITIALIZE  [user_arg]

23.1  –  Returns

    OpenVMS usage:item_list
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference

    This routine returns the address of an item list.

23.2  –  Arguments

 user_arg

    OpenVMS usage:user_arg
    type:         longword (unsigned)
    access:       read only
    mechanism:    by value
    User argument.

23.3  –  Description

    The user-written initialization callback routine is passed to
    TPU$INITIALIZE as a bound procedure value and called to supply
    information needed to initialize TPU.

    If the user_arg parameter was specified in the call to
    TPU$INITIALIZE, the initialization callback routine is called
    with only that parameter. If user_arg was not specified in the
    call to TPU$INITIALIZE, the initialization callback routine is
    called with no parameters.

    The user_arg parameter is provided to allow an application to
    pass information through TPU$INITIALIZE to the user-written
    initialization routine. TPU does not interpret this data in
    any way.

    The user-written callback routine is expected to return the
    address of an item list containing initialization parameters.
    Because the item list is used outside the scope of the
    initialization callback routine, it should be allocated in static
    memory.

    The item list entries are discussed in the TPU$INITIALIZE help
    topic. Most of the initialization parameters have a default
    value; strings default to the null string, and flags default to
    false. The only required initialization parameter is the address
    of a routine for file I/O. If an entry for the file I/O routine
    address is not present in the item list, TPU$INITIALIZE returns
    with a failure status.

24  –  USER

    The user-written USER routine allows your program to take control
    during a TPU editing session (for example, to leave the editor
    temporarily and perform a calculation).

    Format

      USER  integer ,stringin ,stringout

24.1  –  Returns

    OpenVMS usage:cond_value
    type:         longword (unsigned)
    access:       write only
    mechanism:    by value

    Longword condition value.

24.2  –  Arguments

 integer

    OpenVMS usage:longword_unsigned
    type:         longword (unsigned)
    access:       read only
    mechanism:    by reference
    First parameter to the built-in procedure CALL_USER. This is an
    input-only parameter and must not be modified.

 stringin

    OpenVMS usage:char_string
    type:         character string
    access:       read only
    mechanism:    by descriptor
    Second parameter to the built-in procedure CALL_USER. This is an
    input-only parameter and must not be modified.

 stringout

    OpenVMS usage:char_string
    type:         character string
    access:       modify
    mechanism:    by descriptor
    Return value for the built-in procedure CALL_USER. Your program
    should fill in this descriptor with a dynamic string allocated by
    the string routines (such as LIB$SGET1_DD) provided by the Run-
    Time Library. The TPU editor frees this string when necessary.

24.3  –  Description

    This user-written routine is invoked by the TPU built-in
    procedure CALL_USER. The built-in procedure CALL_USER passes
    three parameters to this routine. These parameters are then
    passed to the appropriate part of your application to be used
    as specified. (For example, they can be used as operands in a
    calculation within a Fortran program.) Using the string routines
    provided by the Run-Time Library, your application fills in the
    stringout parameter in the call-user routine, which returns the
    stringout value to the built-in procedure CALL_USER.

    The description of the built-in procedure CALL_USER in the DEC
    Text Processing Utility Reference Manual shows an example of a
    BASIC program that is a call-user routine.
Close Help