Re: Networking....Share

 BBS: Inland Empire Archive
Date: 11-19-92 (11:47)             Number: 335
From: TONY ELLIOTT                 Refer#: NONE
  To: MARK THOMAS                   Recvd: NO  
Subj: Re: Networking....Share        Conf: (2) Quik_Bas
 Mark,

 MT> When running on a network, I get a share violation. I tempoarily
 MT> fixed the problem by creating duplicate files for every user, but
 MT> as you can imagine this can be a pain when updating the files.

If you're running on a NetBIOS/Microsoft compatible network (Lantastic,
3COM, etc), and you wish to allow more than one user simultaneous
access to a given file, file "sharing" attributes must be set when you
open the file. For example:

    OPEN "DATAFILE.DAT" FOR RANDOM ACCESS READ WRITE SHARED AS #1

As long as all of your users open the same file in this way, they will
all be allowed access at the same time. However, a new level of
complexity has just been introduced into the scheme. What happens if
two users try to access and update the same record at the same time?
Basic also supports the LOCK statement. For example, if you wish to
retrieve a record for updating, you need to LOCK it to prevent others
from accessing the same record at the same time:

    LOCK #1, 20             'Lock record #20
    GET #1, 20, RecVar      'Get the record
    'Update it here
    PUT #1, 20, RecVar      'Put it back
    UNLOCK #1, 20           'Now unlock it

If you are retrieving the record for display or report purposes only
(e.g. you're not going to change it), there's no need to lock it.

A couple of things you have to keep in mind: For every LOCK there has
to be a matching UNLOCK. Basic will not automatically unlock all the
records your workstation locked if you should close the file or if your
program crashes. Leaving locks in place after either of these two
scenarios will cause (in MS's words) unpredictable results.

Also, you need to use BASIC's error trapping if you are going to use
locks. If you attempt to LOCK OR GET a record that's locked by someone
else, a BASIC error will be generated.

Also <g>, if you attempt to open a file using the ACCESS clause shown
above and SHARE.EXE is not loaded or if you're not on a network, an
error will result.

Something to keep in mind .. My company has a product called E-Tree
Plus. It's a multi-user database engine designed specifically for BASIC
that works on single-user and network systems, and takes cares of all
these nitty-gritty details for you. If you would like more info, let me
know.

Good luck!

Tony
EllTech

... To a cat, "NO!" means "Not while I am looking"
--- Blue Wave/Max v2.10 [NR]
 * Origin: Oakland BBS - McDonough, GA - (404) 954-0071 (1:133/706.0)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET