Hi:

Although originally written for Zachary users, a lot of this file will
be applicable to general Clipper users.

Enjoy,

Len Dozois
The ZAC Catalogs

As most of you know, Zachary generates multi-user code right out of the box.  
Simply respond to the prompt in the Environmental Settings screen and you are 
on your way.  Or, are you?

Here are some points to keep in mind:

If you answer NO to the Network prompt, single user code will be written.    
Simple enough.  If you answer YES to the prompt, multi-user code will be   
written.  So far, so good.  If you answer DEFAULT to the prompt, the   
application will determine, at run time, whether or not it finds itself in a  
network environment.  Here is the tricky part.

In order to determine if it is running in a network environment, your Zachary 
defined application will call a function designed to trigger a Novell 
interrupt.  This interrupt returns the logical address of the network card   
that is installed in the computer that the app is currently running on.  
Since   there are now a wide assortment of network cards available, this 
function can no longer be guaranteed to activate your particular card.  Don't 
lose faith.

Failing to get an appropriate response to the query, Zachary next checks the  
DOS environment for either of the following:  USERNAME or UNAME.  So, if 
UNAME or USERNAME is present, a networked environment is assumed.  How can 
these variables be set?  The answer depends upon which network you are 
running.

In Novell, you can use the DOS SET command in either the master logon program 
or the user's logon script.  For other networks, such as Invisible Net or 
Lantastic, the command SET USERNAME=<something> can be added to each 
machine's   AUTOEXEC.BAT file.

Let's take a moment to look at the purpose of this variable.

USERNAME is used by Zachary to build temporary files.  USERNAME should be no  
more than 7 characters and should be comprised of characters that both DOS 
and Clipper can use as file names.  Around the office, we use the following 
setup,  one for each machine, as appropriate.

SET USERNAME=LENNY
SET USERNAME=MARTY
SET USERNAME=LISA
SET USERNAME=BARBARA
SET USERNAME=SHARON
SET USERNAME=SCOTT
SET USERNAME=GUEST

Get the idea?


Once the USERNAME variable has been taken care of, there is only one other 
consideration.  Your .EXE and .OVL files must be flagged.  In Novell, you use 
the FLAG command:

FLAG *.EXE ROS  <--< Read Only Sharable
FLAG *.OVL ROS

In Lantastic, Invisible Net and other NETBIOS networks, you use the DOS 
ATTRIB command.

ATTRIB *.EXE +R  <--< Read Only
ATTRIB *.OVL +R

One little thing.  Should you want to upload a new replacement file that has  
been previously flagged, you must UNflag the old one first. Afterall, READ  
ONLY means just that and your operating system will not allow you to 
overwrite it with a new one.

Most, if not all, non-Novell networks also require that the SHARE program be  
run.  SHARE takes parameters such as this:

      SHARE /L:1024 F/:4096


The following information was taken from a message left on Zac's BBS by Art   
Van Hecke:

Share has two parameters that are VITAL to Lantastic.  These are the /F: and  
the /L: parameters. 

The /F: parameter allocates file space for file sharing info.  You will not   
belive how big this parameter has to be.  On a small network (7 nodes) that   
opens everything but the kitchen sink, we use a value of (are you ready for   
this) /F:57344.  I know it sounds crazy but we run accounting apps that open 
a gazillion files.  It won't hurt you to start big and trim it down. 

The /L: parameter set the number of locks you can have on at one time, and   
this parameter should be set somewhere into the limits of absurdity.  Give 
1024 a try. 

Also, in the server startup parameters set the files up to 2 * Number of 
files that can be open on each machine at one time * number of nodes on 
server and work down from there. 


-  Thanks Art, good job!

I hope that this helps you along your network developement path.

                               ** END **


