You are on page 1of 16

README.DOC File Release Notes for Microsoft (R) BASIC Professional Development System Version 7.

10 (C) Copyright Microsoft Corporation, 1990 Product Serial Number: 00-007-2710-00007050 This document contains release notes for version 7.10 of the Microsoft (R) BASIC Professional Development System for MS-DOS (R) and the Microsoft Operating System/2 (MS(R) OS/2). The information in this document is more up-to-date than that in the manuals. This version of BASIC contains the "BASIC Language Reference" and "Programmer's Guide" published with the previous release of the product, version 7.0. The information in those manuals is current with this release except where noted in this document. The "Getting Started" manual explains the features new to version 7.1 in Chapter 1, "New Features." Microsoft revises its languages documentation at the time of reprinting, so some of the information in this online file may already be included in your manuals. ======================================================================= Contents ======================================================================= Part ---1 2 3 Description ----------Notes and Tips Notes for "Microsoft BASIC Language Reference" Notes for "Microsoft BASIC Programmer's Guide"

======================================================================= Part 1: Notes and Tips ======================================================================= Quick Library Compatibility Between Versions -------------------------------------------Quick libraries created with version 7.1 that use the LBOUND or UBOUND functions or the ERASE statement on a dynamic array whose elements include a record containing a static array will not work with version 7.0 of QBX. Compatibility with Novell Netware ----------------------------------If you have a peripheral (such as a mouse) that uses Interrupt Request Level (IRQ) 3, and your system is part of a network using Novell (R) Netware version 2.15 or earlier, your system may hang when you load QBX, PWB, or CodeView. As a temporary solution, set your peripheral to use another interrupt. For more information, contact your Novell Netware dealer. PWB State Files / Help Under OS/2 ---------------------------------

Do not directly edit PWB state files (such as CURRENT.STS). To change editor settings in PWB, choose Editor Settings from the Options menu. For more information, see the section "Customizing the Environment" in Chapter 4 of "Getting Started." MSHELP.DLL must be located in the path set by LIBPATH in your CONFIG.SYS file in order to use Help in PWB under OS/2. NMK Utility ----------The NMK utility (NMK.COM) should not be used within PWB. To get help on NMK, type QH NMK from the command line. ILINK and BIND Utilities -----------------------Documentation for the ILINK and BIND utilities is included online for compatibility with Microsoft C. These utilities are not included with Microsoft BASIC and are not supported by BASIC. I/O within LPRINT, PRINT #, PRINT # USING, WRITE, and WRITE USING ----------------------------------------------------------------If you use any of these output statements with an argument that is, itself, an input/output statement, the output will go to the console screen rather than the expected file or device. To avoid this problem, use a variable to get input, and use that variable as the argument to the statement that will perform the output. In the following example output will always go to the screen: OPEN "Test1.dat" FOR INPUT AS #1 OPEN "Test2.dat" FOR OUTPUT as #2 PRINT #2, INPUT$(10, #1) The following rewritten example will send output to the proper place: OPEN "Test1.dat" FOR INPUT AS #1 OPEN "Test2.dat" FOR OUTPUT AS #1 TEXT$ = INPUT$(10, #1) PRINT #2, TEXT$ Output is also sent to the screen if you use an argument that is a user-defined function that also performs input/output. You must not use user-defined functions that perform I/O as arguments to any of the preceding output statements. Debugging Custom Run-Time Modules with CodeView -----------------------------------------------You can debug custom run-time modules with CodeView only in protected mode (CVP.EXE). To do this you must prepare the run-time module as follows: 1. Compile the source files using the CodeView options (/Zi or /Zd). 2. Set the LINK environment variable to include the /CO (CodeView) option. 3. Run the BUILDRTM utility to create the custom run-time module. After you run BUILDRTM, you should set the LINK environment variable back to its original setting. References to Version Numbers in Filenames ------------------------------------------

The references to the filenames for the BASIC run-time libraries and runtime modules in the "BASIC Language Reference" and "Programmer's Guide" include the 7.0 version number, e.g. BRT70ENR.LIB. Change these to include the 7.1 version number, e.g. BRT71ENR.LIB. ======================================================================= Part 2: Notes for "Microsoft BASIC Language Reference" ======================================================================= Page ---31-32 Section\Note -----------CALL (BASIC Procedures) ----------------------In version 7.1, BASIC supports the use of the BYVAL keyword in CALL, DECLARE, SUB, and FUNCTION statements for BASIC procedures. You can use BYVAL to pass parameters by value rather than by reference (the default). It is no longer necessary to enclose parameters in parentheses to emulate passing by value. For more information and an example of using BYVAL in BASIC procedures, see the online Help for the DECLARE statement (BASIC procedures). For specifics on using BYVAL with CALL, see the online Help for the CALL statement (BASIC procedures). Change the explanation of the example to state that the SUB procedure prints a message on the 24th line of the display. 37 CHAIN ----Under DOS 2.1, CHAIN will not work unless filespec$ provides a path. Also under DOS 2.1, if the run-time module is in the root directory, the root directory must be listed in the PATH environment variable. CHDIR ----Refer to the online Help for CHDIR for a more appropriate example of CHDIR and MKDIR usage. COMMAND$ -------The fifth line from the top of the page is missing a pair of parentheses. The line should read: SUB Comline (NumArgs, Args$(), MaxArgs) STATIC 68 CONST ----You cannot use ASCII 01 and 02 in string constants if you are going to compile to an executable program. The compiler (BC.EXE) uses ASCII 1 and 2 internally to represent End-of-Statement and End-of-Line, respectively. You can, however, still use 1 and 2 within the QBX environment. DATA ---You cannot use ASCII 01 and 02 in data strings if you are going to compile to an executable program.

40

61

84

See the preceding note for CONST. 88 DECLARE (BASIC Procedures) -------------------------In version 7.1, BASIC supports the use of the BYVAL keyword in CALL, DECLARE, SUB, and FUNCTION statements for BASIC procedures. See the online Help for this statement for more information. DECLARE (Non-BASIC Procedures) -----------------------------Reword the paragraph following the note to read: Be careful when using the SEG keyword or when passing parameters by near reference (no keyword), because BASIC may move variables in memory before the called routine begins execution. Anything in a CALL statement's argument list that causes memory movement may create problems. You can safely pass variables using SEG or near reference if the CALL statement's argument list contains only simple variables or arithmetic expressions. SEG cannot be used to pass arrays. 116 END --Syntax 2, END [n%], accepts a range of integers from -32,768 through 32,767, inclusive. FUNCTION -------In version 7.1, BASIC supports the use of the BYVAL keyword in CALL, DECLARE, SUB, and FUNCTION statements for BASIC procedures. See the entry for page 31 for more information. GET (File I/O) -------------The argument for record number should be "recordnumber&" since it accepts a long-integer value. GET (Graphics) -------------Screen modes 3 and 4 should be added to the table at the top of the page. Both modes use one bit per pixel per plane and have one plane. KEY (Assignment) ---------------The KEY n%, stringexpression$ syntax can also be used to create user-defined keys. Refer to the information on page 180 for specific details on how this is accomplished. The description for the KEY ON statement in the table in the middle of the page should mention that only the first five characters of the soft-key string value are displayed for function key F10. 180 KEY (Event Trapping) -------------------The correct value for the Ctrl+Alt key combination is &H0C (12 decimal) for non-extended keyboards and &H8C for extended keyboards.

93

144

147

151

177

181

Keyboard Scan Codes ------------------Add the following to the Keyboard Scan Code chart: Key --F11 F12 Code ---133 134

200

LOCK...UNLOCK ------------The paragraph after the warning incorrectly states that BASIC may generate the error "Bad record number" if you attempt to access a file that is locked. BASIC will generate only the "Permission denied" error message in this case. OPEN COM -------Under OS/2, specifying DS0 to ignore the state of the Data Set Ready (DSR) line does not work properly. In this case, you will have to either not ignore the DSR line or you will have to jumper the DSR line to an active high-signal line. Refer to serial port information that specifically pertains to your hardware, and perform any modifications at your own risk. The range for the parity argument should include the value PE. Setting parity to PE enables parity error checking.

238-239

261

PLAY (Music) -----------The remarks should note that the PLAY statement generates an "Illegal Function Call" error if you attempt to use the enharmonic notes C-, B+, E+ or F-. PRINT USING ----------The syntax for the PRINT USING statement should be as follows: PRINT USING formatstring$; expressionlist [;] The PRINT USING statement does not use print zones. You cannot replace the optional semicolon with a comma.

275

280

PUT Statement (File I/O) -----------------------The argument for record number should be "recordnumber&" since it accepts a long-integer value. The introduction to the example near the bottom of the page incorrectly states that "the following two statements write 15 bytes to file number 1:" The example actually writes 17 bytes to file number 1, since the first two bytes store the length of the string in BASIC.

333

SETMEM Function --------------The example shows using the C malloc() and free() functions to allocate and free memory. These will take the allocated memory

away from the BASIC program until the program terminates. To be able to reallocate memory using SETMEM after a C procedure, you must use halloc() and hfree(). The corrected C code for the SETMEM example is as follows: void far cfunc(bytes) int bytes; { char *halloc(); char *workspace; /* Allocate working memory using amount BASIC freed. */ workspace=halloc((unsigned) bytes, 1); /* Working space would be used here. */ /* Free memory before returning to BASIC */ hfree(workspace); } 345 SOUND ----The duration argument accepts any positive single-precision, floating-point value between 0 and 65,535, inclusive. StringAddress, StringAssign, StringLength, and StringRelease -----------------------------------------------------------Sample MASM code for these entries includes lines like the following: extrn StringAddress: proc far call StringAddress In all cases, only "far" should appear after the colon in the extrn directive. In addition, all extrn directives should appear outside of any .code or .data segment directives. For example, the extrn directives in the sample code on page 369 should appear as follows: .model medium, basic ; Use same model as BASIC.

368-375

; Define external (BASIC library) procedures. extrn StringAddress: far extrn StringLength: far .code ; Define procedure with one-word argument. ... 376 SUB --In version 7.1, BASIC supports the use of the BYVAL keyword in CALL, DECLARE, SUB, and FUNCTION statements for BASIC procedures. See the online Help for this statement for more information. WIDTH

409

----The Remarks state that the WIDTH #filenumber% form of the statement may be used with a file. This form of the statement may only be used with a device opened as a file with the OPEN statement. 425 DATESERIAL ---------Change the paragraph that begins "For each of the three arguments..." to read as follows: When converting specific dates, the ranges shown above for each of the arguments should be used. However, when using expressions to calculate date serial numbers for relative dates (e.g., a week from 10 Dec 89) each of the three arguments can be any valid integer as long as the resulting date serial number is between -53,688 and 65,380, inclusive. Date serial numbers outside this range generate the error message "Illegal function call." 506 Matrix Math Toolbox ------------------The first sentence of the Remarks for the MatSEqn FUNCTION should read: The MatSEQNtype% procedure solves a system of linear equations contained in a one-dimensional vector and in a square matrix;... The sentence beginning "The second matrix,..." should read: The second matrix is used to enter the vector constants for that system of simultaneous equations. 518 Fonts Toolbox ------------Change the first sentence in the second paragraph to read as follows: Nine font files are supplied: Courier fonts in COURA.FON, COURB.FON, and COURE.FON, Helv fonts in HELVA.FON, HELVB.FON, and HELVE.FON, and Tms Rmn fonts in TMSRA.FON, TMSRB.FON and TMSRE.FON. 523 Fonts Toolbox ------------Add the following documentation for the GTextWindow before existing documentation for GetTotalFonts: GTextWindow SUB Action Syntax Remarks Retains the logical coordinates of window boundaries. (See note below.) GTextWindow (x1, y1, x2, y2, Scrn%) The GTextWindow procedure uses the following arguments: Argument -------Description -----------

x1 y1 x2 y2 Scrn%

Integer containing the minimum X value (logical coordinate). Integer containing the minimum Y value. Integer containing the maximum X value. Integer containing the maximum Y value. Integer containing either cTRUE (used with WINDOW SCREEN statement to show window Y values increase top to bottom) or cFALSE (used with WINDOW statement to show window Y values increase bottom to top )

This procedure should be called after defining VIEW and WINDOW and prior to calling OutGText. To clear the current window, call this routine with X1=X2 or Y1=Y2. Note: The first call to OutGtext will work without calling GTextWindow, however all subsequent calls treat the coordinates as pixel coordinates of the window; therefore, to retain the logical coordinates call GTextWindow prior to calling OutGText. See Also 524 See OutGText statement for more information.

Fonts Toolbox ------------Change the last line of the LoadFont% FUNCTION section to read: l% = LoadFont%("n1/n3/n6")

549

User Interface Toolbox ---------------------Change "CommandKeySet" in the paragraph following the table to "ShortCutKeySet."

550

User Interface Toolbox ---------------------Add the following line after the COMMON SHARED statement for GloStorage: COMMON SHARED /uitools/GloWindowStack() AS INTEGER

586

User Interface Toolbox ---------------------The AttrBox SUB is incorrectly identified as being a procedure in GENERAL.BAS. Actually, AttrBox is found in UIASM.OBJ.

601

Keyboard Scan Codes and ASCII Character Codes --------------------------------------------Add the following to the table on page 601: ASCII or ASCII or ASCII or Scan ASCII or Extended Extended Extended Key Code Extended with SHIFT with CTRL with ALT --- ------- ------------ ------------ ------------ -----------Dec Hex Dec Hex Char Dec Hex Char Dec Hex Char Dec Hex Char --- --- --- --- --- ---- --- --- ---- --- --- ---- --- --- ---F11 133 85 133 85 NUL 135 87 NUL 137 89 NUL 139 8B NUL F12 134 86 134 86 NUL 136 88 NUL 138 8A NUL 140 8C NUL ---------------------------------------------------------------

606

BASIC Reserved Words -------------------Add PRESERVE to the list of BASIC reserved words. BASIC Compiler (BC) ------------------In version 7.1, the following options were added for the BASIC Compiler: /? or /Help Displays compiler syntax and options.

608-610

/FBr[filename] Generates a file containing restricted program symbol information for use with the Programmer's WorkBench Source Browser. This information file has the name specified by the filename argument. If no name is specified, it has the same name as the source file with an .SBR filename extension. The file contains information about the definitions and references to all global symbols. /FBx[filename] Generates a file containing extended program symbol information for use with the Programmer's WorkBench Source Browser. This information file has the name specified by the filename argument. If no name is specified, it has the same name as the source file with an .SBR filename extension. The file contains information about the definitions and references to all global and local symbols. The information for the /Z option applies to PWB, as well as to the M editor. 611 BUILDRTM Utility ---------------The run-time argument to BUILDRTM should not include a path or a file extension. NMAKE ----Change the description for the macrodefinitions argument to the following: An optional field that lists macro definitions for NMAKE to

620

use. Macros can also be specified in the makefile. See the "Macro Definitions" section for details. 631 Table 4.1 Run-Time Error Codes -----------------------------Add run-time error 89, "Insufficient ISAM buffers," to the table. Database needs repair --------------------Change REPAIR.EXE to ISAMRPR.EXE. Illegal Function Call --------------------This error may also occur if an error is trapped and corrected by the user between BEGINTRANS and COMMITTRANS statements. For example: ON ERROR GOTO TRAP OPEN "A:\FOO.MDB" FOR ISAM ... BEGINTRANS ... COMMITTRANS PRINT "The TRANSACTION was SUCCESSFULLY committed" ... END TRAP: IF ERL = 10 and ERR = 71 THEN INPUT "Hit any key after the DRIVE door is CLOSED...";a$ RESUME END IF This example may cause an "Illegal function call" error on the COMMITTRANS statement if the transaction is interrupted by a "Disk not ready" error. 656 Run-Time Error Message - Insufficient ISAM buffers -------------------------------------------------There are not enough buffers to handle ISAM file processing. See the section "Estimating Minimum ISAM Buffer Values" in Chapter 10 of the "Programmer's Guide" for more information. ERR code: 89 665 Run-Time Error Message - Overflow ---------------------------------In the first list item, change "40 indices" to "28 indexes." Remove the sentence that begins, "If there are 32 open tables..." This limitation is not correct and does not cause an Overflow error. See "Using Multiple Files: 'Relational' Databases" in Chapter 10 of the "Programmer's Guide" for information on open table limitations. Link error L1083 - Cannot open run file --------------------------------------This error can also be caused by a read-only .EXE file of the same name as specified for the run file. Link will not be able to overwrite the read-only file. Link error L2044 - Symbol multiply defined

639

653

684

690

-----------------------------------------This error may also appear in PWB when doing mixed-language programming with C. The error results from the C start-up code being linked in twice. To avoid the error, enter the appropriate BASIC library (for example, BRT71ENR.LIB for a program using the BASIC run-time, emulator math, near strings, and running in real mode) in the Additional libraries field of the Link Options dialog. ======================================================================= Part 3: Notes for "Microsoft BASIC Programmer's Guide" ======================================================================= Page ---41 Section/Note -----------Defining Procedures ------------------The DATA statement should be added to the list of statements and expressions not allowed within a procedure. Passing Arguments by Value -------------------------This section describes how to emulate passing parameters by value in BASIC procedures by enclosing the parameter in parentheses. With version 7.1 you can define parameters to pass by value using the BYVAL keyword in the DECLARE statement for the procedure. For information on using BYVAL in BASIC procedures, see the online Help for the DECLARE statement (BASIC procedures). Preserving Values of Local Variables with STATIC -----------------------------------------------In the first example, a "Duplicate Definition" error will occur if the procedure SubProg2 is called more than once. To avoid this, rewrite the example as follows: SUB SubProg2 STATIC Array() AS INTEGER, FirstPassFlag% IF FirstPassFlag% = 0 THEN DIM Array(-5 TO 5, 1 TO 25) AS INTEGER FirstPassFlag% = 1 END IF ... END SUB 68 The Factorial Function ---------------------In the example declaration of the Factorial# procedure, delete the STATIC keyword so the line appears as follows: FUNCTION Factorial# (N%) 224 Presentation Graphics --------------------Table 6.1 should indicate that the Presentation Graphics toolbox can only be used in real mode. AxisType

56

66

250-251

-------The table listing the elements of the AxisType structure incorrectly lists the "Labelled" element. That element should be referred to as "Labeled." The description for the TicFormat element should state that you should set TicFormat to cNormFormat to display tick mark labels in decimal format. 319 ISAM Support -----------The Note on this page indicates that ISAM is not supported under OS/2. With version 7.1 this restriction has been removed. Restrictions on Indexing -----------------------Add the following to the end of the first paragraph: The maximum number of indexes per table is 28. 344 Setting the Current Record by Position -------------------------------------Add the following just after the paragraph that begins, "The effect of any of the MOVEdest statements...": If you trap errors while using either a MOVENEXT or MOVEPREVIOUS ISAM statement, and an I/O error occurs (either 57 or 71) on an index that is not the NULL index, you must resynchronize ISAM internal pointers before using another MOVENEXT or MOVEPREVIOUS statement. Synchronization can be done using any valid SETINDEX statement, either a MOVEFIRST or MOVELAST statement, or any of the SEEKxx (SEEKEQ, SEEKGE, SEEKGT) statements. 345 A Typical ISAM Program ---------------------The command line used for invoking PROISAM for use with the BOOKLOOK program (shown halfway down the page) is stated as PROISAM /Ib:24. The efficiency of the ISAM has improved and the program can now be run in 640K conventional memory, with no expanded memory, with only 9 buffers: PROISAM /Ib:9. If you have EMS available, you need not specify the /Ib option. Starting ISAM for Use in QBX - /Ie argument ------------------------------------------The explanation for the /Ie: option for the ISAM TSR states that "...In practice, you only need to specify /Ie if your program code (or a loaded Quick library) actually manages EMS memory." Although this is true, there may be other times when you want to reserve EMS for other uses. Having many ISAM buffers improves the performance of ISAM, but during program development ISAM performance may be less important than the size of your program's source code. For example, your program may only need 10-12 ISAM buffers to prevent an "Insufficient ISAM buffers" error at run time. If you have 1.2 megabytes of EMS available, you can use the /Ie: option to minimize the EMS used by ISAM buffers, reserving the rest for program source code. For example, if your program needs about 10 buffers, you can invoke the ISAM TSR with /Ie:900. This will provide several

341

376

hundred K of EMS to be used for ISAM buffers. The rest will be reserved for QBX (and your program source code). Note that only program parts whose size is between 512 bytes and 16K are placed in EMS by QBX. You can check the sizes of your procedures and module-level code blocks by pressing F2 to see the View menu's SUBs dialog box. 380 Using ISAM with Compiled Programs --------------------------------The note labeled Important at the bottom of the page no longer applies in version 7.1 since you can specify additional options from the Make EXE dialog box when compiling within QBX. The ISAMCVT Utility ------------------Add the following sentence just before the section entitled "The Repair Utility": No EMS driver can be loaded when running ISAMCVT. 394 Repair Utility -------------Replace the paragraph that begins, "When you use the ISAMREPR utility..." with the following: The ISAMREPR utility requires an additional 32K within your database to re-create the system indexes. This adds a least 32K to the size of the database. Do not run the utility if your disk does not have this amount of space available in the current working directory. Also note that the maximum size of a database is 128 megabytes. When you run the ISAMREPR utility, adding 32K to the size of an extremely large database may cause it to exceed the maximum allowed. ISAMREPR deletes inconsistent records in tables, but does not compact after doing so. Compacting a database is described in the next section. 490-497 String-Processing Routines -------------------------Sample MASM code in this section includes lines like the following: extrn stringassign: proc far call stringassign In all cases, only "far" should appear after the colon in the extrn directive. In addition, all extrn directives should appear outside of any .CODE or .DATA segment directives. For an example, see the entry for pages 368-375 of the "BASIC Language Reference." 494 BASIC Calling MASM -----------------Change the first sentence in the paragraph following the "Important" note to read as follows: This MASM code uses the .MODEL directive which establishes compatible naming and calling conventions for BASIC, and it also uses simplified segment directives.

393

Change the third-from-last line of the example to read as follows: C$ = AddString$(A$, LEN(A$), B$, LEN(B$)) 520 Language Changes for Protected Mode ----------------------------------Table 14.1 indicates that all of the ISAM statements and functions are not supported in protected mode. With version 7.1 that restriction has been removed. Using Stub Files ---------------The third paragraph on this page states that stub files can be used to create run-time modules. This is true for all stub files except OVLDOS21.OBJ and NOEMS.OBJ, which cannot be built into run-time modules. These stub files can be linked with programs using run-time modules, however. Using BC Command Options -----------------------The first paragraph in this sections states that the slash (/) and the dash (-) can be used interchangeably to specify BC command-line options. This is true, but they cannot be intermixed. You must use either all slashes or all dashes in your command line. Add the following command options to the table: /?, /Help, /FBr, /FBx. See the entry in this document for pages 608-610 of the "BASIC Language Reference" for descriptions of these options. The description of the /Z option applies to PWB, as well as to the M editor. When using the /D option with dynamic arrays, it is possible to produce incorrect results if you pass an array element to a procedure that changes the value of the element index. For example, the following works properly when compiled with all options except /D: CALL SubProc(a(i),i) PRINT a(i), i The following performs the same operations and works properly with all compile options including /D. j=i CALL SubProc(a(i),j) PRINT a(i), j 561 Using Floating-Point Options (/FPa and /FPi) -------------------------------------------The new CURRENCY data type is not currently supported in the alternate math library. Options ------Replace /NOD with /NOE in the table at the top of the page. Valid LINK Options ------------------

539

558-560

576

589

The /PACKCODE option can be abbreviated to /PACKC, not /PAC as shown in the table. 595 Ignoring Default Libraries (/NOD:filename) -----------------------------------------Add the following to the paragraph that begins, "In general, higher-level languages..." For example, if you specify the /NOD option when linking a protect-mode BASIC program, you must explicitly specify the run-time library (BRT71xxP.LIB) and OS2.LIB in the libraries field of the LINK command line. 599 Specifying OS/2 Window Type --------------------------You cannot use the /D compiler option together with /PM:VIO. Linking Stub Files -----------------The first paragraph on this page states that you can link stub files with custom run-time modules. This is true for all stub files except OVLDOS21.OBJ and NOEMS.OBJ. These stub files can be linked with programs using run-time modules, however. Mouse, Menu, and Window Libraries -------------------------------If you rebuild toolbox Quick libraries, files should be compiled with the /Ah option (allow dynamic arrays to be greater than 64K) if you intend to use QBX with the /Ea option (Put arrays into expanded memory). Also note that Table 19.1 applies to all toolbox files, not just MOUSE.BAS, MENU.BAS, and WINDOW.BAS. 625 Loading and Viewing Quick Libraries ----------------------------------QBX now requires that the BASIC source for any Quick library be compiled using the /Fs (far string) compiler option. Consequently, QBX will not permit you to load a Quick library file that has the near string features of earlier versions of QuickBASIC. If you encounter an "Invalid Format" error when attempting to load an older Quick library file, you should recompile the files using BC with the /Fs option. You may also encounter the "Invalid Format" error if you invoke QBX with a /Ea option (put arrays into expanded memory) and have not compiled the Quick library with /D (generate debugging code) or /Ah (allow dynamic arrays of records, fixed-length strings, and numeric data to be larger than 64K). 636 Description Blocks -----------------The following information applies to the command component of description blocks: The first character after a dependency line in a description block must be a whitespace character, i.e., either a space or a tab. An error occurs if only a carriage return is used on a blank line.

611

624

663

OBJECTS Directive ----------------This section should note that you should not include the OVLDOS21.OBJ or NOEMS.OBJ stub files in the list of filenames after the OBJECTS directive.

701

Elementary Data Types - String -----------------------------You cannot use ASCII 01 and 02 in strings constants if you are going to compile to an executable program. The compiler (BC.EXE) uses ASCII 1 and 2 internally to represent End-of-Statement and End-of-Line, respectively. You can, however, still use 1 and 2 within the QBX environment. Elementary Data Types - Numeric ------------------------------A math coprocessor (80x87) handles rounding of extremely small numbers differently from the way numbers are rounded by the BASIC emulator math package. Because of this difference, some numbers that are properly displayed using a coprocessor are rounded and displayed as zero when using emulator math. The range of single-precision floating-point numbers that are properly displayed as input, using the emulator math package, is +/- 2.802597E-45. For double-precision floating-point numbers, the range is +/- 4.94065645841247D-324. In Table B.1, the description for double-precision floating point numbers should say that they are accurate to 15 digits. Also, the upper and lower ranges with or without the alternate math library should be +/-1.79769313486231D308 rather than +/-1.797693134862315D308 for regular math and +/-1.79769313486232D308 for alternate math.

702

707

Data Types in ISAM Files -----------------------In Table B.2, the description for the DOUBLE data type should list the upper and lower ranges as +/-1.79769313486231D308 rather than +/-1.797693134862315D308.

You might also like