Previous Next

PROMPT-FOR statement
Requests input and places that input in the screen buffer (frame).
The PROMPT-FOR statement is a combination of the following statements:
*
ENABLE — Enables the specified field-level widgets (in this case fill-in fields) for input
*
WAIT-FOR — Blocks for input and processes all ABL events until a specific ABL event occurs, in this case the GO universal key function event
*
DISABLE — Disables the specified field-level widgets (in this case fill-in fields) for input
Note:
Data movement
 
Syntax 
 
PROMPT-FOR 
  [ STREAM stream | STREAM-HANDLE handle ]
  [ UNLESS-HIDDEN ]
  {     { field 
            [ format-phrase ]
            [ WHEN expression ]
        }
     |  { TEXT ( { field 
                     [ format-phrase ]
                     [ WHEN expression ]
                 } ...
               )
        }
     |  { constant 
            [ { AT | TO } n ] 
            [ VIEW-AS TEXT ]
            [ FGCOLOR expression ]
            [ BGCOLOR expression ]
            [ FONT expression ]
        }
     |  SPACE [ ( n ) ]  |  SKIP [ ( n ) ]  |  ^ 
  } ... 
  [ GO-ON ( key-label ... ) ]
  [ IN WINDOW window ]
  [ frame-phrase ]
  [ editing-phrase ]
 
PROMPT-FOR
  [ STREAM stream | STREAM-HANDLE handle ]
  [ UNLESS-HIDDEN ]
  record [ EXCEPT field ... ] 
  [ IN WINDOW window ]
  {  [ frame-phrase ] }
STREAM stream
Specifies the name of a stream. If you do not name a stream, the AVM uses the unnamed stream. See the DEFINE STREAM statement reference entry and the chapter on alternate I/O sources in OpenEdge Development: Programming Interfaces for more information on streams.
STREAM-HANDLE handle
Specifies the handle to a stream. If handle it is not a valid handle to a stream, the AVM generates a run-time error. Note that stream handles are not valid for the unnamed streams. See the chapter on alternate I/O sources in OpenEdge Development: Programming Interfaces for more information on streams and stream handles.
UNLESS-HIDDEN
Restricts PROMPT-FOR to fields whose HIDDEN attribute is FALSE.
field
Specifies the name of the field or variable whose value you want to enter and store in the screen buffer. Remember that the PROMPT-FOR statement only accepts input and stores it in the screen buffer. The underlying record buffer of a field or variable is unaffected.
This field parameter is demonstrated in the following program:
 
DEFINE VARIABLE ix AS INTEGER NO-UNDO INITIAL 3.
 
PROMPT-FOR ix.
MESSAGE "Record buffer" ix SKIP(0) "Screen buffer" INPUT x.
The program does the following:
*
*
*
In the case of array fields, array elements with constant subscripts are treated just like any other field. Array fields with no subscripts or in the FORM statement are expanded as though you had typed in the implicit elements. See the DISPLAY statement reference entry for information on how array fields with expressions as subscripts are handled.
format-phrase
Specifies one or more frame attributes for a field, variable, or expression. For more information on format-phrase, see the Format phrase reference entry.
WHEN expression
Prompts for the field only when expression has a value of TRUE. Here, expression is a field name, variable name, or expression that evaluates to a LOGICAL value.
TEXT
Defines a group of character fields or variables (including array elements) to use automatic word-wrap. The TEXT option works only with character fields. When you insert data in the middle of a TEXT field, the AVM wraps data that follows into the next TEXT field, if necessary. If you delete data from the middle of a TEXT field, the AVM wraps data that follows into the empty area.
If you enter more characters than the format for the field allows, the AVM discards the extra characters. The character fields must have formats of the form x(n). A blank in the first column of a line marks the beginning of a paragraph. Lines within a paragraph are treated as a group and will not wrap into other paragraphs.
Table 56 lists the keys you can use within a TEXT field and their actions.
 
In this procedure, the s-com, or Order Comments field is a TEXT field. Run the following procedure and enter text in the field to see how the TEXT option works:
 
DEFINE VARIABLE s-com AS CHARACTER NO-UNDO FORMAT "x(40)" EXTENT 5.
 
FORM 
  "Shipped   :" Order.ShipDate AT 13 SKIP
  "Misc Info :" Order.Instructions AT 13 SKIP(1)
  "Order Comments :" s-com AT 1
  WITH FRAME o-com CENTERED NO-LABELS TITLE "Shipping Information".
 
FOR EACH Customer NO-LOCK, EACH Order OF Customer:
  DISPLAY Customer.CustNum Customer.Name Order.OrderNum Order.OrderDate
    Order.PromiseDate WITH FRAME order-hdr CENTERED.
  UPDATE Order.ShipDate Order.Instructions TEXT(s-com) 
    WITH FRAME o-com.
  s-com = "".
END.
constant [ AT n | TO n ] [ VIEW-AS TEXT ] [ FGCOLOR expression ]
[ BGCOLOR expression ] [ FONT expression ]
Specifies a literal value that you want displayed in the frame. If you use the AT option, n is the column in which you want to start the display. If you use the TO option, n is the column in which you want to end the display. You can use the BGCOLOR, FGCOLOR, and FONT options to define the colors and font in which the constant is displayed. If you use the VIEW-AS TEXT option, the constant is displayed as a text widget rather than a fill-in field.
SPACE [ ( n ) ]
Identifies the number (n) of blank spaces to insert after the field is displayed. The n can be 0. If the number of spaces you specify is more than the spaces left on the current line of the frame, a new line is started and any extra spaces are discarded. If you do not use this option or n, one space is inserted between items in the frame.
SKIP [ ( n ) ]
Identifies the number (n) of blank lines to insert after the field is displayed. The n can be 0. If you do not use this option, the AVM does not skip a line between expressions unless the expressions do not fit on one line. If you use the SKIP option, but do not specify n, or if n is 0, the AVM starts a new line unless it is already at the beginning of a new line.
^
Tells the AVM to ignore an input field when input is being read from a file. Also, the following statement will read a line from an input file and ignore that line. This is an efficient way to skip over lines.
 
PROMPT-FOR ^
GO-ON ( key-label . . . )
The GO-ON option tells the AVM to execute the GO action when the user presses any of the keys listed. The keys you list are used in addition to keys that perform the GO action by default (such as F1 or RETURN on the last field) or because of ON statements.
When you list a key in the GO-ON option, you use the keyboard label of that key. For example, if you want the AVM to take the GO action when the user presses F2, you use the statement GO-ON(F2). If you list more than one key, separate them with spaces, not commas.
IN WINDOW window
Specifies the window in which the prompt occurs. The expression window must resolve to a handle to a window.
frame-phrase
Specifies the overall layout and processing properties of a frame. For more information on frame-phrase, see the Frame phrase reference entry.
editing-phrase
Supported only for backward compatibility.
Identifies processing to take place as each keystroke is entered. This is the syntax for editing-phrase:
 
Syntax 
[ label : ] EDITING: statement ... END
For more information on editing-phrase, see the EDITING phrase reference entry.
record
The name of a record buffer. All of the fields in the record will be processed exactly as if you prompted for each of them individually.
To use PROMPT-FOR with a record in a table defined for multiple databases, you must qualify the record’s table name with the database name. See the Record phrase reference entry for more information.
EXCEPT field
Affects all fields except those listed in the EXCEPT phrase.
Examples 
The r-prmpt.p procedure requests a customer number from the user and stores that number in the screen buffer. The FIND statement reads a record from the Customer database table.
 
REPEAT:
  PROMPT-FOR Customer.CustNum.
  FIND Customer USING Customer.CustNum NO-ERROR.
  IF NOT AVAILABLE Customer THEN DO:
    MESSAGE "No such customer number.".
    UNDO, RETRY.
  END.
  DISPLAY Customer.Name Customer.Phone Customer.SalesRep.
END.
The r-prmpt2.p procedure requests the initials of a sales representative and stores those initials in the screen buffer. The FIND statement uses the initials stored in the screen buffer to read a record from the SalesRep database table. After finding the record, the procedure displays sales rep information.
 
REPEAT:
  PROMPT-FOR SalesRep.SalesRep LABEL "Sales rep’s initials"
    WITH FRAME namefr ROW 2 SIDE-LABELS.
  FIND SalesRep NO-LOCK USING SalesRep.SalesRep.
  DISPLAY SalesRep.RepName SalesRep.Region SalesRep.MonthQuota 
    WITH 1 DOWN NO-HIDE.
END.
Notes 
*
*
*
*
In the context of the .NET blocking method, System.Windows.Forms.Application:Run( ), if you directly or indirectly execute the PROMPT-FOR statement while displaying a non-modal ABL window, in certain contexts (such as within a user-defined function or non-VOID method) this statement execution raises the STOP condition. For more information on the .NET Application:Run( ), method, see the reference entry for the WAIT-FOR statement (.NET and ABL).
See also 
DEFINE STREAM statement, EDITING phrase, Format phrase, Frame phrase, Stream object handle

Previous Next
© 2013 Progress Software Corporation and/or its subsidiaries or affiliates.