

<<C3 Formula Classes>>

C3 provides a variety of formula classes and button
to make your programming task easier. Among them are:

Feature       Description

AutoMouse     Perform field lookup on mouse click
ButtonRange   View records based high & low value of key
ButtonEqual   View browse records based on value of key
ButtonFilter  On fly filter for browse
ButtonFilterN Equal a value , not equal a value or all
ButtonFilterV Exists, NotExists, All
C3FilterAnd   Filter on multiple field in secondary browse
C3Lookup      Auto Lookup from form
C3NOxxx _     Disables Inskey,DelKey,ChgKey or Message
ColorRecord   Highlight browse records meeting criteria
Detl          Allows calculation on Invoice detail items
Detail        Used only on C3Invoice Template
Ebnn          Add list box on any type of screen
EBnnFilter    Allows filtering on an embedded browse
EbnnList      Computed/Conditional field in Embedded Browse
EbnnNoLimit   Reads records of an embedded browseat all times
EbnnRecur     handles recursive embedded browse
EBnnRelFill   Stuff value into key field on embedded browse
EBnnSecondary 
FileOpen      Opens a file not in procedure schematic
FilterOnly    Use on secondary file in a report filter only
GLBPAS        Trigger prompt during global pass of filters
GLBTAG        Trigger prompt during global pass of tags
KeyEqual      View records based on several key fields
KeyRange      View records based on range of key values
LIST              #
LULIST        Improves performance during lookups
LU_SET        Set values for fields prior to lookup
Many Keys     Multi_keys & locators on single browse
Many Keys     & Locators _ Pulldown
QueueField    Allows you to add fields to primary Queue
PrimeKey      Stuff value into a key node
RelFill       Set/Override a parent child related value
Rel_UP        Auto prime related file key fields for update
SavePosition  Restores record pointer on return to browse
SpinnerScreen Add a Spinner to screen
Totaling      Aver,Count,Mini,Maxi,Tag


<< Action Suffix (All) >>

PURPOSE       The Action Suffix "ALL" Modifies the action of
              Formula Classes. Applies modification to all
              browses and embedded browses.

REQUIREMENTS  Used only on C3Browse

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION

1.  Create a Computed formula field as follows: Append ALL
    to the Formula Class.


        Computed Field ͻ
                                                 
        Field Name :   Any Entry Not Used        
        Formula Class : C3NoAddALL               
        Description :  File Name                 
        Formula  :     Any Entry Not Used        
       ܼ


2.  Remove the Insert button from all browses on the screen.

COMMENTS:

Applies  the option to all browses and embedded  browses  on
the  screen  (whether the underlying procedure is  itself  a
browse or a form with embedded browses).

EXAMPLE _ ACTION SUFFIX (ALL)


     Suppose you wish to disable the ability to add records
     to all browses on the screen in a procedure.

 1.  Create a Computed Field Formula as follows:  You may use
     anything in for the Field Name.


        Computed Field ͻ
                                                 
        Field Name    : Cst:SysID                
        Formula Class : C3NoAddALL               
        Description   : Customer                 
        Formula       : 0                        
       ܼ


2.  Remove the insert buttons from all browses in the pro_
    cedure.


<< Action Suffix _DS   >>


PURPOSE       Action Suffix _DS allows use of the Description
              Line in a Formula for actual computation.

REQUIREMENTS  _DS not available for every formula class

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:

1.  Create a computed field formula class.  Add _DS at the
    end of the formula class.

     Computed Field ͻ
                                                        
     Field Name   : Any text                            
     Formula Class: formula class                       
     Description  : Enter your formula here             
                                                        
     Formula        Any text                            
                                                        
    ͼ


                   EXAMPLE: ACTION SUFFIX _DS

     Computed Field ͻ
                                                        
     Field Name   : Cst:SysId                           
     Formula Class: Pre:Filter_DS                       
     Description  : Cst:Balance >> 1000                 
                                                        
     Formula      0                                     
                                                        
    ͼ


<< Action Suffix (nn)  >>


PURPOSE       The Action Suffix "nn" Modifies the action of
              the Formula Classes. Applies the option to
              embedded browse indicated by nn only.

REQUIREMENTS  Used only on C3Browse

SEE DEMO.APP  


IMPLEMENTATION:

     Append the following to each Formula Class: nn

     Computed Field ͻ
                                                        
     Field Name :   Any (Not Used)                      
     Formula Class: EBnnNoLimit                         
     Description :  Any (Not Used)                      
                                                        
     Formula        Any (Not Used)                      
                                                        
    ͼ


COMMENTS:

Applies the option to all embedded browses (whether or not
the underlying procedure is itself a browse or a form with
embedded browses.

                   EXAMPLE: ACTION SUFFIX (nn)

     Computed Field ͻ
                                                        
     Field Name :   Prd:SysID                           
     Formula Class: EB02NoLimit                         
     Description :  Product                             
                                                        
     Formula        0                                   
                                                        
    ͼ


<< AutoMouse Lookup    >>


PURPOSE       AutoMouse performs sn Entry Field lookup with
              a mouse click.

REQUIREMENTS  Relationship must exist between the two files.
              You must use C3Form and C3Browse.

SEE DEMO.APP  API_Form

SEE ALSO      See Soundex and Dos Wildcard


IMPLEMENTATION:

1. Create a Button Field next to the C3Lookup field. (Type 25
   on the numeric keypad while holding down the ALT key, will
   produce the symbol for downkey.)

     Button Field Properties ͻ
     Button Text :  Any text                             
     Equate Label:  Pu_Pre:FieldName                     
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ

                   EXAMPLE: AUTOMOUSE LOOKUP

     Button Field Properties ͻ
     Button Text :                                    
     Equate Label:  PU_Cst:No   ( Pu_Pre:FieldName)    
     Hot Key     :                                     
      
     When Button is Pressed                Source     
     Procedure: (optional)***                   
                                                       
     When Button is Selected               Source     
     Procedure:                                 
    ͼ

<< ButtonEqual   >>


PURPOSE       Button Equal limits displayed records based
              on the value of the selected field key field.
              Activated by pressing a button, which toggles
              the range of records displayed to those corr_
              esponding to selected field/value.  Several
              button equals can be used at one time.  Results
              of each ButtonEqual will be cumulative.

REQUIREMENTS  Key must be a local primary key and cannot come
              from a related file.

SEE DEMO.APP  API_Form

SEE ALSO      See Soundex and Dos Woldcard


IMPLEMENTATION:

 1. Create your C3Browse using the key you wish to toggle as
    the primary access key.

 2. Determine message strings to be displayed by button on
    on browse and create local string variable  the length
    of the longest string.

        EXAMPLE:     Current Client       Show All

 3. Create a Computed Field as shown below.

     Computed Field ͻ
                                                       
     Field Name:    Local Data Variable                
     Formula Class: BUTTONEQUAL (_DS not valid)        
     Description:  'buttondisplay1'|'buttondisplay2'   
                                                       
              Ŀ    
     Formula:  Field_To_Check + Field_From_File      
                  
                   Ok             Cancel             
                                          
    ܼ


 4. Create a button on browse as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
                                                       
     Button Text :BEButton1  *                         
     Equate Label:BEButton1  *                         
     Hot Key :                                         
                                                       
     When Button is Pressed             SOURCE        
     Procedure: (optional)***                   
                                                       
     When Button is Selected            Source        
     Procedure:                                 
    ͼ

              * variable containing button display

COMMENTS:

Several button equals can be used at one time on a browse,
the results of each ButtonEqual will be cumulative.

Upon initial entry into a screen which has the ButtonEqual
feature implemented it will not be active.  Pressing the
Button Equal button will cause the list to display  only
records which meet the criteria.  Pressing the button
again will return you to the normal display.

Button Equals will cause TOTALs to recalculate.

Using Button Equal:

Button Equal is activated by pressing a button, which
toggles between the range of records displayed to those
corresponding to selected field value and ALL records.

EXAMPLE: BUTTONEQUAL


 1. Create your C3Browse using the key you wish to toggle as
    the primary access key.

          Browse Customersͻ
                                                   
            NoNameAddressPhoneĿ  
                                              
                                              
                                              
              
                                                   
          ͼ

 2. Determine message strings to be displayed by button on
    on browse and create local string variable the length
    of the longest string.  Let's call our variable
    BEButton1.

        EXAMPLE:     Current Client       Show All

 3. Create a Computed Field as shown below.

     Computed Field ͻ
                                                       
     Field Name:    BEButton1                          
     Formula Class: BUTTONEQUAL                        
     Description:  'Current Client'|'Show All'         
                                                       
              Ŀ    
     Formula:  Cst:No                                
                  
                   Ok             Cancel             
                                          
    ܼ


 4. Create a button on browse using the variable name
    created in Step 2, as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
                                                       
     Button Text :BEButton1                            
     Equate Label:BEButton1                            
     Hot Key :                                         
                                                       
     When Button is Pressed             SOURCE        
     Procedure: (optional)***                   
                                                       
     When Button is Selected            Source        
     Procedure:                                 
    ͼ


<< ButtonFilter        >>


PURPOSE       Button Filter creates filter in a C3Browse. Set_
              tings may be passed on to reports and C3Batch.
              Multiple field strings and button filters may
              be performed on a single browse.

REQUIREMENTS  None

SEE DEMO.APP  Api.test

SEE ALSO      ButtonFilterN, ButtonFilterV, GD_Filter.



IMPLEMENTATION:

 1. Determine message strings to be displayed by the button
    on the browse and create local string variable the length
    of the longest string.

         EXAMPLE:      Show Client      Show All

 2. Create a Computed Field as shown below.


     Computed Field  
                                                        
      Field Name:    FButton1   (Local Variable)        
      Formula Class: BUTTONFILTER (_DS not valid)       
      Description:   'Show Client'|' Show All'          
      Formula: Field_To_Check + Filed_From_File         
                                                        
    ͼ


 3. Create a button on browse as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.


     Button Field Properties ͻ
                                                         
     Button Text : variable from Step 1                  
     Equate Label: variable from Step 1                  
     Hot Key  :                                          
                                                         
                                                         
     When Button is Pressed           Source            
     Procedure: (optional)***                     
                                                         
     When Button is Selected          Source            
     Procedure:                                   
    ͼ


COMMENTS:

IMPORTANT:  Totals deactivate the EMBEDDED SOURCE filter on
the  filter  totals. The filter will only work on  the main
scrolling list.

***  If a procedure is used it will determine the  value  of
the  filter  being  tested for. If the  filter  is  inactive
pressing  the button will display the results of the  proce_
dure.  After  selection  the list to  display  records  that
contain the selected value. If the filter is active pressing
the  button  will  clear the filter value  and  display  all
records in the list.

Button filters will cause TOTALs to recalculate.

Using Button Filters:

Button filters are activated and deactivated by pressing a
button.  The action of pressing the button toggles the filter
on, the first time the button is pressed, or off, the second
time the button is pressed.

EXAMPLE: BUTTONFILTER


 1. Determine message strings to be displayed by the button
    on the browse and create local string variable the length
    of the longest string. Let's call the variable FButton1.

         EXAMPLE:      Show Client      Show All

 2. Create a Computed Field as shown below.

     Computed Field  
                                                        
      Field Name:    FButton1   (Local Variable)        
      Formula Class: BUTTONFILTER (_DS not valid)       
      Description:   'Show Client'|' Show All'          
                                                        
     Formula: Field_To_Check + Filed_From_File          
                                                        
    ͼ


 3. Create a button on browse using the variable created
    in Step 1, as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
                                                         
     Button Text : FButton1                              
     Equate Label: FButton1                              
     Hot Key  :                                          
                                                         
     When Button is Pressed           Source            
     Procedure: (optional)***                     
                                                         
     When Button is Selected          Source            
     Procedure:                                   
    ͼ


<< ButtonFilterN >>


PURPOSE       Button Filter filters C3Browse to select records
              equal a value, not equal a value or all.

REQUIREMENTS  None

SEE DEMO.APP  API_Form

SEE ALSO      See Soundex and Dos Woldcard


IMPLEMENTATION:

 1. Determine message strings to be displayed by the button
    on the browse and create local string variable the length
    of the longest string.

                'Equals'|'Not Equals'|'All'

 2. Create a Computed Field as shown below.

     Computed Field ͻ
                                                       
     Field Name   : Local Data Variable                
     Formula Class: ButtonFilterN (_DS not valid)      
     Description  : 'Equals'|'Not Equals'|'All'        
                                                       
              Ŀ    
     Formula:  Field_To_Check                        
                                                     
                  
                                                       
                Ok              Cancel               
                                           
    ͼ


 3. Create a button on browse as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
                                                       
     Button Text : variable from Step 1                
     Equate Label: variable from Step 1                
     Hot Key     :                                    
                                                      
     When Button is Pressed          Source          
     Procedure: (optional)***                  
                                                      
     When Button is Selected         Source          
     Procedure:                                
    ܳͼ
                                  
       Local Variable From Step 3

COMMENTS:

Using Button FilterN:

Button filterN activates by pressing a button.   The action
of pressing the button toggles the filter from EQUALS, to
NOT EQUAL, to ALL.

EXAMPLE _ ButtonFilterN


 1. Determine message strings to be displayed by the button
    on the browse and create local string variable the length
    of the longest string. Let's called our variable NFilter1.

                'Equals'|'Not Equals'|'All'

 2. Create a Computed Field that will filter on the Customer
    Account Number (Cst:No) field, as shown below.

     Computed Field ͻ
     Field Name   : NFilter1                           
     Formula Class: ButtonFilterN                      
     Description  : 'Equals'|'Not Equals'|'All'        
              Ŀ    
     Formula:  Cst:No                                
                  
                Ok              Cancel               
                                           
    ͼ

 3. Create a button on browse as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
     Button Text : NFilter1                            
     Equate Label: NFilter1                            
     Hot Key     :                                    
     When Button is Pressed          Source          
     Procedure: (optional)***                  
                                                      
     When Button is Selected         Source          
     Procedure:                                
    ܳͼ
                                  
       Local Variable From Step 1


<< ButtonFilterN  (PullDown)>>


PURPOSE       BuutonFilterN filters C3Browse to select records
              equal a value, not equal a value or all. Here
              ButtonFilterN is called from a PullDown Menu.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:

 1. Determine message strings to be displayed by the button
    on the browse.

          EXAMPLE:    'Equals'|'Not Equals'|'All'

 2. Create local string variable the length of the longest
    string.  For this example we will call the variable
    "FNButton1".

 3. Create a Computed Field as shown below.

     Computed Field ͻ
                                                       
     Field Name:    FNButton1  (Local_Variable)        
     Formula Class: ButtonFilterN (_DS not valid)      
     Description:   'Equals'|'Not Equals'|'All'        
                                                       
               Ŀ   
     Formula:   Field_To_Check                       
                                                     
                  
                                                       
                 Ok              Cancel              
                                         
                                                       
    ͼ


 4. Create one pulldown menu item for "Equals".

     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle    
     Menu Name:     Equals                  Source    
     Procedure:                                 
     Field:         BE_FNButton1      (from Step 3)Ŀ 
                                                       
     Equate Label:  ?BE_FNButton1                      
     Message:           Ok          Cancel           
                                         
     ܳͼ
                                                       
       * BN_local_variable  Not Equals          
         BE_local_variable  Equals 
         BA_local_variable  All

 5. Create one pulldown menu item for "Not Equals".

     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle    
     Menu Name:     Not Equals              Source    
     Procedure:                                 
     Field:         BN_FNButton1                       
                                                        
     Equate Label:  ?BN_FNButton                        
     Message:                  Ok          Cancel     
                                          
    ͼ

 6. Create one pulldown menu item for "All".

     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle    
     Menu Name:     All                     Source    
     Procedure:                                 
     Field:         BA_FNButton1                       
                                                        
     Equate Label:  ?BA_FNButton1                       
     Message:                  Ok          Cancel     
                                          
    ͼ




COMMENTS:
Button filterN pulldown activates by selecting the appro_
priate menu item.  The action of selecting the menu item
toggles the filter either EQUALS,  NOT EQUAL or ALL.

<< ButtonFilterV       >>


PURPOSE       ButtonFilterV filters C3Browse to select records
              Exists, NotExists, or ALL.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

 1. Determine message strings to be displayed by button on
    on browse.

              Exists      NotExists        All

 2. Create local string variable, the length of longest
    satring.  Let's called the local variable "FVButton1"
    for now.

 3. Create a Computed Field as shown below.

     Computed Field ͻ
                                                        
     Field Name   : FVButton1 "Local Variable"          
     Formula Class: ButtonFilterV (_DS not valid)       
     Description  : 'Exists'|'Not Exists'|'All'         
                                                        
              Ŀ    
     Formula:  Field_To_Check                         
                                                      
                  
                                                        
                     Ok          Cancel               
                                          
    ͼ


 4. Create a button on browse as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
                                                         
     Button Text : FVButton1  *                          
     Equate Label: FVButton1                             
     Hot Key  :                                          
                                                         
     When Button is Pressed               Source        
     Procedure: (optional)***                    
                                                         
     When Button is Selected              Source        
     Procedure:                                   
    ͼ

         * variable containing button display

COMMENTS:

Using Button FilterV:
Button filterV activates by pressing a button.   The action
of pressing the button toggles the filter from EXISTS, to
NOT EXISTS, to ALL.

<< ButtonFilterV       (PullDown)>>


PURPOSE       ButtonFilterV filters browse to select records
              equal a value, not equal a value or all.  Here
              ButtonFilterV is called from a pulldown menu.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

 1. Determine message strings to be displayed by button on
    on browse.

        Example:   'Exists'|'Not Exists'|'All'

 2. Create local string variable, the length of longest
    string.  Let's call the local variable "FVButton1".

 3. Create a Computed Field as shown below.

     Computed Field ͻ
                                                        
     Field Name:     FVButton1 (Local Data Variable)    
     Formula Class:  ButtonFilterV (_DS not valid)      
     Description:    'Exists'|'Not Exists'|'All'        
                                                        
     Formula: Ŀ   
               Field_To_Check                         
                                                      
                 
                                                        
                     Ok          Cancel               
                                          
    ͼ


 4. Create a pulldown menu item for the "Not  Exists" case
    as shown below:


     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle     
                                                         
     Menu Name:     Not Exists               Source     
     Procedure:                                   
     Field:         BVN_FVButton1                        
                                                         
     Equate Label:  ?BVN_FVButton1                       
     Message:                   Ok          Cancel     
                                           
    ͼ

        * BVNlocal_variable  Not Exists
          BVElocal_variable  Exists
          BVAlocal_variable  All

 5. Create a pulldown menu item for case of "Exists" as shown
    below:

     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle     
                                                         
     Menu Name:     Exist                    Source     
     Procedure:                                   
     Field:         BVE_FVButton1                        
     Equate Label:  ?BVE_FVButton1                       
     Message:                   Ok          Cancel     
                                           
    ͼ


 6. Create a pulldown menu item for case of "ALL" shown
    below:

     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle     
                                                         
     Menu Name:     ALL                      Source     
     Procedure:                                   
     Field:         BVA_FVButton1                        
     Equate Label:  ?BVA_FVButton1                       
     Message:                   Ok          Cancel     
                                           
    ͼ

COMMENTS:

Using Button FilterV _ Pulldown:
Button filterN pulldown activates by selecting the appro_
priate menu item.  The action of selecting the menu item
toggles the filter either EXISTS, NOT EXISTS or ALL.


<< ButtonRange  >>


PURPOSE       ButtonRange selects records based on high
              and low value of a particular key field. Press_
              ing the ButtonRange selects the currently high_
              lighted record using its field value to limit
              the records displayed on a browse.  When the
              second value is highlighted press the button
              a second time to limit the list.

REQUIREMENTS  Only one Button Range can be active at any time.
              The field must be a part of the key.  If it is
              a multi field key all fields above it must be
              primed using PRIMEKEY.

SEE DEMO.APP  LBD_Brw_Prj

SEE ALSO      


IMPLEMENTATION:

 1. Determine message strings to be displayed by button on
    on browse.  You will need three strings.

         initial display when no ranges are active
         select the next limit of the range display
         range removed display string.

         EX:   Current Range    Next Range    Show All

 2. Create local string variable the length of the longest
    string.  For this example, let's call the local variable
    "RButton1".

 3. Create a Computed Field as shown below.

     Computed Field ͻ
     Field Name:    RButton1 (button display variable) 
     Formula Class: BUTTONRANGE (_DS not valid)        
     Description:  'button display1'|'2''|' 3 '        
               Ŀ     
     Formula:   field test for value **              
                    
                    Ok           Cancel              
    ܼ

 4. Create a button on browse as shown below:

    When you create the button, Clarion will try to place
    apostrophes around the variable name in Button text.
    Delete them. When you do this, Clarion will place '@'
    on you screen.  The text you wish to display in on
    the button, will appear at runtime.

     Button Field Properties ͻ
                                                       
     Button Text : RButton1 *                          
     Equate Label: RButton1                            
     Hot Key :                                         
                                                       
     When Button is Pressed             SOURCE        
     Procedure: (optional)                     
                                                       
     When Button is Selected            Source        
     Procedure:                                
    ͼ

             * variable containing button display

COMMENTS:

** Designate the field to be tested for the condition.  Code
for  related files is generated automatically based  on  the
proper relation. All fields above the button range field in
the key must be set to a value.

ButtonRange causes TOTAL formulas to recalculate.

<< C3FilterAnd  >>


PURPOSE       C3FilterAnd allows selection of child record only
              when all conditions are met.  Normally button
              filters and global filters on secondary files
              are defaulted to a ANY to 1 condition met in
              any of the child records.

REQUIREMENTS  Relationship must exist between the primary
              and the secondary files.

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:

 Create a Computed Field as shown below:

        Computed Field ͻ
                                                 
        Field Name :     Any Entry Not Used      
        Formula Class :  C3filterAND             
        Description :    File Name               
        Formula  :       Any Entry Not Used      
                                                 
       ͼ

COMMENTS:

When using buttons filters on fields in the primary
file all filter conditions must be met for the record

        Computed Field ͻ
                                                 
        Field Name :     Cst:No *                
        Formula Class :  C3filterAND             
        Description :    Customer **             
        Formula  :       0 *                     
                                                 
       ͼ

                        * Any Entry Not Used
                       ** File Name

<< C3Lookup >>


PURPOSE       C3Lookup performs lookup on field to browse with
              a matching key access i.e. lookup Customer No
              on a browse in Customer No order.

REQUIREMENTS  Relationship must exist between files.  Valid_
              ation file must be in file schematic.  Use
              C3Form or C3Browse when implementing lookup.
              You must use the field from the "LOOKED UP"
              file on the screen.

SEE DEMO.APP  Api_Form, Phn_Cnm

SEE ALSO      Soundex Locators


IMPLEMENTATION:

  1. Place the Entry Field from the "LOOKUP FILE" on your
     form.  (DO NOT USED A Field from you primary file to
     perform a C3Lookup.)

                                LOOKUP FILE   CUSTOMERĿ
                                 ĳ Cst:No    
       Form ͳͻ  Cst:Phone 
                                            Cst:Zip...
         Customer No:       Cst:No                     
         Address    :       123 Main St     
         City,State.Zip:    Anywhere,USA   
       ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^

 2.  Complete the "When Field Completed"    section of the
     Entry Field as follows:

       Entry Field Propertiesͻ
                    Cst:No                    
        Picture : @s15                        
                                              
        When Field Completed                  
         Procedure  :  Procedue Name          
         Entry Field : C3Lookup               
                                              
                 Ok            Cancel         
       ͼ

 3.  If you want to provide AutoMouse Lookup capability for
     your user,  create a Button Field next to the C3Lookup
     field. (Typing 25 on the numeric keypad while holding
     down the ALT key, will produce the symbol for downkey.)

     Button Field Properties ͻ
     Button Text :                (Any text)            
     Equate Label:  Pu_Cst:No      (PU_Pre:FieldName)    
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ


 4.  Determine whether or not the ENTRY FIELD is part of
     a Multi_part key.  If the entry field is part of a
     multi_key field, you may stuff values into the
     other components of the key using the following
     formula:

     Computed Field ͻ
                                                        
     Field Name : ScreenField to Set Values For Lookup* 
     Formula Class: LU_SET                              
     Description :luField1 = Value1 ; luField2 = Value2 
                  ; etc ..                              
     Formula        (Not Used)                          
                                                        
    ͼ

        luFieldx  =  key field(s) to set in lookup file
        valuex    =  constant or variable to prime lufieldx
        ;         =  separator for each field


EXAMPLE: C3LOOKUP


     You are creating a tickler form and you wish to lookup
     a Customer's Account No.

  1. Place the Entry Field from the "LOOKUP FILE" on your
     form.  (DO NOT USED A Field from you primary file to
     perform a C3Lookup.)

                                LOOKUP FILE  CUSTOMERĿ
                                                           
                                 ĳ Cst:No    
       Tickler Formͳͻ    Cst:Phone 
         Tickler No:        345               Cst:City  
         Customer No:       Cst:No             Cst:State 
         Follow Up Date:    10/15/94           Cst:Zip...
         Reason: Call Bob for meeting                    
                                              
       ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^

 2.  Complete the "When Field Completed"    section of the
     Entry Field as follows:

        Entry Field ͻ
                                              
        When Field Completed                  
                                              
         Procedure  :  BrowseCustomer         
         Entry Field : C3Lookup               
         Hot Key    :                         
                                              
                 Ok           Cancel        
                                
                                              
       ͼ


 3.  If you want to provide AutoMouse Lookup capability for
     your user,  create a Button Field next to the C3Lookup
     field. (Typing 25 on the numeric keypad while holding
     down the ALT key, will produce the symbol for downkey.)


     Button Field Properties ͻ
     Button Text :                                      
     Equate Label:  PU_Cst:No   ( Pu_Pre:FieldName)      
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ


 4.  Determine whether or not the ENTRY FIELD is part of
     a Multi_part key.  If the entry field is part of a
     multi_part key, you may stuff values into the
     other components of the key using the following
     formula:

     Computed Field ͻ
                                                        
     Field Name    : Cst:No                             
     Formula Class : LU_SET                             
     Description   :Cst:Region = 1 ; Cst:District = 9   
                                                        
     Formula        0                                   
                                                        
    ͼ

<< C3Lookup (Compound Key Field >>


PURPOSE       Performs a lookup on a field to a browse with
              a matching key access i.e. look Customer No on
              a browse in Customer No order.  Here the access
              key has multiple components.

REQUIREMENTS  Relationship must exist between files.  Valid_
              ation file must be in file schematic.  Use
              C3Form and C3Browse when implementing lookup.

SEE DEMO.APP  

SEE ALSO      DOS Wildcard, Soundex Locators


IMPLEMENTATION:

  1. Place the Entry Field from the "LOOKUP FILE" on your
     form.  (DO NOT USED A Field from your primary file to
     perform a C3Lookup.)

                            LOOKUP FILE  CUSTOMERĿ
                             ĳ Cst:No    
      Form ͳͻ    Cst:Phone 
                                          Cst:City  
        Customer No:    Cst:No             Cst:State 
        Address    :    123 Main St        Cst:Zip...
        City,State.Zip: Anywhere,USA                 
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 2.  Complete the "When Field Completed"   section of the
     Entry Field as follows:

       Entry Field Propertiesͻ
                    Cst:No                    
        Picture : @s15                        
                                              
        When Field Completed                  
         Procedure  :  Procedue Name          
         Entry Field : C3Lookup               
                                              
       ͼ


 3.  If you want to provide AutoMouse Lookup capability for
     your user,  create a Button Field next to the C3Lookup
     field. (Typing 25 on the numeric keypad while holding
     down the ALT key, will produce the symbol for downkey.)

     Button Field Properties ͻ
     Button Text :  Any text                             
     Equate Label:  Pu_Pre:FieldName                     
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ


  4. Create a Computed Field formula to set the value of
      components not used in the lookup.

     Computed Field ͻ
                                                        
     Field Name : ScreenField to Set Values For Lookup  
     Formula Class: LU_SET                              
     Description :luField1 = Value1 ; luField2 = Value2 
                  ; etc ..                              
     Formula        (Not Used)                          
                                                        
    ͼ


COMMENTS:

EXAMPLE:    C3Lookup _ Compound Key Field
-----------------------------------------

     You have a Customer Contacts form and you
     wish to lookup a Customer Account No.

  1. Place the Entry Field from the "LOOKUP FILE" on your
     form.  (DO NOT USED A Field from your primary file to
     perform a C3Lookup.)


                            LOOKUP FILE  CUSTOMERĿ
                                                       
                             ĳ Cst:No    
      Contacts Formͳͻ    Cst:Phone 
                                          Cst:City  
        Customer No:    Cst:No             Cst:State 
        Contact Name:   Joe Blow           Cst:Zip...
        Contact Phone:  (708)123_9987                
                                          
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 2.  Complete the "When Field Completed"   section of the
     Entry Field as follows:


       Entry Field Propertiesͻ
                    Cst:No
                                              
        Picture : @s15                        
                                              
        When Field Completed                  
         Procedure  :  BrowseCustomers        
         Entry Field : C3Lookup               
         Hot Key    :                         
                                              
                 Ok           Cancel        
                                
       ͼ


 3.  If you want to provide AutoMouse Lookup capability for
     your user,  create a Button Field next to the C3Lookup
     field. (Typing 25 on the numeric keypad while holding
     down the ALT key, will produce the symbol for downkey.)


     Button Field Properties ͻ
     Button Text :                                      
     Equate Label:  PU_Cst:No   ( Pu_Pre:FieldName)      
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ


 4.  Determine whether or not the ENTRY FIELD is part of
     a Multi_part key.  If the entry field is part of a
     multi_key field, either you may stuff values into
     the other components of the key using the following
     formula:

     Computed Field ͻ
                                                        
     Field Name    : Cst:No                             
     Formula Class : LU_SET                             
     Description   :Cst:Region = 1 ; Cst:Dsitrict = 9   
                                                        
     Formula        0                                   
                                                        
    ͼ


<< C3LookupO - where Keys Do Not Match>>


PURPOSE       Performs a lookup on a browse, with a key other
              than the entry field you wish to lookup...i.e.
              Customer No using a browse in Customer Name
              order.

REQUIREMENTS  Relationship must exist between files. Valid_
              ation file must be in file schematic. Use
              C3Form and C3Browse when implementing lookup.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

  1. Place the Entry Field from the "LOOKUP FILE" on your
     form.  (DO NOT USED A Field from you primary file to
     perform a C3Lookup.)

                            LOOKUP FILE  CUSTOMERĿ
                             ĳ Cst:No    
       Form ͳͻ    Cst:Phone 
                                          Cst:City  
         Customer No:    Cst:No            Cst:State 
         Address    :    123 Main St       Cst:Zip...
         City,State.Zip: Anywhere,USA                
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 2.  Complete the "When Field Completed"  section of the
     Entry Field as follows:

       Entry Field Propertiesͻ
                    Cst:No                    
        Picture : @s15                        
                                              
        When Field Completed                  
         Procedure  :  Procedue Name          
         Entry Field : C3LookupO     (oh)     
         Hot Key    :                         
       ͼ


 3.  If you want to provide AutoMouse Lookup capability for
     your user,  create a Button Field next to the C3Lookup
     field. (Typing 25 on the numeric keypad while holding
     down the ALT key, will produce the symbol for downkey.)

     Button Field Properties ͻ
     Button Text :  Any text                             
     Equate Label:  PU_Cst:No   ( Pu_Pre:FieldName)      
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ


 4.  Determine whether or not the ENTRY FIELD is part of
     a Multi_part key.  If the entry field is part of a
     multi_key field, either you may stuff values into the
     other components of the key using the following
     formula:

     Computed Field ͻ
                                                        
     Field Name : ScreenField to Set Values For Lookup  
     Formula Class: LU_SET                              
     Description :luField1 = Value1 ; luField2 = Value2 
                  ; etc ..                              
     Formula        (Not Used)                          
                                                        
    ͼ


        luFieldx  =  key field(s) to set in lookup file
        valuex    =  constant or variable to prime lufieldx
        ;         =  separator for each field

EXAMPLE: _ C3Lookup0 (used where keys do not match)


  1. Place the Entry Field from the "LOOKUP FILE" on your
     form.  (DO NOT USED A Field from you primary file to
     perform a C3Lookup.)

                                LOOKUP FILE  CUSTOMERĿ
                                 ĳ Cst:No    
       Form ͳͻ    Cst:Phone 
                                              Cst:City  
         Customer No:       Cst:No             Cst:State 
         Address    :       123 Main St        Cst:Zip...
         City,State.Zip:    Anywhere,USA                 
       ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^

 2.  Complete the "When Field Completed"    section of the
     Entry Field as follows:


       Entry Field Propertiesͻ
                    Cst:No                    
        Picture : @s15                        
                                              
        When Field Completed                  
         Procedure  :  Procedue Name          
         Entry Field : C3LookupO     (oh)     
                                              
       ͼ


 3.  If you want to provide AutoMouse Lookup capability for
     your user,  create a Button Field next to the C3Lookup
     field. (Typing 25 on the numeric keypad while holding
     down the ALT key, will produce the symbol for downkey.)


     Button Field Properties ͻ
     Button Text :  Any text                             
     Equate Label:  Pu_Cst:No                            
     Hot Key     :                                       
        
     When Button is Pressed                Source       
     Procedure: (optional)***                     
                                                         
     When Button is Selected               Source       
     Procedure:                                   
    ͼ


 4.  Determine whether or not the ENTRY FIELD is part of
     a Multi_part key.  If the entry field is part of a
     multi_field key , you may stuff values into the
     other components of the key using the following
     formula:

     Computed Field ͻ
                                                        
     Field Name    : Cst:No                             
     Formula Class : LU_SET                             
     Description   :Cst:Region = 1 ; Cst:Dsitrict = 9   
                                                        
     Formula        0                                   
                                                        
    ͼ


<< C3NoAdd  Disables Inskey>>


PURPOSE       C3NoAdd disables Insert key and prevents entry of
              records;

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

1. Create a Computed Field Formula as follows:


        Computed Field ͻ
                                            
        Field Name    : Any Entry Not Used  
        Formula Class : C3NoAdd             
        Description   :                     
        Formula       : Any Entry Not Used  
                                            
       ͼ


2. a. Remove the Insert button from the browse.

                   Browse    ͻ
                                       
                  Name  CityState  
                                   
                                   
                                   
                   (Change) (Delete)   
                              (Exit)   
                 ܼ


   b. Enter a User Message in the Description area of the
      computed field. If message is entered, message will
      be displayed to the user and will wait for a key
      stroke before returning.


      Computed Fieldͻ
                                                        
       Field Name   : Any                               
       Formula Class: C3NoAdd                           
       Description  : 'User Message'                    
                                                       
       Formula  :     Any Entry                        
                                                       
      ܳͼ
                                            
                        b. Enter Message

COMMENTS:

If  no Description exists, the browse is terminated and  the
user returned to the calling procedure. The only line that is
relevant in the Formula window is the Formula Class; all other
required prompts may be completed with any data.

Example _ C3NoAdd


1. Create a Computed Field Formula as follows:

        Computed Field ͻ
                                            
        Field Name    : Cst:No *            
        Formula Class : C3NoAdd             
        Description   :                     
        Formula       : 0 *                 
                                            
       ͼ

                    *     Any Entry Not Used


2. a. Remove the Insert button from the browse.
                           OR
   b. Enter a User Message in the Description area of the
      computed field. If message is entered, message will
      be displayed to the user and will wait for a key
      stroke before returning.

                    a. Remove     Browse    ͻ
                       Insert                         
                       Button    Name  CityState  
                                                  
            OR                                    
                                                  
                                   
      Computed Fieldͺ  (Change) (Delete:)  ͻ
                                            (Exit)    
       Field Name   : Cst:No   ܼ 
       Formula Class: C3NoAdd                           
       Description  : "You may not ADD Records"         
                                                       
       Formula  :     0                                
                                                       
      ܳͼ
                                            
                        b. Enter Message



<< C3NoDel - Disables Deletekey>>


PURPOSE       C3NoDel disables Delete key & prevents deletion
              of records.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

1. Create a Computed Field Formula as follows:

        Computed Field ͻ
                                                 
        Field Name    : Any Entry                
        Formula Class : C3NoDel                  
        Description   :                          
        Formula       : Any Entry                
                                                 
       ܼ


2. a. Remove the Delete button from the browse.

                     Browse    ͻ
                                         
                    Name  CityState  
                                     
                                     
                                     
                      
                     (Insert) (Delete)   
                                (Exit)   
                   ܼ


   b. Enter a User Message in the Description area of the
      computed field. If message is entered, message will
      be displayed to the user and will wait for a key
      stroke before returning.


      Computed Fieldͻ
                                                        
       Field Name   : Any                               
       Formula Class: C3NoDel                           
       Description  : 'User Message'                    
                                                       
       Formula  :     Any Text                         
                                                       
      ܳͼ
                                            
                        b. Enter Message

COMMENTS:

If  no Description exists, the browse is terminated and  the
user returned to the calling procedure. The only line that is
relevant in the Formula window is the Formula Class; all other
required prompts may be completed with any data.

EXAMPLE _ C3NoDel


1. Create a Computed Field Formula as follows:

        Computed Field ͻ
                                                 
        Field Name    : Cst:No *                 
        Formula Class : C3NoDel                  
        Description   :                          
        Formula       : 0 *                      
                                                 
       ܼ

                        *  Any Entry Not Used


2. a. Remove the Delete button from the browse.
                           OR
   b. Enter a User Message in the Description area of the
      computed field. If message is entered, message will
      be displayed to the user and will wait for a key
      stroke before returning.


                    a. Remove     Browse    ͻ
                       Delete                         
                       Button    Name  CityState  
                                                  
             OR                                   
                                                  
                                   
      Computed Fieldͺ  (Insert) (Delete)   ͻ
                                            (Exit)    
       Field Name   : Cst:No   ܼ 
       Formula Class: C3NoDel                           
       Description  : 'You may not DELETE Records'      
                                                       
       Formula  :     0                                
                                                       
      ܳͼ
                                            
                        b. Enter Message


<< C3NoChg - Disables Changekey>>


PURPOSE       C3NoChg disables EnterKey & prevents modification
              records.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

1. Create a Computed Field Formula as follows:

        Computed Field ͻ
                                                 
        Field Name    : Any text                 
        Formula Class : C3NoChg                  
        Description   : NotUsed                  
                                                 
        Formula       : Any text                 
                                                 
       ܼ

                     *  Any Entry Not Used


2. a. Remove the Change button from the browse.

                        Browse    ͻ
                                            
                       Name  CityState  
                                        
                                        
                                        
                         
                        (Insert) (Delete)   
                                   (Exit)   
                      ܼ


      b. Enter a User Message in the Description area of the
      computed field. If message is entered, message will
      be displayed to the user and will wait for a key
      stroke before returning.


      Computed Fieldͻ
                                                        
       Field Name   : Any text                          
       Formula Class: C3NoChg                           
       Description  : Your Message                      
                                                       
       Formula  :     Any Text                         
                                                       
      ܳͼ
                                            
                        b. Enter Message


COMMENTS:

If  no Description exists, the browse is terminated and the
user returned to the calling procedure. The only line that
is relevant in the Formula window is the Formula Class; all
other required prompts may be completed with any data.

Example _ C3NoChg


1. Create a Computed Field Formula as follows:

        Computed Field ͻ
                                                 
        Field Name    : Cst:No                   
        Formula Class : C3NoChg                  
        Description   : NotUsed                  
                                                 
        Formula       : 0                        
                                                 
       ܼ


2. a. Remove the Change button from the browse.
                           OR
   b. Enter a User Message in the Description area of the
      computed field. If message is entered, message will
      be displayed to the user and will wait for a key
      stroke before returning.


                    a. Remove     Browse    ͻ
                       Change                         
                       Button    Name  CityState  
                                                  
            OR                                    
                                                  
                                   
      Computed Fieldͺ  (Insert) (Delete)   ͻ
                                            (Exit)    
       Field Name   : Cst:No   ܼ 
       Formula Class: C3NoChg                           
       Description  : 'You are allowed to Add Records'  
                                                       
       Formula  :     0                                
                                                       
      ܳͼ
                                            
                        b. Enter Message



<< C3NoMsg - Disables Message>>


PURPOSE       C3NoMsg disables "No_Records_Insert_or_Exit"
              message, goes directly to the data entry form.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

1.  Create a Computed Field Formula as follows:

        Computed Field ͻ
        Field Name    : Any Text                 
        Formula Class : C3NoMsg                  
        Description   : Not Used                 
                                                 
        Formula  :     Any Text                  
       ܼ


COMMENTS:

If  no Description exists, the browse is terminated  and the
user returned to the calling procedure.   The only line that
is relevant in the Formula window is the Formula Class;  all
other required prompts may be completed with any data.

Example _ C3NoMsg:

1.  Create a Computed Field Formula as follows:

        Computed Field ͻ
        Field Name    : Any Text                 
        Formula Class : C3NoMsg                  
        Description   : Not Used                 
                                                 
        Formula  :     Any Text                  
       ܼ


<< ColorRecord>>


PURPOSE       ColorRecord highlights browse records meet a
              specific criteria, the criteria is typed into
              the formula and the template takes care of the
              rest of the code.

REQUIREMENTS  None

SEE DEMO.APP  Api_test

SEE ALSO      


IMPLEMENTATION:

    Create a Computed Formula Field as follows:

     Computed Field ͻ
      Field Name:    Any Text                           
      Formula Class: COLORRECORD                        
      Description:   Selection criteria                 
                                                        
      Formula:       Any Text                           
    ͼ


Example _ ColorRecord:

    Create a Computed Formula Field as follows:

     Computed Field ͻ
      Field Name:    api:PayType *                      
      Formula Class: COLORRECORD                        
      Description:   format(api:amt,@N_9.2)=100.00 **   
                                                        
      Formula: 79 ***                                   
    ͼ

            *   Any Field
            **  Selection Criteria
            *** the number of the color you wish to use

<< Detail>>


PURPOSE       Detail used in the C3Invoice Template. This
              formula class must be declared on each field
              which is to be looked up from a related file
              in the DETAIL list box.

REQUIREMENTS  Proper relationship must exist between the
              files for the lookup to occur.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

Following is an example of the implementaion.

     Computed Field ͻ
                                                        
     Field Name   : Prd:SysId      Any Field (Not Used) 
     Formula Class: DETAIL                              
     Description  : Products  *                         
                                                        
                                                        
     Formula        0             (Any Field (Not Used) 
                                                        
    ͼ

              * File Name of Field to be displayed


COMMENTS:


<< Detl>>


PURPOSE       Delt allows formula class that will be calculated
              for each record in the detail list box.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

     Following is an example of the implementaion.

     Computed Field ͻ
                                                        
     Field Name   : Itm:No         Any Field (Not Used) 
     Formula Class: DETL                                
     Description  :                                     
                                                        
     Formula        Your Formula                        
                                                        
    ͼ



<< Ebnn>>


PURPOSE        EBNN allows the developer to display related
               records from multiple files, each in its own
               list box and each with its own update proce_
               dure on a C3Form and C3Browse. Up to 6 files
               may be displayed in each separate list box.
               You may create 100 Embedded List Boxes.

REQUIREMENTS  Relationships must have been established between
              the various files (though the relationship need
              not be direct; there can be intermediate files
              in the relational chain).

SEE DEMO.APP  Cnm_Brw_Name

SEE ALSO      EbnnNoLimit, EbnnSecondary, EbnnList, EbnnList,
              EbnnFilter, EbnnRelfill



IMPLEMENTATION:

 1.  If you are implementing on a C3Browse, first create a
     List Box for the main file. If you are placing the
     embedded browse on a C3Form, go to step 2.

 2.  Next, create additional List Boxes, which can be placed
     anywhere on the screen, but must be placed below the
     main List Box in the screen structure.  Press Ctrl_F,
     press Insert and select "List", press Insert and
     select "List Box", from the "Add Field: list.


                               List Boxͻ
                                                       
                                 Rows:             5   
                                 Column:          15   
                                 Fixed Rows:       2   
        EB + Unique number  Queue Label:   EBnn   
        between 00 and 99       From Field:           
        which ID's the       Equate Label: ?EBnn    
        Embedded Browse          Fill Label:           
                                                       
                               ͼ

 4.  If this is a C3Form, alert the Insert and Delete key
     in the list box attributes.  If the form screen is CUA
     you must alert the ENTERKEY on the screen.  Also alert
     the EscKey in the ?List (main list) to escape from an
     embedded browse.

 5. Create a Computed Field, as follows:

     Computed Field ͻ
     Field Name :   Any Text                            
     Formula Class: EB00        (unique # you assign to 
                                 the embedded browse)   
     Description :  Filename                            
                                                        
     Formula        Any Text                            
    ͼ

 6. Determine whether or not you are using any computed
     or conditional fields in your embedded browse. If so,
     create a Computed Field as follows:

     Computed Field ͻ
     Field Name :   Any Field  (Not Used)               
     Formula Class: EBnnList                            
     Description :  File Name of Field to be displayed  
                                                        
     Formula        Not Used  (Any test)                
    ͼ


 7. To indicate to the user that more/no records are
     available in the embedded browse, create a locate
     variable for each embedded from in your procedure.

         EXAMPLE:  EBnn_Ind  String(X)

                where    x   is the string length of
                             C3Equate G_e_EBMoreInd

                         nn  the number associated with
                             the embedded browse

 8. Place the local variable on the screen directly
     under the Embedded Browse.

                               Embedded Browse nn
                              Ŀ
                              xxx xxxxxxxxx x 
                              xxx xxxxxxxxx x 
         EBnn_Ind Ŀ    xxx xxxxxxxxx x 
                             xxx xxxxxxxxx x 
                             More
                         

COMMENTS:
You may use continous vertical bars in the fixed portion
of the list box.

To provide an update procedure for an Embedded Browse,
simply name a procedure on the List Box Properties screen
in "When List Box is Completed Procedure"., Embedded
Source will not call an update procedure.  If a procedure
is named, use:

         the Insert kye to all a new record

         the Enter key (or double mouse left click ) to
         change the record

         the Delete key to delete the record

To stuff a setting into a key field on an embedded browse
see EBnnRelFill.

You may use continous vertical bars in the fixed portion
of the list box.

Example _ Ebnn


     We wish to create an Single Embedded Browse
     to display Fields from the Customer file.
     We will call the embedded browse EB01.


 1.  If you are implementing on a C3Browse, first create a
     List Box for the main file. If you are placing the
     embedded browse on a C3Form, go to step 2.

 2.  Next, create additional List Box, which can be placed
     anywhere on the screen, but must be placed below the
     main List Box in the screen structure.  Press Ctrl_F,
     press Insert and select "List", press Insert and
     select "List Box", from the "Add Field: list.

                               List Boxͻ
                                                       
                                 Rows:             5   
                                 Column:          15   
                                 Fixed Rows:       2   
        EB + Unique number  Queue Label:   EB01   
        between 00 and 99       From Field:           
        which ID's the       Equate Label: ?EB01    
        Embedded Browse          Fill Label:           
                                                       
                               ͼ

 3.  Create a Computed Field, as follows:

     Computed Field ͻ
     Field Name :   Cst:No                              
     Formula Class: EB01        (unique # you assign to 
                                 the embedded browse)   
     Description :  Customer                            
                                                        
     Formula        0                                   
    ͼ


 4.  Determine whether or not you are using any computed
     or conditional fields in your embedded browse. If so,
     create a Computed Field as follows:

     Computed Field ͻ
     Field Name :   Cst:No                              
     Formula Class: EBnnList                            
     Description :  Customer                            
                                                        
     Formula        0                                   
    ͼ


 5.  To indicate to the user that more/no records are
     available in the embedded browse, create a locate
     variable for each embedded from in your procedure.

         EXAMPLE:  EB01_Ind  String(X)

                where    x   is the string length of
                             C3Equate G_e_EBMoreInd

                         01  the number associated with
                             the embedded browse

 6.  Place the local variable on the screen directly
     under the Embedded Browse.

                               Embedded Browse 01
                              Ŀ
                              xxx xxxxxxxxx x 
                              xxx xxxxxxxxx x 
         EB01_Ind Ŀ    xxx xxxxxxxxx x 
                             xxx xxxxxxxxx x 
                             More
                         


<< EbnnFilter >>


PURPOSE       EbnnFilter provides ability to filter records
              for an embedded browse.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:

    Add a Conditional Formula for each filter required.

     Computed Field ͻ
     Field Name :   Any Entry (Not Used)                
     Formula Class: EbnnFilter                          
     Description :  Not Used                            
                                                        
     Formula  Any Entry                                 
    ͼ

        * EBnnFilter
       ** Condition that must be met for the record to display

    EXAMPLE:

    Suppose we wish to display all the Customer
    records in an embedded browse with balances
    over 100.00 dollars. Let's assign the number
    01 to our embedded browse.

    Create a Conditional Formula as follows:

     Computed Field ͻ
     Field Name :   Cst:No                              
     Formula Class: Eb01Filter                          
     Description :                                      
                                                        
     Formula  Cst:Balance >> 100.00 *                   
    ͼ

       * Condition that must be met for the record to display

<< EbnnList>>


PURPOSE       EbnnList allows Computed/ Conditional Fields in
              an embedded browse. The nn will contain the
              same value as the embedded browse which contains
              the fields.

REQUIREMENTS  Must be used in conjunction with EBnn.

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:

 1. Create a EBnn Computed Field formula.

     Computed Field ͻ
                                                        
     Field Name :   Any Entry (Not Used)                
     Formula Class: Ebnn                                
     Description :  Filename                            
                                                        
     Formula  Any Entry                                 
                                                        
    ͼ


 2. Create a second Computed Formula Field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Any text (Not used)                 
     Formula Class: EB00List *                          
     Description :  Filename                            
                                                        
     Formula        Any text (Not Used)                 
                                                        
    ͼ

         *  where 00 is (the unique # you have assigned
                         to this embedded browse)
        **  Filename of Field to be displayed

<< EbnnNoLimit         Allow auto update of embedded browse queue>>


PURPOSE       EbnnNoLimit allows automatic update of Embedded
              Browse.  The EBnnNoLimit allows qualifying
              records to be read into the embedded browse
              queue at all times, and not just when you
              enter the list to update.

REQUIREMENTS  Must be used in conjunction with EBnn.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

    Create a Computed Formula Field as follows.

     Computed Field ͻ
                                                        
     Field Name :   Any (Not Used)                      
     Formula Class: EBnnNoLimit                         
     Description :  Any (Not Used)                      
                                                        
     Formula        Any (Not Used)                      
                                                        
    ͼ

              Where nn = the number of the Embedded Browse


    Create a Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name :   Cts:No                              
     Formula Class: EBnnNoLimit                         
     Description :                                      
                                                        
     Formula        0                                   
                                                        
    ͼ


<< EBnnRecur >>


PURPOSE       EbnnRecur allows recurive embedded browses.

REQUIREMENTS  Can only go one level deep.  Only works on the
              primary file.

SEE DEMO.APP  

SEE ALSO      EBnnNoLimit, EbnnFilter, EbnnSecondary, EBnnList



IMPLEMENTATION:

1.  To begin the dictionary must be set up as shown in the
    recur.app example in the DEMO subdirectory.

    PartsFile    pre (par)
    

      FIELDS
         par:Sys_ID long            idnumber of part
         par:Desc string(30)        description of string

      KEY
        par:K_Sys_ID
        par:Sys_ID                  autonum

        par:K_Desc
        par:Desc

    AssmFile   pre(asm)
    

      FIELDS
         asm:Sys_ID
         asm:par_Sys_ID
      KEY
         asm:K_Sys_ID
         asm:Sys_ID

    RELATIONS
    

       From the PartsFile
       1:many                        Primary Key     NONE(blank)
       related file AssmFile         Foreign Key     asm:K_Sys_ID

                              Link Fields
                       par:Sys_ID          asm:Sys_ID

       From the AssmFile
       many:1                        Foreign Key     NONE(blank)
       related file PartsFile        Primary Key     par:K_Sys_ID

                              Link Fields
                       par:Sys_ID          asm:par_Sys_ID

2.  Next you must add a formula for the recursion file as follows

     Computed Field ͻ
                                                        
     Field Name : Any field from recurive file          
     Formula Class: EBnnRECUR                           
     Description :  Key that the recursive file is used 
                    in the primary browse               
     Formula        Any value (Not Used)                
                                                        
    ͼ


3.  Make sure your procedure file schematic follows the
    following pattern.

    File Schematic
         PartsFile
            AssmFile
               PartsFile

     The primary browse can be used for both the display and
     the lookup but a SavePosition formula must be added for
     the AssmFile


<<EBnnRelFill>>


PURPOSE       EbnnRelfill overrides or sets value between a
              parent child relationship in a procedure file
              schematic on embedded browses. It allows you
              to stuff a setting into a key field on an
              embedded browse.  EBnnRelfill is available in
              C3Report and C3Browse.

REQUIREMENTS  Field must be a no link in the file relations.

SEE DEMO.APP  

SEE ALSO      EBnnNoLimit, EbnnFilter, EbnnSecondary, EBnnList



IMPLEMENTATION:

 1. Define the variable which will contain the value to be
    stuffed.

     Computed Field ͻ
                                                        
     Field Name : Field To Fill                         
     Formula Class: EBnnRELFILL                         
     Description :                                      
                                                        
     Formula        variable to set the key field       
                                                        
    ͼ


    EXAMPLE:

 1. Define the variable which will contain the value to be
    stuffed.

     Computed Field ͻ
                                                        
     Field Name :   Sal:State                           
     Formula Class: EB01RELFILL                         
     Description :                                      
                                                        
     Formula        Loc:State                           
                                                        
    ͼ


<< EbnnSecondary>>


PURPOSE       EbnnSecondary allows display of secondary file
              data in an embedded browse.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

  To display a value from a secondary file, in an embedded
  browse, use the following formula:


     Computed Field ͻ
                                                        
     Field Name : Any Entry Not Used                    
     Formula Class: EBnnSecondary                       
     Description :  Filename                            
                                                        
     Formula        Any Entry   Not Used                
                                                        
    ͼ



<< FileOpen>>


PURPOSE       FileOpen ensures that files  not related to
              the procedure's primary file, but which the
              developer wished to open/or close such as a
              configuration file, are opened and closed
              properly.

REQUIREMENTS  The name of the Primary or a Secondary Child
              file ( not a Lookup file) in the File Scheme.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

Create a Computed Field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Any (Not Used)                      
     Formula Class: FileOpen                            
     Description :  Name of file to open                
                                                        
     Formula        any text    (not used)              
                                                        
    ͼ



<< Filter>>


PURPOSE       Filter select records for display. If codition
              expression evaluates to zero (false) for a
              given record, it is not displayed.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



     A Conditional Field with "FILTER" in the Formula Class field
     is used to display a subset of the datafile. If the
     "IF Condition" expression evaluates to false for a
     given record, it is not displayed.

     Enter the expression for the "IF Condition" field and
     leave the "True Formula" and "False Formula" fields
     blank. Only the Expression will be used for the filter.

     A filter expression can alternatively be entered in
     the Browse Procedure Property entry field "Record
     Filter: ", instead of using the formula generator.

IMPLEMENTATION:

     Computed Field ͻ
                                                        
     Field Name :                                       
     Formula Class: Filter                              
     Description :                                      
                                                        
     IF Condition    Itv:Amount >> 150.00              
                                           
                                                        
     True Formula    Leave blank                       
                                           
                                                        
     False Formula   Leave blank                       
                                           
                                                        
                     Ok            Cancel             
                                          
    ͼ

Enter the expression for the Conditional field and leave the
True  and False conditions blank.  Only the Expression  will
be  used for the filter. A filter expression may be  entered
in  the  Record Filter property field instead of  using  the
formula formatter.

COMMENTS:
This  filter class is provided because it is easier to  type
than Clarion's pre:FILTER and it works with the TOTAL Formu_
la  Classes.  You must use this formula class for you  TOTAL
Formula classes to work properly.



<< FilterOnly>>


PURPOSE       

REQUIREMENTS  None

SEE DEMO.APP  CNM_prt_Name

SEE ALSO      



     Create a Computed Field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Any (Not Used)                      
     Formula Class: FilterOnly                          
     Description :  Filename                            
                                                        
     Formula        any text    (not used)              
                                                        
    ͼ


<< GlbPas>>


PURPOSE       GLBPas triggers user prompt during global passing
              of filters and tags.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:
COMMENTS:


<< GlbTag>>


PURPOSE       GLBTag triggers user prompt during global passing
              of filters and tags

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:
COMMENTS:



<< KeyEqual>>


PURPOSE        KeyEqual selects records based on keys. One
               computed field must be created for each key
               field to be tested.

REQUIREMENTS  None

SEE DEMO.APP  API_Test

SEE ALSO      


IMPLEMENTATION:

 1. Enter the key field you will be testing in the Range
    Limit field on the Procedure Properties Screen.  This
    field must ne a primary access key for the procedure
    or a component of the primary access key.  If you will
    be using keyequal for more than one component of a com_
    pound key, enter the last key component.

       Procedure Properties     Ŀ
                                                       
     Procedure Name    : BrowseInvoices       Screen.. 
        Template       : C3Browse                      
        Description    :                      Report.. 
        Prototype      :                               
     Module Name       :                      PullDown 
     Range Limit Field : keycomponent         Formulas 
     Range Value Field : variable or value    Data...  
     Record Filter     :                      Procedur 
                                              Source.. 
                                                       
      Ok      Cancel     Template Help...           
                        
    


 2. Enter the key field you will be testing in the Range
    Limit field on the Procedure Properties Screen.  This
    field must ne a primary access key for the procedure
    or a component of the primary access key.  If you will
    be using keyequal for more than one component of a com_
    pound key, enter the last key component.

 3. Create a computed field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Any Field (Not Used)                
     Formula Class: KeyEqual  ( _DS invalid)            
     Description :  Any (Not Used)                      
                                                        
     Formula        variable or value for test          
                                                        
    ͼ


 4. Place the field or variable to be test on the browse
    screen.
                                Browse Invoiceͻ
                                                      
    (Cst:No)>>   Customer No:____    
                                                     
                                No    DateAmt    
                                                 
                                                 
     Computed Fieldͺ   ͻ
                               (Chg) (Del) (Exit)    
      Field Name    :  Inv:No ܼ 
      Formula Class :  KeyEqual                        
      Description   :                                  
    Ŀ                                    
       Formula  :  >> Cst:No                          
                                                        
      ͼ



COMMENTS: KeyEqual can be used in conjunction with KeyRange
          and or filters.

EXAMPLE: KeyEqual


               BrowseInvoices procedure has primary access
               key of Inv_Key.  Inv:Kry is multi component
               key.  We wish to view records in the browse
               by Cst:No.

                       Access    Inv_Key
                        Key      >> Inv:Date
                                 >> Inv:CstNo

 1. Enter the key field you will be testing in the Range
    Limit field on the Procedure Properties Screen.  This
    field must ne a primary access key for the procedure
    or a component of the primary access key.  If you will
    be using keyequal for more than one component of a com_
    pound key, enter the last key component.

       Procedure Properties     Ŀ
                                                       
     Procedure Name    : BrowseInvoices       Screen.. 
        Template       : C3Browse                      
        Description    :                      Report.. 
        Prototype      :                               
     Module Name       :                      PullDown 
     Range Limit Field : Inv:CstNo            Formulas 
     Range Value Field : Cst:No               Data...  
     Record Filter     :                      Procedur 
                                              Source.. 
                                                       
      Ok      Cancel     Template Help...           
                        
    


 2. Enter the key field you will be testing in the Range
    Limit field on the Procedure Properties Screen.  This
    field must ne a primary access key for the procedure
    or a component of the primary access key.  If you will
    be using keyequal for more than one component of a com_
    pound key, enter the last key component.

 3. Create a computed field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Inv:cstNo                           
     Formula Class: KeyEqual  ( _DS invalid)            
     Description :                                      
                                                        
     Formula        Cst:No                              
                                                        
    ͼ


 4. Place the field or variable to be test on the browse
    screen.
                                Browse Invoiceͻ
                                                      
    (Cst:No)>>   Customer No:____   
                                                     
                                No    DateAmt    
                                                 
     Computed Fieldͺ   ͻ
                               (Chg) (Del) (Exit)    
      Field Name    :  Inv:No ܼ 
      Formula Class :  KeyEqual                        
      Description   :                                  
    Ŀ                                    
       Formula  :  >> Cst:No                         
      ͼ


<< KeyRange>>


PURPOSE       KeyRange selects records based on range of values
              for a key field. One computed field formula
              must be created for each key field requiring
              the test.  This method is much faster than
              using a filter, as records are processed in
              keyed sequence.  Range fields can be created
              for each part of the key.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

In  order to use computed formulas to set values (or  varia_
bles) for several fields in a complex key, within a specific
range, this item requires the following entries:

 1. You have the option of using constants or variables to
    hold the key range low and key range high values.  If
    you plan to use variables, create two locate variables,
    one to hold the "Key Range Low" and another to hold the
    "Key Range High" value.

 2. Create a computed field for the KeyRange as follows:

     Computed Field ͻ
                                                        
     Field Name :   the key field to be tested          
     Formula Class: KEYRANGE ( _DS is not valid )       
     Description :  KEYRANGELOW|KEYRANGEHIGH            
                                                        
     Formula        (Not Used)                          
                                                        
    ͼ


 3. Place the KeyRangeLow and KeyRangeHigh fields on the
    the browse screen.

              Browse Invoiceͻ
                                                   
                KeyRangeLow ____  KeyRangeHigh___  
                                                   
               No    Date Amt  Zip Phone    
                                             
                 
               (Chg)     (Del)          (Exit)     
              ͼ


COMMENTS: Used when changing filter, code restarts browse proce_
dure,  so only the required records are listed. Be  aware  values
entered are inclusive, and there is no error checking to  confirm
a  valid key field has been entered. KeyRange will work  on  many
keyed  browses,  as long as the key field is common to  all  keys
used in the browse.

If you set KeyRangeLow and KeyRangeHigh in Embedded Source, you
must add the following code (to restart the browse) immediately
after the code which changes the range values:
????

The  following  statement must be added after  changing  the
range values:

                SELECT( ?List )
                PREVIOUS(FileName)
                CYCLE

KeyRange  can  be used in conjunction with KeyEqual  and  or
filters.

Example  _  Using Variables to Hold the Range Values


    Suppose a you wish to view records in a browse
    based upon a range of zip codes.

 1. Create two locate variables to hold the range values.

                   LowZip             HighZip

 2. Create a computed field for the KeyRange as follows:

     Computed Field ͻ
                                                        
     Field Name :   Cst:zipcode                         
     Formula Class: KEYRANGE                            
     Description :  LowZip|HighZip                      
                                                        
     Formula        0                                   
                                                        
    ͼ


 3. Place the KeyRangeLow and KeyRangeHigh fields on the
    the browse screen.


              Browse Invoiceͻ
                                                   
                LowZip ____       HighZip ____     
                                                   
               No    Date Amt  Zip Phone    
                                             
                 
               (Chg)     (Del)          (Exit)     
              ͼ


Example _ Using Functions to Hold the Range Values


    Suppose a you wish to view records in a browse
    based upon a range of zip codes.

 1. Create two locate variables to hold the range values.

                   LowZip             HighZip

 2. Create a computed field for the KeyRange as follows:

     Computed Field ͻ
                                                        
     Field Name :   Cst:zipcode                         
     Formula Class: KEYRANGE                            
     Description :  deformat('606000000',@s5|           
                    deformat('707900000',@S5            
     Formula        0                                   
                                                        
    ͼ


 3. Place the KeyRangeLow and KeyRangeHigh fields on the
    the browse screen.

              Browse Invoiceͻ
                                                   
                LowZip ____       HighZip ____     
                                                   
               No    Date Amt  Zip Phone    
                                             
                 
               Chg:     Del:          Exit:     
              ͼ


Example _ Using Constants to Hold the Range Values


    Suppose a you wish to view records in a browse
    based upon a range of zip codes.

 1. Create two locate variables to hold the range values.

                   LowZip             HighZip

 2. Create a computed field for the KeyRange as follows:

     Computed Field ͻ
                                                        
     Field Name :   Cst:zipcode                         
     Formula Class: KEYRANGE                            
     Description :  60000|60680                         
                                                        
     Formula        0                                   
                                                        
    ͼ


 3. Place the KeyRangeLow and KeyRangeHigh fields on the
    the browse screen.


              Browse Invoiceͻ
                                                   
                LowZip ____       HighZip ____     
                                                   
               No    Date Amt  Zip Phone    
                                             
                 
               (Chg)     (Del)          (Exit)     
              ͼ


<< List>>


PURPOSE        LIST evaluates when the list box item is created.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

     Computed Field ͻ
                                                        
     Field Name :   Field Name                          
     Formula Class: LIST                                
     Description :                                      
                                                        
     Formula        enter formula                       
                                                        
    ͼ

COMMENTS:
<< LuList>>


PURPOSE       LUList improves performance of clarion when look_
              ing up data in related files on the browse.
              You need to have the related field in the list
              box and specify the file to be looked up in
              the lookup list

REQUIREMENTS  Any browses that displays a related field in
              the scrolling area, must use LULIST.

SEE DEMO.APP  CNM_brw_Name

SEE ALSO      



IMPLEMENTATION:

Add the following computed field and specify the file name for
each field which is being looked up.


     Computed Field ͻ
                                                        
     Field Name :   Not used                            
     Formula Class: LULIST                              
     Description :  Filename                            
                                                        
     Formula        (Not Used)                          
                                                        
    ͼ



COMMENTS: Only the file which contains field to be looked
up need be entered, the template adds all intermediate files
as required, up to three levels.

         Primary Browse File
           File_A
             File_B
               File_C   (contains field  or list box)

Only File_C need be entered as a LULIST Formula Class on the
description line.

The  formula is only needed for the display area.  Other  C3
template  enhancements  automatically handle the  files  and
relations,  or it explains any additional  entries  required
under the specific enhancement section.

The  formula  was  enhanced for code  optimization.  In  the
standard  templates  all files related to the  primary  file
were being accessed on every cycle of the browse, whether or
not  functionally required. As a result code  generation  is
slightly  longer,  but  the benefits  during  execution  out
weighed the added time.

<< Lu_Set>>


PURPOSE       LU_Set stuffs values in multi_part key fields prior
              to performing a C3Lookup.

REQUIREMENTS  Relationship must exist between the files.

SEE DEMO.APP  CNM_brw_Name

SEE ALSO      



IMPLEMENTATION:

 1. Determine which field in the multi_part key will be used
    in the C3Lookup. Create the following Computed Field
    Formulas Class for the multi_part key components that will
    NOT be used directly in the C3Lookup.

     Computed Field ͻ
                                                        
     Field Name : ScreenField to Set Values For Lookup  
     Formula Class: LU_SET                              
     Description :luField1=Value1;luField2=Value2   Ŀ
                  ; etc ..                                 
     Formula        (Not Used)                             
                                                           
    ͼ   
                                                             
                                                             
        luFieldx  =  key field(s) to set in lookup file      
        Valuex    =  constant or variable to prime luFieldx  
        ;            with separator for each field           
                                                             
    when using the LU_Set command you cannot have any spaces 
    on the description line when setting key values.   

COMMENTS:
<< Many Keys/Locators>>


PURPOSE       ManyKeys provides user with the ability to view
              records based upon multiple keys and locators
              on a single browse.   Many browses can be re_
              place  a single browse. You are limited to 12
              per browse.

REQUIREMENTS  The first 2 letters must be mk.  Do not use
              prompts for many locators.

SEE DEMO.APP  

SEE ALSO      


IMPLEMENTATION:

 1. Create a browse procedure :

 2. Create one button for each of the various keys to be used
    on the screen using the following format for the button
    equate: MknKeyNameLessPrefix


     Given the follow keys;    NameKey  Ŀ
                               Ŀ Surname (1)        
                                   Ŀ Name  (2)        
                                      SSN (3)  Ŀ
                                                         
                                                         
                                                         
                                                         
    If you wish to display records in name order and use 
    the SSN as a locator, you would create a button as   
    follows:                                             
                                                                                                            
     Button Field Properties ͳ
     Button Text : '&Name'                             
     Equate Label: Mk3NameKey ٺ
     Hot Key    :    _                                  
                     
     When Button is Pressed               Source       
     Procedure: (optional)                       
                                                        
     When Button is Selected              Source       
     Procedure:                                  
    ͼ


      Where:
              n     0 if no locator is desired for KeyName
                    otherwise, n is the ordinal number of
                    the field in KeyName to use as a loc_
                    ator.

         KeyName    is the name of the key, as declared in
                    the dictionary, without its prefix.


 3. Place the locator fields, if any. The buttons and the loca_
    tors must be below the list box in the screen fields list_
    ing but can be placed anywhere on the screen.  Press CTRL F
    on the browse screen to view the Fields List.  The screen
    will display the fields on the browse. Make sure that the
    primary browse is listed as the first field.  If it is not,
    press the MOVE button until the primary browse is at the
    top.


          Field ListĿ
           SCREEN  SCREEN(25,80),CUA,COLOR(112)    
                   ROW(3,4)   f1 LIST              
                   ROW(20,17) f2 BUTTON            
                   ROW(20,37) f3 BUTTON            
                   ROW(20,47) f4 BUTTON            
                                                   
            Ins    Chg    Del      Move      Exit  
              Populate   Auto Re_Order             
          


COMMENTS:

There  are two equates in the global source file C3  Equates

that  hold the characters used on each side of  the  current
locator button. Use these to suit your own style.

In order to implement the many keyed browse just select  the
button of the key you wish use.

The  global  properties screen allows the use of a  hot  key
that will move between the many keys on each procedure  that
contains them.

Note: Incremental locators will not function with many keyed
locators.

NOTE: Placing the buttons above browse columns provides column
heading for the browse.

EXAMPLE: Many Keys/Locators Multi_keys/locators


 1. Create a browse procedure :

 2. Create one button for each of the various keys to be used
    on the screen using the following format for the button
    equate:

      Given the follow keys;

               NameKey  Ŀ
               Ŀ Surname (1)                        
                   Ŀ Name  (2)                        
                      SSN (3)  Ŀ
                                                          
                                                          
    If you wish to display records in name order WITHOUT  
    a locator, you would create a button as follows:      
                                                          
                                                          
     Button Field Properties ͳͻ
     Button Text : '&Name'                              
     Equate Label: Mk0NameKey  
     Hot Key    :    _                                   
                     
     When Button is Pressed               Source        
     Procedure: (optional)                        
                                                         
     When Button is Selected              Source        
     Procedure:                                   
    ͼ


 3. Place the locator fields, if any. The buttons and the loca_
    tors must be below the list box in the screen fields list_
    ing but can be placed anywhere on the screen.  Press CTRL F
    on the browse screen to view the Fields List.  The screen
    will display the fields on the browse. Make sure that the
    primary browse is listed as the first field.  If it is not,
    press the MOVE button until the primary browse is at the
    top.


          Field ListĿ
           SCREEN  SCREEN(25,80),CUA,COLOR(112)    
                   ROW(3,4)   f1 LIST              
                   ROW(20,17) f2 BUTTON            
                   ROW(20,37) f3 BUTTON            
                   ROW(20,47) f4 BUTTON            
                                                   
            Ins    Chg    Del      Move      Exit  
              Populate   Auto Re_Order             
          


<< Many Keys/Locators  Pulldown>>


PURPOSE       ManyKeys provides user with the ability to view
              records based upon multiple keys and locators
              on a single browse.  Many browses can be re_
              placed by a single browse.

REQUIREMENTS  The first 2 letters must be mk.  Do not use
              prompts for many locators.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

 1. Create a browse procedure :

 2. Create a menu item on your C3Browse pulldown menu as shown
    below:

       Given the follow keys;

                NameKey  Ŀ
                Ŀ Surname (1)                        
                    Ŀ Name  (2)                        
                       SSN (3)  ſ
                                                         
     If you wish to display records in name order and use
     the SSN as a locator, you would create a button as  
     follows:                                            
                                                         
     PullDown Menu Item   ͳ
     Type:                 _ Execute        X Toggle    
                           _ Separator      _ Menu Box  
     Menu Name:     Name Order              Source    
     Procedure:                                 
     Field:         Mk0NameKey    
                                                        
     Equate Label:  ?Mk0NameKey                         
     Help ID:                                           
     Message:                  Ok          Cancel     
                                          
    ͼ


       Where:  n     0 if no locator is desired for KeyName
                     otherwise, n is the ordinal number of
                     the field in KeyName to use as a loc_
                     ator.

       KeyName     is the name of the key, as declared in the
                   dictionary, without its prefix.


 3. Place the locator fields, if any. The buttons and the loca_
    tors must be below the list box in the screen fields list_
    ing but can be placed anywhere on the screen.  Press CTRL F
    on the browse screen to view the Fields List.  The screen
    will display the fields on the browse. Make sure that the
    primary browse is listed as the first field.  If it is not,
    press the MOVE button until the primary browse is at the
    top.

          Field ListĿ
           SCREEN  SCREEN(25,80),CUA,COLOR(112)    
                   ROW(3,4)   f1 LIST              
                   ROW(20,17) f2 BUTTON            
                   ROW(20,37) f3 BUTTON            
                   ROW(20,47) f4 BUTTON            
                                                   
            Ins    Chg    Del      Move      Exit  
              Populate   Auto Re_Order             
          



COMMENTS: There are 2 equates in global source file C3 Equates
that  hold the characters used on each side of  the  current
locator button. Use these to suit your own style.

In order to implement the many keyed browse just select  the
button of the key you wish use.

The  global  properties screen allows the use of a  hot  key
that will move between the many keys on each procedure  that
contains them.

Note: Incremental locators will not function with many keyed
locators. Placing the buttons above browse columns provides
column heading for the browse.

EXAMPLE: Many Keys/Locators _ from Pulldown


 1. Create a browse procedure :

 2. Create a menu item on your C3Browse pulldown menu as shown
    below:

              Given the follow keys;

                NameKey  Ŀ
                Ŀ Surname (1)                         
                    Ŀ Name  (2)                         
                       SSN (3)                         
                                                          
                                                          
     If you wish to display records in name order WITHOUT 
     a locator, you would create a button as follows:     
                                                          
                                                          
     PullDown Menu Item   ͻ
     Type:                 _ Execute        X Toggle    
                           _ Separator      _ Menu Box  
     Menu Name:     Name Order              Source    
     Procedure:                                 
     Field:         Mk0NameKey    
                                                        
     Equate Label:  ?Mk0NameKey                         
     Help ID:                                           
     Message:                  Ok          Cancel     
                                          
    ͼ


 3. Place the locator fields, if any. The buttons and the loca_
    tors must be below the list box in the screen fields list_
    ing but can be placed anywhere on the screen.  Press CTRL F
    on the browse screen to view the Fields List.  The screen
    will display the fields on the browse. Make sure that the
    primary browse is listed as the first field.  If it is not,
    press the MOVE button until the primary browse is at the
    top.


          Field ListĿ
                                                   
           SCREEN  SCREEN(25,80),CUA,COLOR(112)    
                   ROW(3,4)   f1 LIST              
                   ROW(20,17) f2 BUTTON            
                   ROW(20,37) f3 BUTTON            
                   ROW(20,47) f4 BUTTON            
                                                   
            Ins    Chg    Del      Move      Exit  
              Populate   Auto Re_Order             
          


<< QueueField>>


PURPOSE       QueueFiled allows programmer to add fields to the
              primary Queue.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO       List, List_Bit



Implementation:

   Create a Computed Formula Field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Any Text                            
     Formula Class: QueueField                          
     Description :  Your_Field   String(20)             
                                                        
     Formula        (Not Used)                          
                                                        
    ͼ


                                                                              


<< No Class >>


PURPOSE        Calculates the formula every time a record is
               processed.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

  Create a Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name : FieldName                             
     Formula Class:                  Blank              
     Description :                                      
                                                        
     Formula      Enter Formula                         
                                                        
    ͼ


COMMENTS:

<< Pre:FILTER >>


PURPOSE       Creates a record filter to skip over records
              in which the filter expression does not evaluate
              as true, just after the file's record is read.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

  Create a Computed Field Formula as Follows:

     Computed Field ͻ
                                                        
     Field Name :                                       
     Formula Class: Pre:Filter                          
     Description :                                      
                                                        
     Formula        Selection Criteria (Amt >>10        
                                                        
    ͼ


COMMENTS:

The  prefix of the Primary or a Secondary Child file (not  a
Lookup file) with :FILTER appended (Pre:FILTER): This  crea_
tes a record filter to skip over records in which the filter
expression does not evaluate as true, just after the  file's
record is read.  Only the Formula expression (in a  Computed
Field), or the Condition expression (in a Conditional Field)
is used to generate the filter expression. No other informa_
tion  from the Formula field is used in the filter  (any  If
True or If False expressions are ignored and the Field  Name
is not used __ this may be a "dummy" field).

<< PrimeKey            >>


PURPOSE        Primekey allows you to set a value for a key
               component.
              

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



A  Conditional  or  Computed Field with  "PRIMEKEY"  in  the
Formula   Class   field  is  calculated  just   before   the
SET(Key,Key)  during an Auto_increment ADD. It  is  inserted
again right before the ADD(File) to preserver any components
you have primed.

IMPLEMENTATION:

     Computed Field ͻ
                                                        
     Field Name : Pre:FieldName                         
     Formula Class: PrimeKey                            
     Description :                                      
                                                        
     Formula        Any text (Not used)                 
                                                        
    ͼ


COMMENTS:
This  can be used to prime key components to  enable  subset
numbering. For example, it can be used to cause auto_number_
ing of line item numbers on an invoice.  If you have defined
a  key with the fields InvoiceNumber and LineItemNo,  supply
the current InvoiceNumber as a PRIMEKEY Formula.  The  Auto_
Number Routine determines the next available LineItemNo  for
that  invoice.   The record ADDed to the file  will  already
have InvoiceNumber and LineItemNo in the record buffer and
on disk.

<< RelFill >>


PURPOSE       Relfill overrides or sets value between a parent
              child relationship in a procedure file scheme.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      Use on C3Browse, C3Report



IMPLEMENTATION:

  Create Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name : AnyField                              
     Formula Class: relfill                             
     Description :  anything                            
                                                        
     Formula        Relationship override value         
                                                        
    ͼ


EXAMPLE:

        FileA       a:Sys_ID    
                                 related fields
        FileB       b:a_SysID   

        procedure file schematic

        FileA
         FileB

        lets say you want to override the fileA sys_id from
        going into b:a_sys_ID and set it with a "6"

        This will over ride the normal relational fill of
        b:a_Sys_ID = a:Sys_ID
        with
        b:a_Sys_ID = 6

   Create a computed formula as follows:

     Computed Field ͻ
                                                        
     Field Name : AnyField                              
     Formula Class: relfill                             
     Description :  anything                            
                                                        
     Formula        6                                   
                                                        
    ͼ




<< Return               >>


PURPOSE       To calculate the formula just once before the
              return from the procedure when the user selects
              the 'Ok' button.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

    Create Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name :   Field Name                          
     Formula Class: return                              
     Description :                                      
                                                        
     Formula        Amt >> 10                           
                                                        
    ͼ


COMMENTS:

<< Rel_UP >>


PURPOSE       Rel_Up automatically primes the related
              file key field(s).  When several relations exist
              between the file being updated and other files,
              REL_Up ensures that only the correct values
              are passed to only the correct file.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

  Create Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name : (Not Used) any variable               
     Formula Class: REL_UP                              
     Description :  (Not Used) any thing                
                                                        
     Formula        (Not Used) any thing                
                                                        
    ͼ


COMMENTS:
The  reason  for this formula is that a single file  may  be
related  to  several other files and this  will  secure  the
values passed for priming.



<< Reverse Order >>


PURPOSE        ReverseOrder allows user to reverse order on a
               C3Browse.

REQUIREMENTS  Hot Records must be enabled in order to use
              the reverse order function.  Must use a
              C3Browse.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

  Create a button with the as shown below:

        Button Field Propertiesͻ
                                                     
          Button Text :' re&Verse order '            
          Equate Label :?Rev_Order                   
          Hot Key :                                  
                                                     
          When Button is Pressed                     
          Procedure :                  Source...    
                                           
          When Button is Selected                    
          Procedure :                  Source...    
                                           
                                                     
           Colors   Attributes   Ok   Cancel     
                       
        ͼ


COMMENTS:

<< SavePosition >>


PURPOSE       SavePosition saves the location of the record
              pointer on an embedded browse, go to another
              procedure and the return to the same record
              on the browse.

REQUIREMENTS  Must use a field within the file of the primary
              browse.

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

     Create Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name : Field from the Primay File            
     Formula Class: SavePosition                        
     Description :  FileLabel or Pre:KeyLabel*          
                                                        
     Formula        Any Value (not used)                
                                                        
    ͼ


   * Description: This can either be a File Label, (e.g. For
     the PERSONEL.DAT file you would use PERSONEL), or it can
     be the Prefix and Key Label (e.g. For the PERSONEL.DAT
     file and the K_L_Name Key you would use PER:K_L_Name).
     This saves and resets the file order.

     EXAMPLE:  Create Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name : Cst:No                                
     Formula Class: SavePosition                        
     Description :  Personnel or Per:K_L_Name *         
                                                        
     Formula        0                                   
                                                        
    ͼ


   * Description: This can either be a File Label, (e.g. For
     the PERSONEL.DAT file you would use PERSONEL), or it can
     be the Prefix and Key Label (e.g. For the PERSONEL.DAT
     file and the K_L_Name Key you would use PER:K_L_Name).
     This saves and resets the file order.

COMMENTS:

<< Setup >>


PURPOSE       Conditional or Computed Field with "SETUP"
              in the  Formula Class field is calculated once
              at the beginning of the procedure before the
              screen field processing LOOP.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

   Create Computed Field Formula as follows:

     Computed Field ͻ
                                                        
     Field Name :                                       
     Formula Class: Setup                               
     Description :                                      
                                                        
     Formula        Any Value (not used)                
                                                        
    ͼ


COMMENTS:

<< Spinner  >>


PURPOSE       The purpose of Spinner is to indicate to the
              user that the program is busy performing some
              procedure.  Useful when doing long batch up_
              dates.

REQUIREMENTS  None

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

1.  If the you wish to display spinner screen, place the
    following code in the source code.


        Open_Spinner(Spin_Scr,Gby_SpinRow,Gby_SpinCol, )
                                                   _
                                0 to close screen Ĵ
                                 1 to open screen 

    which is contained in the C3USERS.CLA


2.  If you want to display the spinner WITHOUT the screen,
    there are 2 global variables that control the position
    of the actual spinner character


    Gby_SpinRow     the row to display the spinner
    Gby_SpinCol     the column to display the spinner

    (both variables must contain a value for the spinner
    to rotate Spinner)

    Spinner         is still used to rotate the spinner


3. Create a Computed Field formula field as follows:


     Computed Field ͻ
                                                        
     Field Name :   Any Entry                           
     Formula Class: Spinner                             
     Description :                                      
                                                        
     Formula        Any Value (not used)                
                                                        
    ͼ


COMMENTS:
<< SpinnerScreen >>


PURPOSE       Displays a spinning figure while program is
              busy.

REQUIREMENTS  Used on C3Browse or C3Batch

SEE DEMO.APP  

SEE ALSO      



IMPLEMENTATION:

    Create a Computed formula field.

     Computed Field ͻ
                                                        
     Field Name :   Any Entry   Not Used                
     Formula Class: SpinnerScreen                       
     Description :                                      
                                                        
     Formula        Any Entry   Not Used                
                                                        
    ͼ


COMMENTS:

<< Totaling>>


PURPOSE       Allow computation of totals, averages, count,
              minimum, maximum on local variables and database
              fields.

REQUIREMENTS  None

SEE DEMO.APP  Api.test, Lbd_Brw_Prj

SEE ALSO      



IMPLEMENTATION:

    Create a Computed Field as follows:

     Computed Field ͻ
                                                        
     Field Name :   Field where results will be stored  
     Formula Class: TOTAL  optional(TOTAL_DS) *         
     Description :                                      
                                                        
     Formula        Enter yor formula                   
                                                        
    ͼ


IMPORTANT:   Using  totals will cause  the  EMBEDDED  SOURCE
Filter  to  deactivate  the filter  totals,  therefore  only
filtering on the main scrolling list.

COMMENTS:

FormulaClass_TAG  as above but for tagged records only

  Formula Class *   performs
  TOTAL             totals
  AVERAGE           average
  COUNT             quantity of records
  MINI              minimum value   _ not available for tags
  MAXI              maximum value   _ not available for tags

Hint:  In order to optimize the code, rather than  declaring
an  average  and a total or a count. Declare a total  and  a
count and use the values to calculate the average. Therefore
eliminating redundant computations.


<<  Recalculating Totals>>
Recalculating Totals

  If you are using Embedded Source to calculate totals, you
  can call the ROUTINE InitializeTotals, in the EMBED point
  "After Update Procedure" to re_calculate your totals.
  The ROUTINE InitializeTotals is generated if you have
  checked "Enable Total Embeds", or you have a Formula
  field with the CLASS of SUM, CNT, or AVG.

  For example:

  IF UpdateSuccessful = True     !if the file was updated
    DO InitializeTotals          ! recalculate totals
  END
