home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-14 | 41.4 KB | 1,092 lines |
- OCTOBER 1990 BULLETS
-
- MAD's COLUMN
-
- Hello and welcome to the October edition of BULLETS!
-
- There are several items in this month's BULLETS to which I would like to
- draw your attention. First of all, Novell has begun shipping version 2.11
- of XQL and NetWare SQL.
-
- We have also released a new version of the NetWare C Interface, as well as
- a new version of the C Network Compiler, now renamed Network C for DOS
- v2.0. You will find descriptions and a list of enhancements for both of
- these new products on page nine.
-
- Finally, the past weeks have seen the release of two new Btrieve products:
- Btrieve for Windows, and a new version of Btrieve for OS/2. In this edition
- of BULLETS, you will find an article to help you get started using Btrieve
- for Windows as well as some information on enhancements and changes made to
- the new OS/2 Btrieve DLL.
-
- You can receive information about upgrades for each of these products by
- calling 1-800-RED WORD or (512) 346-8380.
-
- Happy_Programming!
-
- Mad Poarch
- Director of Developer
- Support/Services
-
-
- Article: Xtrieving Btrieve
-
- Xtrieve PLUS is a menu driven data retrieval system with a flexible report
- writer. It is designed to work in conjunction with both Btrieve and
- XQL/NetWare SQL applications, allowing users to catalog, retrieve, analyze,
- and update the information in Btrieve files. This article explains how to
- use Xtrieve PLUS to access existing Btrieve files.
-
- Your physical files are actually Btrieve files, created by Xtrieve PLUS or
- by any other Btrieve or XQL application. Xtrieve PLUS uses a data
- dic-tionary which contains precise descriptive information about every data
- field and every index for the Btrieve file. Before Xtrieve PLUS can
- recognize the data in your existing Btrieve file, you must add a definition
- to the Xtrieve PLUS dictionary which corresponds to the format of the data
- in the Btrieve file.
-
- In order to define a file to Xtrieve PLUS■s dictionary, you must first
- prepare or obtain a list of all the fields in your Btrieve file in the
- order in which they are stored in the data record, along with the data type
- and length of each field. You must also know which of these fields are
- defined as indexes (or keys).
-
- Information about indexes can be obtained by executing a "BUTIL -stat
- <filename.btr>" command for your Btrieve file. Still, it is important to
- remember that the precise characteristics of all other fields in the file
- must be obtained from whomever originally defined or developed the
- application using that file.
-
- Once you have this information, the process of defining a file to Xtrieve
- PLUS's dictionary is fairly simple. From the main Xtrieve PLUS menu, you
- should select the Dictionary option, and from there, the Define option. You
- will first be asked for the Location Name; this should be the full drive,
- path and filename (with extension) of the existing Btrieve data file. The
- drive and pathname are optional and are not necessary if the data file is
- in the current directory. Next, you will be prompted to supply a
- Descriptive Filename. This is the tablename used within Xtrieve PLUS that
- will appear on menus whenever you need to access the specific file.
-
- Now you are ready to define the fields within the file. Be sure to define
- the fields to correspond exactly to the data in the Btrieve file. After
- completing this step, press the <ESC> key and you will be shown a menu that
- includes options allowing you to:
-
- - modify these field definitions
- - continue adding or editing the fields already entered
- - remove any fields already entered
- - insert a new field in any position.
-
- Select Complete from this menu when all the fields have been successfully
- entered. You must next define the indexes for the file. Again, be sure to
- select the fields to correspond exactly to the indexes already defined in
- the existing Btrieve file. When you have finished defining the indexes,
- press the <ESC> key and select Complete from the menu.
-
- You should now see the File Definition Menu, from which you should select
- the Finished-Don■t Create option. This instructs Xtrieve PLUS to add the
- file definition to the data dictionary, but not to create the specified
- Btrieve file (remember: a Btrieve Create operation creates a new, empty
- Btrieve file). It is very important that you DO NOT select the
- Finished-Create option, because if you do you will wipe out all data in
- your existing Btrieve file. You would use the Finished-Create option only
- if the data file did not already exist or if you specifically wanted to
- clear out any data already in the data file.
-
- You now have all the functionality of Xtrieve PLUS available for use on the
- data you■ve collected in your Btrieve file, including browsing your data,
- editing, sorting, adding new data, adding supplemental indexes, and writing
- reports. Good luck and have fun!
-
-
- Article: Using Btrieve for Windows
-
- Btrieve for Windows v.5.10 was released September 4, 1990 to give Windows
- application developers access to the Btrieve Record Manager and the
- thousands of Btrieve databases currently installed worldwide. This article
- will examine two issues which concern developers using Btrieve for Windows:
-
- o How to initialize Btrieve.
- o How to make calls to Btrieve.
- o How to make calls to type Btrieve.
-
- Initializing Btrieve for Windows
-
- There are three ways to initialize Btrieve for Windows.
-
- 1. Use the default values. With this method, no special initialization
- procedures need to be done.
-
- 2. Use the WIN.INI file. Create a section in the file that looks like
- this:
-
- [btrieve]
- options=/m:40 /p:=4096 /b:20
- tracefile=btrvtr (specify tracefile name)
-
- Here, the options syntax is identical to that for the Btrieve for DOS
- Networks version. Also an additional tracefile option can be specified:
-
- traceops=0 1 19 20 21
-
- This tracks the Btrieve operations and results and can be used to limit
- trace operations.
-
- 3. Use the initialization routine BTRVINIT(). This routine can be found
- in the interface file. The parameter syntax is the same. (e.g. the
- page size parameter is specified /p:4096.)
-
- To use BTRVINIT, set up a char far pointer. To do this you would declare:
-
- char far *btrparm="/m:40 /p:4096";
-
- The call would then be:
-
- BTRVINIT(btrparm);
-
- A description of the tracefile option and documentation on each of these
- methods of initialization are available on CompuServe in NOVC LIB 16 under
- the file name WBTREX.ZIP.
-
- Calling Btrieve for Windows
-
- In Btrieve for Windows, there are two options for making calls to Btrieve.
- One method is to use the standard DOS, six-parameter format:
-
- BTRV(operation,
- pos_block,
- data_buffer,
- data_buffer_length,
- key_buffer,
- key_number);
-
- Please take note that the interface uses all capital letters to place the
- Btrieve call. Some "C" Btrieve for DOS interfaces use the lower case
- convention to make the call. It is also important to remember that all the
- pointers need to be far pointers. This means:
-
- o the position block must be defined as
- char far pos_block[128]
- o the data buffer must be defined as
- char far *data_buffer
- o the data buffer length must be defined as
- unsigned far *data_buffer_length
- o the key buffer must be defined as
- char far *key_buffer.
-
- For example, if your customer is passing &structure for the data buffer,
- then he would type cast the structure as a far char * in the call to
- Btrieve.
-
- BTRV(opcode,
- posblk,
- (char far *)&structure,
- et cetera).
-
- If you choose to use BTRV(six parameters), then you will need to use the
- WBTRVINTF.C interface, which is on the Btrieve for Windows diskette.
- Whether or not you choose to use it in this way, you should take a quick
- look at it and take note of the way the far pointers are declared and how
- the interface passes control to WBTRCALL.DLL.
-
- Another method of calling Btrieve for Windows is to call BTRCALL(). This
- method requires seven parameters:
-
- BTRCALL(int opcode,
- (char far *) position_block,
- (char far *) data_buffer,
- (unsigned far *)
- data_buffer_length,
- (char far *) key_buffer,
- (unsigned char)
- key_buffer_length,
- int key_path );
-
- The added parameter is the key length. This parameter is always set to 255
- by the interface. The best documentation on this can be found by looking at
- the interface file and reviewing the call to BTRCALL in the BTRV routine.
-
- You can find example code for Btrieve for Windows in the file WBTREX.ARC on
- CompuServe in NOVA LIB 16, where it will remain until mid-December. After
- that the file will be moved to NOVA LIB 5. If you have additional questions
- concerning Btrieve for Windows, please contact the Developer Support Group
- at Novell Austin or your local Novell office.
-
-
- Article: Using the APIs to Take Advantage of TTS
-
- Transaction Tracking System (TTS) is a data integrity tool available
- forAdvanced and SFT NetWare. TTS guarantees that either all file updates
- within a given transaction will be written to disk or none of them will be.
- If all the updates cannot be completed for some reason, then the
- successfully completed updates are "backed out." This article will provide
- the information needed to program with TTS, discussing the different
- varieties of transaction tracking, and outlining the ways that you can
- control when a transaction begins and ends.
-
- Before using TTS in a program, you must take care of some housekeeping
- chores. First, install TTS on the server which you will be using. Next,
- flag the file which you have chosen to monitor as transactional, using
- either the flag utility or the SetExtendedFile-Attributes call. Using the
- call TTSIsAvailable, your program can check to make sure TTS is installed
- and active. This function will return a 1 if TTS is installed and a 0 if
- it is not.
-
- Any code that will use TTS will use the following steps:
-
- 1. Start the transaction.
- 2. Execute any and all updates.
- 3. End or abort the transaction.
-
- Implicit Transaction Tracking
-
- Implicit transaction tracking is designed to be transparent to the user.
- The start transaction takes place anytime the application locks a record in
- a file that is marked transactional.
-
- There are various APIs in the synchronization services for locking records
- in files, but the standard locking calls available with DOS version 3.1 and
- greater will also work. The "lock threshold", or number of locks which must
- be made to indicate a Begin Transaction, defaults to 0, which means that
- the first lock will begin a transaction. When necessary, you can examine or
- change the "lock threshold" by using either the TTSGetApplicationThresholds
- call or the TTSGetWorkstation-Thresholds call. The transaction is ended
- when the number of locks falls below the threshold.
-
- Explicit Transaction Tracking
-
- Explicit transaction tracking is a more visible process and, therefore, is
- easier to apply. Some calls, such as TTSBeginTransaction and
- TTSEndTransaction, need very little explanation. However some calls need a
- little more explanation. For instance, if you need to abort a transaction
- and force a rollback for some reason, you would call TTSAbort-Transaction,
- rather than TTSEndTransaction.
-
- The server caches incoming requests, so it may take 3 to 5 seconds before a
- transaction is actually written to disk. Because of this, you may need to
- verify that the transaction has actually been written by calling
- TTSTransactionStatus and passing it the transaction number returned by
- TTSEndTrans-action. This function can be called repeatedly until it
- successfully returns.
- If an implicit transaction is in effect when you issue a
- TTSBeginTransaction, then it is converted into an explicit transaction. If
- the "lock threshold" is exceeded when the call TTSEndTransaction is issued,
- then the explicit transaction will end and an implicit transaction will
- begin.
-
- Following is a simple program that demonstrates how to use record locking
- to activate implicit transaction tracking. If you have additional questions
- about TTS, please contact the Developer Support Group at Novell Austin or
- your local Novell office.
-
- /* This application was compiled with Turbo C in NetWare 386. */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <nit.h>
- #include <fcntl.h>
- #include <share.h>
-
- int f1;
- int f2;
-
- /* This function will check to see if the file is flagged transactional.
- If not, it will flag it as such. */
-
- VerifyTTSFlag(char *filname)
- {
- BYTE extendedFileAttributes;
- GetExtendedFileAttributes(filname,
- &extendedFileAttributes);
- if (!(extendedFileAttributes & 0x16))
- {
- /* set the transactional bit of the
- extended attributes if not set */
- extendedFileAttributes += 0x16;
- SetExtendedFileAttributes(filname,
- extendedFileAttributes);
- }
- }
-
- void read60bytes(int filnum,char *buff)
- {
- lseek(filnum,0L,SEEK_SET);
- read(filnum,buff,60);
- }
-
- void write60bytes(int filnum,char *buff)
- {
- lseek(filnum,0L,SEEK_SET);
- write(filnum,buff,60);
- }
-
- void main(int argc, char **argv)
- {
- int ret;
- char ans;
- long transactionNumber;
- char buff1[80];
- char buff2[80];
- buff1[60]=0x00;
- buff2[60]=0x00;
-
- /* checking to see if TTS is available */
- if (TTSIsAvailable()== 1)
- printf("\n TTS is available");
-
- /* If files are not flagged as transactional,
- flag them */ VerifyTTSFlag("sys:orm/tts/tstfile1");
- VerifyTTSFlag("sys:orm/tts/tstfile2");
-
-
- f1=open("tstfile1",O_RDWR);
- f2=open("tstfile2",O_RDWR);
-
-
- /* Begin the transaction */
- ret=TTSBeginTransaction();
- printf("\nbegin transaction %d",ret);
-
- read60bytes(f1,buff1);
- read60bytes(f2,buff2);
- printf("\n%s",buff1);
- printf("\n%s",buff2);
-
- /* This code just alters the record so we
- can see if the transaction is aborted or
- not. */
-
- if (buff1[0]=="*")
- memset(buff1,"x",60);
- else
- memset(buff1,"*",60);
-
- write60bytes(f1,buff1);
-
- if (buff2[0]=="*")
- memset(buff2,"x",60);
- else
- memset(buff2,"*",60);
-
- write60bytes(f2,buff2);
-
- if (!strcmp("UPDATE",argv[1]))
- {
- ret=TTSEndTransaction(&transactionNumber);
- printf("\n ending the transaction %d ",
- ret);
- printf("\n Transaction number %ld",
- transactionNumber);
- while (TTSTransactionStatus
- (transactionNumber))
- printf(".");
- }
- else
- {
- ret=TTSAbortTransaction();
- printf("\n aborting the transaction %d",
- ret);
- }
-
- setmem(buff1,"-",60);
- setmem(buff2,"-",60);
-
- read60bytes(f1,buff1);
- read60bytes(f2,buff2);
-
- printf("\n%s",buff1);
- printf("\n%s",buff2);
-
- }
-
-
- Technical Insights:
- New Features of the OS/2 Btrieve Dynamic Link Library
-
- The OS/2 Btrieve DLL has some exciting new features.
-
- Dynamic Initialization:
-
- The same API that is used with Btrieve for Windows is used for the OS/2
- DLL. The application can make a call to BTRVINIT () to initialize the DLL
- instead of requiring the end-user to set the BTRPARMS environment variable.
-
- Dynamic Reinitialization:
-
- As in Btrieve for Windows, you can reinitialize Btrieve if all files have
- been closed, all transactions have been completed, and the BTRVSTOP()
- function has been called successfully.
-
- The BTRVSTOP() must be issued and it must be successful. If this function
- is unsuccessful, memory will be held for previous tasks and they will not
- be removed from the task table. If a non-zero status is returned from
- BTRVSTOP(), then there are files that have been left open and the
- application must close the files. The occurrence of a status 1013, which is
- undocumented, means that there are too many tasks running and the
- application most likely did not issue a BTRVSTOP() successfully.
-
- Parameter Validation
-
- By setting an environment variable, the developer can isolate bugs caused
- by passing invalid pointers to Btrieve. To set the environment variable,
- issue the following command:
- SET BTRPARMSCHK=YES
-
- Once this variable is set, Btrieve will validate the pointer parameters
- passed in for READ/WRITE access over certain ranges. The position block
- pointer is validated over a range of 128 bytes, the data length pointer
- over 2 bytes (it only points to an integer), the data buffer is validated
- over the specified data length, and the key buffer is validated over 255
- bytes.
-
- If an invalid pointer is found, Btrieve will not process the operation and
- will instead return a status 1015.
-
- o BUTIL now works with 32K records. The previous limit was 16K.
-
- o The BROLLFWD program is now a "family application" and can run in
- either OS/2 or DOS.
-
- o BROLLFWD now supports 64K records. The previous DOS version of
- BROLLFWD supported a maximum record lengths of 32K.
-
- o The default record size used is 8K. If the user has records larger
- than this, they must start BROLLFWD with a "/d:XX" option where XX is
- between 1 and 64, and they must round up their largest record size to
- the next multiple of 1024.
-
-
- Technical Insights: When to Load BROUTER
-
- BROUTER.VAP is only needed if the server is going to be running other VAPs
- making Btrieve calls, like NW$SQL.VP0 (NetWare SQL). In the NLM
- environment, the same thing is true; BROUTER.NLM is only needed if another
- NLM (such as NetWare SQL) is going to access Btrieve.
-
- In multiple NetWare server environments, if you want to have Btrieve files
- on multiple servers and access these files through NetWare SQL, then your
- servers should be configured as illustrated in Figure 1.
-
- Notice that BROUTER is only needed on the server that is running NetWare
- SQL. It will intercept all Btrieve calls and pass them to the server that
- contains the Btrieve file. In this regard, BROUTER works very much like
- BREQUEST.
-
- If BROUTER.VAP is loaded and not needed, there are two ways to remove it:
-
- 1. To remove BSERVER.VAP and BROUTER.VAP from the system directory on the
- server, wait until no one is using the Btrieve VAP. Use the BSETUP
- command and select "Remove." Then, select Install and reply "NO" to
- the question where it asks "Load BROUTER?" Once again, do NOT install
- if people are on the system accessing Btrieve. Doing so will break
- their connection with Btrieve.
-
- 2. In the SYSTEM directory, change the flag for BROUTER.VAP from READ
- ONLY to READ/WRITE, then rename the file to get rid of the .VAP
- extension, or delete the file entirely. Since BROUTER has no hooks
- into the bindery, there is no danger in doing this.
-
- Always use "BSETUP - Remove" to get rid of BSERVER.VAP. If it is deleted
- from the SYSTEM directory in any other way, it will not be removed from the
- bindery. "BSETUP - Remove" will delete BSERVER.VAP and BROUTER.VAP (if
- present) from the SYSTEM directory, and remove BSERVER from the bindery.
-
- In the NLM environment:
-
- o NetWare SQL must be unloaded before BROUTER and,
-
- o BROUTER must be unloaded before BSPXCOM and Btrieve.
-
- This can be accomplished from the server in either of two ways:
-
- 1. Use the provided .NCF files:
-
- :NSSTOP
- :UNLOAD BROUTER
- :BSTOP
-
- 2. Manually unload the following:
-
- :UNLOAD NSSPXCOM
- :UNLOAD NWSQL
- :UNLOAD BROUTER
- :UNLOAD BSPXCOM
- :UNLOAD BTRIEVE
-
-
- Technical Insights: Getting Object Connection Numbers
-
- You should note that the GetObjectConnectionNumbers function call will
- return successfully, even if you pass it a bad Object Name. With all other
- functions using the bindery calls ObjectName and ObjectType, you typically
- get a NO_SUCH_OBJECT (0xFC) return code.
-
- With GetObjectConnection-Numbers, this is not the case. This call only
- checks for the number of current connections for the object. If the
- GetObjectConnectionNumbers call returns 0, assume that the object is not
- logged in or the name is bad.
-
-
- Technical Insights:
- Btrieve VAP v5.10 Internal Error Message
-
- With the new Btrieve VAP v5.10, if you specify a value of 0 for any of the
- parameters in BSETUP while loading Btrieve, the following message will
- appear:
-
- BSER 2.00 - 5.10 - Internal Error. 0 Memory Allocation.
-
- This message is purely informational. Btrieve is just notifying you that it
- has not reserved any space for one of the functions which it is capable of
- performing. Calling on one of these functions will result in a status code,
- which will vary, depending on the function called.
-
- For example, if the Number of Transactions = 0 in BSETUP, and a Begin
- Transaction (19) is issued, a Status 36 (Transaction Error) will be
- returned. If the Number of Locks = 0 in BSETUP, and a lock of some sort
- (2xx) is applied, a Status 81 (Lock Error) will be returned.
-
-
- Technical Insights:
- Valid File Handles in the VAP Environment
-
- Zero is a valid file handle in a VAP. Therefore, make the open function you
- write return a -1, and do not assume that zero is invalid.
-
- i.e.
- if (handle > 0 ) {Okay}
-
- you should instead use:
-
- if (handle >= 0) {Okay}
-
-
- Technical Insights: Btrieve v5.10 Error Checking
-
- The documentation for Btrieve 5.10 describes a change in how Btrieve
- handles error checking. Btrieve now returns non-zero status codes in two
- cases where v5.0 returned status 0:
-
- 1. When you perform a Get operation with one key and then an update using
- a different key number. Btrieve 5.10 will return a status 7 (Different
- Key Number). With Btrieve v5.0, it would have returned a status 0.
-
- 2. Doing a Get Next right after an Open will return a status 8 (Invalid
- Positioning). Btrieve v5.0 would have returned a record (undetermined)
- with status 0 in this case.
-
-
- Technical Insights: Btrieve v5.10 Documentation Error
-
- In version 5.10 of Btrieve for DOS, the documentation states that if you
- are using the product in a "client-based" environment, DOS v2.0 or above is
- required. In reality, Btrieve checks for DOS versions and will return the
- message, "Incorrect DOS version", if you attempt to load it with any
- version of DOS which preceeded v3.1.
-
- This is a DOCUMENTATION error, not a product error. It has been reported
- and will be corrected with the next printing of the manual.
-
- Technical Insights: GetNextExtended in Btrieve
-
- When specifying the number of records to be skipped which do not satisfy
- the filter condition on a GetNextExtended, you can specify the value 0. In
- this case, "a system-determined value will be used" (page 4-59, Btrieve
- Programmer■s Manual, for v.5.10). This value is 127 for Btrieve for DOS,
- and 1023 when using the VAP or NLM.
-
-
- Problem Listings
-
- Patches can be downloaded from NetWire, or acquired from Novell Austin at
- no charge. To acquire a patch diskette from us, contact Developer Support
- via phone, mail, or FAX (see page 11). Please specify the name of each
- product for which you would like patches.
-
- BROUTER.NLM v5.11 Patches
-
- 1. This patch ensures that there will be only one connection per server
- and serializes client threads to avoid an as-yet-unexplained SPX hang.
-
- 2. This patch fixes the SPX hang mentioned above and may be used instead
- of patch #1 (using both patches is equivalent to using just #1). This
- allows up to three Brouter-Btrieve connections to a given server and
- may result in improved performance in some cases.
-
- Btrieve v5.10 Patches
-
- 1-26. Refer to earlier issues of BULLETS.
-
- 27. Btrieve (NLM, VAP, Brequest) This patch fixes a problem in which, for
- data-only files, Btrieve returns data to the key buffer after Get
- Direct, Update, Insert and Extended Insert. This patch MUST be made
- both to the VAP or the NLM and to the Requester. The VAP (or NLM)
- sends a flag to the Requester, so if you do not patch the Requester,
- the flag will not be understood.
-
- 28. Btrieve (DOS) This patch corrects a timing-related bug which causes
- Btrieve (DOS) files to become corrupted when one workstation opens a
- file while another workstation simultaneously closes that same file
- from an accelerated processing mode.
-
- 29. Btrieve (NLM) This patch corrects a problem which prevents a file,
- opened on the server by Btrieve, from being open for read-only access
- by a non-Btrieve application, even though the file has the Shareable
- attribute set by the NetWare FLAG utility.
-
- 30. Btrieve (VAP, DOS) This patch fixes a bug causing Btrieve to return an
- erroneous status 26 when a supplemental index with 8 segments is added
- to a data-only Btrieve file of size 512 bytes.
-
- 31. Btrieve (DOS) This patch prevents Btrieve from returning an erroneous
- status 83 when it performs Insert Extended operations within a
- transaction.
-
- 32. Btrieve (NLM) This patch fixes a bug in NetWare SQL. Apply this patch
- only AFTER applying patch #27.
-
- 33. Btrieve (VAP, NLM) This patch fixes a bug which causes the user's key
- buffer to be overwritten with garbage after a Get Direct returns a
- status 22 (user's data buffer too small). This patch also fixes a bug
- which prevents the NLM from returning a key value after a Get Direct
- returns a status 22, and the user's data buffer IS long enough to at
- least receive the fixed length portion (including the keys) of the
- record. NOTE: This patch will only work if patch #27 has been applied
- to the VAP or the NLM and to BREQUEST.EXE.
-
- 34. Btrieve (VAP) This patch fixes a bug which causes a GPI crash on the
- VAP's server when the application uses the Extended Insert function
- and passes a data buffer which is larger than the "largest record
- size" parameter configured by BSETUP.
-
- 35. Btrieve (DOS) This patch fixes a bug which causes Btrieve to make an
- unneeded pre-image file, when the very first operation requested after
- Btrieve is loaded is a Create.
-
- 36. Btrieve (DOS) This patch fixes a bug which causes Btrieve to crash (or
- show other unpredictable symptoms) while updating a record retrieved
- with a Get Direct or Step (no key) operation when:
-
- (1) there has been no Insert or Get (using a key) since opening the
- file, AND (2) prior to the file's Open operation, the file's
- positionblock array contained values other than binary zeros.
-
- 37. Btrieve (NLM, DOS, and VAP) This patch fixes a bug which causes
- Btrieve to return an erroneous status 2 when deleting a record from a
- file with a supplemental index. This bug occurs most often when only a
- few records have been inserted since the creation of the supplemental
- index. In the VAP or DOS versions, the bug occurs only if the
- supplemental index was created with the NLM.
-
- 38. BTRTOOLS - (Windows Btrieve Utilities) This patch fixes a bug in the
- Description File Utility which drops the first word of comments from
- the description file.
-
- 39. Btrieve (OS/2) This patch fixes a bug which causes a segmentation
- violation during re-initialization through BTRVINIT().
-
- 40. Btrieve (VAP) This patch fixes an error in patch #34 which causes a
- status 39 to be returned to XQLI during start-up.
-
- 41. Btrieve (OS/2 & Windows) This patch fixes the same problem described
- in patch 35.
-
- 42. Btrieve (OS/2 & Windows) This patch fixes the problem described in
- patch 36.
-
- 43. Btrieve (OS/2 & Windows) This patch fixes the same problem described
- in patch 37. In Btrieve for Windows and Btrieve for OS/2, this bug
- will only occur when using a file created by the Btrieve NLM.
-
- 44. Btrieve (DOS & OS/2) This patch fixes a bug which causes lock errors.
- When a file is opened in exclusive mode, the application repeats the
- following sequence several times, each time using a different record:
- it retrieves a record using a multiple record lock bias (300 or 400)
- and then updates or deletes that record. Eventually, a Status 81 (Lock
- Error) is returned. The number of times the sequence will repeat
- before returning the Status 81 is determined by the user's
- specification of the maximum number of multiple locks (/L:).
-
- For DOS Btrieve, this bug will also appear if the file is opened in
- other modes, provided that the file is on a non-network drive and
- SHARE.EXE is not loaded.
-
- 45. BTRTOOLS (Windows) This patch fixes a bug in the Description File Edit
- Utility which requires File Information key count to match the total
- number of key segments, instead of the total number of keys.
-
- 46. Btrieve (DOS) This patch fixes a bug which prevents Btrieve from
- returning a status code 83 when a record is updated but not read
- inside a transaction.
-
- Unresolved Xtrieve PLUS v4.01 Problems
-
- 99. (DOS, OS/2) When an INTEGER with a mask which has decimal places is
- translated out to SDF/DIF files, the value goes out scaled according
- to the mask. However, when the value is translated back in from the
- SDF/DIF file, it is not unscaled before insertion into the data file.
-
- Thus, a value of 345 with a mask of ZZZ.99 will be translated out as
- 3.45, but when the value is translated back in, it will have a value
- of 3 (regardless of the mask). Xtrieve should use the mask when
- translating out AND in. Provided the mask is still ZZZ.99, the value
- should be translated in as 345.
-
- Xtrieve PLUS v4.01a Patches
-
- 1-97. Refer to earlier issues of BULLETS
-
- 98. This patch fixes a bug in which, during a Modify All (or Remove All),
- Xtrieve PLUS attempts to start a transaction on the view, regardless
- of the setting of the Lock flag from the configuration file.
-
- 100.This patch fixes a bug qhich causes Xtrieve PLUS to issue a status 11
- when you try to create a dictionary.
-
- 101.This patchfixes a bug which causes Xtrieve PLUS to respond incorrectly
- with the message, "Dictionary is empty." when VIEW.DDF contains more
- than 254 view definitions and you try to recall or remove a view. The
- store command functions properly, however.
-
-
- Novell Education
-
- Novell Education now offers classes for many of the Development Products;
- including, Btrieve, XQL, Xtrieve and NetWare Client APIs. These classes are
- designed to give participants a complete introduction to the powerful
- features of Novell■s development tools and services. Classes are formatted
- to allow nearly 50% of the class time to be spent in hands-on activities.
-
- 901 - Programming with NetWare Client APIs. The price for this three-day
- course is $1095 per person.
-
- January 8-10 Orlando, FL
-
- 920 - Programming with Network Communication Services. 901 is a
- prerequisite for 920. The price for this one-day class is $295 per person.
-
- January 11 Orlando, FL
-
- 905 - Programming with Btrieve The cost to attend this three-day class is
- $895 per person.
-
- December 4-6 Orlando, FL
-
- January 8-10 Orange County, CA
-
- 907 - Xtrieve Plus The price for this two-day course is $595 per person.
-
- January 8-9 Sunnyvale, CA
-
- 910 - Programming with XQL The price for this three-day class is $895 per
- person.
-
- January 15-17 Dallas, TX
-
- Classes are currently available in the U.S. and Canada.
-
- International classes will be available in the future. To register or
- obtain information on all classes, please call (800) 233-3382.
-
- International customers interested in attending classes held in the U.S or
- Canada should call (801) 537-8850 or your local Novell office.
-
-
- New Releases: NetWare C Interface for DOS v1.2
-
- NetWare C Interface for DOS v1.2 started shipping in October. The most
- visible enhancements are newly-added C function calls that provide access
- to the Print Server services offered by NetWare 386. These new function
- calls give developers greater flexibility in specifying and maintaining
- print services on the network. Other network service functions that have
- been enhanced include the Diagnostic Services, Directory Services, File
- Services, and Miscellaneous Services groups.
-
- The documentation has been significantly improved, with the addition of
- helpful appendices and icons to indicate function call compatibility
- between 286 and 386 architectures/systems. Additionally, the C Interface
- for DOS Technical Overview now includes an example diskette which
- demonstrates call usage in programs. Source code and libraries are included
- for four C Compilers: Microsoft C v6.0 and v5.1, Borland Turbo C v2.0,
- WATCOM C v8.0 and v7.0, and Lattice C v6.05.
-
- The upgrade from v1.1 to v1.2 is available through 1-800-RED-WORD for
- domestic customers or (512) 346-8380 for international customers. Please
- direct all FAX inquiries to (512) 345-7478.
-
-
- New Releases: Network C for DOS v2.0
-
- In October, the second release of Novell■s 16-bit C compiler for DOS began
- shipping. Many new features and enhancements have been made in the new
- version. The most immediately apparent change is in the name, which now
- more accurately reflects the purpose of this product. The first release was
- named C Network Compiler v1.0. The new release is called Network C for DOS
- v2.0, indicating that the product is a full C language environment for
- writing DOS-based network applications.
-
- More tangible enhancements to v2.0 include:
-
- o WATCOM v8.0 Compiler and Tools
- o Embedded SQL, so that SQL statements can be coded directly
- o NetWare C Interface for DOS v1.2, including function calls for NetWare
- 386 services
- o Completely rewritten Network Application Tutorial with source code
- examples
- o Protected-mode compiler for writing larger programs
-
- Upgrades are available to the following:
-
- 1. Customers who own C Network Compiler v1.0. (Upgrades are free to
- anyone who purchased v1.0 between 9/17/90 and 10/17/90.)
-
- 2. Customers who own the NetWare Programmer's Workbench, which included
- the v1.0 release of the compiler kit.
-
- Both the full package and the upgrade are available by calling
- 1-800-RED-WORD for domestic customers or (512) 346-8380 for international
- customers.Please direct all FAX inquiries to (512) 345-7478.
-
-
- Fun & Facts
-
- Test your 'developing' skills with the various PROFESSIONAL DEVELOPMENT
- SERIES products you may be using by taking our F & F quiz. Have fun and
- good luck! (See page 11 for answers.)
-
- 1. (Btrieve) What is the purpose of the Btrieve data-only files?
-
-
- a) To have the ability to create indexes on the fly via Create
- Supplemental Index (operation 31).
- b) To store your data in chronological order of insertion in a Btrieve
- file.
- c) To have the ability to use your Btrieve data in a word processor.
- d) A & B only.
-
- 2. Btrieve) Which Btrieve operation can you use to access Btrieve data
- only files?
-
- a) Get operations.
- b) Step operations.
- c) Read operations.
- d) Scan operations.
-
- 3. (Xtrieve PLUS) Which text directive should be used to print a page
- number in a report?
-
- a) %page
- b) %number
- c) @page
- d) @number
-
- 4. (Xtrieve PLUS) What function should you perform (which function-key
- should you press) while recording a command file, in order to allow
- the user to make a menu selection?
-
- a) PROMPT for command input (F5)
- b) PAUSE for command input (F3)
- c) Temporarily SUSPEND execution (Alt-F9)
- d) SHOW command file text window (F9)
-
- 5. (Xtrieve PLUS) What is the default function-key to chain command files
- in Xtrieve?
-
- a) F8
- b) Shift-F7
- c) Alt-F6
- d) Ctrl-F3
-
- 6. (XQL/NetWare SQL) The latest release allows an application to intermix
- XQL Manager and Primitive calls. If an application issues an XQLCursor
- followed by an XQLCompile of "SELECT * FROM <viewname>", which of the
- following Primitive functions should NOT be used?
-
- a) xFetch
- b) xDescribe
- c) xFree
- d) xField
-
- 7. (XQL/NetWare SQL) Scalar functions (a new feature in v2.11) can be
- used in expressions at the XQLM or XQLP API level. Which of the
- following is not a valid scalar function for string manipulation?
-
- a) LENGTH
- b) REVERSE
- c) RIGHT
- d) UPPER
-
- 8. (Btrieve) On a 386 server, if you have NetWare SQL, Btrieve, and
- Brouter loaded and you want to access Btrieve files on another server
- running Btrieve, you must also load Brouter on that server.
-
- a) FALSE - The Brouter on your server will route the request directly to
- Btrieve on the other server.
- b) TRUE
-
- 9. (Btrieve) What is the earliest version of Microsoft C you can use in
- order to take advantage of Embedded SQL?
-
- a) 6.0
- b) 4.0
- c) 5.0
- d) 5.1
-
- 10. (Btrieve) When specifying an Alternate Collating Sequence on a BTRIEVE
- CREATE(14), how should the alternate sequence be specified?
-
- a) By placing the filename in the databuffer following the key
- specifications.
- b) By dumping the alternate collating file into the databuffer, following
- the key specifications.
- c) By placing the filename at the beginning of the databuffer.
-
- 11. (Btrieve) When specifying data compression,
-
- a) the record must be variable length.
- b) the record must be fixed length.
- c) the record can be fixed or variable length.
-
- 12. (Xtrieve PLUS) What is the Plus in Xtrieve PLUS?
-
- a) An Xtrieve text editor
- b) Xtrieve + patches.
- c) The Report Option.
- d) The ability to export command files as Lotus 1-2-3 worksheets.
-
- 13. (Xtrieve PLUS) Where does a FIELD/MODIFY ALL command get the
- information it needs to perform a modification?
-
- a) The /k option when starting Xtrieve.
- b) A user-defined field.
- c) The MODIFY.ALL file.
- d) Xtrieve will prompt you for the data.
-
-
- Professional Developers' Forums
-
- The Professional Developers■ Forum is an informal setting where systems
- developers can talk about important issues face-to-face with Novell
- Austin■s development/support staff and with each other. Share your ideas
- and software development expertise, discuss current issues and problems,
- and learn about the latest tools and techniques for creating NetWare
- applications.
-
- The sessions are from 8:30 a.m. until 4:30 p.m. The cost to attend is $95
- per person, which includes lunch. The forums scheduled for the next few
- months are:
-
- December 5 Toronto, ONT
- January 9 Austin, TX
- January 30 Seattle, WA
- February 13 Boston, MA
-
- For more information or to register, call 1-800-RED-WORD or (512) 346-8380.
- Reservations cancelled less than five working days prior to the scheduled
- Forum will forfeit the entire registration fee. If you need to reschedule,
- do so within five working days. You may reschedule only once.
-
-
- Helpful Hints When Calling Novell Austin
-
- If you need telephone assistance with a development problem, please call
- Developer Support at 1-800-SAY-HELP. International customers may call (512)
- 346-8380 or contact their local Novell office. Be prepared to give the
- technical support operator your Direct Connect authorization number. This
- number is required to direct your call to a software support engineer.
-
- If you have just purchased a new Professional Development Series product,
- you may register for 30 days of free telephone support. Please provide the
- serial number of your new product as well as registration information to
- the technical support operator. You must be registered before your call can
- be directed to a software support engineer.
-
- If you would like to request a patch diskette, tell the technical support
- operator the name of each product for which you need patches. International
- customers may contact their local Novell office. Patches are also available
- on NetWire.
-
- If you are calling to place an order, or for product information, please
- dial 1-800-RED-WORD. International customers may contact their local Novell
- authorized dealer or call (512) 346-8380. Novell Austin accepts MasterCard,
- Visa and American Express credit cards.
-
- Current Versions
-
- NetWare 386 3.10a
-
- NetWare 286
- SFT-II 2.15c
- Advanced 2.15c
- ELS-I 2.12
- ELS-II 2.15c
-
- NetWare System Interfaces
- C Interface - DOS 1.2
- System Calls - DOS 1.0
- OS/2 Developer's Kit 1.2d
- 386/ASM for NetWare 386 1.0
- NetWare System Interface
- Technical Overview 1.2
-
- NetWare RPC
- NetWare RPC for DOS 1.1
- NetWare RPC 386 1.1
-
- Network C Compilers
- Network C for DOS 2.0
- C Network Compiler/386 1.1
-
- XQL
- XQL for DOS 2.11
- XQL for OS/2 2.11
-
- NetWare SQL/386 (NLM) 2.11a
- NetWare SQL (VAP) 2.11
-
- Btrieve
- Btrieve for DOS 5.10a
- NetWare Btrieve (VAP) 5.10a
- NetWare Btrieve 386 (NLM) 5.10
- Btrieve for OS/2 5.10
- Btrieve for Windows 5.10
-
- Xtrieve PLUS
- Xtrieve PLUS for DOS 4.01a
- Xtrieve PLUS for OS/2 4.01
-
- Report Executive
- Report Executive
- for DOS 4.01a
- Report Executive
- for OS/2 4.01a
-
-
- FUN & FACTS ANSWERS
-
- 1. d
- 2. b
- 3. c
- 4. c
- 5. b
- 6. c
- 7. b
- 8. a
- 9. d
- 10. b
- 11. c
- 12. c
- 13. b
-
- Professional Development Series Bullets is a publication from Novell. It is
- sent free of charge to all registered Professional Development Series
- product users, all Direct Connect telephone support subscribers, and to any
- developers writing applications for the NetWare operating system. We
- welcome any comments, questions, and suggestions for improvement you might
- have about this publication.
-
-
- All computer, software, or service names mentioned in this publication are
- trademarks, servicemarks, or registered trademarks of their respective
- holders.