
<<Global Settings>>
< ଠ>

ଠ,     Global Settings (
⠭), ᯮ  ᥬ ਫ.  뢠 -
   室  쭮 ᥪ樨 CODE ਫ-
    室   楤.

< >
 

<  Enable Shared Files>
[] Enable Shared Files
     롥  , ⮡ 㪠,  ਫ 㤥 -
     짮  짮⥫᪮ 㦥.  
      , 짮⥫᪠ 樮 ⥬ 
     짮⥫᪠ 筠 樮 ⥬.
      ࠭  ,  䠩  ਫ -
       ० ࠧ쭮 㯠 42h (Read/Write Deny
     None)  ० ᪫⥫쭮 㯠 22h (Read/Write
     Deny Write).

<  Enable Mouse Support>
[] Enable Mouse Support
     롥  , ⮡ 㪠,  ਫ ࠧ蠥
     짮⥫ ࠡ  .   ᥪ CODE -
     頥  SETMOUSE(1,1).

<  Enhanced Background?>
[] Enhanced Background?
     롥  , ⮡ 㪠,  ਫ 㤥 -
     ᪠   EGA, VGA  SVGA,  
      栭 ᯮ짮  ७  梥 䮭
     (. SETNOBLINK  㪮⢥  ).

<  Close Unused Files?>
[] Close Unused Files?
     롥  , ⮡  楤 뢠 䠩
     ,   뫠.  ࠭  ,
     CheckOpen()   㭪 (FUNCTION), -
       (1) ᫨  䠩   (0), ᫨ 䠩
     㦥       . ᫨   -
     ࠭,  CheckOpen()   楤 (PROCEDU-
     RE).

     祭, 頥  㭪樨 CheckOpen(), ࠭
      楤ன  쭮 ६.  ࠭塞
     祭 ஢ । 饭 (RETURN)  뢠-
      楤 - ᫨ 楤 뢠 䠩,   
     뢠.

<  If File Not Found:>
If File Not Found:
     롥 ⢨, ஥ ᫥ ।ਭ,  ਫ-
      ⠥  騩 䠩 .

     () Create  - ⪠ ᮧ (CREATE) 䠩.
     () Halt - 뢥 ᮮ饭, ⥬ 室  DOS.


<  Program Author:>
Program Author:
       ணࠬ  㬥஢ ணࠬ.

< 室 >
 室 

<  Inside Global MAP>
"Inside Global MAP"
     ⠢ 室   ᥪ   ணࠬ,
        MAP.  ᯮ짮  ' -
       ⨯ 楤 (  (INCLUDE)
     䠩, ᮤঠ騩 ),   ਫ (Applica-
     tion Generator)  砥 ⮬᪨  MAP.

<  Data Section >
"Data Section"
     ⠢ 室   ᥪ   ணࠬ,
     ᫥     । 䠩 .
      ᯮ짮  '   ,
     ᯮ㥬 ⮫쪮   室 .

<  Setup Program>
"Setup Program"
     ⠢ 室  ࠧ  ᫥  CODE.

<  Before Return to DOS>
"Before Return to DOS"
     ᫥ 맮   楤    RETURN, -
     饣 짮⥫  DOS.


<< Batch>>
< ଠ>

 "Batch"  楤,  ࣠ 横
 䠩  믮 ⢨   .  蠡
᪮஢    㤠 㯯 ᥩ 
ᠭ  . , ⢮ 祪  -
 室   ணࠬ ᨬ .

:    - ᤥ १ࢭ 
䠩   ᪠ ⭮ (Batch)   㤠-
    ஢ ࠡ  楤  ""
,  ᤥ ।⥫쭮 १ࢭ .

<প ଠ>
প ଠ

 ଠ ࠭ (Screen Formatter)  ஥ ࠭
" 㬮砭", ᮤঠ騩   뢮   Ok 
Cancel. ଠ  (Pulldow (Pulldown Menu Formatter)
 ଠ  (Report Formatter)  ন.

< >
 

<  Range Limit Field>
Range Limit Field:
      ࠡ뢠 ᥩ   ࠭祭 䨪-
     ஢ 祭   㯠 ࢨ筮
     (primary) 䠩. ਬ, ப  (invoice) -
       ࠭祭  .  䠩  -
       ᥡ ITM:Invoice  ITM:Line, ᮤঠ騥  -
         ப .

     ITM:Invoice   Range Limit Field, 뢮饩 
     ⮫쪮  䨪஢  . Range Limit
     Field ਬ 祭  Range Value Field  ⮣ -
     .

<  Range Value Field>
Range Value Field:
     Range Value Field -  , ᮤঠ饥 祭, ᯮ-
     㥬  ࠭稢饥 祭 ⠢ . -
     ⠢  㤥 ᢮  祭.

      襬 砥, ⥪    ᮤঠ
      ,   . INV:Number 
      Range Value Field, ᮤঠ騬 祭  Range
     Limit Field. Range Value Field    ⥬  -
     ,   Range Limit Field.

<  Record Filter>
Record Filter:
         ࠦ 䨫 . ᫨
      ࠭ 㤠   䨫

         CUS:State = 'FL'

        (customers)    'FL' 
     㤠.

      ஢ப     ந -
     ୮ ࠦ 맮 訡 . ᫨ 
      祭   ࠬ 몠 Clarion,   -
        -  ⮣ ᯮ  Formula
      FILTER  Formula Class.

<  Action for Batch>
Action for Batch:
      Batch     㤠 .

     'Change' 㤥  (PUT)  ࠭ .
     'Delete' 㤥 㤠 (DELETE)  ࠭ .
     'No Action'  㤥  ,  㤠 .

<  Show Record Counter>
Show Record Counter:
     롥    뢮 稪 ᥩ, 
     뫨 ᯥ譮   㤠. 뢮 ६ 
     ࠭  ᭮ 横,  ⥫쭮 -
      ࠡ. ⮬,   롨  ,
     ⮣ ࠭  㤥   横.

< 室 >
 室 

<  Data Section >
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure>
"Setup Procedure"
     室  頥 ࠧ ᫥  CODE.

<  Setup Screen>
"Setup Screen"
      室  頥 ᫥  OPEN(Screen).

<  Before file SET() >
"Before file SET()"
     室  頥 । SET,  ।
     冷 ࠡ⪨ 䠩.    - 쭮
         祭ﬨ  祢
     SET.

<  Before LOOP >
"Before LOOP"
     室  頥 ᫥  SET,  ।
     ᭮ 横 (LOOP).  ⮬   ⬥
      SET    ன 横.

<  NEXT Record Error Check >
"NEXT Record Error Check"
     室  頥 ࠧ ᫥  NEXT. 
      ஢ 㭪 ERRORCODE(), ⮡ 㡥-
     ,   訡.

     : ᫨  ⠢ ஢  -
     ⢨ 訡  室  横,    ᪮-
      横!

<  Within LOOP >
"Within LOOP"
     室  頥 ᫥ GET   筮
     䠩.   横 ࠡ⪨. ᫨ ᯮ
     䨫 ,      ᥣ 믮
     (᫨  䨫஢). ᫨  奬  (File
     Schematic) ⠭ ⭮襭 --, 
     ᮥ 㦥   祭.  ,
     ᮧ ଠ஬  (஬ FILTER)  믮-
      אַ । ⨬  室 .

     騬 ஬,  㤥 믮 ᫥
     ⮣ , 㤥  (PUT)  㤠 (DELETE)
     , ᫨  ࠡ⪨ ࠭ Change ()
      Delete ().

<  PUT/DELETE Record Error Check >
"PUT/DELETE Record Error Check"
     室  頥 ࠧ ᫥  PUT 
     DELETE.   ஢ 㭪 ERRORCODE(),
     ⮡ 㡥,   뫮 訡  饭 -
     . ᫨  , 騥 ⠬
     㭨쭮 ,  ᫨  ⭠ ࠡ⪠
     饭  ࠧ 䠩,    
      ᮡ⢥ 奬 墠 訡. ᫨ 
      ⮩ ⭮ ࠡ⪨ ࠭ 'No Action', 
        室   㦭.

<  End of Procedure >
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.  ⮬  뢠
     .   稭  ࢮ ⮫, ⮬ 
     ᯮ짮    ᠭ  ணࠬ
     (ROUTINE),  뢠   㣮  -
      .

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     室  頥   CASE SELECTED(),
     믮  롮 ⮣   .

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     室  頥   CASE FIELD(), -
       襭 ⮣ .

< >
 

<  FILTER >
FILTER
     ᫮ (Conditional)   "FILTER"   Formula
     Class, ᯮ  롮 ᥩ  ࠡ⪨.
     ᫨ ᫮ ࠦ    (false)
       ,    ࠡ뢠.

<  No class (blank) >
No class (blank)
        ࠧ  ࠡ⪥ ᥩ.


<< Browse>>
<⪮ ᠭ>
⪮ ᠭ

  "Browse" ᯮ "List box"  뢮 ப-
  ᯨ᪠ ᥩ. ࠭ " 㬮砭" 蠡 Browse
   "Add", "Change"  "Delete",  뢠
 "Update" 楤,  짮⥫  䠩
 ,   "Select",  짮⥫ ""
   ᯨ᪠.  "Select" 襭  楤
 Browse  뢠  "ᮥ"   .

<⮥ ᠭ ।>
⮥ ᠭ ।>
Ŀ
।                 ᠭ                   


 Module Name      :     室 .CLA 䠩,  ᮧ
                        楤.

 Range Limit Field :    祢 , ᯮ㥬 
                       "࠭祭" ᥩ, 뢮 
                       ᯨ᪥.    ⮬
                        㯠 Browse.  -
                         Browse ᫨   祭
                       , ࠢ  祭 ⮣
                       .

 Range Value Field :   ᫨    ,  -
                          Browse ᫨ 
                       "Range Limit" ᮤন 祭 -
                         "Range Value".

 Record Filter    :     ⨬ ࠦ  몥
                       Clarion.   ᯮ
                        뢮  Browse ⢠ 䠩-
                        .    㤥 -
                        ࠦ  祭  
                       ᯨ᮪.

 Locator Field    :      ᯮ  -
                       樮஢ ᢥ⪨  ।-
                         䠩 .  
                       ⠢ 祢 , 饣-
                        祬 㯠  Browse. 
                          饭  ࠭
                       Browse     ᯨ᪠.
                       襥 ᮢ  ⨬  -
                         ᫥ ⮣,  짮-
                       ⥫   TAB.

                       *᫨    ஢,
                          'B'; ⮡ 
                       蠡 "஡ ᫨ ".

[] Incremental Locator : 롥  , ⮡  -
                           ⨢஢  ࠧ
                           ⨨ 짮⥫ .
                           ⠥ ⨢  -
                          ࠭ ᯨ᮪.   
                           饭  ᯨ᪠  ᪥
                           (Field List).  ⨥
                           짮⥫ ᯮ
                            ᪠ 襣
                          ᮢ  䠩 ,  -
                          樮஢ ᢥ⪨  ᯨ᪥.

                       *᫨    ஢,
                          'B'; ⮡ 
                       蠡 "஡ ᫨ ".

 Update Procedure :      楤,  뢠-
                         ⨨ 짮⥫ 
                       "Add", "Change"  "Delete".

[] Enable Hot Records  : 롥  , ⮡ 楤
                          Browse 뢠  䠩
                            ࠧ  ।
                          ᢥ⪨. ᯮ   -
                           ࠧ頥    ᯨ-
                          . ਬ,    ᯮ짮-
                              뢮 
                          MEMO ᢥ祭 .

                           ⠪ ᯮ짮 ⮩
                          樥 ᫨  ᯮ "
                          "    맮
                          㣮 楤,  ࠡ⠥
                           ᢥ祭 .

[] Enable Total Embeds : 롥   ᫨ ᯮ
                            ᫥  
                          室   ᫥ -
                            䠩 :

               "Set to First Record Before Total Loop"
               "Inside Total Loop, Immediately After Next()"
               "Inside Total Loop, After Filter"

                             ⥭ 䠩
                          ,   室 
                          믮  뢮 ᯨ᪠.

                          ⮡ ᯥ 筮 ᫥-
                           ⮣   (ADD), -
                           (CHANGE)  㤠 (DE-
                          LETE) 짮⥫ , -
                           ⠪    :

              "Prior to Update Procedure"
              "After Update Procedure"

[] Disable Memo Access : 롥   ᫨ 䠩 
                            Memo,    
                          뢮 Memo  ࠭ Browse. 
                          蠥 믮  ப⪥
                          ᯨ᪠.

<஡ ᠭ>
஡ ᠭ

 "Browse"  楤, 뢮 ᯨ᮪ -
ᥩ 䠩 .  ப ᯨ᪠ 뢮  -
  䠩.  ப ᯨ᪠  ப
  ࠢ       -
⠫쭮 ப⪨ ᯨ᪠.  뢮  ᯨ᪥ 
祢 浪. ᯮ㥬    "Access Key"
( 㯠)  奬  (File Schematic)( १
 "Files").

᮪   ﬨ   ,   ࠭.
   । ᯨ᪮,  ࢠ ࠭ -
ᥩ  㤥 뢥   ,  ᯨ᮪ ࠭.

 "Insert", "Change"  "Delete"   㣨 ,
ࠡ뢠騥  ࠭  ᯨ᪠,   -
饭 ᫥ ᯨ᪠  ᪥  (Field List). ⮡ -
ᬮ 冷 ࠡ⪨  ࠭,   ଠ
࠭ (Screen Formatter)   Ctrl-F.

 "Select" ⨢ ᫨ Browse 뢠 
KEYCODE() ⠭  ShftEnter (Shift  Enter).
KEYCODE() ⠭  ShftEnter  楤 -
   :   "When Field is Selected" 
 "When Field is Completed",   "Return Field".

<஡ ᠭ ।: >
<  Range Limit Field: >
Range Limit Field:

      "Range Limit"  뢮  ᯨ᪥ -
     ⢮ 䠩 . ⢮ ᥩ ᭮뢠
      祭, ᮤঠ饬   "Range Limit". 
     "Range Limit"  ⮬  㯠 ("Ac-
     cess Key").

     ᫨   "Range Limit"  ࠭  
     ,    짮⥫ ᢠ -
       祭  "࠭稢" 뢮 .
     ᫨    "Range Limit"  ࠭,  
     㤥  祭  "Range Limit"   -
      室  "Setup Screen".

      ⠪ ᯮ짮   - "Range Limit" 
     "Range Value". 祭  "Range Value" ᢠ-
       "Range Limit"  ᪥ Browse.

<    ਬ ᯮ짮 Range Limit   :>
     ਬ ᯮ짮 Range Limit   :
     
     ᫨  ⥡   䠩 INVOICE and ITEMS,  
      ᬮ   ITEMS  ࠭
      INVOICE,    "࠭"  䠩
     ITEMS, 뢮  Browse.

     ᫨  㯠 ("Access Key") 楤 Browse 
     䠩 ITEMS 룫廊 ⠪:

              ITM:InvoiceKey        ! 䠩 ITEMS
                  ITM:InvoiceNo   ! 
                  ITM:Line        ! ப 

     ⮡ ᬮ  ITEMS   , -
      ITM:InvoiceNo   "Range Limit".  -
      ITM:InvoiceNo     ࠭ Browse,
     । ᯨ᪮.  믮 Browse, 짮⥫ -
        , , ᫥  
     TAB, ᯨ᮪  ﬨ ITEMS  
     짮⥫  .

     ᫨  㯠 楤 Browse  -
     ⠢ 箬,    ᯮ짮   
     ࠭祭 ᬮ,  롥 ᫥ 
        "Range Limit".

     ᫨   祢   ࠭   -
     ,  ᬮ   "࠭祭" 짮⥫ 
     ६ 믮 ணࠬ,   ᯮ짮 
      室  "Setup Screen"  
     ⮢ .

<    ਬ Range Limit ᯮ饣  室 :>
     ਬ Range Limit ᯮ饣  室 :
     

      INVOICE  ᫥騩 :

              INV:InvoiceKey        ! 䠩 INVOICES
                  INV:InvoiceNo   ! 
                  INV:Date        ! 

      ᯮ짮   室  "Setup
     Screen"  ᢮ 祭  "Range Limit".

      ਢ   䠩 INVOICE,  ᬮ-
       䠩  뢥 ⮫쪮  ,  -
         ⮩.

     ⮡ ᬮ "ᥣ譨" ,   -
      室  "Setup Screen"  :

     INV:Date = TODAY()

<  Range Value Field: >
Range Value Field:

      "Range Value" ᯮ    "Range
     Limit".  ᪥ Browse, 祭  "Range Value"
     ᢠ  "Range Limit".  "࠭稢"
     ᬮ  饭  "Range Limit"  ࠭
     Browse.

      "Range Value" 筮 ਭ 祭 १ -
     楤,  뢠 Browse.

      "Range Value"    ⥬  ᠬ ,
        "Range Limit".

<    ਬ  Range Value>
     ਬ  Range Value
     

        짮⥫ ᬠਢ 䠩
     INVOICE, 롨   ⥬ ᬠਢ -
      䠩 ITEMS  ࠭ .

      㯠 楤 Browse  䠩 ITEMS 룫廊
     ⠪:

              ITM:InvoiceKey        ! 䠩 ITEMS
                  ITM:InvoiceNo   ! 
                  ITM:Line        ! ப 


      INVOICE  ᫥騩 :

              INV:InvoiceKey        ! 䠩 INVOICES
                  INV:InvoiceNo   ! 
                  INV:Date        ! 

       "Range Limit"  ITM:InvoiceNo,  
      "Range Value"  INV:InvoiceNo. ᬮ 䠩
     ITEMS ࠭稢 祭 ITM:InvoiceNo, -
     ஥ 室   "Range Value"; INV:InvoiceNo.

     楤 Browse 믮  䠩 INVOICE 
     "ᮥ",   ᫥饣   
      室  "Setup Procedure":

     SETKEYCODE(ShftEnter)     ! 맮 Browse  ⨢
                               !  "Select"

     Browse 䠩 INVOICE  짮⥫ ᢥ
      , ⥬   "Select". 
     "Select" ᯮ  맮 Browse 䠩 ITEMS.

      믮 Browse 䠩 ITEMS, INV:InvoiceNo
     ᢠ  ITM:InvoiceNo. ᮪  -
     ﬨ ITEMS  ࠭ 짮⥫  INVOICE.

<  Record Filter: >
Record Filter:

      뢥 ⢮ 䠩 , ᯮ 
      "Range Limit",  䨫 . ᫨ -
      䠩 ᭮뢠  祭 , 饣 -
     ⮬  㯠 ("Access Key") 楤 Browse,
       "Range Limit" ᯥ ᠬ ஥ 믮-
     . ᫨ ⢮ 䠩 ᭮뢠  , 
     騬 ⮬  㯠,  室
     ᯮ짮 䨫 .

      ᯮ짮   -  "Record Filter:", 
     "Range Limit".  ⮬  롨  
     "Range Limit",    ࠭  㤥 
      ⢮ ᥩ.

      2 ᯮᮡ  䨫 :

     ᮡ #1.
      ᯮ짮   (Formula Generator)
         䨫. ஢  -
      䨫஢ 䠩, ᭮뢠   㫥.

     ᮡ #2.
       "Record Filter:"   Browse Procedure
     Properties (⢠ 楤 Browse)  ᢮-
       ࠦ 䨫 .  
       ஢ । 樥. ,  
        Clarion  ᯮ짮 -
      .

<  Locator Field: >
Locator Field:
       -  ࠭  , ஥ -
        㯠 ࢨ筮 䠩. ᫥
       ,  ᯨ᪥ 뢮  ᮢ-
      .   筮 頥 ᫥
     ᯨ᪠  ᪥  (Field List),   ஢
      Ctrl-F  ଠ ࠭ (Screen Formatter).
     饭  ᫥ ᯨ᪠,  
     ᯨ᮪  ⮫쪮 뢠 Browse, ᫨  -
     饭 । ᯨ᪮,  ᯨ᮪  㤥   
     ,  짮⥫   TAB.

     ਬ, ப⪠ 䠩 த殢  ᫥⥫쭮-
       த殢, ᯮ , ᮤঠ騩  -
      த (VND:Name). ⮡ ᮧ   
      த,    VND:Name  ࠭ -
     ।  ᫥ ᯨ᪠,  㪠 VND:Name   
       Browse Property Screen (࠭  Browse).

      ६ 믮 ணࠬ,  짮⥫ -
     稢 ᯨ᮪, ⨥  ᨬ  
     롨ࠥ  . ⨥  TAB 樮-
      ᢥ  襥 ᮢ.

     *᫨    ஢,   
     'B'; ⮡  蠡 "஡ ᫨ ".

<  Incremental Locator  >
[] Incremental Locator
     롥  , ⮡ 㪠,    㤥
     ⢮  "Incremental Locator" ("  -
     祭").       ᯨ᪠
      ᪥  (Field List), ⮡   㢥祭
     ࠡ⠫ ࠢ쭮.

      蠡   ᥪ㭤 প, ⮡
     짮⥫   㪢   .  
     㧥  -ᥪ㭤, ᮤন  ᯮ-
       ६饭  襥 ᮢ (
     TAB   㦭).  ६ ⮣  ⨢
      Backspace,  믮  .

     *᫨    ஢,   
     'B'; ⮡  蠡 "஡ ᫨ ".

<  Update Procedure: >
Update Procedure:
       update-楤, ᯮ㥬  ⠢,
       㤠 ᥩ. ᫨ update-楤
      ,   "Insert", "Change"  "Delete" -
       㤠  ஥ ࠭.

<  Enable Hot Records: >
[] Enable Hot Records:
      ப稢 䠩   饭 
     ᯨ᪠.   뢮 祭  , ᢥ-
     祭  ᯨ᪥,     ६饭
     ᢥ⪨. 稥 ,  ࠧ饭  ࠭, -
       祭  "Display only" ("쪮  -
     ").

     ᫨ ࠭  "Enable Hot Records",   
     । ᢥ⪨,   ⠥   -
     筮 䠩. ⥬ ⠭  裡. ⥬
     믮  ,  騥 ⠭ 
      (FILTER,AVG,SUM  CNT).  , 믮-
       室 ,    'Process
     Selected Record' (ࠡ⪠ ࠭ ).

<  Enable Total Embeds >
[] Enable Total Embeds
     롥  , ⮡ ᮧ   ⮣, 
     室 ஢  .   㤥
     ।  ⮣  ᮬ  SUM, CNT  AVG.

<  Disable Memo Access >
     ᫨ ᬠਢ 䠩   Memo,   -
      믮 楤 Browse ⥬ ⪫祭 ⥭
      Memo.

<    >
 

 ࠭   易⥫쭮  , -
饥 짮⥫    䠩. ᫨ 짮⥫
 㪢  ப稢 ᯨ᪠,  ࠢ -
  .   蠥  -
襩 TAB  ⨥ 誨   .  
襭, 楤 BROWSE 뢮  ᮢ
  ࢮ ப ᯨ᪠.

*᫨    ஢,   
'B'; ⮡  蠡 "஡ ᫨ ".

<    㢥祭 >
   㢥祭

 ⠪ ।    "  㢥-
". "  㢥祭"    TAB 
   砫 ᪠ ᮢ饩 . 
ᥪ㭤 , ⢫  襣
ᮢ  ᮤন  .  , ᫨ -
⥫  "S",   ࢮ ப ᯨ᪠ 㤥 -
 , 稭  "S". ᫨ 짮⥫ ⥬
 "M",  㤥 ⢫   "SM"  ᯨ᮪
ப   . ⨥ "Y" 筥  
"SMY"  ..

⨥  Backspace ९樮 ᢥ  -
⭮ 浪.  ᫮ ⨯  ४ -
짮 ப 蠡 ( 뢮).    ४-
    㢥祭.

*᫨    ஢,   
'B'; ⮡  蠡 "஡ ᫨ ".

< ⮣>
<  Averages>
<  Counts>
<  Sums>
<  Counts>
     ᯮ  Formula  ᮬ  (Formula Class)
     "SUM", ⮡ ਬ      ᥠ
     Browse.

     塞  (Computed Field)  ᮬ  "AVG"
      । 祭  ᥩ, 祭  -
      Browse.

     塞  (Computed Field)  ᮬ  "CNT"
     뢠 ⢮ ᥩ, 祭  ᥠ
     Browse.

     ⮣, ᯮ騥 ᫮  (Conditional Formula),
      ᭮뢠  ᫮  (Formula Con-
     dition).

     ஡ ᬮ  ࠧ " ".

<   ⮣>
  ᫨ ᯮ  室   ᫥
  ⮣,   맢 ணࠬ (ROUTINE)
  InitializeTotals,    室  "After
  Update Procedure"   ⮣. ணࠬ
  InitializeTotals  ᫨ ࠭  "Enable
  Total Embeds"      ᮬ SUM, CNT 
  AVG.

  ਬ:

  IF UpdateSuccessful = True     !᫨ 䠩  
    DO InitializeTotals          !  ⮣
  END

<  ᬮ   易 䠩 >
ᬮ   易 䠩

楤 Browse 㤥 ᮥ  䠩  ஭
"One", 易 ⭮襭 --  䠩, -
ᬠਢ  ᯨ᪥.

ਬ,  ⥡   䠩 - Customers  Orders. ⭮-
襭  Customers  Orders - --, 
Customer    Orders. ᫨ ᮧ Browse
 ᬮ 䠩 Orders,   ᯨ᮪   -
  䠩 Customer,  楤 Browse 㤥 ⮬᪨
 "ᮥ" ("lookup")  䠩 Customer.

<   Insert,Change,Delete,Select>
Update-楤,   㬮砭

 "Insert", "Change"  "Delete" 뢠 update--
  ࠡ⪨ ᢥ祭  (update-楤
筮 ᮧ  蠡 "Form"  "MultiPage"). 
楤   "Update Procedure"  ࠭ ᢮
楤 Browse. ᫨     "Update Procedure",
     ⢨  㬮砭.

᫨    㤠    Update-楤,
  INSERT, ENTER  DELETE  뢠  Update-
楤. , ᫨ 㤠 ⮫쪮     
 (Insert, Change  Delete),   㤠 
Update-楤 뢠  㤥.

 "Exit"  楤, ।  "RETURN", -
 ࠧ,  짮⥫  "Exit",  -
頥  뢠 楤.  "Exit"  㤠,
 ⮣  ᯥ   室  -
.

<   Select>
<  맮 Browse  ᮥ 祭>
 "Select" ᯮ  楤 Browse 뢠-
  "ᮥ" ("lookup").  "Select" 襭
 Browse 뢠  KEYCODE() ⠭ 
ShftEnter ( Shift  Enter ). ᫨ 楤
Browse  㤥 ᯮ짮  ᮥ,  
  㤠.

 짮⥫   "Select", ᢥ祭
 ᯨ᪠ 㦠  ,  ணࠬ 頥
 뢠 楤.

<   樨 Browse >
 樨 Browse

 ६ 믮 ணࠬ,  ࠭ ᯨ᮪, -
ᢥ⪠ ᥣ 樮    ᯨ᪠.
 ५    । ᢥ. -
 ᢥ⪨  孥 ப    -
 뢮  ᯨ᮪  .  PGUP  PGDN 뢮-
  ᯨ᮪ ।  ᫥ ࠭ ᥩ.
CTRL-PGUP 뢮  ࠭ ᥩ  CTRL-PGDN 뢮-
 ᫥ ࠭ ᥩ. ⨥ ࠢ  
 孥  ᯨ᪠ ப稢     
 ᯨ᪠ - ப稢  .


<    >
 

᫨ ᯮ  "Data"  ࠭ ᢮ 楤,
    । ன ࠭.

᫨ ᯮ   室  "Data
Section",    ᫥  Screen.

<   Pulldown >
 Pulldown

᫨  ଠ  Pulldown (Pulldown Menu Formatter)
ᮧ  Pulldown,    ᫥ -
 ࠭.   ᯥ稢 ⨥  ⨥
 Pulldown.       -
室  .

<প ଠ>
প ଠ

楤 "Browse"  CLARION.APP ।।  ஥⮬
࠭, ᮤঠ騬 ᯨ᮪   "Insert", "Change",
"Delete", "Select"  "Exit". ⪠  ᯨ᪠  
"?List"  ਡ "Immediate"   祭. 
ਧ⠫쭮 ப⪨   ⪫祭, ᫨ -
 ଠ  諠  ᯨ᮪.  ⨪쭮
ப⪨  蠡 . ᮪   
楤 ।஢.  ⠫ ᢮⢠ ᯨ᪠ 
.

ଠ  (Report Formatter)  ন.

< >
 


< 室 >
 室 

<  Data Section>
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure>
"Setup Procedure"
     室  頥 ᫥  CODE.

<  Setup Screen>
"Setup Screen"
     室  頥 ᫥  OPEN(Screen).

<  Setup Pulldown>
"Setup Pulldown"
     室  頥 ᫥  OPEN(PullDown).

<  Set to First Record Before Total Loop>
"Set to First Record Before Total Loop"
     室  頥 ᫥ SET(key,key)  ࠭
      (Range limits)  । 砫 横 -
      ⮣.

<  Inside Total Loop, Immediately after NEXT>
"Inside Total Loop, Immediately after NEXT"
     室  頥 ࠧ ᫥ ⥭  
     横 ᫥ ⮣.

<  Inside Total Loop after Filter>
"Inside Total Loop after Filter"
     室  頥 ᫥ ⥭   ᫥-
      ᫮ 䨫  横 ᫥ ⮣.

<  After Total Field Loop>
"After Total Field Loop"
     室  頥 ᫥  塞 ⮣.

<  LIST Class Formula>
"LIST Class Formula"
     室  頥 ᫥ 樨 ᯨ᪠ ᮢ
     .    室   ᯮ-
       ᯨ᪠ ᮢ .   ᤥ-
      ⠭   , 뢮  ப-
     稢 ᯨ᪠.

<  Case of No Records Found>
"Case of No Records Found"
     室  믮 ᫨   ᥩ  -
     .

<  After Filter and Range Check>
"After Filter and Range Check"
     室  頥 ᫥ ᫥  䨫
       ࠭⥫  (Range limits).

<  End of General Formulas>
"End of General Formulas"
     室  頥  ࠡ뢠 ࠭
     ,  ,    
     'FILTER'  'LIST'.    室 
       ᫥  ࠭  뢮,
      ᯮ짮 ଠ  (Formula Formatter).

<  Set to First Record>
"Set to First Record"
     室  頥  ᯮ ࠭⥫
      (Range Limits),  SET ᯮ 
     宦 ࢮ .    室
       ᫥ ᣥ஢  SET 
      ७ SET.

<  Set to Last Record>
"Set to Last Record"
     室  頥  ᯮ ࠭⥫
      (Range Limits),  SET ᯮ 
     宦 襣 ᮢ  ᫥ .
        室   ᫥
     ᣥ஢  SET   ७
     SET.

<  Process Selected Record>
"Process Selected Record"
     室  頥  ࠭  "Enable Hot
     Records".   ⮣  믮   -
     饭 ᢥ⪨  ᯨ᪥.  믮 ⮣ -
      室  ந室 ᫥饥: ᢥ祭
      頥  ,   -
     筮 䠩, 易 ⭮襭 --,
      騥 .

<  End of Procedure>
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.   稭 
     ࢮ ⮫, ⮬  ᯮ짮   
     ᠭ  ணࠬ (ROUTINE),  뢠-
        㣮   .

<  Prior to Update Procedure>
"Prior to Update Procedure"
     室  頥 ࠧ । 맮 Update--
     楤.

<  After Update Procedure>
"After Update Procedure"
     室  頥 ࠧ ᫥ 室  Update-
     楤.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     室  頥   CASE SELECTED(), -
        ࠭  .

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     室  頥   CASE FIELD(), 믮-
        襭.

< >
 

<  FILTER >
FILTER
     ᫮   ᮬ  "FILTER" ᯮ
      뢮 ⢠ 䠩 . ᫨ ࠦ
     "IF Condition"    (false)  
     ,    뢮.

      ࠦ   "IF Condition"  ⠢ -
     묨  "True Formula"  "False Formula".  䨫-
      㤥 ᯮ짮 ⮫쪮 ࠦ.

     ஬ ⮣, ࠦ 䨫    
     Browse Procedure Property (⢠ 楤 Browse)
       "Record Filter: ",  ᯮ짮 -
      .

<  LIST >
LIST
     ᫮  塞   ᮬ  "LIST"
     ᯮ   祭,  뢮  ᯨ-
     ᪥   ⮫쪮  ᮧ  ᯨ᪠.

<  SUM >
SUM
     塞   ᮬ  "SUM" 
     "Formula Field" ᯮ "Formula Expression".

      :

     FormulaFieldName$ += FormulaExpression

     ᫮   ᮬ  "SUM"   -
      "Formula Field" ᯮ "Formula Expression",
     ᮤঠ騥     True  False
     Expressions.

      :

     IF CONDITION
       FormulaFieldName$ += the TRUE FormulaExpression
     ELSE
       FormulaFieldName$ += the FALSE FormulaExpression
     END

<  AVG >
AVG
     塞   ᮬ  "AVG" 
     । 祭 ,   Expression.
      祭 ⮣, ⥬    -
     ⢮ ᥩ, ⠭  祭 ⮣ ⮣.

<  CNT >
CNT
     塞   ᮬ  "CNT" 뢠
     ⢮ ᥩ, 祭  ᥠ Browse.

<  No class (blank) >
No class (blank)
     㫠   ࠧ  襭 
       ࠭.  ᫥  । -
     ணࠬ ।஢ ,  孥  
     ࠡ⪨ .

<< Child>>
< ଠ>

 "Child" ("") ᮧ 楤,   -
࠭  ᢮⢠ 蠡 Browse  Form.  ࠭ 蠡 -
  ப稢 , ⠪    .

 蠡 ஥஢  ࠡ⪨  ᥩ ॡ 
 ࠭.   ᥩ  室  䠩,
  ॡ  ⭮襭 த⥫-ॡ ( -
 ⭮襭 --).  뢠 楤 Child,
   ॡ, 易   த⥫, 室饩-
  , 㦠   QUEUE (த⥫᪠  
᪥  ᮮ⢥⢮   ). QUEUE  
   ,   㤠 ᥩ.
 ⨨  OK,  QUEUE 뢠 ⭮  
  ࠭.   QUEUE ⬥, ᫨ 
 Exit.

 প 襣 ஢ 楫⭮ , 
䠩 ॡ  ६ ࠭樨 ࠧ  ᪮쪮 -
. (.  ࠡ⪠ ࠭権 (Transaction Processing)
 㪮⢥ ணࠬ).

 ࠩ Btrieve  Clarion ন ࠡ ࠭-
権.  ࠧ, 䠩-ॡ  ᯮ짮  
 ࠩ஢  ࠢ쭮 ࠡ.  ࠩ஢  ন-
 ࠡ ࠭権,  ᯮ짮  蠡-
 Browse-Form.

ࠢ쭮 奬  (File Schematic) ⢥  -
쭮 ࠡ 楤 蠡 Child. १  Files...,
 ࠭ Procedure Properties (⢠ 楤),  ᬮ-
  奬 䠩  ᮧ  ᫨   
।.

-ॡ    (primary) 䠩  奬 .
-த⥫  室  䠩-ॡ    
⭮襭    ਬ:

       奬  ন:
     ---------------------------------
         Primary (-)
           > Secondary (-⥫  )

        奬   ন:
     -------------------------------------
         Primary (-⥫)
           >> Secondary (-  ⥫)

 ᫥ ᯨ᮪ 権    ᮧ 楤
蠡 Child:

     -  奬     (᭠砫 --
       , ⥬ -⥫). 롥  㯠  -
       .

     -  ଠ ࠭ (Screen Formatter),   -
       ⪨  -  ᯨ᮪,    --
            Save  Exit.

     - ८࣠   ࠭ ⠪ ࠧ, ⮡  -
         諨 ᫥⥫쭮.    -
         塞 . ࠭  ࠭.

     -   First Update Field (ࢮ 塞 )
        Parent File Procedure Property (⢠ 楤 -
       -⥫).   易⥫.

<প ଠ>
প ଠ

࠭ " 㬮砭" 蠡 Child ।।   -
 ࠧ묨 ﬨ -  ப⪨   
.  ப⪨ 뢮 ᯨ᮪  ᥩ ॡ 
࠭ த⥫.  ப⪨ ᥩ ॡ ᯮ
⠭  ᯨ᪠ (.   蠡 Browse).

  ᯨ᪮  짮⥫ ⠢ (Insert), -
 (Change)  㤠 (Delete) .  宦  -
 ப⪨, ⨢  OK  Cancel.

    ⠪  蠡 Form.  ,
室騥  ⮩ ,     
ॡ.   ⮩    ᫥⥫  ।-
⢮  Save  Exit.     롮筮
祭 (ENABLE())  ⪫祭 (DISABLE())  ६饭 
 ப⪨   .    ࠭
 ᯨ᪥    Save  㤠   
Exit.  OK  Cancel 㯭 ⮫쪮   ப⪨.

 ⨨  OK,  QUEUE 뢠    -
 ࠭. ᫨   訡,   ⢮ -
ᥩ ⪠뢠   ﭨ 䠩    OK,
 짮⥫ ।⠢  ࠭  -
  ﬨ  ஡ ᭮  ࠭.

᫨   Pulldown Menu Formatter (ଠ  Pulldown)
ᮦ  Pulldown,    ᫥ 
࠭. Pulldown 뢠 ᫥  ࠭  뢠
 室  楤.

Report Formatter (ଠ )  ন.

< >
 :

<  First Update Field>
First Update Field:
      Child  2 ⤥ ० 㭪樮஢. -
      롮筮 몫砥  ,   ᮮ⢥
     ⥪饬 ०.

      ப⪨ - 㯭 ⮫쪮   ப⪨.
        - 㯭 ⮫쪮  .

       㪠 ࢮ  .   
     ࢮ    䠩-ॡ.  室  -
     쭮 祭 (ENABLE())   ࠭
       ⮣    Exit. ᫨   ᫥-
     ⥫  ᪥  (Field List),     
     ࠢ쭮 祭 (ENABLE)  몫祭 (DISABLE). 
     ⮩ ᯮᮡ ᯥ ᫥⥫   - 
     ⮬᪨ 㯮冷 ࠭  । ࠭-
      ࠭.

<  Parent File: >
Parent File:
         , ⮡ 㪠  䠩-
     த⥫ ᯮ짮.  Child ஥஢ 
     ⠭ 裡  1 䠩-த⥫  1 䠩-
     ॡ.

     ⮡ ⮫쪮 1 짮⥫  짮⥫᪮ 㦥-
       ஢  ᥩ 䠩-ॡ,  -
      த⥫ 頥 HOLD (ঠ).  㦨
     ᨣ 㣨 楤ࠬ Child,    த⥫
      ⥪騩  . 㣨 楤 ᬮ
       த⥫,   ᬮ  ஢.
     ⮬ 祭 , ⮡  ᯮ짮 楤 蠡-
      Child  䨪樨 ᥩ 䠩,  뫮 㣨
     楤,    䠩-ॡ. (-
     :     楤 蠡 Form, -
       䠩-ॡ,    蠡
     Child.)

<  Exit on Null Parent:>
Exit on Null Parent:
       ଠ  த⥫  筮 
     ࠢ쭮 ᪠ ⥩,    室 (RETURN)
      楤 Child ᫨  ࠭   த⥫. 
        室   롮  த-
     ⥫  ⠢   ⮩.

<  Update Parent on OK:>
Update Parent on OK:
     ᫨  ࠭  ,   த⥫ 頥 -
     ⭮ (PUT)  ᢮ 䠩  ⨨  OK.  -
        ଠ த⥫,  
        ६ ࠡ  楤 Child.

< 室 >
 室 

<  Data Section>
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure>
"Setup Procedure"
     室  頥 ᫥  CODE.

<  Setup Screen>
"Setup Screen"
     室  頥 ᫥ OPEN(Screen).

<  Top of ACCEPT Loop>
"Top of ACCEPT Loop"
     室  頥 ᫥  LOOP  । -
     樥  .

<  Prior to Return>
"Prior to Return"
     室  頥 ᫥ 室  ᭮ 横,
      । ᢮ Queue.    訬 -
     ⮬, ⮡    ࣠樨 横  
     Queue,  祭 ଠ樨 । 室.

<  End of Procedure>
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.   稭 
     ࢮ ⮫, ⮬  ᯮ짮   
     ᠭ  ணࠬ (ROUTINE),  뢠-
        㣮   .

<  Enter Scroll Mode Routine>
"Enter Scroll Mode Routine"
     室  頥 ᫥ 몫祭 (DISABLE) 
     祭 (ENABLE)   ४祭  
     ப⪨    ,  室   -
     ⪨.   ⮬᪮ 祭  몫-
     祭 .

<  Enter Update Mode Routine>
"Enter Update Mode Routine"
       襥   饭 ⮬᪮ -
     祭  몫祭 ,   室   .

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     室  頥   CASE SELECTED(), -
        ࠭  .

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     室  頥   CASE FIELD(), 믮-
        襭.


<< External>>
< ଠ>

 "External" 㪠뢠  ਫ (Appli-
cation Generator),  楤 室  譥 室-
, '⭮  筮 䠩.  楤
"External"   室 . ⨯ 楤
頥   MAP   砥 䠩
MODULE    Module Properties (⢠
).

 Module Name  ᮤঠ  譥 室,
'⭮  筮 䠩.


<< File>>
< ଠ>

 File ᮧ 楤,  짮⥫ -
  䠩 DOS  ᯨ᪠ 䠩 ⥪饣 ᪠.

짮⥫  ᯮ짮     -
 ४ਨ  롮 䠩.   ᪠ 䠩 -
  ,     짮⥫.

 ⨥  1  (   ࠢ஭-
 誥)  ४ ᫨ ࠭ ᯨ᮪ ४਩
 롥 ᢥ祭 䠩 ᫨ ࠭ ᯨ᮪ 䠩.

<প ଠ>
প ଠ

楤 "File"  CLARION.APP ।।  ஥⮬
࠭, ᮤঠ騬 2 ᯨ᪠, 1   ᪨ 䠩, 1
 뢮  ४ਨ  2  - "OK" 
"Cancel".

᮪ 䠩 뢠  䠩  ࠭ ४ਨ,
 ᮢ  ᪮. ᮪ ४਩ 뢠 
४ਨ  ⥪饩 ४ਨ  த⥫ ४,
祭 '..'.   ᪨ 䠩 筮 讥,
⮡    䠩 '*.???'  뢠 -
  ᯨ᮪ 䠩,  ࠨ  
᪨.  뢮 ४ਨ 㤥 뢠  35 ᨬ-
 ⥪饩 ४ਨ.  OK 뢠 ࠭ 
䠩  㪠 ६  䠩,   Cancel
頥  뢠 楤, ⠢ ६ -
 䠩  ᢮ ࢮ砫 ᮤঠ.

< >
 

<  Filename Variable:>
Filename Variable:
      䠩  ࠭   ப ६.
     ( ᯮ짮 STRING(64) ⠪  㤥
       . DOS ࠧ蠥 ᯮ짮 64
     ᨬ   䠩.) , ६  㬮-
     砭     䠩 ਫ-
       㬮砭 (GLO:Filespec  CLARION.APP)  
     㤥 ᮤঠ  䠩 ᫨ ६  䠩
     .

<  Initial Directory:>
Initial Directory:
     易⥫쭮,   砫 ४ 
      ᯨ᪠ ४ਨ (ਬ REPORTS). 
     File 㤥 뢠 SETPATH() אַ । 
     ᯨ᪠. 㣮 SETPATH() 㤥  ࢮ砫-
       । 室  楤.

<  Beginning file mask:>
Beginning file mask:
       砫  䠩, ᯮ㥬 
     ⨨ ᯨ᪠ 䠩.    -
     . ᫨    䠩  ⮩ ᪨,  
     ᯨ᪥ 䠩  ⥪ 'NO MATCH'. ᫨  -
      砫  䠩,  㤥 ᯮ짮
     ᪠  㬮砭 - '*.*'.

<  Next Procedure:>
Next Procedure:
       楤, 뢠   䠩 ᯥ-
      ࠭. ६  䠩 㤥 ᢮ 
     ࠭ 䠩  㤥 맢 Next Procedure (-
      楤).

      View  ᮧ  ᮢ⭮ ᯮ짮 
     蠡 File   ᬮ ࠭ 䠩.
       楤, ᮧ 蠡 View,  Next
     Procedure  ⠪ 樨.

<  Reselect Upon Return:>
Reselect Upon Return:
     ᫨ । Next Procedure,    ᯥ-
        ᫥ ⥩:

     1)   뢠 楤 ᫥ 室  update-
        楤. ( 㬮砭)

     2)  짮⥫ ॢ  䠩 ᫥
        室  update-楤. (  ࠭)

<  Blank Name On Cancel:>
Blank Name On Cancel:
     ᫨  ࠭,  ६   ६-
       䠩 () 㤥 饭  롮 짮-
     ⥫  Cancel.  ६  䠩 
     , GLO:FileSpec (६  䠩  㬮-
     ) 㤥 ⮩.

         蠡 File ᯮ 
     Next Procedure.  ⮬ 砥  
     ஢ ࠫ  짮⥫ 䠩, ⥬ ஢ન
     祭 ६  䠩 ( GLO:FileSpec).

<  Allow Drive Searches:>
Allow Drive Searches:
     ᫨  ࠭,   ᯨ᮪, ᮤঠ騩
      㪢 ᪮ DOS.   짮⥫ ᪠
     䠩   ᪥.

< 室 >
 室 

<  Data Section >
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure >
"Setup Procedure"
     室  頥 ᫥  CODE.

<  Setup Screen>
"Setup Screen"
     室  頥 ᫥  OPEN(Screen).

<  Top of Accept Loop>
"Top of Accept Loop"
      室  頥  孥  横 ࠡ-
       ࠭ .

<  End of Procedure>
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.   稭 
     ࢮ ⮫, ⮬  ᯮ짮   
     ᠭ  ணࠬ (ROUTINE),  뢠-
        㣮   .

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     室  頥   CASE SELECTED(), -
        ࠭  .

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     室  頥   CASE FIELD(), 믮-
        襭.

< >
 

 楤 蠡  ন    
.


<< Form>>
< ଠ>

 "Form"  楤,  㤥 ,
  㤠   ࢨ筮 (Primary) 䠩
楤 (।   奬  (File Schematic)).

᫨ 쭮 । ਫ - "Enable Shared
Files: " - 祭 (ON),      -
஢   짮⥫᪮ ᯮ짮.

࠭祭 楫⭮, ।    (Data
Dictionary), 뢠 ﭨ  ६  ࢨ-
 (Primary) 䠩   ⭮襭 ࢨ筮 䠩
--.

   ᪮쪨 㢥稢 祢
  ஢ப ᮢ । ᪮쪮  memo.

<樨 Data Dictionary>
<ࢮ砫쭮 祭 >
<஢ઠ >
"Initial values" ("ࢮ砫 祭"), । 
  (Data Dictionary) ।⥫쭮 㦠
 ६ .

"Range checks" (஢ઠ )   ।-
    뢠 ﭨ   
. ᫨ ᫮ 室  , 짮⥫
ᮮ頥 (ᯮ 楤 ShowWarning) ⨬ -
    頥     ।஢-
.

<뢮   易 䠩>
 ⮬᪨   GET  㯠 
 筮 䠩, ᫨ ⭮襭  楤 ࢨ-
 䠩 ।  --.   ஭
"1" ⭮襭   饭  ࠭  "⮫쪮 
뢮".      䠩  -
஭ "1" ⭮襭.

ਬ:
      (Data Dictionary) । CUSTO-
  MERS  INVOICES  --; "1" customer 
    invoices.  砥,  䠩 INVOICES
  易  䠩 CUSTOMERS ⭮襭 --.

   楤 FORM, ᯮ㥬   䠩 INVOI-
  CES,  ࠭        䠩
  CUSTOMERS    CUSTOMERS 㤥 맢 㦭 .
    ᫨ ࠧ      
   䠩 CUSTOMERS,  㤥 ᣥ஢   -
    CUSTOMERS.

<⠭   >
<  Must be in File>
<  ⮬᪠ ஢ઠ >
 ஢ન "Must be in File" (   䠩), -
     (Data Dictionary), 뢠
ﭨ   "襭"   짮⥫ 
 "Ok".

<  ᮥ>
  楤 BROWSE    "When Field is
Selected Procedure:", ᫨  "ᮥ" Browse,
⮡  﫠  ⮫쪮  ࠭ 짮⥫.

ᯮ "When Field is Completed Procedure:" ᫨ 
஢  ᫥ 襭 짮⥫ .

<  짮⥫᪮  䠩>
᫨ ਫ ᯮ SHARE 䠩,  楤 ந-
 짮⥫ ஢ ᮢ  ஢
. ᫨  䫨     ࠡ-
稬 ⠭ﬨ, 騬      , 
  뢠  ᪠  ࠭ FORM .
짮⥫ ।०    頥 
 ० ।஢.

<  ⭮⥫쭠 楫⭮>
᫨     (Data Dictionary) । -
࠭祭 ⭮襭 (Relational Constraints),  -
 , ࠭稢騩 ⭮襭 1:.  ࠭祭
⭮⥫쭮 楫⭮ 뢠 ﭨ  楤 -
筮 䠩,   ॢ ⭮襭 䠩  ᥬ -
騬 ஢.

<  ஢ ࠭ >
 ६ ⭮⥫쭮   ,  
ࢨ筮 䠩 頥 HOLD.   ࢨ筮 䠩
   ࠭樨, ⮡  㢥७,
 '  祣'   㤠. ᫨  
樨஢ LOGOUT,  짮⥫  蠭 -
   㤠.

<   ஢ ࠭ >
  䠩 ࠩ ন ࠡ ࠭権.
᫨ ᯮ 䠩 ࠩ,  ন騩 -
 ࠭権,  ᯮ ᪮쪮 䠩 ࠩ-
஢   ⭮襭,   ६ 樨 
᪮ ।०:

  "PRIMARY file driver does not support LOGOUT()"
 ("ࠩ  䠩  ন LOGOUT()")

᫨ 䠩 ࠩ  ন  LOGOUT, 
  䠩     -
஢ ࠭樨.

, ᫨ 易 䠩 ᯮ ᪮쪮 䠩
ࠩ஢,  ⭮⥫쭮 /㤠   -
짮  LOGOUT.

ਬ, ᫨ 䠩 易 ⠪ ࠧ,   䠩 -
 Btrieve ࠩ,  易 䠩 - Clarion ࠩ,
    ஢ ࠭樨 LOGOUT.  -
樨   ஬ ⭮⥫쭮 楫⭮
 . ᫨  /㤠 ᭨ 
 稭,  䠩    ⠭  ᢮
ࢮ砫쭮 ﭨ.

<প ଠ>
প ଠ

࠭  㬮砭, ᮤঠ騩  CLARION.APP,  -
 ६ LOC:Message, 頥  孥 
࠭ .  ६ ନ 짮⥫  -
饩 樨:  (Add),  (Change) 
 (Delete) . 뢮 ᮮ饭 ࠭ 
CLARION.APP   ६ GLO:InsertMsg,
GLO:ChangeMsg  GLO:DeleteMsg.

  ᢮ ᮡ⢥ ᮮ饭   Procedure
Properties (⢠ 楤). ᫨  ।
(Prompt) ᮮ饭 ,   㤥 ᯮ짮
  祭, ࠭  .APP 䠩.

࠭  㬮砭   : Ok  Cancel.  
 室 蠡.

᫨  Pulldown ᮧ ଠ஬  Pulldown
(Pulldown Menu Formatter),    ᫥ -
 ࠭.  Pulldown 뢠 ᫥  -
  뢠  室  楤.

ଠ  (Report Formatter)  ন.

< >
 

<  Insert Message>
Insert Message
      ᮮ饭  ⠢ , ᯮ㥬 
     ᮮ饭  㬮砭, ࠭  Clarion.app.

<  Change Message>
Change Message
      ᮮ饭   , ᯮ㥬 
     ᮮ饭  㬮砭, ࠭  Clarion.app.

<  Delete Message>
Delete Message
      ᮮ饭  㤠 , ᯮ㥬 
     ᮮ饭  㬮砭, ࠭  Clarion.app.

<  Action after ADD>
Action after ADD
      ন ᪮쪮 ᯮᮡ  
     室  ࠭ FORM.   ⢨ ᫥
      (ADD):

     'Return to caller '  , 騩  -
     뢠 楤 ᫥  .

     'Retain Record '  , 騩 த
       ⪨    ࠭. 
     짮⥫ 롨ࠥ  "Ok", ᮤন  -
        䠩  짮⥫ 頥 -
       ࢮ   ࠭. ᫨  䠩 ।
       ⮢⠭ (Auto-increment),  
     ࠭, 頥 ᫥騩 ⮭, ⥬
      ⠭.

     'Clear Record '  , 騩 த
     ,    ⮬,   , -
     頥    ࠭.  짮⥫ 롨ࠥ
      "Ok", ࠭      짮-
     ⥫ 頥 ⭮  ࢮ   ࠭. -
       䠩 ।   ⮢⠭
     (Auto-increment),  頥 ᫥騩 ⮭ 
     ࠭ .

<  Copy field hotkey:>
Copy field hotkey:
      ।    'Retain_Record'. ᫨
     ࠭ 'Retain_Record'  'Copy field hotkey' ᮤন
     祭 祣 ,  蠡   
      ,   짮-
      㡫஢ ⤥  ।饩  ⮫쪮
       稩 .

      짮⥫   Ok,  ࠭ -
        頥  ࢮ . ᫨ 짮-
     ⥫  । 稩 ,  ᮤন
     ᢥ祭  ᪮  ᫥ 
     짮⥫ .

<  Next Procedure>
Next Procedure
      楤, 뢠  ⨨  Ok, 
     ⮣,   䠩   訡. 맮
     楤  ।    -
     饣 .

< 室 >
 室 

<  Data Section >
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure >
"Setup Procedure"
     室  ⠢ ᫥  CODE.

<  On Add After Record Buffer Is Cleared >
"On Add After Record Buffer Is Cleared"
     室  ⠢ ᫥ ⪨  
      ,  ࠧ । 㢥祭 㢥-
        樠樨   砫묨
     祭ﬨ.

<  Setup Screen >
"Setup Screen"
     室  ⠢ ᫥ OPEN(Screen).

<  Before File I/O >
"Before File I/O"
     室  ⠢ ࠧ ।   
      (ADD, PUT  DELETE).

<  Setup Next Procedure >
"Setup Next Procedure"
     ᫨ 뫠 । 'Next Procedure',   ⠢-
      । 맮 楤.

<  Return from Next Procedure >
"Return from Next Procedure"
     ᫨ 뫠 । 'Next Procedure',   ⠢-
      ᫥ 믮 楤.

<  After ADD on Retain or ClearRecord >
"After ADD on Retain or ClearRecord"
     室  ⠢ ᫥    ࠧ
     ।  㣮   "४ᨢ ०
     ".

<  End of Procedure >
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.   稭 
     ࢮ ⮫, ⮬  ᯮ짮   
     ᠭ  ணࠬ (ROUTINE),  뢠-
        㣮   .

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     室  頥   CASE SELECTED(), -
        ࠭  .

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     室  頥   CASE FIELD(), 믮-
        襭.

< >
  

<  SETUP >
SETUP
     塞  ᫮   "SETUP"   
        ࠧ  砫 楤 ।
     横 ࠡ⪨ ࠭ .

<  RETURN >
RETURN
     塞  ᫮   "RETURN"   
        ࠧ ࠧ । 室 
     楤,  짮⥫ 롨ࠥ  "Ok".

<  PRIMEKEY >
PRIMEKEY
     ᫮  塞    "PRIMEKEY"   -
        ࠧ । SET(Key,Key)  ६
     㢥稢饣 .   ᠬ ⠢
     אַ । ADD(File), ⮡ ।࠭ 
      .

       ᯮ짮  ⮢  ,
     ⮡  㬥஢ ⢠. ਬ, 
      ⮭㬥஢ ப 㭪⮢ . ᫨ -
     ।   ﬨ InvoiceNumber ( )
      LineItemNo ( ப 㭪),  㪠 ⥪騩
     InvoiceNumber   PRIMEKEY. ணࠬ -
     㬥樨 । ᫥騩 㯭 LineItemNo 
     ⮩ . , 塞  䠩 㦥 㤥
      InvoiceNumber  LineItemNo     
     ᪥.

<  No class (blank) >
No class (blank)
     㫠   ࠧ  襭 
       ࠭.  ᫥  । -
     ணࠬ ।஢ ,  孥  
     ࠡ⪨ .


<< Form21>>
< ଠ>

 "Form21" ᮧ 楤,  , 
 㤠   ࢨ筮 䠩 楤 (।-
  奬  (File Schematic)).  ଠ ࠡ⠥ ⠪ 
  ଠ ᨨ 2.1 ( CUA).   ᠬ 樨 
㯭  ६饭  襭 . ন
樨 :

  CtrlEsc -----------  (ࢠ)
  CtrlEnter --------- 
  Enter -------------    室 ( ᫥
                      )
  Esc ---------------   ।饥   
                      ( ࢮ )

  ᪮쪮  㢥稢饣 
 ஢ ᮢ ᪮쪨 memo .
࠭祭 ⭮⥫쭮 楫⭮ 뢠 ﭨ 
 ⭮襭 1: ࢨ筮 䠩.

祭 樠饣     
(Data Dictionary) ।⥫쭮 㦠  ६ -
 (ADD). ஢ઠ    ।
    뢠 ﭨ  ६ 
  (CHANGE). ᫨ ந室 室  , 
짮⥫ ।०  ⨬  , 
 頥     ।஢.

   GET  㯠  
䠩, ᫨ ⭮襭 ।  :1. ⮬-
 ஢ઠ   "Must be in File" (   䠩-
),     (Data Dictionary), 
 짮⥫   Ok. ᫨   
祭   㪠 䠩,  짮⥫ -
 ᮮ饭  ந室     . ᯮ-
 ப "When Field is Completed" ᫨  맢
楤 ஢ન.

᫨ ਫ ᯮ ࠧ塞 (SHARE) 䠩,  -
楤 ந 짮⥫ ஢ ᮢ
 ஢ . ᫨  䫨    -
 ࠡ稬 ⠭ﬨ, 騬      -
, 

  뢠  ᪠  ࠭ FORM .
짮⥫ ।०    頥 
 ० ।஢. ࠭ 짮⥫  -
   㣮 ࠡ祩 ⠭樥, 짮⥫
।०     頥  ०
।஢.

<  ⭮⥫쭠 ⭮>
᫨     (Data Dictionary) । -
࠭祭 ⭮襭 (Relational Constraints),  -
 , ࠭稢騩 ⭮襭 1:.  ࠭祭
⭮⥫쭮 楫⭮ 뢠 ﭨ  楤 -
筮 䠩,   ॢ ⭮襭 䠩  ᥬ -
騬 ஢.

<  ஢ ࠭ >
 ६ ⭮⥫쭮   ,  
ࢨ筮 䠩 頥 HOLD.   ࢨ筮 䠩
   ࠭樨, ⮡  㢥७,
 '  祣'   㤠. ᫨  
樨஢ LOGOUT,  짮⥫  蠭 -
   㤠.

<   ஢ ࠭ >
  䠩 ࠩ ন ࠡ ࠭権.
᫨ 䠩 ࠩ  ন  LOGOUT, 
  䠩     -
஢ ࠭樨. , ᫨ 易 䠩 ᯮ
᪮쪮 䠩 ࠩ஢,  ⭮⥫쭮 /
㤠   ᯮ짮  LOGOUT.
ਬ, ᫨ 䠩 易 ⠪ ࠧ,   䠩 -
 Btrieve ࠩ,  易 䠩 - Clarion ࠩ,
    ஢ ࠭樨 LOGOUT.  -
樨   ஬ ⭮⥫쭮 楫⭮
 . ᫨  /㤠 ᭨ 
 稭,  䠩    ⠭  ᢮
ࢮ砫쭮 ﭨ.

<প ଠ>
প ଠ

࠭  㬮砭, ᮤঠ騩  CLARION.APP,  -
 ६ LOC:Message, 頥  孥 
࠭ .  ६ ନ 짮⥫  -
饩 樨:  (Add),  (Change) 
 (Delete) . 뢮 ᮮ饭 ࠭ 
CLARION.APP   ६ GLO:InsertMsg,
GLO:ChangeMsg  GLO:DeleteMsg.

  ᢮ ᮡ⢥ ᮮ饭   Procedure
Properties (⢠ 楤). ᫨  ।
(Prompt) ᮮ饭 ,   㤥 ᯮ짮
  祭, ࠭  .APP 䠩.

࠭  㬮砭   : Ok  Cancel.

᫨  Pulldown ᮧ ଠ஬  Pulldown
(Pulldown Menu Formatter),    ᫥ -
 ࠭.  Pulldown 뢠 ᫥  -
  뢠  室  楤.

ଠ  (Report Formatter)  ন.

< >
 

<  Insert Message>
Insert Message
      ᮮ饭  ⠢ , ᯮ㥬 
     ᮮ饭  㬮砭, ࠭  Clarion.app.

<  Change Message>
Change Message
      ᮮ饭   , ᯮ㥬 
     ᮮ饭  㬮砭, ࠭  Clarion.app.

<  Delete Message>
Delete Message
      ᮮ饭  㤠 , ᯮ㥬 
     ᮮ饭  㬮砭, ࠭  Clarion.app.

<  Action after ADD>
Action after ADD
      ন ᪮쪮 ᯮᮡ  
     室  ࠭ FORM.   ⢨ ᫥
      (ADD):

     'Return to caller '  , 騩  -
     뢠 楤 ᫥  .

     'Retain Record '  , 騩 த
       ⪨    ࠭. 
     짮⥫ 롨ࠥ  "Ok", ᮤন  -
        䠩  짮⥫ 頥 -
       ࢮ   ࠭. ᫨  䠩 ।
       ⮢⠭ (Auto-increment),  
     ࠭, 頥 ᫥騩 ⮭, ⥬
      ⠭.

     'Clear Record '  , 騩 த
     ,    ⮬,   , -
     頥    ࠭.  짮⥫ 롨ࠥ
      "Ok", ࠭      짮-
     ⥫ 頥 ⭮  ࢮ   ࠭. -
       䠩 ।   ⮢⠭
     (Auto-increment),  頥 ᫥騩 ⮭ 
     ࠭ .

<  Copy field hotkey:>
Copy field hotkey:
      ।    'Retain_Record'. ᫨
     ࠭ 'Retain_Record'  'Copy field hotkey' ᮤন
     祭 祣 ,  蠡   
      ,   짮-
      㡫஢ ⤥  ।饩  ⮫쪮
       稩 .

      짮⥫   Ok,  ࠭ -
        頥  ࢮ . ᫨ 짮-
     ⥫  । 稩 ,  ᮤন
     ᢥ祭  ᪮  ᫥ 
     짮⥫ .

<  Next Procedure>
Next Procedure
      楤, 뢠  ⨨  Ok (
      "襭" ),  ⮣,   䠩-
        訡. 맮 楤 
     ।    饣 .


< 室 >
 室 

<  Data Section >
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure >
"Setup Procedure"
     室  ⠢ ᫥  CODE.

<  On Add After Record Buffer Is Cleared >
"On Add After Record Buffer Is Cleared"
     室  ⠢ ᫥ ⪨  
      ,  ࠧ । 㢥祭 㢥-
        樠樨   砫묨
     祭ﬨ.

<  Setup Screen >
"Setup Screen"
     室  ⠢ ᫥ OPEN(Screen).

<  Before File I/O >
"Before File I/O"
     室  ⠢ ࠧ ।   
      (ADD, PUT  DELETE).

<  Setup Next Procedure >
"Setup Next Procedure"
     ᫨ 뫠 । 'Next Procedure',   ⠢-
      । 맮 楤.

<  Return from Next Procedure >
"Return from Next Procedure"
     ᫨ 뫠 । 'Next Procedure',   ⠢-
      ᫥ 믮 楤.

<  After ADD on Retain or ClearRecord >
"After ADD on Retain or ClearRecord"
     室  ⠢ ᫥    ࠧ
     ।  㣮   "४ᨢ ०
     ".

<  End of Procedure >
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.   稭 
     ࢮ ⮫, ⮬  ᯮ짮   
     ᠭ  ணࠬ (ROUTINE),  뢠-
        㣮   .

< >
 

<  SETUP >
SETUP
     塞  ᫮   "SETUP"   
        ࠧ  砫 楤 ।
     横 ࠡ⪨ ࠭ .

<  RETURN >
RETURN
     塞  ᫮   "RETURN"   
        ࠧ ࠧ । 室 
     楤,  짮⥫ 롨ࠥ  "Ok".

<  PRIMEKEY >
PRIMEKEY
     ᫮  塞    "PRIMEKEY"   -
        ࠧ । SET(Key,Key)  ६
     㢥稢饣 .   ᠬ ⠢
     אַ । ADD(File), ⮡ ।࠭ 
      .

       ᯮ짮  ⮢  ,
     ⮡  㬥஢ ⢠. ਬ, 
      ⮭㬥஢ ப 㭪⮢ . ᫨ -
     ।   ﬨ InvoiceNumber ( )
      LineItemNo ( ப 㭪),  㪠 ⥪騩
     InvoiceNumber   PRIMEKEY. ணࠬ -
     㬥樨 । ᫥騩 㯭 LineItemNo 
     ⮩ . , 塞  䠩 㦥 㤥
      InvoiceNumber  LineItemNo     
     ᪥.

<  No class (blank) >
No class (blank)
     㫠   ࠧ  襭 
       ࠭.  ᫥  । -
     ணࠬ ।஢ ,  孥  
     ࠡ⪨ .


<< List>>
< ଠ>

 "List"  楤, ப稢 䠩 -
  ࠭   ⠡.  ⫨稥  蠡 Browse,
Lookup  Validate, 蠡 List 㦠  ࠭
  䠩   । 뢮 ᯨ᪠.

Queue  ᯨ᪠  ࠭ ᫥⥫쭮 祢
祭   㪠⥫,  ன ଠ 뢮
 ᯨ᮪. ⮬, ᯮ짮 蠡 List  祭 -
 䠩  맢  㠫쭮   -
९ ᪠. ⥫쭮 ᪮஢ 䠩   뢮.
 ⮩ 稭, 蠡 List  ᯮ짮 ⮫쪮 
 ⭮⥫쭮  䠩  ⭮⥫쭮 -
 権  䠩.

࠭  䠩   뢮  ⮫ ᯨ᪠.
⮫  騥  ᯨ᮪  ᬮ  
誨  ਧ⠫쭮  ப⪨  蠬 
 ࠢ ५.

ᢥ⪠ ᥣ 樮    ᯨ᪠.
 ५    । ᢥ. -
 ᢥ⪨  孥 ப    -
 뢮  ᯨ᮪  .  PGUP  PGDN 뢮-
  ᯨ᮪ ।  ᫥ ࠭ ᥩ.
CTRL-PGUP 뢮  ࠭ ᥩ  CTRL-PGDN 뢮-
 ᫥ ࠭ ᥩ. ⨥ ࠢ  
 孥  ᯨ᪠ ப稢     
 ᯨ᪠ - ப稢  .  ᯨ᪠ 
   ࠭ , ᫨  ᯮ
䨫   ᥫ .

 ᪥  (Field List),   ࠧ  
᫥  ᯨ᪠. 롮  LIST  ।饣 
뢮  ࠭ ᥩ.  "Insert", "Change"
 "Delete",   㣨 , ࠡ뢠騥 ᢥ-
祭   室 ᫥  LIST  ᪥
.

    ᬮ 䠩  筮 ᫥-
⥫쭮 (Record order).  ० ᥣ  
ᬮ ASCII 䠩.   ASCII, BASIC  DOS 䠩
 । ࠭祭,   㧭 ⥬
 䠩  ⪨ ᯮ짮 蠡 List 
Update-楤ன. ( View   ᬮ
ASCII 䠩). ᫨  ࠭,   뫪  ࢨ-
   楤ன.

஬ ⮣,    ᬮ  ⭮ 浪.
  Record Order  ࠭,  Reverse Order
㤥 뢮 䠩  ⭮ 祢 浪. ᫨ 
樨 -  Record Order,  Reverse Order - 祭,  䠩
뢮  ⭮ 浪.

᫥⥫쭮  "⮫쪮  뢮"  㪠
 ࠭  "稥 ". 稥  뢮 祭
 ᢥ祭    ,  , 
ᢥ⪠ ६頥.   뢮  ᢥ祭-
  ଠ樨 , 祬  ப  ᯨ᪥.
稥    ᫥⥫쭮  ᪥ 
(Field List),   ࠭   ࠧ  㣮.

<প ଠ>
প ଠ

楤 "List"  CLARION.APP ।⥫쭮 㦠 
஥⮬ ࠭, ᮤঠ騬 ᯨ᮪   "Insert",
"Change", "Delete"  "Exit". ⪠  ᯨ᪠  
"?List".

 ਧ⠫쭮 ப⪨  ⪫, ᫨ -
㥬 ଠ 頥  ᯨ᮪.  ⨪쭮
ப⪨ ⠪ 易⥫쭠.  ⠫ ᢮⢠ ᯨ-
  .

 ᯨ᪥  ப稢   易 䠩 
"ᮥ".   ⮬᪨ ⮢, ᫨
ࢨ   䠩 易  奬  (File
Schematic) ⭮襭 "  1".

 "Insert", "Change"  "Delete" 뢠 update--
  ࠡ⪨ ᢥ祭  (update-楤
筮 ᮧ  蠡 "Form").  楤 
 "Update Procedure". ᫨  Update-楤,  
  㤠. ᫨    㤠  
 Update-楤,   INSERT, ENTER  DELETE -
 ⠢,   㤠  ࠭ ᯨ᮪. -
, ᫨ 㤠 ⮫쪮       (Insert,
Change  Delete),   㤠  Update-楤
뢠  㤥.  "Exit" 㤠 .

   । ன ࠭. ᫨
ᮧ pulldown    ଠ  pulldown
(Pulldown Menu Formatter),    ᫥ ࠭
.   ᯥ稢 ⨥  ⨥ 
pulldown.       
. ଠ  (Report Formatter)  ন.

< >
 

<  Range Limit Field:>
Range Limit Field:
      뢮 ᥩ   ࠭祭 䨪-
     ஢ 祭   㯠 ࢨ筮
     (primary) 䠩. ਬ, ப  (invoice) -
       ࠭祭  .  䠩  -
       ᥡ ITM:Invoice  ITM:Line, ᮤঠ騥  -
        ப .

     ITM:Invoice   Range Limit Field, 뢮饩 
     ⮫쪮  䨪஢  .

<  Range Value Field>
Range Value Field:
     Range Value Field -  , ᮤঠ饥 祭, ᯮ-
     㥬  ࠭稢饥 祭 ⠢ . -
     ⠢  㤥 ᢮  祭.

      襬 砥, ⥪    ᮤঠ
      ,   . INV:Number 
      Range Value Field, ᮤঠ騬 祭  Range
     Limit Field. Range Value Field    ⥬  -
     ,   Range Limit Field.

<  Record Filter:>
Record Filter:
      2 ᯮᮡ  䨫 :

     ᮡ #1.
      ᯮ짮   (Formula Generator)
         'FILTER',  ஢ન 
     ࠦ.

     ᮡ #2.
      ࠦ 䨫    .  
       ஢ - ୮ ࠦ 뢠 訡
     樨. ,      Clarion 
     ᯮ짮  .

<  Update Procedure:>
Update Procedure:
       update-楤, ᯮ㥬  ⠢,
        ᥩ. ᫨   update-
     楤,   "Insert", "Change"  "Delete" -
      㤠  ஥ ࠭.

      ॡ ᯥ樠 ਥ  ᯮ짮-
      䠩 ࠩ஢ ASCII, DOS  BASIC.  
       ࠧ襭 樨 PUT  DELETE. 
     㬥  䠩 ࠩࠬ.

<  First Hot Field:>
First Hot Field:
     稥  -  ᫥⥫쭮  "⮫쪮
      뢮",  뢠 ᮤন ᢥ祭-
      .   ᯮ ᫥⥫쭮 
     ᪥  (Field List).

       ࢮ 祣 .

<  Last Hot Field:>
Last Hot Field:
       ᫥ 祣 .

<  Enable Hot Records >
[] Enable Hot Records
     祭  ᥩ ணࠬ 砥 
     ஫   ६饭  ᯨ᪥  Browse manager.
      祭 樥,  ६饭 ᢥ⪨ 뢠
     ᫥騥 ⢨: 㦠 ᢥ祭   ,
     ᮥ   䠩, 易  :1,
        㫠  믮  -
      室 ,  १  'Process Selected
     Record' ('ࠡ⪠ ࠭ ').

<  Queue Rebuild>
[] Queue Rebuild
       ⠢ ࠨ QUEUE ᫥  -
      update-楤.   ᯮ짮 ࠧ-
     塞 䠩   맮  (form)  
     ᪮쪨 졠.

<  Record Order >
[] Record Order
     롮 ⮩ 樨 ⠢ 蠡 ஢  -
       .     

     - Access Key ( 㯠)  File Schematic (奬 )
       㤥 ந஢.
     - Range Limits (। )   ᯮ짮.

       뫠 ᮧ  ᬮ 䠩  ଠ ASCII,
     DOS  BASIC.

<  Reverse Order>
[] Reverse Order
       뢠 Queue  ⭮ 浪.  
      롮 ᥩ  ⭮ 浪   䠩,
       ন 㬥騥 (descending) .

<  Progress Indicator>
[] Progress Indicator
     롮 樨 Progress Indicator 㤥 뢮 ६-
       ࠭   ⮬ 浪,  ஬  -
       QUEUE. ⪠ 뢮  ६  
     StatusLine,  ।⥫쭮 㦠  䠩 -
       㬮砭.  ப ⠪  㬮砭 -
       ࠭  蠡 List   室  -
      ᫥ ᯨ᪠.

<  Progress Character:>
Progress Character:
       ᨬ ASCII, ᯮ㥬  '⪠'. 
     ⮩ ᯮᮡ  ASCII ᨬ - ᯮ짮 祭
     ASCII,   ⠡ ASCII १  Tools. 祭
     ASCII   祭  㣫 ᪮   
     窨.  ਫ  㬮砭 ।⥫쭮 -
       ⥭ ᨬ ⪨ '<176>'.

< 室 >
 室 

<  Data Section>
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure >
"Setup Procedure"
     室  ⠢ ᫥  CODE.

<  Setup Screen>
"Setup Screen"
     室  ⠢ ᫥  OPEN(Screen).

<  Setup Pulldown>
"Setup Pulldown"
     室  ⠢ ᫥  OPEN(PullDown).

<  LIST Class Formula>
"LIST Class Formula"
     室  ⠢ ᫥ 樨  
     LIST.    室   ᯮ짮
        LIST.   ⠭ 
     , 뢮  ப稢 ᯨ᪥.

<  End of General Formulas>
"End of General Formulas"
      ࠡ⪥ ࠭ ,  ᣥ஢ 
      騥  'FILTER'  'LIST'.    -
     室    ᫥  ࠭ -
      뢮  ᯮ짮 ଠ .

<  End of Procedure>
"End of Procedure"
      饭    믮 ᫥ 믮
     ᥣ ⠫쭮  楤.   稭 
     ࢮ ⮫, ⮬  ᯮ짮   
     ᠭ  ணࠬ (ROUTINE),  뢠-
        㣮   .

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     室  頥   CASE SELECTED(), -
        ࠭  .

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     室  頥   CASE FIELD(), 믮-
        襭.

< >
  

<  FILTER>
FILTER
     ᫮ 㫠  "FILTER", ᮧ ଠ஬
      (Formula Formatter), ᯮ  롮 -
      ᥩ. ᫨ ᫮ 㫠  
      (false)   ,    뢮.

<  LIST >
LIST
     ᫮  塞   ᮬ  "LIST"
     ᯮ   祭,   뢮
      ᯨ᪥   ⮫쪮  ᮧ  ᯨ᪠.

<  No class (blank)>
No class (blank)
     㫠   ࠧ  襭 
       ࠭.  ᫥  । -
     ணࠬ ।஢ ,  孥  横
     ࠡ⪨ .


<< Lookup>>
< ଠ>

 "Lookup"  楤,  㤥 믮
஢  . 楤  뢠  When Field
is Selected Procedure (楤   ࠭)  ஢-
  .    ࠭, 楤 Lookup -
  ஢ન ⢮ 祭 ⥪饣   -
 . ᫨ ᮢ  ,   ࠭
 ᯨ᪮, 騬 짮⥫ ᤥ ࠢ 롮.

࠭  䠩   뢮  ⮫ ᯨ᪠.
⮫  騥  ᯨ᮪  ᬮ  
誨  ਧ⠫쭮  ப⪨  蠬 
 ࠢ ५.

ᢥ⪠ ᥣ 樮    ᯨ᪠.
 ५    । ᢥ. -
 ᢥ⪨  孥 ப    -
 뢮  ᯨ᮪  .  PGUP  PGDN 뢮-
  ᯨ᮪ ।  ᫥ ࠭ ᥩ.
CTRL-PGUP 뢮  ࠭ ᥩ  CTRL-PGDN 뢮-
 ᫥ ࠭ ᥩ. ⨥ ࠢ  
 孥  ᯨ᪠ ப稢     
 ᯨ᪠ - ப稢  .  ENTER  
⨥   롨 ᢥ祭   
楤.

 Lookup ᯮ   饭 ࠭ -
祭   ,  ண  맮  ஢ન. 
ࠧ, ᫨ ஢ ᫮ ,  ०  ⮣
 㤥 INSERT.      ࠢ쭮
祭  .

 "Select", "Insert"  "Change",   㣨 ,
ࠡ뢠騥 ᢥ祭 ,  室 ᫥ -
 LIST  ᪥  (Field List).

易⥫쭮   室    䠩.
⨥  㪢,  ⨢  LIST, 롨ࠥ  -
. 襭   襩 TAB   
뢮  ᮢ   孥 ப ᯨ᪠.
㣠  - "㢥稢騩 ",   -
ᥪ㭤 প  짮⥫᪮    ,
 ⥬ ⮬᪨   , ᮢ  -
ন  .  ६ ⮣  ⨢ -
 backspace.  ᫮ ⨯  ४ ᯮ-
 ப 蠡 ( 뢮).    ४-
  㢥稢饣 .

᫥⥫쭮  "⮫쪮  뢮"  㪠
 ࠭  "稥 ". 稥  뢮 祭
 ᢥ祭    ,  , 
ᢥ⪠ ६頥.   뢮  ᢥ祭-
  ଠ樨 , 祬  ப  ᯨ᪥.
稥    ᫥⥫쭮  ᪥ 
(Field List),   ࠭   ࠧ  㣮.

 ।   SUM  AVG, ⮬᪨
砥    ⮣.

<প ଠ>
প ଠ

楤 "Lookup"  CLARION.APP ।⥫쭮 㦠 
஥⮬ ࠭, ᮤঠ騬 ᯨ᮪   "Insert",
"Change", "Delete"  "Exit". ⪠  ᯨ᪠  
"?List"  ਡ "Immediate"   祭. 
ਧ⠫쭮 ப⪨  ⪫, ᫨ ॡ㥬
ଠ 頥  ᯨ᮪.  ⠫ ᢮⢠ ᯨ-
  .

 ᯨ᪥  ப稢   易 䠩 
"ᮥ".   ⮬᪨ ⮢, ᫨
ࢨ   䠩 易  奬  (File
Schematic) ⭮襭 "  1". ⭮襭 "1  "
 ন ⮩ 楤ன 蠡.

 "Insert", "Change"  "Delete" 뢠 update--
  ࠡ⪨ ᢥ祭  (update-楤
筮 ᮧ  蠡 "Form").  楤 
 "Update Procedure". ᫨  Update-楤,  
  㤠.  ENTER   ⨥ -
 ,  宦  ᯨ᪥, 롨 ᢥ祭 -
   祭   .  "Exit" 㤠
.

   । ன ࠭. ᫨
ᮧ pulldown    ଠ  pulldown
(Pulldown Menu Formatter),    ᫥ ࠭
.   ᯥ稢 ⨥  ⨥ 
pulldown.       
.

< >
 

<  Range Limit Field: >
Range Limit Field:
      뢮 ᥩ   ࠭祭 䨪-
     ஢ 祭   㯠 ࢨ筮
     (primary) 䠩. ਬ, ப  (invoice) -
       ࠭祭  .  䠩  -
       ᥡ ITM:Invoice  ITM:Line, ᮤঠ騥  -
        ப .

     ITM:Invoice   Range Limit Field, 뢮饩 
     ⮫쪮  䨪஢  .

<  Range Value Field: >
Range Value Field:
     Range Value Field -  , ᮤঠ饥 祭, ᯮ-
     㥬  ࠭稢饥 祭 ⠢ . -
     ⠢  㤥 ᢮  祭.

      襬 砥, ⥪    ᮤঠ
      ,   . INV:Number 
      Range Value Field, ᮤঠ騬 祭  Range
     Limit Field. Range Value Field    ⥬  -
     ,   Range Limit Field.

<  Record Filter:>
Record Filter:
      2 ᯮᮡ  䨫 :

     ᮡ #1.
      ᯮ짮   (Formula Generator)
         'FILTER',  ஢ન 
     ࠦ.

     ᮡ #2.
      ࠦ 䨫    .  
       ஢ - ୮ ࠦ 뢠 訡
     樨. ,      Clarion 
     ᯮ짮  .

<  Lookup Field: >
Lookup Field:
       , ᯮ㥬  ஢ન ⢮ 
     .     ⮫쪮  ⭮
     㭨쭮 .

<  Input Field Picture: >
Input Field Picture:
        뢮  ࠭  ⮬ ଠ,  -
     ஬  室  䠩 (  ).    
     室   (Input Field Picture) ⮡ -
        ஢ન   ࠭ 
      뢮  ࠭.

      蠡 ⮡    ஢ન. 
     蠡 ⠪ ᯮ   ,  -
             , 
      롨ࠥ  ᯨ᪠ 楤.

     ਬ ,   室 室  :

      STRING, CSTRING  PSTRING  । -
      ࠭ (ਬ, @N6v2).

      ᫮   (LONG, DATE, USHORT  ..) 
     ⠬ (@D1, @D2  ..)  ६ (@T1, @T2  ..).

      ᫮   (REAL, BFLOAT  ..)  -
       (ਬ, @N6.2).

<  Locator Field: >
Locator Field:
       -  ࠭  , ஥ -
        㯠 ࢨ筮 䠩. ᫥
       ,  ᯨ᪥ 뢮  ᮢ-
      .

     ਬ, ப⪠ 䠩 த殢  ᫥⥫쭮-
       த殢, ᯮ , ᮤঠ騩  -
      த (VND:Name). ⮡ ᮧ   
      த,    VND:Name  ࠭
     ᫥ ᯨ᪠,  㪠 VND:Name   .

      짮⥫   ᨬ  ,
     롨ࠥ    . ⨥  TAB
     樮 ᢥ  襥 ᮢ.

     㣠  - "㢥稢騩 ".  蠡
       ᥪ㭤 প, ⮡ 짮⥫
       㪢   .   㧥 
     -ᥪ㭤, ᮤন  ᯮ  ६-
     饭  襥 ᮢ ( TAB  
     㦭).  ६ ⮣  ⨢  Backspace,
      믮  .

<  Incremental Locator  >
[] Incremental Locator
     롥   ⮡ 㪠,    㤥
     ⢮  㢥稢騩 .

<  Display Key: >
Display Key:
     ᫨   ᯮ  ஢ન  , 
     㣮  ᯮ   뢮,   
       뢮. , ⠢   .

<  Update Procedure: >
Update Procedure:
       update-楤, ᯮ㥬  ⠢,
        ᥩ. ᫨   update-
     楤,   "Insert", "Change"  "Delete" -
      㤠  ஥ ࠭.

<  First Hot Field: >
First Hot Field:
     稥  -  ᫥⥫쭮  "⮫쪮
      뢮",  뢠 ᮤন ᢥ祭-
      .   ᯮ ᫥⥫쭮 
     ᪥  (Field List).

       ࢮ 祣 .

<  Last Hot Field:>
Last Hot Field:
       ᫥ 祣 .

<  Enable Hot Records >
[] Enable Hot Records
     祭  ᥩ ணࠬ 砥 
     ஫   ६饭  ᯨ᪥  Browse manager.
      祭 樥,  ६饭 ᢥ⪨ 뢠
     ᫥騥 ⢨: 㦠 ᢥ祭   ,
     ᮥ   䠩, 易  :1,
        㫠  믮  -
      室 ,  १  'Process Selected
     Record' ('ࠡ⪠ ࠭ ').

< 室 >
 室 

<  Data Section >
"Data Section"
     室  頥  ᥪ  ᫥ 
     ,  ࠭  pulldown-.  ᯮ짮
      '  ,   ᯮ짮
     ⮫쪮   室 .

<  Setup Procedure >
"Setup Procedure"
     室  ⠢ ᫥  CODE.

<  Setup Screen>
"Setup Screen"
     室  ⠢ ᫥  OPEN(Screen).

<  Setup Pulldown>
"Setup Pulldown"
     室  ⠢ ᫥  OPEN(PullDown).

<  Set to First Record Before Total Loop>
"Set to First Record Before Total Loop"
     室  ⠢ ᫥ SET(key,key)  ।
      (Range limits), । 横 ᫥ ⮣.

<  Inside Total Loop, Immediately after NEXT>
"Inside Total Loop, Immediately after NEXT"
     室  ⠢ ࠧ ᫥ 뢠 
       横 ᫥ ⮣.

<  Inside Total Loop after Filter>
"Inside Total Loop after Filter"
     After each record is read and filter conditions are evaluated
     in the total calculation LOOP.

<  After Total Field Loop>
"After Total Field Loop"
     After all totals have been calculated.

<  LIST Class Formula>
"LIST Class Formula"
     After generation of LIST class formulas.  This embedded code
     window may be used instead of LIST class formulas.  This will
     allow setting up any fields which are displayed within the
     scrolling listbox.

<  End of General Formulas>
"End of General Formulas"
     When processing a screen field, the formulas which do not
     have a class of 'FILTER' of 'LIST' will be generated.  This
     embedded source window allows the entry of computations for
     screen display fields without the use of the formula
     formatter.

<  Case of No Records Found>
"Case of No Records Found"
     When no records are found to display.

<  After Filter and Range Check>
"After Filter and Range Check"
     After any record filter or Range limits are evaluated.

<  Set to First Record>
"Set to First Record"
     When using Range Limits, a SET statement is issued to locate
     the first record. This embedded source code window appears
     just after the SET statement and allows you to override the
     SET.

<  Set to Last Record>
"Set to Last Record"
     When using Range Limits, a SET statement is used to locate
     the closest match to the last record.  This embedded source
     code window appears just after the SET statement and allows
     you to override the SET.

<  Process Selected Record>
"Process Selected Record"
     When Enable Hot Records has been checked, code within this
     embedded source window will be executed upon movement of the
     point bar.  The record under the point bar will be retrieved
     into memory, any many to one secondary file records will be
     retrieved and any general formulas will be computed just
     prior to the insertion of this embedded source code.

<  End of Procedure>
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  Prior to Update Procedure>
"Prior to Update Procedure"
     Immediately before the Update Procedure is called.

<  After Update Procedure>
"After Update Procedure"
     Immediately after return from the Update Procedure.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  LIST >
LIST
     A Conditional or Computed Field with "LIST" in the Formula
     Class field is used for those values which will be displayed
     in the list box and are only evaluated when the list box item
     is created.

<  SUM >
SUM
     A Computed Field with "SUM" in the Formula Class field
     calculates the total of the values contained in the field
     named in the Expression.  A Conditional Field with "SUM" in
     the Formula Class field conditionally calculates the total of
     the values contained in the fields named in the True and
     False Expressions.

<  AVG >
AVG
     A Computed Field with "AVG" in the Formula Class field
     calculates the arithmetic mean of the field named in the
     Expression.  A Conditional Field with "AVG" in the Formula
     Class field conditionally calculates the arithmetic mean of
     the fields named in the True and False Expressions.  In both
     cases, the total value is calculated, then divided by the
     number of records read to achieve that total.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the screen is
     completed.  The calculation code is generated before the
     field setup routines at the top of the processing LOOP.


<<The MemForm21 Template>>
<General Information>

The "MemForm21" template generates a procedure that processes a
screen created with the Screen Formatter.  The "MemForm21"
template is similar to a verion 2.1 "Form procedure using the
MEMORY file".   Therefore, it does not automatically write any
record to disk.  It  supports the (non-CUA) version 2.1
keystrokes:

  CtrlEsc ----------- Cancel
  CtrlEnter --------- Done
  Enter ------------- Field complete or Done (on last field)
  Esc --------------- Field return or Cancel (on first field)

<Formatter Support>
Formatter Support

The "MemForm21" procedure in CLARION.APP is pre-loaded with an
empty screen layout.  Local data is generated before the screen
structure.  If a pulldown structure has been created by the
Pulldown Menu Formatter, it is generated after the screen
structure.  The template makes no provision for opening or
closing a pulldown menu, or any files.  Such statements must be
entered as embedded source.  Statements from the Formula
Formatter  are generated at the top of the keyboard loop before
the field setup routines.  The Report Formatter is not
supported.

<Property Fields>
Property Fields

<  Next Procedure>
Next Procedure
     Enter the Procedure to call when the Ok button is pressed (or
     the screen has been "completed").

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure, after local data and
     the report structure.  This may be used to declare any data
     which you may want to use only in your embedded source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Screen >
"Setup Screen"
After OPEN(Screen).

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  SETUP >
SETUP
     A 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.

<  RETURN >
RETURN
     A Conditional or Computed Field with "RETURN" in the Formula
     Class field is calculated once just before the return from
     the procedure when the user selects the 'Ok' button.

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

     This can be used to prime key components to enable subset
     numbering. For example, it can be used to cause autonumbering
     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 AutoNumber
     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.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the screen is
     completed.  The calculation code is generated before the
     field setup routines at the top of the processing LOOP.


<<The Menu Template>>
<General Information>

The "Menu" template generates a procedure that displays a pop-up
menu used to execute other procedures.  Menu items are placed on
screen as BUTTON in the Screen Formatter.  The procedure
associated with each button must be its When Button is Pressed
Procedure.  At least one button field should have a "RETURN"
procedure call to exit the "Menu" procedure.

Other fields can be placed on the screen.  However, this
template makes no provision for accessing or updating data
files.

<Formatter Support>
Formatter Support

The "Menu" procedure in CLARION.APP is preloaded with a screen
layout containing a pushbutton named "Exit".  The "Exit"
pushbutton calls the "RETURN" procedure.  The "Exit" pushbutton
can be renamed, but if it is deleted, some other provision must
be made to return from the procedure.

Local data is generated before the screen structure.  If a
pulldown menu has been created by the Pulldown Menu Formatter,
it is generated after the screen structure.  However, the "Menu"
template makes no provision for opening or closing a pulldown
menu.  Such statements must be entered as embedded source.

The Report Formatter is not supported.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Screen >
"Setup Screen"
     After OPEN(Screen).

<  Top of Accept Loop>
"Top of Accept Loop"
     Immediately after the LOOP statement which processes each
     screen field.

<  End of Procedure>
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

No formula classes are supported by this procedure Template.
All statements from the Formula Formatter are generated at the
top of the keyboard loop before the field setup routines.


<<The Menu21 Template>>
<General Information>

The "Menu21" template generates a procedure that displays a
pop-up menu used to execute other procedures.  This is provided
for conversion of version 2.1 Menu Procedures.  The difference
between the "Menu" and "Menu21" procedure Templates are their
handling of the Esc and CtrlEsc keys.

Menu items are placed on screen as BUTTON fields in the Screen
Formatter.  The procedure associated with each button must be
its When Button is Pressed Procedure.

Other fields can be placed on the screen.  However, this
template makes no provision for accessing or updating data
files.

<Formatter Support>
Formatter Support

The "Menu21" procedure in CLARION.APP is preloaded with a screen
layout containing a pushbutton named "Exit".  The "Exit"
pushbutton calls the "RETURN" procedure.  The "Exit" pushbutton
can be renamed.

Local data is generated before the screen structure.  If a
pulldown menu has been created by the Pulldown Menu Formatter,
it is generated after the screen structure.  However, the "Menu"
template makes no provision for opening or closing a pulldown
menu.  Such statements must be entered as embedded source.

The Report Formatter is not supported.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Screen >
"Setup Screen"
     After OPEN(Screen).

<  Computed Fields>
"Computed Fields"
     Immediately after the any Formulas are calculated.

<  End of Procedure>
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  RETURN >
RETURN
     A Conditional or Computed Field with "RETURN" in the
     Formula Class field is calculated just before the
     return from the procedure when the user exits the
     procedure.

<  Blank (no class)>
Blank (no class)
     All formulas are generated at the top of the keyboard
     loop before the field setup routines.


<<The MultiPage Template>>
<General Information>

The "MultiPage" template is designed to work in conjunction with
the "PageOf" procedure template.  The "MultiPage" template
generates a procedure that will ADD, CHANGE or DELETE a
record from the procedures Primary data file.  The template
allows for multiple auto-increment key fields and
concurrency checks of multiple memo fields.  Relational
integrity constraints are enforced from the Primary file
down its relational tree, for all 1:MANY relationships.

The MultiPage and the PageOf templates are designed to work
together.  All file I/O is done by the MultiPage procedure.
Access to the PageOf procedures is handled thru MultiPage.  The
PageOf procedures are expected to use the same data file as the
MultiPage procedure. MultiPage passes each PageOf procedure
the (4) following parameters: the current Action (Add /
Change / Delete / Check_Required), the current Page number,
the total number of Pages, and the Message describing the
current update.

Ŀ
  MultiPage   ( First page of a multi-page data entry form )

                Any 'PageOf' can be accessed directly from
                MultiPage by pressing the Alt key and the
                corresponding page number. Pressing the
                PageDown key from any page access the next
                available page. Pressing PageDown on the Last
                Page wraps around to the main (MultiPage) page.
   
   PageOf  (the page 2 procedure)
   PageOf  (the page 3 procedure)
   PageOf  (the page 4 procedure)
   PageOf  (the page 5 procedure)
   PageOf  (the page 6 procedure)
   PageOf  (the page 7 procedure)
   PageOf  (the page 8 procedure)
   PageOf  (the page 9 procedure)

The template supports up to eight (8) additional pages.
The PageOf procedure calls are all entered on the MultiPage
template's Procedure Properties window. Procedures named in
the Page prompts must use the "PageOf" procedure template.

At runtime the generated procedure tracks which "PageOf"
procedures have been called. When the user presses 'Ok'
any "PageOf" procedure which has not yet been accessed by
the user, will be called in order to check for 'Required'
fields. The PageOf procedure is called and immediately
placed in nonstop edit mode. If a required field has been
left blank, the user is notified and placed in edit mode.

Initial field values from the data dictionary are
pre-loaded during an ADD.  Range checking is generated from
the data dictionary definitions and is enforced during ADD
or CHANGE.  If an out of range condition exists the user is
notified of the valid range for the field, and the cursor is
placed on that field for editing.

The template generates lookups for accessing secondary files
where the relationship is defined as MANY:1.

The "Must be in File" automatic field validation is
enforced when the user selects OK.  If the value entered
does not exist in the specified file the user is notified
and is placed back on the field.

If the application is set to SHARE files, the procedure
enforces multi-user concurrency checking at the record
level.  If a conflict arises from two or more workstations
attempting to update the same record, the user's Screen is
refreshed with the record as changed by the other
workstation, the user is notified of the change, and placed
back in edit mode.

<  Referential Integrity>
If Relational Constraints have been defined in the Data
Dictionary, code is generated to enforce the Constraint on
1:MANY relationships. All Referential Integrity Constraints
are enforced from the Primary file for the procedure, down
its Relational File Tree for as many levels as exist.

<  Transaction Framing >
During a relational Change or Delete a HOLD is placed on
the Primary file record.  All child files of the Primary
file are updated within a transaction frame to ensure an
'all or nothing' update or delete.  If LOGOUT cannot be
initiated, the user is given a chance to retry the update or
delete.

<  No Transaction Framing >
Not all file drivers support transaction processing. If the file
driver does not support the LOGOUT statement, code is generated
to update the files without the benefit of a transaction frame.
Also, if the files in the Relationship use multiple file drivers,
the referential update/delete cannot use the LOGOUT statement.
For example, if a file relationship is defined with one file
using the Btrieve driver and the related file using the Clarion
driver, code is generated without a LOGOUT transaction frame.
Either situation has the potential to compromise the referential
integrity of your database.  If the update/delete fails for
any reason, your files cannot be restored to their original
state.

<Formatter Support>
Formatter Support

The default screen contained in CLARION.APP has a local
variable named LOC:Message placed at the top of the entry
screen. This variable is used to inform the user of the
current action: Add, Change, or Delete of the record on the
screen.  The message displayed is stored in CLARION.APP in
the global variables GLO:InsertMsg, GLO:ChangeMsg, and
GLO:DeleteMsg respectively.

The programmer can enter his own messages on the Procedure
Properties window. If any Prompt for a message is filled
in, it will be used instead of the global values stored in
the default .APP file.

The default screen also has two local variables for page
number display; LOC:Page and LOC:Pages. These variables
are used to display the current page (LOC:Page), and the
total number of pages (LOC:Pages).

The template places an ALRT attribute for the Alt-# key for
each procedure named in the Page prompts.  Each page
procedure cam be called by pressing Alt and the "Page's
Procedure number" key. For example, Alt2 calls the Page2
procedure, Alt3 the Page3 procedure, and so on.

The default screen has three buttons; Ok, Cancel and
Next_Page. All three fields are required by the template.

<Property Fields>
Property Fields

<  Insert Message>
Insert Message
     Enter a message to use instead of the default stored
     in Clarion.app for Inserting a record.

<  Change Message>
Change Message
     Enter a message to use instead of the default stored
     in Clarion.app for Changing a record.

<  Delete Message>
Delete Message
     Enter a message to use instead of the default stored
     in Clarion.app for Deleting a record.

<  # Page Procedure>
# Page Procedure
     There are eight (8) Prompts for additional pages. They
     are called in their numerical order, for instance the
     '2nd Page Procedure' is called when the user presses
     either the Next_Page button, the Page Down key, or the
     Alt2 key. Name your additional Page procedure calls
     in these prompts.  These must be filled in
     consecutively -- you must not leave any "holes" in the
     list of "PageOf" procedure calls.

<  Next Procedure>
Next Procedure
     Enter the Procedure to call when the Ok button is
     pressed, AFTER the file's update has completed without
     any errors. The Next Procedure call is generated before
     the code for any Repeated ADDs.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures. This may be used to
     declare any data which you may want to use only in your
     embedded source code.

<  Setup Procedure >
"Setup Procedure"
     Source code is inserted after the CODE statement.

<  Setup Screen >
"Setup Screen"
     After OPEN(Screen).

<  Setup Next Procedure >
"Setup Next Procedure"
     If a 'Next Procedure' was defined, code is inserted
     before the procedure is called.

<  Return from Next Procedure >
"Return from Next Procedure"
     If a 'Next Procedure' was defined, code is inserted
     after the procedure is executed.

<  Ok Button Press >
"Ok Button Press"
     Code is inserted to execute as soon as the "Ok" button is
     pressed, before going into non-stop mode.

<  Next Page Button Press >
"Next Page Button Press"
     Code is inserted to execute as soon as the "Next_Page"
     button is pressed, before going accessing the next
     page.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other
     code in the procedure has executed.  This code begins
     in column one, therefore you may use this window to
     write any ROUTINEs which are called from any other
     embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the
     field is selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field
     has been completed.

<Formula Classes>
Formula Classes

<  SETUP >
SETUP
     A 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.

<  RETURN >
RETURN
     A Conditional or Computed Field with "RETURN" in the
     Formula Class field is calculated once just before the
     return from the procedure when the user selects the
     'Ok' button.

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

     This can be used to prime key components to enable
     subset numbering. For example, it can be used to cause
     autonumbering 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 AutoNumber 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.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the
     screen is completed.  The calculation code is generated
     before the field setup routines at the top of the
     processing LOOP.


<<The PageOf Template>>
<General Information>

The "PageOf" procedure template is designed to work
together with the MultiPage template. PageOf is subordinate
to MultiPage.  The PageOf procedure has no facility to
update a record on disk.  All file updates are handled by
the MultiPage template procedure.

A PageOf procedure's prototype in the MAP looks like:

     ProcName(BYTE,*BYTE,BYTE,STRING)

The parameters passed from the MultiPage procedure are:

     (Action,Page,Pages,Message)

The PageOf procedures are expected to use the same data
file as the MultiPage procedure.  MultiPage passes each
PageOf procedure the (4) following parameters: the current
Action (Add / Change / Delete / Check_Required), the current
Page number, the total number of Pages, and the Message
describing the current update.

At runtime the MultiPage procedure tracks which "PageOf"
procedures have been called. When the user presses 'Ok'
any "PageOf" procedure which has not yet been accessed by
the user will be called in order to check for 'Required'
fields. The PageOf procedure is called and immediately
placed in nonstop edit mode. If a required field has been
left blank, the user is notified and placed in edit mode.

Initial field values from the data dictionary are
pre-loaded during an ADD.  Range checking is generated from
the data dictionary definitions and is enforced during ADD
or CHANGE.  If an out of range condition exists the user is
notified of the valid range for the field, and the cursor
is placed on that field for editing.

The template will generate lookups for accessing secondary
files where the relationship is defined as MANY:1.  The
"Must be in File" automatic field validation is enforced
when the user selects 'OK'.  If the value entered does not
exist in the specified file the user is notified and is
placed back on the field.

If the application is set to SHARE files the MultiPage
procedure enforces multi-user concurrency checking at the
record level.

If Relational Constraints have been defined in the Data
Dictionary, the code generated from the MultiPage template
enforces those constraints.

<Formatter Support>
Formatter Support

The default screen contained in CLARION.APP has a local
variable named LOC:Message placed at the top of the entry
screen. This variable is used to inform the user of the
current action: Add, Change, or Delete of the record on the
screen.  The message displayed is stored in CLARION.APP in
the global variables GLO:InsertMsg, GLO:ChangeMsg, and
GLO:DeleteMsg respectively.

The programmer can enter his own messages on the Procedure
Properties window. If any Prompt for a message is filled
in, it will be used instead of the global values stored in
the default .APP file.

The default screen also has two local variables for page
number display; LOC:Page and LOC:Pages. These variables
are used to display the current page (LOC:Page), and the
total number of pages (LOC:Pages).

The PageUp and PageDown keys will access the next or prior
page procedures.  The CtrlPgUp and CtrlPgDn keys will call
the first or last page procedures respectively.

The default screen has four buttons; Base_Page,
Previous_Page, Next_Page, and Last_Page.  The Next_Page and
Previous_Page button fields are required by the template,
Base_Page and Last_Page are optional.  Pressing the
Base_Page button will return the user to the main page
(MultiPage template).  The Previous and Next Page buttons
call the next or previous page procedures.  The Last_Page
button calls the last page procedure defined on the
MultiPage procedure property screen.

If a Pulldown structure has been created by the Pulldown
Menu Formatter, it is generated after the screen structure.
The Pulldown is OPENed after the screen structure, and is
closed upon exit from the procedure.

The Report Formatter is not supported.

<Property Fields>
Property Fields

The "PageOf" Procedure Properties window has no
specialized prompts.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures. This may be used to
     declare any data which you may want to use only in
     your embedded source code.

<  Setup Procedure >
"Setup Procedure"
     Source code is inserted after the CODE statement.

<  Setup Screen >
"Setup Screen"

<  Base_Page Button Press >
"Base_Page Button Press"
     Code is inserted to execute as soon as the "Base Page"
     button is pressed, before going into non-stop mode and
     returning to the main (MultiPage) procedure.

<  Previous_Page Button Press >
"Previous_Page Button Press"
     Code is inserted to execute as soon as the "Previous
     Page" button is pressed, before going into non-stop
     mode and returning to the prior page procedure.

<  Next_Page Button Press >
"Next_Page Button Press"
     Code is inserted to execute as soon as the "Next_Page" button
     is pressed, before going into non-stop mode and returning to
     the next page procedure.  If Next_Page is pressed on the last
     page, the user is placed on the first page (MultiPage)
     procedure.

<  Last_Page Button Press >
"Last_Page Button Press"
     Code is inserted to execute as soon as the "Last Page" button
     is pressed, before going into non-stop mode and calling the
     last page procedure.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  SETUP >
SETUP
     A 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.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the screen is
     completed.  The calculation code is generated before the
     field setup routines at the top of the processing LOOP.

<<The Print Template>>
<General Information>

The "Print" template generates a procedure that prints the
report created with the Report Formatter.  This template makes
no provision for accessing data files.  Fields printed on the
report reflect their value in memory at the time the procedure
is executed.  The "Print" template is intended for printing
messages or status reports.

<Formatter Support>
Formatter Support

The "Print" procedure in CLARION.APP is pre-loaded with an empty
report layout.  Local data is generated before the report
structure.  Formulas are generated before the OPEN(Report)
statement.  The Screen and Pulldown Menu Formatters are not
supported.

<Property Fields>
Property Fields

<  Redirect Procedure: >
Redirect Procedure:
     Enter the name of a procedure which is called before the
     report is generated to allow the user to define the report's
     destination at runtime.  The Print Template assumes that the
     report's destination is in GLO:FileSpec (a global variable
     defined in CLARION.APP) after the Redirect Procedure is
     called.  Normally, the Redirect Procedure is created from the
     Redirect Template.

<  View Procedure: >
View Procedure:
     Enter the name of a procedure which is called after the
     report is generated to allow the user to view the report's
     output (if the user selected the SCREEN or a FILE as the
     report's destination).  Normally, the View Procedure is
     created from the View Template.  The View Template assumes
     that the report's output filename is in GLO:FileSpec (a
     global variable defined in CLARION.APP).  If the user
     selected a printer port, the Print Template clears
     GLO:FileSpec, which disables the View Procedure.

<Embedded Source Code>
Embedded Source Code

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  After Report OPEN before Formulas >
"After Report OPEN before Formulas"
     After the report has been opened, and before any the Formula
     fields are calculated and before anything is printed.

<  After Formulas Before Title Page >
"After Formulas Before Title Page"
     After the formulas are calculated, and before anything is
     printed.

<  After Grand Totals Before Final Page >
"After Grand Totals Before Final Page"
     After the Title Page and Body Detail have printed, but before
     the Final Page.

<  After Final Page Before Close >
"After Final Page Before Close"
     After the Final Page has printed, but before the Report is
     closed.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  Detail Pre-Print Code for: >
"Detail Pre-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately before the Body detail band is printed.
     There is only one implicit Detail Pre-Print embedded source
     code window in the report.

<  Detail Post-Print Code for: >
"Detail Post-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately after the Body detail band is printed.
     There is only one implicit Detail Post-Print embedded source
     code window in the report.

<Formula Classes>
Formula Classes

No formula classes are supported by this procedure Template.
All Formulas are generated once without regard to any value in
the Formula Class field.


<<The Pulldown Template>>
<General Information>

The "Pulldown" template generates a procedure that displays a
pulldown menu used to execute other procedures.  Menu items are
placed in the menu with the Pulldown Menu Formatter.

Once in the Pulldown Menu Formatter, the menu selections which
execute procedures must have the "Execute procedure" radio
button selected and the procedure to call must be entered.
Optionally, source code may be entered instead of a procedure
name by deleting any procedure name and selecting the "Source"
pushbutton.  At least one menu item should have an edit
procedure of "RETURN" to exit the "Pulldown" procedure.

The code generated by the "Pulldown" procedure template operates
like code generated from the "Menu" procedure template.
Therefore, the template disables all the fields in any screen
that is active and closes the pulldown menu while its selected
procedures are executing.

A pulldown menu that is designed to work with a screen must be
created by the Pulldown Menu Formatter in the procedure that
contains the screen.

<Formatter Support>
Formatter Support

The "Pulldown" procedure in CLARION.APP is pre-loaded with an
empty pulldown menu.  Local data is generated before the
pulldown menu structure.  At least one menu item must contain a
menu procedure of "RETURN" to exit the pulldown procedure.
Formulas are generated at the top of the keyboard loop before
the menu item edit routines.  The Screen and Report Formatters
are not supported.

<Property Fields>
Property Fields

<  Sticky Menus >
[] Sticky Menus
     Check this box to generate code that re-selects the last menu
     item the user selected upon return from the called procedure.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Pulldown >
"Setup Pulldown"
     After OPEN(Pulldown).

<  Top of Accept Loop>
"Top of Accept Loop"
      At the top of the screen field processing loop.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  Pulldown Item Code for : >
Pulldown Item Code for :
     In the CASE FIELD() structure, executed when the menu item is
     selected by the user.

<Formula Classes>
Formula Classes

No formula classes are supported by this procedure Template.


<<The Redirect Template>>
<General Information>

The "Redirect" template creates a procedure which allows the
user to choose a report's destination at runtime.  The Template
code itself is very basic -- all the functionality is provided
in the default procedure in CLARION.APP.

There are two local variables declared which are placed on the
default screen design.  One selects the destination and the
other names the disk file if FILE is the selected destination.
The functionality of the procedure is completely contained in
the embedded source code windows for these two fields and the Ok
and Cancel buttons.

Once the destination is selected, it is placed in the
GLO:FileSpec global variable (as expected by the Report and View
Templates).

<Formatter Support>
Formatter Support

The "Redirect" procedure in CLARION.APP is pre-loaded with a
default screen design which allows the user to select any LPT or
COM port, the SCREEN, or to name a disk file to receive report
output.

The Report and Pulldown Menu Formatters are not supported.
Formulas are also not supported.

<Property Fields>
Property Fields

There are no prompts which are specific to this procedure.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure, after local data and
     the screen structure.  This may be used to declare any data
     which you may want to use only in your embedded source code.

<  Setup Procedure >
"Setup Procedure"
     Immediately after the CODE statement.

<  Setup Screen >
"Setup Screen"
     Immediately after the OPEN(Screen) statement.

<  Top of Accept Loop>
"Top of Accept Loop"
      At the top of the screen field processing loop.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

Neither Formulas nor Formula Classes are supported by the
Redirect Template.


<<The Report Template>>
<General Information>

The "Report" template prints reports from one or multiple
related data files.  File relationships, both 1:MANY and MANY:1,
are automatically handled with some restrictions.  The files
used for the report are defined in the File Schematic built in
the File Schematic Definition window.  The first file in the
File Schematic is the Primary file, all others are Secondary
files.  A Secondary Child file (double right arrow) has a 1:MANY
relationship with the file to which it is attached in the File
Schematic.  A Secondary Lookup file (single right arrow) has a
MANY:1 relationship with the file to which it is attached in the
File Schematic.

The template recurses through as many levels of 1:MANY
relationships as are defined in the File Schematic, starting
with the Primary file, going down the chain of Secondary files
beginning with the first Child file of the Primary.  This
generates a set of nested LOOP structures which read all related
records from each file in turn.  The Body detail band is printed
every time a record from the lowest level Child file is read. A
second Child file of the Primary file would begin a second
1:MANY file chain -- this is not supported by this template.

The Secondary Lookup (MANY:1) relationship is supported for
multiple levels below the file (Primary or Secondary Child) to
which it is related -- a lookup will generate a second lookup
from it.

This File Schematic is directly supported:

   Primary
    > Secondary (Lookup from Primary)
      > Secondary (Lookup from Lookup)
    > Secondary (Lookup from Primary)
    >> Secondary (Child of Primary)
       > Secondary (Lookup from Secondary Child)
         > Secondary (Lookup from Lookup)
       > Secondary (Lookup from Secondary Child)
       >>Secondary (Child of Secondary Child)
          > Secondary (Lookup from Secondary Child)

This File Schematic is NOT directly supported:

   Primary
    > Secondary (Lookup from Primary)
      >>Secondary (Child of Lookup) -- NO Children of Lookups
    >>Secondary (Child of Primary)
      > Secondary (Lookup from Secondary Child)
    >>Secondary (Child of Primary) -- NO 2nd Child chains

This template supports multiple Group Breaks per Primary or
Secondary Child file.  The code to print the group break is
generated as a ROUTINE called from within the nested LOOP
structure after a record is read from the file for which the
group break is defined.

Record filters are supported on the Primary and every Secondary
Child file (see the Formula Class topic below).  Multi-Up labels
are supported -- they must be defined in the Body Detail band.

<Formatter Support>
Formatter Support

The "Report" procedure in CLARION.APP is pre-loaded with an
empty report layout.  Line counter, Page counter, and Report
Device variables are defined in local data, and the Report
Properties window uses these local variables (the line counter
is required by the template).  'GENERIC PRINTER' is the default
printer selected from the PRINTER.CTL file.

If you place anything in the Title Page band and intend that it
should print without first printing the Page Header (or Footer),
you must check the ALONE attribute in the Title Page's Band
Properties window.

The Screen Formatter contains a default screen which is included
in the generated source code only if the Show Report Progress
box is checked.  The screen contains display-only fields for the
Line Counter and Page Counter.  The values in these two fields
are displayed after each PRINT statement in the Report.

The Pulldown Menu Formatter is not supported by the Report
Template.

<Property Fields>
Property Fields

<  Enable ESC Key Abort: >
Enable ESC Key Abort:
     Check this box to include code to allow the user to abort the
     report at runtime by pressing the ESC key.

<  Show Report Progress: >
Show Report Progress:
     Check this box to display the screen defined in the Screen
     Formatter as the report is being generated.  This allows the
     user to clearly see that the report is being generated
     (especially if it is directed to a disk file).

<  CLEAR Record First: >
CLEAR Record First:
     Check this box to issue a CLEAR statement for the Primary
     file before the SET statement which initiates sequential
     processing.  This allows you to choose between initializing
     key fields in the Report procedure, or calling the Report
     from another procedure which allows the user to select or
     input the correct key field starting values.

<  Primary File Access: >
Primary File Access:
     Select the radio button which defines the type of access you
     want to the Primary file.  If you select Keyed Order, the
     Primary file's Access Key set on the Field Selection window
     is used to access the file and a Range Limit Field may be
     specified.  If you select Record Order, the Primary file is
     accessed in physical, record-number, order and any Range
     Limit Field is ignored.

<  Range Limit Field: >
Range Limit Field:
     The records to be printed from the Primary file can be
     limited by fixing the value of a component of the Primary
     file access key.  Only those records whose key component
     value is equal to the value in the Range Value Field will be
     printed.  You must select a key component field of the
     Primary file's access key you defined in the File Schematic.

<  Range Value Field: >
Range Value Field:
     Select the field which, at run-time, will contain the value
     to which you want the report's Primary file to be limited.
     The value in this field will be assigned to the key component
     field you specified in the Range Limit Field before the SET
     statement for the Primary file.

<  Redirect Procedure: >
Redirect Procedure:
     Enter the name of a procedure which is called before the
     report is generated to allow the user to define the report's
     destination at runtime.  The Report Template assumes that the
     report's destination is in GLO:FileSpec (a global variable
     defined in CLARION.APP) after the Redirect Procedure is
     called.  Normally, the Redirect Procedure is created from the
     Redirect Template.

<  View Procedure: >
View Procedure:
     Enter the name of a procedure which is called after the
     report is generated to allow the user to view the report's
     output (if the user selected the SCREEN or a FILE as the
     report's destination).  Normally, the View Procedure is
     created from the View Template.  The View Template assumes
     that the report's output filename is in GLO:FileSpec (a
     global variable defined in CLARION.APP).  If the user
     selected a printer port, the Report Template clears
     GLO:FileSpec, which disables the View Procedure.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure, after local data and
     the report structure.  This may be used to declare any data
     which you may want to use only in your embedded source code.

<  Setup Procedure >
"Setup Procedure"
     Immediately after the CODE statement.

<  After Report OPEN before Title Page >
"After Report OPEN before Title Page"
     After all files in the report are opened and the report is
     opened, but before anything is printed.

<  Immediately before SET(key,key) >
"Immediately before SET(key,key)"
     Immediately after the Range Value field has been assigned to
     the Range Limit field and before the SET statement which
     establishes the report's starting position in the file.  This
     allows you to correctly initialize any other fields in the
     Primary File Access Key before the SET statement.  If Range
     Limit and Range Value fields are not specified, no source
     code is generated from this Embedded Source window.

<  Before Primary LOOP after SET >
"Before Primary LOOP after SET"
     After the SET statement which sets up the order and starting
     point on the Primary file, but before the LOOP which
     processes the Primary file records.

<  Top of Primary LOOP >
"Top of Primary LOOP"
     Immediately after the LOOP statement which processes the
     Primary file and before any other statement in the LOOP. Code
     placed here will execute every time through the LOOP.

<  In Primary LOOP immediately after NEXT >
"In Primary LOOP immediately after NEXT"
     Code placed in this window executes immediately after each
     Primary file record is read and before any group break code
     is executed.  If you code your own record filter at this
     point instead of using a Pre:FILTER class Formula, it would
     be a good idea to check ERRORCODE() to detect the end of file
     condition (if you don't, you could create an infinite loop).

<  In Primary LOOP after NEXT before Lookups >
"In Primary LOOP after NEXT before Lookups"
     Code placed in this window executes after each Primary file
     record is read and any group break code is executed, but
     before any Record Filter, Lookups, or Formulas.

<  In Primary LOOP after Lookups >
"In Primary LOOP after Lookups"
     Code placed in this window executes after any Record Filter,
     Lookups, or Formulas from the Primary file, but before any
     related Child records are accessed.

<  After Primary LOOP before Grand Totals and Final Page >
"After Primary LOOP before Grand Totals and Final Page"
     Code placed in this window executes after all records from
     all files have been processed, but before the Grand Totals
     and Final Page bands are printed.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  At this point, the Report is
     closed.  This code begins in column one, therefore you may
     use this window to write any ROUTINEs which are called from
     any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     The Report Template does not support screen processing during
     generation of the report.  Code placed here is not generated.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     The Report Template does not support screen processing during
     generation of the report.  Code placed here is not generated.

<  Group Header Pre-Print Code for: >
"Group Header Pre-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately before the header for the group break
     referenced is printed.  There is one implicit Group Header
     Pre-Print embedded source code window for each group break
     defined in the Report Formatter.

<  Group Header Post-Print Code for: >
"Group Header Post-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately after the header for the group break
     referenced is printed.  There is one implicit Group Header
     Post-Print embedded source code window for each group break
     defined in the Report Formatter.

<  Group Footer Pre-Print Code for: >
"Group Footer Pre-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately before the footer for the group break
     referenced is printed.  There is one implicit Group Footer
     Pre-Print embedded source code window for each group break
     defined in the Report Formatter.

<  Group Footer Post-Print Code for: >
"Group Footer Post-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately after the footer for the group break
     referenced is printed.  There is one implicit Group Footer
     Post-Print embedded source code window for each group break
     defined in the Report Formatter.

<  Detail Pre-Print Code for: >
"Detail Pre-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately before the Body detail band is printed.
     There is only one implicit Detail Pre-Print embedded source
     code window in the report.

<  Detail Post-Print Code for: >
"Detail Post-Print Code for:"
     This is an implicit embedded source code window which is
     executed immediately after the Body detail band is printed.
     There is only one implicit Detail Post-Print embedded source
     code window in the report.

<Formula Classes>
Formula Classes

<  SETUP>
SETUP
     A Conditional or Computed Field with "SETUP" in the Formula
     Class field is calculated once at the beginning of the
     procedure, immediately after the "After Report OPEN before
     Title Page" embedded source point.

<  Pre:FILTER>
Pre:FILTER
     The prefix of the Primary or a Secondary Child file (not a
     Lookup file) with :FILTER appended (Pre:FILTER): This 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.  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
     information 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).

<  FileName>
FileName
     The name of the Primary or a Secondary Child file (not a
     Lookup file) in the File Schematic.  This calculates the
     formula only when a record read from the named file -- this
     comes after any Pre:FILTER expression on the file is
     evaluated and any Lookup records are read.

<  BreakField>
BreakField
     The name of a Group Break field (including prefix).  This
     calculates the formula just before the Group Footer is
     printed.  This is useful for formulas calculating expressions
     which include one or more Report Total fields.  The formula's
     destination variable should be placed in the group footer.

<  No class (blank) >
No class (blank)
     Calculates the formula every time a record is read from any
     file.


<<The Screen Template>>
<General Information>

The "Screen" template generates a procedure that processes a
screen created with the Screen Formatter.  The template
generates code for Range checks and enforces 'Must be in File'
from the dictionary.  The "Screen" template is intended for
displaying status windows or updating memory variables.

<Formatter Support>
Formatter Support

The "Screen" procedure in CLARION.APP is pre-loaded with an
empty screen layout.  Local data is generated before the screen
structure.  If a pulldown structure has been created by the
Pulldown Menu Formatter, it is generated after the screen
structure.  The template makes no provision for opening or
closing a pulldown menu.  Such statements must be entered as
embedded source.  Statements from the Formula Formatter are
generated at the top of the keyboard loop before the field setup
routines.  The Report Formatter is not supported.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure, after local data and
     the report structure.  This may be used to declare any data
     which you may want to use only in your embedded source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Screen >
"Setup Screen"
     After OPEN(Screen).

<  Top of Accept Loop>
"Top of Accept Loop"
      At the top of the screen field processing loop.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  At this point, the Report is
     closed.  This code begins in column one, therefore you may
     use this window to write any ROUTINEs which are called from
     any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
 Formula Classes

No formula classes are supported by this procedure Template. All
formulas are generated within the main LOOP before the ACCEPT
statement.


<<The Select Template>>
<General Information>

The "Select" template generates a procedure that allows a user
to select a record from a scrolling list of records. Once the
record is selected it is loaded into memory.  You may then call
another procedure to take an action on the selected record.  For
example a print procedure may be called which prints the current
record from memory.

The Select template is a modified Browse template procedure to
allow a user to either select a record, or cancel the selection.
Upon selection of the Cancel button, the record buffer is
cleared.  This gives the programmer the ability to check for a
blank record.  In the print example, the programmer may select
to not print if the record is blank.

A set of display-only fields can be designated as "hot fields"
on screen.  Hot fields display values from the record currently
highlighted by the selector bar and change whenever the selector
bar moves.  This allows display of more information from the
highlighted record than just the one line in the List box.
These hot fields MUST appear consecutively in the Field List but
may be placed anywhere on screen.

An optional locator field finds a specific record in the file.
Typing any character while the LIST field is active selects the
locator field.  Completing the locator field with a TAB key or
mouse CLICK displays the closest matching record at the top of
the list box.  Another option is an "incremental locator", which
allows a half-second pause for user entry into a locator field,
and then automatically finds the closest matching record to the
contents in the locator field.  The backspace key is active
during this process.  For numeric data types, it is recommended
to use a string picture type (for display purposes).  Date
fields are not recommended for incremental locators.

See the Browse template help for full details on the specific
operation of the scrolling listbox and the pushbuttons.

<Formatter Support>
Formatter Support

The "Select" template in CLARION.APP is pre-loaded with a screen
layout containing a list box and pushbuttons named "Insert",
"Change", "Delete", "Select" and "Cancel".  The field equate
label of the list box MUST be "?List" and the "Immediate"
attribute MUST be on turned on.  The horizontal scroll bar can
be turned off if the required information fits in the list box.
The vertical scroll bar is ignored by the template.  The list
box may not have an edit procedure.  All other properties of the
list box can be changed.

Fields from related files may be scrolled in the listbox as
"lookups" will be done automatically from the Primary file in
the file schematic.

The "Insert", "Change", and "Delete" pushbuttons call an update
procedure to process the selected record (update procedures are
normally created with a "Form" or "MultiPage" template).  The
name of the procedure must be entered as the "Update Procedure"
property.  If there is no update procedure, these pushbuttons
can be deleted.  If all three pushbuttons are deleted and you
have named an update procedure, the INSERT, ENTER and DELETE
keys will Insert, Change, and Delete records while the list box
is selected.  However, if only one or two of these buttons have
been removed, the function of that button (Insert, Change, or
Delete) will be removed from the list box as well and no update
procedure will be called for that function.

The "Select" and "Cancel" pushbuttons should not be deleted.

Local data is generated before the screen structure. If a
pulldown structure has been created by the Pulldown Menu
Formatter, it is generated after the screen structure.  The
template makes no provision for opening or closing a pulldown
menu.  Such statements must be entered as embedded source.

The Report Formatter is not supported.

<Property Fields>
Property Fields

<  Range Limit Field: >
Range Limit Field:
     The range of records to be displayed can be limited by fixing
     the value of a component of the primary file access key.  For
     example, line items on an invoice can be limited to a single
     invoice.  The key for the item file might contain ITM:Invoice
     and ITM:Line containing the invoice number and line number of
     the item.

     ITM:Invoice would be the Range Limit Field, displaying only
     those records for a fixed invoice number.

<  Range Value Field: >
Range Value Field:
     The Range Value Field is the field which holds the value to
     be used as the limiting key component value.  The key
     component will be assigned this value.

     In this example, the current Invoice record might contain the
     number of the invoice that is being displayed.  INV:Number
     would be the Range Value Field, supplying the value for the
     Range Limit Field.  The Range Value Field must not be the
     same field as the Range Limit Field.

<  Record Filter:>
Record Filter:
     There are 2 ways to enter a record filter:

     The formula generator can be used with a formula class of
     'FILTER' to validate the expression as entered.

     Enter a free-form record filter expression in this field.  No
     validation is done on the code you enter -- an invalid
     expression will generate compiler errors.  If you are not
     familiar with the Clarion language statements or expressions,
     do not use this entry -- use a Formula field with the FILTER
     Formula Class instead.

<  Locator Field: >
Locator Field:
     A locator field is a screen entry field that updates a
     component of the primary file access key.  When a locator
     field is entered, the closest matching record is displayed in
     the list box.

     For example, scrolling a vendor file in vendor name sequence
     uses a key that contains the vendor name field (e.g.
     VND:Name).  To create a vendor name locator field, place a
     VND:Name entry field on the screen below the list box and
     enter VND:Name for the Locator Field.

     Once the user types a character on the keyboard, the locator
     field is selected and allows entry for the match.  Pressing
     the Tab key positions the point bar to the closest match.
     Another option is "Incremental Locator".  This template
     option allows one-half second for the user to type a new
     letter into the locator field.  At each pause longer than
     one-half second, the field contents are used to locate the
     closest match (the Tab key does not need to be pressed).  The
     backspace key is active during this process.

<  Incremental Locator  >
[] Incremental Locator
     Check this box to indicate that the Locator Field will act as
     an incremental locator.

<  Update Procedure: >
Update Procedure:
     Enter the name of the update procedure to be used to insert,
     change, or delete records.  If no update procedure is
     entered, the "Insert", "Change", and "Delete" pushbuttons
     should be removed from the screen layout.

<  First Hot Field: >
First Hot Field:
     Hot fields are a set of display-only fields that display the
     contents of the record under the selector bar.  They must
     appear consecutively in the Field List.

     Enter the name of the first hot field.

<  Last Hot Field: >
Last Hot Field:
     Enter the name of the last hot field.

<  Enable Hot Records >
[] Enable Hot Records
     By enabling hot records the programmer has complete control
     at every list box movement from the Browse manager. With this
     option enabled, every movement of the point bar gets the
     record under the point bar into memory, looks up any many to
     one secondary files, computes any general formulas and
     executes any embedded source code which was entered in the
     'Process Selected Record' code window.

<  Enable Total Embeds >
[] Enable Total Embeds
     Check this box to generate total field code, without the need
     for dummy formula fields.  Otherwise, you must define a total
     field with a formula class of SUM or AVG.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Screen >
"Setup Screen"
     After OPEN(Screen) statement.

<  Setup Pulldown>
"Setup Pulldown"
     After OPEN(PullDown) statement.

<  Set to First Record Before Total Loop>
"Set to First Record Before Total Loop"
     After the SET(key,key) for Range limits before beginning the
     total calculation LOOP.

<  Inside Total Loop, Immediately after NEXT>
"Inside Total Loop, Immediately after NEXT"
     Immediately after each record is read in the total
     calculation LOOP.

<  Inside Total Loop after Filter>
"Inside Total Loop after Filter"
     After each record is read and filter conditions are evaluated
     in the total calculation LOOP.

<  After Total Field Loop>
"After Total Field Loop"
     After all totals have been calculated.

<  LIST Class Formula>
"LIST Class Formula"
     After generation of LIST class formulas.  This embedded code
     window may be used instead of LIST class formulas.  This will
     allow setting up any fields which are displayed within the
     scrolling listbox.

<  End of General Formulas>
"End of General Formulas"
     When processing a screen field, the formulas which do not
     have a class of 'FILTER' of 'LIST' will be generated.  This
     embedded source window allows the entry of computations for
     screen display fields without the use of the formula
     formatter.

<  Case of No Records Found>
"Case of No Records Found"
     When no records are found to display.

<  After Filter and Range Check>
"After Filter and Range Check"
     After any record filter or Range limits are evaluated.

<  Set to First Record>
"Set to First Record"
     When using Range Limits, a SET() command is issued to locate
     the first record. This embedded source code window appears
     just after the generated SET() command and allows a
     programmer override of the SET() command.

<  Set to Last Record>
"Set to Last Record"
     When using Range Limits, a SET() command is used to locate
     the closest match to the last record.  This embedded source
     code window appears just after the generated SET() command
     and allows a programmer override of the SET() command.

<  Process Selected Record>
"Process Selected Record"
     When Enable Hot Records has been checked, code within this
     embedded source window will be executed upon movement of the
     point bar.  The record under the point bar will be retrieved
     into memory, any many to one secondary file records will be
     retrieved and any general formulas will be computed just
     prior to the insertion of this embedded source code.

<  End of Procedure>
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  Prior to Update Procedure>
"Prior to Update Procedure"
     Immediately before the Update Procedure is called.

<  After Update Procedure>
"After Update Procedure"
     Immediately after return from the Update Procedure.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  FILTER >
FILTER
     A Conditional Field with "FILTER" in the Formula Class field
     is used to select which records are displayed.  If the
     Condition expression evaluates to zero (false) for a given
     record, it is not displayed.

<  LIST >
LIST
     A Conditional or Computed Field with "LIST" in the Formula
     Class field is used for those values which will be displayed
     in the list box and are only evaluated when the list box item
     is created.

<  SUM >
SUM
     A Computed Field with "SUM" in the Formula Class field
     calculates the total of the values contained in the field
     named in the Expression.  A Conditional Field with "SUM" in
     the Formula Class field conditionally calculates the total of
     the values contained in the fields named in the True and
     False Expressions.

<  AVG >
AVG
     A Computed Field with "AVG" in the Formula Class field
     calculates the arithmetic mean of the field named in the
     Expression.  A Conditional Field with "AVG" in the Formula
     Class field conditionally calculates the arithmetic mean of
     the fields named in the True and False Expressions.  In both
     cases, the total value is calculated, then divided by the
     number of records read to achieve that total.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the screen is
     completed.  The calculation code is generated before the
     field setup routines at the top of the processing LOOP.


<<The Source Template>>
<General Information>

The "Source" template generates a procedure comprised only of
embedded source code.  All executable statements in the
procedure, must be entered at the embedded source point labeled
"All Executable Source Code". The source entered must contain
(at least) a RETURN statement. The "Source" template is intended
for procedures that cannot be generated by any other template.

<Formatters Supported>
Formatters Supported

The "Source" template does not support the Application
Generator's Screen, Report, Pulldown Menu, or Formula
formatters.  However, the Text Editor's Screen, Report, and
Pulldown Menu Formatters can be invoked while entering embedded
source in the Data Section.

<Property Fields>
Property Fields

<  Prototype:>
Prototype:
     Enter the procedure's prototype (all except the procedure's
     name) to be placed in the program's MAP structure.  For
     example, if your procedure is a FUNCTION called MyProc and it
     will receive two parameters -- a STRING and a BYTE passed by
     address -- and return a STRING, you would enter :

         (STRING,*BYTE),STRING

     See FUNCTION and PROCEDURE Prototypes in the Language
     Reference for a discussion of valid prototypes.

<  Parameter List:>
Parameter List:
     Enter the complete parameter list (including parentheses) to
     be placed on the procedure's PROCEDURE or FUNCTION statement.
     This labels the passed parameters for reference within the
     procedure.  For the above example, you could enter:

         (Fred,Joe)

     The generated source code for the procedure would look like:

         MyProc          FUNCTION(Fred,Joe)

     In your executable code, you would reference the STRING
     parameter as "Fred" and the BYTE as "Joe."

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure, after local data. This
     may be used to declare any data which you may want to use in
     your embedded source code.

<  All Executable Source Code >
"All Executable Source Code"
     All executable statements in the procedure must go in here.

<Formula Classes>
Formula Classes

No formula classes are supported by this procedure Template.
Formula fields are not supported.


<<The Table21 Template>>
<General Information>

The "Table21" template generates a procedure that scrolls data
files on the screen like a spreadsheet.  Unlike the List or
Browse templates, the Table uses a REPEAT structure instead of
a list box.  Table is similar to the Browse template, but allows
you the flexibility of coloring individual screen fields and
displaying multi-line individual records.

The Table21 Template is provided for compatibility with the
Clarion Professional Developer version 2.1-style TABLE
procedures.  When you import a TABLE procedure from a 2.1 .APP
file, this template is used but the BUTTON fields in the default
screen design are not generated (maintaining 2.1 compatibility).
Keystrokes for insert, change, and delete will be retained.
BUTTON fields are supported, but are not created in the
conversion process.

A Table21 procedure receives an omittable BYTE parameter that
defines the procedure's use at runtime:  "Standard mode" or
"Select mode."

"Standard mode" means no parameter was passed.  Therefore, the
procedure acts the same as all other Browse-type procedures:
when the user presses Enter on a highlighted record, the Update
Procedure is called; the Delete and Insert buttons are active;
and, if a "Select" button exists, it is dimmed.  This duplicates
the action of a version 2.1 TABLE that is not called as a
"lookup."

"Select mode" means a value of four (SelectRecord = 4) was
passed as the parameter and allows the Select button to be
active.  When an item is selected, its record is read from disk
into the record buffer and the Table21 procedure returns to the
calling procedure.  This duplicates the action of a version 2.1
"lookup" TABLE.  The hot key for the Change and Select buttons
should be EnterKey.

<Formatter Support>
Formatter Support

The "Table21" procedure in CLARION.APP is pre-loaded with a
screen layout with a REPEAT structure containing a POINT field
and pushbuttons named "Insert," "Change," "Delete," and "Exit."
These buttons are not created when importing a 2.1 TABLE from a
2.1 .APP file.

If a pulldown structure has been created in the Pulldown Menu
Formatter, it is generated after the screen structure.  The
template makes no provision for opening or closing a pulldown
menu.  Such statements must be entered as embedded source.

The Report Formatter is not supported.

<Property Fields>
Property Fields

<  Range Limit Field:>
Range Limit Field:
     The range of records to be displayed can be limited by
     fixing the value of a component of the primary file access
     key.  For example, line items on an invoice can be limited
     to a single invoice.  The key for the item file might
     contain ITM:Invoice and ITM:Line containing the invoice
     number and line number of the item.

     ITM:Invoice would be the Range Limit Field, displaying only
     those records for a fixed invoice number.

<  Range Value Field:>
Range Value Field:
     The Range Value Field is the field which holds the value to
     be used as the limiting key component value.  The key
     component will be assigned this value.

     In this example, the current Invoice record might contain
     the number of the invoice that is being displayed.
     INV:Number would be the Range Value Field, supplying the
     value for the Range Limit Field. The Range Value Field
     must not be the same field as the Range Limit Field.

<  Record Filter:>
Record Filter:
     There are 2 ways to enter a record filter:

     The formula generator can be used with a formula class of
     'FILTER' to validate the expression as entered.

     Enter a free-form record filter expression in this field.  No
     validation is done on the code you enter -- an invalid
     expression will generate compiler errors.  If you are not
     familiar with the Clarion language statements or expressions,
     do not use this entry -- use a Formula field with the FILTER
     Formula Class instead.

<  Locator Field: >
Locator Field:
     A locator field is a screen entry field that updates a
     component of the primary file access key.  When a locator
     field is entered, the closest matching record is displayed in
     the list box.

     For example, scrolling a vendor file in vendor name sequence
     uses a key that contains the vendor name field (e.g.
     VND:Name).  To create a vendor name locator field, place a
     VND:Name entry field on the screen below the list box and
     enter VND:Name for the Locator Field.

     Once the user types a character on the keyboard, the locator
     field is selected and allows entry for the match.  Pressing
     the Tab key positions the point bar to the closest match.

     Another option is "Incremental Locator".  This template
     option allows one-half second for the user to type a new
     letter into the locator field.  At each pause longer than
     one-half second, the field contents are used to locate the
     closest match (the Tab key does not need to be pressed).  The
     backspace key is active during this process.

<  Incremental Locator >
[] Incremental Locator
     Check this box to indicate that the Locator Field will act as
     an incremental locator.

<  Update Procedure:>
Update Procedure:
     Enter the name of the update procedure to be used to insert,
     change, or delete records.  If no update procedure is
     entered, the "Insert", "Change", and "Delete" pushbuttons
     should be removed from the screen layout.

     Special considerations may exist when using ASCII, DOS, and
     BASIC file drivers.  In some cases a PUT or DELETE is not
     allowed.  See the file driver's documentation for file driver
     specifics.

<  First Hot Field:>
First Hot Field:
     Hot fields are a set of display-only fields that display the
     contents of the record under the selector bar.  They must
     appear consecutively in the Field List.

     Enter the name of the first hot field.

<  Last Hot Field:>
Last Hot Field:
     Enter the name of the last hot field.

<Embedded Source>
Embedded Source

<  Data Section>
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure>
"Setup Procedure"
     After the CODE statement.

<  Setup Screen>
"Setup Screen"
     After OPEN(Screen) statement.

<  LIST Class Formula>
"LIST Class Formula"
     After generation of LIST class formulas. This embedded
     code window may be used instead of LIST class formulas.
     This will allow setting up any fields which are displayed
     within the scrolling table.

<  End of General Formulas>
"End of General Formulas"
     When processing a screen field, the formulas which do not
     have a class of 'FILTER' of 'LIST' will be generated.  This
     embedded source window allows the entry of computations for
     screen display fields without the use of the formula
     formatter.

<  End of Procedure>
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  FILTER >
FILTER
     A Conditional Field with "FILTER" in the Formula Class field
     is used to select which records are displayed.  If the
     Condition expression evaluates to zero (false) for a given
     record, it is not displayed.

     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.

<  LIST >
LIST
     A Conditional or Computed Field with "LIST" in the Formula
     Class field is used for those values which will be
     displayed in the scrolling table and are only evaluated
     when the Table is built.

<  SUM >
SUM
     A Computed Field with "SUM" in the Formula Class field
     calculates the total of the values contained in the field
     named in the Expression.  A Conditional Field with "SUM" in
     the Formula Class field conditionally calculates the total of
     the values contained in the fields named in the True and
     False Expressions.

<  AVG >
AVG
     A Computed Field with "AVG" in the Formula Class field
     calculates the arithmetic mean of the field named in the
     Expression.  A Conditional Field with "AVG" in the Formula
     Class field conditionally calculates the arithmetic mean of
     the fields named in the True and False Expressions.  In both
     cases, the total value is calculated, then divided by the
     number of records read to achieve that total.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the screen is
     completed.  The calculation code is generated before the
     field edit routines at the top of the field processing code.


<<The ToDo Template>>
<General Information>

The "ToDo" template should not be selected for code generation.
Procedures, when first referenced, are automatically created as
ToDo until the template for code generation is selected.

No operation "Stub code" is generated for procedures which
remain as "ToDo" at source generation time.


<<The Update Template>>
<General Information>

This Template is not yet implemented.


<<The Validate Template>>
<General Information>

The "Validate" template generates a procedure that will be used
to perform entry field validation.  The procedure MUST be called
as the "When Field is Completed" Procedure on the entry field to
validate.  When the entry field has been completed, the Validate
procedure will be called to check for the existence of the value
in the current field against the specified key.  If no match is
found, a screen with a list box is presented to allow the user
to select a valid entry.

Selected fields from the data file are displayed as columns in
a list box.  Columns that do not fit in the list box are
displayed using the horizontal scroll bar or the left and right
arrow keys.

A selector bar is always positioned over a single row.  The up
and down arrow keys move the selector bar.  Moving the selector
bar up off the top row or down off the bottom row scrolls a new
record into the list box.  The PGUP and PGDN keys scroll the
prior and next pages of records into the list box.  CTRL-PGUP
displays the first page of records and CTRL-PGDN displays the
last page of records.  Pressing the right mouse button in the
top half of the list box scrolls up and in the bottom half
scrolls down.  The ENTER key and the mouse DOUBLE-CLICK selects
the highlighted record and completes the procedure.

The Validate Template uses PRESS to place the selected value
into the entry field it was called to validate.  Therefore, if
numeric data is being validated, the typing mode of that field
should be INSERT.  This allows PRESS to put the correct value
into the field.

The "Select", "Insert" and "Change" pushbuttons, or any other
field that processes the record under the selector bar MUST be
placed after the LIST field in the Field List.

An optional locator field finds a specific record in the file.
Typing any letter while the LIST field is active selects the
locator field.  Completing the locator field with a Tab key or
mouse click displays the closest matching record at the top of
the list box.

A set of display-only fields can be designated as "hot fields"
on screen.  Hot fields display values from the record currently
highlighted by the selector bar and change whenever the selector
bar moves.  This allows display of more information from the
highlighted record than just the one line in the List box.
These hot fields MUST appear consecutively in the Field List but
may be placed anywhere on screen.

When you define a SUM or AVG formula class, total field code
generation is automatically enabled.

<Formatter Support>
Formatter Support

The "Validate" procedure in CLARION.APP is pre-loaded with a
screen layout containing a list box and pushbuttons named
"Select", "Insert", and "Change".  The field equate label of the
list box MUST be "?List" and the "Immediate" attribute MUST be
on turned on.  The horizontal scroll bar can be turned off if
the required information fits in the list box.  All other
properties of the list box can be changed.

Fields from related files may be scrolled in the list box as
"lookups" will be done automatically from the Primary file in
the file schematic to Secondary files with a "Many to 1"
relationship.  "1 to Many" relationships are not supported by
this procedure Template.

The "Insert" and "Change" pushbuttons call an update procedure
to process the selected record (normally created with a "Form"
template).  The name of the procedure must be entered as the
"Update Procedure". If there is no update procedure entered,
these pushbuttons may be deleted.  The ENTER key and mouse
DOUBLE-CLICK while on the listbox will select the record under
the selector bar and enter the value in the entry field.

Local data is generated before the screen structure.  If a
pulldown structure has been created by the Pulldown Menu
Formatter, it is generated after the screen structure.  The
template makes no provision for opening or closing a pulldown
menu (you must write embedded source for this).

<Property Fields>
Property Fields

<  Range Limit Field: >
Range Limit Field:
     The range of records to be displayed can be limited by fixing
     the value of a component of the primary file access key.  For
     example, line items on an invoice can be limited to a single
     invoice.  The key for the item file might contain ITM:Invoice
     and ITM:Line containing the invoice number and line number of
     the item.

     ITM:Invoice would be the Range Limit Field, displaying only
     those records for a fixed invoice number.

<  Range Value Field: >
Range Value Field:
     The Range Value Field is the field which holds the value to
     be used as the limiting key component value.  The key
     component will be assigned this value.

     In this example, the current Invoice record might contain the
     number of the invoice that is being displayed.  INV:Number
     would be the Range Value Field, supplying the value for the
     Range Limit Field.  The Range Value Field must not be the
     same field as the Range Limit Field.

<  Record Filter:>
Record Filter:
     There are 2 ways to enter a record filter:

     The formula generator can be used with a formula class of
     'FILTER' to validate the expression as entered.

     Enter a free-form record filter expression in this field.  No
     validation is done on the code you enter -- an invalid
     expression will generate compiler errors.  If you are not
     familiar with the Clarion language statements or expressions,
     do not use this entry -- use a Formula field with the FILTER
     Formula Class instead.

<  Lookup Field: >
Lookup Field:
     Enter the name of the field to be used to validate against
     your entry field.  This field should be the only field in a
     single-component unique key.

<  Input Field Picture: >
Input Field Picture:
     Some fields do not appear on screen in the same format as the
     data exists in the file (and in the key).  These fields must
     have an Input Field Picture to DEFORMAT the data for
     validation and to FORMAT the selected data for on-screen
     display.

     Enter the display picture to DEFORMAT the data for
     validation.  This picture is also used to FORMAT the data to
     PRESS it into the keyboard buffer and fill the entry field
     when a record is selected from this procedure's list.

     Examples of fields which require an Input Field Picture:

     Any STRING, CSTRING, or PSTRING with an implied decimal
     storage picture (for example, @N6v2).

     Any numeric data field (LONG, DATE, USHORT, etc.) with a date
     (@D1, @D2, etc.) or time (@T1, @T2, etc.) display picture.

     Any numeric data field (REAL, BFLOAT, etc.) with a display
     picture which includes a decimal portion (for example,
     @N6.2).

<  Locator Field: >
Locator Field:
     A locator field is a screen entry field that updates a
     component of the primary file access key.  When a locator
     field is entered, the closest matching record is displayed in
     the list box.

     For example, scrolling a vendor file in vendor name sequence
     uses a key that contains the vendor name field (e.g.
     VND:Name).  To create a vendor name locator field, place a
     VND:Name entry field on the screen below the list box and
     enter VND:Name for the Locator Field.

     Once the user types a character on the keyboard, the locator
     field is selected and allows entry for the match.  Pressing
     the Tab key positions the point bar to the closest match.

<  Display Key: >
Display Key:
     If using one key for entry field validation and another key
     as the display key, enter the name of the display key here.
     Otherwise, leave this field blank.

<  Update Procedure: >
Update Procedure:
     Enter the name of the update procedure to be used to insert,
     change, or delete records.  If no update procedure is
     entered, the "Insert" and "Change" pushbuttons should be
     removed from the screen layout.

<  First Hot Field: >
First Hot Field:
     Hot fields are a set of display-only fields that display the
     contents of the record under the selector bar.  They must
     appear consecutively in the Field List.

     Enter the name of the first hot field.

<  Last Hot Field: >
Last Hot Field:
     Enter the name of the last hot field.

<  Enable Hot Records >
[] Enable Hot Records
     By enabling hot records the programmer has complete control
     at every list box movement from the Browse manager. With this
     option enabled, every movement of the point bar gets the
     record under the point bar into memory, looks up any many to
     one secondary files, computes any general formulas and
     executes any embedded source code which was entered in the
     'Process Selected Record' code window.

<  Lookup Hot Key: >
Lookup Hot Key:
     When the Validate procedure is being called by a hot key,
     enter the hot key here.  When a hot key is entered and the
     hot key is detected upon entry of the Validate procedure, the
     screen will be opened.  No validation check will be done
     prior to the open of the screen.

<Embedded Source>
Embedded Source

<  Data Section>
"Data Section"
     In the data section of the procedure after local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure>
"Setup Procedure"
     After the CODE statement.

<  Before Validate Lookup>
"Before Validate Lookup"
     After opening the primary file, you may enter source code in
     this window to pre-fill any fields which will be used by the
     lookup other than the Lookup Field.

<  Setup Screen>
"Setup Screen"
     After OPEN(Screen).

<  Setup Pulldown>
"Setup Pulldown"
     After OPEN(PullDown) statement.

<  Set to First Record Before Total Loop>
"Set to First Record Before Total Loop"
     After the SET(key,key) for Range limits before beginning the
     total calculation LOOP.

<  Inside Total Loop, Immediately after NEXT>
"Inside Total Loop, Immediately after NEXT"
     Immediately after each record is read in the total
     calculation LOOP.

<  Inside Total Loop after Filter>
"Inside Total Loop after Filter"
     After each record is read and filter conditions are evaluated
     in the total calculation LOOP.

<  After Total Field Loop>
"After Total Field Loop"
     After all totals have been calculated.

<  LIST Class Formula>
"LIST Class Formula"
     After generation of LIST class formulas.  This embedded code
     window may be used instead of LIST class formulas.  This will
     allow setting up any fields which are displayed within the
     scrolling listbox.

<  End of General Formulas>
"End of General Formulas"
     When processing a screen field, the formulas which do not
     have a class of 'FILTER' of 'LIST' will be generated.  This
     embedded source window allows the entry of computations for
     screen display fields without the use of the formula
     formatter.

<  Case of No Records Found>
"Case of No Records Found"
     When no records are found to display.

<  After Filter and Range Check>
"After Filter and Range Check"
     After any record filter or Range limits are evaluated.

<  Set to First Record>
"Set to First Record"
     When using Range Limits, a SET() command is issued to locate
     the first record. This embedded source code window appears
     just after the generated SET() command and allows a
     programmer override of the SET() command.

<  Set to Last Record>
"Set to Last Record"
     When using Range Limits, a SET() command is used to locate
     the closest match to the last record.  This embedded source
     code window appears just after the generated SET() command
     and allows a programmer override of the SET() command.

<  Process Selected Record>
"Process Selected Record"
     When Enable Hot Records has been checked, code within this
     embedded source window will be executed upon movement of the
     point bar.  The record under the point bar will be retrieved
     into memory, any many to one secondary file records will be
     retrieved and any general formulas will be computed just
     prior to the insertion of this embedded source code.

<  End of Procedure>
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window.

<  Prior to Update Procedure>
"Prior to Update Procedure"
     Immediately before the Update Procedure is called.

<  After Update Procedure>
"After Update Procedure"
     Immediately after return from the Update Procedure.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

<  LIST >
LIST
     A Conditional or Computed Field with "LIST" in the Formula
     Class field is used for those values which will be displayed
     in the list box and are only evaluated when the list box item
     is created.

<  SUM >
SUM
     A Computed Field with "SUM" in the Formula Class field
     calculates the total of the values contained in the field
     named in the Expression.  A Conditional Field with "SUM" in
     the Formula Class field conditionally calculates the total of
     the values contained in the fields named in the True and
     False Expressions.

<  AVG >
AVG
     A Computed Field with "AVG" in the Formula Class field
     calculates the arithmetic mean of the field named in the
     Expression.  A Conditional Field with "AVG" in the Formula
     Class field conditionally calculates the arithmetic mean of
     the fields named in the True and False Expressions.  In both
     cases, the total value is calculated, then divided by the
     number of records read to achieve that total.

<  No class (blank) >
No class (blank)
     Calculates the formula every time any field on the screen is
     completed.  The calculation code is generated before the
     field setup routines at the top of the processing LOOP.


<<The View Template>>
<General Information>

The View Template displays any ASCII text file in a scrolling
list box. It is normally used to display a report to the screen
that was previously written to disk.  The View template may be
used to create a procedure which is the Next Procedure of a File
template.  This will allow the user to select a file to view
from a list of available files.

The text will scroll up or down using the up and down arrow keys
or the vertical scroll bar. Pressing the right mouse button in
the top half of the list box scrolls up and in the bottom half
scrolls down. Left and right scrolling is supported with END,
HOME, the horizontal scroll bar, or the left and right arrow
keys.

The DOS File definition is defined in the template.  The record
(one line of the report) is defined with a length of 255.

If "Progress Indicator" is checked on then a message will be
displayed to the user while reading the file from disk. This is
recommended for larger reports to let the user know that the
program is still active while reading the file from disk.

While reading the file from disk, the scrolling keys may be used
(PgUp, PgDn, Up, Dn, etc...) to scroll the queue.  The mouse
cursor will not be active until the entire file has been read.

No changes are required in the Screen Formatter or the Data
Section.  To use the template, just indicate the name of the DOS
file to display.

<Formatter Support>
Formatter Support

The Screen Formatter is available for this template and is
preloaded with a default SCREEN.  The LIST box and Exit button
are required.  The LIST box may be resized or positioned.

The SCREEN has three pushbuttons:  "Exit," "Print" and "25/50
Mode."

The Exit button is required and may not be removed.  The field
equate label must be ?Exit.

The Print button prints the file being viewed.  A print device
field is activated to allow the user to select the output
device.  If the Print button is deleted, the PrintDevice field
must also be deleted.

The 25/50 Mode button attempts to toggle the current text mode
between 25 and 50 line mode.  The SCREEN will be re-opened in
the new mode and the listbox will be expanded, since the screen
structure in the default application file has an EXPAND
attribute with row 10 identified as the row to duplicate.  Since
the SETTEXT command is used, the mode will be changed to the
closest match.  For EGA systems the closest match to 50 line
mode will be 43 line mode.  This button may be removed from the
SCREEN structure to disable video mode switching.

The Report Formatter is not available.

<Property Fields>
Property Fields

<  File to View: >
File to View:
     This is the ASCII file to be displayed in the list box. It
     may be a string constant or a variable. If it is a constant
     it should be enclosed in 'quotes'. If it is a variable, the
     variable should be declared in the Global Data Section of the
     program.

     When left blank, a variable from the default application is
     used (GLO:Filespec in CLARION.APP).  This is the same default
     variable used in the File template.

<  Warning Size (in K): >
Warning Size (in K):
     The View template will read the entire file into a Queue for
     runtime performance.  However, If you have a file larger than
     the assigned virtual memory block (Queue elements are saved
     in virtual by default unless virtual memory support is turned
     off) the Queue may be written to disk.  This may
     substantially slow the scrolling of the file.  A warning
     screen may be displayed when a selected file is larger than
     a specified size.  This size will be multiplied by 1024 and
     compared against the actual file size.

<  Maximum Line Length: >
Maximum Line Length:
     Most reports will not be wider than 80 or 132 columns. This
     allows an opportunity to check for files which do not
     typically have a carriage return / line feed combination in
     the first X number of characters.  (like .EXE and .COM files)
     The number entered here will be used to check the number of
     bytes in each ASCII file record as it is read.  If a line
     read has more than the number of characters which are
     specified as the maximum, an error window will appear and the
     view will be aborted.  Typically for an .EXE file this will
     occur in the first record read and no 'garbage' will be
     displayed in the listbox.  If no Maximum Line Length is
     entered, the default of 200 is used.

<  Progress Indicator >
[] Progress Indicator
     If this box is checked on, a message will be displayed to the
     user while the file is read from disk.

<  Progress Character:>
Progress Character:
     You may enter the ASCII character to be used as the 'bar.'
     Easy entry of high order ascii characters may be made by
     using the ASCII value found in the ASCII chart from the Tools
     menu.  The ASCII value should be surrounded by angle brackets
     within single quotes.  The Default Application file is
     preloaded with a shaded bar character '<176>'.

<Embedded Source>
Embedded Source

<  Data Section >
"Data Section"
     In the data section of the procedure before local data, the
     screen and pulldown structures.  This may be used to declare
     any data which you may want to use only in your embedded
     source code.

<  Setup Procedure >
"Setup Procedure"
     After the CODE statement.

<  Setup Screen >
"Setup Screen"
     After OPEN(Screen).

<  Top of Accept Loop>
"Top of Accept Loop"
      At the top of the screen field processing loop.

<  Immediately Before RETURN for non-ASCII file error>
"Immediately Before RETURN for non-ASCII file error"
     When the procedure detects that a line is longer than the
     maximum specified by the Warning Size it returns to the
     caller with an error message.

<  After NEXT in RptFile Loop >
"After NEXT in RptFile Loop"
     In the loop that read the DOS file from disk, after the NEXT
     statement.

<  Immediately After LOOP, before FREE(Queue)>
"Immediately After LOOP, before FREE(Queue)"
     After the screen processing loop is complete, indicating the
     user is finished viewing the text.  The queue still contains
     the text at this point.

<  End of Procedure >
"End of Procedure"
     Code placed in this window executes after all other code in
     the procedure has executed.  This code begins in column one,
     therefore you may use this window to write any ROUTINEs which
     are called from any other embedded source code window or code
     that should be execute at the end of the procedure.

<  When Screen Field is Selected : >
"When Screen Field is Selected : "
     In the CASE SELECTED() structure, executed when the field is
     selected for entry.

<  When Screen Field is Completed: >
"When Screen Field is Completed: "
     In the CASE FIELD() structure, executed when the field has
     been completed.

<Formula Classes>
Formula Classes

No formula classes are supported by this procedure Template.
Formula fields are not supported.


