home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / devtools / persond / readme.scr < prev    next >
Encoding:
Text File  |  1994-01-11  |  183.0 KB  |  730 lines

  1.   INTRODUCING PERSONAL AS BUILDER/2                                                                                                                                                                                                                            
  2.   _________________________________                                                                                                                                                                                                                            
  3.                                                                                                                                                                                                                                                                
  4.   Many organizations and industry sectors have very                                                                                                                                                                                                            
  5.   specific decision-support needs.  Personal AS Builder/2                                                                                                                                                                                                      
  6.   provides a comprehensive set of programming tools                                                                                                                                                                                                            
  7.   specifically designed to address these needs.                                                                                                                                                                                                                
  8.   Application designers with specific requirements not                                                                                                                                                                                                         
  9.   served by a product can use the application development                                                                                                                                                                                                      
  10.   component of Builder/2 to design, prototype, and build                                                                                                                                                                                                       
  11.   applications which meet their own particular needs,                                                                                                                                                                                                          
  12.   easily and quickly.                                                                                                                                                                                                                                          
  13.                                                                                                                                                                                                                                                                
  14.   Four components of Builder/2 provide the ability to                                                                                                                                                                                                          
  15.   develop applications in controlled stages.                                                                                                                                                                                                                   
  16.                                                                                                                                                                                                                                                                
  17.                                                                                                                                                                                                                                                                
  18.   THE MENU EDITOR                                                                                                                                                                                                                                              
  19.   _______________                                                                                                                                                                                                                                              
  20.                                                                                                                                                                                                                                                                
  21.   You can use the Menu editor to create the menus used for                                                                                                                                                                                                     
  22.   menu bars, and to specify mnemonic and shortcut key                                                                                                                                                                                                          
  23.   sequences for each menu entry.  Also, if you have the                                                                                                                                                                                                        
  24.   OS/2* Programmer's Toolkit, you can create help text with                                                                                                                                                                                                    
  25.   the editor for any or all of your menu entries.                                                                                                                                                                                                              
  26.                                                                                                                                                                                                                                                                
  27.                                                                                                                                                                                                                                                                
  28.   THE WINDOW EDITOR                                                                                                                                                                                                                                            
  29.   _________________                                                                                                                                                                                                                                            
  30.                                                                                                                                                                                                                                                                
  31.   You can use the Window editor to create a graphic                                                                                                                                                                                                            
  32.   interface to "paste" buttons, menu bars, text entry or                                                                                                                                                                                                       
  33.   display fields, and other window controls onto your                                                                                                                                                                                                          
  34.   application windows.  Any menus that are defined can be                                                                                                                                                                                                      
  35.   connected to the menu bar (a list of available menus).                                                                                                                                                                                                       
  36.   The window control features such as maximize window,                                                                                                                                                                                                         
  37.   minimize window, scroll vertically, and scroll                                                                                                                                                                                                               
  38.   horizontally are defined for each of your application                                                                                                                                                                                                        
  39.   windows.                                                                                                                                                                                                                                                     
  40.                                                                                                                                                                                                                                                                
  41.                                                                                                                                                                                                                                                                
  42.   THE PROGRAM EDITOR                                                                                                                                                                                                                                           
  43.   __________________                                                                                                                                                                                                                                           
  44.                                                                                                                                                                                                                                                                
  45.                                                                                                                                                                                                                                                                
  46.   You can use the Program editor to write and edit AS                                                                                                                                                                                                          
  47.   Language code (ASL) for your application.  If you use the                                                                                                                                                                                                    
  48.   Window and Menu editors to design your windows and menus,                                                                                                                                                                                                    
  49.   you can use the Program editor to automatically generate                                                                                                                                                                                                     
  50.   skeleton source code for the controls, menu bar entries,                                                                                                                                                                                                     
  51.   and their characteristics.  The Program editor also                                                                                                                                                                                                          
  52.   provides syntax checking, code formatting, and syntax                                                                                                                                                                                                        
  53.   help windows to help you create programs.                                                                                                                                                                                                                    
  54.                                                                                                                                                                                                                                                                
  55.                                                                                                                                                                                                                                                                
  56.   THE MAKE FACILITY                                                                                                                                                                                                                                            
  57.   _________________                                                                                                                                                                                                                                            
  58.                                                                                                                                                                                                                                                                
  59.                                                                                                                                                                                                                                                                
  60.   You can use the Make facility to administer the programs,                                                                                                                                                                                                    
  61.   windows, and menus that you have designed for an                                                                                                                                                                                                             
  62.   application.  You can also use Make to compile selected                                                                                                                                                                                                      
  63.   files from your library, for example, if you are creating                                                                                                                                                                                                    
  64.   an application in stages.                                                                                                                                                                                                                                    
  65.                                                                                                                                                                                                                                                                
  66.                                                                                                                                                                                                                                                                
  67.   THE FACILITIES OF PERSONAL AS BUILDER/2                                                                                                                                                                                                                      
  68.   _______________________________________                                                                                                                                                                                                                      
  69.                                                                                                                                                                                                                                                                
  70.   With Personal AS Builder/2, you can build applications                                                                                                                                                                                                       
  71.   with varying degrees of complexity.  You can build simple                                                                                                                                                                                                    
  72.   applications with a single window and a program using the                                                                                                                                                                                                    
  73.   Window and Program editors.  These can then be compiled                                                                                                                                                                                                      
  74.   directly, without the need to use the Make facility.                                                                                                                                                                                                         
  75.                                                                                                                                                                                                                                                                
  76.   You can also design more complicated applications that                                                                                                                                                                                                       
  77.   use many programs and windows, and use the Make facility                                                                                                                                                                                                     
  78.   to compile them all together.  For example, you could use                                                                                                                                                                                                    
  79.   Builder/2 to create complex applications, such as a stock                                                                                                                                                                                                    
  80.   control facility for an international, multi-product,                                                                                                                                                                                                        
  81.   organization.  Indeed, Personal AS Chart and Report were                                                                                                                                                                                                     
  82.   themselves developed using the full functions of                                                                                                                                                                                                             
  83.   Builder/2.                                                                                                                                                                                                                                                   
  84.                                                                                                                                                                                                                                                                
  85.   With Personal AS Builder/2 you can build 32-bit                                                                                                                                                                                                              
  86.   applications with the following features:                                                                                                                                                                                                                    
  87.                                                                                                                                                                                                                                                                
  88.   o   Dynamic Data Exchange (DDE) enabled, either as DDE                                                                                                                                                                                                       
  89.       Clients, or DDE Servers, or both Clients and Servers                                                                                                                                                                                                     
  90.                                                                                                                                                                                                                                                                
  91.   o   Drag and drop enabled                                                                                                                                                                                                                                    
  92.                                                                                                                                                                                                                                                                
  93.   o   Personalized end-user interfaces                                                                                                                                                                                                                         
  94.                                                                                                                                                                                                                                                                
  95.   o   Support for a range of data file types, including:                                                                                                                                                                                                       
  96.                                                                                                                                                                                                                                                                
  97.       -   OS/2 Metafile (.MET)                                                                                                                                                                                                                                 
  98.       -   OS/2 2.0 Bitmap (.BMP)                                                                                                                                                                                                                               
  99.       -   OS/2 1.1 Bitmap (.BMP)                                                                                                                                                                                                                               
  100.       -   Zsoft Image Format (.PCX)                                                                                                                                                                                                                            
  101.       -   Tagged Image Format File (.TIF)                                                                                                                                                                                                                      
  102.       -   Graphics Interchange Format (.GIF)                                                                                                                                                                                                                   
  103.       -   Personal AS object                                                                                                                                                                                                                                   
  104.                                                                                                                                                                                                                                                                
  105.   o   Supporting the Common User Access* (CUA*) and Systems                                                                                                                                                                                                    
  106.       Application Architecture* (SAA*) guidelines                                                                                                                                                                                                              
  107.                                                                                                                                                                                                                                                                
  108.   o   Supporting the application programming interfaces                                                                                                                                                                                                        
  109.       (APIs) for the other Personal AS objects                                                                                                                                                                                                                 
  110.                                                                                                                                                                                                                                                                
  111.   o   Sharing data and common end-user interfaces with                                                                                                                                                                                                         
  112.       mainframe and other workstations                                                                                                                                                                                                                         
  113.                                                                                                                                                                                                                                                                
  114.   o   Supporting the exchange of data using host AS,                                                                                                                                                                                                           
  115.       including facilities for handling different file                                                                                                                                                                                                         
  116.       types                                                                                                                                                                                                                                                    
  117.                                                                                                                                                                                                                                                                
  118.   o   Linking existing applications written in "C" to the                                                                                                                                                                                                      
  119.       application's front-end user interface by using the                                                                                                                                                                                                      
  120.       Window and Menu facilities                                                                                                                                                                                                                               
  121.                                                                                                                                                                                                                                                                
  122.   o   Linking, via SQL, to DB2/2* and other databases                                                                                                                                                                                                          
  123.                                                                                                                                                                                                                                                                
  124.   o   Including your own extensive help or on-line                                                                                                                                                                                                             
  125.       documentation, using the OS/2 Programmer's Toolkit.                                                                                                                                                                                                      
  126.                                                                                                                                                                                                                                                                
  127.                                                                                                                                                                                                                                                                
  128.   USING PERSONAL AS BUILDER/2 WITH OTHER PARTS OF                                                                                                                                                                                                              
  129.   _______________________________________________                                                                                                                                                                                                              
  130.   THE PERSONAL AS FAMILY                                                                                                                                                                                                                                       
  131.   _______________________                                                                                                                                                                                                                                      
  132.                                                                                                                                                                                                                                                                
  133.   You can use Builder/2 to create OS/2 Presentation                                                                                                                                                                                                            
  134.   Manager* applications that may then be run on any system                                                                                                                                                                                                     
  135.   containing the Personal AS base product.  Applications                                                                                                                                                                                                       
  136.   created using Builder/2 can take advantage of links to                                                                                                                                                                                                       
  137.   any of the Personal AS objects, such as Personal AS                                                                                                                                                                                                          
  138.   Report and Personal AS Chart.  You can also use your                                                                                                                                                                                                         
  139.   applications in a Personal AS Procedure, automating your                                                                                                                                                                                                     
  140.   regular tasks.                                                                                                                                                                                                                                               
  141.                                                                                                                                                                                                                                                                
  142.   Builder/2 provides the powerful programming language                                                                                                                                                                                                         
  143.   Application System Language (ASL).  ASL is an                                                                                                                                                                                                                
  144.   event-driven high-level language, possessing a wide range                                                                                                                                                                                                    
  145.   of built-in functions.  It embodies many of the                                                                                                                                                                                                              
  146.   principles of object-oriented programming, and was                                                                                                                                                                                                           
  147.   extensively used to develop the facilities of the                                                                                                                                                                                                            
  148.   Personal AS product -- including the development of                                                                                                                                                                                                          
  149.   Personal AS Builder/2 itself.  It is designed to enable                                                                                                                                                                                                      
  150.   users to build applications that can conform to the IBM                                                                                                                                                                                                      
  151.   Common User Access (CUA) and Systems Application                                                                                                                                                                                                             
  152.   Architecture (SAA) guidelines with the minimum of effort.                                                                                                                                                                                                    
  153.                                                                                                                                                                                                                                                                
  154.   There are two distinct sets of tasks you can perform with                                                                                                                                                                                                    
  155.   Builder/2:                                                                                                                                                                                                                                                   
  156.                                                                                                                                                                                                                                                                
  157.   o   Creating the end user interface, or prototyping                                                                                                                                                                                                          
  158.                                           ___________                                                                                                                                                                                                          
  159.   o   Creating program code which actually does the                                                                                                                                                                                                            
  160.       processing                                                                                                                                                                                                                                               
  161.                                                                                                                                                                                                                                                                
  162.   When you choose to prototype, you can build an                                                                                                                                                                                                               
  163.   application in separate, though related, stages.  You can                                                                                                                                                                                                    
  164.   generate code from a WYSIWIG interface, with which you                                                                                                                                                                                                       
  165.   design the interface by selecting controls from a                                                                                                                                                                                                            
  166.   palette, and then the code is generated automatically for                                                                                                                                                                                                    
  167.   you.                                                                                                                                                                                                                                                         
  168.                                                                                                                                                                                                                                                                
  169.   Builder/2 contains a debugger sample application which                                                                                                                                                                                                       
  170.   you can use to debug any application you are writing.                                                                                                                                                                                                        
  171.   You can use the debugger application to:                                                                                                                                                                                                                     
  172.                                                                                                                                                                                                                                                                
  173.   o   Walk through your compiled ASL application                                                                                                                                                                                                               
  174.   o   Set break points in the executing ASL application                                                                                                                                                                                                        
  175.   o   Query and modify any variables and objects in the                                                                                                                                                                                                        
  176.       application                                                                                                                                                                                                                                              
  177.   o   Display the data and objects that are active in the                                                                                                                                                                                                      
  178.       current application.                                                                                                                                                                                                                                     
  179.                                                                                                                                                                                                                                                                
  180.                                                                                                                                                                                                                                                                
  181.   PROGRAMMING FUNDAMENTALS                                                                                                                                                                                                                                     
  182.   ________________________                                                                                                                                                                                                                                     
  183.                                                                                                                                                                                                                                                                
  184.                                                                                                                                                                                                                                                                
  185.   This section explains the concepts relevant to                                                                                                                                                                                                               
  186.   application programming with Builder/2.                                                                                                                                                                                                                      
  187.                                                                                                                                                                                                                                                                
  188.                                                                                                                                                                                                                                                                
  189.   SINGLE TASKING SYSTEMS                                                                                                                                                                                                                                       
  190.   ______________________                                                                                                                                                                                                                                       
  191.                                                                                                                                                                                                                                                                
  192.   The most basic system is a single user, single task,                                                                                                                                                                                                         
  193.   system with text based input and output.  A block diagram                                                                                                                                                                                                    
  194.   of such a system is shown below:                                                                                                                                                                                                                             
  195.                                                                                                                                                                                                                                                                
  196.                  *-------------*     *--------------*                                                                                                                                                                                                          
  197.                  |             |     |              |                                                                                                                                                                                                          
  198.                  |   Operating |---->| Text Display |                                                                                                                                                                                                          
  199.                  |             |     *--------------*                                                                                                                                                                                                          
  200.                  |             |                                                                                                                                                                                                                               
  201.                  |    System   |     *--------------*                                                                                                                                                                                                          
  202.                  |             |<----|  Keyboard    |                                                                                                                                                                                                          
  203.                  *-------------*     *--------------*                                                                                                                                                                                                          
  204.                         |                                                                                                                                                                                                                                      
  205.                  *-------------*                                                                                                                                                                                                                               
  206.                  |             |                                                                                                                                                                                                                               
  207.                  |  Program    |                                                                                                                                                                                                                               
  208.                  *-------------*                                                                                                                                                                                                                               
  209.                         |                                                                                                                                                                                                                                      
  210.                  *-------------*                                                                                                                                                                                                                               
  211.                  |             |                                                                                                                                                                                                                               
  212.                  | Subroutines |                                                                                                                                                                                                                               
  213.                  *-------------*                                                                                                                                                                                                                               
  214.                                                                                                                                                                                                                                                                
  215.   In this system, the programmer has written a program                                                                                                                                                                                                         
  216.   which performs the processing and uses basic features of                                                                                                                                                                                                     
  217.   the operating system to input and display text.  There                                                                                                                                                                                                       
  218.   are probably subroutines included that can be reused by                                                                                                                                                                                                      
  219.   other programs for commonly occurring processing.  The                                                                                                                                                                                                       
  220.   program is started by the operating system and it runs                                                                                                                                                                                                       
  221.   until it reaches a stop statement.                                                                                                                                                                                                                           
  222.                                                                                                                                                                                                                                                                
  223.                                                                                                                                                                                                                                                                
  224.   MULTITASKING SYSTEMS                                                                                                                                                                                                                                         
  225.   ____________________                                                                                                                                                                                                                                         
  226.                                                                                                                                                                                                                                                                
  227.   A multitasking system allows more than one program to                                                                                                                                                                                                        
  228.   reside in the memory space at one time.  There are two                                                                                                                                                                                                       
  229.   systems used with multiple programs in memory: one system                                                                                                                                                                                                    
  230.   stops the first program when the second program starts,                                                                                                                                                                                                      
  231.   the other method has the operating system dividing                                                                                                                                                                                                           
  232.   processing time between the two programs.  This gives the                                                                                                                                                                                                    
  233.   impression that the programs are executing                                                                                                                                                                                                                   
  234.   simultaneously, although only one program executes at a                                                                                                                                                                                                      
  235.   given moment.  The operating system switches each program                                                                                                                                                                                                    
  236.   on in sequence, and the rapid swapping between programs                                                                                                                                                                                                      
  237.   gives the impression that there are multiple active                                                                                                                                                                                                          
  238.   programs.                                                                                                                                                                                                                                                    
  239.                                                                                                                                                                                                                                                                
  240.   Even though the programs are not actually active at the                                                                                                                                                                                                      
  241.   same moment, it is possible for one program to send a                                                                                                                                                                                                        
  242.   message to another program.  The operating system stores                                                                                                                                                                                                     
  243.   the communication requests between programs and sends                                                                                                                                                                                                        
  244.   them when the destination program becomes active.                                                                                                                                                                                                            
  245.                                                                                                                                                                                                                                                                
  246.   *----------------------------*     *--------------*                                                                                                                                                                                                          
  247.   |                            |     |              |                                                                                                                                                                                                          
  248.   |   Operating System         |---->| Text Display |                                                                                                                                                                                                          
  249.   |                            |     *--------------*                                                                                                                                                                                                          
  250.   |                            |                                                                                                                                                                                                                               
  251.   |   Multi-tasking Interface  |     *--------------*                                                                                                                                                                                                          
  252.   |                            |<----|  Keyboard    |                                                                                                                                                                                                          
  253.   *----------------------------*     *--------------*                                                                                                                                                                                                          
  254.          |              |                                                                                                                                                                                                                                      
  255.    *-----------*  *------------*                                                                                                                                                                                                                               
  256.    |           |  |            |                                                                                                                                                                                                                               
  257.    | Program 1 |  | Program 2  |                                                                                                                                                                                                                               
  258.    *-----------*  *------------*                                                                                                                                                                                                                               
  259.                                                                                                                                                                                                                                                                
  260.   Note that the two programs share a single display for                                                                                                                                                                                                        
  261.   output and a single keyboard for input.  The user must                                                                                                                                                                                                       
  262.   have a way of indicating which one of the programs they                                                                                                                                                                                                      
  263.   are using at a particular moment.  There are several ways                                                                                                                                                                                                    
  264.   of doing this, but the most useful and user friendly is                                                                                                                                                                                                      
  265.   the graphical user interface (GUI).                                                                                                                                                                                                                          
  266.                                                                                                                                                                                                                                                                
  267.                                                                                                                                                                                                                                                                
  268.   MULTITASKING WITH GRAPHICAL INTERFACE                                                                                                                                                                                                                        
  269.   _____________________________________                                                                                                                                                                                                                        
  270.                                                                                                                                                                                                                                                                
  271.   Using a graphical interface allows the creation of more                                                                                                                                                                                                      
  272.   than one virtual display on the screen and allows easy                                                                                                                                                                                                       
  273.   switching between programs.                                                                                                                                                                                                                                  
  274.                                                                                                                                                                                                                                                                
  275.   *----------------------------*     *-------------*                                                                                                                                                                                                           
  276.   |                            |     |  1  |*------|                                                                                                                                                                                                           
  277.   |  Operating System          |---->|-----*|      | Display                                                                                                                                                                                                   
  278.   |                            |     |      |  2   |                                                                                                                                                                                                           
  279.   |  Multi-tasking Interface   |     *-------------*                                                                                                                                                                                                           
  280.   |                            |     *--------------*                                                                                                                                                                                                          
  281.   |  Graphic Interface         |<----|  Keyboard    |                                                                                                                                                                                                          
  282.   *----------------------------*     *--------------*                                                                                                                                                                                                          
  283.          |              |                                                                                                                                                                                                                                      
  284.    *-----------*  *------------*                                                                                                                                                                                                                               
  285.    |           |  |            |                                                                                                                                                                                                                               
  286.    | Program 1 |  | Program 2  |                                                                                                                                                                                                                               
  287.    *-----------*  *------------*                                                                                                                                                                                                                               
  288.                                                                                                                                                                                                                                                                
  289.   The display now has two windows displayed on it.  One                                                                                                                                                                                                        
  290.   window is for program one and the other is for program                                                                                                                                                                                                       
  291.   two.  The windows also include controls for changing                                                                                                                                                                                                         
  292.   their size and location.  Since the display area of the                                                                                                                                                                                                      
  293.   window is less than the size of the full display, scroll                                                                                                                                                                                                     
  294.   controls may be available on the window to move the                                                                                                                                                                                                          
  295.   program output to view text or graphics that will not fit                                                                                                                                                                                                    
  296.   inside the window.                                                                                                                                                                                                                                           
  297.                                                                                                                                                                                                                                                                
  298.   The multiple areas on the display simplify multitasking.                                                                                                                                                                                                     
  299.   More information on windows and window controls is                                                                                                                                                                                                           
  300.   available in later sections.                                                                                                                                                                                                                                 
  301.                                                                                                                                                                                                                                                                
  302.                                                                                                                                                                                                                                                                
  303.   EVENT-DRIVEN PROGRAMS                                                                                                                                                                                                                                        
  304.   _____________________                                                                                                                                                                                                                                        
  305.                                                                                                                                                                                                                                                                
  306.   In the earlier examples, the program started at the                                                                                                                                                                                                          
  307.   beginning and went through to the end and then stopped,                                                                                                                                                                                                      
  308.   although some code may have been executed more than once                                                                                                                                                                                                     
  309.   before stopping.  In an event-driven program, the order                                                                                                                                                                                                      
  310.   of execution is determined by the order of external                                                                                                                                                                                                          
  311.   events.  One such event is the starting of the program,                                                                                                                                                                                                      
  312.   which activates code for handling a start event.  Some                                                                                                                                                                                                       
  313.   code will execute to initialize the program variables and                                                                                                                                                                                                    
  314.   perhaps communicate with the user.                                                                                                                                                                                                                           
  315.                                                                                                                                                                                                                                                                
  316.   Other events might come from other programs sending a                                                                                                                                                                                                        
  317.   message, from the user performing some action on the                                                                                                                                                                                                         
  318.   program's window (for example, selecting an item from a                                                                                                                                                                                                      
  319.   menu or selecting a graphic object).  The communication                                                                                                                                                                                                      
  320.   of events to the program is handled by system software                                                                                                                                                                                                       
  321.   (the operating system and some extensions).                                                                                                                                                                                                                  
  322.                                                                                                                                                                                                                                                                
  323.   *----------------------------*     *-------------*                                                                                                                                                                                                           
  324.   | Operating System           |     |  1  |*------|                                                                                                                                                                                                           
  325.   |                            |---->|-----*|      |Display                                                                                                                                                                                                    
  326.   | Multi-tasking Interface    |     |      |  2   |                                                                                                                                                                                                           
  327.   |                            |     *-------------*                                                                                                                                                                                                           
  328.   | Graphic Interface          |     *--------------*                                                                                                                                                                                                          
  329.   |                            |<----|  Keyboard    |                                                                                                                                                                                                          
  330.   | Event Control Software     |     *--------------*                                                                                                                                                                                                          
  331.   *----------------------------*                                                                                                                                                                                                                               
  332.   *----------------* *------------------*                                                                                                                                                                                                                      
  333.   |*--------------*| |*--------------*  |                                                                                                                                                                                                                      
  334.   ||event block 1 || ||event block 1 |  |                                                                                                                                                                                                                      
  335.   |*--------------*| |*--------------*  |                                                                                                                                                                                                                      
  336.   |*--------------*| |*--------------*  |                                                                                                                                                                                                                      
  337.   ||event block 2 || ||event block 2 |  |                                                                                                                                                                                                                      
  338.   |*--------------*| |*--------------*  |                                                                                                                                                                                                                      
  339.   |*--------------*| |*--------------*  |                                                                                                                                                                                                                      
  340.   ||event block 3 || ||event block 3 |  |                                                                                                                                                                                                                      
  341.   |*--------------*| |*--------------*  |                                                                                                                                                                                                                      
  342.   |                | |                  |                                                                                                                                                                                                                      
  343.   |  Program 1     | |   Program 2      |                                                                                                                                                                                                                      
  344.   *----------------* *------------------*                                                                                                                                                                                                                      
  345.                                                                                                                                                                                                                                                                
  346.   One event handles the starting of the program, one                                                                                                                                                                                                           
  347.   handles processing selected data, one handles stopping                                                                                                                                                                                                       
  348.   the program.  Many additional types of event are                                                                                                                                                                                                             
  349.   possible.  The program generation feature of Builder/2                                                                                                                                                                                                       
  350.   simplifies handling events by generating most of the                                                                                                                                                                                                         
  351.   event handling code.                                                                                                                                                                                                                                         
  352.                                                                                                                                                                                                                                                                
  353.                                                                                                                                                                                                                                                                
  354.   BLOCK STRUCTURING                                                                                                                                                                                                                                            
  355.                                                                                                                                                                                                                                                                
  356.   Each of the blocks of code for handling events has a                                                                                                                                                                                                         
  357.   start point and an end point or way of exiting.  It is                                                                                                                                                                                                       
  358.   not possible to jump into the middle of a block of event                                                                                                                                                                                                     
  359.   code.  The practice of coding in distinct functional                                                                                                                                                                                                         
  360.   blocks is called block structuring.                                                                                                                                                                                                                          
  361.                                                                                                                                                                                                                                                                
  362.   The preceding diagram shows only event blocks, but other                                                                                                                                                                                                     
  363.   types of blocks exist.  The blocks which contain code,                                                                                                                                                                                                       
  364.   but are not activated by external events, are called                                                                                                                                                                                                         
  365.   procedure blocks.  Events control the execution of the                                                                                                                                                                                                       
  366.   program, so the procedure blocks are started from a block                                                                                                                                                                                                    
  367.   of code that has been activated by an event.                                                                                                                                                                                                                 
  368.                                                                                                                                                                                                                                                                
  369.   Some languages, such as BASIC or C, can be written in                                                                                                                                                                                                        
  370.   block structured form or free form, depending on the                                                                                                                                                                                                         
  371.   programmer's preference.  Other languages, such as PASCAL                                                                                                                                                                                                    
  372.   and ASL, require all code to be in blocks.                                                                                                                                                                                                                   
  373.                                                                                                                                                                                                                                                                
  374.   Using block structuring for the code may seem to involve                                                                                                                                                                                                     
  375.   more work.  It does impose an additional requirement, but                                                                                                                                                                                                    
  376.   there are many benefits that arise from the ease of                                                                                                                                                                                                          
  377.                                                                                                                                                                                                                                                                
  378.   maintenance of the code, and from reliability.  Indeed,                                                                                                                                                                                                      
  379.   some types of programming could not be done practically                                                                                                                                                                                                      
  380.   without block structure to the coding.                                                                                                                                                                                                                       
  381.                                                                                                                                                                                                                                                                
  382.                                                                                                                                                                                                                                                                
  383.   APPLICATIONS WITH MULTIPLE PROGRAMS                                                                                                                                                                                                                          
  384.                                                                                                                                                                                                                                                                
  385.   The preceding examples consider each program as a                                                                                                                                                                                                            
  386.   self-contained unit.  It is also possible to group                                                                                                                                                                                                           
  387.   programs together in an application.  Each of the                                                                                                                                                                                                            
  388.   programs would handle part of the processing and would                                                                                                                                                                                                       
  389.   communicate the results to the controlling program.                                                                                                                                                                                                          
  390.                                                                                                                                                                                                                                                                
  391.   *----------------------------*     *-------------*                                                                                                                                                                                                           
  392.   | Operating System           |     |  1  |*------|                                                                                                                                                                                                           
  393.   |                            |---->|-----*|      |Display                                                                                                                                                                                                    
  394.   | Multi-tasking Interface    |     |      |  2   |                                                                                                                                                                                                           
  395.   |                            |     *-------------*                                                                                                                                                                                                           
  396.   | Graphic Interface          |     *--------------*                                                                                                                                                                                                          
  397.   |                            |<----|  Keyboard    |                                                                                                                                                                                                          
  398.   | Event Control Software     |     *--------------*                                                                                                                                                                                                          
  399.   |                            |                                                                                                                                                                                                                               
  400.   | Shared Data and Events     |                                                                                                                                                                                                                               
  401.   *----------------------------*                                                                                                                                                                                                                               
  402.   *----------------*      *------------------*                                                                                                                                                                                                                 
  403.   |*--------------*|      |*---------------* |                                                                                                                                                                                                                 
  404.   ||event block 1 ||      ||event block 1  | |                                                                                                                                                                                                                 
  405.   |*--------------*|<---->|*---------------* |                                                                                                                                                                                                                 
  406.   |*--------------*|      |*---------------* |                                                                                                                                                                                                                 
  407.   ||event block 2 ||      ||event block 2  | |                                                                                                                                                                                                                 
  408.   |*--------------*|      |*---------------* |                                                                                                                                                                                                                 
  409.   |*--------------*|      |*---------------* |                                                                                                                                                                                                                 
  410.   ||event block 3 ||      ||event block 3  | |                                                                                                                                                                                                                 
  411.   |*--------------*|      |*---------------* |                                                                                                                                                                                                                 
  412.   |                |      |                  |                                                                                                                                                                                                                 
  413.   |  Program 1     |      |   Program 2      |                                                                                                                                                                                                                 
  414.   *----------------*      *------------------*                                                                                                                                                                                                                 
  415.                                                                                                                                                                                                                                                                
  416.   In Builder/2 there is a hierarchy of program, master, and                                                                                                                                                                                                    
  417.   application.  These different types of program work                                                                                                                                                                                                          
  418.   together and can share messages and data in defined ways.                                                                                                                                                                                                    
  419.   This hierarchy is covered in greater detail in later                                                                                                                                                                                                         
  420.   sections.                                                                                                                                                                                                                                                    
  421.                                                                                                                                                                                                                                                                
  422.                                                                                                                                                                                                                                                                
  423.   OBJECT-ORIENTED PROGRAMMING WITH ASL                                                                                                                                                                                                                         
  424.   ____________________________________                                                                                                                                                                                                                         
  425.                                                                                                                                                                                                                                                                
  426.   The definitions already covered are general ones.                                                                                                                                                                                                            
  427.   Different programming environments implement them in                                                                                                                                                                                                         
  428.   different ways.  Usually, the amount of code needed to                                                                                                                                                                                                       
  429.   support event driven, multitasking, applications with                                                                                                                                                                                                        
  430.   graphic interfaces is substantial.                                                                                                                                                                                                                           
  431.                                                                                                                                                                                                                                                                
  432.   To simplify coding, much of the functionality is placed                                                                                                                                                                                                      
  433.   into libraries, which are collections of subroutines or                                                                                                                                                                                                      
  434.   functions.  Using libraries helps to code these                                                                                                                                                                                                              
  435.   applications, but there is still a lot of code to                                                                                                                                                                                                            
  436.   understand and maintain.                                                                                                                                                                                                                                     
  437.                                                                                                                                                                                                                                                                
  438.   One way to simplify the task of programming while still                                                                                                                                                                                                      
  439.   providing advanced features, is to use an object-oriented                                                                                                                                                                                                    
  440.   language.  As with the other definitions, there are                                                                                                                                                                                                          
  441.   different ways to implement this feature.  All                                                                                                                                                                                                               
  442.   implementations of object-oriented languages use                                                                                                                                                                                                             
  443.   constructions called OBJECTS.  These associate data,                                                                                                                                                                                                         
  444.   events, and code together in a specific way.                                                                                                                                                                                                                 
  445.                                                                                                                                                                                                                                                                
  446.   *----------------------------*     *-------------*                                                                                                                                                                                                           
  447.   | Operating System           |     |  1  |*------|                                                                                                                                                                                                           
  448.   |                            |---->|-----*|      |Display                                                                                                                                                                                                    
  449.   | Multi-tasking Interface    |     |      |  2   |                                                                                                                                                                                                           
  450.   |                            |     *-------------*                                                                                                                                                                                                           
  451.   | Graphic Interface          |      (window 1 has an                                                                                                                                                                                                         
  452.   |                            |      object displayed)                                                                                                                                                                                                        
  453.   | Event Control Software     |                                                                                                                                                                                                                               
  454.   |                            |                                                                                                                                                                                                                               
  455.   | Shared Data and Events     |                                                                                                                                                                                                                               
  456.   |                            |     *--------------*                                                                                                                                                                                                          
  457.   | Code and Data for Objects  |<----|  Keyboard    |                                                                                                                                                                                                          
  458.   *----------------------------*     *--------------*                                                                                                                                                                                                          
  459.   *----------------*      *------------------*                                                                                                                                                                                                                 
  460.   |*--------------*|      |*--------------*  |                                                                                                                                                                                                                 
  461.   ||event block 1 ||      ||event block 1 |  |                                                                                                                                                                                                                 
  462.   || open object  ||<---->|*--------------*  |                                                                                                                                                                                                                 
  463.   || set attribute||      |*--------------*  |                                                                                                                                                                                                                 
  464.   |*--------------*|      ||event block 2 |  |                                                                                                                                                                                                                 
  465.   |*--------------*|      |*--------------*  |                                                                                                                                                                                                                 
  466.   ||event block 2 ||      |*--------------*  |                                                                                                                                                                                                                 
  467.   || call action  ||      ||event block 3 |  |                                                                                                                                                                                                                 
  468.   |*--------------*|      |*--------------*  |                                                                                                                                                                                                                 
  469.   |                |      |                  |                                                                                                                                                                                                                 
  470.   |  Program 1     |      |   Program 2      |                                                                                                                                                                                                                 
  471.   *----------------*      *------------------*                                                                                                                                                                                                                 
  472.                                                                                                                                                                                                                                                                
  473.   For example consider the SLE object class in ASL.  An SLE                                                                                                                                                                                                    
  474.   is a SINGLE-LINE ENTRY field which can display text or                                                                                                                                                                                                       
  475.   accept input from the user.  The word CLASS indicates the                                                                                                                                                                                                    
  476.   master copy or template for the objects.  Multiple                                                                                                                                                                                                           
  477.   copies, or instances, of the object can be created from                                                                                                                                                                                                      
  478.   this template.  This allows several SLEs on a window.                                                                                                                                                                                                        
  479.   Each SLE provides a box for entering or displaying data.                                                                                                                                                                                                     
  480.   To create an SLE, you must open an instance of the SLE                                                                                                                                                                                                       
  481.   object.  When the SLE object is opened, it must be opened                                                                                                                                                                                                    
  482.   in a certain context.  For an SLE, this means that the                                                                                                                                                                                                       
  483.   entry must be defined for a window.                                                                                                                                                                                                                          
  484.                                                                                                                                                                                                                                                                
  485.   Each object has attributes that define how a particular                                                                                                                                                                                                      
  486.   instance of the object will appear to the user.  The SLE                                                                                                                                                                                                     
  487.   object has attributes for location and size, for the                                                                                                                                                                                                         
  488.   variable that matches this SLE, whether the SLE is                                                                                                                                                                                                           
  489.   selectable or not, the number and location of copies of                                                                                                                                                                                                      
  490.   the SLE, how text in the entry box is displayed, and                                                                                                                                                                                                         
  491.   links to help for how to use this control.  Rather than                                                                                                                                                                                                      
  492.   write code to handle all these attributes each time an                                                                                                                                                                                                       
  493.   entry is needed, the programmer can simply define the                                                                                                                                                                                                        
  494.   attributes.  Code already associated with the SLE object                                                                                                                                                                                                     
  495.   will control the presentation of the SLE to the user,                                                                                                                                                                                                        
  496.   ensuring that it appears in the way that the programmer                                                                                                                                                                                                      
  497.   requires.                                                                                                                                                                                                                                                    
  498.                                                                                                                                                                                                                                                                
  499.   The following code opens an instance of the SLE object                                                                                                                                                                                                       
  500.   class called mysle1 on the SampWind window.  The                                                                                                                                                                                                             
  501.                ______        ________                                                                                                                                                                                                                          
  502.   location, size and text for the control are defined.                                                                                                                                                                                                         
  503.   Attributes which are not defined are given default                                                                                                                                                                                                           
  504.   values.                                                                                                                                                                                                                                                      
  505.                                                                                                                                                                                                                                                                
  506.     OPEN SLE  mysle1,SampWind,                                                                                                                                                                                                                                 
  507.          x=70, y=150,           ! Location of entry field                                                                                                                                                                                                      
  508.          sizey=100,             ! Horizontal size of field                                                                                                                                                                                                     
  509.                                 ! vertical height is one character                                                                                                                                                                                             
  510.          expression="days1"     ! Variable to associate with field                                                                                                                                                                                             
  511.                                                                                                                                                                                                                                                                
  512.   If attributes have default values, these are used for the                                                                                                                                                                                                    
  513.   initialization of the attributes.  ENABLED is normally                                                                                                                                                                                                       
  514.   set to 1 to enable the selection of the SLE.  This value                                                                                                                                                                                                     
  515.   can be overwritten as the example below shows:                                                                                                                                                                                                               
  516.                                                                                                                                                                                                                                                                
  517.     LET mysle1'enabled=0     ! The entry field cannot hold a cursor                                                                                                                                                                                            
  518.                                                                                                                                                                                                                                                                
  519.   Note that the ENABLED attribute for the SLE1 entry field                                                                                                                                                                                                     
  520.                                           ____                                                                                                                                                                                                                 
  521.   is indicated by joining the object name and attribute                                                                                                                                                                                                        
  522.   together with the quote symbol.                                                                                                                                                                                                                              
  523.                                                                                                                                                                                                                                                                
  524.   There are also events associated with the SLE object                                                                                                                                                                                                         
  525.   class.  If the data in the SLE has changed, and the user                                                                                                                                                                                                     
  526.   selects a window control, the event handling code causes                                                                                                                                                                                                     
  527.   a DATA event to be sent to the program that opened the                                                                                                                                                                                                       
  528.   control.  The ON DATA event block in that program is                                                                                                                                                                                                         
  529.   given control and whatever instructions are in it are                                                                                                                                                                                                        
  530.   executed.  After execution of the ON DATA block, the                                                                                                                                                                                                         
  531.   program will go into a waiting state until another event                                                                                                                                                                                                     
  532.   occurs.                                                                                                                                                                                                                                                      
  533.                                                                                                                                                                                                                                                                
  534.     ON DATA                                                                                                                                                                                                                                                    
  535.         IF days1 = "friday" THEN                                                                                                                                                                                                                               
  536.         LET day =5                                                                                                                                                                                                                                             
  537.     END                                                                                                                                                                                                                                                        
  538.                                                                                                                                                                                                                                                                
  539.   There can also be actions connected with objects.  The                                                                                                                                                                                                       
  540.   SLE object has the REFRESH action associated with it.                                                                                                                                                                                                        
  541.   This just repaints the SLE field on the screen.                                                                                                                                                                                                              
  542.                                                                                                                                                                                                                                                                
  543.       LET days1 = "Today"                                                                                                                                                                                                                                      
  544.       CALL mysle1'refresh                                                                                                                                                                                                                                      
  545.                                                                                                                                                                                                                                                                
  546.   The coding for actions is similar to the way that                                                                                                                                                                                                            
  547.   attributes are specified for an object, although actions                                                                                                                                                                                                     
  548.   use CALL rather than LET.  This is covered in more detail                                                                                                                                                                                                    
  549.   in later sections.                                                                                                                                                                                                                                           
  550.                                                                                                                                                                                                                                                                
  551.                                                                                                                                                                                                                                                                
  552.   Objects and subroutines                                                                                                                                                                                                                                      
  553.                                                                                                                                                                                                                                                                
  554.   Objects may seem to be nothing more than an unusual way                                                                                                                                                                                                      
  555.   of writing subroutines, but there is more to an object                                                                                                                                                                                                       
  556.   than that.  Certainly, many of the functions of objects                                                                                                                                                                                                      
  557.   could be duplicated with a collection of subroutines with                                                                                                                                                                                                    
  558.   passed parameters instead of attributes.  There would                                                                                                                                                                                                        
  559.   need to be a subroutine for each action, as well as a                                                                                                                                                                                                        
  560.   subroutine to open and close the object.                                                                                                                                                                                                                     
  561.                                                                                                                                                                                                                                                                
  562.   Remembering all the possible parameters for each                                                                                                                                                                                                             
  563.   subroutine, and which subroutines perform which actions,                                                                                                                                                                                                     
  564.   indicates a reason for simplifying the coding process by                                                                                                                                                                                                     
  565.   using objects.  There are many attributes to the SLE                                                                                                                                                                                                         
  566.   object that receive default values if they are not                                                                                                                                                                                                           
  567.   explicitly defined.  If an SLE was a subroutine, all the                                                                                                                                                                                                     
  568.   values would have to be passed each time the subroutine                                                                                                                                                                                                      
  569.   was called.                                                                                                                                                                                                                                                  
  570.                                                                                                                                                                                                                                                                
  571.   The object-oriented nature of the SLE object also aids                                                                                                                                                                                                       
  572.   program design and testing.  A program can be written                                                                                                                                                                                                        
  573.   with the minimum number of attributes defined, as in the                                                                                                                                                                                                     
  574.   previous examples, and more attributes defined later                                                                                                                                                                                                         
  575.   after the design has been tested.  Other attributes that                                                                                                                                                                                                     
  576.   might be used later include HORZJUST, TEXTLIMIT, and                                                                                                                                                                                                         
  577.   HELP.  These are the horizontal justification setting,                                                                                                                                                                                                       
  578.   the maximum length of text that can be displayed, and a                                                                                                                                                                                                      
  579.   link to any help text that can to displayed to aid the                                                                                                                                                                                                       
  580.   user's understanding of the SLE's function.                                                                                                                                                                                                                  
  581.                                                                                                                                                                                                                                                                
  582.   There is another reason for using objects.  Objects are                                                                                                                                                                                                      
  583.   much more powerful when used in an environment with many                                                                                                                                                                                                     
  584.   different applications, such as in &core..  With use,                                                                                                                                                                                                        
  585.   objects will become more intuitive and their advantages                                                                                                                                                                                                      
  586.   over subroutines will become apparent.                                                                                                                                                                                                                       
  587.                                                                                                                                                                                                                                                                
  588.   WINDOW DESIGN TOOLS                                                                                                                                                                                                                                          
  589.   ___________________                                                                                                                                                                                                                                          
  590.                                                                                                                                                                                                                                                                
  591.   A large percentage of the code for programs, and a large                                                                                                                                                                                                     
  592.   part of a programmer's work, can be for communicating                                                                                                                                                                                                        
  593.   with the end user.  Since coding for placing a menu on a                                                                                                                                                                                                     
  594.   window or accepting text from an entry field is so                                                                                                                                                                                                           
  595.   common, it is sensible to create some tools for handling                                                                                                                                                                                                     
  596.   these functions.  Some code is already in the operating                                                                                                                                                                                                      
  597.   system and, particularly with modern systems, this code                                                                                                                                                                                                      
  598.   can greatly simplify dialogs with the user.                                                                                                                                                                                                                  
  599.                                                                                                                                                                                                                                                                
  600.   You have another level of tools for screen design with                                                                                                                                                                                                       
  601.   Builder/2 editors.  The Menu editor helps the programmer                                                                                                                                                                                                     
  602.   to create and maintain menus for window menu bars.  The                                                                                                                                                                                                      
  603.   Window editor provides a palette of available window                                                                                                                                                                                                         
  604.   parts, such as push buttons, radio boxes, check boxes,                                                                                                                                                                                                       
  605.   list boxes, scroll bars, and graphic areas.  The                                                                                                                                                                                                             
  606.   programmer selects a tool from the palette and places it                                                                                                                                                                                                     
  607.   on a template window.                                                                                                                                                                                                                                        
  608.                                                                                                                                                                                                                                                                
  609.   After the programmer has produced a window with all the                                                                                                                                                                                                      
  610.   entry and display tools in the correct places, the                                                                                                                                                                                                           
  611.   Program editor creates code based on the window.  The                                                                                                                                                                                                        
  612.   Program editor also produces code for the various events                                                                                                                                                                                                     
  613.   that can happen in the application.                                                                                                                                                                                                                          
  614.                                                                                                                                                                                                                                                                
  615.   A window can be easily created with the editing tools.                                                                                                                                                                                                       
  616.   After the window is made, the code for opening the                                                                                                                                                                                                           
  617.   object, reacting to events, and modifying data must be                                                                                                                                                                                                       
  618.   added.  The Program editor works closely with Window                                                                                                                                                                                                         
  619.   editor to simplify writing code.  Most of the code                                                                                                                                                                                                           
  620.   written for handling window objects is automatically                                                                                                                                                                                                         
  621.   generated.                                                                                                                                                                                                                                                   
  622.                                                                                                                                                                                                                                                                
  623.   The following code was generated automatically by the                                                                                                                                                                                                        
  624.   Program editor for the a simple window.                                                                                                                                                                                                                      
  625.   Note that since the execution is controlled by events,                                                                                                                                                                                                       
  626.   the code blocks do not need to be in a specific order.                                                                                                                                                                                                       
  627.                                                                                                                                                                                                                                                                
  628.     ! This block is executed when the user selects Close on                                                                                                                                                                                                    
  629.     ! the system menu                                                                                                                                                                                                                                          
  630.     ON QUIT                                                                                                                                                                                                                                                    
  631.     DO                                                                                                                                                                                                                                                         
  632.       IF A.System.Object = "T..W_SPBDEMO"                                                                                                                                                                                                                      
  633.         RUN PROGRAM A.System.ThisTask,STOP                                                                                                                                                                                                                     
  634.     END                                                                                                                                                                                                                                                        
  635.     ! This block is executed whenever a selectable control or menu                                                                                                                                                                                             
  636.     ! entry is activated.                                                                                                                                                                                                                                      
  637.     ON SELECT                                                                                                                                                                                                                                                  
  638.     DO                                                                                                                                                                                                                                                         
  639.       CASE A.System.Object        ! Which screen object?                                                                                                                                                                                                       
  640.         WHEN "T.W_SPBDEMO.PUSH1"  ! PUSH Control marked                                                                                                                                                                                                        
  641.         DO                                                                                                                                                                                                                                                     
  642.           ! Insert your code here                                                                                                                                                                                                                              
  643.         END                                                                                                                                                                                                                                                    
  644.         ! no other controls in this list                                                                                                                                                                                                                       
  645.       END                         ! End case, A.System.Object                                                                                                                                                                                                  
  646.     END                                                                                                                                                                                                                                                        
  647.                                                                                                                                                                                                                                                                
  648.     ! This block is executed when the program is initially invoked.                                                                                                                                                                                            
  649.     ! It is normally used to initialize variables needed during                                                                                                                                                                                                
  650.     ! program execution and to open the main window of the                                                                                                                                                                                                     
  651.     ! application.                                                                                                                                                                                                                                             
  652.     ON START                                                                                                                                                                                                                                                   
  653.     DO                                                                                                                                                                                                                                                         
  654.       ! Open window based on source window "SPBDEMO.WIN"                                                                                                                                                                                                       
  655.       OPEN WINDOW W_SPBDEMO, , "I.windows.SPBDEMO"                                                                                                                                                                                                             
  656.       ! Window name W_SPBDEMO generated from window file name                                                                                                                                                                                                  
  657.     END                                                                                                                                                                                                                                                        
  658.                                                                                                                                                                                                                                                                
  659.     ! This block is executed when terminating the program.                                                                                                                                                                                                     
  660.     ! Use this block to carry out any housekeeping required before                                                                                                                                                                                             
  661.     ! termination.                                                                                                                                                                                                                                             
  662.     ON STOP                                                                                                                                                                                                                                                    
  663.     DO                                                                                                                                                                                                                                                         
  664.       ! Insert your code to tidy up here                                                                                                                                                                                                                       
  665.       STOP ! Final action, stop the program                                                                                                                                                                                                                    
  666.     END                                                                                                                                                                                                                                                        
  667.                                                                                                                                                                                                                                                                
  668.   The START block code is generated to open the window.                                                                                                                                                                                                        
  669.   The program then goes into a wait state until another                                                                                                                                                                                                        
  670.   event occurs.  When the push button is selected, the                                                                                                                                                                                                         
  671.   SELECT block is activated to process whatever window                                                                                                                                                                                                         
  672.   control was selected.  (For this window, there is only                                                                                                                                                                                                       
  673.   one control.)  The two other blocks control the ending of                                                                                                                                                                                                    
  674.   the program.  If QUIT is selected from the system menu,                                                                                                                                                                                                      
  675.   the QUIT block will be activated.                                                                                                                                                                                                                            
  676.                                                                                                                                                                                                                                                                
  677.   The QUIT block runs the STOP block in the same program.                                                                                                                                                                                                      
  678.   It sends an event trigger to its own program.  The                                                                                                                                                                                                           
  679.   program will receive the event and run the STOP block.                                                                                                                                                                                                       
  680.   The STOP block includes the STOP statement which will                                                                                                                                                                                                        
  681.   shut down the program.                                                                                                                                                                                                                                       
  682.                                                                                                                                                                                                                                                                
  683.   Note that there are comments in the generated code to                                                                                                                                                                                                        
  684.   indicate what the different blocks are.  There is also an                                                                                                                                                                                                    
  685.   indication of where you will need to add code of your own                                                                                                                                                                                                    
  686.   to customize your application.                                                                                                                                                                                                                               
  687.                                                                                                                                                                                                                                                                
  688.   If you are not a programmer, and do not wish to develop                                                                                                                                                                                                      
  689.   code for an application, you can still use the window                                                                                                                                                                                                        
  690.   editor and the Menu editor to develop the interface for                                                                                                                                                                                                      
  691.   an application.  The interface consists of all the                                                                                                                                                                                                           
  692.   windows, controls, and displayed text that the end user                                                                                                                                                                                                      
  693.   sees when they run the program.  The design of the                                                                                                                                                                                                           
  694.   application can include the actual windows that the end                                                                                                                                                                                                      
  695.   user sees.  The additional code needed to make the                                                                                                                                                                                                           
  696.   application functional can be added later by a                                                                                                                                                                                                               
  697.   programmer.                                                                                                                                                                                                                                                  
  698.                                                                                                                                                                                                                                                                
  699.                                                                                                                                                                                                                                                                
  700.   HELP TEXT FOR THE END USER                                                                                                                                                                                                                                   
  701.   __________________________                                                                                                                                                                                                                                   
  702.                                                                                                                                                                                                                                                                
  703.   Builder/2 provides the ability to link help text with the                                                                                                                                                                                                    
  704.   different parts of your application.  There is a Help                                                                                                                                                                                                        
  705.   Index with a list of all the subjects for which help is                                                                                                                                                                                                      
  706.   available, or context sensitive help can be invoked for a                                                                                                                                                                                                    
  707.   particular control.                                                                                                                                                                                                                                          
  708.                                                                                                                                                                                                                                                                
  709.   The IBM Help Manager Information Presentation Facility                                                                                                                                                                                                       
  710.   (IPF) is part of OS/2.  It displays the help text                                                                                                                                                                                                            
  711.   associated with different window controls in your                                                                                                                                                                                                            
  712.   application.  As part of the development of an                                                                                                                                                                                                               
  713.   application, you can set links between your windows and                                                                                                                                                                                                      
  714.   help text files.                                                                                                                                                                                                                                             
  715.                                                                                                                                                                                                                                                                
  716.                                                                                                                                                                                                                                                                
  717.   TRADEMARKS                                                                                                                                                                                                                                                   
  718.   __________                                                                                                                                                                                                                                                   
  719.                                                                                                                                                                                                                                                                
  720.   The following terms, denoted by an asterisk (*), used in                                                                                                                                                                                                     
  721.   this publication, are trademarks or service marks of                                                                                                                                                                                                         
  722.   IBM Corporation in the United States of America or other                                                                                                                                                                                                     
  723.   countries:                                                                                                                                                                                                                                                   
  724.                                                                                                                                                                                                                                                                
  725.   Common User Access           OS/2                                                                                                                                                                                                                            
  726.   CUA                          SAA                                                                                                                                                                                                                             
  727.   DB2/2                        Systems Application Architecture                                                                                                                                                                                                
  728.   Presentation Manager                                                                                                                                                                                                                                         
  729.                                                                                                                                                                                                                                                                
  730.