APPX is the Premier Development and Runtime Environment for Business Application Software
(Category) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility :
APPX System Administration
FAQ's relating to the use of the APPX System Administration application.
Subcategories:

Answers in this category:
(Answer) What rule does APPX / Oracle interface use to decide when a field will be "char" vs "varchar".
(Answer) Oracle import performance issues.
(Answer) How to import dates from APPX to Oracle.
(Answer) Why is my RDBMS import so slow?
(Answer) What is a security profile?
(Answer) Cannot see the Oracle database?
(Answer) --- COMMIT MODE PDF hierarchy!
(Answer) How to incorporate COMMIT & ROLLBACK into APPX code!
(Answer) What are the APPX invocation switches?
(Answer) Commit parameter doesn’t seem to work?
(Answer) How to connect Appx to Oracle.
(Answer) Can I run different releases of APPX on the same server?
(Answer) Why is APPX building the EM’s every time?
(Answer) WinSQL: APPX ODBC debug utility.
(Answer) How to track “Record Held by Another User"
(Answer) How APPX License counts WS's
(Answer) How to reprint a print file?
(Answer) Message: "Building Dynamic Index"
(Answer) Oracle-Store blanks, not NULL !
(Answer) Where is Java/Client cache?
(Answer) Importing big Oracle tables!
(Answer) What is my AppxODBC version?
(Answer) How to use recover.exe!
(Answer) Message, “Can't access named resources”!
(Answer) AppxODBC & Appx Security
(Answer) Can I reserve an application lock?
(Answer) Which Windows version are we?
(Answer) Message; “Invalid Native File Management System”
(Answer) File fragmentation.
(Answer) Printing to a printer produces blank pages.
(Answer) APPX.EXE process is consuming 95%
(Answer) The command-line "kill" too time-consuming and error-prone. Is there a better alternative?
(Answer) How can I determine which APPX.EXE processes on my server are orphans?
(Answer) All of my users except for one have gone home for the night, and I am sure they have turned off their PC's. I still see three (or four, or ten) APPX.EXE processes in the server's task list. Why are they there?
(Answer) A user just called me to say that her APPX Client window just disappeared, or there was a power outage or system malfunction, that caused their APPX Client session to end unexpectedly. Do I need to do anything?
(Answer) How do I manually kill an APPX server process?
(Answer) The user process is hung, and I haven't been able to resolve the problem, so I need to kill that client/server session. How do I do that?
(Answer) What should I do when a users APPX session is hung?
(Answer) What can I do if WinAppxD gets stuck regularly?
(Answer) When might I want to stop and restart WinAppxD (either with, or without, a reboot)?
(Answer) Is it safe to stop WinAppxD, if I'm going to need to restart it again without rebooting my server?
(Answer) How do I stop WinAppxD?
(Answer) How do I start WinAppxD?
(Answer) How can I verify that WinAppxD is running?
(Answer) What is WinAppxD, and what is it used for?
(Answer) Getting 'ps -ef' original UserID in Linux
(Answer) Information on Winprint 2.4
(Answer) How to Purge the USAGE File
(Answer) Does Winprint -width and -length work?
(Answer) Is there any special consideration that we should take in order to use Winprint?
(Answer) What is the relationship between winprint.exe and winprintdll.dll?
(Answer) Storing zero numeric values in SQL Server
(Answer) What are the zero apps?
(Answer) How do I start the license server?
(Answer) How to debug the license server
(Answer) How do I determine my server’s serial number required for registration with APPX?
(Answer) How to associate PDF output to enable printing in a windows environment.
(Answer) What different configurations of APPX/ODBC are supported?
(Answer) What software do I need on the data server in addition to APPX?
(Answer) APPX and ODBC information
(Answer) What kind of machines and network do I need for server and clients?
(Answer) Can I get a log of file activity using APPXIO?
(Answer) How do I verify all files in a database?
(Answer) How do I verify the file 'ORDER' in application 'AAA', database 'DDD'?
(Answer) How can APPX data file indexes become corrupt?
(Answer) When might I want to use APPXUTIL to check my file system?
(Answer) Where do I get APPXUTIL?
(Answer) Why does a user of APPX for Windows need APPXUTIL?
(Answer) What is APPXUTIL?
(Answer) What does it mean to 'verify' a data file?
(Answer) How do I script imports for windows using APPXUTIL?
(Answer) How do you diagnose strange or generic errors (such as bus errors, seg faults, attempting to free freed memory errors, or "an internal error has been detected" errors)?
(Answer) How do I see the APPX Process Stack?
(Answer) What is the APPX Process Stack?
(Answer) How to define the keyboard layout, (appx –k)
(Answer) New Item
(Answer) WinAppxD service is not running (Troubleshooting WinAppxD)
(Answer) Client login issues - Incorrect login (Troubleshooting WinAppxD)
(Answer) HASP not seen by APPX (Troubleshooting WinAppxD)
(Answer) Winprint won't print to my printer (Troubleshooting WinAppxD)
(Answer) Winprint won't print to printers that are not defined on my NT server (Troubleshooting WinAppxD)
(Answer) Getting an APPX Stack Trace / Disabling Dr. Watson (Troubleshooting WinAppxD)
(Answer) File analysis and recovery.
(Answer) How to move Appx files between platforms.
(Answer) How Appx spawns background tasks.
(Answer) How does executable module (EM) caching work?
(Answer) With APPX ODBC, files stored on the RS/6000 in APPXIO format, accessing the files from a PC using ODBC on the PC with a client like Access, what security is available? Can I use APPX internal security to control what databases/files/records/fields can be "seen" by the ODBC client?
(Answer) Where can I find the BugTracker system?
(Answer) How do you turn on/off AppxDSvc logging?
(Answer) What's the address of the site where we can download the email support archive?
(Answer) Are there any issues with HPUX 11.11 that we need to be concerned about?
(Answer) Excessive CPU utilization when client reboot’s PC.
(Answer) Is there a PDF for the record number in a consecutive file?
(Answer) "Recover"ing data into a consecutive file.
(Answer) I can't connect to a second instance of the database (Sybase, Oracle, etc.)
(Answer) Is it possible to create Indexes in the Dharma tables to improve speed? If yes then how?
(Answer) Is it possible to use specific names for the FIELDS in the Dharma Tables?
(Answer) Are there any tweaks to improve performance when retrieving data using the Dharma ODBC link?
(Answer) Is there a way to synchronize databases in APPXIO with databases kept in SQL Server?
(Answer) Can we update records in APPXIO files using SQL Statements from SQL Server?
(Answer) Is it possible to change the field names that are used by APPX/ODBC?
(Answer) French Characters in Oracle
(Answer) "mm free()-corrupted trailer"
(Answer) Is it safe to remove USAGE.dat and USAGE.key files?
(Answer) When do entries in USAGE.dat file gets removed?
(Answer) Can I export a registration key?
(Answer) In NT 4.0 I have a user named joe@my-company and when I upgrade the os to Win 2K Joe can’t logon. Why?
(Answer) I want to use Appx with SQL Server. Are there any known issues/performance issues?
(Answer) How do I print a query log?
(Answer) How can I move APPX data stored in an FMS group to SQLServer?
(Answer) Is the proxy database id "LOK:" still required when using SQLServer?
(Answer) How can i build up the FMS path for APPXIO data files?
(Answer) List of Environmental Variables
(Answer) Our developers wants to know if Appx has Dharma JDBC Driver?
(Answer) Is there an environment variable that records a log of the user interface?
(Answer) What is APPX_OLD_MODES variable for?
(Answer) Do record locks display when files are in RDBMS?
(Answer) Oracle 9i Performance issues
(Answer) I have an existent RDBMS table and i want to use Field Override feature in the FMS group settings, can i do that?
(Answer) Accessing 2 different schema's defined for 1 instance of Oracle
(Answer) What is the default field mapping for RDBMS?
(Answer) Known issue with SQL Server SP4
(Answer) Storing NULL/blank values in SQL files
(Answer) A Handy list of RDBMS commands for various RDBMS's
(Answer) How to get a list of the files in which your Appx session holds record locks?
(Answer) How can I produce an Appx Event Log?
(Answer) TCP Keep-alive registry entries
(Answer) Why is my sqlcmd log is truncated? In prior versions, I've seen logs with create table lines in excess of 3000 char?
(Answer) Oracle Instant Client and Appx
(Answer) Is Appx a multi-threaded Application? WIll it take advantage of multiple CPUs?
(Answer) How to set the APPX_SQL_CMD to obtain a log of RDBMS activity.
(Answer) How to read the APPX_SQL_CMD Log
(Answer) How to set the APPX_DBG_CODE to log specific RDBMS activity
(Answer) Which external DB still require the proxy database id "LOK" to be set?
(Answer) Orphan Session Detection and possible causes
(Answer) Where can i find information on your Language Translation?
(Answer) New Item
(Answer) Merge and Replace application data files with the Database Management Import utility.

[New Answer in "APPX System Administration"]
2009-Sep-04 5:34pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What rule does APPX / Oracle interface use to decide when a field will be "char" vs "varchar".
The basic rule: if the field is less than six characters long or is a key segment, we use a 'CHAR', otherwise we use a 'VARCHAR'.
You can override that with field-level overrides or by setting "Use VARCHAR for all alpha fields?" to Y (in the FMS group).
[Append to This Answer]
2003-Nov-24 9:17am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Oracle import performance issues.
When APPX imports records into an Oracle database, APPX reads a record from the source file and then executes a SQL INSERT ROW statement to insert the row (record) into the Oracle database. With every insert, APPX executes a commit statement. The environment variable APPX_IMPORT_COMMIT can be set to change the commit frequency if necessary. Example:
                     export APPX_IMPORT_COMMIT=5000
An INSERT ROW statement also updates the indexes that are defined for the Oracle table. Inserting individual rows of data and updating the indexes is probably the slowest operation that you can perform with a database.
Performance of the import operation can be improved dramatically by removing the indexes from the Oracle table. After the data is imported, the indexes can be added back.

Another factor that can have a significant impact on performance is if your Oracle database resides on a different system than APPX. If APPX and Oracle are on different systems, each INSERT ROW statement is going to generate one or more TCP/IP transactions. Moving data thru a network can be painfully slow. APPX always recommends that you install APPX on the same system as your database if at all possible.

The only other suggestion is to have your DBA monitor the Oracle database and verify that all configuration settings that might affect performance are set appropriately.

[Append to This Answer]
2003-Nov-24 9:53am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to import dates from APPX to Oracle.
Internally APPX stores all dates in CCYYMMDDHHMMSSTh format and the routine that creates the comma delimited file uses the CNV TEXT which converts the date to a MM/DD/CCYY character format. This converted format is designed for general exporting and uses the MM/DD/CCYY format because that format is relatively standard for text files. If you are exporting APPX data that is to be imported into Oracle or another database that has the date field(s) defined as CCYYMMDD, you can instruct APPX to format the date in the CCYYMMDD format by setting the date mask for the application you wish to export. There are two ways this can be specified.

You can manually modify the generated CDF update and put the data into the desired format, or;

If you're sufficiently segregated from your other Appx users, you can for the duration of your CDF generation temporarily set the 'Date Mask' on the second screen of your 'Application' record to something like "08070605 04:03.02(01)". Alternately, at the Appx system-wide level, in System Administration, Databases/Applications, Applications, locate the application which contains the update you are trying to run. Highlight that application and press Enter. You should get a pop up for the application and on this window is a Date Mask Field. Set the date mask to 0807060504030201and press Enter. Now when the update runs (for this application only) it will format the date(s) as an internal APPX date which will then match the format expected by your data definitions in the Oracle table.

Don’t forget to change the date mask back after the import.

[Append to This Answer]
2004-Jan-02 4:48pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Why is my RDBMS import so slow?
"I am importing files residing on our AIX platform to an Oracle database on our Solaris platform. The APPX program is running on the AIX platform. "The import runs very slowly, even when processing files with less than 50,000 records. I have taken out all the constraints and alternate keys from the APPX file descriptions in an attempt to speed up the process. Why does it run so slowly, and how might I speed it up?"
==> When APPX imports records into an Oracle database, APPX reads a record from the source file and then executes a SQL INSERT ROW statement to insert the row (record) into the Oracle database. With every insert, APPX executes a commit statement. The environment variable APPX_IMPORT_COMMIT can be set to change the commit frequency which may improve importing performance, for example:
                     export APPX_IMPORT_COMMIT=5000      
An INSERT ROW statement updates the indexes that are defined for the Oracle table. Inserting individual rows of data and updating the indexes is probably the slowest operation that you can perform with a database.

Performance of the import operation can be improved dramatically by removing the indexes from the Oracle table. Check to make sure that the indexes have really been removed from the Oracle table. I know that you removed them from the APPX data dictionary. But, have they actually been removed from the Oracle database? After the data is imported, add the indexes back via Appx restructure.

Having your database reside on a different system than APPX significantly impacts performance. Each INSERT ROW statement will generate one or more TCP/IP transactions. Moving data thru a network can be painfully slow. We recommend installing APPX on the same system as your database if at all possible.

You may want to ask your DBA to monitor the Oracle database and verify that all configuration settings that might affect performance are set appropriately.

ecr #7007


[Append to This Answer]
2003-Nov-24 10:10am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is a security profile?
Appx has an array of 10,000 yes/no settings ranging from 0000 to 9999. Access to protected processes, files, fields, etc. within Appx is can be secured by setting a value in the security field, usually accessed from the Toolbox/Security selection, of the item you wish to protect. When a user accesses a protected object Appx looks at the corresponding element in the yes/no settings. If the table contains a Y the user can access the process/data/function. If it is set to N then access is denied. A security profile is the definition assigned to a particular group of 10,000 value settings.

Any user not an Appx administrator must be assigned a security profile. Multiple users may use the same profile, such as a PAYROLL profile for the Human Resources department, or a AP profile for all payables clerks.

[Append to This Answer]
2003-Nov-25 5:36pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Cannot see the Oracle database?
We are experiencing a problem with the GUI when accessing the Oracle files. Basically, we cannot see the Oracle database. It seems that when we login via the GUI screen, it does not execute the Unix .profile associated with the users id. This profile contains the information necessary for the user to access the Oracle database (Oracle SID). Is there a place to set the necessary Oracle parameters other than the .profile?
APPX will read two files on startup regardless of whether APPX started from a GUI client or a local command line. The two files are:
                      $APPXPATH/appx.env
                      $HOME/appx.env
You can use the appx.env in $APPXPATH for environment variables that you want shared by all users and the $HOME/appx.env for each user. You should be able to set the Oracle environment variables in one of those files, example:
                      ORACLE SID=APPX
                      APPX DBG CODE=OxFFFFFFFF
                      Etc.

[Append to This Answer]
2003-Dec-01 4:28pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
--- COMMIT MODE PDF hierarchy!
Currently, changes to the --- COMMIT MODE pdf are only recognized when a transaction completes.
This means that if you are in COMMIT MODE=END and you change to COMMIT MODE=PCF CYCLE, the change won't be recognized until your process ends (or until you execute a COMMIT or ROLLBACK statement).
Also, we need to establish a hierarchy (similar to the hierarchy that we use for DEFAULT MODE) that determines the precedence for the COMMIT PDF when you invoke a child process.
[Append to This Answer]
2003-Dec-08 9:40am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to incorporate COMMIT & ROLLBACK into APPX code!
The --- COMMIT MODE pdf has four valid values.  (You may see AUTOCOMMIT as 
well, but it's not implemented yet):

 MANUAL     -  Appx will not automatically COMMIT your changes.  You must use
               the COMMIT statement.

 END        -  Appx COMMITs your changes when the process ends.

 PCF CYCLE  -  Appx COMMITs your changes as you progress from PCF record to 
               PCF record.

 COMPATIBLE -  Appx COMMITs your changes as soon as -all- record locks are 
               released.

Appx never automatically issues a ROLLBACK.  Based on the structure of your 
application, there may be other places where you want to COMMIT a transaction.  
That's what the COMMIT statement is for.  One thing to keep in mind is that the
frequency of COMMITs will affect performance.  The more COMMITs you do, the 
slower your application will be.  For interactive processes, you can probably 
ignore the performance issue, but for batch-mode operations, COMMITing too 
often can really slow things down.

Another issue to be aware of is that AppxIO files do not support transaction 
processing.  If you ROLLBACK a change to an RDBMS-hosted file, any changes made 
to AppxIO will not be rolled back.  Related to this is the issue of visibility.  
Changes made to an RDBMS-hosted file are invisible to other users until they 
are committed.  Changes made to an AppxIO-hosted file are visible immediately.

Appx also supports save-points.  A save-point is a partial transaction.  You 
mark the beginning of a save-point with the SAVEPNT statement - the only 
argument is a name of your choosing. Executing a SAVEPNT tells the RDBMS that 
it should write a marker into the current transaction.  If you find that you 
want to ROLLBACK part of a transaction, you can specify a save-point name in 
the ROLLBACK statement.  The transaction is still open and you can commit other 
changes, but changes made since the save-point was created are lost.
[Append to This Answer]
2003-Dec-08 9:49am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What are the APPX invocation switches?
Example: moz /users/pat> appx –u

Usage: -u                          list these options
       -k                          define a new keymap
       -m=[user_id:]keymap_name  override keymap ID
       -d=<database_id>            override startup database
       -a=<application_id>         override startup application
       -t=<process_type>           override startup process type
       -p=<process_name>           override startup process name
       -i=<flat_file_name>         convert a flat file into UNIXIO format
       -e=<data_file_name>         convert a UNIXIO file into a flat format
       -v=<data_file_name>         verify the integrity of a UNIXIO file
       -an=<data_file_name>        analyze a UNIXIO file
       -l=<log file name>          start a license server

Restrictions:

An application_id and process_type must always be included when specifying 
a process_name.  If an application_id is included without specifying a 
process_type/name, the startup menu for the application will be used.

If no application_id is specified, the startup application and menu for the 
database will be used.  If no database_id is specified, the startup database 
defined for the user within System Administration is used.  If the startup 
database is also unspecified, the Appx main menu is used.

The valid process_types are Menu, Job, Input, Output, Update, Action, Inquiry, 
Query, Status, and Subroutine.  Use underscores (_) in place of any embedded 
spaces within parameters.
[Append to This Answer]
2003-Dec-08 10:01am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Commit parameter doesn’t seem to work?
APPX_IMPORT_COMMIT was added in August of 2000. If your engine build date is later than 9/13/2000, it should include support for APPX_IMPORT_COMMIT.
[Append to This Answer]
2003-Dec-18 2:59pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to connect Appx to Oracle.
Let's assume we have two different hosts, the Appx server host we'll call appxhost, the Oracle server host we'll call oraclehost. They may or may not be the same machine. (But they perform much better if on the same machine.)

You must install a package called "Oracle Client Software" on appxhost. As of Appx 4.1.a, you must install Oracle Client version 8, the version we built our 4.1.a engine against. (ecr #6417, 7008)

Appx connects to Oracle using the Oracle Client software (called the OCI). The OCI must be able to find a few configuration (and localization) files using the $ORACLE_HOME environment variable. (If you don't have $ORACLE_HOME properly defined, Appx displays the error message: "*Oracle initialization failed".) The typical way to define $ORACLE_HOME is to use the oraenv shell script. Just run: ".oraenv"

When Appx connects to Oracle, there are three different ways that the OCI can locate the Oracle server:

 1) Enter a server name in the Appx/Oracle FMS group (either an Oracle
    SID, or the name of a remote server as described below).

 2) If you leave the server name blank, the OCI uses the environment
    variable $TWO_TASK to locate a remote server.

 3) If you leave the server name blank and $TWO_TASK is not defined, the
    OCI uses the $ORACLE_SID environment variable to locate a local
    server.

You use $ORACLE_SID when appxhost and oraclehost are the same machine.
You use $TWO_TASK when appxhost and oraclehost are different machines.

The $ORACLE_SID environment variable refers to an entry in the /etc/oratab file (created by Oracle).

Here's a sample /etc/oratab file:

This file is used by ORACLE utilities. It is created by root.sh and updated by the Database Configuration Assistant when creating a database. A colon, ':', is used as the field terminator. A new line terminates the entry. Lines beginning with a pound sign, '#', are comments. Entries are of the form:

       $ORACLE_SID:$ORACLE_HOME:<N|Y>:
The first and second fields are the system identifier and home directory of the database respectively. The third filed indicates to the dbstart utility that the database should , "Y", or should not, "N", be brought up at system boot time. Multiple entries with the same $ORACLE_SID are not allowed.

     oracle:/opt/oracle/product/9.2.0:N

The $ORACLE_SID here is 'oracle' and the $ORACLE_HOME is '/opt/oracle/product/9.2.0'.

The oraenv script examines the /etc/oratab file. oraenv uses a command named dbhome to find the $ORACLE_HOME location given an $ORACLE_SID

The $TWO_TASK environment variable refers to an entry in the tnsnames.ora file (located somewhere in the $ORACLE_HOME directory tree). Here's a sample tnsnames.ora file:

      ORACLE.INTERNAL.APPX.COM =
      (DESCRIPTION =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = badger.appx.com)(PORT = 1521)))
      (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle)))

This entry defines a server named ORACLE. It also defines a server named ORACLE.APPX.COM). The body of this entry tells the OCI to find the DBMS server using the TCP protocol to connect to the listener running on port 1521 at badger.appx.com. You can refer to this server as 'oracle' or 'oracle.appx.com'.

The OCI supports many different protocols. TCP is probably the most common. On Windows machines, you'll find named-pipe servers. The fastest transport mechanism (which can only be used for local servers) is the bequeath adapter which uses shared memory to communicate between the client (appx) and the server (oracle).

Here's our recommendation for finding all of the magic values you need:

 1) If you know your Oracle server is installed on the same machine as
    your Appx server,
a) Examine the /etc/oratab file to find your Oracle SID
b) Examine the /etc/oratab file to find your $ORACLE_HOME
c) Make sure $ORACLE_HOME is defined in your start-appxd.sh script
d) Create an Oracle FMS group (type 5) and enter the Oracle SID in the server name field
2) If you know your Oracle server is installed on a remote host,
a) Examine the /etc/oratab file to find your $ORACLE_HOME. (In this case, $ORACLE_HOME will tell the OCI where to find config files.)
b) Examine the 'tnsnames.ora' file to find your remote server name. c) Make sure $ORACLE_HOME is defined in your start-appxd.sh script.
d) Create an Oracle FMS group (type 5) and enter the remote server name in the server name field.

Using the APPX/Oracle Connection, providing APPX/Oracle connection setup and operation instructions:

         www.appx.com/assets/asp/dynamic_generator.asp?pageid=605
How to Debug an APPX/Oracle Connection:
         www.appx.com/assets/asp/dynamic_generator.asp?pageid=682

[Append to This Answer]
2004-Feb-13 6:03am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Can I run different releases of APPX on the same server?
Yes however they must be installed in separate directories and not share any information (data files) with each other.
[Append to This Answer]
2003-Dec-31 9:18am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Why is APPX building the EM’s every time?
Permissions can cause this. If Appx can't write out a new EM (because it doesn’t have rights to the directory) it will continue to create EM’s every time a it needs it.
You can also set the environment variable APPX_DBG_VFY to create a log of why APPX is rebuilding the EM(s) each time.
[Append to This Answer]
2003-Dec-31 9:22am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
WinSQL: APPX ODBC debug utility.
Steve Rickley found a great way for customers to debug their ASQL import errors during our Web Interface class. There is a free tool called WinSQL (www.imranweb.com/freesoft.htm).

The main use of this tool is to attach to any ODBC data source and let you browse and run SQL commands. Steve found that it had an option to OPEN a text file containing SQL commands. So, when he got an ASQL syntax error, he started WinSQL and had it open a file that ASQL automatically created. The file contained the SQL that ASQL generated. When the SQL from this file was loaded into WinSQL, it syntax highlighted the exact syntax error and I think have a message about what was wrong with the offending syntax.

The really cool part was that Steve was able to fix the syntax in WinSQL and have WinSQL execute the create table as modified. Then the table worked with APPX in it's modified fashion without having the change the offending field name in the APPX database.

This was a great debugging tool. And also a great tool to correct errors in field names without having to change the APPX data file and field names. AppxODBC does not match up by field name, so this worked.

WinSQL is also useful for debugging our SQL Server (via ODBC) connection (www.appx.com/pub/documents/odbc.ConnectionInstructions.txt).

There are many protocols SQL Server can use. (TCP/IP, named pipes, LocalServer, ...) The client (the ODBC data source) and the server must be speaking the same protocol.

WinSQL is good at passing through error messages that our APPX/ODBC connection might filter out. Thus, it's a good debugging tool if you're unable to get APPX for Windows to talk successfully to an ODBC / SQL Server backend to APPX.

Sometimes, you can get APPX/ODBC connection working over 'LocalServer' DSN, where it might not work properly with a manually created DSN. This could be because Local Server uses a simple protocol. Client & server know automatically which to use.

(Under ODBC , you have to have a listener set up for each protocol. The client has to know which protocol, plus addressing and identification info. For example, you may have to have a TCP/IP listener (with IP address & port#).)

[Append to This Answer]
2003-Dec-31 12:56pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to track “Record Held by Another User"
You can instruct AppxIO to track lock holders on a file-by-file or FMS Group basis:

Include the text "track_locks" (without the quotes) in an FMS control string. APPX will record extra information in the file whenever a record is locked. There is a performance penalty of two extra I/O operations per READ with HOLD when you use this flag, so you may want to apply this flag selectively, through 'Edit File Specifications'.

'track_locks;' is defined for individual files in Appl Design > Tools Tab > Database Management > File Specification > File Attributes. 'track_locks;' is defined for whole databases using SysAdmin > Config > File System Groups > 'FMS Group Attributes', and SysAdmin > DB/Appl > DB/Appl > 'FMS Group'. (It is not defined as an environment variable.)

Appx displays the user's three-character UserID on an ILF 'READ with Hold', whenever it waits more than 10 seconds for a lock.

APPX will *not* wait for or display User-holding information for records attempting to be held by INPUT processes, in either Change or Delete mode. Instead it goes into 'Chg/Inq' or 'Del/Inq' mode and displays a generic 'This record held by another user'. If however you execute a Read with Hold from ILF within such an INPUT process, APPX will display the holding user's UserID.

On Unix systems, you will see a process ID even if you don't use 'track locks'. There is no performance penalty for this.

On Unix systems' INPUT processes, you can also run 'fuser -u {filename}' to determine who has a given file open.


If you get the "Record Held by Another User" message on application design files (such as in the OUTPUT editor), you can use the following code in a SUBR within that application:
      BEG READ 0AD PROCESS                HOLD 1 KEY IS  PROCESS KEY
      END READ 0AD PROCESS
You can hold (but not write, rewrite or delete) 0-app file records. The above code attempts to lock every PROCESS file record. If it gets hung on a Process for more that 10 seconds, it generates the message:
 Waiting for lock held by APX in /usr/appx/data/00/SUR/Data/PROCESS.dat
or
 Waiting for lock held by session 9999 in /appx/data/00/SUR/Data/PROCESS.dat
You get the former if "track_locks;" is defined in an FMS group referenced by the application's Application record in System Administration.

You get the latter if there is no "track_locks;". This could be more useful, as it tells you *which* APX user session holds the lock.


You can also use the lsof (or fuser) commands to find information about open files. lsof shows you all files currently opened by a given process, or it can show you all processes that have opened a given file.

lsof and fuser are available on Linux and Unix systems. Windows systems use 'Process Explorer':

 Windows - use SysInternals.com's Process Explorer utility:
           http://www.sysinternals.com ... look for "Process Explorer"
AIX - http://aixpdslib.seas.ucla.edu/packages/lsof.html

 HP/UX   - http://hpux.cs.utah.edu/hppd/hpux/Sysadmin/lsof-4.70

 Red Hat Linux - part of the lsof RPM package

 Solaris - use the fuser command instead of lsof

[Append to This Answer]
2006-Nov-21 5:04pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How APPX License counts WS's
If you are logging in with an APPX Client (i.e. from Windows using the APPX Client), we count IP addresses (and allow up to 4 duplicates).

If you log in from a dumb terminal, we count the tty name. If you can somehow arrange for the tty names to be the same between to tty sessions, we will only count you as one user (again, allowing up to 4 duplicates).

That's a little hard to understand, so here's the test: Log into APPX, then press Option-99 from the main menu, then Option-1. Look at the Workstation name. Then do the same in another session.

If the Workstation names are identical you are only consuming one user-right. If they are different, you are consuming two user-rights.

[Append to This Answer]
2004-Jan-02 10:39am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to reprint a print file?
How can I easily reprint a file that's has been requeued (saved in the print
directory) without using the winprint from the dos prompt?  The file in
question is checks.  Once you print them you can't rerun the process.  
I cannot use the winprint command from dos because I need to grab the form 
file so it spaces everything correctly.

When you requeue an APPX report, it leaves the print file and a configuration 
file in the user's print directory after they've been submitted to the print 
spooler.

For example, when printing a System Administration list, the print file might  
be SYSADMI0 and the configuration file SYSADMI0.cfg

If you wanted to reprint this report, you might submit commands like the  
following:

If you are on Windows:

     cd  C:\appx\data\PRINT\USR
     C:\appx\data\winprint.exe  -config=SYSADMI0.cfg  SYSADMI0
or
     C:\appx\data\winprint.exe  -config SYSADMI0.cfg  SYSADMI0

The general form is:

     winprint.exe  -config=<config.file>  <print file>
or
     winprint.exe  -config <config.file>  <print file>

For those on Unix/Linux:

/usr/local/appx/data/appx_print -config=/usr/local/appx/data/PRINT/USR/SYSADMI0.cfg
/usr/local/appx/data/PRINT/USR/SYSADMI0

You can construct and issue shell (DOS) commands by means of the RUN command. 
You'll find documentation for it in the Designer Reference Manual, and at 
www.appx.com/pub/documents/HowTo/run.Windows.Functions.html 

The print file name can be found in --- PRINT FILE PATHNAME.  You'd be well
advised not to operate on the file pointed to by --- PRINT FILE PATHNAME, 
until after you've exited the OUTPUT process that generated the print file.  
This means passing the contents of --- PRINT FILE PATHNAME to a subsequent 
job step, possibly by means of a related or detached work field.
[Append to This Answer]
2007-Feb-27 10:57am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Message: "Building Dynamic Index"
A user receives when running a process, the message:

       Building Dynamic Index

       You are building a dynamic index for
       a possibly large number of records.

       This process may take a long time.
       Please CANCEL to stop building index.
       Press RETURN to continue.

What exactly makes this message occur? How big does a file have to be before this occurs?

This message is displayed while APPX is building a requested dynamic index after indexing 1000 records. The administrator can adjust the record count by setting the environment variable APPX_DYNAKEY_PROMPT. For example:

        APPX_DYNAKEY_PROMPT=5000

Dynamic indexing (not just the prompt, but all of the capability) can be disabled altogether by setting the variable:

        APPX_DISABLE_DYNAKEYS=yes

[Append to This Answer]
2004-Jan-07 11:06am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Oracle-Store blanks, not NULL !
How can one force blanks into null fields, when converting Appx to the Oracle Database?
If an Appx alpha field contains all blanks and the database field allows NULL values, then Appx stores a NULL value in the corresponding database field. If the database field does not allow NULL values, then Appx stores spaces in the database field. If you don't want Appx to store null values in he field, make sure that the database field has the NOT NULL attribute set.

You can use the field override option in the File Specifications to specify that null values are not allowed. Do this before running Create Files to create the table.

[Append to This Answer]
2004-Jan-05 4:26pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Where is Java/Client cache?
Following are locations for the Appx/Client cache directory (which stores GUI information downloaded from the Appx/Server, so it doesn't have to download the same GUI information more than once.)
Under Windows 2K:
  C:\Documents and Settings\{yourWindowsID}\.appx\cache\
Under NT:
  C:\WINNT\.appx\cache\
Under Unix & Linux:
  $HOME/.appx/cache/
To find where the .appx\cache directory should be on a client, run the Appx/Client, then find (Xref) home\appxlog.txt, which shows the cache directory location, after you log into a server.
[Append to This Answer]
2004-Apr-02 4:44pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Importing big Oracle tables!
If your tables are large &/or have numerous indexes, the following can speed up the import significantly:

After using APPX to create the table in Oracle (and presumably other RDBMS's), use SQL PLUS or any other DBA tool to drop all the table's indexes. Then import the data -- it will import much faster.

Important: Your Appx import should use the "merge" option. Otherwise, APPX scratches/creates before importing, recreating the indexes that you just dropped, and eliminating the performance boost you want during the import.

After importing, tell APPX to 3)Create the table again. APPX won't create the table since it already exists, but will create the missing indexes much more quickly than if you had built the indices one row at a time.

[Append to This Answer]
2004-Jan-05 4:25pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is my AppxODBC version?
Method #1:  Start > Settings > Control Panel > Administrative Tools >
                    Data Sources (ODBC) > Drivers Tab > Version


Method #2:  Windows Explorer > {your Windows Directory} > System32 >
                    AppxODBC.dll > Properties > Version Tab > "File
[Append to This Answer]
2004-Jan-05 4:27pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to use recover.exe!
A quick recommendation:

` 1) Move FILE.dat and FILE.key to FILE.bad.dat and FILE.bad.key

` 2) Execute:

     IF  you are on 4.1:
     recover  FILE.bad.dat  FILE.dat > FILE.corrupted
If you are on 4.2: appx -recover FILE.bad.dat FILE.dat > FILE.corrupted

` 3) Display FILE.corrupted

` 4) Rebuild your keyfiles (run 'Create Files').

This allows the original corrupt files to be maintained as ".bad." files,
in case additional data recovery is desired later.

For full instructions see: http://www.appx.com > Support >
> Special Topics > System Administration > File Analysis and Recovery
(http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=624)
and (Xref) "Recover"ing data into a consecutive file..
`

Bruce Johnston Jan 14, '04:
FOR THOSE OF YOU ON WINDOWS, here're a few .bat files in a .zip to help you do this.

They assume that they and the recover.exe reside in D:\APPX\Tools and that D:\APPX\Data is the starting path for your .dat and .key files so you might have to edit them accordlingly.

One is standalone, rebuild.bat, and it is for doing the cmd line work on a single file.  It's syntax is
rebuild ver_or_db app datfilenamewithoutextension
No wildcards allowed for this one!

The other four are invoked in sequence rebuild1 ... rebuild4 with rebuild1 being invoked from the command line as
rebuild1 ver_or_db app datfilenamewithoutextension
but, in this case, all three parameters may contain dos wildcards
e.g.
rebuild1 01 T?? *
should run recover against all of the design files in the T-Apps, assuming no file locking issues.
and,
rebuild1 TST * C* would run recover againt the TST database for all files starting with "C" across all applications.

Hopefully, I'll be able to upload rebuildx.zip after completely this...
That didn't work so here're the .bat files:

rebuild.bat
>>>
d:
cd\appx\data
cd %1
cd %2
cd data
del %3.ke0
ren %3.key %3.ke0
del %3.bad
del %3.del
del %3.da0
ren %3.dat %3.da0
d:\appx\tools\recover %3.da0 %3.dat %3.del > %3.bad
cd..
cd..
cd..
<<<


rebuild1.bat
>>>
REM     Receives %1 = 1st level below APPXPATH (Company or Version)
REM              %2 = 2nd level below APPXPATH (Application)
REM              %3 = .DAT file spec WITHOUT the extension
REM     Wildcards permitted at all three levels.

REM     Note that the "/d" usage in the FOR commands implies
REM     that the command line extensions in NT server be supported.

REM     Make sure that "d:\appx\tools" is changed to match the path to
REM     you own .BAT files. AND RECOVER.exe

d:
cd\appx\data
for /d %%d IN (%1) DO CALL d:\appx\tools\REBUILD2.bat d:\appx\tools %%d %2 %3
<<<


rebuild2.bat
>>>
REM     REBUILD2.bat
REM     CALLed from REBUILD1.bat 
REM     Receives %1 = path to REBUILD3.bat and RECOVER.exe
REM              %2 = 1st level below APPXPATH (Company or Version)
REM              %3 = 2nd level below APPXPATH (Application)
REM              %4 = .DAT file spec WITHOUT the extension

cd .\%2
for /d %%d in (%3) do CALL %%1\REBUILD3.bat %1 %%d %4
REM     In case dir structure or wildcards were wacky
REM     Force a return to where REBUILD1.bat started us.
cd\appx\data
<<<


rebuild3.bat
>>>
REM     REBUILD3.bat
REM     CALLed from REBUILD2.bat 
REM     Receives %1 = path to REBUILD4.bat and RECOVER.exe
REM              %2 = 2nd level below APPXPATH (Application)
REM              %3 = .DAT file spec WITHOUT the extension
if not exist .\%2\data goto ENDBATCH

cd .\%2
cd .\data
for %%f in (%3.dat) do CALL %1\REBUILD4.bat %1 %%f
cd..
cd..

:ENDBATCH
<<<


rebuild4.bat
>>>
REM     REBUILD4.bat
REM     CALLed from REBUILD3.bat 
REM     Receives %1 = path to RECOVER.exe
REM              %2 = .DAT file spec
REM
REM     Thanks to Paul Peterson, (ppeterson@utahsbr.edu)
REM     I know that %~n2 returns the file name
REM     WITHOUT the extension which he learned from
REM     (the?) Windows NT Scripting Administrators Guide
REm             by William R. Stanek

del %~n2.ke0
ren %~n2.key %~n2.ke0
del %~n2.bad
del %~n2.del
del %~n2.da0
ren %~n2.dat %~n2.da0
%1\recover %~n2.da0 %~n2.dat %~n2.del > %~n2.bad
<<<
[Append to This Answer]
2006-Jan-17 8:49am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Message, “Can't access named resources”!
The following assumes a unix or linux server:
 a) Verify that the files are indeed OK.
b) cd $APPXPATH/vv/aaa/ where "vv" is the version and "aaa" is the application id
c) chmod 777 Resource
d) chmod 777 Resource/*
e) rm -f Em/*
f) rm -f Dbg/*
g) On your local client system, remove the ".appx" cache directory tree. It should be in your home directory. If you look at (Xref) home\appxlog.txt file in your client directory, it will have a log line with the path to your local .appx cache directory.
h) Check that the case of the filenames in the resource file exactly match the case of the filenames on disk.
i) Try to load the screen again in the image editor
j) If it still fails, email (Xref) home\appxlog.txt as it exists right after killing the client from a lockup, to techsupp@appx.com.
`
[Append to This Answer]
2004-Apr-02 4:48pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
AppxODBC & Appx Security
With APPX ODBC, files stored on the RS/6000 in APPXIO format, accessing the files from a PC using ODBC on the PC with a client like Access, what security is available? Can I use APPX internal security to control what databases/files/records/fields can be "seen" by the ODBC client?

Yes. When AppxODBC logs into your RS/6000, it provides a user name and password to AIX. We use that user name to control security within Appx.

[Append to This Answer]
2004-Jan-05 4:32pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Can I reserve an application lock?
We don't have a subroutine that can be called from within an application to reserve a lock.
[Append to This Answer]
2004-Jan-05 4:58pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Which Windows version are we?
A client needs to intercept the Operating System type in Appx. The subroutine "GET OS TYPE" returns the type of OS (Unix, Windows) but is there another subroutine to get the type of Windows OS (WIN 95, 98, 2000, NT, XP) ?

Here's one way:

NT, 2000, and XP all set the OS environment variable OS=Windows_NT

  If OS is set, then your operating system is NT, 2000, or XP
If OS is not set then your operating system is 95/98/ME
If OS=Windows_NT, and the variable "ProgramFiles" is set then you have an operating system that is 2000 or XP, else your operating system is NT.

Here's another way:

Define a DOMAIN called DWORD, numeric, 10.0 digits, signed, storage-type = binary. (This is important, it must be exactly that format).

Define a one-record working storage file (I called mine 1EX VERSION) with the following structure (note - each DOMAIN field is defined by the DWORD domain):

     Seq No  Field Name          Field Type Format
     ======= =================== ========== ======================
     100     VERSION SIZE        DOMAIN     S9(10)
     200     VERSION MAJOR       DOMAIN     S9(10)
     300     VERSION MINOR       DOMAIN     S9(10)
     400     VERSION BUILD       DOMAIN     S9(10)
     500     VERSION PLATFORM    DOMAIN     S9(10)
     600     VERSION CSD         ALPHA      X(128)

The following ILF should populate the VERSION record for you:

      SET      --- TEMP 80                    =      kernel32.dll,
      APPEND   --- TEMP 80                    0      GetVersionExA
      *
      SET      1EX VERSION SIZE               =      148
      PASS     1EX VERSION                    RECORD           SHARE? Y
      CALL     --- TEMP 80                    RESIDENT? N  END? N  FAIL 0

If --- RETURN CODE is not equal to 0, the VERSION record should be filled in.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/sysinfo_49iw.asp (all one URL) has more information about the GetVersionEx function and the contents of the OSVERSIONINFO structure.

[Append to This Answer]
2004-Jan-05 5:19pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Message; “Invalid Native File Management System”
I am trying to create an Oracle (9i) file through APPX file management and I’m getting the error message, “Invalid Native File Management System” on the Create Files screen. What does that mean?
You are probably not running the appx.oracle engine. You are probably running the standard appx engine.
[Append to This Answer]
2004-Jan-07 11:05am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
File fragmentation.
Extensive file activity can lead to thousands of fragment per file, over time. This cannot help performance and could lead to problems. In lieu of a script to periodically verify and (if no errors found) export and re-import all of the files for all version and application or database and application combinations or the pain of full backup and restore, some use Executive Software's DiskKeeper product to do this task, say, after every full nightly backup.

ASI has not tested and in no way warrants this software.

Bruce Johnston Jan 14, '04: Related to the file system under Windows NT, you may want to consider preventing the O/S from updating one of the file/folder attributes that, by default, is updated EACH AND EVERY TIME THAN IT IS ACCESSED FOR WHATVER REASON. APPX installations have easily have tens of thousands of files and folders lurking beneath \APPX\Data and asking the O/S to update the file system with the information doesn't really seem worth it IMHO.
Reg Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem Procedure: Add Value name NtfsDisableLastAccessUpdate of type REG_DWORD. Set it to 1 to prevent the LastAccess time stamp from being updated.
Under Windows 2000 (and ???) you might also want to consider disabling the NTFS disk file indexing at at least the \APPX\Data level and include the subdirectories. How often are you really going to search the drive/data for "foobar" from the server console?
You might want to refrain from doing this if you actually use APIs to dig out this information or if your APPX server is doing other things as well. I've had this set for years now with not observed ill effects.

[Append to This Answer]
2004-Feb-05 6:43pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Printing to a printer produces blank pages.
Printing to certain printers through winprint.exe can cause the printer to eject lots of blank pages, rather than the desired APPX OUTPUT file. This can be caused by the printer driver not knowing from NT's Forms database the page size of the current form, and returning a form length of zero to winprint.exe. This can be diagnosed by setting the environment variable WINPRINT_DEBUG=C:\winprint.txt from the DOS command prompt, then manually running winprint against an APPX generated printfile.

To override the NT form length, enter into your APPX FORM table's FORM CONTROL attribute: -form_id=Letter

A complete list of valid form_ids can be seen by clicking on winprint.exe from Windows Explorer.

[Append to This Answer]
2004-Jan-09 10:11am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
APPX.EXE process is consuming 95%
I look in my NT task manager and see that an APPX.EXE process is consuming 95% (or more) of the CPU. Why do I get these runaway processes?
A process using large amounts of CPU is not likely to be a "runaway" in the sense that it is malfunctioning, and is out of control, taking over your computer. What IS likely, though, is that it is an OUTPUT, or UPDATE, or some other process which takes a while to run, and does lots of I/O and/or data processing. (Designers, Cross Reference has been known to do this when run across multiple large apps). Until the process finishes, it will likely keep using a large percentage of CPU time, simply because that is how NT chooses to allocate CPU time. (The strategy seems to be, "Oh, you don't need any keyboard input? Good, I'll let you keep busy, since you seem to be making lots of progress." This is NT doing what it thinks is the right thing -- APPX has done nothing to raise the priority of these processes, or lower the priority of others.) The best thing to do is just be patient.

Some users have reported that it really helps to run on a multi-processor system, so that even if you have one or two of these CPU-hogging processes running, there is still likely to be a CPU which is not as busy.

Bruce Johnston, Jan 14, '04: One cause of an input hogging a cpu may be inappropriate use of --- ALTERNATE IMAGE NUMBER. It's been a while but a few processes that I had might set this to zero when the series was hit subsequent to pressing F4. Look at this carefully and always set it to a valid value at the beginning of the ILF series before any logic which might change it.
[Append to This Answer]
2004-Jan-14 7:29pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
The command-line "kill" too time-consuming and error-prone. Is there a better alternative?
APPX user, Bruce Johnston, has put together a suite of utility processes he uses in the day-to-day administration of his APPX server. One of these utility processes is a "kill" utility reminiscent of similar functionality found on Wang systems.

While ASI has not tested and in no way warrants this software, it has been available for some time now, and we have heard no negative feedback regarding it. You might want to check it out at www.cansyswest.com/nt_utilities.htm and see if serves your needs. Please be aware that if you install this package, ASI cannot provide support for its functions, since we did not write it. (Caveat emptor, and all the other precautions that normally go along with free and/or user-supported software).

Bruce Johnston, Jan 14, '04:
Be advised that I've recently discovered a problem with the kill-related portion of the utilities.
NT Admins are still allowed to kill any APPX process that they see in the APPX input and non-Admins are supposed to be able to kill sessions under their own APPX id.
I've found that this second bit was only working because, during the process of getting to work several years ago, I'd given the Advanced NT User Right "Act as part of the operating system" to the APPX user group. I discovered this after removing that right from the group and then learning that users could no longer kill their own orphaned sessions.
There are a number of security concerns about this as documented by Microsoft at http://www.microsoft.com/msj/0899/security/security0899.aspx
At some point I hope to change the utility so that the kill requests is not actually attempted by the APPX code but is instead forwarded via a file to an APPX process running as a service under an Administrator group account and have that service periodically check for processes to kill.
In the meantime, if your users have never been able to kill there own sessions, this is probably why not. If they have and you're worried about the potential exposure if code were ever run on the server by a user with this right which contains routines which may exploit the hole, you would want to consider reoving this priviledge.


[Append to This Answer]
2004-Jan-15 8:45am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How can I determine which APPX.EXE processes on my server are orphans?
"View Registration usage" within the System Administration Registration editor, in APPX versions 4.0.a and higher, will let you view PID (Process ID) by User. Once you have identified which processes on the server are orphans, you can kill the using the standard mechanisms described earlier.
Bruce Johnston Jan 14, '04: For those of you that run WinAPPXD or the new APPXDSVC under multiple ports there's a nice (free AFAIK) utility that I've come across called prcview.exe at http://www.teamcti.com/pview/prcview.htm
With it you can learn a number of things about what's going on on your server and one of the nice ones is a view that shows you a process tree. This means that you can see which appx PIDs are running under which instance of WinAPPXD/APPXDSVC especially if you're running under the copies of the exe whose names reflect the port being serviced.
I'd often see a number of APPX sessions in the task manager but nothing under the USAGE log. It turns out that they were all running under another port which only serviced the appx-in-a-browser connection and tha the users were exiting the browser window without shutting down appx.
[Append to This Answer]
2004-Jan-15 8:47am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
All of my users except for one have gone home for the night, and I am sure they have turned off their PC's. I still see three (or four, or ten) APPX.EXE processes in the server's task list. Why are they there?
ONE will be there, because it is the APPX License Server. Some installation maintain a separate copy of appx.exe called AppxLicS.exe (for example) and invoke this copy to start the License Server. This keeps the task separate from (but close to) the group of APPX tasks in the NT Task Manager's list."

At least one other server side process will be there to service your remaining user's connection. (If the user has more than one APPX Client session running, there will be one server side process for each Client session.)

Generally, the others are there because users did not properly exit the APPX client (END'ing until the APPX Client window disappears). For example, they may have just hit the power switch or executed shutdown on their PC without properly exiting APPX. In the APPX world, we refer to these leftover server APPX.EXE's as "orphans". It is probably a good idea to look for and kill orphan processes from time to time, particularly if your system goes days or weeks without a reboot (which would remove the orphans).

If you're running APPX 4.0.a or higher, you should set environment variable APPX_LS_GHOSTS=True. This will cause the APPX License Server to perform periodic cleanup of the APPX usage register, and may help keep the number of orphaned sessions down.

Bruce Johnston Jan 15, '04: Observation: while I've seen APPX do a fair job at toasting server sessions when the client side dies unexpectedly there is one instance in which it will fail to do so, 100% of the time AFAIK.
Up to appx-in-a-browser 4.18, if the user simply uses the "X" to close the browser window then the server session will never get blown away.
Someday I should update BJUtils and put out something which would blow away (such) sessions that have been active for, say, 24 hours or more.
[Append to This Answer]
2004-Jan-15 8:43am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
A user just called me to say that her APPX Client window just disappeared, or there was a power outage or system malfunction, that caused their APPX Client session to end unexpectedly. Do I need to do anything?
It would be a good idea to verify that the server-side process attached to that client session has terminated, and if not, kill it manually.
[Append to This Answer]
2004-Jan-09 10:25am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I manually kill an APPX server process?
In many instances, an APPX server process may be killed by doing the following:

Go to the server on which WinAppxD and the APPX server processes run, and log in as Administrator. Bring up the NT task list, and look for an APPX.EXE listed with the process ID you want to kill (usually, this will be one given to you by the user, from their client's Windows title bar). Highlight it and click "End Task".

If another box pops up, saying that the application is not responding, click "End Task" there as well.

Hopefully, this will result in that process disappearing from the task list. If a process refuses to be killed in this way, it is time to take more drastic measures.

If you can't kill the process via the Task Manger, try using the NT Resource Kit's "kill" command. (You probably have this installed, since some utilities from it are required to install and run WinAppxD. Do a Find for "kill.exe" if you can't locate it.) The Resource Kit "kill" command is very effective, and using it is expected to kill the process even if the Task Manager method did not. (You must be logged in as Administrator to do this.)

[Append to This Answer]
2004-Jan-09 10:26am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
The user process is hung, and I haven't been able to resolve the problem, so I need to kill that client/server session. How do I do that?
First, have the user try again to END and CANCEL out of their process, to make sure that it is not possible to resolve this any other way.

Have the user tell you the number which appears in their APPX Client title bar (they've presumably done this already, but in case they haven't, now's the time to ask). That is the NT PID (process ID) of the SERVER process to which this client is connected. Once you have the PID, but not before, instruct the user to bring up their Windows Task List, and select the APPX process, then click on "End Task". It may pop another box up, saying that the process is not responding. Instruct the user to click "End Task" on that box as well.

Wait a minute or two for an orderly shutdown of the server-side process connected to the client. APPX should detect that the client has disappeared, and end the server process.

If after waiting several minutes, you still see the server-side process ID in your NT server's task list, you will need to manually kill the server-side process.

[Append to This Answer]
2004-Jan-09 10:27am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What should I do when a users APPX session is hung?
First, have the user tell you the number that appears in their APPX Client title bar. This is the NT PID (process ID) of the SERVER process to which they are connected. Go to your server, and verify that there is an APPX.EXE process with that PID on your system in the task list.

If there is no process listed in your server's task list with that number, double-check with the user that you're looking for the right one. Once you are sure that it isn't there, you have a situation in which the client process exists and the server process doesn't. Instruct the user to "End Task" on his APPX Client session via the Windows Task Manager. It may pop another box up, saying that the process is not responding. Instruct them user to click "End Task" on that box as well.

If the server-side process does appear in your server's task list, then you have more sleuthing to do.

Find out what the user was doing. Do they see any error messages on their screen? What process are they in? How long have they been waiting for a response from the system? Try to find out if they are doing anything that requires locking a record (they probably are). (The user himself may not know the answer to this. Refer to your application for the final word.) If so, try to find out if that record is likely to be held by another interactive user, or perhaps a JOB that is batch updating a series of records. In many instances, even if the user does not receive a message to the screen, the culprit of these hangs is that their process is trying to access a record held by someone else. (If, for example, the INPUT calls an UPDATE as an automatic process, and that UPDATE runs into a locked record, it will silently wait for that record to become available, without advising the user.)

If it is possible that they are waiting for a lock, check with other uses and see if you can discover (and then eliminate) the source of the lock conflict.

APPX user, Bruce Johnston, has put together a suite of utility processes he uses in the day-to-day administration of his APPX server. There are a couple of methods for determining who has which files open. While it cannot tell you who has which records locked in which files due to NT O/S design limitations, it can point you in the right direction. Remember also that the system might just be slow. Check to see what system performance is like, before assuming that their process is actually paused, as opposed to just running slowly.

ASI has not tested and in no way warrants the utility software from Bruce Johnston, it has been available for some time now, and we have heard no negative feedback regarding it. You might want to check it out at www.cansyswest.com/nt_utilities.htm and see if serves your needs.

If you were unable to narrow the situation down to lock contention, and solve it, and are also certain that the process is not just running slowly, it is time to look at killing the process.

[Append to This Answer]
2004-Jan-14 2:24pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What can I do if WinAppxD gets stuck regularly?
Many customers have increased the availability of WinAppxD by installing multiple WinAppxD services (WinAppxD as originally installed, plus nearly exact copies of it as WinAppxD2, WinAppxD3, etc.). These differ only in the port used by each one. For example, WinAppxD may listen on port 8060. WinAppxD2 may listen on port 8061. WinAppxD3 on port 8062. Once you have set up multiple WinAppxD services, you can instruct your users to change their "Server Port" (in the login dialog) to one of the alternate port numbers, if they experience difficulty connecting to the default port number.

You may wish to copy WinAppxD.exe to names like Appx8060.exe, Appx8061.exe, etc., in order to keep them grouped together under NT Server's Task Manager. In any case, we recommend that you run multiple APPX/Servers, due to the increased level of fault tolerance it provides. Instructions on setting up WinAppxD services are in the APPX Presentation Client/Server Installation Guide.

Multiple WinAppxD services on different ports invoked from batch files is also a way of changing the main environment variables for, for example, running two versions and data sets in parallel, or using a different APPX_KEYMAP when attaching from another device type such as handheld RF scanners through a telnet session via a LINUX box.

[Append to This Answer]
2004-Jan-09 10:28am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
When might I want to stop and restart WinAppxD (either with, or without, a reboot)?
If you experience the following scenario on your network, you probably need to stop and restart WinAppxD (Note that existing users can continue to work in APPX.):

Client(s) are trying to login to APPX and hang after entering their login information. (APPX may eventually come back and say, Cannot connect to host.)

Having the user logout, and try to log back in again, to make sure that the situation is not due to exceeding your licensed user count, results in that user not being able to log in. Also, if you bring up an NT task list, and do not see WinAppxD.exe in the list, that is an indication that it has already stopped (either you stopped it, or it ran into an error condition and ended itself), and needs to be restarted.

Once again, restarting WinAppxD without a reboot is not guaranteed to work, due to NT TCP/IP implementation. The existence of "Stop" and "Start" buttons in the Services Control panel applet does not mean that these functions work 100% of the time.

[Append to This Answer]
2004-Jan-09 10:29am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is it safe to stop WinAppxD, if I'm going to need to restart it again without rebooting my server?
MAYBE. Sometimes you can stop WinAppxD, then manually start it again, and everything will work fine. However, sometimes the manual restart process is not successful. This appears to be due to NT not properly releasing the port (usually 8060) when WinAppxD is stopped. If the port is not released, when WinAppxD restarts and attempts to recapture it, it can't, so client logins won't be accepted.

See "My WinAppxD gets stuck regularly ...” for a workaround to this. It may be a very good idea to set up Multiple WinAppxD servers as a fallback position, in case you unexpectedly get a hung port condition.) If the restart fails, you can try stopping WinAppxD again (if one started during the restart process) and restarting it again. If a WinAppxD.exe does not reappear in the task list, or if it appears but client logins are not accepted, at this point, your only option is to reboot.

We don't have any figures as to what percentage of the time this is and is not successful. In general, if you stop a WORKING WinAppxD, and expect to be able to restart it without a reboot, YOU ARE TAKING A CHANCE. It may or may not work, due to NT. If you stop a malfunctioning WinAppxD in the hope that restarting it will resolve the error condition without a reboot, you have nothing to lose. In that case, it is definitely worth a try. (You must be logged in as Administrator to do this.)

[Append to This Answer]
2004-Jan-09 10:30am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I stop WinAppxD?
WinAppxD automatically stops when the system is shut down or on its way to a reboot. If you want to manually stop WinAppxD before that point, you MAY be able to stop it through the NT "Services" Control Panel applet, by selecting WinAppxD, and clicking "Stop". Wait a moment or two, then bring up the task list and verify that it is no longer listed.

If after several minutes, you still see WinAppxD in the task list, you can try a more "drastic" measure and try to "End Process" the WinAppxD.exe entry in the task list. It's several minutes after that, and it's still there? The most drastic way of stopping WinAppxD, if you have the NT Resource Kit installed, is to use the kill.exe command provided by the Resource Kit. (Hint: You probably have this installed, since some utilities from it are required to install and run WinAppxD. Do a Find for "kill.exe" if you can't locate it.) (You must be logged in as Administrator to do this.)

[Append to This Answer]
2004-Jan-09 10:31am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I start WinAppxD?
WinAppxD is normally started automatically by the system when it boots. See this document for detailed Installation and Configuration instructions.

If you don't want WinAppxD to start automatically (for example, if you wish for the system to boot without allowing APPX logins), you can set the Startup Type for the WinAppxD service to "Manual" in the NT "Services" Control Panel applet. Then, you can reboot the system. If you check the NT task list at this point, you should not see WinAppxD in it. To manually start WinAppxD, go to the NT "Services" Control Panel applet again, select WinAppxD, and click "Start". Wait a moment or two, then bring up the task list and verify that it is there. (You must be logged in as Administrator to do this.)

[Append to This Answer]
2004-Jan-09 10:32am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How can I verify that WinAppxD is running?
Bring up the NT Task Manager. Look for a process named WinAppxD.exe. If you see it, WinAppxD is running. (Note: this does not necessarily mean that WinAppxD is running properly, as a WinAppxD with a hung port will still appear in the task manager. This is mainly useful to do, to verify that WinAppxD is at least starting successfully.) If this process is not present in your task list, client logins cannot be accepted on your APPX server.
[Append to This Answer]
2004-Jan-09 10:33am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is WinAppxD, and what is it used for?
WinAppxD is the NT implementation of <APPX name for this functionality>. Its purpose is to monitor a user-defined port number for connection requests from clients, such as the APPX Client or AppxNET (used for APPXODBC across the network as well), then validate the client's login and password, and start an APPX Server session connected to that client.

After the user authenticates and is connected to a server-side APPX session, WinAppxD has nothing further to do with that client/server session. If WinAppxD is killed, ends with an error, or experiences a hung port, this will not affect users who have already established APPX client/server connections. (A problem with WinAppxD is the most common cause of the error situation in which no new users can login, but users who are already logged in, can continue to work.)

[Append to This Answer]
2004-Jan-09 10:34am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Getting 'ps -ef' original UserID in Linux
Customer's "ps -ef" on their AIX box gave the User's actual user ID, whereas "ps -ef" under Linux always gives the 'Appx' UserID. The customer uses the ps -ef for Appx user management. Is there a way to get the process user's original ID, so they can do this in Linux?
.
Place the following shell script in /usr/local/bin or /bin. Then pipe the output from appxps into "grep appx" to get a list of all Appx processes:
.
> # which appxps
/bin/appxps

> # cat /bin/appxps
#!/bin/sh
ps -axwo ruser,pid,ppid,c,stime,tty,time,args

> # appxps|grep appx
root     1573     1 0 Jan11 ?     00:00:00 /appx/tools/appxd -s=8066
root     1576     1 0 Jan11 ?     00:00:00 /appx/tools/appxd -s=8090
appx     1589     1 0 Jan11 ?     00:00:00 /appx/appx -l=/appx/license.log
nobody   1660  1573 0 Jan11 ?     00:00:00 /appx/data/../appx -f=4 -fms_server
al      11565  1576 0 Jan12 ?     00:00:01 /appx/data/../appx -f=4 -d=   
brenda  22224  1576 0 Jan13 ?     00:00:01 /appx/data/../appx -f=4 -d=   
al      24736  1576 0 Jan13 ?     00:00:10 /appx/data/../appx -f=4 -d=   
al       4786  1576 0 10:22 ?     00:00:04 /appx/data/../appx -f=4 -d=   
pat      6181  6180 0 12:42 pts/1 00:00:00 /bin/bash  /home/pat/.appx_profile
pat      6183  6181 0 12:42 pts/1 00:00:01 /appx/appx -d=CTS
root     6574  6522 0 13:17 pts/0 00:00:00 /bin/sh  /bin/appxps
root     6575  6522 0 13:17 pts/0 00:00:00 grep appx

> # 
[Append to This Answer]
2004-Jan-14 4:48pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Information on Winprint 2.4
Please refer to:

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=610

[Append to This Answer]
2004-Jan-16 1:42pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to Purge the USAGE File
Please refer to:

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=170

[Append to This Answer]
2004-Jan-16 1:43pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Does Winprint -width and -length work?
Please refer to:

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=618

[Append to This Answer]
2004-Jan-16 2:06pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is there any special consideration that we should take in order to use Winprint?
Please refer to:

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=618

[Append to This Answer]
2004-Jan-16 2:07pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is the relationship between winprint.exe and winprintdll.dll?
APPX uses a DLL so that we can honor the "Print Setup" specifications that you’ve enter. All printer drivers support two different methods for altering the Print Setup specifications. One method is through the Print Setup dialog box (where the user adjusts the choices on the screen), the other method is through a callable API (where Appx, for example, would send your disposition choices directly to the printer driver).

Most printer drivers seem to ignore the information provided through the callable API. So, the only other choice is to allow you to use the Print Setup dialog box. In order to do that, we had to use a DLL so that the specifications entered in the Print Setup dialog can be shared with the program that actually does the printing.

So, when you choose client-side printing, the report file is sent (over the net) to the client, and then the client invokes functions inside the winprintdll.dll module to actually spool the report to the printer (using a combination of the disposition options and the print setup dialog specs).

[Append to This Answer]
2004-Jan-20 10:24am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Storing zero numeric values in SQL Server
I’m having trouble getting zero values into a SQL server table from APPX ... they keep getting added as nulls.
When storing values in a RDBMS, APPX normally stores a numeric value of zero as a "null" value. Conversely, when retrieving a "null" numeric value, APPX normally converts the null value to zero.

However, this default behavior can cause problems if you attempt to perform arithmetic operations on a database column using a program other than APPX unless the program anticipates the fact that a numeric column may contain null values. For example, if you add two values together and one of the values is null, the result will be null. Many SQL programs will fail if numeric null values are encountered when performing arithmetic.

The default behavior of APPX can be easily changed. If you want APPX to store numeric values of zero as zero instead of null for all database tables, you must toggle on the "Suppress Null Numerics?" option in the FMS Group definition. If this behavior only needs to be changed for selected tables, the option can be set for individual files on the "File Attributes" screen using the "File Specification" program in Database Management.

[Append to This Answer]
2004-Apr-19 9:32am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What are the zero apps?
The zero apps are the interface modules used to develop APPX applications. These applications are not modifiable, although the 0LC apps can be copied and hooked to provide a customized system.

The zero app modules are;

0LC Hook processes templates. New with rel 4.2 0AD Application Design 0LA Runtime environment 0DB Database 0SA Systems administration

[Append to This Answer]
2004-Feb-09 1:40pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I start the license server?
To manually start the license server, enter;

          appx -l=logfile

[Append to This Answer]
2004-Feb-13 8:31am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to debug the license server
Set environment variables:

               APPX_LS_DBG=0xFFFFFFFF
               APPX_LS_LOG={some.file.location.and.name}

Debug information for the "appx -l=" license server process appears in the file named after the "-l=".

Debug information for clients attempting to obtain session licenses will appear in $APPX_LS_LOG, if it is set.

In order for this variable setting to affect the license server, you must kill and restart the License Server.

Warning: Watch the size of your log file when you have APPX_LS_DBG set. License server logging tends to be verbose, and you can fill up your disk more quickly than you think.

[Append to This Answer]
2004-Feb-13 8:34am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I determine my server’s serial number required for registration with APPX?
Go to the APPX FTP site and download/uncompress/install then run the appropriate utility.

 ftp://customerftp.appx.com/hostinfo/

[Append to This Answer]
2004-Feb-13 8:37am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to associate PDF output to enable printing in a windows environment.
In APPX 4.2.2, the APPX session tells the O/S to "Print" the PDF print file. For this to work, Acrobat Reader must be installed on the server and there must be an action defined for the "Print" action for "pdf" files. Open Windows Explorer and navigate to Tools-->Folder Options-->File Types. Scroll down and select the extension for "pdf". If there isn't one, the easiest way to get one is to uninstall Acrobat Viewer and reinstall a fresh copy of Acrobat Viewer. If you find an entry for "pdf", click on the Advanced button. In the Actions box, there should be an entry for "Print". This entry defines the command that should be run when an application issues a request to Print a pdf document. If there is no Print entry, then you should reinstall Acrobat Viewer to correct the problem.

The printed output will always go to the server's current default printer regardless of what printer you may have specified within APPX. This is a limitation of the current release of APPX and will be addressed in a future release. Make sure that your server has a default printer defined.

[Append to This Answer]
2004-Feb-19 4:21pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What different configurations of APPX/ODBC are supported?
Two configurations of APPX/ODBC are supported: standalone and client/server. Most commonly, we expect sites to use APPX/ODBC in the client/server network configuration, where the APPX/ODBC driver is installed on a client PC where programs like MS Access and Excel are run, and the APPX data sits on another machine, typically a server.

It is also possible to use APPX/ODBC on a machine which can access APPX data directly, either because that data is on a local drive, or because it is on a "mapped drive" accessible across the network.

If you have a choice, you will probably achieve better performance running APPX/ODBC in a client/server fashion, than by running it standalone against a network "mapped drive".

[Append to This Answer]
2004-Feb-19 4:22pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What software do I need on the data server in addition to APPX?
a. APPX Presentation Server. This is 'appxd' on UNIX systems, and WinAppxD or ‘appxdsvc’ (preferred, Rel 4.1.a and above) on windows systems.

b. The TCP/IP network protocol. APPX Presentation Server requires TCP/IP to communicate with clients.

[Append to This Answer]
2004-Feb-19 4:25pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
APPX and ODBC information
Please refer to;

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=687

[Append to This Answer]
2004-Feb-19 4:26pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What kind of machines and network do I need for server and clients?
For the server, any machine capable of running APPX Presentation Server (appxd or WinAppxD/appdsvc) and APPX version 3.5 or later will work.

Please note that this excludes Novell Netware servers. If you wish to make data stored on a Novell Netware drive accessible to ODBC clients, you should install APPX/ODBC in the 'standalone' configuration, going against the mapped Netware drive, instead of using the client/ server configuration.

For the client, a machine running Windows 9x, NT or above is required. Windows 3.x is specifically not supported by APPX/ODBC.

Because file I/O will be taking place across the network, the faster your network is, the faster your client programs will be able to access APPX data. This might be the ideal time to think about justifying a 100mbit/sec "Fast Ethernet" upgrade.

[Append to This Answer]
2004-Feb-19 4:27pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Can I get a log of file activity using APPXIO?
Yes, set the environment variables

APPX_IO_LOG=filename
APPX_FMT_IO_LOG=1

The first will tell Appx to log all AppxIO actions to filename. The second will tell Appx to write the log in an easier to read format.

The log file will show all reads, readnexts, writes, deletes, and rewrites. Each entry will show a complete dump of the data being read, written, or deleted. For read operations, the log will show the key number and key value being retrieved.

You'll also see log entries for each process that runs so you can tell which process caused each I/O.

[Append to This Answer]
2004-Feb-25 10:18am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I verify all files in a database?
The "appxutil -v" command verifies one file at a time. To verify an entire database, you could individually enter the commands at the DOS command prompt, but it is more efficient to create a batch file which does it. Use your favorite text editor to create a text file (NOT a .doc file!) which looks like:

c: cd \APPX\DATA\DDD\AAA\DATA appxutil -v=CUST.dat appxutil -v=CUST2.dat appxutil -v=DEPT.dat ...(include a line for each data file)

It's necessary to add a line to the script for each data file. You may want to do a "dir > temp", then bring that up in an editor window, and cut and paste filenames into the verify script. Save this file as "verfyAAA.bat", in the directory containing appxutil. It is a good idea to create a batch file to verify each of your databases, in advance, so that when you want to verify all files in a database, you can just run the applicable script without having to spend time creating it. Analyzing data files with APPXUTIL Analyzing a data file will interactively provide more information about the file's internal structure. In general, this isn't important unless the file has failed verification.

[Append to This Answer]
2004-Feb-27 4:12pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I verify the file 'ORDER' in application 'AAA', database 'DDD'?
Obtain APPXUTIL.EXE from our FTP site, and put it in the same directory containing APPX.EXE

Open a DOS box on the NT or Windows 95 machine containing the data files. While it is possible to verify data files across the network, it is most time-efficient to run the verification on the actual machine (server) on which the data files are located.

"cd" to the directory containing the files - for example, if my APPX data files were stored in C:\APPX\DATA, and I wanted to verify the file named above, I would:

c: cd \APPX\DATA\DDD\AAA\Data Run "appxutil -v=filename.dat" - for example, for the scenario described in this section, type: appxutil -v=ORDER.dat

[Append to This Answer]
2004-Feb-27 4:14pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How can APPX data file indexes become corrupt?
The 'APPXIO' file system has proven itself to be very stable over the years. However, no database system is immune to the effects of system or application crashes, in which unpredictable things happen to database files. For example, APPX might be in the middle of adding a record, and has completed updating 2 of 3 keys, at the time of a crash. This leaves the index for that file in an inconsistent state. The data itself is correct and intact, but the key file must be rebuilt in order for the indexes to be correct. Typically, a system administrator is not going to know in detail what was happening on the system, when a power failure or equipment problem occurred, and will not know whether any APPX data files on the system became corrupted as a result. Verifying the data file would tell you whether or not it is necessary to run "Rebuild keys" for that file.
[Append to This Answer]
2004-Feb-27 4:15pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
When might I want to use APPXUTIL to check my file system?
If your file system (disk) fills up. Adding records to a file on a full disk is likely to corrupt the file.

After a system crash during which there were active users on a system. You should verify all files in the database before allowing users back into APPX. When certain records you "know" are in a data file, do not show up as expected on a report or input display, you might want to verify that file.

When a constrained child process fails to correctly retrieve data, you might want to verify the PCF of the child process.

For routine file maintenance. Once a month on your data files and on application design files that are being edited is recommended.

[Append to This Answer]
2004-Feb-27 4:16pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Where do I get APPXUTIL?
APPXUTIL.EXE is found in the .\Tools directory, underneath the appx.exe engine.
[Append to This Answer]
2004-Feb-27 4:17pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Why does a user of APPX for Windows need APPXUTIL?
Traditionally, APPX data file verification and analysis are done from the command line, using the normal 'appx' engine itself. Since APPX for Windows is a GUI program, and the data file verification and analysis functions are text-based utilities, it is necessary to have a separate, alternate copy of the 'appx' engine which runs in text rather than GUI mode, in order to use those functions. This alternate version of APPX is called APPXUTIL.EXE.

Starting with APPX 3.3 and above, the data file verification (-v) function can be invoked from the database management menu, so it is not necessary to use APPXUTIL.EXE to access that capability. However, APPXUTIL.EXE is still needed by users of APPX 3.3 and above, to perform one of the two steps required for cross-platform data file import/export, and for detailed data file/key integrity analysis.

[Append to This Answer]
2004-Feb-27 4:18pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is APPXUTIL?
APPXUTIL.EXE is used to invoke the command line functions of APPX, on a Windows PC. These functions include:

-v Data file/key integrity verification (to detect file corruption)

-an Data file/key integrity analysis (to analyze possible file corruption)

-e Second step of data file export (after Exporting from the menu)

-i First step of data file import (before Importing from the menu)

[Append to This Answer]
2004-Feb-27 4:20pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What does it mean to 'verify' a data file?
Verification checks to make sure there are no duplicate keys, that each key points to only one record, that all keys point to active (rather than deleted) records, and that all indexes for that file have the same number of keys.
[Append to This Answer]
2004-Feb-27 4:21pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I script imports for windows using APPXUTIL?
The following example will import (appxutil -i=) the design files for application TAP version 00 from portable ASCII format into the BRF format needed before you can actually import the files into APPX:

          cd c:\appx\data\00\TAP\Portdata
          FOR %%f IN (*.) DO c:\appx\tools\appxutil -i=%%f 

[Append to This Answer]
2004-Feb-27 4:22pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do you diagnose strange or generic errors (such as bus errors, seg faults, attempting to free freed memory errors, or "an internal error has been detected" errors)?
Run through the following checklist:

Delete all of your Applications' EMs.

Rerun your problem scenario to see if the problem still occurs.

Set environment variable APPX_TRAILER_COUNT=40, then re-run the condition that generates the error.

This catches most APPX "stepping on memory" errors, by generating an "mm free() - corrupted trailer" message earlier in your problem scenario. This can be set in the appx.env found in the data directory under the directory containing your APPX engine. (If you're running APPX/Server, any new APPX Application server session fired off from an APPX/Client after appx.env editing will have newly edited appx.env environment variables activated.)

  
Search for Design Discrepancies: From the Utilities menu;

Run: ‘Run Each of the Above’ from the ‘Orphan Detection’ process

Run: ‘Check for Duplicate ANO and EMs’ (‘Verify ANO’s and EM’s’).

"No Lines Were Output" means the Application passes this test. If any Applications don't pass, perform:

1. Run: Reset Process Date Add Fields.

   The name of an executable module is derived from the date that the PROCESS                                                                             
   record was added for that process.  If you happen to get two processes with 
   the same "date added", they'll have the same EM name and nasty things will 
   happen.  "Reset Process Date Add"  assigns a unique "date added" to every 
   process record.


2. Run: Reset DD for full process.

   This resets the Date Compiled fields for all data Field and Domain  
   definitions in an application to NULL and also resets the internal Appx Area 
   Number for each field to zero.
Resetting the compile date to null forces all fields and domains to recompile.
The Appx Area Number is how Appx locates data in memory. We have had bugs in the past that caused two or more fields to have the same area number meaning they shared the same memory space, which is a very bad thing. Setting the area number to zero for all fields forces appx to assign all new area numbers and thus fix the memory corruption problem.


3. Initialize the 4 compiled DD files (BITMAP, ELEMENT, FILE, INITIAL) and reprocess the Data Dictionary. These can be initialized in System Administration, Design File Management, File Selection (select these four files), then Initialize Files.

   It deletes and then re-creates the given files.  
   When the data dictionary compiler compiles a dictionary, it writes records 
   into those four files.  When the process compiler compiles a process, it 
   reads from those files, not the FIELD and RECORD file.  So, initializing 
   those files is basically the same thing as deleting your data dictionary and 
   typing it all back in again - you end up with an uncompiled dictionary.

4. Reprocess your Data Dictionary.

  
   Analyzes the source form of the data dictionary for errors and 
   inconsistencies and produces a more directly executable form (the compiled 
   form is stored in BITMAP, ELEMENT, FILE, and INITIAL).
5. Restructure your enduser data. (This should go quickly - only the /Struct file date/time stamps will need to be reset, to match the newly compiled DD.
   Restructure changes existing data records into a new form after you've 
   changed (and compiled) a data dictionary.


6. Delete all of your Applications' EMs again.

7. Then rerun the scenario that causes the problem.

  
If your problem scenario still fails, and you're running on a Windows platform, send us your appx.stk 'appx.stk' is a stack dump, telling us something of what goes on inside APPX when cassert error messages occur. You'll find it in the same directory that your 'appx' or 'appx.exe' engine is located. If it is overly large, you may want to delete or rename it, then run your problem scenario one more time to get a clean dump.

Send to techsupp:

     The appx.stk dump, 
     The version# of APPX under which you are running, 
     The release level of your Operating System, 
     A brief description of what the error looks like from the operator's
     perspective, and a brief description of the Application Design elementes 
     in which the error occurred. 


See also FAQ: (Xref) "mm free()-corrupted trailer"

[Append to This Answer]
2005-Oct-07 9:10am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I see the APPX Process Stack?
If you have TRAPed into the ILF debugger, you can see the process stack by invoking Direct Menu 1 (GO 1).
A typical Process Stack might look like:

ECR ENTRY (HISTORY) (COMMENTS) 0000200.001.0000000 Inp Option Intercept ------- ------------------------------------------------------------- | Stack Trace | | | | Lvl# Ap/Ver Proc Type Process Name Invoked As | | 1 CTS 00 INPUT ECR ENTRY (HISTORY) (COMMENTS) SUBPROCESS | | 2 CTS 00 INPUT ECR ENTRY (HISTORY) SUBPROCESS | | 3 CTS 00 INPUT ECR ENTRY DETACHED | | 4 CTS 00 MENU MAIN MENU DETACHED | | 5 0LA 00 JOB SELECT DATABASE SUBPROCESS | | 6 0AD 00 INPUT APPLICATION DESIGN DETACHED | | 7 0LA 00 MENU APPX MENU DETACHED | | | | | --------------------------------------------------------------------

The current process (being debugged thru the ILF editor) is at the top the stack (Level #1). The first process in the stack is at the bottom (APPX MENU).

Note that this stack also shows you the "Invocation Type", or scoping (Detached/Related/Subprocess).
See the APPX Designer Reference Manual chapter 1-5 on Interprocess Communications for further discussion of the scoping rules around for process invocations and field types.

You can only view the Process Stack when running 4)Run Test Database from with the Application Design editor, or when you have launched a Process from one of the Process editors using hidden Option 99. If you have no TRAP to get you into the ILF editor in your current process, don't despair! Press your interrupt key (generally Control-C), then ENTER. The ILF editor will stop at the next available ILF statement. From there, you can GO 1, to see your current Process Stack!

[Append to This Answer]
2004-Feb-27 4:26pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is the APPX Process Stack?
Running an APPX application consists of a series of processes calling each other. For example, the Main Menu might call a submenu, which might call a JOB process, which might call an INPUT, which might call a child INPUT process, etc.

The list of current processes that have called each other is called a "Process Stack". This is a particular 'drill down' within a Process Family, or Process Tree.

[Append to This Answer]
2004-Feb-27 4:27pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to define the keyboard layout, (appx –k)
Please refer to:

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=602

[Append to This Answer]
2004-Feb-27 4:28pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
New Item
[Append to This Answer]
2004-Feb-27 4:28pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
WinAppxD service is not running (Troubleshooting WinAppxD)
First, login as Administrator and check Event Viewer, to see if there are any errors regarding SRVANY.EXE startup. These could occur if the WinAppxD service registry entry points to the wrong pathname for the winappxd.exe executable. If you see errors, edit the appropriate registry key to fix the path name or command syntax. (See WinAppxD installation instructions for registry locations to check.)

If there are no SRVANY.EXE errors saying that the service failed to start, then WinAppxD started executing, but some type of error caused it to exit.

Instruct WinAppxD to create a log file by defining the following environment variables:

APPX_NET_LOG=c:\appxdlog.txt APPX_NET_LOG_MASK=0xFFFFFFFF
Set these using Control Panel, in the same global System area you set the other APPX variables.)

Reboot.

Wait a few minutes to make sure WinAppxD has had a chance to start.

Check the c:\appxdlog.txt file for error messages.

IF NO LOG FILE EXISTS, check to make sure that the logging variables APPX_NET_LOG and APPX_NET_LOG_MASK are still defined, and that they were defined in the global System environment area, not the user-specific area. (A common error.) If they appear to be defined correctly, then it is extremely likely that the environment variable "APPX_SERVER" is not set, because some versions of WinAppxD will exit silently, with no error indication, if APPX_SERVER is not set. Another possibility is that the Windows "winsock" library could not be correctly initialized, but this is unlikely if you have TCP/IP installed.

- Resolution: If you've tried the above and it still isn't working, call APPX Software Technical Support. "accept error - {n}" - This is a system error which should never occur. - Resolution: record what {n} is, and call APPX Software Technical Support for assistance.

[Append to This Answer]
2004-Mar-02 9:28am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Client login issues - Incorrect login (Troubleshooting WinAppxD)
If you are receiving the error "Incorrect login" when trying to login to APPX from a client PC, there are several common reasons for it. The best diagnostic information is available in server-side logs, not client-side, since generally these failures occur as a result of a Windows function call failing inside winappxd. Here's how to collect a server-side log to find out more about a WinAppxD error.

Procedure for current WinAppxD, through 3.2.x:

Set the following vaariables in the same place you set APPX_SERVER: APPX_NET_LOG=c:\appxserv.log APPX_NET_LOG_MASK=0xFFFFFFFF Reboot.

If you are attempting to login from the console of the APPX server, you must use a command prompt to reset APPX_NET_LOG then run "appx -c". It is necessary to do this, because if you don't reset APPX_NET_LOG, the (probably uninteresting) client log will overwrite the (probably very interesting) server-side log. Start up a DOS command shell, then type: set APPX_NET_LOG=c:\appxcli.log now cd to your directory containing appx.exe appx –c

Otherwise, if you are attempting to login from a different PC, you can either set APPX_NET_LOG and APPX_NET_LOG_MASK in your global System variables via Control Panel / System / User Environment (or for Win95, set them in AUTOEXEC.BAT) then reboot and run the APPX client, OR (probably quicker) do the following from a DOS command shell on the client:

set APPX_NET_LOG=c:\appxcli.log set APPX_NET_LOG_MASK=0xFFFFFFFF now cd to your directory containing appx.exe appx -c Now check the contents of c:\appxserv.log on the server. A ways down in the file, you should find a line that looks like:

     LogonUser() failed with 9999

In place of the 9999, you will see a number which is the reason Windows NT denied the login request. Common ones we've seen, and what to do to solve the problem they indicate, are:

1314. This indicates that the account used to run WinAppxD is missing one or more of the 4 user user rights it needs. See sections 1.6 and 1.7 (or the WinAppxD installation instructions) for details on setting these rights. Generally "Replace a process level token" or "Act as part of the operating system" is the right that is missing (others may be as well).

1326. This is Windows error "ERROR LOGON FAILURE" which might mean that the user ID is unknown to NT, or that the password specified during APPX client login is incorrect. However, it is MUCH more likely to mean that the account used to run WinAppxD does not have the 4 rights set, that it needs to have set (or that you set them on the PDC instead of the local server). See sections 1.6 and 1.7 (or the WinAppxD installation instructions) for details on setting these rights.

Generally "Log on as a service" is the right that is missing (others may be as well). You can verify it's not a user/password error by logging in to the user from the server's console. It MAY also mean that you have started WinAppxD from the Local SYSTEM account. Check your Services control panel applet entry for WinAppxD to make sure you have specified a user ID and password, rather than trying to run it under the SYTEM account. If your LogonUser(….) line in your NET LOG (see above instructions about how to create one) lists "NTAUTHORITY", this is almost certainly the problem, as that is the pseudo-domain membership of the Local SYSTEM account.

1385. The user you're trying to login with from the client, does not have the right to logon locally to the server machine. Set this right from User Manager on your APPX Server (make sure to choose the machine name rather than the domain name when you start User Manager). Rather than setting this for each user individually, you probably want to set it for "Domain Users" or "Everyone", or better, a group called something like "APPX Users" which contains only those users allowed to run APPX. See section 1.18 for more information.

If you have a different return code than the above, if you don't have a "LogonUser() failed" line in your log file at all, or if you have one of the codes above but the recommended solution is not working for you, please call APPX Software Technical Support.

When calling APPX Software Technical Support, there are several pieces of information you can have ready that are likely to speed up the problem-solving process for an "Incorrect login" error:

a. What the "LogonUser() failed" return code is. B. Whether you were trying to connect to the server from the server itself, or from a separate client PC. C. Whether "appx -c" logins from OTHER machines work. D. Whether the user you're trying to login with is in the Administrators group on the server. E. Whether "appx -c" logins using OTHER user ID's (Administrator and other non-privileged users) work. Once you have successfully connected to APPX with your clients, remember to remove the APPX_NET_LOG and APPX_NET_LOG_MASK variables from Control Panel / System / User Environment (or your AUTOEXEC.BAT for Win95 clients).

[Append to This Answer]
2004-Mar-02 9:33am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
HASP not seen by APPX (Troubleshooting WinAppxD)
If the APPX Registration screen shows your serial number as "00-…", then it is not seeing the HASP. As of APPX 3.3 and beyond, APPX should produce a CASSERT describing the problem. You may be able to figure out what to do to fix it, from the message. If not, call APPX Software Technical Support. This message will not necessarily appear if you are running the "appx -c" client, therefore we recommend that while troubleshooting HASP issues, you run APPX directly on the server.

If you are running a version prior to 3.3, you will need to collect a debug log on the server. You may also need to do this when running a later version, if APPX Software Technical Support requests it. Here's how to do it.

Set the following variables in the same place you set APPX_SERVER:

APPX_SS_LOG=c:\hasplog.txt APPX_SS_CODE=0xFFFFFFFF

Reboot again, then run APPX directly on the server once more. You will probably be presented with the Registration screen and some sort of license error again. Exit APPX. Now go look at c:\hasplog.txt. If the problem and its resolution are not obvious, call APPX Software Technical Support for assistance. We will need to see (email is best) or hear (over the phone) the contents of the debug log. Remember to remove the APPX_SS_LOG and APX_SS_CODE variables once the HASP is successfully recognized!

[Append to This Answer]
2004-Mar-02 9:34am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Winprint won't print to my printer (Troubleshooting WinAppxD)
Using Control Panel / System / User Environment, set a global system environment variable WINPRINT_DEBUG on the machine running WinAppxD to the name of a file in a directory which is writable by everyone. Reboot the machine.

Try to print again. Then, look in the log file to see what it says. There might be an obvious failure, like it truncated your printer name (if it was a really long printer name), or it substituted an underscore for a space, or some such. If the failure is not obvious, contact APPX Software Technical Support. We will probably want to see (via email) or hear (over the phone) the contents of the log file.

Remember to remove the WINPRINT_DEBUG variable once you have solved the printing error.

[Append to This Answer]
2004-Mar-02 9:35am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Winprint won't print to printers that are not defined on my NT server (Troubleshooting WinAppxD)
As of version 3.5 and earlier, APPX can only print to printers which the server knows about, because the printing task occurs on the server. This means that if a user wants their report to come out on their local printer, there are two options that we currently know of:

A. Define the printer on the server, and map it to that user's printer. This is the preferred method, in terms of being easy for the user. However, it may be difficult or impossible for a particular site to keep these definitions up to date.

B. Have the user email (using OPT-7) the report to themselves, and print it from email. See section 4.1 for how to do this. The caveat here is that if it's a big report, it's going to take up lots of space on your mail server.

We understand that many sites consider this an inconvenience and expect to implement client-side printing in a future release, to more easily allow this to be done.

[Append to This Answer]
2004-Mar-02 9:37am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Getting an APPX Stack Trace / Disabling Dr. Watson (Troubleshooting WinAppxD)
If APPX is ending with an error, then it is helpful to the APPX Tech Support staff if you can collect an APPX Stack Trace and email it to us along with the rest of the information we request.

You don't have to do anything to APPX itself to cause it to create the "appx.stk" text file containing the stack trace. However, you do have to disable Dr. Watson. If you do not disable Dr. Watson, then an APPX error will invoke Dr. Watson rather than the APPX Stack Trace recorder.

To disable Dr. Watson, go into your NT system32 directory, and look for the file named drwtsn32.exe, and rename that file to drwtsn32.disabled. You might have to reboot after doing this, in order to get APPX to generate the stack trace. After you've gotten the stack trace info, you might want to rename drwtsn32.disabled back to drwtsn32.exe so that your next non-APPX error will be handled by it.

[Append to This Answer]
2004-Mar-02 9:38am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
File analysis and recovery.
Please refer to;

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=624

[Append to This Answer]
2004-Mar-02 9:40am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to move Appx files between platforms.
Please refer to;

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=627

[Append to This Answer]
2004-Mar-02 9:40am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How Appx spawns background tasks.
Please refer to;

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=657

[Append to This Answer]
2004-Mar-02 9:41am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How does executable module (EM) caching work?
Please refer to;

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=653

[Append to This Answer]
2004-Mar-02 9:42am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
With APPX ODBC, files stored on the RS/6000 in APPXIO format, accessing the files from a PC using ODBC on the PC with a client like Access, what security is available? Can I use APPX internal security to control what databases/files/records/fields can be "seen" by the ODBC client?
Yes. When AppxODBC logs into your RS/6000, it provides a user name and password to AIX. We use that user name to control security within appx.
[Append to This Answer]
2004-Mar-19 4:37pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Where can I find the BugTracker system?
Go to http://bugtracker.appx.com:81/
[Append to This Answer]
2004-Mar-19 4:39pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do you turn on/off AppxDSvc logging?
You can adjust the logging parameters by setting three registry values:

LogServiceDir - set to the name of a directory and AppxDSvc will write the log there (in a file named $(LogServiceDir)\serviceName.log

LogAllEvents - set to 'Y' to get a complete log or any other value to disable most log messages. The default is 'N' so Jean should be seeing very few message written to the log

LogCreate - set to 'Y' to create a log file or any other value to disable logging. The default is 'N' (starting with 4.2.3 - it defaulted to 'Y' before release 4.2.3)

[Append to This Answer]
2004-Mar-19 4:40pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What's the address of the site where we can download the email support archive?
Go to http://mail.appx.com/mailman/listinfo/support
[Append to This Answer]
2004-Mar-19 4:42pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Are there any issues with HPUX 11.11 that we need to be concerned about?
Our supported HPUX release is 11. We are not aware of any issues with 11.11.
[Append to This Answer]
2004-Mar-19 4:43pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Excessive CPU utilization when client reboot’s PC.
We see when users reboot their PCs without properly exiting the application, the APPX process on the server side still continues its attempt to communicate via TCP with its non-existent client process. This communication effort seems to result in excessive CPU utilization.
Client’s need to be encouraged to exit all applications before rebooting or shutting down their PC. Short of user support, you’ll have to locate and kill hung session(s) periodically. See ‘APPX session is hung’ FAQ for further instructions on killing hung sessions.
[Append to This Answer]
2004-Mar-19 4:44pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is there a PDF for the record number in a consecutive file?
No, not at this time. (release 4.2.3)
[Append to This Answer]
2004-Mar-19 4:45pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
"Recover"ing data into a consecutive file.
`
The 'recover' utility has an option for directing its output to a consecutive file, rather than an AppxIO indexed-format .dat file. Example:
 /usr/local/appx/appx -recover -c INDEXED.dat CONSEC.dat INDEXED.deleted

The "-c" argument takes data records found in the INDEXED.dat indexed file and writes them as consecutive records in CONSEC.dat. Any deleted records are placed into INDEXED.deleted as usual, and any invalid records are streamed to standard out as usual (from which they can be redirected into a file).

This can be handy for recovering data records you can't get via a keypath. It's also be useful if you have records in your INDEXED.dat with duplicate primary key values, on which you'd be unable to rebuild a .key because the key rebuild logic in "Create" stops on duplicate unique primary index values.

See also: http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=624
and (Xref) How to use recover.exe!
`

[Append to This Answer]
2004-Apr-01 4:07pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
I can't connect to a second instance of the database (Sybase, Oracle, etc.)
A single APPX session cannot connect to two instances of a database within the same APPX session. In other words, if an APPX session connects to one Oracle or Sybase database to access one or more tables, that same session will not be able to connect to a second Oracle database to access one or more additional tables. This is true for all supported databases.

See also (Xref) Connect to 2 Oracle instances simultaneously?

[Append to This Answer]
2004-Apr-06 4:01pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is it possible to create Indexes in the Dharma tables to improve speed? If yes then how?
Only indirectly - if you need more indexes in the SQL tables, add key definitions to your Appx data dictionary and re-import the schema (using ASQL).
[Append to This Answer]
2004-Apr-06 8:40am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is it possible to use specific names for the FIELDS in the Dharma Tables?
When we import tables into Dharma using ASQL we do not get the choice for naming of the tables. Even using ASQL_EXPERT_MODE=1 we don’t have the choice…How can we do this?
The easiest way to rename fields is to create a view in SQL server that maps to the underlying table that you want to use. I don't think that there's a way to do rename fields during the initial schema import.
[Append to This Answer]
2004-Apr-06 8:42am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Are there any tweaks to improve performance when retrieving data using the Dharma ODBC link?
Queries are extremely slow even if the fields are KEYS in the APPXIO files.
Make sure you turn off AppxODBC logging before you do any timing tests. If possible, keep the AppxIO data files on the same machine where the AppxODBC data source lives - otherwise, performance will suffer.
[Append to This Answer]
2004-Apr-06 8:43am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is there a way to synchronize databases in APPXIO with databases kept in SQL Server?
We would like to have a Replica of our APPX files in SQL Server tables and being updated every hour or more frequently if possible.
If SQL Server supports replication, you should be able to push data from SQL Server into the AppxODBC data source.
[Append to This Answer]
2004-Apr-06 8:53am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Can we update records in APPXIO files using SQL Statements from SQL Server?
We've never tried use an AppxODBC stream as a linked server in SQL Server, but can't think of any reason you should have problems.
[Append to This Answer]
2004-Apr-06 8:47am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is it possible to change the field names that are used by APPX/ODBC?
First, before you run asql.exe, set the expert mode environment variable as follows:
 
ASQL_EXPERT_MODE=1
 
1) Run asql and select the file that you wish to import the schema for.
2) Click on the "Show Script" button. The "create table" script should be displayed in the lower window.
3) Remove all of the comment lines from the script
4) Change field names to suit your purposes
5) Remove the last ";" from the very end of the script
6) Click on the "Try Again" button.
7) If "OK" is displayed, then everything probably worked as expected.
8) If there is an error, drop the table and try again.
9) WinSQL can be used to verify that the table, field names, and indexes were created as expected.
 
[Append to This Answer]
2007-May-16 11:59am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
French Characters in Oracle
When i put French charaters in to the Oracle table that is connected to APPX, i get question marks in return.

Accented characters require 8 bits. Setting the following environment variable will correct the problem:
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
This environment variable can be set in the "appx.env" file or it can be set outside of APPX if desired. But, it must be set for an APPX session to properly store and retrieve 8-bit characters in Oracle.
If the environment variable is not set for APPX sessions that are initiated by the appxd connection manager, you will need to set it in the start-appxd.sh script or in the "appx.env" file so that all APPX sessions will run with the environment variable set.

[Append to This Answer]
2004-Apr-12 3:11pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
"mm free()-corrupted trailer"

If environment variable APPX_TRAILER_COUNT has been set, you can get the message mm.c.876 - "mm free()-corrupted trailer". This message indicates that some unexpected condition is causing memory to be overwritten.

(Without APPX_TRAILER_COUNT, real data or executable code would have gotten overwritten, with an unpredictable results, probably a cassert message, that is otherwise unexplainable.)

As of 4.1.4 and later, also set the environment variable:

            APPX_LABEL_MEMORY=1
This tells APPX to attach a label to each chunk of allocated memory. This label will be included in the "corrupted trailer" message and should give us a clue as to what is being corrupted.

If this error occurs, the user should immediately write down the last few things he/she did, prior to the error occurring. User should then exit APPX.

If APPX_SCRIPT_OUT tracking is enabled, the script-log should be preserved, for analysis. APPX can then safely be reentered.


To diagnose, run:

   Application Design > Utilities > Toolbox > Conversion 
   Utilities > Check for Duplicate ANO and EMs.

If any Applications don't pass ("No Lines Were Output" means they pass), perform the following procedure:

 1) Run:  
      Conversion Utilities > Reset Process Date Add Fields
      Conversion Utilities > Reset DD for full process
3) Go into System Admin > Source File Management for your application, initialize the 4 DD object files (BITMAP, ELEMENT, FILE, INITIAL), and recompile the Data Dictionary.
4) Restructure your enduser datafiles. (This shouldn't take long.)
5) Delete your Application's EMs
If this doesn't help, go into a more manual debugging mode. You'll need to be able to make this condition occur, upon demand. Make a copy of the process family involved, make sure the error still exhibits itself, then start stripping design elements out of it, until you zero in on the design element that is causing the error. You may want to call Appx Support to get guidance on this.


APPX_TRAILER_COUNT tells APPX to append additional "trailer" bytes to every memory allocation. Example:
          export APPX_TRAILER_COUNT=40
These bytes are filled with known values and checked for corruption when the memory is given back to the system. This can find if APPX is writing beyond the end of an allocated chunk of memory or if, for some other reason, the memory is getting stepped on.

APPX presents a "mm.c.876: mm free()-corrupted" cassert immediately upon detecting memory corruption that steps on this trailer. The message comes at the end of the job, when Appx is cleaning up (returning to the OS) memory that it allocated and wrote to earlier in the job.)

It may be prudent to keep the APPX_TRAILER_COUNT environment variable permanently on, in order to avoid unexpected and harder to detect memory corruption. APPX_TRAILER_COUNT has very low overhead.


As an example, an error message of: "mm free() - corrupted trailer (AREA: 0LA:7.2)" indicates that there has been memory overwritten associated with the writing of ERROR statement error log. In this case, an ERROR statement may be trying to write more than 250 bytes to the Appx error log when an UPDATE has just run.

(This might happen by the execution of an ERROR --- TEMP 2K statement, where TEMP 2K was populated with more than 250 bytes of data. This can be diagnosed by looking at the ERROR log produced by the update. At least one line should be filled with 250 bytes of Error text, and probably truncated.)


See also FAQ: (Xref) How do you diagnose strange or generic errors (such as bus errors, seg faults, attempting to free freed memory errors, or "an internal error has been detected" errors)?
(from ecr #3353)

[Append to This Answer]
2004-May-07 3:02pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is it safe to remove USAGE.dat and USAGE.key files?
You can safely remove the USAGE.dat and USAGE.key file as long as you don't have anyone running Appx at the time.
[Append to This Answer]
2004-May-20 10:11am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
When do entries in USAGE.dat file gets removed?
By default, the license server removes phantom entries every two minutes. you can change the interval by setting APPX_LS_INTERVAL=<some_number_of_seconds> (where <some_number_of_seconds> is less than 600). The default is 120 (two minutes). Note that Appx won't let you go more than 10 minutes (600 seconds) between refreshes.
If you have an env. variable named APPX_LS_NO_GHOSTS, the license server won't remove phantom entries from the USAGE file.
Phantom entries are always ignored when Appx counts user rights, so, even if you have some phantom entries, they won't cause you any problems. Of course, if your USAGE file grows to some huge size, Appx will take longer to start and end, but you'd have to have a *really* big USAGE file before you noticed a problem.
The entries will not be removed from the USAGE file if you are running a single or promo license.
[Append to This Answer]
2005-Mar-22 11:16am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Can I export a registration key?
There is no utility to export a registration.

If you are performing a new installation, you can copy the files where the registration is stored:

$APPXPATH/0SA/Data/REGISTER.dat
$APPXPATH/0SA/Data/LOCK.dat
$APPXPATH/0SA/Data/LOCK.key

[Append to This Answer]
2004-Jul-09 4:46pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
In NT 4.0 I have a user named joe@my-company and when I upgrade the os to Win 2K Joe can’t logon. Why?
Logging in with the @ sign is still perfectly valid in windows 2003 server. The at sign when used in the login field is for identification of where the user account exists. Active Directory Domain Controllers do not have local accounts. Member servers can have local accounts. So it is important to know the role of the server that you are installing APPX on.

If joe@my-company doesn't login (producing "invalid login", then it is telling you that my-company does not have an account there.

[Append to This Answer]
2004-Jul-09 5:38pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
I want to use Appx with SQL Server. Are there any known issues/performance issues?
1) SQLServer 2000 (and newer) uses row-level locking. This is good. This means that only the row that is being updated is locked. You may recall that earlier versions locked the entire block that a record was stored in thereby increasing the likelyhood of locked record conflicts between users.

2) As you know, the default behavior of an APPX application using a RDBMS is to use a commit mode of "Compatible". The intent of this mode is to allow an application that was designed to use APPXIO to be run with a database without requiring any changes to the application. Basically, if your application writes, rewrites, or deletes a record, APPX will immediately issue a commit to the database unless there is another record in another file that has also been read with hold but that has not yet been updated. If another record is held, APPX will wait until that record is updated before issuing a commit to the database. APPX must wait because a commit after updating the first record would cause the lock on the second record to be lost. As you know, updates to a database are not "permanent" until the commit occurs. The default behavior of SQLServer is to block any attempt to read a record that has been updated but not yet committed. This behavior increases the likelyhood that users will be blocked when they try to read a record (even if they are reading without a hold) that has been updated but not yet committed. In other words, users running an APPX application that uses SQLServer are more likely to see the dreaded "Waiting for locked record" message. It is hard to predict the impact of this issue. It really depends on the design of the application and the number of users who are running the system. But, I would assume that it will be more of an issue than it is with APPXIO. APPX processes that encounter/cause this issue can be re-engineered to avoid this problem. However, you probably won't be able to identify them all in advance.

It is possible to change the default behavior of SQLServer to allow "changed but uncommited records" to be read. This may be the best solution. But, if an APPX session crashes with uncommitted changes, then the uncommitted changes will be rolled back. This is OK but there is slight risk that uncommitted data might be read by another APPX session and then get rolled back if the session that updated the data crashes without ever executing a commit.

3) There is the potential for date mapping issues. SQL Server supports two date types: CC-th and CC-mm (that's CC-minutes). The smalldatetime type can only handle dates between 1900 and 2079.

4) VARCHAR (and CHAR) fields have a maximum length of 8000 characters, TEXT fields are essentially BLOB's (and are not indexable).

5) The maximum index size is 900 bytes. This should not be a problem since the maximum length of an APPX index is 256.

6) The maximum row size is 8060 bytes. This might be a problem since APPX allows a maximum record size of 32K.

7) Maximum column count (per-table) is 1024. This might be a problem if you have more than 1024 fields in an APPX file. Remember that each occurrance of an APPX field counts as a column in a table. So, if you have an APPX field with 30 occurrances, that will result in 30 columns in the database table.

8) Here's the important limitations:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/architec/8_ar_ts_8dbn.asp 

[Append to This Answer]
2004-Jul-29 4:23pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How do I print a query log?
Set the environment variable APPX_QUERY_LOG to a valid path on your computer, i.e. c:/appx/query.log. After running a query, you can examine the log file for diagnostic information with a text editor.
[Append to This Answer]
2004-Oct-05 4:15pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How can I move APPX data stored in an FMS group to SQLServer?
My Appx data is stored in a different directory path than my Appx engine using an FMS group. I want to move the data to SQLServer. I exported the Appx data, added an FMS group call SLQServer with a type 6, and assigned the FMS group to the files I wanted to move. When I selected Import on the files Appx could not find the files. What can I do?
When an Appx file using an FMS group with a type of 1 is exported the Portdata file is created in the same location as the Data and Struct files, in the path of the FMS group.
When the FMS group is changed for the SQLServer path Appx no longer recognizes that the file was stored in a different path. The import process will look for the Portdata file in databas under $APPXPATH. There are two options to overcome this problem.
First, you could simply move the Portdata file from the location it was created in to $APPXPATH under the database and application id for your data. Of course, if disk space is tight this may not work.
The second option is to add another tyep 1 FMS group with the same name as the type 6 FMS set up for SQLServer, but with the path defined the same as the original type 1 FMS group. When Appx executes the import utility it will see the type 1 group with the same name and follow that path to find the Portdata directory.
This procedure applied to all FMS types and databases.
[Append to This Answer]
2004-Oct-12 9:48am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is the proxy database id "LOK:" still required when using SQLServer?
The answer depends on the version of Appx and the version of SQL Server you are using. Releases of SQL Server prior to SWL Server 2000 did not support record locking, therefore Appx used the proxy_db setting of LOK: to duplicate the record locking in Appx in SQL Server.
In Appx release 4.1 the use of proxy_db became optional if you were also using SQL Server 2000 or above. Appx still supports the use of LOK:, but it is not required.
[Append to This Answer]
2004-Oct-12 12:11pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How can i build up the FMS path for APPXIO data files?
There is a feature in release 4.0 which may help you do this... for AppxIO data files, you can build up the FMS path using the following macros:
  $(host)         -  host name
  $(engine)       -  Appx engine version
  $(endian)       -  'intel' or 'risc'
  $(root)         -  $APPXPATH
  $(uid)          -  3-character Appx User ID
  $(user)         -  OS User ID
  $(pid)          -  OS Process ID
  $(ap)           -  File's application ID
  $(ver)          -  File's application Version
  $(db)           -  File's Database ID
  $(scope)        -  Process nesting level
  $(file)         -  8-character file name
  $(type)         -  "Data", "Struct", "Portdata", etc.
  $(anything-else)-  An environment variable
As an example, the normal location for an Appx data file would be:
        $(root)/$(db)/$(ap)/$(type)/$(file)
If you wanted to invert the database/application hierarchy:
        $(root)/$(ap)/$(db)/$(type)/$(file)
And, of course, you can do other fancy things:
        /tmp/$(user)/$(type)/$(file)
The one thing which is missing is that you don't have a way to set an environment variable from within ILF code. If you could do that, you could programmatically control the entire pathname.
[Append to This Answer]
2004-Dec-29 10:30am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
List of Environmental Variables
http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=601



[Append to This Answer]
2005-Apr-15 9:03am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Our developers wants to know if Appx has Dharma JDBC Driver?
Appx doesn't have Dharma JDBC driver, but does have Dharma ODBC driver. Depends on what users are trying to do/access. The AppxODBC driver (Dharma ODBC) lets you read/write Appx-hosted data (that is, data stored in an AppxIO file) from some other application, i.e. Access, SQL, Postress or Oracle.
You can certainly use the AppxODBC driver with a Java program. AppxODBC will function as a type 1 JDBC driver. A type 1 driver uses the JDBC/ODBC bridge to connect a Java application to an ODBC data source (a very common practice). Type 1 drivers don't perform as well as a type 4 driver, but that may not be a problem (in fact, given the performance of a typical Java application, the difference between a type 1 driver and a type 4 driver may be undetectable).
When you use the JDBC/ODBC bridge, the JDBC URL is structured like this:
 jdbc:odbc:appxodbc
If you want to include the username and password in the URL:
 jdbc:odbc:appxodbc;UID=appx;PWD=password

[Append to This Answer]
2005-Feb-08 9:11am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is there an environment variable that records a log of the user interface?
Yes, there is. The variable is APPX_UI_LOG APPX_UI_LOG.
It records a log of the user interface - the log contains a mix of screenshots and the keys that you typed in order to produce those screenshots. It also contains a prefix that describes how to use the log. Here's a sample (screenshot is stripped out):

--------------------------------------------------------------------------------
!This is a log of all of the keystrokes and screenshots
!processed by Appx - process id = 5423
! current time = Wed Mar 30 10:07:08 2005
! user = korry
!
!This log was produced because you have the APPX_UI_LOG environment variable defined
!
!This log can be played-back by setting APPX_SCRIPT_IN=<this filename>
!
!Prior to playback, you can also set APPX_SCRIPT_STEP to enable script debugging
!
!During script debugging, the bottom line of the screen
!will display the next option to be fed from the script
!
!You can use the following keys to control the script during debugging
! E - Exit the script, use the keyboard as normal to control Appx
! C - Complete the script (stop stepping)
! P - Pause the script, use the keyboard as normal, Ctrl-R will resume script
!
!<log begins>

... screen shot goes here ...
#USER 3
!################################################################################
!Currently executing: 0LA (MENU ) - APPX MENU
!Keystroke: USER 3
!Cursor is at row 36, column 00
!################################################################################

[Append to This Answer]
2005-Apr-15 9:02am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is APPX_OLD_MODES variable for?
APPX_OLD_MODES
If APPX_OLD_MODES is defined, the input process interpreter uses the old set of rules when switching modes in a non-scrolling input process (the old rules say that, when you switch modes, you should move into Key Entry and lose the previous key value).
[Append to This Answer]
2005-Apr-15 9:05am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Do record locks display when files are in RDBMS?
Appx can't display lock information when it encounters a record lock in a file stored in an RDBMS. If you're using MS SQL Server, you can use the Enterprise Manager to view record locks.
[Append to This Answer]
2005-Jul-22 3:30pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Oracle 9i Performance issues
Oracle 9i, specifically release 9.2.04 has problems determining which index to use when executing certain queries. In other words, Oracle sometimes uses the wrong index or sometimes uses no index resulting in potentially severe performance problems for some APPX processes. The good news is that this problem is supposedly fixed in release 9.2.06.
[Append to This Answer]
2005-Jul-26 9:04am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
I have an existent RDBMS table and i want to use Field Override feature in the FMS group settings, can i do that?
No, you can not. Field override fature doesn't apply to an existent table. This feature can be used when you "Create" File or "Restructure" File only.
[Append to This Answer]
2005-Sep-08 2:13pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Accessing 2 different schema's defined for 1 instance of Oracle
I have 2 database IDS: XXX and YYY and I have 2 different schemas defined in Oracle called SCHEMA1 and SCHEMA2. I want XXX to access SCHEMA1 and YYY to access SCHEMA2. It is necessary for me to have 2 different schemas because we use triggers extensively and they all reference tables that begin with XXX. Therefore, I need to have the exact same names for the tables under both database IDs.
I have 2 FMS groups defined: oracle1 and oracle2. The server name is oracle for both. The table naming scheme for oracle1 is $db_$appl_$file. For oracle2 it's XXX_$appl_$file (which would make the table names identical for the 2 different schemas).
From Appx's main menu, i choose "Run Application" and put XXX for my database name. Everything runs jsut fine.
Then I back up to the Appx main menu and choose Run An Application again. This time I use YYY for the database ID. But when I go into different applications, I actually see the records from XXX.
 
I'm only running 1 instance of Oracle but each database ID should be accessing different schemas. It looks like once you access a particular schema, it stays within that schema rather than changing whenever you enter a new database ID.
_____________________________________________________________________________
The solution to the problem would be is to add schema name to the each of the FMS groups that you have defined (i.e. schema1.$db_$appl_$file for one and schema2.XXX_$appl_file for the other). By doing so, you will be telling the system which schema name to use when you switch between the databases.



[Append to This Answer]
2005-Sep-20 2:12pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
What is the default field mapping for RDBMS?
For Oracle the mapping is hard-coded. For ODBC (and DB2), the mapping depends on what the engine finds at run time. Appx asks the backend database for a list of data types and then tries to find the closest match for each field.

For Oracle (with Appx 4.2.8):

Appx field type = Alpha or Logic

        if the field is a key segment , Appx builds a CHAR(n) column

        if the field is less than 6 character long, Appx builds a CHAR(n) 
column,

        otherwise, Appx builds a VARCHAR(n) column

Appx field type = Date

        for CCYYMMDDhhmmss key segments, Appx builds a VARCHAR(14) column

        for CCYYMMDDhhmmss non-key fields, Appx builds a DATE column

        for all other date components,  Appx builds a VARCHAR(n) column

Appx field type = Numeric (binary)

        if field length = 1, Appx builds a NUMBER( 3, 0 ) column

        if field length = 2, Appx builds a NUMBER( 5, 0 ) column

        if field length = 4, Appx builds a NUMBER( 10, 0 ) column


Appx field type = Numeric (packed)

        Appx builds a NUMERIC( x, y ) column 

[Append to This Answer]
2005-Oct-05 8:49am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Known issue with SQL Server SP4
Here's an article that discusses the problem (locking pages instead of row):
        http://support.microsoft.com/?kbid=899976
The root of the problem is that MS changed some of the optimizer rules in SP4 so SQL Server is choosing an index scan over an index seek and locking way too many records as a result. In particular, since Appx creates parameterized queries, the SQL Server optimizer can't know (at the time that it plans the query) that the data type of a parameter matches the data type of the corresponding column. For example, Appx may generate a query like:
SELECT * FROM appx_dmo_prospect WHERE prospect_no = ?
Where the '?' is a parameter marker. SQL Server plans the query based on that text - it doesn't know the value of the parameter at planning time. Instead, each time we execute that plan, we provide a different value for the parameter. In SP4, SQL Server is taking a cautious approach and assuming that the data type of the parameter may not match the data type of the column and therefore, it scans (and locks) the whole index instead of seeking directly to the desired row (and locking only that row).
You can get around this problem (without rolling back to SP3) by following "Method 2" in the article above (don't forget to stop and re-start the server after adding the startup parameter).
[Append to This Answer]
2005-Oct-05 8:53am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Storing NULL/blank values in SQL files
We encountered an issue when using APPX SQL files, moving from version 4.0.9 to 4.2.6 of APPX. In 4.0.9, empty fields without data were blank. In 4.2.6, these fields are NULL. This is causing problems with other applications that access the shared SQL tables, whose logic is checking for IS NULL. Is there a way to have blank fields retain a value of blank, rather than be NULL in SQL Files?

No, currently there is no way to control that behavior.

[Append to This Answer]
2005-Oct-12 9:29am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
A Handy list of RDBMS commands for various RDBMS's
We often get support requests that require interacting with an RDBMS. Need to ANALYZE STATISTICS? View a table definition? Analyze a query? In Oracle? DB2? SQL Server?
Here's a handy list of RDBMS commands for various RDBMS's.
        http://troels.arvin.dk/db/rdbms
In particular, you'll probably find this section very useful:
        http://troels.arvin.dk/db/rdbms/#cli

[Append to This Answer]
2005-Oct-17 9:05am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to get a list of the files in which your Appx session holds record locks?
The .FM_GET_LOCKS engine function will populate a memory file with a list of file names - each name corresponds to a file that your session holds a lock in. You may hold more than one lock in any given file (the record count and primary keys are *not* stored in the memory file).

To obtain the list:

PASS 0DB PATH FILE SHARE? Y
CALL .FM_GET_LOCKS RESIDENT? N END? N FAIL 0

Here's the layout of the 0DB PATH memory file:

Dsp -Options--
Seq No Field Name Field Type Seq Format T DL AA KC
100 PATH REC GROUP HEADER 5 T
200 PATH SCOPE DOMAIN 9(7)
300 PATH FI AP DOMAIN &&&
400 PATH FI VER DOMAIN &&
500 PATH FI NAM DOMAIN &&&&&&&& P
600 PATH DB DOMAIN X(3)
700 PATH SRC AP DOMAIN &&&
800 PATH SRC VER DOMAIN &&
900 PATH FI TYPE DOMAIN 9(1) AA
1000 PATH REC TRAIL GROUP TRAILER 5 T

Since you're using this function as a diagnostic tool, you're mostly interested in the PATH FI NAM.

You might want to add this function to your DIRECT PROCESS 1 process so you can view a list of locks from anywhere within your application. You may also want to add a
COMMIT option to your DIRECT PROCESS 1 process so that you can clear all locks held by your process.

[Append to This Answer]
2005-Oct-19 10:52am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How can I produce an Appx Event Log?
You can set environment variable APPX_USAGE_LOG to a file name.
for more information please take a look at:
http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=819
[Append to This Answer]
2005-Oct-19 3:20pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
TCP Keep-alive registry entries
These should appear in 


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<service name>\Config


TCPEnableKeepAlive Y

TCPKeepIdle 300

TCPKeepInterval 60

TCPKeepCount 8


Tthe values shown are the default values, those values are installed when you create a new service 
and they are also the values that we use if the entries are missing from the registry.
The AppxDSvc installer only writes a Config entry if it differs from the default value.  
That means that the installer won't write out entries for the TCPKeepXXX values, 
but AppxDSvc will pretend like those values are present (and set to their default values).

You can add the entries manually if, for some reason, you want to change the defaults.
Setting                 Argument        Default What it does
----------------------- --------------- ------- -----------------------------------------------
TCPEnableKeepAlive      true or false   true    Enable dead connection detection
TCPKeepIdle             (seconds)       300     Idle time before starting to send pings
TCPKeepInterval         (seconds)       60      Interval between keepalive pings
TCPKeepCount            (count)         8       Count of keepalive ping attempts before closing


The time before a server session closes would be the combination of all of these.  
Here is what happens.

After 300 seconds of idle time the server TCP stack will start trying to ping the client TCP stack.  
The server will make 8 attempts to ping the client and get a response before giving up and closing.  
It will wait for 60 seconds after each ping attempt for a reply before sending the next ping.

So in this case it will be 300 seconds + ( 8 * 60 seconds ) = 780 seconds = 13 minutes 
before the server session goes away.
appxd has environment variables for these settings as follows:

APPXD_DISABLE_KEEPALIVE set to anything will turn off the keepalive code.

APPXD_KEEPIDLE     = TCPKeepIdle
APPXD_KEEPINTERVAL = TCPKeepInterval
APPXD_KEEPCOUNT    = TCPKeepCount
[Append to This Answer]
2007-Aug-07 4:29pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Why is my sqlcmd log is truncated? In prior versions, I've seen logs with create table lines in excess of 3000 char?
In 4.2.something-recent, APPX changed the logging package used by the APPX_SQL_CMD log. In older releases, Appx just used a straight fprintf() to write all log information to a flat ascii file. IN 4.2.something-recent, APPX switched the APPX_SQL_CMD log over to the new logging package that most of the engine uses.
The new logging package lets you send a log to:
        1) the windows event log
        2) a pipe
        3) a gzipped flat ascii file
        4) an AppxIO data file
        5) stdout
        6) a flat ascii file
The logging mechanism is determined by the name of the log file.
1) If the log file name ($APPX_SQL_CMD) is EVENT or EVENTLOG, we write it to the windows event log.
2) If the log file name begins with a '|', we consider it a pipe.
3) If the log file name ends with .z, .gz, or .zip, we consider it a gzipped file
4) If the log file name ends with .dat, we consider it an AppxIO data file
5) If the log file name is '-', we write the log to stdout
6) Otherwise, the file is a flat ascii file (if the log file name ends with '+', it's a flat ascii file, but we append to the end of the file instead of creating a new one)
We trim each line to 1024 characters for gzipped files, the windows event log, and AppxIO data files. We don't trim flat ascii files or pipes so you should get long lines unless your log file name matches one of the other categories.
If Appx is really trimming flat ascii logs (or pipes), that's a bug and I'll track it down.
The customer can also see the commands generated by Appx by looking in the Oracle client/server log (maybe even in the Oracle error log if he just wants to see the errors) or the Oracle Alert Log.
[Append to This Answer]
2005-Dec-06 10:04am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Oracle Instant Client and Appx
Try and start appx in character mode. Run the character mode client because the error will not be displayed if you are running the Appx Desktop Client (java client).
The appx.oracle engine might give you an error such as:
====================================
# /vg01/appx.426/appx.oracle
/usr/lib/dld.sl: Can't open shared library:
/vg01/oracle/oracle-9/OraHome1/lib32/libclntsh.sl.9.0
/usr/lib/dld.sl: No such file or directory Abort #
====================================

You could also run the command (if you have it on the system of course) ldd:

====================================
# ldd /vg01/appx.426/appx.oracle

         =>
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libnss_dns.1 => /usr/lib/libnss_dns.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libpthread.1 => /usr/lib/libpthread.1
/usr/lib/librt.2 => /usr/lib/librt.2
/usr/lib/libcl.2 => /usr/lib/libcl.2
/usr/lib/libisamstub.1 => /usr/lib/libisamstub.1
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/dld.sl: Can't open shared library:
/vg01/oracle/oracle-9/OraHome1/lib32/libclntsh.sl.9.0
/usr/lib/dld.sl: No such file or directory


====================================

An alternative to ldd is strace and truss, here is the syntax I've used. However, none of these tools (ldd, strace, truss) should be needed, just attempting to start APPX in character mode should expose the missing oracle library and library path.

====================================
# strace -o/tmp/appx.oracle.out /usr/local/appx.oracle


or


# truss -o/tmp/appx.oracle.out /usr/local/appx.oracle


Grepping that file might give you something like:

# grep libclntsh /tmp/appx.oraacle.out


open("/lib/tls/libclntsh.so.9.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
====================================


Do a file system search on the oracle file libclntsh.sl.9.0


====================================
# find / -name libclntsh.sl.9.0 -print
====================================

You should get something back such as:


====================================
/usr/lib/libclntsh.sl.9.0
====================================


You can then create the directory structure that APPX is wanting and
create a link from the real libclntsh.sl.9.0 file into the newly created
directory like so:


====================================
mkdir -p /vg01/oracle/oracle-9/OraHome1/lib32/
cd /vg01/oracle/oracle-9/OraHome1/lib32/
ln -s /usr/lib/libclntsh.sl.9.0 libclntsh.sl.9.0
====================================

Then you should be able to start appx. If APPX complains about another
library that is missing, then you would repeat the process described above.


Ohters have also used the same idea to mix and APPX built against Oracle
version x when you have Oracle version y installed.


For instance, say you have oracle 10 installed, but your APPX install is
looking for Oracle 9 libraries and giving you and error such as:


====================================
Can't open shared library:
/vg01/oracle/oracle-9/OraHome1/lib32/libclntsh.sl.9.0
====================================

If you don't have the Oracle 9 Client library installed, you won't find
it on the file system, what you could do is find the corresponding
version 10 file and create a link to it. For instance you might have:


====================================
/usr/lib/libclntsh.sl.10.0
====================================

In that case you would create a directory and create a link with the
version 9 name:


====================================
mkdir -p /vg01/oracle/oracle-9/OraHome1/lib32/
cd /vg01/oracle/oracle-9/OraHome1/lib32/
ln -s /usr/lib/libclntsh.sl.10.0 libclntsh.sl.9.0
====================================

That way APPX built against Oracle 9, would see the Oracle 10 client
library, and think it was Oracle Client 9.


[Append to This Answer]
2005-Dec-06 1:32pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Is Appx a multi-threaded Application? WIll it take advantage of multiple CPUs?
The answer to this questions is No and Yes*.
Appx is not multi-threaded, but to an appx environment is usually enhanced by multi processors, because the os would normally spead processes accross the available processors.
[Append to This Answer]
2006-Jan-27 2:27pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to set the APPX_SQL_CMD to obtain a log of RDBMS activity.
To gather timing statistics using the Oracle, Sybase, or ODBC interfaces you must set the following environment variables prior to invoking Appx:

APPX_SQL_CMD=/... /rdbms.log (Unix users prefix with $ export)

     For details on reading the log, see http://board.appx.com/faq/cache/633.html 
APPX_DBG_CODE=0x10000 (Unix users prefix with $ export)
     For details on setting the variable to control the contents of the log,  see http://board.appx.com/faq/cache/634.html

[Append to This Answer]
2006-Jul-07 2:03pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to read the APPX_SQL_CMD Log
How to set the APPX_SQL_CMD to obtain a log of RDBMS activity, see http://board.appx.com/faq/cache/632.html

For details on how to set the APPX_DBGL_CODE to log specific RDBMS activity, see http://board.appx.com/faq/cache/634.html

Reading the SQL Log file

Please note the Tips and Techniques section below for information on what to look for in this log.

After your benchmark run, the /tmp/rdbms.log file will contain a set of entries similar to:

 00 - 0000072.0797031 0000000.0057123 05000
 01 - 0000076.0737460 0000000.0043817 10001
 02 - 0000000.0000000 0000000.0000000 00000
 03 - 0000000.0000000 0000000.0000000 00000
 04 - 0000000.0022587 0000000.0022573 00002
 05 - 0000000.0000000 0000000.0000000 00000
 06 - 0000026.0281965 0000000.0031189 05001
 07 - 0000002.0012514 0000000.0012999 15003
 08 - 0000000.0000000 0000000.0000000 00000
 09 - 0000000.0000000 0000000.0000000 00000  
 10 - 0000000.0017440 0000000.0017440 00001
 11 - 0000024.0951585 0000000.0022819 05000

You will have one entry for each table accessed by Appx (there may be multiple entries for some tables - we log statistics each time we close a table).

Each entry contains an array of 12 rows and 4 columns. The columns (from left to right) represent:

        operation type
        cumulative time spent performing that operation for that table
        longest operation of that type for that table
        number of operations of that type for that table

The rows are:

        00 - Read operations
        01 - Readnext operations
        02 - Write operations
        03 - Rewrite operations
        04 - Open operations
        05 - Reread operations
        06 - Search operations
        07 - Release operations
        08 - Search by primary key operations
        09 - Search by alternate key(s) operations
        10 - Position to start of table operations
        11 - Search by row identifier operations

Dissecting the first row of the above example:

         00 - 0000072.0797031 0000000.0057123 05000

The operation type is '00' or "Read". We spent a little over 72 seconds performing Read operations against this table. The longest read took .0057123 seconds, and we performed exactly 5000 reads.

Some of operation types are composites: for example, a READ statement is accomplished by performing a Search followed by a Readnext. So you can see in the above example that we performed 5000 reads, comprised of 5000 Searches and 5000 Readnexts.

00 - Read operations

  As mentioned above, a Read is performed whenever Appx needs to retrieve
  a record by a specific key value.  A Read is accomplished by performing a
  Search followed by a Readnext, so you should have at least as many Searches
  and Readnexts as you have Reads.

01 - Readnext operations

  A Readnext is performed whenever Appx has established a Search position
  within a file and then needs to retrieve the record following that position.
  A Readnext will be performed for READNEXT, BEG/END READ, and READ statements
  as well as for most PCF operations.

02 - Write operations

  A Write operation is equivalent to a WRITE statement - it causes a row to be
  INSERTed into a table.

03 - Rewrite operations

  A Rewrite operation is equivalent to a REWRITE statement - is causes an SQL
  UPDATE statement to be executed.

04 - Open operations

  This entry reflects the amount of time required to open a table.  It includes
  querying the RDBMS data dictionary and performing all internal bookkeeping.
  The time required for this operation is usually negligible.

05 - Reread operations

  Since Sybase does not perform row-level locking, Appx must simulate locking
  outside of the Sybase server. The algorithm used to simulate locking requires
  reading every locked record twice: once to retrieve the key values and once
  to read the rest of the record.  A Reread operation reflects the second read.
  There should be one Reread operation for each record held.

06 - Search operations

  A Search operation is performed whenever Appx needs to position to a specific
  key value.  Searches are usually (but not always) performed by a Readnext
  operation and are usually part of a BEG AT or READ operation.  Search
  operations are further divided into "Search by primary key", "Search by
  alternate key(s)", "Position to start of table", and "Search by row dentifier
  operations".  In the above example, you can see that we performed 5001
  searches: 1 position to start-of-table and 5000 read by row-id's.

07 - Release operations

  A Release operation is performed whenever Appx releases a hold on a locked
  record.  Appx will try to release holds on records which were not locked -
  the overhead is negligible and does not cause any i/o.

08 - Search by primary key operations

  This a subdivision of the Search operation.  It reflects the number of
  Search operations which specify a primary key value.  In Sybase - primary
  keys are implemented as a clustered index.

09 - Search by alternate key(s) operations

  This a subdivision of the Search operation.  It reflects the number of
  Search operations which specify an alternate key value.
10 - Position to start of table operations

  This a subdivision of the Search operation.  It reflects the number of
  Search operations which position to the first row in an index (as opposed
  to a specific key value).

11 - Search by row identifier operations

  This is a subdivision of the Search operation.  Whenever Appx reads a
  row from a table, it remembers the row-identifier (in the case of Sybase,
  the row-id is the primary key).  If Appx needs to reposition to that row,
  it will use the row-id.  An Appx query process works by recording the 
  row-id's of all records which meet the query constraints and then re-reading
  the results using the row-id's.   The above example was produced by selecting
  5000 out of 5000 records in a query process.


Tips and Techniques...

When you are examining a statistics log, you should pay particular attention to two results:

        1)  The amount of time spent on 00 (Read), 01 (Readnext), 02 (Write),
            03 (Rewrite), 05 (Reread), and 06 (Search) operations.

        2)  The number of operations performed against each file compared to
            the number of operations performed against the PCF.

The first statistic will help identify which files are consuming the most amount of time. The second will help identify which files may be processed too frequently.

The "longest operation" column should be roughly equal to cumulative/count - if it's off by more than a factor of 10, it may be worth exploring - of the 'count' operations, (at least) one of them took much longer than the rest.

[Append to This Answer]
2006-Jul-07 1:59pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
How to set the APPX_DBG_CODE to log specific RDBMS activity
The APPX_DBG_CODE environment variable controls the amount of information written to the APPX_SQL_CMD log file.  APPX_DBG_CODE is a 32-bit bit mask - if a bit is on, the corresponding information will be logged.


Here are the current (01/22/98) bit definitions:


0x00000001 -    Log all generated SQL commands

0x00000002 -    Log status codes returned from server (*)

0x00000004 -    Log all fetch attempts (*)

0x00000008 -    Log all engine level operations (*)

0x00000010 -    Log all connection-related operations (*)

0x00000020 -    Log binding summary (*)

0x00000040 -    Log binding details (*)

0x00000080 -    Log column/field mappings

0x00000100 -    Enable server logging mechanism (Oracle only)

0x00000200 -    Enable result (null/non-null) logging (*)

0x00000400 -    Log negotiations for server options (such as packet size)

0x00000800 -    Log all records returned from server

0x00001000 -    Currently undefined

0x00002000 -    Log proxy locking operations (Sybase/ODBC only)

0x00004000 -    Time individual operations (use 0x10000 instead)

0x00008000 -    Enable server-side statistics (if capable)

0x00010000 -    Gather per-table timing statistics

0x00020000 -    Enable "show plan" feature on server, generates voluminous logs

0x08000000 -    Write server-based log to "/tmp/syblog" (Sybase only)

0xFFFFFFFF -    Logging all activity


Definitions marked with (*) are for internal debugging purposes only - they 
provide very little useful information.
[Append to This Answer]
2007-Apr-30 6:59pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Which external DB still require the proxy database id "LOK" to be set?
Proxy DB id of LOK is still required fro MS Access, Postgress, MySQL adn possibly DB2
[Append to This Answer]
2006-Jul-26 12:01pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Orphan Session Detection and possible causes
1) Server task is running some loop (endless or lengthy). For the duration of the loop, if there is no screen feedback or client communication attempt and fail, then the potential for left over server side processes exists.
2) Server task is running a long process. For the duration of the long process, if there is no screen feedback or client communication attempt and fail, then the potential for left over server side processes exists ---* until the long process finishes, at that time there would usually be a client communication attempt. If the communication attempt fails, then the server side session would die.
3) Server task is sitting at a menu. If the client dies, then this WILL leave a server side process running.
4) Server task is waiting on a record lock. If the record lock does not update the client, then when the client drops off unexpectedly, there will be a server side process left.
These are known behaviors it seems.

[Append to This Answer]
2007-Jan-26 9:09am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Where can i find information on your Language Translation?
Information regarding Language Translation and Language Translation Manual is 
available on our website:

http://www.appx.com/assets/asp/dynamic_generator.asp?pageid=558
[Append to This Answer]
2007-Feb-28 12:31pm
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
New Item
[Append to This Answer]
2009-Mar-23 8:20am
(Answer) (Category) FAQ's - APPX Software, Inc. : (Category) APPX Utility : (Category) APPX System Administration :
Merge and Replace application data files with the Database Management Import utility.
You have two options for importing data into an Appx application data file, Merge and Replace. Both options require an import file matching the specifications of the application file. The import file must reside in the Portdata directory for the application.

The Replace option (defualt) initializes the existing application file and then reads and writes all the records from the import file into the application file.

Similarly, merge writes records to the application file from the merge file however the application file is not initialized. If the primary key value in the import file and application file match, then the application file record is replaced with the record from the import file. If the primary key value from the import file is not found in the application file then the import file record is added to the application file. The only time a matching primary key record is not replaced is when there is a unique alternate key defined and the unique key value exists in another application file record.

Records in the import file are fixed length and should not be altered before importing. We recommend backing up your application file .dat and .key file before importing records. The application file should be free of structure errors prior to importing records.

[Append to This Answer]
2009-Sep-04 5:38pm
Previous: (Category) APPX Runtime Environment
Next: (Category) APPX Installation & Configuration
This document is: http://board.appx.com/cgi-bin/fom.cgi?file=22
[Search] [Appearance] [Show Top Category Only]
This is a Faq-O-Matic 2.719.
Copyright 2003 by APPX Software, Inc. All rights reserved.