Document revision date: 30 March 2001
[Compaq] [Go to the documentation home page] [How to order documentation] [Help on this site] [How to contact us]
[OpenVMS documentation]

DEC Text Processing Utility Reference Manual


Previous Contents Index

See the SET built-in procedure for more information on these keywords.

Signaled Errors

TPU$_DUPBUFNAME WARNING First argument to the CREATE_BUFFER built-in must be a unique string.
TPU$_TRUNCATE WARNING A record was truncated to the maximum record length.
TPU$_TOOMANY ERROR The CREATE_BUFFER built-in takes a maximum of two arguments.
TPU$_TOOFEW ERROR The CREATE_BUFFER built-in requires at least one argument.
TPU$_INVPARAM ERROR The CREATE_BUFFER built-in accepts parameters of type string or buffer only.
TPU$_GETMEM ERROR DECTPU ran out of virtual memory trying to create the buffer.
TPU$_OPENIN ERROR CREATE_BUFFER could not open the specified input file.
TPU$_OPENOUT ERROR CREATE_BUFFER could not open the journal file.

Examples

The following example creates a buffer called NEW_BUFFER and stores a pointer to the buffer in the variable nb. Use the variable nb when you want to specify this buffer as a parameter for DECTPU built-in procedures. The file specification "login.com" reads the input file for NEW_BUFFER from LOGIN.COM.
#1

nb := CREATE_BUFFER ("new_buffer", "login.com") 
 
      

The first statement in the following example creates a buffer called DEFAULTS and stores a pointer to the buffer in the variable default_buffer. The second statement sets the direction of default_buffer to reverse. The third statement creates a buffer called BUFFER_B and stores a pointer to the buffer in the variable b. This statement takes default information from default_buffer. Buffer b does not receive any text, marks, or ranges from the buffer default_buffer.

#2

default_buffer := CREATE_BUFFER ("defaults"); 
SET (REVERSE, default_buffer); 
b := CREATE_BUFFER ("buffer_b", "", default_buffer); 
 

The following example creates the help buffer:

#3

PROCEDURE user_help_buffer 
   help_buf := CREATE_BUFFER("help_buf"); 
   SET (EOB_TEXT, help_buf, "[End of HELP]"); 
   SET (NO_WRITE, help_buf); 
   SET (SYSTEM, help_buf); 
ENDPROCEDURE; 
 
      

The following example creates a buffer named scratch. It directs DECTPU to name the associated buffer-change journal file SCRATCH_JL.JL. You must use commas as placeholders for the two unspecified optional parameters. Also, by default DECTPU puts journal files in the directory defined by the logical name TPU$JOURNAL. TPU$JOURNAL points to the same directory that SYS$SCRATCH points to. You can reassign TPU$JOURNAL to point to a different directory.

#4

buf1 := CREATE_BUFFER ("Scratch",,,"Scratch_jl.jl"); 
 
 
      

The following example creates a template buffer called DEFAULTS, changes the end-of-buffer text for the template buffer, and then creates a user buffer. The user buffer is created with the same end-of-buffer text that the defaults buffer has.

#5

defaults_buffer := CREATE_BUFFER ("Defaults"); 
 
SET (EOB_TEXT, defaults_buffer, "[That's all, folks!]"); 
 
user_buffer := CREATE_BUFFER ("User1.txt", "", defaults_buffer); 
      


CREATE_KEY_MAP


Format

[[string2 := ]] CREATE_KEY_MAP (string1)


Parameter

string1

A string that specifies the name of the key map you create.

Return Value


A string that is the name of the key map created.

Description

The CREATE_KEY_MAP procedure creates and names a key map. CREATE_KEY_MAP optionally returns a string that is the name of the key map created. A key map is a set of key definitions. Key maps let you manipulate key definitions as a group. Key maps and their key definitions are saved in section files. The default key map for DECTPU is TPU$KEY_MAP, contained in the default key map list TPU$KEY_MAP_LIST. See the description on key map lists in CREATE_KEY_MAP_LIST.

The EVE editor does not use the default key map TPU$KEY_MAP. In EVE, the name of a key map is not the same as the variable that contains the key map. For example, the EVE variable EVE$X_USER_KEYS contains the key map named EVE$USER_KEYS, which stores your key definitions. EVE stores all its key maps in the default key map list TPU$KEY_MAP_LIST. However, the default key map, TPU$KEY_MAP, is removed from the default key map list by the standard EVE section file.

When you create a key map, its keys are undefined. Each key map can hold definitions for all characters in the DEC Multinational Character Set and all the keypad keys and the function keys, in both their shifted and unshifted forms. Each key map has its own name (a string). This name cannot be the same as that of either another key map or a key map list.

Signaled Errors

TPU$_DUPKEYMAP WARNING A key map with this name already exists.
TPU$_TOOFEW ERROR Too few arguments passed to the CREATE_KEY_MAP built-in.
TPU$_TOOMANY ERROR Too many arguments passed to the CREATE_KEY_MAP built-in.
TPU$_INVPARAM ERROR Wrong type of data sent to the CREATE_KEY_MAP built-in.

Example

The following example creates a key map and defines two keys in the key map. The name of the key map is stored in the variable sample_key_map.

PROCEDURE init_sample_key_map 
 
sample_key_map := CREATE_KEY_MAP ("sample_key_map"); 
 
DEFINE_KEY ("EXIT", Ctrl_Z_KEY, "Exit application", sample_key_map); 
DEFINE_KEY ("COPY_TEXT ('XYZZY')", Ctrl_B_KEY, "Magic Word", sample_key_map); 
 
ENDPROCEDURE; 
      


CREATE_KEY_MAP_LIST


Format

[[string3 := ]]

CREATE_KEY_MAP_LIST (string1, string2 [[,...]])


Parameters

string1

A string that specifies the name of the key map list that you create.

string2

A string that specifies the names of the initial key maps within the key map list you create.

Return Value


A string that is the name of the key map list created.

Description

The CREATE_KEY_MAP_LIST procedure creates and names a key map list, and also specifies the initial key maps in the key map list it creates. CREATE_KEY_MAP_LIST optionally returns a string that is the name of the key map list created. A key map list is an ordered set of key maps. Key map lists let you change the procedures bound to your keys. To find the definition of a given key, DECTPU searches through the key maps in the specified or default key map list until DECTPU either finds a definition for the key or reaches the end of the last key map in the list.

DECTPU provides the default key map list TPU$KEY_MAP_LIST, which contains the default key map TPU$KEY_MAP. See the description of the CREATE_KEY_MAP built-in procedure for more information on key maps.

The CREATE_KEY_MAP_LIST built-in procedure creates a new key map list, names the key map list, and specifies the initial key maps contained in the list.

Key map lists store directions on what DECTPU is to do when you press an undefined key associated with a printable character. By default, a key map list directs DECTPU to insert undefined printable characters into the current buffer. To change the default, use the SET (SELF_INSERT) built-in procedure.

A newly created key map list is not bound to any buffer. To bind a key map list to a buffer, use the SET (KEY_MAP_LIST) built-in procedure. When you use the POSITION built-in to select a current buffer, the key map list that is bound to the buffer is automatically activated.

A newly created key map list has no procedure defined to be called when an undefined key is referenced. You can define such a procedure with the SET (UNDEFINED_KEY) built-in procedure. The default is to display the message "key has no definition."

Key map lists are saved in section files, along with any undefined key procedures and the SELF_INSERT settings.

Signaled Errors

TPU$_DUPKEYMAP WARNING The string argument is already defined as a key map.
TPU$_DUPKEYMAPLIST WARNING The string argument is already defined as a key map list.
TPU$_NOKEYMAP WARNING The string argument is not a defined key map.
TPU$_TOOFEW ERROR Too few arguments passed to the CREATE_KEY_MAP_LIST built-in.
TPU$_TOOMANY ERROR Too many arguments passed to the CREATE_KEY_MAP_LIST built-in.
TPU$_INVPARAM ERROR Wrong type of data sent to the CREATE_KEY_MAP_LIST built-in.

Example

The following example creates two key maps and groups them into a key map list:

PROCEDURE init_help_key_map_list 
 
help_user_keys := CREATE_KEY_MAP ("help_user_keys"); 
help_keys := CREATE_KEY_MAP ("help_keys"); 
help_key_list := CREATE_KEY_MAP_LIST ("help_key_list", help_user_keys, 
                 help_keys); 
ENDPROCEDURE; 
      


CREATE_PROCESS


Format

process := CREATE_PROCESS (buffer [[,string]])


Parameters

buffer

The buffer in which DECTPU stores output from the subprocess.

string

A string that represents the first command that you want to send to the subprocess. If you do not want to include the first command when you use the CREATE_PROCESS built-in procedure, see the SEND built-in procedure for a description of how to send the first or subsequent commands to a subprocess.

Return Value


The process created.

Description

The CREATE_PROCESS procedure starts a subprocess and associates a buffer with it. You can optionally specify an initial command to send to the subprocess. You can create multiple subprocesses. When you exit from DECTPU, any subprocesses you have created with CREATE_PROCESS are deleted. If you want to remove a subprocess before exiting, use the DELETE built-in procedure with the process as a parameter (DELETE (proc1)), or set the variable to integer zero, as follows:


proc1 := 0 

CREATE_PROCESS creates a subprocess of a DECTPU session and all of the output from the subprocess goes into a DECTPU buffer. You cannot run a program or utility that takes over control of the screen from a process created with this built-in procedure. You can, however, use the SPAWN built-in procedure to create a subprocess that suspends your DECTPU process and places you directly at the system command prompt. You can then run programs that control the whole screen.

See the Guide to the DEC Text Processing Utility for a list of subprocess restrictions.

Signaled Errors

TPU$_DUPBUFNAME WARNING First argument must be a unique string.
TPU$_CREATEFAIL WARNING Unable to activate the subprocess.
TPU$_TOOFEW ERROR Too few arguments passed to the CREATE_PROCESS built-in.
TPU$_TOOMANY ERROR Too many arguments passed to the CREATE_PROCESS built-in.
TPU$_NEEDTOASSIGN ERROR The CREATE_PROCESS built-in call must be on the right-hand side of an assignment statement.
TPU$_INVPARAM ERROR Wrong type of data sent to the CREATE_PROCESS built-in.
TPU$_CAPTIVE WARNING Unable to create a subprocess in a captive account.
TPU$_NOTMODIFIABLE WARNING Attempt to change unmodifiable buffer. You can write only the output of the subprocess to a modifiable buffer.
TPU$_NOPROCESS WARNING No subprocess to interact with. The process was deleted between the time that it was created and when DECTPU attempted to send information to it.
TPU$_SENDFAIL WARNING Unable to send data to the subprocess.
TPU$_DELETEFAIL WARNING Unable to terminate the subprocess.

Example

The following example creates a buffer to hold the output from the DCL commands executed by the OpenVMS subprocess:

! Create a buffer to hold the output from the DCL commands 
! "SET NOON" and "DIRECTORY". 
 
PROCEDURE user_dcl_process 
   dcl_buffer := CREATE_BUFFER ("dcl_buffer"); 
   MAP (main_window, dcl_buffer); 
   my_dcl_process := CREATE_PROCESS (dcl_buffer, "SET NOON"); 
   MESSAGE ("Creating DCL subprocess..."); 
   SEND ("DIRECTORY", my_dcl_process); 
ENDPROCEDURE; 
      


CREATE_RANGE


Format

range := CREATE_RANGE ({marker1|keyword1}, {marker2|keyword1}
[[, keyword2 ]])


Parameters

marker1

The marker that indicates the point in the buffer where the range begins.

marker2

The marker that indicates the point in the buffer where the range ends.

keyword1

A keyword that indicates the point in the buffer where you want the range to begin or end. Table 2-1 shows the valid keywords and their meanings.

Table 2-1 CREATE_RANGE Keyword Parameters
Keyword Meaning
LINE_BEGIN The beginning of the current buffer's current line.
LINE_END The end of the current buffer's current line.
BUFFER_BEGIN Line 1, offset 0 in the current buffer. This is the first position where a character could be inserted, regardless of whether there is a character there. This is the same as the point referred to by BEGINNING_OF (CURRENT_BUFFER).
BUFFER_END The last position in the buffer where a character could be inserted. This is the same as the point referred to by END_OF (CURRENT_BUFFER).

keyword2

The video attribute for the range: BLINK, BOLD, NONE, REVERSE, or UNDERLINE. If you omit the parameter, the default is NONE.

Return Value


The range created by CREATE_RANGE.

Description

The CREATE_RANGE procedure returns a range that includes two delimiters and all the characters between them, and sets the video attributes for displaying the characters when they are visible on the screen. A range delimiter can be a marker, the beginning or end of a line, or the beginning or end of a buffer. The beginning and ending delimiters do not have to be of the same type but must be in the same buffer.

CREATE_RANGE establishes a range that is delimited by the markers you specify. You can create multiple ranges in a buffer. When you apply video attributes to a range, you can see the range if it is in a visible buffer. A range may overlap another range.

If you clear the contents of a range with the ERASE built-in procedure, the range structure still exists. The range and its video attributes, if any, move to the next character or position beyond where the range ended before the range was erased.

To remove the range structure, use the DELETE built-in procedure or set the variable to which the range is assigned to zero (r1 := 0).

In portions of a range that either are associated with nonprintable characters or are not associated with characters at all, DECTPU does not display any of the video attributes of the range. However, if you insert new characters into portions of a range where the video attributes have not been displayed, the new characters do display the video attributes that apply to the range.

CREATE_RANGE checks whether the markers you specify as parameters are free markers. A free marker is a marker not bound to a character. For more information on free markers, see the description of the MARK built-in procedure.

If a marker defining a range is a free marker, DECTPU ties the range to the character or end-of-line nearest to the free marker to use as the range delimiter. An end-of-line is not a character but is a point to which a marker can be bound.

Signaled Errors

TPU$_NOTSAMEBUF WARNING First and second marker are in different buffers.
TPU$_TOOFEW ERROR CREATE_RANGE requires three parameters.
TPU$_TOOMANY ERROR CREATE_RANGE accepts no more than three parameters.
TPU$_NEEDTOASSIGN ERROR CREATE_RANGE must appear on the right-hand side of an assignment statement.
TPU$_INVPARAM ERROR One of your arguments to CREATE_RANGE is of the wrong type.
TPU$_BADKEY WARNING You specified an illegal keyword.

Examples

The following example creates a range starting at start_mark and ending at end_mark. When this range is visible on the screen, the characters in the range are bolded.
#1

my_range := CREATE_RANGE (start_mark, end_mark, BOLD) 
 

The following example erases the text in the current buffer, starting at the editing point and erasing text until the end of the buffer is reached:

#2

PROCEDURE user_erase_to_eob 
 
   LOCAL start_of_range, 
         here_to_eob; 
 
   start_of_range := MARK (NONE); 
   here_to_EOB    := CREATE_RANGE (start_of_range, 
                                  END_OF (CURRENT_BUFFER), 
                                  NONE); 
   ERASE (here_to_eob); 
ENDPROCEDURE; 
      

The following example creates a range starting at the first point in the buffer where a character can be inserted and ending at the point marked by mark2. If the range is visible on the screen, the characters in it are highlighted with the reverse video attribute.

#3

the_range := CREATE_RANGE (BUFFER_BEGIN, mark2, REVERSE); 
      


CREATE_WIDGET

The CREATE_WIDGET built-in procedure has two variants with separate syntaxes.


Format

widget := CREATE_WIDGET (widget_class,widget_name, {parent_widget|SCREEN}
[[, {buffer|learn_sequence|program|range|string}
[[, closure
[[, widget_args... ]] ]] ]])

Low-Level Variant

This variant uses the Intrinsics or Motif Toolkit low-level creation routine to create and return a widget. Although it has been created, the returned widget is not managed and therefore not visible. The application must call the MANAGE_WIDGET built-in procedure to make the widget visible.

Format

widget := CREATE_WIDGET (resource_manager_name,hierarchy_id,{parent_widget|SCREEN}
[[, {buffer|learn_sequence|program|range|string}
[[, closure ]] ]])

Hierarchy Variant

This variant creates and returns an entire hierarchy of widgets (as defined in a Motif Resource Manager database) and returns the topmost widget. All children of the returned widget are also created and managed. The topmost widget is not managed, so none of the widgets created is visible.

Parameters

widget_class

The integer returned by DEFINE_WIDGET_CLASS that specifies the class of widget to be created.

widget_name

A string that is the name to be given to the widget.

parent_widget

The widget that is to be the parent of the newly created widget.

SCREEN

A keyword indicating that the newly created widget is to be the child of DECTPU's main window widget.

buffer

The buffer that contains the interface callback routine. This code is executed when the widget performs a callback to DECTPU; all widgets created with a single CREATE_WIDGET call use the same callback code. If you do not specify this parameter, DECTPU does not execute any callback code when the widget performs a callback to DECTPU.

learn_sequence

The learn sequence that is the interface callback routine. This is executed when the widget performs a callback to DECTPU; all widgets created with a single CREATE_WIDGET call use the same callback code. If you do not specify this parameter, DECTPU does not execute any callback code when the widget performs a callback to DECTPU.

program

The program that is the interface callback routine. This is executed when the widget performs a callback to DECTPU; all widgets created with a single CREATE_WIDGET call use the same callback code. If you do not specify this parameter, DECTPU does not execute any callback code when the widget performs a callback to DECTPU.

range

The range that contains the interface callback routine. This is executed when the widget performs a callback to DECTPU; all widgets created with a single CREATE_WIDGET call use the same callback code. If you do not specify this parameter, DECTPU does not execute any callback code when the widget performs a callback to DECTPU.

string

The string that contains the interface callback routine. This is executed when the widget performs a callback to DECTPU; all widgets created with a single CREATE_WIDGET call use the same callback code. If you do not specify this parameter, DECTPU does not execute any callback code when the widget performs a callback to DECTPU.

closure

A string or integer. DECTPU passes the value to the application when the widget performs a callback to DECTPU. For more information about using closures, see the Guide to the DEC Text Processing Utility.

If you do not specify this parameter, DECTPU passes the closure value (if any) given to the widget in the User Interface Language (UIL) file defining the widget. If you specify the closure value with CREATE_WIDGET instead of in the UIL file, all widgets created with the same CREATE_WIDGET call have the same closure value.

widget_args

One or more pairs of resource names and resource values. You can specify a pair in an array or as a pair of separate parameters. If you use an array, you index the array with a string that is the name of the resource you want to set. Resource names are case sensitive. The corresponding array element contains the value you want to assign to that resource. The array can contain any number of elements. If you use a pair of separate parameters, use the following format:

resource_name_string, resource_value


Previous Next Contents Index

  [Go to the documentation home page] [How to order documentation] [Help on this site] [How to contact us]  
  privacy and legal statement  
6020PRO_004.HTML