R ACCELL/SQL: Managing an Application E )> #40-> 57657(9054 !(*7(3,495 (20-5740( #! 22 70./98 7,8,7;,+ 7049,+ 04 9/, #409,+ !9(9,8 5- 3,70*( 5 6(79 5- 9/08 +5*:3,49 3(> ), 7,675+:*,+ 97(483099,+ 97(48*70),+ 8957,+ 04 ( 7,970,;(2 8>89,3 57 97(482(9,+ 0495 (4> 2(4.:(., 57 *536:9,7 2(4.:(., 04 (4> -573 57 )> (4> 3,(48 ,2,*97540* 3,*/(40*(2 3(.4,90* 5690*(2 */,30*(2 3(4:(2 57 59/,7<08, <09/5:9 9/, 67057 <7099,4 *548,49 5- #40-> 57657(9054 #40-> 57657(9054 3(1,8 45 7,67,8,49(90548 57 <(77(490,8 <09/ 7,86,*9 95 9/, *549,498 5- 9/08 +5*:3,49 (4+ 86,*0-0*(22> +08*2(038 (4> 03620,+ <(77(490,8 5- 3,7*/(49()0209> 57 -094,88 -57 (4> 6(790*:2(7 6:7658, :79/,7 #40-> 57657(9054 7,8,7;,8 9/, 70./9 95 7,;08, 9/08 +5*:3,49 (4+ 95 3(1, */(4.,8 -753 903, 95 903, 04 098 *549,49 <09/5:9 ),04. 5)20.(9,+ 95 4590-> (4> 6,7854 58:*/ 7,;080548 57 */(4.,8 "/, !5-9<(7, +,8*70),+ 04 9/08 +5*:3,49 08 -:7408/,+ :4+,7 ( !5-9<(7, 0*,48, .7,,3,49 "/, !5-9<(7, 3(> ), :8,+ 57 *560,+ 542> 04 (**57+(4*, <09/ 9/, 9,738 5- 9/, 20*,48, (.7,,3,49 9 08 (.(0489 9/, 2(< 95 *56> 9/, !5-9<(7, 54 9(6, +081 57 (4> 59/,7 3,+0:3 -57 (4> 6:7658, 59/,7 9/(4 9/(9 +,8*70),+ 04 9/, 20*,48, (.7,,3,49 #40-> 57657(9054 ;(2:,8 (4+ (667,*0(9,8 (4> *533,498 >5: 3(> /(;, *54*,7404. 5:7 675+:*98 57 9/08 +5*:3,49 2,(8, (++7,88 *533,498 95 75+:*9 (4(.,7 #40-> 57657(9054 7,4( 5:2,;(7+ !9, !(*7(3,495 & #' $! (4+ 9/, #40-> 5.5 (7, 7,.089,7,+ 97(+,3(718 5- #40-> 57657(9054 #40-> (9(!,7;,7 08 ( 97(+,3(71 5- #40-> 57657(9054 #& 08 ( 7,.089,7,+ 97(+,3(71 5- 9/, 6,4 75:6 04 9/, #409,+ !9(9,8 (4+ 59/,7 *5:4970,8 "/, & %04+5< !>89,3 08 ( 675+:*9 5- 9/, (88(*/:8,998 48909:9, 5",*/4525.> 590- ! (4+ !590- (7, 97(+,3(718 5- 6,4 !5-9<(7, 5:4+(9054 4* !'! 08 ( 7,.089,7,+ 97(+,3(71 (4+ ! !,7;,7 @0)7(7> (4+ 6,4 !,7;,7 (7, 97(+,3(718 5- !>)(8, 4* & 08 ( 7,.089,7,+ 97(+,3(71 5- 4-5730= !5-9<(7, 4* ( 8:)80+0(7> 5- ! 08 ( 97(+,3(71 5- 536:9,7 885*0(9,8 49,74(9054(2 4* 08 ( 7,.089,7,+ 97(+,3(71 5- 7(*2, 57657(9054 !:4 08 ( 7,.089,7,+ 97(+,3(71 (4+ !:4$0,< !:4@ !:4@ &,%! !:4! @! (4+ 6,4 %04+5<8 (7, 97(+,3(718 5- !:4 0*758>89,38 22 ! 97(+,3(718 (7, 97(+,3(718 57 7,.089,7,+ 97(+,3(718 5- ! 49,74(9054(2 4* ! 89(9054 08 20*,48,+ ,=*2:80;,2> 95 !:4 0*758>89,38 4* 5;,22 08 ( 7,.089,7,+ 97(+,3(71 5- 5;,22 4* (*04958/ 08 ( 97(+,3(71 5- 662, 536:9,7 4* 0*7585-9 ! !@! (4+ %04+5<8 (7, 7,.089,7,+ 97(+,3(718 5- 0*7585-9 57657(9054 22 59/,7 675+:*98 57 8,7;0*,8 3,49054,+ /,7,04 3(> ), 7,.089,7,+ 97(+,3(718 97(+,3(718 57 8,7;0*, 3(718 5- 9/,07 7,86,*90;, 3(4:-(*9:7,78 *536(40,8 57 57.(40?(90548 (79 :3),7 @ 2 -,&)'30!2)-, !0)!"*%1 %/3)0%$ -,&)'30!2)-, !0)!"*%1 !2!"!1% $%,2)&)#!2)-, !0)!"*%1 1),' !, ..*)#!2)-, -,&)'30!2)-, )*% -,&)'30),' ! %*%!1% ,4)0-,+%,2 (% !12%0 -,&)'30!2)-, )*% -,&)'30),' !, ..*)#!2)-, ,4)0-,+%,2 (% ..*)#!2)-, -,&)'30!2)-, )*% 0%!2),' !, ..*)#!2)-, -,&)'30!2)-, )*% .%#)&5),' 2(% -#!2)-, -& 2(% ..*)#!2)-, -,&)'30!2)-, )*% (% -+.)*%$ ..*)#!2)-, -,&)'30!2)-, )*% #-.% -& 2(% -+.)*%$ ..*)#!2)-, -,&)'30!2)-, )*% 0%4%,2),' 2(% 4%00)$),' -& ..*)#!2)-, -,&)'30!2)-, )*% !0)!"*%1 -,&)'30),' ! 1%0 ,4)0-,+%,2 %22),' -,&)'30!2)-, !0)!"*%1 %22),' !0)!"*%1 ), -,&)'30!2)-, )*%1 %22),' !0)!"*%1 !2 2(% .%0!2),' 512%+ -++!,$ %4%* %2%0+),),' ()#( !0)!"*%1 312 % %2 ), ! -,&)'30!2)-, )*% 1),' ""0%4)!2)-,1 ), -,&)'30!2)-, !0)!"*% %22),'1 1),' %&),%$ !*3%1 ), -,&)'30!2)-, !0)!"*% %22),'1 -,&)'30!2)-, !0)!"*% %!0#( 0)-0)25 )1.*!5 -0+!21 )1.*!5),' 300%,#5 +-3,21 300%,#5 +-3,2 )1.*!5 !0)!"*%1 !,$ -0+!2 %+.*!2%1 )1.*!5),' !2%1 -0 )+%1 -,&)'30!2)-, !0)!"*% !2%'-0)%1 -#!2),' -0+ !,$ %*. 0#()4% )*%1 , 3*2).*% )0%#2-0)%1 .%#)&5),' 3*2).*% )0%#2-05 !+%1 !,$ !,!'%0 3 4 %&*$ ,,(& /&+* +-). *! 0* /&+*. +*/-+((&*$ %" /+-$" #+- /%" ,,(& /&+* +*/-+((&*$ %" /+-$" #+- * *!&1&!0( +-) +- 0* /&+* 0*&*$ %" &4" ,""!&*$ +-) ".. /+-&*$ "2/ *! &*-3 (0". *&,0(/&*$ "2/ *! &*-3 (0". -+) +-) -&,/ *&,0(/&*$ "2/ *! &*-3 (0". -+) 5++' ,/&)&4&*$ "2/ *! &*-3 /+-$" +*#&$0-/&+* Maintaining a Secure Application Environment . . . . . . . . . . . . . . . . . 49 .&*$ ,"-/&*$ 3./") " 0-&/3 "/0-". .&*$ " 0-&/3 "/0-". .&*$ " 0-&/3 "/0-". !"*/&#3&*$ /%" ."- +*/-+((&*$ ."- ,,(& /&+* ".. -&1&("$". *&/&(&4&*$ ."- ,,(& /&+* -&1&("$". %*$&*$ ."- ,,(& /&+* ".. -&1&("$". +*/-+((&*$ +-) ".. -&1&("$". *&/&(&4&*$ +-) ".. -&1&("$". %*$&*$ +-) ".. -&1&("$". &)&/&*$ ."- ,"-/&+*. Moving, Renaming, and Deleting Application Files . . . . . . . . . . . . . . . 59 +1&*$ * ,,(& /&+* ,,(& /&+* &-" /+-&". ,,(& /&+* &(". +1&*$ -+) +),0/"- /+ +),0/"- "."//&*$ +*#&$0-/&+* -&(". "*)&*$ * ,,(& /&+* "*)&*$ /%" &-" /+-3 "*)&*$ /%" ,,(& /&+* &(". ,!/&*$ +-) -&,/ &(". ,!/&*$ /%" ,,(& /&+* &./ ,!/&*$ /%" ./"- ,,(& /&+* +-) +),&(&*$ *! */"$-/&*$ /%" ,,(& /&+* "("/&*$ * ,,(& /&+* Performing Application Management Tasks . . . . . . . . . . . . . . . . . . . . . 69 %++.&*$ "*0 ,/&+*. -+) "*0 *!("- -+) *1&-+*)"*/ +*/-+(('*% +*!0--#*!4 '* *1'-+*)#*/ &# (# *$+-)/'+* .'*% /&# "#1)*/ /'('/4 .'*% /'('/'#. Appendix A: Building Application Systems . . . . . . . . . . . . . . . . . . . . . . 81 ,,'*% ,,('!/'+*. /+ / .#. -#/'*% /&# ,,('!/'+* / .# , '(# #//'*% #//'*% 3#!0/'*% * ,,('!/'+* '* * ,,('!/'+* 4./#) +2 *%#- 3#!0/#. ,,('!/'+*. 3#!0/'*% * ,,('!/'+* -+) /&# ,#-/'*% 4./#) 3#!0/'*% * ,,('!/'+* -+) #*0 *"(##//'*% , /&# 0*/')# *1'-+*)#*/ &# #*0 *"(#- ,,('!/'+* #!+-" 3#!0/'*% 0*/')# ,,('!/'+* ),(# 0*/')# ,,('!/'+* 4./#) #1#(+,)#*/ '-#!/+-4 /-0!/0-# 0*/')# '-#!/+-4 /-0!/0-# #//'*% , /&# './'*% ,,('!/'+* 3#!0/'*% /&# ,,('!/'+* Appendix B: ACCELL/SQL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . '(#. !!#..#" 4 /'('/'#. '(#. '* /&# #(#.# '* '-#!/+-4 99 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5 6 describes tools and techniques that application administrators and developers can use to manage an application. (This information applies regardless of the RDBMS or the user interface option with which is being run.) How to Use This Manual This manual uses various graphic conventions to help you distinguish between commands that you type, keys that you press, information that displays on your screen, and the different elements of and the user interface. Item Names References to program names, database table and column names, file names, and form field names appear in bold typeface, for example: Use the same procedure to define the address_1 and address_2 fields that you used to define the co_name field. The Target Table field lets you specify which database table this form will directly query and update. Keyboard Keys A word or letter framed to look like a key indicates the corresponding key on your keyboard, for example: RETURN Represents the return key. This key could be labeled as “Enter”, “RTN”, or . ACCELL/SQL Commands Words that appear in bold, italic, sans serif typeface indicate commands that you can execute by pressing a defined key sequence or selecting a menu button; for example: Press ; then press . To move to the last record, press the button on the Next Operations menu. 7 Helpful Information This manual also uses the following conventions to present helpful information such as application tips, warnings, and locations of additional information: Tip Tip contains helpful information. Warning Warning cautions against actions that could cause data loss or damage to the database. Additional Help Additional Help tells you where to find more information about described topics. Dependencies Dependencies points out features or characteristics that differ from one RDBMS to another or from one operating system to another. Syntax Conventions This manual uses the following syntax conventions to describe the format of ACCELL/SQL configuration variables and utilities: boldface Boldface words are command keywords or literal strings that you must type exactly as shown. ACCELL/4GL statement and section keywords are shown in all UPPERCASE, but can be typed in either uppercase or lowercase letters. (Function names such as yesno$( ) are case-sensitive.) italic words Italic words are names, numbers, or expressions that you must provide. Examples are table names, column names, and constants. Italics are also used for manual names and terms defined in the glossary. All-uppercase italics are used for configuration variable names. 8 $ All ACCELL/4GL system function names are suffixed by a dollar sign ($), as in status$( ), to distinguish them from user-defined functions. This dollar sign is a syntax element that must be included in the function name. Do not include a dollar sign when you name or call your own functions. [] Nonbold square brackets indicate that the enclosed word or item is optional and may be left out. Boldface brackets, [ ], are syntax elements that must be included, as in count[character]. || Vertical bars that enclose a stacked list of options mean that you can choose one of the listed options, but only one of them. ... Ellipsis points indicate that you may repeat the immediately preceding item any number of times, as needed. 9 10 Configuring Application Environments 11 This chapter explains how to use configuration variables to set up an ACCELL/SQL application environment. Configuration variables control a variety of functions, which include these: specifying the names and locations of the files that are used by ACCELL/SQL applications specifying memory limits formatting data for display specifying special characters to be used for entering string search criteria This chapter contains the following information: a list of the variables that are required to run any ACCELL/SQL application the descriptions of the files that can contain configuration variables an explanation of the methods that can be used to set configuration variables an explanation of the locations and order in which ACCELL/SQL searches for configuration variable values lists of the types of configuration variables that can be set for an ACCELL/SQL application 12 Configuring Application Environments Configuration Variables Configuration variables are used to set up the environment for an ACCELL/SQL application. configuration variables can be set in several locations, which determine the scope of the variable: 1. To customize an individual user’s environment, set variables at the operating system command level, typically in a .profile or .login file. 2. To specify the variable values to be used throughout the application, set variables in the application configuration file, application.cf. 3. To specify the variable values to be used by all ACCELL/SQL applications that use the associated release, set variables in the master configuration file, unify.cf. 4. To use the default values that are set in the release software, do not set the variables in any of the preceding locations. The following diagram outlines the scope of variables. The numbers in the diagram correspond to the preceding numbers. Locations where configuration variables can be set unify.cf application.cf .profile .login .profile .login Configuring Application Environments 13 Additional Help About Required Configuration Variables See Setting configuration variables for a release “Configuring a Release Environment” on page 17 Setting configuration variables for an application “Configuring an Application Environment” on page 18 Setting configuration variables for an individual user “Configuring a User Environment” on page 23 Priority followed by ACCELL/SQL when searching for configuration variable values “Configuration Variable Search Priority” on page 28 After installing ACCELL/SQL , you must set these configuration variables: ATERMCAP (UNIX only) Directory path and file name of the ACCELL/SQL terminal capabilities file. PATH (UNIX only) Directory path list for the application executable files. TERM Terminal type specification. UNICAP Directory path for the ACCELL/SQL keyboard capabilities file. UNIFY Directory path for the release lib directory. You must set all of the required variables if you use the AGEN, ACPL, ACMB, ALNK, and AMGR utilities directly instead of using ACCELL/E nvironment to develop, integrate, and execute applications. If you always use the ACCELL/SQL startup script (accell) to access ACCELL/E nvironment to develop, compile, integrate, and execute applications, you must set at least PATH and TERM. The accell script automatically sets the ATERMCAP, UNICAP, and UNIFY configuration variables for you. 14 Configuring Application Environments Database Identification Variables In addition to these required variables, you must also set the configuration variables required by your RDBMS to find your database files: RDBMS INFORMIX SE INFORMIX Variable DBPATH Directory path, without the file name, of the application database file and associated files INFORMIXDIR Directory path for the INFORMIX release INFORMIXDIR TBCONFIG Directory path for the INFORMIX release Name of the INFORMIX OnLine system configuration variable file, if not tbconfig DBNAME Name of the database II_SYSTEM Path of the parent directory for the INGRES release software ORACLE_SID ORACLE system identifier for the unique SGA (system global area) to be Online INGRES ORACLE Description used ORACLE_HOME Path of the root directory for the ORACLE RDBMS SYBASE SQL SYBASE Server DSQUERY Unify DataServer Configuring Application Environments Name of the directory that contains the SYBASE SQL Server interfaces file Name of the database server that contains the database to be used DBPATH Directory path, without the file name, for the application database file and associated files DBNAME Simple file name of the application database file (default = file.db) 15 Using an Application Configuration File To be able to use an application configuration file, you must also set the configuration variable or variables that point to the application configuration file. The variables that must be set depend on the RDBMS that you are using with ACCELL/SQL : For every RDBMS except Unify DataServer For Unify DataSer ver 16 Set the ACLCONFIG configuration variable to the directory path and file name of the application configuration file, application.cf. Set the DBPATH and DBNAME configuration variables to the database directory path and file name. The Unify DataServer database configuration file, dbname.cf, is used as the application configuration file when you use ACCELL/SQL with Unify DataServer. Configuring Application Environments Configuring a Release Environment: The Master Configuration File The release environment is configured by the variables that are set in the master configuration file, unify.cf. The master configuration file variables are preset to system default values that are appropriate for your hardware and software configuration. The variables that are set in unify.cf are the variables that most commonly need to be customized for systems like yours. Configuration variable values that are set in unify.cf apply to an entire application system: every application that is used with the current release of ACCELL/SQL . The installation program creates the master configuration file when you install the ACCELL/SQL release. The unify.cf file is located in the ACCELL/SQL release lib directory, which is the directory that is specified by the UNIFY configuration variable. (The release directory is where you installed ACCELL/SQL and is specified by the ACLDIR configuration variable.) The next diagram shows an example release and application directory structure. Yours may be different. Location of the master configuration file Release directory $ACLDIR $UNIFY Master configuration file lib bin include applications unify.cf Values used by all applications Warning The master configuration file, unify.cf, permissions must be set to –rw–rw–rw– (666). If you set the file permissions differently and you run an application process that opens the database, you will receive an error message that a file has the wrong permissions, and the program will end. (The file name will not be indicated in the error message.) Configuring Application Environments 17 Configuring an Application Environment: The Application Configuration File To set configuration variable values that apply to a specific application only, you can create an application configuration file, which is usually named application.cf. You simply copy entries from the master configuration file to the application configuration file and modify them for the application. The application configuration file is an exception file that contains the configuration variables that are customized for a specific application. The configuration variable values that are set in the application configuration file override the master configuration file values for the same variables. Each application directory can contain an application configuration file. The following diagram shows an example directory structure in which each application directory contains its own application configuration file. Location of the application configuration file Release directory $ACLDIR $UNIFY Master configuration file lib include apps unify.cf Application configuration file (values used by the application of the same name) Creating an Application Configuration File bin app1 app2 app1.cf app2.cf app3 app3.cf To create an application configuration file, take the following steps. 1. Move to the application directory. This is the directory that contains the application files, such as the application link file (.al) and form archive file (.fa). If you are using the Unify DataServer RDBMS, move to the database directory—the directory that is specified by the DBPATH configuration variable. 18 Configuring Application Environments 2. Copy the master configuration file (unify.cf) to a file named application.cf in the application directory, where application is the name of your application. The .cf file name suffix is required. For example, if your application link file is named accts.al, the application configuration file is named accts.cf. If you are using Unify DataServer, the application configuration file is usually referred to as the database configuration file, dbname.cf, where dbname is the database file name without the .db file name suffix. For example, if your database file is named accts.db, the application configuration file is named accts.cf. 3. Start your text editor to edit the application.cf file. 4. Optional step; see the following Tip. Delete all of the configuration variable entries that you do not need to customize. The only entries remaining in the file are the ones that you need to customize. 5. Change the values of the variables that you need to customize. For details about how to change configuration variable values, see “Setting Variables in Configuration Files” on page 24. 6. Save your changes and exit the text editor. You should now have a master configuration file named unify.cf and an application configuration file named application.cf. Tip Performance is better if the application configuration file contains only the configuration variable entries that you must customize and does not duplicate the master configuration file. The application configuration file is recompiled every time ACCELL/SQL opens the database or when you execute the config utility. (See “The Compiled Application Configuration File” on page 21.) Warning The application configuration file, application.cf, permissions must be set to –rw–rw–rw– (666). If you set the file permissions differently and you run an application process that opens the database, you will receive an error message that a file has the wrong permissions, and the program will end. (The file name will not be indicated in the error message.) Configuring Application Environments 19 Specifying the Location of the Application Configuration File After creating the application configuration file, you must set the configuration variables that specify the location of the application configuration file. ACCELL/SQL uses different variables to find the configuration file, depending on the RDBMS that you are using. The variables used to find the application configuration file must be set at the operating system command level. If you are using ACCELL/SQL with the Unify DataServer RDBMS, perform step 7, then skip to step 9. If you are using any other RDBMS, skip to step 8, then continue to step 9. 7. If you are using ACCELL/SQL for Unify DataServer, you must set the DBPATH and DBNAME configuration variables to the database directory path and file name. (The application configuration file is usually called the database configuration file when using Unify DataServer.) For example, if the database file name is accts.db, and the database directory is /usr/ASQL/apps/accts, set DBPATH to /usr/ASQL/apps/accts; set DBNAME to accts.db. ACCELL/SQL uses the DBPATH and DBNAME configuration variables to locate the application configuration file. When searching for the application configuration file, ACCELL/SQL starts in the directory specified by the DBPATH configuration variable. ACCELL/SQL searches first for a file named dbname.cf, where dbname is the database file name that is specified in the DBNAME configuration variable, without the .db suffix. If DBNAME is not set, ACCELL/SQL searches for the default application configuration file name, file.cf. Skip to step 9. 8. If you are using ACCELL/SQL for any other RDBMS, such as SYBASE SQL Server or ORACLE, set the ACLCONFIG configuration variable to the directory path name and file name of the application configuration file. You must include the .cf file name suffix. For example, if the application configuration file name is accts.cf, and the application directory is /usr/ASQL/apps/accts, set ACLCONFIG to /usr/ASQL/apps/accts/accts.cf. 9. If you are configuring multiple applications for application systems, continue to the Appendix “Building Application Systems.” 20 Configuring Application Environments The Compiled Application Configuration File To speed retrieval of configuration information, ACCELL/SQL compiles the application configuration file into a compiled configuration file named application.cfg. When a specific variable value is needed, and the variable is not set at the operating system command level or cannot be overridden at the operating system command level, ACCELL/SQL searches in application.cfg for the value. If a configuration variable appears more than once in the application configuration file, ACCELL/SQL places the first value detected into application.cfg, as shown in the following diagram: Compiled configuration file excerpt First AMGR_HPSZ entry AGEN_ERFL = ”/dev/null” AMGR_HPSZ = 32k AGEN_HPSZ = 32k . . . AMGR_HPSZ = 12k Second AMGR_HPSZ entry Third AMGR_HPSZ entry . . . AMGR_HPSZ = 20k Entry chosen for the compiled configuration file AMGR_HPSZ = 32k Configuration file compilation is automatic. When ACCELL/SQL opens the database or when you use the config utility to display configuration variable values, ACCELL/SQL automatically recompiles the application configuration file, if necessary. The file must be recompiled if application.cf has a more recent modification date than application.cfg. The compiled application configuration file contains only the variables that are explicitly specified in application.cf. System default values are used for all other variable values. Configuring Application Environments 21 Scope of the Compiled Application Configuration File Variables that are set in the application configuration file affect only the associated application and database. When you start the application and ACCELL/SQL reads in the compiled application configuration file, those variable values are in effect for your entire session. Another user can modify the configuration file while you are running the application, but you cannot see the changes until you exit and restart ACCELL/SQL . Preventing the Overriding of Application Configuration File Variables Normally, users can override application configuration file values by setting the configuration variables at the operating system command level. You can prevent users from overriding configuration file values by setting the CONFIG_READONLY configuration variable to TRUE in the application configuration file. When CONFIG_READONLY is TRUE, all the configuration variables in the file are read-only and cannot be overridden by setting them at the operating system command level. This enables you to ensure that the variables that are specified in the application configuration file have the same values for all users of the application. Additional Help About The config utility syntax and usage See The CONFIG_READONLY configuration variable 22 Configuring Application Environments Configuring a User Environment Configuring a user environment is a matter of setting configuration variables at the user’s operating system command level. Configuration variables that are set at the operating system command level are in effect during the user’s current session and are reset when the user’s session ends. On the UNIX operating system, the operating system command-level configuration variables are typically set in the user’s .profile or .login file, depending on the command shell that is being used. The .profile or .login file is read each time the user logs in to the operating system. If you want to customize specific ACCELL/SQL configuration variables for the user, you can create entries for the configuration variables in the user’s .profile or .login file by using a text editor to edit the file. Or have the user set the variables by typing the variable names and values directly on the command line after logging in. To set an variable in the user environment, at the operating system command level, you must use the correct syntax for your operating system. Additional Help About See Setting configuration variables at the operating system command level “Setting Variables at the Operating System Command Level” on page 25 Configuring a user environment Configuring Application Environments 23 Setting Configuration Variables Configuration variables can be set in configuration files or at the operating system command line. Warning Change only those variable values that must be changed. Make sure that you understand how the variable is used and whether it affects other variables or Unify DataServer utilities. Do not indiscriminately change configuration variable values. Setting Variables in Configuration Files Configuration file excerpt Because the configuration files are ASCII files, you can use a text editor to modify configuration variable values. The configuration files contain configuration variable names, their default values, and where applicable, alternative choices. The following example shows an excerpt from an ACCELL/SQL configuration file. AMGR_ERFL AGEN_ERFL AMGR_HPSZ AGEN_HPSZ AMGR_SEL_SET_DR AGEN_SEL_SET_DR = = = = = = ”/dev/null” ”/dev/null” 32k 32k ”/usr/tmp” ”/usr/tmp” # # # # # # AMGR AGEN AMGR AGEN AMGR AGEN error file error file heap size heap size selected set directory selected set directory Configuration variable name Configuration variable value Descriptive comment The # symbol in configuration file entries delimits descriptive comments and alternative choices. To change a configuration variable value, change the number or text to the right of the equal sign (=). For example, to change the ACCELL/M anager error file name to amgr_errs, you need only change the ”/dev/null” on the AMGR_ERFL line to ”amgr_errs”, as shown in this diagram: 24 Original AMGR_ERFL entry AMGR_ERFL = ”/dev/null” # AMGR error file Changed AMGR_ERFL entry AMGR_ERFL = ”amgr_errs” # AMGR error file Configuring Application Environments Setting Variables at the Operating System Command Level Setting ACCELL/SQL configuration variables at the operating system command level is a quick and easy way to override configuration variables that are set in a configuration file. Configuration variables that are set in the operating system are in effect only for a user’s current session. The operating system resets the variables when the current session ends. Almost all configuration variable values can be overridden by setting the variables at the operating system command level. To set an variable at the operating system command level, you must use the correct syntax for your operating system. Example For example, if you are using UNIX with the C shell (csh), you type this command: setenv configuration_variable value If you are using UNIX with the Bourne shell, you type these commands: configuration_variable=value export configuration_variable Tip Set ACCELL/SQL configuration variables at the operating system command level to customize an individual user’s application environment. Configuring Application Environments 25 Determining Which Variables Must Be Set in a Configuration File A few variables must be set in a configuration file and cannot be overridden by setting them at the operating system command level. To determine which configuration variables cannot be overridden at the operating system command level, you can run the config utility. The config utility displays the names and values of configuration variables and indicates with an asterisk (*) the variables that cannot be overridden. Example The config utility displays its information in this format: Variable Name ––––––––––––––––– Configuration Value ––––––––––––––––––– AGEN_ERFL AGEN_HPSZ AGEN_SEL_SET_DR AMGR_ERFL /dev/null 32k /usr/tmp /dev/null CNO Configuration File ––– –––––––––––––––––– * Variable set in configuration file and cannot be set at OS command level /usr/db/file.cf environment /usr/db/file.cf /usr/db/file.cf Variable set at operating system command level Additional Help For syntax and usage, see the config utility description given in the . 26 Configuring Application Environments Using Abbreviations in Configuration Variable Settings Configuration variable value settings can include several abbreviations: #! Using Defined Values in Configuration Variable Settings " "! recognizes several defined values as configuration variable values. Defined values make the configuration variable settings more readable and are thus more easily maintained. The next table summarizes the defined values that can be used in configuration variable settings. " " ! ! "! # ! $ " A defined value of undefined enables you to use the software default configuration variable value when another default is defined in a configuration file. Configuring Application Environments 27 Configuration Variable Search Priority In general, when ACCELL/SQL searches for a specific configuration variable value, the search is conducted in the following order, from highest to lowest priority: Operating system command level AGEN_HPSZ value set in four locations AGEN_HPSZ = 12k Compiled application configuration file (application.cfg) Master configuration file (unify.cf) ACCELL/SQL release software defaults Use this value AGEN_HPSZ = 8k AGEN_HPSZ = 32k AGEN_HPSZ = 32k In the preceding example, the AGEN_HPSZ configuration variable is set to 32k in the release software and the master configuration file, 8k in the application configuration file, and 12k at the operating system command level. The current AGEN_HPSZ value is 12k, because values set at the operating system command level have the highest priority. 28 Configuring Application Environments Display Formats The search priority is similar for display format configuration variables. However, display formats can also be specified by the using clause in ACCELL/4GL form script and Report Writer statements and with the DISPLAY FORMAT field attribute. Displaying Currency Amounts For displaying currency amounts, use the following variables: Variable AMTFMT Description AMOUNT data display format Example %.2f ###,##&.&& AMTPREC Number of digits after the radix separator 2 0 CURRSYM Currency symbol $ DM xxx TRIADSEP Triad separator character (to separate thousands, e.g., 999,999) RADIXSEP Radix separator (to separate decimal digits in . a decimal system, e.g., 999.99) , , . space character Currency Amount Display Variables and Format Templates The CURRSYM , RADIXSEP, and TRIADSEP configuration variables apply only when a format template is used. A format template can be specified in any of the following ways: by specifying a USING clause in an ACCELL/4GL DISPLAY statement by specifying a using clause in a Report Writer (RPT) print statement by defining the DISPLAY_FORMAT attribute for a field on the Field Definition form or in a form script by setting the AMTFMT configuration variable in a configuration file or at the operating system command level Configuring Application Environments 29 When searching for a display format for a currency amount, ACCELL/SQL follows the search priority shown in this table: (The CURR configuration variable is included in the table because it is supported for compatibility reasons only. Replace CURR with the CURRSYM , RADIXSEP, and TRIADSEP configuration variables.) Currency Amount Display Format Search Priority Search Path 1. USING Clause 2. Operating System Command Level A USING (or using) clause or a DISPLAY_FORMAT field attribute is specified Use the specified format No USING (or using) clause or DISPLAY_FORMAT field attribute is specified Search the operating system command level AMTFMT, AMTPREC, CURRSYM, TRIADSEP, and RADIXSEP are set Use the specified formats CURRSYM, TRIADSEP, and RADIXSEP are not set, but CURR Translate CURR into CURRSYM, TRIADSEP, and RADIXSEP is set CURRSYM, TRIADSEP, and RADIXSEP are not set, and CURR Search the application configuration file (application.cf) is not set 3. Application Configuration File AMTFMT, AMTPREC, CURRSYM, TRIADSEP, and RADIXSEP are set Use the specified formats CURRSYM, TRIADSEP, and RADIXSEP are not set, but CURR Translate CURR into CURRSYM, TRIADSEP, and RADIXSEP is set CURRSYM, TRIADSEP, and RADIXSEP are not set, and CURR Search the master configuration file (unify.cf) is not set 30 Configuring Application Environments Currency Amount Display Format Search Priority 4. Master Configuration File AMTFMT, AMTPREC, CURRSYM, TRIADSEP, and RADIXSEP are set Use the specified formats CURRSYM, TRIADSEP, and RADIXSEP are not set, but CURR Translate CURR into CURRSYM, TRIADSEP, and RADIXSEP is set CURRSYM, TRIADSEP, and RADIXSEP are not set, and CURR Search for the ACCELL/SQL release software defaults is not set 5. Release Software Defaults (A default always exists) Use the default format (usually a printf style) Displaying Dates or Times When searching for a display format for a date (or time) value, ACCELL/SQL follows the search priority shown in this table: (The DATETP and LDATEFMT configuration variables are included in the table because they are supported for compatibility reasons only. Replace DATETP and LDATEFMT by the DATEFMT configuration variable.) Date or Time Display Format Search Priority Search Path 1. USING Clause 2. Operating System Command Level A USING (or using) clause or a DISPLAY_FORMAT field attribute is specified Use the specified format No USING (or using) clause or DISPLAY_FORMAT field attribute is specified Search the operating system command level DATEFMT Configuring Application Environments (or TIMEFMT) is set Use the specified format 31 (continued) DATEFMT (or TIMEFMT) is not set, but DATETP or LDATEFMT is set Translate the date format variable into DATEFMT (or TIMEFMT) (or TIMEFMT) is not set, and neither DATETP nor LDATEFMT is set Search the application configuration file (application.cf) DATEFMT 3. Application Configuration File DATEFMT (or TIMEFMT) is set DATEFMT (or TIMEFMT) is not set, but DATETP or LDATEFMT is set Translate the date format variable into DATEFMT (or TIMEFMT) (or TIMEFMT) is not set, and neither DATETP nor LDATEFMT is set Search the master configuration file (unify.cf) DATEFMT 4. Master Configuration File 5. Release Software Defaults Use the specified format DATEFMT (or TIMEFMT) is set Use the specified format DATEFMT (or TIMEFMT) is not set, but DATETP or LDATEFMT is set Translate the date format variable into DATEFMT (or TIMEFMT) DATEFMT (or TIMEFMT) is not set, and neither DATETP nor LDATEFMT is set Search for the ACCELL/SQL release software defaults (A default always exists) Use the default format (usually a printf style) Additional Help About USING clause of a DISPLAY See ACCELL/SQL: Script and statement Function Reference DISPLAY_FORMAT field ACCELL/SQL: Script and attribute Function Reference USING clause of the print statement ACCELL/SQL: Creating Reports With RPT Report Writer (table continued on next page) 32 Configuring Application Environments About AMTFMT, AMTPREC , CURRSYM , DATEFMT, RADIXSEP, TIMEFMT, and TRIADSEP configuration See variables Specifying format templates for a local language Configuring Application Environments 33 Configuration Variable Categories Configuration variables can be grouped into several categories related to their uses, for example, file names and locations, memory and disk management, display formats, and RPT tables. The following table lists variables by category. (Some of these variables are specific to an RDBMS or user interface.) Complete descriptions are given in alphabetical order in the ACCELL/SQL: Configuration Variable and Utility Reference. Tip You can override the default value of a configuration variable by setting it in a configuration file or at the operating system command level (see page 24). To display current configuration variable values, use the config utility, which is described in ACCELL/SQL: Configuration Variable and Utility Reference. Category Configuration Variable Names ACL_DBUTIL_SCH ACLCONFIG ACLDIR ACLENV ACLPATH AGEN_ERFL AMGR_ERFL APPMAP APPRESDIR ATERMCAP DBNAME DBPATH DSQUERY EDIT II_SYSTEM INFORMIXDIR M_LIBS OL_LIBS OPENWINHOME ORACLE_HOME ORACLE_SID PATH SYBASE TBCONFIG UNICAP UNIFY UNIFYTMP XAPPLRESDIR XAPPRESLANGPATH (table continued on next page) 34 Configuring Application Environments Category Configuration Variable Names CH_BURST_CHK CH_OLD_BURST CH_TIMER_CHK CLEAR_FLD_MODE CMDSCOPE EXPL_MODE LENONULL RNGMETACH SEPARATOR ACLTXTNONDSPCH AMTFMT AMTNULLCH AMTPREC AMTROUND BOLNULLCH BOOLFMT CURRSYM DATEFMT DATNULLCH ERRCH FLTFMT FLTNULLCH FLTROUND MON1 MON2 MON3 MON4 SPOOLER SQLFLDCNT SYBASE_MSGS SYBASE_RB_ERRNUM S SYBASE_RB_RESTART SYBTRGMSG SYBTXTSIZE TERM MON5 MON6 MON7 MON8 MON9 MON10 MON11 MON12 NULLCH NUMFMT NUMNULLCH RADIXSEP STRNULLCH TIMEFMT TIMNULLCH TRIADSEP TXTNULLCH ACLDBDBG ACLDBGON Configuring Application Environments 35 Category Configuration Variable Names ACLSCROLL AGEN_PSCOL AMGR_NUM_WDWS CMDSCOPE DELIMFLD ERRCH FKEYGAPS OPNARCHS ! ACLMXOPNVARF ACLVARDIR ACLVARMEMLIM AGEN_HPSZ AGEN_SEL_SET_DR AMGR_FORM_CA_SZ AMGR_FUNC_CA_SZ AMGR_HPSZ AMGR_INI_M_SZ AMGR_SEL_M_SZ AMGR_SEL_SET_DR AMGR_STK_B_SZ AMSHMKEY DFLTVCFILE DFLTVCMEM OPNARCHS CONFIG_READONLY ! ! ACPLPP SHELL TERM ULDFLAGS ULDLIBS ULDNAME UPPNAME PAGELN PAGER RPTCONCNT RPTFLDCNT RPTINBUFSZ RPTNAG RPTNARGS RPTNCALL RPTNCGRP RPTNCOM RPTNIF RPTNITM RPTNODECNT RPTNPITM RPTNPRINT RPTNSETCL RPTNSITM RPTPBUFSIZ SEPARATOR SPOOLER WIDTH ! ACLMXOPNVARF ACLTXTNONDSPCH ACLVARDIR ACLVARMEMLIM SYBTXTSIZE TXTNULLCH ACLTXMODE AMGR_LCK_SCH CTRLCABT OSEC2WAIT SQLFLDCNT STCNRTLK 36 Configuring Application Environments (continued) Category Configuration Variable Names ACLPRESMODE APPRESDIR DBTYPE DBUSER M_LIBS OL_LIBS OPENWINHOME UXPUSHSHELL UXSYSTEM XAPPLRESDIR XAPPRESLANGPATH XENVIRONMENT Additional Help About See Configuration variable descriptions ACCELL/SQL: Configuration Using Report Writer variables ACCELL/SQL: Creating Reports With RPT Report Writer Using RDBMS-specific variables ACCELL/SQL: RDBMS Variable and Utility Reference Integration Configuring Application Environments 37 Locating Form and Help Archive Files In Multiple Directories If you want to locate form archives (.fa files) and help archives (.hlp files) in multiple directories, you can set the ACLPATH configuration variable to the list of the directories that contain the files. To find the files, searches through the directories in the order in which they are specified in ACLPATH. ACLPATH is also used to search for the current application link file, which usually has a .al file name suffix. Specifying Multiple Directory Names To specify multiple directory names for ACLPATH, list the directory path names in the following general format: directory_name[separator_character directory_name] The directory_name is the complete directory path for a directory that contains the application form (.fa), help (.hlp), or link (.al) files, as specified on your operating system. The separator character is usually a colon ( : ) on the UNIX Bourne Shell and a space on the UNIX C shell. For example, if you are using UNIX with the Bourne shell, you can use this syntax to set ACLPATH: ACLPATH = directory_name[:directory_name] . . . export ACLPATH The next diagram shows three possible ACLPATH values, as set on the UNIX Bourne shell. Directory path name Separator character /usr/accell/global:/usr/accell/accts/app:/home/fred/apparchs /home/barney/myapp .:/usr/accell/apps 38 Configuring Application Environments ACLPATH and ACCELL/Manager When ACCELL/M anager starts, the following events take place: 1. If an application link file name (.al) is specified on the AMGR command line, that file is opened. 2. If no application link file name is specified or the application link file cannot be opened, the manager searches for the first .al file in the directories listed in ACLPATH. If the manager finds an .al file in a directory specified in ACLPATH, that application link file is opened. 3. If ACCELL/M anager cannot find a .al file in the directories specified in ACLPATH, an error is generated. 4. The .fa and .hlp archive files in the directories specified in ACLPATH are used as needed. ACCELL/M anager does not check file permissions for application or archive files. Therefore, if the current user does not have correct permissions, a permission violation error may be generated. Configuring Application Environments 39 Caching Application Forms and Functions To speed execution of frequently used application forms and global functions, you can store information for forms and global functions in two cache areas in memory. ACCELL/SQL uses one cache area for forms and one for functions. The advantage of caching forms and functions is that forms and functions that are cached do not need to be read from disk each time they are called. Controlling Cache Storage for the Application To control cache storage for every form and function in the application, you use two configuration variables: AMGR_FORM_CA_SZ Specifies the size in bytes of the form cache and indicates whether forms are cached. The default is 0, which indicates that no forms are to be cached. AMGR_FUNC_CA_SZ Specifies the size in bytes of the global function cache and indicates whether functions are cached. The default is –1, which indicates that the cache is unlimited in size and all functions are to be cached. For both variables, a setting of –1 indicates that the cache is unlimited in size and all forms or functions are cached. A setting of 0 indicates that no forms or functions are to be cached. The optimum size for these variables differs for each application. To determine the optimum cache size, you must consider these points: the number of forms and functions in the application the size of each form or function the relative call frequency of each form or function Additional Help For more information about determining the optimum cache size, see “Tuning Cache Size” on page 42. 40 Configuring Application Environments Controlling Cache Storage for an Individual Form or Function If form or function caching has been turned on, you can control whether an individual form or function is stored in the cache by specifying cache options in the APPLICATION section of the master application form script. The form or function is cached by default, but you can use the optional REQUIRED FORMS and REQUIRED FUNCTIONS clauses to explicitly control whether individual forms and functions are to be cached. For each form specified in the REQUIRED FORMS clause and each function specified in the REQUIRED FUNCTIONS clause, you can specify one of these three cache options: CACHED On form deactivation, place the form or function in the appropriate cache, if space is available. This is the default for functions. The form or function may subsequently be replaced in the cache by another form or function. As the cache fills, the forms or functions that have been activated least recently are removed to make room for the new form or function. UNCACHED On form deactivation, do not place the form or function in a cache. LOCKED_IN_CACHE On form activation, if space is available, place the form or function in the appropriate cache and keep the form or function in the cache throughout application execution. The CACHED, UNCACHED, and LOCKED_IN_CACHE options take effect only if caching is turned on for all application forms or functions. Application-wide form caching is controlled by the AMGR_FORM_CA_SZ configuration variable, while function caching is controlled by the AMGR_FUNC_CA_SZ configuration variable. Example The following example shows a REQUIRED FORMS clause and a REQUIRED FUNCTIONS clause in the master application form script for an application named tutorial. REQUIRED FORMS fcompany in ’tutorial.fa’ LOCKED_IN_CACHE, forders in ’tutorial.fa’ LOCKED_IN_CACHE, fsalesrep in ’tutorial.fa’ UNCACHED REQUIRED FUNCTIONS calc_pay in ’tutorial.fa’ LOCKED_IN_CACHE, init_app in ’tutorial.fa’ UNCACHED Configuring Application Environments 41 Tuning Cache Size You can use statistics about cache usage to tune cache sizes for your application. To print cache statistics at runtime, use any of the following methods: Include the dump_statistics$( ) system function in a form script. Execute the command (\Eds). Execute the Debugger statistics stack_cache command. Regardless of the method used to print them, cache statistics are printed in the file that is specified by the AMGR_ERFL configuration variable. If AMGR_ERFL is not set, cache statistics are not kept. Example The following example shows a Stack Cache Statistics report for global functions in an application that has three functions named calc_pay, calc_vac, and ehandle: STACK CACHE STATISTICS : Times Name Called _______________ ______ calc_pay 0 calc_vac 0 ehandle 1 Cache Hits _____ 0 0 0 Size (bytes) _______ 0 0 470 In Cache _____ NO NO YES Cache Persistence ___________ CACHED CACHED CACHED Maximum Function Cache Size : <unbounded> Current Function Cache Size : 470 Number of Times Cache Full (preventing addition of new entry): 0 The report is reprinted for forms, if they are also cached. STACK CACHE STATISTICS : Times Name Called –––––––––––––––– –––––– Function statistics Cache Hits ––––– Size (bytes) ––––––– In Cache ––––– . . . AMGR_FUNC_CA_SZ val- Maximum Function Cache Size : . . . Current Function Cache Size : . . . Number of Times Cache Full (preventing addition of new entry): . . . . . . Name –––––––––––––––– Form statistics 42 Cache Persistence ––––––––––– Times Called –––––– Cache Hits ––––– Size (bytes) ––––––– ue Total bytes used by all global functions in cache In Cache ––––– Cache Persistence ––––––––––– . . . Maximum Form Cache Size : . . . Current Form Cache Size : . . . Number of Times Cache Full (preventing addition of new entry): . . . AMGR_FORM_CA_SZ val- ue bytes used by all Total forms in cache Configuring Application Environments The Stack Cache Statistics report contains the following information for each form or function: Name Name of the form or function. Times Called Number of times that the form or function has been activated. Cache Hits Number of times that the form or function was read from the cache instead of from the disk. Size (bytes) Size in bytes of the cache space used by the form or function. This statistic is recorded only if the form or function has been activated (Times Called > 0). In Cache YES, if the form or function is currently stored in the cache; NO, if the form or function is not currently stored in the cache. You can determine the number of forms or functions currently in the cache by counting the number of YES values under the “In Cache” heading. Cache Persistence Form or function cache persistence status, which is one of three values: CACHED UNCACHED LOCKED_IN_CACHE In addition, these statistics are printed: Maximum Form Cache Size/Maximum Function Cache Size Value of the AMGR_FORM_CA_SZ or AMGR_FUNC_CA_SZ configuration variable. This heading is “Maximum Form Cache Size” on a Cache Statistics report for forms and “Maximum Function Cache Size” on a Cache Statistics report for global functions. Configuring Application Environments 43 Current Form Cache Size/Current Function Cache Size Size in bytes of the cache space used by all forms or functions. This statistic is the total of the “Size (bytes)” values for all forms or functions. This heading is “Current Form Cache Size” on a Cache Statistics report for forms and “Current Function Cache Size” on a Cache Statistics report for global functions. Number of Times Cache Full Number of times that the cache was too full to accept a new form or function. 44 Configuring Application Environments Speeding Form Access Example To guarantee that forms can be accessed quickly, in addition to caching, use string constants instead of string expressions to refer to form names in form scripts. This enables ACCELL/SQL to search for the form name by direct lookup instead of sequential access. Two ways to refer to the fcompany form name are shown in these examples: SET $fm_name TO ’fcompany’ . . . DISPLAY TRIM FOR $fm_name WAIT DISPLAY TRIM FOR fcompany WAIT string expression constant If you use string expressions to refer to the forms, ACCELL/SQL searches sequentially for the names. To decrease the search time, list the form names in the REQUIRED FORMS clause of the APPLICATION section of the master application form script. Form names that are specified in the REQUIRED FORMS clause are placed at the head of the table that is used to track form information. Additional Help About See Syntax and usage for the APPLICATION section or the dump_statistics$( ) system function ACCELL/SQL: Script and The AMGR_FORM_CA_SZ and The configuration variable descriptions in ACCELL/SQL: Configuration Variable and Utility Reference AMGR_FUNC_CA_SZ configuration variables Using ACCELL/SQL Interactive Debugger Executing ACCELL/SQL user commands Configuring Application Environments Function Reference ACCELL/SQL Interactive Debugger: Developer's Reference ACCELL/SQL: Using an Application 45 Storing Text and Binary Values When ACCELL/SQL retrieves variable-length text or binary values from the database for a selected set, the values are stored in memory, similarly to string values. However, text and binary values are more likely to overflow the memory space that has been allocated because they are usually larger than string values. You can use several configuration variables and attributes to manage storage for text and binary values: Use the ACLVARMEMLIM configuration variable to specify the maximum number of bytes of memory that can be used to store variable-length text and binary values. If the number of bytes to be stored is greater than the specified size, ACCELL/SQL stores the value in a temporary disk file. The default amount of memory is 1k bytes. Use the ACLVARDIR configuration variable to specify the directory that contains the temporary files that are used to store variable-length text and binary values. The default temporary directory is /usr/tmp. The RETRIEVE_VALUE target attribute indicates whether the target table column value is retrieved when the target table row is retrieved from the database. The default is TRUE for all data types except binary, and FALSE for binary. If the value is not needed, set RETRIEVE_VALUE to FALSE to conserve memory and speed interactive finds for rows that contain text or binary values. 46 Configuring Application Environments Manipulating Text and Binary Values From a Form Script To manipulate the text or binary values from an ACCELL/4GL form script, use these two attributes: Use the IN_MEMORY general attribute to determine whether a text or binary value is stored in memory (TRUE) or on disk (FALSE). Use the FILE_PATH general attribute to determine the directory path and file name of the temporary file created by ACCELL/SQL to be used to store text or binary values, when they are stored on disk. ACCELL/SQL creates separate files for text and binary values. Manipulating Text and Binary Values From a C-Hook If you want to manipulate text and binary values from a C-hook, you can use the following defines from the chookincl.h header file: Data Type Text Binary Configuring Application Environments Define Purpose A_TXT M To manipulate a text value that is stored in memory or to determine whether the value is in memory A_TXTF To manipulate a text value that is stored in a disk file or to determine whether the value is in a disk file A_BINM To manipulate a binary value that is stored in memory or to determine whether the value is in memory A_BINF To manipulate a binary value that is stored in a disk file or to determine whether the value is in a disk file 47 Optimizing Text and Binary Storage Configuration The optimum configuration of the variables and attributes used for text and binary storage differs for each application. To determine the optimum configuration, you must consider these points: the number of text and binary fields that must be retrieved in the application the size of each text or binary field Additional Help About IN_MEMORY general attribute, FILE_PATH general attribute, and RETRIEVE_VALUE target attribute ACLVARMEMLIM and ACLVARDIR The configuration variable descriptions in configuration variables 48 See Configuring Application Environments Maintaining a Secure Application Environment 49 This chapter describes features that you can use to implement and maintain a secure application environment. A secure application environment ensures that application data is accessed and modified only by users who have permission to do so. Implement operating system level security by using your operating system security facilities. Implement database security by using your RDBMS security facilities. Use ACCELL/SQL security facilities to enhance security for your application in these ways: by identifying the user by controlling user application access privileges by controlling form access privileges by limiting allowable user operations. 50 Maintaining a Secure Application Environment Using Operating System Security Features Use your operating system security features to perform these basic security-related tasks: establish user login names and passwords define directory-level read, write, and execute permissions for users and groups of users define file-level read, write, and execute permissions for users and groups of users Additional Help For more information about implementing security through your operating system, see your operating system administration manual. Maintaining a Secure Application Environment 51 Using RDBMS Security Features Use your RDBMS security features to perform these security-related tasks: add and remove database users grant and revoke permission to read data from the database, add data to the database, modify database data, or delete database data grant and revoke permission to create, modify, or delete database objects such as tables and columns establish the default database for each user After using your RDBMS to implement basic security for your database, use features to enhance security. Additional Help For more information about implementing security through your RDBMS, see your RDBMS database administration manual. 52 Maintaining a Secure Application Environment Using ACCELL/SQL Security Features security features define the interactive database operations that a user can perform on application forms. Whether a user can read, add, update, or delete form records depends on a combination of application access privileges and form access privileges, as well as the user’s RDBMS permissions. Identifying the User To determine who the current user is, you can use the following system functions: group_id$( ) group_name$( ) user_id$( ) user_name$( ) These system functions determine the current user’s operating system group ID number, group name, user ID number, and user name. When you have the user’s group ID, group name, user ID, or user name, you can conditionally set application or form access privileges, or you can specify individual user operations that the user cannot perform. Additional Help For more information about using the group_id$( ), group_name$( ), user_id$( ), and user_name$( ) system functions, see . Maintaining a Secure Application Environment 53 Controlling User Application Access Privileges User application access privileges determine the interactive database operations that a user can perform on any form in the application. These privileges apply to all forms in the application. Initializing User Application Privileges User application access privileges are initialized through the access code argument that is passed to AMGR when starting for the user. The access code is a number ranging from 0 to 15 that specifies whether the user can interactively read, add, update, or delete database records through application forms. By default, the application access code is 15. An access code of 15 allows the user to find, add, update, and delete data. Changing User Application Access Privileges To change user application access privileges, you can use the following Boolean system variables: add_allowed$ delete_allowed$ find_allowed$ update_allowed$ These variables are initialized to TRUE or FALSE by the AMGR access code. If the variable is set to TRUE, the user can perform the associated database operation on application forms. If set to FALSE, the user cannot perform the associated operation on application forms. You can change the value of any of these variables in a form script by using the ACCELL/4GL SET statement. Example For example, a user named anna starts with an access code of 15. This user can find, add, update, and delete application records on forms. To change the user’s application access privileges so that anna can find, add, or update records, but not delete records from forms, set delete_allowed$ to FALSE: IF (user_name$() = ’anna’) THEN SET delete_allowed$ TO FALSE 54 Maintaining a Secure Application Environment Additional Help About AMGR and specifying user access codes Controlling Form Access Privileges See “ACCELL/SQL Utilities Reference” in this manual add_allowed$ system variable delete_allowed$ system variable find_allowed$ system variable update_allowed$ system variable SET statement user_name$( ) system function “Identifying the User,” on page 53, and Form access privileges determine the interactive database operations that a user can perform on a form’s target table. These privileges apply only to the associated form and are controlled through the following ACCELL/SQL Boolean form attributes: FIND_ALLOWED ADD_ALLOWED UPDATE_ALLOWED DELETE_ALLOWED Initializing Form Access Privileges In ACCELL/G enerator, form access privileges are initialized to TRUE or FALSE in the Find Allowed, Insert Allowed, Update Allowed, and Delete Allowed fields on the Form Definition form. If an attribute is set to TRUE, users can perform the associated database operation on the form. If the attribute is set to FALSE, users cannot perform the associated operation on the form. Maintaining a Secure Application Environment 55 Changing Form Access Privileges You can change form access privileges in a form script by using the SET command in the BEFORE FORM event section. ACCELL/M anager checks the form attribute values when beginning form execution. Example For example, a form named inventory can be accessed by two different groups of users: sales and customers. Members of the sales group must be allowed to find, add, update, and delete records on the inventory form. Members of the customers group can only find inventory records, although members of the customers group are allowed to add and update records on some other forms. The inventory form script contains the following statement block in the BEFORE FORM event section: IF (group_name$() = ’customers’) THEN BEGIN SET inventory:ADD_ALLOWED TO FALSE SET inventory:UPDATE_ALLOWED TO FALSE SET inventory:DELETE_ALLOWED TO FALSE END This conditional statement removes add, update, and delete privileges when the user is a member of the customers group. Additional Help About See FIND_ALLOWED form attribute, ADD_ALLOWED form attribute, UPDATE_ALLOWED form attribute, DELETE_ALLOWED form attribute Form Definition form group_name$( ) system function 56 “Identifying the User,” on page 53, and Maintaining a Secure Application Environment Limiting User Operations User operations are performed when the user presses a user command key sequence, for example, or . To prevent the user from performing a specific user operation, use the ACCELL/4GL REJECT OPERATION statement. The operation that is rejected depends on the event section that contains the REJECT OPERATION statement. For example, if the ON NEXT FORM section contains a REJECT OPERATION statement, the next form operation is not performed when the user presses . However, all statements before and after the REJECT OPERATION statement are executed. When the user executes a user command, ACCELL/M anager executes the corresponding event section until reaching a REJECT OPERATION statement. On reaching a REJECT OPERATION statement, ACCELL/M anager displays a message that the user command is invalid, and then continues executing the remaining statements in the event section. Example For example, to prevent a user named kirk from adding records to the inventory form, you can add a REJECT OPERATION statement to the BEFORE ADD section of the inventory form script: BEFORE ADD SET ADD_ALLOWED TO TRUE IF (user_name$() = ’kirk’ ) THEN BEGIN REJECT OPERATION SET ADD_ALLOWED TO FALSE END Then in the AFTER ADD section, you can specify a message to be displayed if a user other than kirk adds a record on the inventory form: AFTER ADD IF ADD_ALLOWED THEN DISPLAY ’The row has been added to the database’ FOR FYI_MESSAGE WAIT Maintaining a Secure Application Environment 57 Additional Help About REJECT OPERATION statement See ACCELL/SQL: Script and Function Reference Form Definition form ACCELL/SQL: Creating Screen Forms 58 user_name$( ) system function “Identifying the User,” on page 53, and ACCELL/SQL: Script and Function Reference RDBMS-specific information related to security ACCELL/SQL: RDBMS Integration Maintaining a Secure Application Environment Moving, Renaming, and Deleting Application Files 59 This chapter describes how you can move an application rename an application delete an application 60 Moving, Renaming, and Deleting Application Files Moving an Application Applications can be moved from one directory to another or from one computer to another. To move an application to another directory, you must copy the application’s form and script files to the new directory. To move an application to another computer, you must convert form and help archives to ASCII format before you move the files. Convert the ASCII files back to form and help archives after you move them. After move an application, you must make sure that you set all configuration variables that reference the application so that they point to the new location. Application Directories Possible development directory structure Usually, application files are located in one directory. But files can be located in several directories. Some application developers prefer to divide files among three directories: development, archives, and runtime. Development directory Archives directory Runtime directory .aq .fq .as .fs files files files files .fa .hlp files files .al file When you copy application files, make sure that all scripts or forms that are referenced by the application but which reside in other directories are also transferred. Moving, Renaming, and Deleting Application Files 61 Application Files The files used by an application depend on whether the application is being used in a runtime or development environment. Runtime Runtime applications can be executed but not modified. Runtime applications need these files: Development Development applications are applications that are being created. Development applications need these files: Moving From Computer to Computer To move an application from one computer to another type of computer, you must convert the application’s form and help archives to ASCII format before you copy them. On the computer from which the files will be moved, use these utilities: Q2ASC Converts a form file (.fq or .aq) to ASCII format. H2ASC Converts a help archive (.hlp) to ASCII format. After you copy the application to the new computer, you must convert the ASCII files back to application form and help archive files. On the computer to which you moved the files, use these utilities: 62 ASC2Q Converts an ASCII form file to a form file (.fq or .aq). ASC2H Converts an ASCII help file to a help archive (.hlp). Moving, Renaming, and Deleting Application Files Resetting Configuration Variables After you move application files to new directories, you must make sure that you also reset the ACLENV and ACLPATH configuration variables to specify the new application directories. If you do not reset these variables, ACCELL/SQL continues to search for application files in the old directories. ACLENV This variable is required only if you have used ACCELL/E nvironment (adev) to develop the application instead of using the development utilities (AGEN, ACPL, ACMB, and ALNK) directly. Set the ACLENV variable to the search path for the directory that contains the new application link file (.al). ACLPATH Set the ACLPATH variable to the path name of the directory that contains the form and help archive (.fa and .hlp) files, if these files are not located in the same directory as the application link file (.al). You must also set the configuration variables that are used by your RDBMS to find your database files. If you are using this RDBMS: Then set: INFORMIX OnLine INFORMIXDIR and TBCONFIG INFORMIX SE DBPATH and INFORMIXDIR ORACLE ORACLE_HOME and ORACLE_SID SYBASE SQL Server SYBASE and DSQUERY Unify DataServer DBPATH and DBNAME Additional Help About See The syntax and usage for the ASC2Q, ASC2H, Q2ASC, and H2ASC form conversion utilities ACCELL/SQL: Configuration Setting configuration variables “Setting Configuration Variables” on page 24 of this manual RDBMS-specific configuration variables ACCELL/SQL: RDBMS Moving, Renaming, and Deleting Application Files Variable and Utility Reference Integration 63 Renaming an Application An application can be renamed after it has been added to ACCELL/SQL development environment. When you rename an application, you must perform these tasks: Rename the application directory as well as the application files. Update all form script files that reference the application name, the Application List form, and the master application form. Recompile and integrate the application. Renaming the Directory To rename an application, you must first rename the application directory to a new name. 1. Rename the application directory to a new directory name. Choose a name that is meaningful and corresponds to the new application name. For example, if you are renaming the application from finances to accounts, rename the directory name to accounts. 2. Move to the renamed application directory. Renaming the Application Files After you rename the application directory, rename the application files to reflect the new application name. 3. Rename the application link file, the master application form file, and the master application form script file. These files usually are named application.al, application.aq, and application.as. Updating Form Script Files After all application files are renamed, update all form and file names that are referenced in your form script files so that they refer to the correct application files. 4. Start your text editor on the master application form script file (.as), and change all occurrences of the old application name to the new application name. 5. Start your text editor for each standard form file (.fs), and change all occurrences of the old application name to the new application name. These references to the application name are usually in comments. Although comments do not affect application performance, you should keep the references up to date, because comments are often the only documentation for a script. 64 Moving, Renaming, and Deleting Application Files Updating the Application List The Application List form is used by the ACCELL/SQL development environment to record the application’s name and description. After all application form scripts have been updated, update the Application List form so that the development environment has the new application name and description. 6. If necessary, change the current directory to the application development directory. This is the directory that contains your individual application directories. 7. Run the startup script, accell, to start ACCELL/SQL . The Main menu is displayed. 8. Choose the “ACCELL/SQL Development Environment” option from the Main menu. 9. Press to display the Application List form. 10. Delete the obsolete application entry from the Application List form by moving the cursor to the entry and pressing . ACCELL/SQL prompts you to confirm your request to delete the record. 11. Answer YES to the Delete confirmation prompt (Type y and press RETURN ). 12. Press to clear the form so that you can add the new application to the Application List form. The cursor moves to the first blank line on the form. 13. Type in the new application name and description. 14. Press to save your entry. Updating the Master Application Form After you update the Application List form, update the master application form so that it refers to the new application name. 15. Move the cursor to highlight the new_app_name.aq master application form name, and press to display the Operations menu. 16. Select the “Edit ACCELL/G enerator Form” option from the Operations menu. Type the menu option number, 1. The Form Definition form is displayed. Moving, Renaming, and Deleting Application Files 65 17. Type the new application name in the Form Name field on the Form Definition form. 18. To save your changes, press . 19. To return to the Operations menu, press . Compiling and Integrating the Application After the master application form has been updated, compile and integrate the application again, so that all updates are synchronized. 20. To compile and integrate the new application, select option 3, “Compile/Integrate Forms & 4GL,” from the Operations menu. 21. To exit ACCELL/E nvironment, press until the Main menu is displayed. Then press again to exit ACCELL/SQL . 22. If necessary, move to the directory that contains the application files. 23. Delete the old application’s .ao, and .fa files. 24. If you have a make file that was used to create the old application, remove the existing make file and create a new one. You can execute makeamake to generate a make file for the new application. 66 Moving, Renaming, and Deleting Application Files Deleting an Application To automatically delete an ACCELL/SQL application, use ACCELL/E nvironment. To manually delete an application, remove the application files. Warning When you use ACCELL/Environment to delete an application, the application directory, all application forms and scripts, and the record of the application in the development environment are permanently removed. If you want to recover the application, you must restore it from a backup. To remove application files manually, use the operating system remove file command, for example, rm on UNIX systems. Make sure you remove only the application files that are unique to the application that you want to delete. If several applications use the same files, do not remove these shared files unless they are not required by all sharing applications. Tip As a precaution against accidental deletion of files, back up the application before you remove any files. Additional Help For a description of how to delete an application from ACCELL/E nvironment, see . Moving, Renaming, and Deleting Application Files 67 68 Moving, Renaming, and Deleting Application Files Performing Application Management Tasks 69 Application management tasks can be performed in these ways: Select menu options from ACCELL/SQL Menu Handler or ACCELL/E nvironment. Run an ACCELL/SQL utility. 70 Performing Application Management Tasks Choosing Menu Options You can choose menu options from the ACCELL/SQL Menu Handler Main menu and Menu Handler Maintenance Utilities submenu or the ACCELL/SQL Development Environment Operation menu to perform several application management tasks. From ACCELL/SQL Menu Handler ACCELL/SQL Menu Handler provides a menu-driven environment from which you can develop projects, create applications, and run finished applications. These are the tasks that you can perform through Menu Handler: access ACCELL/E nvironment to create, modify, compile, integrate, or run applications execute queries through the RDBMS version of SQL execute the ACCELL/SQL tutorials execute operating system level commands edit scripts and ASCII files customize menus by adding, modifying, or deleting programs and menus modify program and menu security add or modify help for menu items create a default application Performing Application Management Tasks 71 From ACCELL/Environment To access ACCELL/E nvironment, either select the ACCELL/SQL Development Environment option from the Menu Handler Main menu or execute the adev utility. From the ACCELL/E nvironment Operation menu, you can perform several application management tasks: create or modify screen forms write form scripts compile, combine, and link forms and form scripts into an application execute an application compile, combine, and link forms and form scripts, and execute an application synchronize application forms with the database design after a database design change execute operating system commands While most of these tasks are application development tasks, you can also access the operating system from the Development Environment Operation menu to perform additional tasks. Additional Help About See Using ACCELL/E nvironment to perform application management tasks Selecting options from ACCELL/SQL menus Customizing Menu Handler so that management tasks can be selected from menus 72 Performing Application Management Tasks Controlling Concurrency in ACCELL/Environment For an application that is being developed in ACCELL/E nviroment, concurrency control is automatic. ACCELL/SQL uses a lock table named ADEVLOCKS to control access to an application that is under development, instead of using the RDBMS locking facilities. (When an application is run after it has been developed, ACCELL/SQL depends on the RDBMS locking facilities to lock database objects, such as tables and rows.) The ADEVLOCKS Table Information ACCELL/E nvironment inserts lock records into the ADEVLOCKS table for applications and forms that are being accessed by a user. Each lock record in the ADEVLOCKS table contains the following information for a locked item: a numeric ID used by ACCELL/E nvironment to indicate the object (application or form) that is locked a numeric ID that indicates whether the locked object is an application or a form the name of the host computer that holds the lock the process ID of the ACCELL/E nvironment process that holds the lock the user ID of the user who is running the ACCELL/E nvironment process that holds the lock Because of the complexity of the various networked environments that ACCELL/E nvironment can run in, ACCELL/E nvironment does not perform process verification when it encounters an item that is marked as locked. ACCELL/E nvironment removes all lock records for a process when it exits. Performing Application Management Tasks 73 Using the adevmnt Utility Occasionally, if a process ends abnormally (such as during a system crash), lock records may be left in the ADEVLOCKS table for defunct processes. You can use the adevmnt utility to clear lock records that are held by defunct processes, such as those that were killed by a user or a system crash. The adevmnt utility starts the ACCELL/E nvironment maintenance application. The maintenance application lets you display and delete lock records in the ADEVLOCKS table. Additional Help For the syntax and usage of the adevmnt utility, see . 74 Performing Application Management Tasks Using ACCELL/SQL Utilities You can use the ACCELL/SQL utilities to perform a number of application management tasks. The following table groups the ACCELL/SQL utilities into categories that are based on the tasks that are performed when you run the utilities. Before you try to run any of the ACCELL/SQL utilities, make sure that the directory paths specified in your PATH configuration variable include the ACCELL/SQL release bin directory. Category Utility accell Motif and OPEN LOOK ckguires UI options only Purpose Prepare the environment and start ACCELL/.SQL Menu Handler Verify compatibility of installed GUI resource files against default resource files ckunicap Verify syntax of unicap file config Display information about configuration variables SYBASE SQL Server gtlogin and ORACLE only Obtain the user name and password of the current user SYBASE SQL Server ridutil only Perform tasks related to selected set row identification ACMB Combine ACCELL/SQL forms and form script object files to a form archive ACPL Compile ACCELL/SQL form script files adev Access ACCELL/Environment to create, modify, compile, integrate, or run applications adevmnt Perform ACCELL/Environment maintenance tasks (table continued on next page) Performing Application Management Tasks 75 Category Utility Purpose (continued) AGEN Access ACCELL/SQL Generator to create and modify screen forms ALNK Link an ACCELL/SQL archive file into an application file amgr.ld Link C-hooks with ACCELL/Manager to create a custom manager bldcmf Rebuild a customized message file make_maf Generate a master application form makeamake Create a makefile MKAP Generate a default prototype application PAINTHLP Access a help form generator to create and modify help forms rpt.ld Link C-hooks with RPT to create a custom Report Writer Application documentation FRMDOC Generate a form characteristics report accell Prepare the environment and start ACCELL/.SQL Menu Handler AMGR Execute ACCELL/SQL runtime applications PICT Display a form from an ASCII file ASC2H Convert an ASCII help file to a help form ASC2Q Convert an ASCII form file to a screen form H2ASC Convert a help form to an ASCII help file Form and file conversion 76 Performing Application Management Tasks (continued) Category Report generation and execution Utility Purpose (continued) q2a2q Convert a screen form to an ASCII form file and back to a screen form Q2ASC Convert a screen form to an ASCII form file irs Execute Report Writer report scripts ORACLE only orcfltr Filters an input file generated by ORACLE SQL*Plus for use by RPT RPT Produce a Report Writer report or a Table Usage Information report from a report script rpt.ld Link C-hooks with RPT to create a custom Report Writer INFORMIX, ORACLE, SQL and SYBASE SQL Server only Menu Handler operation syncauth Produce a correctly formatted input file for RPT Synchronizes the Menu Handler database Additional Help For a complete description of each utility’s syntax and usage, see ACCELL/SQL: Configuration Variable and Utility Reference. Performing Application Management Tasks 77 78 Performing Application Management Tasks Appendixes 79 80 Appendixes Appendix A:Building Application Systems This appendix describes how to build application systems that consist of multiple applications and databases. When several runtime applications each access a different database, ACCELL/M anager determines the correct database for each application by searching the application database map file. This file associates an application with its corresponding database. Mapping applications to databases is useful when you have several applications that each access a different database, and you want to be able to execute all applications from the same menu handler and manager. The following diagram shows an example application system in which six applications each access one of three databases. Example Application System Application1 Application2 Application3 Database1 Database2 Database3 Application4 Application5 Application6 When you map the applications to databases, you can run the applications without having to restart AMGR off a pipe each time that you want to execute a different application. Mapping applications to databases also enables you to execute applications on different databases without having to stop and set up the environment for each database. 81 This appendix describes how to map applications to databases and how to execute an application that is part of an application system. Also included is a sample application system that you can use as a guide. The examples shown in this appendix are for the UNIX operating system. If you are using a different operating system, use the equivalent commands for your system. 82 Building Application Systems Mapping Applications to Databases In an application system, mapping applications to databases ensures that ACCELL/M anager can find the database to be used with the application to be executed. To execute an application, ACCELL/M anager gets information from these sources: Application link file (.al) This file contains information about the application forms and the archives that contain the forms. All form archive (.fa) and help archive (.hlp) files These files are located either in the same directory as the application link file or in a directory that is specified in the ACLPATH configuration variable Application database To enable ACCELL/M anager to locate the appropriate sources, you must perform three tasks: 1. Create an application database map file. 2. Set the APPMAP configuration variable. 3. Set the ACLPATH configuration variable. The following sections describe how to perform these tasks. Building Application Systems 83 Creating the Application Database Map File Step 1 The application database map file is an ASCII file that contains information that associates an application with its database. To create the application database map file, take these steps: Start your text editor for the file. For example, if you are using the vi text editor on the UNIX operating system and you want to create an application database map file named appsmap, located in the /usr/ASQL/ACCOUNTS directory, you use this command: vi /usr/ASQL/ACCOUNTS/appsmap The text editor starts so that you can type the text for the application database map file. Step 2 Type the application-database map information. Each line of the application database map file contains two columns of data: Column 1 Column 2 The full directory path and file name of an application link file, without the .al suffix The values of the configuration variable(s) that the RDBMS uses to locate the application database The format and content of column 2 depends on the RDBMS that is being used: On INFORMIX SE, use DBPATH and INFORMIXDIR . On INFORMIX OnLine, use INFORMIXDIR and TBCONFIG. On SYBASE SQL Server, use SYBASE and DSQUERY. On ORACLE, use ORACLE_HOME and ORACLE_SID . On Unify DataServer, use DBPATH. The two columns of information in the application database map file entries must be separated by a space: application_link_file_path database_identification_information Space character 84 Building Application Systems Type one line for each application-database combination that you expect to be using. If an application can be accessed through several different directory paths, create a line for each application directory path and file name (each entry contains the same database identification information). If several applications access the same database, create a separate line for each application. Step 3 Save your edits and exit the text editor. You have now created an application database map file. Setting APPMAP Step 4 You must set the APPMAP configuration variable to the directory path and file name of the application database map file if you have applications that access multiple databases. Set the APPMAP configuration variable to the absolute path and file name of the application database map file. For example, if you are using the Bourne shell on the UNIX operating system, you use this command: APPMAP=full_path_name/application_database_file_name export APPMAP The APPMAP configuration variable now points to the application database file. After you create the application database map file and set the APPMAP variable, you can access any of the runtime applications without manually resetting the database identification configuration variable. Setting ACLPATH If the applications’ form archives (.fa) and help archives (.hlp) are not in the directories from which the applications are to be executed, you must also set the ACLPATH configuration variable to the directory path list for the directories that contain these files. To set ACLPATH you use the same format used for the PATH configuration variable. Additional Help For information about setting ACLPATH, APPMAP, and other configuration variables for ACCELL/SQL applications, see “Configuring an Application Environment” on page 18 of this manual and ACCELL/SQL: Configuration Variable and Utility Reference. Building Application Systems 85 Executing an Application in an Application System To execute an ACCELL/SQL application in an application system that uses an application database map file, you can use either of two methods: Start the AMGR utility at the operating system command line. Start Menu Handler and select the application from a menu. How ACCELL/Manager Executes Applications Regardless of the method you use, the application is executed by ACCELL/M anager. ACCELL/M anager uses the directory path and file name of the application link file (the .al file) to find the current application files. The value of the APPMAP configuration variable determines the next action taken by ACCELL/M anager: If APPMAP is set, ACCELL/M anager opens the specified application database map file to search for the database that is associated with the current application. If APPMAP is set, but ACCELL/Manager cannot open the application database map file, ACCELL/M anager exits. If the AMGR_ERFL configuration variable has also been set, the manager displays an error message to notify you that the file cannot be opened. If APPMAP is not set, ACCELL/M anager searches for the database identification configuration variable that points to the application database. On opening the application database map file, ACCELL/M anager performs these tasks: 1. ACCELL/M anager searches the first column of the application map file for the name of an application link file that matches the link file name received. 2. ACCELL/M anager resets the configuration variable that is used by the RDBMS to locate the database. The value of this variable is changed to the information listed in the second column of the matching application database map entry. (The variable that is used is specific to the underlying RDBMS; see step 2 on page 84.) 86 Building Application Systems ACCELL/M anager resets the configuration variable used to locate the database only if the following two conditions are met: The APPMAP configuration variable is set to a valid application database map file name. The name of the application link file can be found in column one of the application database map file. Executing an Application From the Operating System The ACCELL/M anager utility, AMGR, is used to execute an ACCELL/SQL application from the operating system command line. To execute an application from the operating system command line, take these steps: Step 1 First make sure that you have created the application database map file and have set the APPMAP configuration variable, as described on page 85. Step 2 Make sure that all other required configuration variables are set: ATERMCAP Set to the directory path and file name of the ACCELL/SQL termcap file. UNICAP Set to the directory path and file name of the ACCELL/SQL unicap file. UNIFY Set to the directory path of the release lib directory. Set the configuration variables that your RDBMS uses to locate the database. These variables are listed in the table on the next page. Step 3 If application files are distributed among several directories, also set the ACLPATH configuration variable. Step 4 Start AMGR by typing the command name, followed by the directory path and file name of the application to be executed. AMGR application_directory path/application_link_file_name Additional Help For the complete AMGR syntax and usage description, see ACCELL/SQL: Configuration Variable and Utility Reference. Building Application Systems 87 Configuration Variables Used to Identify the Database RDBMS INFORMIX Online INFORMIX SE INGRES ORACLE Variable Description INFORMIXDIR Path of the directory where the INFORMIX release is installed TBCONFIG Name of the file that contains the configuration variables for an INFORMIX OnLine system, if the file is not named tbconfig DBPATH Directory path, without the file name, of the application database file and associated files INFORMIXDIR Path of the directory where the INFORMIX release is installed DBNAME Name of the database II_SYSTEM Path of the parent directory for the INGRES release software (Other needed variables are II_CHECKPOINT, II_DATABASE, and II_DUMP, which are set at installation) ORACLE_SID ORACLE system identifier for the unique SGA (system global area) to be used ORACLE_HOME Path of the root directory of the ORACLE RDBMS SYBASE SQL Server Unify DataServer 88 SYBASE Name of the directory that contains the SYBASE SQL Server interfaces file DSQUERY Name of the database server that contains the database to be used DBPATH Directory path, without the file name, of the directory that contains the application database file and associated files DBNAME Simple file name of the database file, for example, file.db Building Application Systems The following examples show the commands needed to start AMGR, depending on the first column of the application database map file. Example # 1 The application database map file for an application that is being executed on SYBASE SQL Server contains this line: tutorial asql_dbs SYBASE DSQUERY is null In this case, the application directory path is the current directory. Therefore, you must execute AMGR from the directory that contains the application link file, tutorial.al. You would use this command: AMGR tutorial Example # 2 The application database map file for an application that is being executed on Unify DataServer contains this line: runtimeapps/tutorial /usr/appdb/tutdb DBPATH In this case, the application directory path is relative. Therefore, you must execute AMGR from the directory that contains the runtimeapps subdirectory. If the runtimeapps directory is in the /usr directory, you must be in /usr to start AMGR. You use this command: AMGR runtimeapps/tutorial Example # 3 The application database map file for an application that is being executed on ORACLE contains this line: /usr/runtimeapps/tutorial TUTORIALS ORACLE_SID In this case, the application directory path is absolute. Therefore, you can execute AMGR from any directory, provided you include the entire application link directory path and file name when calling AMGR. You would use this command: AMGR /usr/runtimeapps/tutorial Building Application Systems 89 Executing an Application From ACCELL/SQL Menu Handler To execute an ACCELL/SQL application from ACCELL/SQL Menu Handler, you type accell at the operating system command line prompt. Menu Handler then displays the Menu Handler main menu and waits for you to select a menu item. Your runtime applications can be listed on the main menu, or they can be in submenus that are accessible from the main menu. You can access several ACCELL/SQL applications, each with its own database, from ACCELL/SQL Menu Handler. Menu Handler is the system that controls the display and selection of menu items. Setting Up the Runtime Environment Before you can access multiple databases from Menu Handler, you must set up the runtime environment by performing these tasks: 1. Create a runtime directory structure. 2. Copy the runtime files for each application to the appropriate application directory. 3. Use the Menu Handler xecmnt option to register each runtime application with the listing application (page 91). After you have registered the runtime applications, created the application map, and set the APPMAP variable, you can access any of the runtime applications from Menu Handler without having to manually reset your database identification configuration variable. Step 1 Create a runtime directory structure that includes these directories: a directory to contain the listing application a database directory to contain the listing application database an aclenv directory to contain the runtime application directories a directory under the aclenv directory for each runtime application For a sample runtime directory structure, see page 94. Step 2 To enable Menu Handler and ACCELL/M anager to access the runtime applications, you must copy all runtime files into their respective runtime application directories under aclenv. The ACCELL/SQL application runtime files are the application link file (the .al file), the application form archives (the .fa files), and the application help archives (the .hlp files). All other application files (.fq , .fs, .aq, and .as files) remain in the application’s development directory, as does the runtime application database. 90 Building Application Systems Step 3 Register each ACCELL/SQL application with Menu Handler by using the Menu Handler option “Describe Program to System” (xecmnt). You can also create menu items on Menu Handler menus for your runtime applications. These menu items enable you to select a runtime application from a Menu Handler menu. To create menu items, use the Menu Handler option “Add, Modify or Delete Menus” (mnumnt). The Menu Handler Application Record When using multiple databases through Menu Handler, all the runtime applications must be registered with ACCELL/SQL Menu Handler. Menu Handler records information for each registered application by creating an entry in a table in DBUTIL. (DBUTIL is an owner on INFORMIX, a user on ORACLE, a database on SYBASE SQL Server, and a schema on Unify DataServer.) The application record in DBUTIL is used as the listing application database. The listing application database is the starting point for runtime application execution. Starting Menu Handler Without a Database Storing Listing Application Information in an Application Database ACCELL/SQL Menu Handler must have a database in which to store the listing application information. If you start Menu Handler with no database, Menu Handler prompts you, to ask whether you want to create a database. If you answer yes, the database that is created contains only the listing information. To reduce the amount of disk space used, you can use one of your runtime application databases to store the listing application information. Before you start Menu Handler with accell, set your database identification configuration variable(s) to point to the runtime database. Or pick the application that you want to use, move to that directory, and start accell. For an example of accessing multiple runtime applications from Menu Handler, see “A Sample Runtime Application System” on page 93. Additional Help For more information about using the Menu Handler xecmnt and mnumnt options, see ACCELL/SQL: Localizing an Application. Building Application Systems 91 Executing a Runtime Application To execute a runtime application from the listing application through Menu Handler, take these steps: Step 1 Move into the listing application’s database directory. Step 2 Make sure that the TERM environment variable is set correctly. Step 3 Run the accell script to start Menu Handler for the listing application. At the operating system command line, type the following command: accell Step 4 Select your runtime application. If you have used mnumnt to create menu options for the runtime applications, you can select the runtime application from the appropriate menu. Otherwise, to select the runtime application, enter the application name at the Menu Handler SELECTION: prompt. When you select an application, Menu Handler checks the listing application database for the application name. If the selected application has been registered, Menu Handler passes the absolute path and file name of the application’s link file (the .al file) to ACCELL/M anager. This absolute path and file name is the directory path specified in the ACLENV configuration variable, plus the name of the application .al file. ACCELL/M anager then searches for the APPMAP configuration variable and performs the tasks described on pages 86 through 87, depending on the APPMAP setting. 92 Building Application Systems A Sample Runtime Application System For this example, four ACCELL/SQL applications, named appA, appB, appC, and appD, have been developed. Development Directory Structure The four applications were developed in the directories shown in the following diagram. Each application is a subdirectory of the development directory, /usr/develapps. The application files (.fs, .fq, .aq, .as, .hlp, .al, and .fa files) are located in each application’s aclenv directory. Applications appA and appD also have database files are in their db directories. Applications appB and appC share a common database in the directory /usr/develapps/appsdb . Building Application Systems 93 Runtime Directory Structure The following diagram shows a corresponding runtime directory structure for the example applications. The runtime directory structure contains the listing application and the runtime files for each application. The directory /usr/runtimeapps contains the listing application. The /usr/develapps directory has the same structure as shown for the development directory. runtimeapps appA.al appA.fa Setting Up the Listing Application appB.al appB.fa appC.al appC.fa appD.al appD.fa To set up a listing application such as the one described in this section, follow these steps. The parenthesized phrases beside each command example indicate the basic task performed by the command. Step 1 Create a subdirectory for the listing application. Step 2 (change directory) (create directory) Create the listdb subdirectory for the listing application’s database. 94 (change directory) (create directory) Building Application Systems Step 3 Create an aclenv subdirectory to store the runtime applications. mkdir aclenv Step 4 Create an application subdirectory in the aclenv directory of the listing application for each of the applications. Each subdirectory should have the same name as its runtime application. cd aclenv mkdir appA appB appC appD Step 5 (create directory) (change directory) (create directory) Into each new runtime subdirectory, copy only the .al, .fa, and .hlp files for the runtime application from the development structure. Change to directory appA: cd appA (change directory) Copy the files in the appA directory by typing these commands: cp /usr/develapps/appA/aclenv/appA.al appA (copy files) cp /usr/develapps/appA/aclenv/appA.fa appA cp /usr/develapps/appA/aclenv/appA.hlp appA Repeat step 5 for the files in the directories appB, appC, and appD. Step 6 Use your text editor to create the application database map file, appsmap. For example, if you are using the UNIX vi text editor, type the following command: vi /usr/runtimeapps/aclenv/appsmap Building Application Systems (edit file) 95 When the editor creates the appsmap file, enter the lines of application information that you need. For example, if you are using the Unify DataServer RDBMS, enter these lines in the application database map file: /usr/runtimeapps/aclenv/appA/appA.al /usr/runtimeapps/aclenv/appB/appB.al /usr/runtimeapps/aclenv/appC/appC.al /usr/runtimeapps/aclenv/appD/appD.al /usr/devlapps/appA/db /usr/devlapps/appsdb /usr/devlapps/appsdb /usr/devlapps/appD/db Save your changes and exit the editor. Step 7 Set the APPMAP configuration variable to the absolute path and file name of the application’s database map file. For example, if you are using the Bourne shell, type this command: APPMAP=/usr/runtimeapps/aclenv/appsmap (set variable) export APPMAP Step 8 Move to the listing application database directory. cd /usr/runtimeapps/listdb Step 9 (change directory) Start Menu Handler on the listing application. accell Step 10 Register each runtime application by using the Menu Handler xecmnt utility. The xecmnt option, “Describe Program to System,” is on the “Menu Handler Maintenance Utilities” submenu. 96 Building Application Systems Executing the Application After you have registered the runtime applications with ACCELL/SQL Menu Handler, you can execute the sample listing application from Menu Handler. Follow these steps: Step 1 If you have exited Menu Handler, make sure that you are working in the listing application database directory. cd /usr/runtimeapps/listdb Step 2 Start Menu Handler on the listing application. accell Step 3 Select application appB from the main menu. Menu Handler passes the directory path and file name of the application link file, /usr/runtimeapps/aclenv/appB/appB.al , to ACCELL/M anager. ACCELL/M anager checks for the APPMAP configuration variable. If APPMAP is set, ACCELL/M anager performs these tasks: 1. opens the indicated application database map: /usr/runtimeapps/aclenv/appsmap 2. searches for an entry for appB.al, the application link file name passed by Menu Handler 3. uses the second column of the application database map entry to set the configuration variable used by the RDBMS to locate the database 4. starts executing appB Application appB can now access data from the /usr/develapps/appsdb database. Building Application Systems 97 98 Building Application Systems Appendix B:ACCELL/SQL Files This appendix describes ACCELL/SQL files. Some of the files are utilities or scripts that you can execute, while others are files that are accessed by ACCELL/SQL or ACCELL/SQL utilities. Files Accessed by ACCELL/SQL Utilities ACCELL/SQL utilities access the following files, listed in order by their default file name suffixes: Suffix File Type Description Application link file File produced by the linker () when it links the application and used by ACCELL/Manager to execute the application Master application form script object file File produced by the compiler () when it compiles a master application form script Master application form file File that stores the trim, screen field definitions, and other attributes specified in ACCELL/Generator for a master application form Master application form script file File that contains ACCELL/4GL statements and functions for a master application form language source code file File that contains program functions, or CĆhooks. (table continued on next page) 99 (continued) Suffix File Type Description .cd Compiler code file File that is produced by ACCELL/SQL Compiler when the -c option is included on the command line to ACPL .cf Configuration file File that contains variables and values that are used to configure the hardware and software environment for the application (either the master configuration file, unify.cf, or the application configuration file, application.cf) .cfg Compiled configuration file Compiled version of the application configuration file (application.cfg) .fa Standard form archive file File created by the combiner (ACMB). This file contains executable images, with the compiled object code, of each application form .fo Standard form script object file File produced by the compiler (ACPL) when it compiles a standard form script .fq Standard form file File that stores the trim, screen field definitions, and other attributes specified in ACCELL/Generator for a standard form .fs Standard form script file Form script file associated with a standard form .h Header or include file File that contains variable and preprocessor definitions to be used with C source code and form scripts .hlp Help archive file Files that stores help forms to be used by ACCELL/Manager at runtime (table continued on next page) 100 Appendix B: ACCELL/SQL System Files (continued) Suffix File Type Description preprocessor output file File produced by the preprocessor when the option is included on the command line to Operating system level File that is used by the C program command file loader to create executable files Relocatable binary object file File created as a result of a command and which is usually kept in an archive file Compiler symbol file Symbol file created by ACCELL/SQL compiler (), when the option is included on the command line to ACCELL/SQL compiler File created by the ACCELL/SQL C or preprocessor output compiler () or the ACCELL/SQL file preprocessor () Appendix B: ACCELL/SQL System Files 101 Files in the Release bin Directory The release bin directory contains utilities and script files. Most of these are utilities that are described in the “Utilities Reference.” Some of the files, however, are scripts or utilities that are executed by one of the ACCELL/SQL components. The exact contents of the release bin directory may vary slightly, depending on your release and the underlying RDBMS. The following table lists the release bin files. If the row is shaded, the utility or script is executed by one of the ACCELL/SQL components. Release bin Directory Files Utility Description Where Described ACCELL/SQL completed ACCELL/SQL developer's tutorial, executed when you select Developer's Tutorial" in Menu Handler Tutorial Starts ACCELL/SQL Menu Handler ACCELL/SQL: Configuration Variable and Utility Reference Briefly in ACCELL/SQL: tutorial, executed when you Developer's Tutorial and select Completed Tutorial" ACCELL/SQL: Developing an in Menu Handler Application ACCELL/SQL: Developer's Combines application forms ACCELL/SQL: Configuration and scripts Variable and Utility Reference Compiles application forms and scripts ACCELL/SQL: Configuration Variable and Utility Reference Executes ACCELL/SQL development environment ACCELL/SQL: Configuration Variable and Utility Reference and in ACCELL/SQL: Developing an Application (table continued on next page) 102 Appendix B: ACCELL/SQL System Files Release bin Directory Files (continued) Utility Description Where Described adevmnt Starts ACCELL/SQL: Configuration ACCELL/Environment Variable and Utility Reference maintenance application AGEN Starts ACCELL/Generator, used to create application forms ACCELL/SQL: Configuration ALNK Links application forms and ACCELL/SQL: Configuration scripts Variable and Utility Reference AMGR Starts ACCELL/SQL ACCELL/SQL: Configuration application execution by Variable and Utility calling the correct version Reference of ACCELL/Manager for the user interface option amgr.ld Loads forms, scripts, and CĆhooks to create a custom ACCELL/Manager ACCELL/SQL: Configuration ASC2H Converts ASCII help forms to help forms (.hlp) ACCELL/SQL: Configuration ASC2Q Converts ASCII forms to forms (.fq) ACCELL/SQL: Configuration asqli.ld Additional loader used by ACCELL/SQL when linking a custom ACCELL/Manager bldcmf Rebuilds the compiled message file, unify.cmf Variable and Utility Reference and in ACCELL/SQL: Creating Screen Forms Variable and Utility Reference Variable and Utility Reference Variable and Utility Reference ACCELL/SQL: Configuration Variable and Utility Reference (Customizing message files described in ACCELL/SQL: Localizing an Application) (table continued on next page) Appendix B: ACCELL/SQL System Files 103 Release bin Directory Files (continued) Utility Description Where Described CAMGR Executes an ACCELL/SQL application under the character UI option when called by AMGR AMGR description in ACCELL/SQL: Configuration cfiles Variable and Utility Reference Utility used by install to verify Release files chk4sch chk4usr ckunicap Verifies the syntax of the unicap file ACCELL/SQL: Configuration Variable and Utility Reference config Displays the current configuration variable values and their source information ACCELL/SQL: Configuration Variable and Utility Reference cruser devenv.sql SQL script used to create fm_execute OpenWindows File Manager integration utility ACCELL/SQL: Developing an Application for a Graphical User Interface FRMDOC Generates documentation for application forms ACCELL/SQL: Configuration Variable and Utility Reference gtlckfl Utility that ensures that the tutorials are run single user only (SYBASE SQL Server, ORACLE, INFORMIX) the development environment schema and data (table continued on next page) 104 Appendix B: ACCELL/SQL System Files Release bin Directory Files (continued) Utility Description Where Described gtlogin Obtains the user name and password of the current user (SYBASE SQL Server, ORACLE) ACCELL/SQL: Configuration H2ASC Converts help form files (.hlp) to ASCII files ACCELL/SQL: Configuration instlic License installation program ACCELL/SQL for (RDBMS): Installation Guide irs Produces RPT reports ACCELL/SQL: Creating Reports With RPT Report Writer and ACCELL/SQL: Variable and Utility Reference Variable and Utility Reference Configuration Variable and Utility Reference licacl Licenses optional ACCELL/SQL for (RDBMS): load.forms Loads additional forms for the ACCELL/SQL developer's tutorial ACCELL/SQL: Developing an make_maf Generates a prototype master application form ACCELL/SQL: Configuration makeamake Generates a makefile to recreate the application after forms or scripts have been modified ACCELL/SQL: Configuration MKAP Creates a default application, with a master application form and at least one standard form ACCELL/SQL: Configuration mkdesch Script used to create the Development Environment schema Installation Guide ACCELL/SQL features Application Variable and Utility Reference Variable and Utility Reference Variable and Utility Reference (table continued on next page) Appendix B: ACCELL/SQL System Files 105 Release bin Directory Files (continued) Utility Description Where Described mkmnusch Script used to create the Menu Handler schema mktutsch Script used to create the Tutorial schema mnusch.sql SQL script used to create orcfltr Filters input files produced by ORACLE SQL so that they can be used by RPT (ORACLE) ACCELL/SQL: Configuration Variable and Utility Reference PAINTHLP Lets you add, modify, or delete help forms and help information ACCELL/SQL: Configuration Variable and Utility Reference (help form customizing is described in ACCELL/SQL: Localizing an Application and ACCELL/SQL: Developing an Application) PICT Displays an ASCII format file, such as the ACCELL/SQL logo, on the screen ACCELL/SQL: Configuration Variable and Utility Reference pls ACCELL/SQL enhanced version of the UNIX which command prep_db4acl Prepares a SYBASE SQL ACCELL/SQL: Setting Up a User Environment Server, ORACLE, or INFORMIX database for use with ACCELL/SQL q2a2q Converts form files (.fq) to ACCELL/SQL: Configuration ASCII files and back to form Variable and Utility files Reference the Tutorial schema and data (table continued on next page) 106 Appendix B: ACCELL/SQL System Files Release bin Directory Files (continued) Utility Description Where Described Q2ASC Converts form files (.fq) to ASCII files ACCELL/SQL: Configuration resdev Script that resets the Developer's Tutorial schema ridutil Sets up and maintains row ID criteria (SYBASE SQL Server) RPT Produces an RPT report Variable and Utility Reference ACCELL/SQL: Configuration Variable and Utility Reference ACCELL/SQL: Creating Reports With RPT Report Writer and ACCELL/SQL: Configuration Variable and Utility Reference rpt.ld Loads a custom RPT executable ACCELL/SQL: Creating Reports With RPT Report Writer and ACCELL/SQL: Configuration Variable and Utility Reference SQL Generates the correct format input file for RPT (SYBASE SQL Server) ACCELL/SQL: Configuration syncauth Synchronizes Menu ACCELL/SQL: Configuration Handler with database after Variable and Utility Reference the database design has been modified syncauth.sql SQL script that creates the TRAN Converts form scripts from ACCELL/SQL: Converting Release 1 format to Release Release 1 Applications to 2 format Release 2 Variable and Utility Reference data used by the syncauth utility tran21 (table continued on next page) Appendix B: ACCELL/SQL System Files 107 Release bin Directory Files (continued) 108 Utility Description Where Described Script used for resetting the various ACCELL tutorials Used by to send report output to the screen Used by to generate ACCELL/SQL: Creating multiple destination reports Reports With RPT Report (similar to the UNIX Writer utility) Executes an ACCELL/SQL description in application under the Motif ACCELL/SQL: Configuration UI option when called by Variable and Utility Reference Executes an ACCELL/SQL description in application under the OPEN ACCELL/SQL: Configuration LOOK UI option when Variable and Utility called by Reference ACCELL/SQL: Creating Reports With RPT Report Writer Appendix B: ACCELL/SQL System Files %" " " $ $$ #!# $ '$" $ %#" $"$&) " %!$ " $ $# " "# $" % !!$ "# $$ $# $ %"$ &"# $$ " %#$ * " #! !!$ ' &"" $ #$" %"$ &%# " $ # &"# $$ # !" % ) $ !!$ " $ "#%$ ! $"$ !!$ $ % %$ $$ " " #"!$ " ") '" $ # #$ " # $$ $ # $ & $ " " # &") $ $$ $ # ## %" !" " $$ # !!$ "# " #"!$# $ # "& #"!$ !" " $$ &"$# !!$ # #"!$# $ % $$ (%$ ) $ !%$" #)#$ "$ !!$ # $$ " %# '$ $ %""$ "# $$ $# &"# $$ #$ %! $ &" $ ' !!$ # $ & ! " (%$ $$ # %# $ #$ " ! !!$ # ! #" "# ! ! "# # # %#%) & #%(# #% # &" $$ #!# #!$ $ !!$ & !$ " "%$ &" $ " (! $ #* )$# $ ") %# $ #$ " " %$ "$ 109 % % # ( % '& $ % # '#$ # %% # +$ &$# $ % , $ See application configuration file $%% '& %% $ $! * !#!# $$ # #%' %% $ '&% * % !#!# $$ # # % $#!% $ ! !# ( !!% #$ $ # #% &,#' %* # #% * #$ # $#!%$ ! %#% !!% $ 110 "&'% !!# # ( % $ %# &!% # %$ $ %# $$ % (% # $#!% $$ !#$$ $ %% %# % %#%' %$ !#% $ %% &$# !# # #$ %#% % %% %$ $%%%$ &% $ #% # * &% % &$ % $!* $! %*! % !# # %% $ &$ % #% * !!% #$ # &! $ % %#$ %% %$ #% $& $ !#!# $$ # #%'$ %% $ * $'# !# #$ # $ &$&* ' $&) # &% %# & #% #$ %% $ &$ % $# # #% #$ $ #, * # %% $!*$ #% &% $! % ! #% % !!% # %$ %% %$ &$% + $&$% % #% & %# # )! % !!% &#% $ )!% %% %$ % &$% + $%%$ # ( '#$ %% $ !!# % $%# &#% See header file. %% %$ #% % !# $$ * !# # # )! !&% $ !# $$ * % #% $# * $#!% Glossary ')&)$ ++ # %"* ''# + &% ) - #* %+& + application link file ++ % /,+ 0 %) *&)+ *+) % ++ * /'% 0 + ')')&**&) %+& #)) *+) % ++ * % % 0 **& + % + . + %$ # %$ ++ &%+ %* &% ,)+ &% -) #* ++ ) ')*+ +& *0*+$ ,#+ -#,* ++ ) '')&') + &) + ).) % *&+.) &% ,)+ &% &$' # # ++ &%+ %* $ % #%, %*+),+ &%* ++ % /,+ 0 + &$',+) # +0 &) *' 0 % &$$%* ++ ) /,+ 0 + &')+ % *0*+$ + &')+ % *0*+$ ')&$'+ # % + *## % $,#+ 1&,))% &)$ + )&)* ++ '') % + $,#+ 1&,))% ) )+&)0 *) '+ &) )+&)0 *) '+ % # %$ ,* +& #&+ )+&)0 &) # % )+&)0 Glossary ')&)$ ++ ')&)$* ')# $ %)0 ')&** % *, * $)& /'%* &% % ) # %#,* &% &) &$' #+ &% #+ &%# +* %$%+ 0*+$ *&+.) ++ $%* )#+ &%# +* *0*+$ &%+)&#* *, &')+ &%* * +# )+ &% % $& + &% )&. %*)+ &% % #+ &% % %/ % * 0 )' # ,*) %+)* +& % ''# + &% #$%+* *, * &)$ &#&)* % &%+* /,+ &% + $ &) /$'# ),%+ $ ''# + &%* % /,+ ,+ + ) &)$* % *) '+ #* %%&+ $& % +* *,*+ +* &!+ ++ &%+ %* ,% (, #& # % + &% & +#* )&.* &#,$%* %/* % ') - #* &$') * % +* #*& ))) +& * % authorization See &)$. # ++ &%+ %* &$$%* &) /$'# *## *) '+ &%+ %* &')+ % *0*+$ &$$%* % *) '+ &%+ %* &$$%* % *) '+ &%+ %* &$$%* % &)$ *) '+ &%+ %* &$$%* 111 Glossary