MAI COMPANY CONFIDENTIAL FIELD INFORMATION BULLETIN SERVICE GROUP(S): MICRO,MINI,LARGE MFG: BASIC FOUR NACS TYPE(S): N114 MFG. MODEL(S): OPEN BASIC CATEGORY: SOFTWARE DESC: PROGRAMMING LANGUAGE *** TABLE OF CONTENTS AS OF 09/23/96 *** FIB 00001.Limited attribute support on some terminal emulations [ WPS08/13/91 FIB 00002.Multi-volume tape sessions not supported on release 2.0 [ WP08/13/91 FIB 00003.Printer Selection Prob using BUSI Utilities [ WPSF 735 ]....09/17/91 FIB 00004.File Corruption (ERR 14, -103) in Keyed Files [ WPSF 746 ]..12/24/91 FIB 00005.OBTT Blocking Factor Problems [WPSF 762R ].................10/06/92 FIB 00006.Incorrect Terminal Name Displayed from CONFIG [WPSF 759]....04/17/92 FIB 00007.OpenBASIC 2.1 Software Announcement [ WPSS 197 ]...........05/28/92 FIB 00008.OpenBASIC NetServer 3.0*11 for GPx40 [WPSF 765].............04/29/92 FIB 00009.OpenBASIC Version I Software Announcement [ WPSS 189 ].....05/27/92 FIB 00010.OpenBASIC 2.0 Software Announcement [ WPSS 196 ]...........05/28/92 FIB 00011.Slow Program Execution after Conversion.....................01/12/95 FIB 00012.Changing DATE from non-root login [WPSF 793]................10/05/93 FIB 00013.Defining a file in Business DATA with MAX recds=0 [WPSF 775]07/13/92 FIB 00014.dedicate_p/free_p ERRORS & Terminal Hangs [ WPSF 801 ]......10/12/92 FIB 00015.Configured ports show T999 as FID(0) on IBM AIX [ WPSF 734 10/14/92 FIB 00016.OpenBASIC on a GPx System [ WPSF 736 ].....................10/14/92 FIB 00017.OpenSPOOL Configuration Notes [ WPSF 737 ].................10/14/92 FIB 00018.Problems when using output transparency 'BO' [ WPSF 739 ]...10/15/92 FIB 00019.Installation Guide for OpenBASIC on a HP 9000/800 [ WPSF 7410/23/92 FIB 00020.Spooled 42xx printers in SCO lose 1ST line/add underlines...03/08/93 FIB 00021.Incorrect math calculations using floating point............05/07/93 FIB 00022.Error 7 - causes and workarounds............................05/07/93 FIB 00023.syntax.err in /usr/ob/bin/dedicate_p & free_p - OpenBASIC 4.08/30/93 FIB 00024.System tuning for OpenBASIC on SUN Solaris 2.x..............05/28/93 FIB 00025.Installation.instructions for SUN...........................06/10/93 FIB 00026.OpenBASIC 3.0 Software Announcement [ WPSS 198 ]...........06/10/93 FIB 00027.Solaris 2.x Non-root user cannot 'dedicate_p' or 'free_p'...07/16/93 FIB 00028.Error 62s and OpenBASIC 4.0*25 release......................08/09/93 FIB 00029.OpenBASIC NetServer 3.0*11 for GPx70, HP,SUN [WPSF 758]....10/08/93 FIB 00030.Bar Code printing problems after conversion to OpenBASIC....10/18/93 FIB 00031.Patches available for OpenBASIC 4.x.........................01/04/94 FIB 00032.SPx to OpenBASIC conversion correction......................01/31/94 FIB 00033.How to release OpenBASIC in various unix shells.............02/14/94 FIB 00034.Err 12 in OpenBASIC GUI demo................................05/11/94 FIB 00035.Shell script to kill OpenBASIC tasks .......................05/11/94 FIB 00036.Installing OpenBASIC for DOS on a Novell File Server........06/10/94 FIB 00037.OBDOS, Error 14, System Error -923 OPENing a printer on a N06/13/94 FIB 00038.OBTT, Error 13 on MPx.......................................06/17/94 FIB 00039.Error 5's may be indication of disk errors..................06/22/94 FIB 00040.Installing OpenBASIC NetServer on the GPx 70................06/30/94 FIB 00041.Unable to access OpenBASIC after full reinstall of OS/data..07/20/94 FIB 00042.OBTT 4.2 on DOS - files names are garbaged..................08/11/94 FIB 00043.OBTT on MPx - ERR 10's & 46's...............................08/11/94 FIB 00044.OpenBASIC on Novell server performance & err 18 -6 problems.08/15/94 FIB 00045.Tape read err installing OpenBASIC on RPx7000 using 8/4 MM t08/15/94 FIB 00046.Memory requirements for OpenBASIC on DOS....................08/18/94 FIB 00047.'FL' mnemonic problem on 4315s..............................08/18/94 FIB 00048.Using 'aprint' with OpenBASIC spooler.......................08/31/94 FIB 00049.Novell server problem - BASIC task killed unexpectedly - pat08/31/94 FIB 00050.dedicate_p & free_p problems in OpenBASIC 4.2...............09/09/94 FIB 00051.OpenBASIC for DOS crash information.........................11/02/94 FIB 00052.Error in BSEARCH on 4.2.....................................11/18/94 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------Table Of Contents Pg01 of 02 FIB 00053.OpenBASIC for DOS fchange problem...........................11/18/94 FIB 00054.OpenBASIC for DOS system error codes........................12/27/94 FIB 00055.TBL change in OB 5.0........................................01/05/95 FIB 00056.ERROR 31 in a CALLed program................................01/25/95 FIB 00057.Supplemental OpenBASIC release 5.1..........................04/12/95 FIB 00058.How to configure an RPx and PC to convert data using OB 5.0 04/12/95 FIB 00059.OB NETSERVER error codes....................................08/24/95 FIB 00060.err -11 trying to perform 'dedicate_p' on RPx...............08/24/95 FIB 00061.spooler files not deleted - OB spooler on AIX...............08/24/95 FIB 00062.OBTT missing in OB 5.0 Developer's Toolkit..................08/24/95 FIB 00063.upgrade from OB 3.0 requires new registration number........08/24/95 FIB 00064.apparent data loss using WRITE RETAIN in MK file............08/25/95 FIB 00065.DT4312 problems using 'window' on OB 5.0....................08/23/95 FIB 00066.OBNETSERVER hang............................................08/25/95 FIB 00067.err 12 -2, lost data printing on GPx70/80...................08/25/95 FIB 00068.error.in EBCDIC to ASCII table in OB Reference Manual.......08/26/95 FIB 00069.OpenBASIC for DOS kychk err - can't lock file...............08/26/95 FIB 00070.OpenBASIC 5.0 PS problems...................................08/26/95 FIB 00071.err 47 in BBXREF............................................08/26/95 FIB 00072.err 12 at statement 5060 in atp (arp)y - OB for DOS.........08/28/95 FIB 00073.OpenBASIC release 5.1 available - list of included fixes....09/21/95 FIB 00074.OpenBASIC 5.1 problems list.................................10/24/95 FIB 00075.OB 5.0*28 problem: process hangs printing to non-spooled pri12/22/95 FIB 00076.ERR 26 after conversion from SOLARIS to MPX.................10/24/95 FIB 00077.print jobs lost using OpenBASIC spooler on Sun system.......10/26/95 FIB 00078.script to START a program on another terminal...............11/03/95 FIB 00079.ERR 41 in Open Writer.......................................11/09/95 FIB 00080.extra FF printing with OB spooler to parallel printers on AI12/22/95 FIB 00081.ERR 41 in BSEARCH on AIX 4.x OS.............................12/22/95 FIB 00082.how to submit print job to OB spool on-hold.................11/09/95 FIB 00083.OB spooler restarts at beginning of job on timeout - AIX....11/09/95 FIB 00084.Patch release OB5B*01.65 available for CTLR-C & ESCAPE probs12/22/95 FIB 00085.OpenBASIC 5.1 patches for IQ and OpenBASIC Connection.......12/22/95 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------Table Of Contents Pg02 of 02 FIB 00001 08/13/91 *** Limited attribute support on some terminal emulations [ WPSF 729 ] *** OpenBASICTM KEVIN LIEBL 8/91 729 TYPE: Informational - Limited attribute support on some terminal emulations PURPOSE: Due to differences in how attributes are implemented in various emulations, OpenBASIC only supports background/foreground attributes on some terminals. Some terminal emulations (such as the Wyse 50) place a space before and after an attribute. Applications which have been designed to run on MAI terminals (which do NOT place a space before and after attributes) will not work properly with those terminal emulations which do insert the space. As a result, OpenBASIC does not support attributes on terminals which insert a space. Use of any attribute other than foreground/background with these terminal emulations will be ignored. The following emulations are affected by this: Wyse 50 (and compatibles including the HP 700/43) ADM 31 QVT 101 (Qume) Televideo 905/925/950 (and compatibles) NOTE: It is important to note that the HP 700/43 is affected by this issue. The HP 700/43 does not have HP emulation and therefore will normally be run in WY50 mode which uses the blank space. Customers who have applications which utilize attributes should be aware of this before purchasing this terminal. ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB001 Pg001 FIB 00002 08/13/91 *** Multi-volume tape sessions not supported on release 2.0 [ WPSF 730] *** OpenBASICTM - OBTT KEVIN LIEBL 8/91 730 TYPE: Informational - Multi-Volume tape sessions are not supported on OpenBASIC 2.0 PURPOSE: The OpenBASIC Tape Transport (OBTT) utility is used to transport existing Business BASIC applications, both program and data files, from an MAI operating system or other Business BASIC environment to OpenBASIC. Multi-Volume tape sessions are not supported on OpenBASIC release 2.0. Multi-volume tape sessions will be supported on a future release of the product. PROCEDURE: If an application requires more than one tape to backup, then the user must backup the application in multiple sessions using OBTT. OBTT requires a filelist, therefore the filelist should contain only enough files to fill a single tape. If a single file is too large to fit on one tape, the file must be split into smaller files which will fit on the tape. RELATED DOCUMENTATION: Refer to the OpenBASICTM Administration Manual, M0239A, Section 6 for more information on the OBTT Utility. ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB002 Pg001 FIB 00003 09/17/91 *** Printer Selection Problem when Printing from BUSI Utilities *** *** PRELIMINARY FIELD BULLETIN *** SUBJECT AUTHOR CODE 9 OpenBASIC Kevin J. Liebl Printing from the BUSI Utilities TYPE Problem PURPOSE This field bulletin provides a code modification to fix a problem with the OpenBASIC 2.0*19 BUSI utility print option. SYMPTOM When the print option is chosen from the BUSI utility set, the utility will display a list of configured printers. The user must choose a device from this list to output the utility results. On OpenBASIC 2.0*19, if only one printer is configured on the system, the utility will not display any printers as valid options. Therefore, the user cannot output any of the data from the utilities to a printer. This problem occurs if there is only one printer configured on the system. If more than one printer is configured, the utility works correctly. SOLUTION To correct this problem, the following code change must be made to the program: /usr/ob/lib/PRINTER.PS Old statement: 4095 IF PNUM=1 THEN GOTO 9000 New statement: 4095 IF PNUM=1 THEN PRINTER$=FNSTRIP$(PRNT$); GOTO 9000 This problem will be fixed in OpenBASIC 3.0. ORIGINATOR: Kevin Leibl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB003 Pg001 FIB 00004 12/24/91 *** File Corruption (ERR 14, -103) in Keyed Files *** FIELD BULLETIN SUBJECT AUTHOR DATE NUMBER -------------------- ----------- ------- ------ BOSS/VX & Open/BASIC Dale Jensen 8/21/91 **** File Corruption Error 14 With System Error -103 Purpose A difference in the way that BOSS/VX and Open/Basic interface with the file system can result in file corruption when certain file operations . are executed. The same file operations will not cause this file corruption to occur on other system platforms. Symptom A BASIC error 14 with system error -103 may occur during a the execution of a WRITE directive with a 'key=' option to a keyed file. The 'frepair' utility will report that the file is corrupted. Cause This problem will occur when records are written to a keyed file using the 'ind=' option to a record that had been previously removed. Each file has a Free Record Chain (FRC) that is updated each time a record is removed. The data for this FRC is in the data area of the record. Once a WRITE with an 'ind=' option is done to a record that is part of the FRC, the file becomes corrupted. Solution Application should be written so that WRITEs to a keyed file are never done using the 'ind=' unless the record had not been previously removed. In a future release, if a WRITE with an 'ind=' option is done to a record that had been removed, an error will be returned and the operation will not be performed. ORIGINATOR: Dale Jensen SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB004 Pg001 FIB 00005 MAI COMPANY CONFIDENTIAL 10/06/92 *** OBTT Blocking Factor Problems [WPSF 762R ] *** TYPE: Informational/Problem PROBLEM: On destination platform, OBTT can't read OBTT 1/2" tape. ISSUE: OBTT Blocking Factor on various platforms What OBTT does when creating an OBTT tape. OBTT writes 16K byte blocks (16384 block size) EXCEPT when, on the source platform when creating the tape, you respond "Yes" to the question "Is the destination system a SCO system?" Then it writes 512 byte blocks, which is what SCO requires. What could happen on the destination platforms: Under normal circumstances, the OBTT tape will be read without difficulty because the destination platform will be able to accommodate block sizes of varying lengths. However, in rare circumstances, the block . size may be set to a fixed value such as 512 or 1024. SCO Unix requres a 512 byte block size, which is accommodated by OBTT on the source platform based on the operator input "yes. Some systems, such as the IBM RS 6000 may have configuration parameters which allow a specific block size to be set. If for some reason the system is set to read a tape block size other than 16384 bytes, OBTT will not be able to read the tape and will issue a message "Tape is not in OBTT format, ok to initialize (Y/CR)?" PROCEDURE: If problems occur, how to fix them: This problem should not occur if the destination platform is configured properly to read block sizes of varying lengths. Most platforms will automatically read the OBTT tape block size without difficulty. However, if a problem occurs, look to see if the block size is improperly set in the system configuration. For example on an IBM RS 6000, use the 'smit' utility. Select first the. devices menu, then the tape and change/show characteristics options, and change the block size parameter to "0", which the IBM RS 6000 recognizes as a variable length tape block size. This will allow OBTT to read the tape. ORIGINATOR: Jean Keller SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB005 Pg001 FIB 00006 MAI COMPANY CONFIDENTIAL 04/17/92 *** Incorrect Terminal Name Displayed from CONFIG *** ********** Preliminary Field Bulletin ********** OpenBASIC Level 3.0 'output' Option of 'CONFIG' C.Adkins 4/14/92 ### TYPE: Problem PURPOSE: To describe a problem with the 'output' generated by the CONFIG program and provide a fix. SYMPTOM: The TERMINALS section of the CONFIG output does not correctly list the device name associated with the terminal. For example: Terminal Name: T0 Device Name: /dev 102 Terminal Type: TERM (from environment) This should read: Terminal Name: T0 Device Name: /dev/tty01 Terminal Type: TERM (from environment) SOLUTION: Log on the system as 'root', start OpenBASIC, load the program /usr/ob/bin/CONFIG, change statement 12550 as indicated below, then SAVE /usr/ob/bin/CONFIG. Original Statement 12550: LET D$=FNA$(T_DEVNMPTR); PRINT (OUTUNT,ERR=12950)LF$,BL$(1,COL1),"Terminal Name: ",PORTNAME$, BL$(1,COL2-COL1-21-LEN(PORTNAME$)),"Device Name: /dev/",; IF LEN(D$)<=12 THEN PRINT (OUTUNT,ERR=12950)D ELSE PRINT (OUTUNT,ERR=12950)D$(LEN(D$)-12) Modified Statement 12550: LET D$=FNA$(T_DEVNMPTR); PRINT (OUTUNT,ERR=12950)LF$,BL$(1,COL1),"Terminal Name: ",PORTNAME$, BL$(1,COL2-COL1-21-LEN(PORTNAME$)),"Device Name: /dev/",; IF LEN(D$)<=12 THEN PRINT (OUTUNT,ERR=12950)D$ ELSE PRINT (OUTUNT,ERR=12950)D$(LEN(D$)-12) This fix will be included in the next release of OpenBASIC. ORIGINATOR: C. Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB006 Pg001 FIB 00007 MAI COMPANY CONFIDENTIAL 05/28/92 *** OpenBASIC 2.1 Software Announcement [ WPSS 197 ] *** INTRODUCTION OpenBASIC Level 2.1 is now available for MAI GPx Series 40, IBM RS6000, and Hewlett Packard 9000 Series systems. OpenBASIC Level 2.1 does not contain any new features, but fixes selected problems reported by OpenBASIC Level 2.0 customers. This is not a mandatory update release, but is recommended for those customers having any of the problems noted in this announcement. This announcement contains general information about OpenBASIC Level 2.1. Installation and conversion procedures can be found in the OpenBASIC Level 2.0 Software Announcement #196. It is recommended that you read this document and the OpenBASIC Level 2.0 Software Announcement #196 before installing OpenBASIC Level 2.1. For information on ordering OpenBASIC Level 2.1 refer to Marketing Announcement #1098 US/C for North America, or #1098 IS/ID for International locations. TABLE OF CONTENTS 1.0 Problems Corrected in OpenBASIC Level 2.1. . . . . . . . . . . . . . . 3 2.0 Notes and Cautions. . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.0 Related Documentation. . . . . . . . . . . . . . . . . . . . . . . . . .5 1.0 Problems Corrected in OpenBASIC Level 2.1 If only one printer is configured on the system, the 'busi' utilities will not display any printers as valid output options. If more than one printer is configured on the system, the utilities work correctly. MAI terminals reset attributes after a clear-to-end-of-screen or clear-to-end-of-line. This fix will re-issue the attribute settings after these operations. Using the RELEASE command could leave the user's keyboard input in a non-standard mode if OpenBASIC was originally invoked from the Korn or C shell. (This does not happen if invoked from the Bourne shell). In this mode, input wasn't echoed and normal control keys didn't work, making it appear the terminal was hung. Pressing ESCAPE (or CTRL-C) while inputting to the INPUTE command would set the CTL variable to 92 and not generate an escape. An error 255 would be generated if an ATTR function attempted to return a file's owner name, when the owner's ID wasn't in the system password file. Such an owner ID will now be returned as 'UNKNOWN-xxx' where 'xxx' is the ID number. Converting a numeric constant in the range of 32768 to 65535 to an ASCII string (e.g. the STR function) would core dump a PSAVEd program. This was SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB007 Pg001 not a problem in normal (non-PSAVEd) programs or within arithmetic results in that range. A multiplication would incorrectly round the least significant portion of its result in extremely rare cases. This would leave the result one place less than it should have been. When using Presentation Services a BEGIN or END opened the current form file an extra time, using up internal file units and eventually causing errors in the OpenBASIC program. The following sequence caused terminal hangs or core dumps: SETFORMFILE forms may be opened but no input/output takes place ENDFORMFILE OPEN a multikey data file BEGIN or END 2.0 Notes and Cautions All Notes and Cautions listed for OpenBASIC Level 2.0 in Software Announcement #196 apply to OpenBASIC Level 2.1. Please refer to that announcement for complete details. A number of Field Bulletins have been published which refer to OpenBASIC Level 2.0. These bulletins also apply to OpenBASIC 2.1. Please refer to bulletins #728, 729, 730, 734, 735, 736, 737, 739, and 743 for complete details. If you select the "User Defaults" option from the 'busi' utility menu, and have not installed Presentation Services from the Developer's Toolkit package, you will receive an error. This occurs because the "/usr/ob/bin/util/BDEFAULTS" program executes a PREFIX statement at line 50 which includes a reference to the "/usr/ob/PS" directories. These directories are not created unless Presentation Services is installed from the Developer's Toolkit package. To workaround this problem, log on to the system as 'root, then create the directories yourself with the following commands: mkdir /usr/ob/PS mkdir /usr/ob/PS/tools chmod 777 /usr/ob/PS chmod 777 /usr/ob/PS/tools When converting Presentation Services menus to OpenBASIC the menus must be rebuilt using the "/usr/ob/PS/tools/BUILDMENU" utility program. Entering to rebuild all menus in the /usr/ob/PS/ directory does not work, no menus are found. To correct this problem modify the following statement in BUILDMENU: 0540 LET I=POS(PATH$=SETFILE$)+16,J=POS("."=SETFILE$(I))-1 The corrected statement should read: 0540 LET I=POS(PATH$=SETFILE$)+15,J=POS("."=SETFILE$(I))-1 Selecting individual menu names to rebuild works correctly with no change to the released version of BUILDMENU. 3.0 Related Documentation Marketing Announcement #1098 US/C - OpenBASIC 2.1 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB007 Pg002 Marketing Announcement #1098 IS/ID - OpenBASIC 2.1 Software Announcement # 196 - OpenBASIC 2.0 Field Bulletins 728, 729, 730, 734, 735, 736, 737, 739, and 743. The following manuals comprise the package of OpenBASIC documentation: OpenBASIC Reference Manual - Volumes I and II, M0233A OpenBASIC Quick Reference Card, M0238A OpenBASIC Administration Manual, M0239A OpenBASIC Connection Reference Manual, M0240A OpenBASIC Developer's Toolkit, M0241A MAI Business DATA(TM) User Guide (for OpenBASIC), M0242A ORIGINATOR: Chris Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB007 Pg003 FIB 00008 MAI COMPANY CONFIDENTIAL 04/29/92 *** OpenBASIC NetServer 3.0*11 Released *** ***** UPDATED 4/28/92 11:30 AM ***** ********** PRELIMINARY FIELD BULLETIN ********** OpenBASIC NetServer Release of Level 3.0*11 C.Adkins 4/28/92 ### for GPx/40 Series Platforms TYPE: Informational PURPOSE: To inform the field of the release of OpenBASIC NetServer Level 3.0*11 for GPx/40 Series platforms. Certification of OpenBASIC NetServer Level 3.0 on the GPx/40 Series platforms, which was incomplete at the time NetServer Level 3.0 was released for HP, SUN, and GPx/70 platforms, has now been completed. PROCEDURE: Installation procedures for OpenBASIC NetServer Level 3.0(*11) on a GPx/40 Series platform are documented in the OpenBASIC Level 3.0 Software Announcement and in the OpenBASIC Administration Manual. RELATED DOCUMENTATION: OpenBASIC Level 3.0 Software Announcement (198) OpenBASIC Administration Manual (M0239B) OpenBASIC NetServer Programmer's Guide (M0227A) All information on NetServer 3.0*10 contained in the documents referenced above applies to NetServer 3.0*11. OpenBASIC NetServer Level 3.0 NOTES and CAUTIONS 1. There is a maximum of eight active connections within any instance of an OpenBASIC NetServer client. An active connection is any open logical path to a remote host (established by use of an OPEN directive). Each connection can have more than one open file to the same remote host, and that still is only one active connection. If multiple remote systems are accessed within a single OpenBASIC process, each remote system is an active connection. The number of open files within an instance of OpenBASIC continues to be limited by the allowed number of open files for each instance of OpenBASIC. 2. If OpenBASIC NetServer is to be used to communicate with proprietary platforms (MPx or Advanced Series) using the OpenMAGNET Gateway, avoid the use of the new directives and options available with OpenBASIC. They will not be supported on the MPx/Advanced Series systems. 3. If OpenBASIC NetServer is to be used to communicate with proprietary platforms (MPx or Advanced Series) using the OpenMAGNET Gateway, avoid the use of larger key sizes available with OpenBASIC. Key sizes larger than 56 characters cannot be supported in mixed (proprietary/UNIX) networks. 4. On the SUN platform, an Error -101 (OpenBASIC Error 0) may be seen. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB008 Pg001 This is a problem under some circumstances of either file or record locking. A correction for the SUN operating system must be obtained to avoid this problem. The fix has been available as Patch 08 to the SUN 4.1.1 O/S.; consult your SUN representative for the correct revision level for your site. 5. The OpenBASIC NetServer server software, 'rfsd', will be installed, in the final production release of the product, in the '/usr/ob/bin/netuser' directory. Pre-production releases installed the product in the '/etc' directory. 6. The use of UNIX 'kill -9' to free a hung OpenBASIC task (whether using NetServer or not) should be avoided. This kill with signal -9 may result in corrupted files on the local host system. First try to CTRL+C out of a hung OpenBASIC task; if that does not work, use 'kill' without any signals to get rid of the task. The situations of corrupted files following a 'kill -9' cannot be avoided except by avoiding the use of 'kill -9'. 7. If the connection with a remote system is disrupted for any reason (re-boot of the remote system, etc.), and the local system has files open on that remote system, any subsequent accesses to those files will produce errors. This is to be expected; however, it will be necessary to exit OpenBASIC and then re-start the application to completely recover from that error. The recommended way to terminate any open connection is to CLOSE all files prior to the disruption of the connection. 8. Be aware that Level 3.0 of OpenBASIC NetServer will only search the remote directory if it is the primary directory within the PREFIX list. Use of a TRANS file will avoid any limitations caused by this implementation. Future releases of OpenBASIC NetServer will address expanded capabilities using PREFIX. ORIGINATOR: C. Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB008 Pg002 FIB 00009 MAI COMPANY CONFIDENTIAL 05/27/92 *** OpenBASIC Version I Software Announcement [ WPSS 189 ] *** INTRODUCTION OpenBASIC is a programming environment that is MAI's Business Basic 90 ("BB90") offered on non-MAI platforms. The first two phases include availabliity of OpenBASIC on the Hewlett-Packard 9000 series and the IBM RS/6000 series. The HP and the IBM are RISC architectures that use a UNIX-like Operating System (OS). HP-UX 7.0 is the lowest acceptable OS level on the Hewlett-Packard, and AIX 3.2 is the lowest acceptable OS level for the IBM. This document will only discuss installation procedures and differences between OpenBASIC and BB90. 1.0 OpenBASIC Installation on an HP 9000 Model 800 .........................3 1.1 Recommended Kernal Configuration ...................................3 2.0 OpenBASIC Installation on an IBM RS/6000 ...............................6 3.0 Configuring OpenBASIC ..................................................6 4.0 Spooler Differences ...................................................10 4.1 Overview ..........................................................10 4.2 OpenBASIC Spooling ................................................10 4.2.1 Summary .....................................................10 4.2.2 Design Philosophy ...........................................10 4.2.3 Printing with OpenBASIC .....................................11 4.3 BOSS/VX Spooling Features Supported by OpenBASIC ..............11 4.3.1 MAI Printer Mnemonic Processing .........................11 4.3.2 Character Translation ...................................11 4.3.3 Slave Printing ..........................................12 4.3.4 Non-spooled Printing ....................................12 4.3.5 MAI Form Characteristics ................................12 4.4 BOSS/VX Spooling Features not Supported by OpenBASIC ..........12 4.4.1 Other Important Differences .............................14 4.4.1.1 Wait Flag .......................................14 4.4.1.2 Modifying the Print Queue .......................14 4.5 OpenBASIC vs BOSS/VS Spooling Comparison Tables ...............15 5.0 Notes and Cautions ....................................................20 5.1 Notes and Cautions for the Hewlett-PAckard 9000 ...................20 5.2 Notes and Cautions for the IBM RS/6000 ............................23 1.0 OpenBASIC Installation on an HP 9000 Model 800 To install OpenBASIC on an HP system via 32-track 1/4" tape, complate the following stmxs: 1) Logon as "root" 2) mkdir /usr/ob : create an OpenBASIC subdirectory 3) chmod 755 /usr/ob : change access rights to rwxr-xr-x 4) cd /usr/ob : change directory to /usr/ob 5) tcio -iv /dev/rct/c3d0s2 | cpio -icvudm : load contents of tape to disk To install OpenBASIC via 1600 bpi 1/2" tape, replace step 5 above with the following command: SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg001 5) cpio -icvudm < /dev/rmt/0m 6) bin/ob_install The 'ob_install' program will automatically run the configure utility after OpenBASIC has been installed. Please see section 3.0 of this document for instructions on the configure utility. 1.1 RECOMMENDED KERNAL CONFIGURATION The following section will discuss the kernal parameters that may need to be adjusted for OpenBASIC. This section will assume that OpenBASIC is the primary application running on the system. If other applications are running on the system simultaneously, the configurations may need to be changed accordingly. There are two ways to reconfigure the kernal: one is through a menu driven utility called "sam" (system administration manager), and the other is with the 'uxgen' command. The 'uxgen' command involves editing a configuration data file. The "sam" utility is not supported on either the model 850 or model 855. The following is a description of parameters which users may want to modify to increase performance on the system. In the following section when the "default size" or the "size recommended by HP" is referenced, the documentation is referring to the value set in the configuration file when the computer is shipped from Hewlett-Packard. These values are found in the file '/etc/conf/gen/S800'. 1) nproc: size of process table An active OpenBASIC task, including a ghost task, will consume one entry in the process table. Opening a spooled printer through OpenBASIC spawns two processes, shell and lp, until the printer is closed. The 'system' directive wil spawn two processes, one for a shell and the other for the command. The default size recommended by HP should be sufficient unless an application depends on a lot of ghost tasks or frequent 'opens' and 'closes' of spooled printers or heavy use of system directives. The maximum imposed by the system is 1024. The 'sar' command (-v option) can be used to monitor the occupancy of process tables. In other words, if the process table is being heavily "occupied" or most of the entries in the table are full, then you may want to increase the size of 'nproc' and make the table larger. 2) ninode: size of inode table An 'open' of a unique file through OpenBASIC will consume one inode entry. An individual file 'opened' by multiple tasks concurrently will only use one inode. Start with the HP default size and add the maximum number of files, including program files, that the OpenBASIC tasks could access at one time. The maximum size is limited by available memory. Since the inode table is used as a cache, performance can be gained if the inodes for the frequently accessed files, including the directory files, remain cached in the table. The 'sar' command (-v option) cab be used to monitor the occupancy of the inode table. 3) nfile: size of file table An 'open' of a file through OpenBASIC will consume one file entry. If a . file is 'opened' by multiple OpenBASIC tasks concurrently, then each 'open' requires an additional file entry. This is different from inode table SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg002 allocation. Reopening an already 'opened' file by the same OpenBASIC task does not consume an additional file entry. To determine the value of 'nfile', it is best to start with the default size recommended by HP and add the maximum number of files opened by OpenBASIC tasks at any one time. For example, an OpenBASIC task can have a maximum of 64 channels opened and there might be a maximum of 40 OpenBASIC tasks running at any one time. Therefore, add 64*40 (ie. 2560) to the default. It is better to be generous and have extra free entries than to cut it too close, since the memory cost is low. The maximum size is limited by memory capacity. The 'sar' command (-v option) can be used to monitor the occupancy of the file table. 4) nflocks: size of record file table An 'open' of a file through OpenBASIC will maintain a record lock on the file. Reopening an already 'opened' file by the same task will not consume an additional record lock. If a file is 'opened' by multiple OpenBASIC tasks, then each 'open' will require an additional record lock. A 'read' or 'write' to an open file holds a record lock on that file to coordinate multiple file accesses. This record lock is released after the I/O is complete. An 'extract' on an open file maintains one record lock until the next I/O on the file or a 'close' releases the lock. A 'lock' of an open file maintains a lock to the file. The default size of 200 recommended by HP is TOO LOW for most OpenBASIC applications. Increase it to the size of the file table (nfile), up to 2000, which is the maximum imposed by the system. 5) bufpages: file system buffer cache These parameters control the size of the file system buffer cache. The default for 'bufpages' is 0, meaning take the default of 10% of available memory. Each 'bufpage' is 2048 bytes of memory. For disk I/O bound applications with large date files, or applications with a large number of data file accesses, increasing the buffer cache size could improve the system performance. If an application uses many OpenBASIC 'calls' and or 'runs', then a large buffer cache area could also improve performance. The 'sar' command (-b option) can be used to monitor the cache hit ratio (%rcache, %wcache). If they seem too low (for example, below 80%), then increase the 'bufpages' in 5% increments of available memory. It is important to note that increased buffer cache could cause heavy page swapping due to memory shortage and could result in decreased system performance. The 'sar' command can be used to monitor the swapping activity. It is recommended you not exceed 30% of available memory for 'bufpages'. 6) semmap, semmni, semmns, semmnu: semaphore parameters Each active ghost task consumes one semaphore set of two semaphores. When the ghost task is released, the semaphore set is returned and available for reuse. Each active ghost requires one 'semmap' entry, one 'semmni', two 'semmns' and one 'semmnu' entry. Increase the default values for those parameters appropriately. Active semaphore sets can be displayed through the 'ipcs' command (-s option). 2.0 OpenBASIC INSTALLATION ON AN IBM RS/6000 To Install OpenBASIC on an IBM system, complete steps 1-6: 1) Logon as "root" 2) mkdir /usr/ob : create an OpenBASIC subdirectory 3) chmod 755 /usr/ob : change access rights to rwxr-xr-x 4) cd /usr/ob : change directory to /usr/ob SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg003 Using a 3.5 inch floppy, use the following command: 5) cpio -icvudm < /dev/rfd0 : load the contents of floppy to disk After the first floppy has completed, the system will prompt you "if you want to go on". You must type in the floppy device name. /dev/rfd0 6) bin/ob_install The ob_install program will automatically run the configure utility after OpenBASIC has been installed. Please see Section 3.0 for instructions on the configure utility. 3.0 CONFIGURING OpenBASIC The main function of the configure utility is to provide a user-friendly interface for the configuration of the OpenBASIC environment. CONFIG allows you to correlate OpenBASIC device names with the system device names and to specify the following: * terminal/printer types * input/output translation tables * optional slave printer characteristics * printer definition files (PDFs) * ghost processes in the 'bfsdevs' file CONFIG builds and modifies 'bfsdevs' and 'devices' both of which are used by the Business File System (BFS) to enable OpenBASIC devices. If you are . an experienced user, and are familiar with the formats, you can use an editor such as 'vi' to build or modify these files. To run CONFIG you must login as 'root' and be the only OpenBASIC program running on the system. To start up the program, type in the following: /usr/ob/bin/basic s=400 pgm=usr/ob/bin/CONFIG The first time through, CONFIG asks you for all of the '.dev' names to be used by this system. Enter the devices that were created at the time the system was installed. If you do not know what the terminal device names are, you can hook a terminal to the first and last port on each terminal distribution panel to determine the device range. With this information you can use the UNIX wildcard conventions to create the devices: (see below) ttyb0[0-7] You can also create all possible devices by entering tty*, lp*, and pty/*. After it is first run, CONFIG will not ask you for this information again. NOTE: You can start over by deleting the 'usr/ob/etc/bfsdevs', 'usr/ob/etc/devices' and 'usr/ob/etc/config.*' files. If you had defined as devices LP[0-2], tty0p[0-f] and pty/ttyp[0-7], this would be your initial configure display screen: ______________________________________________________________________ | OpenBASIC Configure MAI Systems Corporation MM/DD/YY | |----------------------------------------------------------------------| | /dev/name NAME TYPE /dev/name NAME TYPE /dev/name NAME TYPE | | --------- ---- ---- --------- ---- ---- --------- ---- ---- | SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg004 | [console] LP LP0 | | tty0p0 tty0p1 tty0p2 | | tty0p3 tty0p4 tty0p5 | | tty0p6 tty0p7 tty0p8 | | tty0p9 tty0pa tty0pb | | tty0pc tty0pd tty0pe | | tty0pf pty/ttyp0 pty/ttyp1 | | pty/ttyp2 pty/ttyp3 pty/ttyp4 | | pty/ttyp5 pty/ttyp6 pty/ttyp7 | | | | Number of Ghosts: 0 Spooled Printers: 0 TIME/DATE: mm/dd/yy | | | | Action: add copy remove modify display exit ghost spooler time/date:| | - - - - - - - - - | | Cursor movement: h=left i|=down k=up l=right H|L=margin J|K=page | | - - -- - - - - - - | |______________________________________________________________________| The device highlighted in foreground and enclosed in square brackets is the current entry. In the above example, 'console' is the current entry. To change the current entry, use the h, j, k, or l keys to move the current selection entry. ADD A PORT ('A' Option) This entry is made to add a device. The first prompt the process displays is: Is this a terminal or a

rinter? Press RETURN to add a terminal or press P to add a printer. CONFIG looks for the next available OpenBASIC terminal name (from 'T0' to 'T999') and displays it at line 18 on the screen, followed by the default TERM type for your environment. CONFIG then displays all of the possible terminal types . as "choices" on the lower right side of the screen. You must enter one of these valid types or press RETURN to choose the default terminal type. The terminal types are from the '/usr/ob/etc/ttymntbl' directory. If there are any translation tables in the 'ttyxlt' directory, CONFIG will display them in the lower right side and allow you to pick from them. CONFIG will allow the specification of an input xlate table (labled xin:) and/or and output xlat table (labled xout:). CONFIG now prompts for an optional slave printer with the message: Slave printer attached (Y/)? Press Y to attach a slave printer. You must select a valid PDF (Printer Definition File) and translation table for the printer. The valid PDF names and translation tables are taken from the 'ptrtbl' and 'ptrxlt' directories and are displayed in the lower right of the screen. For printer selection (non-spooled), CONFIG asks for a printer name. This is unlike the terminal names, which are automatically supplied. Each time a printer name is configured, the name of the printer chosen is deleted from the list of available printers. CONFIG then prompts you for another printer name. This name may be from 2 to 14 characters long. The possible PDFs will be displayed in the lower right corner. COPY LAST PORT'S PARAMETERS ('C' OPTION) This option will copy parameters . from the most recently added port to a new port. MODIFY A PORT'S PARAMETERS ('M' OPTION) This option is used to modify a port's parameters. DISPLAY A PORT'S PARAMETERS ('D' OPTION) This option will display the settings for the selected port. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg005 REMOVE A PORT ('R' OPTION) To remove a port, enter R at the prompt. The following message will display: "Did you mean to remove this port (yes/)?" CHANGE NUMBER OF GHOST TASKS ('G' OPTION) This option will ask you for the number of ghost tasks you desire. ADD/REMOVE/DISPLAY A SPOOLED PRINTER ('S' OPTION) This option displays a sub-menu at the bottom of the screen. ******************Spooled Printers Sub-menu ************************** Action: a(dd) r(emove) d(isplay) e(xit) This option allows you to modify the date format. The following choices are available: 0 = no change 1 = mm/dd/yy 2 = dd/mm/yy 3 = yy/mm/dd The current setting is displayed on line 16. EXIT THE PROCESS ('e' OPTION) This option lets you exit and save the changes. 4.0 SPOOLER DIFFERENCES 4.1 OVERVIEW This section reviews the current functionality provided by OpenBASIC for printing and spooling and compares it with the functionality provided by BB90 BASIC and the BOSS/VX Spooler. 4.2 OpenBASIC SPOOLING 4.2.1 SUMMARY The OpenBASIC language provides users with several special printing features including printer mnemonics, slave printing and non-spooled printing. On BOSS/VX systems, these features were handled directly by the BOSS/VX Spooler and the printer 'daemon' . process, 'upddaemon'. Support of these features on OpenBASIC has been designed to be portable across different hardware and software environments. 4.2.2 DESIGN PHILOSOPHY OpenBASIC uses the host spooler for the actual spooling and printing. MAI specific printer support, such as mnemonic processing, slave printing and non-spooled printing, is accomplished through the use interface routines provided by the UPD (Universal Printer Driver) Filter Library. These library routines are called by the BFS when writing data to a printer. The data is processed by the UPD and sent to either the host spooler, a slave printer or a non-spooled printer. Some advantages of this approach are as follows: SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg006 - System resources are spared because there will only be one spooler in operation, the host spooler. - The potential problem of one spooling system interfering with the operation of the other is eliminated. - The user has all the advantages of the host spooler plus added functionality provided by OpenBASIC facilities. - This approach makes it easy to adapt to new platforms and different spoolers. Due to the fact that we have taken the approach of using the host operating system's spooler, there are some differences from the BOSS/VX spooler: - Not all BOSS/VX Spooling features are supported by the host spooler. Please refer to the supported and non-supported features included in this document. - The administration and configuration of files for OpenBASIC Spooling has a different "look and feel" compared to BOSS/VX Spooling. 4.2.3 PRINTING WITH OpenBASIC Within the OpenBASIC environment, printing is accomplished by opening a printer and writing data to it. Outside of the OpenBASIC environment, data containing MAI printer mnemonics should be filtered using the 'updfilter' before being sent to the host spooler. 4.3 BOSS/VX SPOOLING FEATURES SUPPORTED BY OpenBASIC This section describes the spooling features that are a part of the UPD Filter Library and will be supported on OpenBASIC. 4.3.1 MAI PRINTER MNEMONIC PROCESSING OpenBASIC Spooling supports the entire set of printer mnemonics defined under BOSS/VX Spooling. However, an essential difference . must be kept in mind. When a user wishes to create an intermediate file on disk, he must filter the data through the 'updfilter' command before outputting it to the printer. On the other hand, if output is sent directly to a printer, OpenBASIC itself handles the mnemonic processing. 4.3.2 CHARACTER TRANSLATION Character translation is fully supported in OpenBASIC Spooling, with the same restrictions on intermediate disk files as mnemonics and mnemonic processing. 4.3.3 SLAVE PRINTING OpenBASIC Spooling supports slave printing, but the slave printer must be attached to the terminal on which the user is running OpenBASIC. In other words, remote slave printing (printing to a slave printer attached to another user's terminal) is not supported. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg007 4.3.4 NON-SPOOLED PRINTING OpenBASIC Spooling supports non-spooled printing. The choice of whether the printing will be spooled or non-spooled has to be made at the time the printer is configured. 4.3.5 MAI FORM CHARACTERISTICS MAI Forms Characteristics, such as cpi, lpi, page-length, page-width, and slew channels, are supported by the UPD Filter Library and can be set when using the filter program, 'updfilter' 4.4 BOSS/VX SPOOLING FEATURES NOT SUPPORTED BY OpenBASIC This section discusses those features available with BOSS/VX Spooling which will NOT be supported by OpenBASIC. These features include the following: - Slave Printers not attached to the user's terminal. - The option for raw printing is not implemented in OpenBASIC. However, this option can be specified with the 'updfilter'. Raw printing is sometimes supported by host system spoolers. - MAI Forms Characteristics cpi, lpi, page-length, page-width and slew channels as part of a form definition. The OpenBASIC application program may use mnemonics to set all of these characteristics, except for page-width. The default settings for these characteristics are: cpi 10 lpi 6 page-length 66 page-width 255 slew channels channel 1 is set to top of form - Classes, a feature that allowed print option defaults to be selected based on a "class" name. - High bit setting, a feature that set the most significant bit of every byte that was output to the printer. - Alias names, a mechanism to give an alias for a print job for status reporting purposes. - The number of initial form feeds that were to be output before printing the documents. - The time at which despooling of the job was to be scheduled. - The option to delete a file after printing. - The option to re-queue a job after printing. - Form alignment with "live" data. Form alignment with the UNIX LP Spooler is done with data specified at the time of form definition. - Hold priority, a mechanism to prevent printing of jobs that have a priority level below the current hold priority level. 4.4.1 OTHER IMPORTANT DIFFERENCES 4.4.1.1 WAIT FLAG SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg008 In the BOSS/VX BB90 environment, the user can set up a spooled printer to print lines: - Immediately after each line was entered (the 'd' setting), or - Wait until the printer was "closed" before printing the data (the WAIT mode). OpenBASIC with the UNIX LP Spooler only operates in the WAIT mode. 4.4.1.2 MODIFYING THE PRINT QUEUE Under BOSS/VX Spooling, a job can be moved from one printer to another before the job is despooled. Theoretically, this is also possible with the UNIX LP Spooler. However, one now needs to exert caution because mnemonic processing and character translation are done prior to despooling, and escape sequences that work well with one printer may not have the same meaning on the other. NOTE: There is no modify' option available. To modify a printer, remove the printer and add it back in with the changes you want to make. NOTE: It should be noted that the spooler functionality listed above is determined to a large extent by OpenBASIC's use of the UNIX Spooler. The user should become familiar with the spooling system on his UNIX system to accurately identify what features may be available. Details of functionality may vary from system to system. 4.5 OpenBASIC VS BOSS/VX SPOOLING COMPARISON TABLES OPTIONS FOR PRINTER CONFIGURATIONS Parameter BOSS/VX OpenBASIC Configure with UNIX spooler ---------------------------------------------------------------------- Conf. in single-user mode Yes Yes Conf. in multi-user mode No Yes Conf. by System administrator Yes Yes Conf. by LP administrator No Yes COMMUNICATION PARAMETERS Baud rate Yes Yes Parity Yes Yes Character length Yes Yes Number of stop bits Yes Yes IXOFF Yes Yes IXON Yes Yes IXANY Yes Yes Write timeout Yes No Read timeout Yes No CTS Yes No RTS Yes No IDENTIFICATION PARAMETERS Device name Yes Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg009 Printer model Yes Yes Printer name No Yes OTHER PARAMETERS Spooled mode Yes Yes Non-spooled mode Yes Yes Slave printer Yes Yes PDF name Yes Yes Hold priority Yes No Translation table No Yes Interface program No Yes Filter program No Yes Printer class No Yes Multiple device names No Yes List of users allowed No Yes List of users denied No Yes List of forms allowed No Yes List of forms denied No Yes List of character sets No Yes List of content-types No Yes Dial information No Yes Alert type No Yes Printer speed No Yes OPTIONS FOR SUBMITTING PRINT REQUESTS Parameter BOSS/VX OpenBASIC UNIX ---------------------------------------------------------------------- Printer name Yes Yes Yes Form name Yes No Yes Number of copies Yes No Yes Priority Yes No Yes Notify option Yes No Yes Spooled mode Yes No Yes Non-spooled mode Yes No No PDF name Yes No No Translation table Yes No No Raw mode Yes No No VFU loading Yes No No Alias name Yes No No Default class Yes No No Number of initial form feeds Yes No No Job submission time Yes No No Delete option Yes No No Re-queue option Yes No No Wait mode Yes No No High bit flag Yes No No Hold No No Yes Resume No No Yes Immediate No No Yes Copy before printing No No Yes Page list No No Yes Content type No No Yes Banner page No No Yes Title No No Yes Filebreak No No Yes Page length No No Yes Page width No No Yes Line pitch No No Yes Character pitch No No Yes Character set No No Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg010 Printer class No No Yes OPTIONS FOR MODIFYING PRINT QUEUE Parameter BOSS/VX UNIX ---------------------------------------------------------------------- Cancel Yes Yes Hold Yes Yes Resume Yes Yes Page list Yes Yes Number of copies Yes Yes Priority Yes Yes Form name Yes Yes Printer name Yes Yes Notify Yes Yes Number of initial form feeds Yes No PDF name Yes No Translation table Yes No Job submission time Yes No Delete option Yes No High bit flag Yes No Re-queue option Yes No Raw mode Yes No Wait mode Yes No Immediate No Yes Make copy before printing No Yes Content type No Yes Banner No Yes Title No Yes Filebreak No Yes Page length No Yes Page width No Yes Line pitch No Yes Character pitch No Yes Character set No Yes Printer class No Yes SELECTABLE DEFAULT PARAMETERS Parameter BOSS/VX UNIX ---------------------------------------------------------------------- Printer name Yes Yes Spooling option Yes Yes Class level defaults Yes No User level defaults Yes No Form name Yes No Number of copies Yes No Priority Yes No Notify option Yes No Delete option Yes N/A Re-queue option Yes N/A Wait mode Yes N/A Raw mode Yes N/A High bit flag Yes N/A Paper length No Yes Line pitch No Yes Character pitch No Yes Stty options No Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg011 FORM DEFINITION AND ALIGNMENT Parameter BOSS/VX UNIX ---------------------------------------------------------------------- Paper length Yes Yes Paper width Yes Yes Line pitch Yes Yes Character pitch Yes Yes Form alignment with static data Yes Yes Form alignment with live data Yes No List of printers Yes No Translation table Yes No Slew channels Yes No Hand sheet feed Yes No Initial number of form feeds Yes No List of users allowed No Yes List of users denied No Yes Alert for mounting No Yes Printwheel/character set management No Yes FAULT HANDLING Parameter BOSS/VX UNIX ---------------------------------------------------------------------- Fault alerting Yes Yes Write No Yes Mail No Yes Shell command No Yes Disable printer No Yes ACTION ON RESUMING Resume from top of current page Yes Yes Start from beginning Yes Yes 5.0 NOTES AND CAUTIONS 5.1 NOTES AND CAUTIONS FOR THE HEWLETT-PACKARD 9000 1) OpenBASIC will no longer use the 4313 mnemonic table when it can't . find the terminal type. It will print a message saying it can't find the terminal type. No errors will be generated; mnemonics sent to the terminal will be ignored. 2) If an error occurs while doing a 'VMERGE', the file is left open. The only way to get the file closed is to type END. 3) The 'intr' key (configured by 'stty') is the only key that will cause an escape in an OpenBASIC program. This is typically set to Control-C by default, and may be changed to other characters such as ESCAPE by using the UNIX STTY command. 4) When accessing 1/2" tape, the write ring must be in. This is because the 1/2" tape is being accessed directly (since R0 support is currently unavailable) and the device is open read/write, even if OPEN INPUT is used. 5) Once a spooled printer has been configured, it cannot be modified, only removed. The only way to make a change is to remove it and add it back. 6) When 'stdin' is redirected to OpenBASIC, a message saying terminal SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg012 type is unknown will be displayed. OpenBASIC will still run, but most mnemonics will be ignored. 7) For terminals without control bar keys, the default control bar sequences released in the mnemonics tables are ^G followed by the following character: CTL-I: 1 CTL-II: 2 CTL-III: 3 CTL-IV: 4 These sequences can be changed by modifying the mnemonic table file for the terminal and recompiling it with the 'makettymntbl' command. 8) The amount of locks configured in the kernal should be at least the same as the number of file opens. This is because each opening of a file in OpenBASIC uses a lock. 9) If you copy an OpenBASIC data file while it is opened and being modified, the integrity bit will be set in the destination file (causing an Error 7 when you try to open or erase the destination file). To correct this condition run 'fichk -c' on the file. This command will reset the integrity bit for the file. 10) Copying an OpenBASIC data file may cause the destination file to be larger (number of blocks used). This is because OpenBASIC data files have gaps of unallocated blocks in them. When the file is copied by UNIX, nulls are returned for the unallocated blocks, which are then written to the destination file. 11) The HP console terminal (700/92) does not support the terminal mnemonics in 'hp' mode nor are they recognized in the 'em200' mode. This terminal should be in 'em220' mode when running OpenBASIC applications. 12) The 'setport' command should be used on ports to be opened remotely or for non-spooled printers. This will eliminate problems that arise since no 'getty' process is executing on that port. 13) When using the 'kill' command to kill OpenBASIC from another terminal, do not use the '-9' option. This will cause files that are opened and or modified to lack integrity. On the next 'open' of these files, an Error 7 will be returned. To correct this condition run 'fichk -c' on the file. This command will reset the integrity bit for the file. 14) When OpenBASIC is started on a non-configured terminal, the FID(0) will be 'T999'. Since multiple OpenBASIC tasks can be started on non-configured terminals, the FID(0) of these tasks will not be unique. 15) If the 'CONFIG' utility gets an Error 41 when starting up, delete the file '/usr/ob/etc/config.devlist' and try again. It will be necessary to specify the device file name patterns again. 16) If you are signed on as 'root', and are the only user on the system, and you get an error message when you start up 'CONFIG' that says "MUST BE ROOT AND (ONLY USER)", remove the file '/usr/ob/etc/config.lock' and try again. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg013 17) When saving an OpenBASIC program file to a file that already exists, the user saving the file becomes the owner of the file. 18) Applications running on non-MAI terminals which use the output transparency ('BO') or the escape ('ES') mnemonics, can expect any . terminal that transmits mnemonics to return incorrect data. This is because an in-memory image of the screen is kept by OpenBASIC, which is used for the terminal transmit mnemonics. When the 'BO' or 'ES' mnemonics are used, the in-memory image will get out of sync with the screen image. This will also occur if a system command is used which runs a program that changes the screen, since the in-memory image will not get updated with the output data. 19) When specifying files for inclusion in an 'OBTT' file list for later processing, entering the name of two directories, one after the other, will cause incorrect results. To correct, add a 'CLOSE(9);' to the beginning of lines 5503 and 5505 so that they read: 5503 CLOSE (9); OPEN INPUT (9,ERR=5507) 5505 CLOSE (9); OPEN (9,ERR=5507) 20) 'OBTT' doesn't work with program files on an MPX. To correct, change line 2250 from: 2250 IF OTHER=1 THEN OPEN. to the following: 2250 IF OTHER=1 OR OS$="VS" THEN OPEN. 5.2 NOTES AND CAUTIONS FOR THE IBM RS/6000 1) OpenBASIC will no longer use the 4313 mnemonic table when it can't find the terminal type. It will print a message saying it can't find. the terminal type. No errors will be generated; mnemonics sent to the terminal will be ignored. 2). If an error occurs while doing a 'VMERGE', the file is left open. The only way to get the file closed is to type end. 3) The 'intr' key (configured by 'stty') is the only key that will cause an escape in an OpenBASIC program. This is typically set to CONTROL-C by default, and may be changed to other characters such as ESCAPE by using the UNIX STTY command. 4) When accessing 1/2" tape, the write-ring must be in. This is because the 1/2" tape is being accessed directly (since R0 support is currently unavailable) and the device is open read/write, even if OPEN INPUT is used. 5) Once a spooled printer has been configured, it cannot be modified, only removed. The only way to make a change is to remove it and add it back. 6) When 'stdin' is redirected to OpenBASIC, a message saying terminal type is unknown will be displayed. OpenBASIC will still run, but most mnemonics will be ignored. 7) For terminals without control bar keys, the default control bar sequences released in the mnemonics tables are ^G followed by the following character: SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg014 CTL-I: 1 CTL-II: 2 CTL-III: 3 CTL-IV: 4 These sequences can be changed by modifying the mnemonic table file for the terminal and recompiling it with the 'makettymntbl' command. 8) Pseudo terminals on the IBM are dynamically created (under the name '/dev/pts#', where # is incrementing numbers) and do not exist as physical device files. This means the configure utility will not know about them, so it will not be possible to configure them through this utility. To configure these devices, the '/usr/ob/etc/bfsdevs' and '/usr/ob/etc/devices' files will have to be edited manually. Refer to the configuration utility documentation for the format of these files. Extreme care should be taken when editing these files manually to avoid problems with starting OpenBASIC. 9) If you copy an OpenBASIC data file while it is opened and being modified, the integrity bit will be set in the destination file (causing an Error 7 when you try to open or erase the destination file). To correct this situation run 'fichk -c' on the file. This command will reset the integrity bit for the file. 10) Copying an Openbasic data file may cause the destination file to be larger (number of blocks used). This is because OpenBASIC data files have gaps of unallocated blocks in them. When the file is copied by UNIX, nulls are returned for the unallocated blocks, which are then written to the destination file. 11) The 'setport' command should be used on ports to be opened remotely or for non-spooled printers. This will eliminate problems that arise since no 'getty' process is executing on that port. 12) When using the 'kill' command to kill OpenBASIC from another terminal, do not use the '-9' option. This will cause files that are opened and or modified to lack integrity. On the next 'OPEN' of these files, an Error 7 will be returned. To correct this condition run 'fichk -c' on the file. This command will reset the integrity bit for the file. 13 ) When OpenBASIC is started on a non-configured terminal, the FID(0) will be 'T999'. Since multiple OpenBASIC tasks can be started on non-configured terminals, the FID(0) of these tasks will not be unique. 14) If the 'CONFIG' utility gets an error 41 when starting up, delete the file '/usr/ob/etc/config.devlist' and try again. It will be necessary to specify the device file name patterns again. 15) If you are signed on as 'root', and are the only user on the system, and you get an error message when you start up 'CONFIG' that says "MUST BE ROOT AND (ONLY USER)", delete the file '/usr/ob/etc/config.lock' and try again. 16) When saving an OpenBASIC program file to a file that already exists, the user saving the file becomes the owner of the file. 17) Applications running on non-MAI terminals which use the output transparency ('BO') or the escape ('ES') mnemonics, can expect any . terminal that transmits mnemonics to return incorrect data. This is because an in-memory image of the screen is kept by OpenBASIC, which SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg015 is used for the terminal transmit mnemonics. When the 'BO' or 'ES' mnemonics are used, the in-memory image will get out of sync with the screen image. This will also occur if a system command is used which runs a program that changes the screen, since in-memory image will not get updated with the output data. 18) When specifying files for inclusion in an 'OBTT' file list for later processing, entering the name of two directories, one after the other, will cause incorrect results. To correct, add a 'CLOSE(9);' to the beginning of lines 5503 and 5505 so that they read: 5503 CLOSE(9); OPEN INPUT(9,ERR=5507) 5505 CLOSE(9); OPEN (9,ERR=5507) 19) 'OBTT' doesn 't work with program files on an MPx. To correct, change line 2250 from: 2250 IF OTHER=1 THEN OPEN. to the following: 2250 IF OTHER=1 OR OS$="VS" THEN OPEN. ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB009 Pg016 FIB 00010 MAI COMPANY CONFIDENTIAL 05/28/92 *** OpenBASIC 2.0 Software Announcement [ WPSS 196 ] *** INTRODUCTION OpenBASIC is a programming environment that is a superset of MAI's Business BASIC product offered on non-MAI platforms. OpenBASIC 2.0 is available on the HP 9000 Series 800, the IBM RS/6000 Series and the 386/486 SCO UNIX platforms. With the release of Version 2.0, OpenBASIC code which is generated on one platform may be loaded on another platform without conversion. Four modules are available with the OpenBASIC package. The OpenBASIC "BASE" module includes the OpenBASIC language (a superset of the BB90 language). OpenBASIC has been extended to include approximately 100 new language features such as color, pop-up windows, string arrays, read reverse, line labels, and WHILE/WEND looping. The OpenBASIC "Connection" module allows developers to exploit the advantages of selected Relational Database Management Systems ("RDBMS"). The OpenBASIC "Developer's Toolkit" module assists the developer in creating business application software. The toolkit includes Presentation Services (Form, Menu and Help management), printer definition facilities. The OpenBASIC "Writer" module provides a report writer tool for on- line and hard-copy reports. The HP and the IBM hardware platforms are RISC architectures that use a UNIX-like Operating System (OS). HP-UX 7.0 is the lowest acceptable OS level on the HP 9000, and AIX 3.0 is the lowest acceptable OS level for the IBM RS/6000. System V 3.2 is the lowest acceptable OS level for 386/486 SCO UNIX platforms. TABLE OF CONTENTS 1.0 OpenBASIC Installation . . . . . . . . . . . . . . . . . . 1 1.1 OBSSN - OpenBASIC Serial Number Utility . . . . . . . 5 1.2 Recommended Kernel Configuration for the HP 9000. . . 5 2.0 Configuring OpenBASIC. . . . . . . . . . . . . . . . . . . 9 3.0 Spooler Differences. . . . . . . . . . . . . . . . . . . . 13 3.1 Overview. . . . . . . . . . . . . . . . . . . . . . . 13 3.2 OpenBASIC Spooling. . . . . . . . . . . . . . . . . . 13 3.2.1 Summary. . . . . . . . . . . . . . . . . . . . 13 3.2.2 Design Philosophy. . . . . . . . . . . . . . . 13 3.2.3 Printing with OpenBASIC. . . . . . . . . . . . 14 3.3 BOSS/VX Spooling Features Supported by OpenBASIC. . . 14 3.3.1 MAI Printer Mnemonic Processing. . . . . . . . 14 3.3.2 Character Translation. . . . . . . . . . . . . 14 3.3.3 Slave Printing . . . . . . . . . . . . . . . . 15 3.3.4 Non-spooled Printing . . . . . . . . . . . . . 15 3.3.5 MAI Form Characteristics . . . . . . . . . . . 15 3.4 BOSS/VX Spooling Features not Supported by OpenBASIC. 15 3.4.1 Other Important Differences. . . . . . . . . . 16 3.4.1.1 Wait Flag . . . . . . . . . . . . . . 16 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg001 3.4.1.2 Modifying the Print Queue . . . . . . 17 3.4.1.3 OPTS= . . . . . . . . . . . . . . . . 17 3.5 OpenBASIC vs BOSS/VX Spooling Comparison Tables . . . 18 4.0 Peripheral Support . . . . . . . . . . . . . . . . . . . . 23 4.1 Terminal Support. . . . . . . . . . . . . . . . . . . 23 4.2 Printer Support . . . . . . . . . . . . . . . . . . . 23 5.0 OpenBASIC Program Utilities (BUSI) . . . . . . . . . . . . 25 6.0 Notes and Cautions . . . . . . . . . . . . . . . . . . . . 26 6.1 Configuration . . . . . . . . . . . . . . . . . . . . 26 6.2 Language. . . . . . . . . . . . . . . . . . . . . . . 27 6.3 Terminal Support. . . . . . . . . . . . . . . . . . . 28 6.4 Printer Support . . . . . . . . . . . . . . . . . . . 31 6.5 Utilities . . . . . . . . . . . . . . . . . . . . . . 31 6.6 Presentation Services . . . . . . . . . . . . . . . . 31 6.7 Business Data . . . . . . . . . . . . . . . . . . . . 32 6.8 PC-LINK . . . . . . . . . . . . . . . . . . . . . . . 32 7.0 Conversion . . . . . . . . . . . . . . . . . . . . . . . . 33 7.1 BB90 to OpenBASIC . . . . . . . . . . . . . . . . . . 33 7.2 BBx to OpenBASIC. . . . . . . . . . . . . . . . . . . 36 8.0 Related Documentation. . . . . . . . . . . . . . . . . . . 38 1.0 OPENBASIC INSTALLATION This section describes the OpenBASIC software installation procedure. The process consists of restoring the information from the media to a temporary sub-directory and then executing the installation script. NOTE: The following installation steps can also be used to upgrade an existing OpenBASIC installation. The installation script will overwrite the existing OpenBASIC package but will not overwrite existing code or configuration files. It should be noted however that any modifications to the OpenBASIC package should be backed up and restored after the upgrade is complete. Examples of files which users may modify are: PDFs, obinfo and the BUSI utilities. OpenBASIC is available on the following media: HP 9000 Series 800 IBM RS/6000 SCO UNIX ------------------ ----------- -------- 1/2" Tape 3.5" Floppy 1/4" Tape 1/4" Tape 3.5" Floppy DAT/DDS Tape 5.25" Floppy OpenBASIC software installation packages include: OpenBASIC Base Module OpenBASIC Developer's Toolkit OpenBASIC Business DATA OpenBASIC Connection To install OpenBASIC complete the following steps for each package. It should be noted that the installation script should be run for each package individually. Do not restore all packages and then run the installation script once. For a complete description of the installation process see the OpenBASICtm Administration Manual, M0239, Section 2 - Installation: SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg002 NOTE: Before beginning the installation process, use the UNIX 'df' command to make sure enough free space exists on both the partition containing the /usr directory and the partition for temporary space. On some systems, the /tmp directory will be on the root partition. If this is the case, /tmp will not appear in the 'df' output. Check the media for disk space requirements. An installation will temporarily require approximately twice the capacity listed on the media. This is because the data is copied first to a temporary directory on your system. During the install process, the required files are copied from the temporary directory into the proper directories. When the install is complete the temporary directory is deleted. NOTE: The OpenBASIC base module must be the first module loaded. READING THE INSTALLATION FILES FROM THE INSTALL MEDIUM 1) Logon as 'root'. 2) Load the media into the proper device and make sure it is 'On-line'. 3) Create a temporary directory to hold the files which you will read from the medium. To create the new directory, use the 'mkdir' command (i.e., 'md /tmp/install'). NOTE: Do not use the root directory "/" as your temporary directory, since this will cause any products which were installed previously to be overwritten. 4) Change to this directory (i.e., 'cd /tmp/install'). 5) Determine the correct UNIX device name for your particular device (e.g., '/dev/tape'). Refer to your system documentation or consult your. system support personnel if you are unable to determine the device name. Execute the necessary command to restore files from the medium: For all devices except the HP 9000 1/4" cartridge tape unit, the command is: cpio -iuvd < devicename For the HP 9000 1/4" cartridge tape unit, the command is: tcio -i devicename | cpio -iuvd NOTE: On the IBM RS/6000, when the end of the floppy diskette is reached, you will see the message, "can't read input". At this point, replace the current diskette with the next diskette, enter the device name and press return. You will not see this message when installing packages that contain only one product, including the OpenBASIC Base Module. For these packages, you may proceed to the next section. NOTE: On the IBM RS/6000, the device name should be a "raw" device such as '/dev/rfd0' rather than '/dev/fd0'. Using a device name other than a raw device will cause errors. EXECUTION OF THE INSTALLATION SCRIPT The installation script will move the files from the temporary directory into their appropriate locations on disk. This installation script must be run for every package installed. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg003 1) To invoke the installation script (ob_install) enter the following command: ./ob_install 2) After pressing RETURN at the copyright message, for tapes with more than one product, the following message appears: ** MAI Systems Corporation Multi-product Installation ** The following packages are available for installation: package1 package2. Select Package, ALL, or RETURN to begin: 3) Once all desired packages are selected, the system prompts: Proceed (yes/no/quit)? The default answer is 'No'. If you select 'Yes', installation begins with the first package. You may need to press RETURN after the copyright messages are displayed for the individual packages. The message "Verifying files..." appears after any copyright banners. The script ensures that the various files necessary for the installation are present in the current directory. 4) A checksum file is created for each package and compared to that taken from the install medium. If the checksum does not match, you will be allowed to continue installation, however, be warned that problems may arise. 5) There are additional prompts issued when installing the OpenBASIC Base Module. If you are installing on an Intel CPU-Based system, the installation asks you: Is this system running SCO UNIX? (Y/CR) Respond according to your system type. Enter 'Y' or 'y' only for systems running SCO UNIX. Just press RETURN for other system types. The installation process will continue by loading terminal description files appropriate for your system. If you respond to this prompt incorrectly, some of your terminals might not work and you would have to reinstall the OpenBASIC Base Module. The OpenBASIC Base Module installation will resume and prompt you for your Serial Number: Please locate your OpenBASIC Serial Number. This is an 8-digit number which can be found on your OpenBASIC registration card. Enter OpenBASIC Serial Number: When you enter your Serial Number you will be asked to verify that you entered it correctly, as in the following example. If your Serial Number is "12345678", you will be asked: Is this correct - 12345678 (Y/CR)? If you did not enter an 8 digit Serial Number you will be notified and asked to reenter it. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg004 The next prompt will ask for your company name: Enter Company (60 chars max): This name should match the company name on your OpenBASIC registration card. The name should not be greater than sixty characters in length. When you enter your company you will be asked to verify that you entered it correctly, as in the following example: WARNING : Once the name is entered it cannot be changed without reinstalling OpenBASIC. Is this correct - MAI Systems Corporation (Y/CR)? If you did not enter the company correctly, reenter it by pressing RETURN. 6) After all files have been moved into place, any necessary installation scripts for the individual packages will be run. For example, the base module will run the CONFIG utility. Please see section 2.0 of this document for instructions on the configure utility. Once the installation script for OpenBASIC has completed, the script 'clean.instl' is run. This script asks if you would like to remove all installation files in the temporary directory created in step 3. The default response is 'No'. If you wish to install additional packages from the installation tape at a later time, these files may be left in place. If you do not require additional installation for packages on this product tape, you should remove the contents of this directory now by entering 'Yes'. The script proceeds to remove all temporary installation files and directories within the directory listed. At this point, the installation process is complete. 1.1 OBSSN - OPENBASIC SERIAL NUMBER UTILITY The 'obssn' utility is used to display and update the serial number that was entered during installation. This utility will need to be run for customer service calls to verify OpenBASIC registration. The syntax is as follows: obssn -d Display serial number -u Update serial number -h Help message 1.2 RECOMMENDED KERNEL CONFIGURATION FOR THE HP 9000 The following section will discuss the kernel parameters that may need to be adjusted for OpenBASIC to run efficiently on the HP 9000. This section will assume that OpenBASIC is the primary application running on the system. If other applications are running on the system simultaneously, the configurations may need to be changed accordingly. There are two ways to reconfigure the kernel: one is through a menu driven utility called "sam" (system administration manager), and the other is with the 'uxgen' command. The 'uxgen' command involves editing a configuration data file. Hewlett Packard does not currently provide the "sam" utility on SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg005 either the model 850 or model 855. The following is a description of parameters which users may want to modify to increase performance on the system. In the following section when the "default size" or the "size recommended by HP" is referenced, the documentation is referring to the value set in the configuration file when the computer is shipped from Hewlett-Packard. These values are found in the file '/etc/conf/gen/S800'. 1) nproc: size of process table An active OpenBASIC task, including a ghost task, will consume one entry in the process table. Opening a spooled printer through OpenBASIC spawns two processes, shell and lp, until the printer is closed. The 'system' directive will spawn two processes, one for a shell and the other for the command. The default size recommended by HP should be sufficient unless an application depends on a lot of ghost tasks or frequent 'opens' and 'closes' of spooled printers or heavy use of system directives. The maximum imposed by the system is 1024. The 'sar' command (-v option) can be used to monitor the occupancy of process tables. In other words, if the process table is being heavily "occupied" or most of the entries in the table are full, then you may want to increase the size of 'nproc' and make the table larger. 2) ninode: size of inode table An 'open' of a unique file through OpenBASIC will consume one inode entry. An individual file 'opened' by multiple tasks concurrently will only use one inode. Start with the HP default size and add the maximum number of files, including program files, that the OpenBASIC tasks could access at one time. The maximum is limited by available memory. Since the inode table is used as a cache, performance can be gained if the inodes for the frequently accessed files, including the directory files, remain cached in the table. The 'sar' command (-v option) can be used to monitor the occupancy of the inode table. 3) nfile: size of file table An 'open' of a file through OpenBASIC will consume one file entry. If a file is 'opened' by multiple OpenBASIC tasks concurrently, then each 'open' requires an additional file entry. This is different from inode table allocation. Reopening an already 'opened' file by the same OpenBASIC task does not consume an additional inode entry. To determine the value of 'nfile', it is best to start with the default size recommended by HP and add the maximum number of files opened by OpenBASIC tasks at any one time. For example, an OpenBASIC task can have a maximum of 64 channels opened and there might be a maximum of 40 OpenBASIC tasks running at any one time. Therefore, add 64*40 (i.e., 2560) to the default. Since the cost of memory is low, it is better to be generous and have extra free entries than to cut it too close. The maximum size is limited by memory capacity. The sar command (-v option) can be used to monitor the occupancy of the file table. 4) nflocks: size of record lock table An 'open' of a file through OpenBASIC will maintain a record lock on the file. Reopening an already 'opened' file by the same task will not consume an additional record lock. If a file is 'opened' by multiple OpenBASIC tasks, then each 'open' will require an additional record lock. A 'read' or 'write' to an open file holds a record lock on that file to coordinate multiple file accesses. This record lock is released after the I/O is complete. An 'extract' on an open file maintains one record lock until the next I/O on the file or a 'close' releases the lock. A 'lock' SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg006 of an open file maintains a lock to the file. The default size of 200 recommended by HP is too low for most OpenBASIC applications. Increase it to the size of the file table (nfile), up to 2000, which is the maximum imposed by the system. 5) bufpages: file system buffer cache These parameters control the size of the file system buffer cache. The default for 'bufpages' is 0, meaning take the default of 10% of available memory. Each 'bufpage' is 2048 bytes of memory. For disk I/O bound applications with large data files, or applications with a large number of data file access, increasing the buffer cache size could improve the system performance. If an application uses many OpenBASIC 'calls' and/or 'runs', then a large buffer cache area could also improve performance. The 'sar' command (-b option) can be used to monitor the cache hit ratios (%rcache, %wcache). If they seem too low (for example, below 80%), then increase the 'bufpages' in 5% increments of available memory. It is important to note that increased buffer cache could cause heavy page swapping due to memory shortage and could result in decreased system performance. The 'sar' command can be used to monitor the swapping activity. It is recommended you not exceed 30% of available memory for 'bufpages'. 6) semmap, semmni, semmns, semmnu: semaphore parameters Each active ghost task consumes one semaphore set of two semaphores. When the ghost task is released, the semaphore set is returned and available for reuse. Each active ghost requires one 'semmap' entry, one 'semmni', two 'semmns' and one 'semmnu' entry. Increase the default values for those parameters appropriately. Active semaphore sets can be displayed through the 'ipcs' command (-s option). 2.0 CONFIGURING OPEN BASIC The following is a brief description of the CONFIG utility. For a more complete discussion of the utility, reference Section 3 - Configure Utility (config) of the OpenBASICtm Administration Manual M0239. The main function of the configure utility is to provide a user-friendly interface for the configuration of the OpenBASIC environment. The CONFIG utility allows you to correlate OpenBASIC device names with the system device names and to specify the following: * terminal/printer types, * input/output translation tables, * optional slave printer characteristics, * printer definition files (PDF's) and * ghost processes in the 'bfsdevs' file. NOTE: You must be ROOT to perform any of the port configuration options. Also, the CONFIG user must be the only OpenBASIC program running. CONFIG builds and modifies '/usr/ob/etc/bfsdevs' and '/usr/ob/etc/devices' both of which are used by the Business File System (BFS) to enable OpenBASIC devices. To start up the program, type in the following: usr/ob/bin/basic s=512 pgm=usr/ob/bin/CONFIG The first time through, CONFIG asks you for all of the '/dev' names to be SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg007 used by this system. Enter the devices that were created at the time the system was installed. If you do not know what the terminal device names are, you can connect a terminal to the first and last port on each terminal distribution panel to determine the device range. With this information you can use the wildcard conventions to create the devices: (see below) ttyb0[0-7] If you leave any names out, CONFIG will allow you to add to the device list the next time it is executed. If you had defined as devices LP[0-2], tty0p[0-f] and pty/ttyp[0-7], this would be your initial configure display screen: OpenBASIC Configure MAI Systems Corporation MM/DD/YY ------------------------------------------------------------------------ /dev/name NAME type /dev/name NAME type dev/name NAME type --------- ---- ---- --------- ---- ---- -------- ---- ---- >console lp lp0 lp1 lp2 tty tty0p0 tty0p1 tty0p2 tty0p3 tty0p4 tty0p5 tty0p6 tty0p7 tty0p8 tty0p9 tty0pa tty0pb tty0pc tty0pd tty0pe tty0pf pty/ttyp0 pty/ttyp1 pty/ttyp2 pty/ttyp3 pty/ttyp4 pty/ttyp5 pty/ttyp6 pty/ttyp7 Number of Ghosts: 0 Spooled Printers: 0 TIME/DATE: mm/dd/yy Action: add copy remove modify display exit ghost spooler time/date: - - - - - - - - - Cursor movement: h=left j|=down k=up l=right H|L=margin J|K=page - - - - - - - - The device highlighted in foreground and preceded by a ">" is the current entry. In the above example, 'console' is the current entry. To change the current entry, use the h, j, k, l, or arrow keys to move the current selection entry. The following sections describe the actions available from the Configure screen shown above: ADD A PORT ('A' Option) This entry is made to add a device. The first prompt the process displays is: Is this a Terminal or a

rinter? Press RETURN to add a terminal or press P to add a printer. In this case, the utility is referring to non-spooled printers. To add a spooled printer, choose the 'S' option. TERMINAL CONFIGURATION 1) CONFIG prompts for a terminal type. If F3 or CTL-III is pressed, all of the possible terminal types are displayed as "choices" in a window in the middle of the screen. You must enter one of these valid types or SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg008 press RETURN to choose the default terminal type from the environment variable TERM. NOTE: In most cases it is recommended to press RETURN and take the default terminal type from the environment variable TERM. One exception to this is when the terminal will be 'remote'. In this case there will be no TERM variable and OpenBASIC will not be able to find a default terminal type. If there are any translate tables in the 'ttyxlt' directory, CONFIG allows the specification of an input translate table (labeled xin:) and/or an output translate table (labeled xout:). The valid choices are displayed in a window in the middle of the screen. Enter a valid table name or press RETURN to skip the translate table. NOTE: If your environment contains an IXTBL or OXTBL variable, these override the configurator's specification. 2) CONFIG now prompts for an optional slave printer. Press 'Y' if you chose to attach a slave printer. You must supply the printer type and the translate table name for the printer. The printer types are taken from the 'ptrtbl' directory and the translate table names are taken from the 'ptrxlt' directory. PRINTER CONFIGURATION CONFIG asks for the BASIC printer name. This is unlike the terminal names which are automatically supplied. Each time a printer name is configured, the name of the printer chosen is deleted from the list of available printer names. The two parameters, 'Printer Type' and 'Translate Table', are selected in the same manner as the slave printers. Refer to the above section 'Terminal Configuration' for an explanation of selecting these parameters for slave printers. The remaining parameter, specifies the write timeout in seconds. This is how long the system will wait for the data to go out to the printer before returning an ERROR 0. COPY LAST PORT'S PARAMETERS ('C' Option) This option will copy parameters . from the most recently added port to a new port. MODIFY A PORT'S PARAMETERS ('M' Option) This option is used to modify a port's parameters. DISPLAY A PORT'S PARAMETERS ('D' Option) This option will display the settings for the selected port. REMOVE A PORT ('R' option) To remove a port, enter R at the prompt. The following message will display: "Did you mean to remove this port (yes/)?" CHANGE NUMBER OF GHOST TASKS ('G' Option) This option will ask you for the number of ghost tasks you desire. ADD/REMOVE/DISPLAY A SPOOLED PRINTER ('S' Option) This option allows you to attach BASIC printer names to system spooled printers. It displays the following sub-menu at the bottom of the screen: **************** Spooled Printers Sub-menu ***************** Action: a(dd) r(emove) d(isplay) e(xit) SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg009 NOTE: There is no modify option available. To modify a printer, remove it . and add it back with the parameters changed. Once you have completed modifying the configuration, choose the 'E' option (Exit the process) to exit and save your changes. CHANGE TIME/DATE FORMAT ('T' Option) This option allows you to modify the date format. The following choices are available: 0 = no change 1 = mm/dd/yy 2 = dd/mm/yy 3 = yy/mm/dd The current setting is displayed on line 16. Once the correct setting is entered, choose the 'E' option (Exit the process) to exit and save your changes. NOTE: The ability to change the "time" format is not currently supported. 3.0 SPOOLER DIFFERENCES 3.1 OVERVIEW This section reviews the current functionality provided by OpenBASIC for printing and spooling and compares it with the functionality provided by BB90 BASIC and the BOSS/VX Spooler. 3.2 OPENBASIC SPOOLING 3.2.1 SUMMARY The OpenBASIC language provides users with several special printing features including printer mnemonics, slave printing and non-spooled printing. On BOSS/VX systems, these features are handled directly by the BOSS/VX Spooler. Support of these features on OpenBASIC has been designed to be portable across different hardware and software environments. 3.2.2 DESIGN PHILOSOPHY OpenBASIC uses the host spooler for the actual spooling and printing. MAI specific printer support, such as mnemonic processing, slave printing and non-spooled printing, is accomplished through the use of interface routines provided by the Universal Printer Driver (UPD) in the Business File System (BFS). The data is processed by the UPD and sent to either the host spooler, a slave printer or a non-spooled printer. Some advantages of this approach are as follows: o System resources are spared because there will only be one spooler in operation, the host spooler. o This eliminates the potential problem of one spooling system interfering with the operation of the other. o The user has all the advantages of the host spooler plus added SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg010 functionality provided by OpenBASIC facilities. o This approach makes it easy to adapt to new platforms and different spoolers. Due to the fact that we have taken the approach of using the host operating system's spooler, there are some differences from the BOSS/VX spooler: o Not all BOSS/VX Spooling features are supported by the host spooler. Please refer to the supported and non-supported features included in this document. o The administration and configuration of files for OpenBASIC Spooling has a different "look and feel" compared to BOSS/VX Spooling. 3.2.3 PRINTING WITH OPENBASIC Within the OpenBASIC environment, printing is accomplished by opening a printer and writing data to it. Outside of the OpenBASIC environment, data containing MAI printer mnemonics should be filtered using the 'updfilter' before being sent to the host spooler. 3.3 BOSS/VX SPOOLING FEATURES SUPPORTED BY OPENBASIC This section describes the spooling features that are part of the UPD Filter Library and will be supported on OpenBASIC. 3.3.1 MAI PRINTER MNEMONIC PROCESSING OpenBASIC Spooling supports the entire set of printer mnemonics defined under BOSS/VX Spooling. However, an essential difference . must be kept in mind. When a user wishes to create an intermediate file on disk, he must filter the data through the 'updfilter' command before outputting it to the printer. On the other hand, if output is sent directly to a printer, OpenBASIC itself handles the mnemonic processing. 3.3.2 CHARACTER TRANSLATION Character translation is fully supported in OpenBASIC Spooling, with the same restrictions on intermediate disk files as mnemonics and mnemonic processing. 3.3.3 SLAVE PRINTING OpenBASIC Spooling supports slave printing, but the slave printer must be attached to the terminal on which the user is running OpenBASIC. Remote slave printing (printing to a slave printer attached to another user's terminal) is not supported. 3.3.4 NON-SPOOLED PRINTING OpenBASIC Spooling supports non-spooled printing. The choice of SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg011 whether the printing will be spooled or non- spooled has to be made at the time the printer is configured. 3.3.5 MAI FORM CHARACTERISTICS MAI Forms Characteristics, such as cpi, lpi, page- length, page-width, and slew channels, are supported when using the filter program, 'updfilter'. 3.4 BOSS/VX SPOOLING FEATURES NOT SUPPORTED BY OPENBASIC This section discusses those features available with BOSS/VX Spooling which will not be supported by OpenBASIC. These features include the following: o Slave Printers not attached to the user's terminal. o The option for raw printing is not implemented in OpenBASIC. However, this option can be specified with the 'updfilter'. Raw printing may be supported by host system spoolers. o MAI Forms Characteristics cpi, lpi, page-length, page-width and slew channels as part of a form definition. The OpenBASIC application program may use mnemonics to set all of these characteristics, except for page width. The default settings for these characteristics are: cpi 10 lpi 6 page length 66 page width 255 slew channels channel 1 is set to top of form o Classes, a feature that allowed print option defaults to be selected. based on a "class" name. o High bit setting, a feature that set the most significant bit of every byte that was output to the printer. o Alias names, a mechanism to give an alias for a print job for status reporting purposes. o The number of initial form feeds that were to be output before printing the document. o The time at which despooling of the job was to be scheduled. o The option to delete a file after printing. o The option to re-queue a job after printing. o Form alignment with "live" data. Form alignment with the UNIX LP Spooler is done with data specified at the time of form definition. o Hold priority, a mechanism to prevent printing of jobs that have a priority level below the current hold priority level. 3.4.1 OTHER IMPORTANT DIFFERENCES SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg012 3.4.1.1 WAIT FLAG In the BOSS/VX BB90 environment, the user can set up a spooled printer to print lines: o Immediately after each line is entered (the 'd' setting), or o Wait until the printer is "closed" before printing the data (the wait mode). OpenBASIC with the UNIX LP Spooler only operates in the wait mode. 3.4.1.2 MODIFYING THE PRINT QUEUE Under BOSS/VX Spooling, a job can be moved from one printer to another before the job is despooled. Theoretically, this is also possible with the host O/S (i.e. UNIX) spooler. However, one now needs to use caution because mnemonic processing and character translation are done prior to despooling, and escape sequences that work well with one printer may not have the same meaning on the other. 3.4.1.3 OPTS= The use of "OPTS=" in an OPEN statement when opening a printer is not supported. The "OPTS=" clause will be ignored. NOTE: It should be noted that the spooler functionality listed above is determined to a large extent by OpenBASIC's use of the UNIX spooler. The user should become familiar with the spooling system on their UNIX system to accurately identify what features may be available. Details of functionality may vary from system to system. 3.5 OPEN BASIC VS BOSS/VX SPOOLING COMPARISON TABLES OPTIONS FOR PRINTER CONFIGURATIONS _________________________________________________________________ PARAMETER BOSS/VX OpenBASIC Configure with UNIX spooler _________________________________________________________________ Conf. in single-user mode Yes Yes Conf. in multi-user mode No Yes Conf. by System administrator Yes Yes Conf. by LP administrator No Yes COMMUNICATION PARAMETERS Baud rate Yes Yes Parity Yes Yes Character length Yes Yes Number of stop bits Yes Yes IXOFF Yes Yes IXON Yes Yes IXANY Yes Yes Write timeout Yes No Read timeout Yes No CTS Yes No RTS Yes No IDENTIFICATION PARAMETERS Device name Yes Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg013 Printer model Yes Yes Printer name No Yes OTHER PARAMETERS Spooled mode Yes Yes Non-spooled mode Yes Yes Slave printer Yes Yes PDF name Yes Yes Hold priority Yes No Translation table No Yes Interface program No Yes Filter program No Yes Printer class No Yes Multiple device names No Yes List of users allowed No Yes List of users denied No Yes List of forms allowed No Yes List of forms denied No Yes List of character sets No Yes List of content-types No Yes Dial information No Yes Alert type No Yes Printer speed No Yes OPTIONS FOR SUBMITTING A PRINT REQUEST _________________________________________________________________ PARAMETER BOSS/VX OpenBASIC UNIX _________________________________________________________________ Printer name Yes Yes Yes Form name Yes No Yes Number of copies Yes No Yes Priority Yes No Yes Notify option Yes No Yes Spooled mode Yes No Yes Non-spooled mode Yes No No PDF name Yes No No Translation table Yes No No Raw mode Yes No No VFU loading Yes No No Alias name Yes No No Default class Yes No No Number of initial form feeds Yes No No Job submission time Yes No No Delete option Yes No No Re-queue option Yes No No Wait mode Yes No No High bit flag Yes No No Hold No No Yes Resume No No Yes Immediate No No Yes Copy before printing No No Yes Page list No No Yes Content type No No Yes Banner page No No Yes Title No No Yes Filebreak No No Yes Page length No No Yes Page width No No Yes Line pitch No No Yes Character pitch No No Yes Character set No No Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg014 Printer class No No Yes OPTIONS FOR MODIFYING PRINT QUEUE _________________________________________________________ Parameter BOSS/VX UNIX _________________________________________________________ Cancel Yes Yes Hold Yes Yes Resume Yes Yes Page list Yes Yes Number of copies Yes Yes Priority Yes Yes Form name Yes Yes Printer name Yes Yes Notify Yes Yes Number of initial form feeds Yes No PDF name Yes No Translation table Yes No Job submission time Yes No Delete option Yes No High bit flag Yes No Re-queue option Yes No Raw mode Yes No Wait mode Yes No Immediate No Yes Make copy before printing No Yes Content type No Yes Banner No Yes Title No Yes Filebreak No Yes Page length No Yes Page width No Yes Line pitch No Yes Character pitch No Yes Character set No Yes Printer class No Yes SELECTABLE PARAMETERS ____________________________________________________________ Parameter BOSS/VX UNIX ____________________________________________________________ Printer Name Yes Yes Spooling option Yes Yes Class level defaults Yes No User level defaults Yes No Form name Yes No Number of copies Yes No Priority Yes No Notify option Yes No Delete option Yes N/A Re-queue option Yes N/A Wait mode Yes N/A Raw mode Yes N/A High bit flag Yes N/A Paper length No Yes Line pitch No Yes Character pitch No Yes Stty options No Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg015 FORM DEFINITION AND ALIGNMENT ____________________________________________________________ Parameter BOSS/VX UNIX ____________________________________________________________ Paper length Yes Yes Paper width Yes Yes Line pitch Yes Yes Character pitch Yes Yes Form alignment with static data Yes Yes Form alignment with live data Yes No List of printers Yes No Translation table Yes No Slew channels Yes No Hand sheet feed Yes No Initial number of form feeds Yes No List of users allowed No Yes List of users denied No Yes Alert for mounting No Yes Printwheel/character set management No Yes FAULT HANDLING ____________________________________________________________ Parameter BOSS/VX UNIX ____________________________________________________________ Fault alerting Yes Yes Write No Yes Mail No Yes Shell command No Yes Disable printer No Yes ACTION ON RESUMING Resume from top of current page Yes Yes Start from beginning Yes Yes 4.0 PERIPHERAL SUPPORT 4.1 TERMINAL SUPPORT The following is a list of supported terminals on OpenBASIC version 2.0: MAI DT-4309 Rev G F/W, No slave printing MAI DT-4312 Slave printing with Rev K F/W MAI DT-4313 Slave printing with Rev E F/W MAI DT-4314 Slave printing with Rev L F/W MAI DT-4315 Slave printing with Rev A F/W HP 700/92 HP 700/41 HP 700/43 HP 700/44 VT220 Emulation is recommended ADM 31 DEC VT100/220 (and compatibles) IBM 3151 SUN Sparc Station Televideo 905/925/950 QTV 101 (Qume) Wyse 50 Wyse 370 (Color) SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg016 Any ANSI Standard PC-Link No file transfer PC/TERM No file transfer 4.2 PRINTER SUPPORT The following is a list of supported printers on OpenBASIC version 2.0: PT-4201 Requires protocol converter box PT-4214 PT-4215 PT-4217 PT-4218 PT-4220 Must be serial. Conv. kit avail. PT-4221 PT-4222 PT-4223 PT-4224 PT-4225/26 PT-4227/28 PT-4229 hp2564 HP High Speed System Printer hpljII HP Laserjet II/IIP hpljIII HP Laserjet III hpplot HP Plotter hpqj HP Quiet Jet hprw480 HP Rugged-Writer 480 isp Industry Standard Printer spe Special Transparent-Output Printer NOTE: All printers must be industry standard protocol. Additionally, all printers must be serial interface on the HP 9000 Serial 800 systems. HP does not currently support parallel printers. 5.0 OPENBASIC PROGRAM UTILITIES (BUSI) The OpenBASIC utilities consist of three components: o BASIC program utilities o file utilities, and o callable BASIC programs The BASIC program utilities are accessible from a main menu program called busi. To execute busi, enter /usr/ob/bin/busi at the command prompt and the program displays the selection menu for busi. The selection menu appears as follows: Basic Utilities Compare Display File Information Encrypt List & Cross Reference Merge Renumber Search & Replace User Defaults SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg017 To choose one of these utilities, enter the first letter of the desired utility. For example, the initial letter 'C' in "Compare" is highlighted. To select this utility, press 'C'. For more information on the BASIC Program Utility Set, see Section 5 of the OpenBASICtm Administration Manual, M0239. Each of the utilities from the "busi" menu may be run as stand alone programs. They are found in the "/usr/ob/bin" directory. They are named as follows: o bdefaults - Change default parameters for utilities o bcompare - Compare BASIC Programs o bdisplay - Display File Information o bencrypt - Encrypt BASIC Programs o bxref - List & Cross Reference BASIC Programs o bmerge - Merge BASIC Programs o brenumber - Renumber BASIC Programs o bsearch - Search & Replace Strings in BASIC Programs 6.0 NOTES AND CAUTIONS 6.1 CONFIGURATION 1) Make sure that the configure utility is run only when no other OpenBASIC processes are running. If not, changes to the configuration will cause ERROR 17s, or terminals that were added will still not be recognized by OpenBASIC as configured. In the event that this occurs, remove the file "/usr/ob/tmp/devtbl" when no other OpenBASIC processes are running and then restart the OpenBASIC processes. 2) The program "/usr/ob/bin/bfsshmrm" must be owned by root and have access modes of "rwsr-xr-x" in order for OpenBASIC to run properly configured. If the ownership or access modes are incorrect, changes to OpenBASIC's configuration (e.g., adding a terminal) may not take affect until the system is rebooted and may cause ERROR 17's. 3) Before configuring spooled printers to be used by OpenBASIC, these printers must have been configured first at the system level (i.e., you must be able to send print jobs to the system's spooler with the 'lp' command). Refer to the System Administration documentation for the procedure to configure the system spooler. 4) When adding a port, the first prompt is whether the port is a terminal or a printer. 'Printer' in this case refers only to a non-spooled printer. To configure a spooled printer, use the 's' option at the main command line to get into the spooled printer configuration menu. 5) Once a spooled printer has been configured, it cannot be modified, only removed. Therefore, the only way to modify it is to remove it, and then add it back again. 6) Pseudo terminals (for rlogin and telnet ports) under AIX are dynamically created (under the name /dev/pts/#, where # is an incrementing number) and do not exist as physical device files (i.e., they are not recognized when you issue an 'ls' command). This means the CONFIG utility will not be able to find them if you give the utility a search pattern, "/dev/pts/*". The only way to make configure know about them is to type each name in one at a time (i.e., /dev/pts/0, /dev/pts/1, ...). It may be easier to run the SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg018 CONFIG utility once and configure the other ports. Then, edit the file "/usr/ob/etc/config.devlist, adding the "/dev/pts/#" ports to it, and run the CONFIG utility again to configure these ports. 7) The "-c" option should no longer be used with the "cpio" command to transfer the data from the install media to the hard disk. Some of the older revisions of the installation instructions mentioned that this option should be used. 6.2 LANGUAGE 1) OpenBASIC Level 1.0 programs must be recompiled to run under Level 2.0. In order to recompile these programs, use the following procedure: 1. Use the OBTT utility provided under Level 1.0 to transfer all OpenBASIC programs to a disk file. It is not necessary to place them on tape unless there is insufficient disk space. 2. Install OpenBASIC Level 2.0 3. Run the OBTT utility provided under Level 2.0 to extract program files and recompile them. This process will assure that the program files previously run under Level 1.0 will run under OpenBASIC Level 2.0. Note that after the conversion to OpenBASIC Level 2.0, all program and data files are completely binary compatible under OpenBASIC Level 2.0 across all hardware platforms. 2) When using the 'kill' command to kill an OpenBASIC process from another terminal, do not use the "-9" option as this will cause files that are open and modified to "lack integrity". On the next 'OPEN' of these files, an ERROR 7 will be returned. To correct this condition, run 'fichk -c' on the file. This command will reset the integrity bit for the file. 3) The statement editor's insert/overwrite mode is now retained from one EDIT command to the next. This is a new feature and might be disconcerting to some users that are used to the old way that EDIT worked (i.e., it used to always begin in overwrite mode). The ^T key toggles the editor between insert mode and overwrite mode. The default editing keys are different from BB90. They are consistent with the edit keys used by INPUTE and by PS field editing. 4) The editing commands have changed. Type 'edit -help' at the BASIC prompt for a list of the edit commands. 5) If you copy an OpenBASIC data file while it is opened and being modified, the file integrity bit will be set in the destination file (causing an ERROR 7 when you try to 'OPEN' or 'ERASE' the destination file). To correct this condition, run 'fichk -c' on the file. This command will reset the integrity bit for the file. 6) Copying or restoring an OpenBASIC data file may cause the destination file to be bigger than the source file (in number of blocks used). This is because the OpenBASIC data files have "holes" in them (i.e., blocks in the middle of the file that are unallocated). When the file is read during the copy operation, a block of nulls is returned for each of these "holes", which is then written to the destination file. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg019 7) When saving an OpenBASIC program to a file that already exists, the user saving the program will become the owner of the file. 8) When a user issues a 'release' from the BASIC prompt on OpenBASIC Version 2.0 *19 on a SCO UNIX or BOSS/VX platform, the user will be released, however the BASIC process will not be killed. If enough BASIC processes are left running, the system could experience performance problems. If this occurs, a system re-boot will remove the extra processes. To keep this from reoccurring, the 'quit' command is recommended as a way of exiting from BASIC. If BASIC is in the user's profile to load as the first program, then a 'quit' will have the same result as a 'release' (i.e., log them off of the system). This problem only occurs on SCO UNIX or BOSS/VS platforms. This problem will be fixed in a future release. 6.3 TERMINAL SUPPORT 1) When OpenBASIC is started on a non-configured terminal, the FID(0) will be "T999". Since multiple OpenBASIC tasks could be started on non-configured terminals, the FID(0) of these tasks will not be unique. 2) When OpenBASIC cannot find a terminal definition file for the terminal type it is running on, no error message will be given, however, mnemonics will not be supported. Any mnemonic printed to the terminal will be sent unchanged (i.e., PRINT 'CS' will send an "CS" to the terminal). 3) The "intr" character (configured by 'stty') is the only character that will cause an escape in an OpenBASIC program. On most systems and terminals "intr" is the ^C character. If this is not the desired character, either an STBL function should be performed in the OpenBASIC program to set the interrupt character or the 'stty' command should be run to set the desired key for interrupt before starting OpenBASIC (e.g. stty intr ^C). 4) When the terminal is in protect mode, the 'TS' and 'TP' mnemonic previously framed the background characters with the start background and start foreground escape sequences for the particular terminal. When the application reprints the transmitted screen, it is done in output transparency so that the escape sequences are sent without being interpreted as mnemonic sequences. OpenBASIC frames the background characters with the mnemonic sequences for start background and start foreground (i.e., "SB" data "SF"). To prevent applications that re-print the transmitted data in output transparency from displaying the screen incorrectly, an "EO" will be placed in front of the first "SB" in the transmitted string. This will bring OpenBASIC out of output transparency so the start background, start foreground mnemonics will be interpreted correctly. The side-effect of this is that output transparency will be turned off. If the application needs to stay in output transparency after re-printing the transmitted data, it will have to re- issue the 'BO' mnemonic. 4a) For those applications that transmit the screen before putting out help text so the screen can be re-drawn again, there is an easier method now available. The 'PUSH' mnemonic can be used to save a copy of the current window (in this case the entire screen). Then the help text can be displayed. To bring back the original screen, SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg020 the POP mnemonic is used. Example: 2010 PRINT 'PUSH','CS',;REM "Save the current screen" 2020 . . "output help text" . 2090 PRINT 'POP';REM "Restore the screen" 5) Attributes that leave a blank space on the terminal's screen (i.e., Wyse 50 terminals) when they are turned 'on' or 'off' will not be supported. There will be no change to the screen's display when one. of these attributes is turned on. 6) The 'setport' command should be used on ports to be opened remotely or with non-spooled printers. This is because there is no 'getty' process running on the port to configure the port properly and unexpected results or errors will be obtained when read/writing these ports. 7) On HP systems, if a user does not have 'read' and/or 'write' access on a port and the user attempts I/O on the port, an ERROR 14 will be returned rather than the correct ERROR 18. 8) When input transparency (BI) is in effect, the function and edit keys loaded by the 'FL' and 'EL' mnemonics will not return their loaded values. Also, any control (motor-bar) keys which have been mapped to other keys (either F1-F4, or by setting them in the 'obinfo' file), will not return the hex values 1C-1F as expected from these keys. Instead, the actual characters transmitted by these keys will be returned. 9) For the DT-4309 and DT-4312 terminals, when an 'FL' or 'EL' mnemonic is issued for the first time or with the "OFF" parameter, the cursor will end up in the left hand column of the line the mnemonic was executed on. Therefore, it is best to perform these mnemonics with the cursor in the left hand column. 10) To make sure that the function keys 1-4 return CTL-I through CTL-IV respectively (before using the 'FL' mnemonic), use the "obtput" command to load the function keys on the terminal with their default values. The command to enter is: >obtput u2 0 6.4 PRINTER SUPPORT 1) Spooled and non-spooled printing cannot be done through the same OpenBASIC printer name. However, the same physical device (i.e., a printer on /dev/ttyx) can be configured twice in OpenBASIC (i.e., P1 in spooled mode and P2 in non-spooled mode). Therefore, jobs printed to P1 will be spooled and jobs printed to P2 will not be spooled but will both go to the same printer. NOTE: The above scenario should be used with caution. There is no coordination between the two devices. In the above example if a job was printing to P2 (non-spooled) and another process submitted a job to P1 (spooled), the P1 job would begin on top of the P2 job. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg021 2) When performing non-spooled printing to a printer on the system that is also a spooled printer, make sure to use the "/usr/ob/bin/dedicate_p" and "/usr/ob/bin/free_p" programs to guarantee exclusive access to the printer. 3) The program "/usr/ob/bin/updfilter", which is used to print files with mnemonics to a printer, will not work with slave printers. 6.5 UTILITIES 1) The display of filenames in the filelist utility (or when working with multiple files in the BUSI utilities) is somewhat confusing. The display shows the files for which the action is taking place. It does not show the current list of files unless you push the "DISPLAY" function key during an add operation. For example, when you are adding files, the list shows the files that are being added. When you delete files, the display shows the files that are being deleted. 6.6 PRESENTATION SERVICES 1) The PS product under OpenBASIC resides in the /usr/ob/PS directory (instead of /usr/mbf/PS). Therefore, to run the menu or form builder, set your prefix to include /usr/ob/PS and /usr/ob/PS/tools. To run the demo programs, include /usr/ob/PS and /usr/ob/PS/psdemo in your prefix list. If you have previously been using PS under BB90, you can simply copy your form, menu and help files from /usr/mbf/PS to /usr/ob/PS. Run the program 'BUILDMENU' to rebuild your menu files under OpenBASIC. No conversion is necessary for form or help files. PS file names follow these conventions: FORM FILES FS1. FS2. FS3. FS4. FS. MENU FILES MSMF. MSSF. HELP FILES MSH1. MSH2. 6.7 BUSINESS DATA 1) Before installing the Business Data package, the "Base" module must be installed. 6.8 PC-LINK 1) When running PC-LINK, the 'stty' parameter 'ixoff' should never be set. Refer to the stty(1) documentation for more information. 2) When using file transfer, OpenBASIC's terminal type must be set to SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg022 "dumb". 3) File transfer was tested with 7-bit ascii data and the following 'stty' settings on an HP 9000: speed 9600 baud; cs7 oddp hupc1 brkint -inpck icrnl onlcr tostop tab3 iexten echo -echoE echok 7.0 CONVERSION The following section provides supplemental information to assist in the conversion of existing applications from other forms of BASIC to OpenBASIC. For a complete discussion of conversion steps see section 7 "OpenBASIC Tape Transport Utility (OBTT)" of the OpenBASICtm Administration Manual. The majority of conversions will require the use of the OBTT utility. This utility is part of the Developer's Toolkit module. NOTE: It is HIGHLY recommended that files be validated on the source system. before the conversion. This step is to insure the integrity of the files prior to the conversion process. 7.1 BB90 TO OPENBASIC The following items identify differences between BB90 and OpenBASIC. Some helpful hints are also included to aid the programmer when making these changes. o When GPx is the source platform, data files may be brought over to the target UNIX platform with TAR or CPIO. This is true for all versions of OpenBASIC. The advantage is that OBTT is not required. The disadvantage is that backing up the data files may cause the destination files to be larger than the source files. See section 6.2 #6 for more information. This problem will not be experienced if OBTT is used. Program files may be transported with TAR or CPIO only with OpenBASIC version 2.0 and above. o MPx allows a '$' after functions such as PNM$, CHR$ and HTA$. The '$' is optional on MPx but not allowed on OpenBASIC. o Some of the System commands are different and must be changed. Some examples are 'SUBMIT', 'DELETE', 'START' and 'COPY'. o The 'EXECUTE' directive will not work in a called program. o The 'ERASE' and 'INITFILE' directives will not work unless the file name is in the user's primary prefix (first directory in the list) or the name is fully specified. The MPx will search your prefix list for the first instance of the file name and then erase it. Many applications still look at the FID(4,6) to get the filename. It is recommended to look at the FID(35,128) to get the full path name. You may need to delete the trailing nulls. o When starting a ghost task, you must specify a start size prior to the program name (This is a difference from MPx). o The 'PPUSH' and 'PPOP' commands are not available. Additionally, 'SYSTEM "PREFIX .XXX"' will not work. You must use the 'PREFIX' directive (This is a difference from MPx). SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg023 o All functions such as 'ASC' and 'CHR' need to be checked and changed as required. You will need to subtract 128 from the value given when converting to low order ASCII (This is a difference from MPx). o Any 'GO SUB' or 'INIT FILE' directives need to have the space removed so that they read as 'GOSUB' and 'INITFILE'. o System functions that may be different are the 'FID' and 'TCB' functions. You should replace the 'FID' with the 'ATTR' functions. Check the BB90 reference manual for differences. o 'SETDAY' and 'SETTIME' require root privileges. o 'OPEN' statements with spooler options will have the spooler options ignored. o Binary data must be converted. If a file contains both binary and text data, then transport it as text. Do the conversion on the target system by reading the data, using the 'XOR' function with $80$ for the length of the data field which contains the binary data and write the data back. See the following program as an example: This program will convert binary fields that are in a text file after a conversion. This program assumes that all files were transported as text. In the example below, a keyed file is used, however, any type can be used. 0010 BEGIN 0020 OPEN (1) "your_file" 0030 LET K$=KEY(1,END=16000) 0040 READ (1,KEY=K$)A$,B$,C$,D$ 0050 REM "The next two statements do the bit flip" 0060 REM "The first bit is flipped high to low or low 0070 REM "to high. 0080 DIM X$ (LEN(B$),$80$) 0090 LET B$=XOR(B$,X$) 0100 WRITE (1,KEY=K$)A$,B$,C$,D$ 0110 GOTO 30 o Packed data should be transferred as text data. The programs used to pack and unpack them should also be modified. The following is an example of how the programs should differ: BB90 Date packing: LET P$=CHR(NUM(D$(7,2))+1)+CHR(NUM(D$(1,2))+1)+ CHR(NUM(D$(4,2))+1) Date unpacking: LET D$=STR((ASC(P$(2,1))-1):"00")+"/"+ STR((ASC(P$(3,1))-1):"00")+"/"+STR((ASC(P$(1,1))- 1):"00") OpenBASIC Date packing: LET P$=CHR(NUM(D$(7,2))+129)+CHR(NUM(D$(1,2))+129)+ CHR(NUM(D$(4,2))+129) Date unpacking: LET D$=STR((ASC(P$(2,1))-129):"00")+"/"+ SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg024 STR((ASC(P$(3,1))129):"00")+"/"+ STR((ASC(P$(1,1))-129):"00") o File names must be 14 characters or less. o Access rights need to be changed to UNIX format. o Starting another terminal or ghost will give that process the current prefix list of the process that started it and not the user default list as was the case on MPx. o Reserved words cannot be used as a string or function name. Examples are PACK$, FIELD$, DAY$, FNTIME$, PNM$. o The 'BO' and 'EO' mnemonics may be required on some statements when hex strings are used for terminal functions such as clear screen. o Check programs for usage of fully specified path names when 'OPEN', 'RUN', 'START' or 'CALL' directives are used. Changes will be required to use the new directory name. o Protected or 'PSAVED' programs cannot be transported. You must transport the source code which may be protected again after the conversion. o If OBTT is required on the GPx, you can move the OBTT.STR file which is a string version of OBTT to the GPx and then run 'VMERGE' on it to make a BASIC program. 7.2 BBX TO OPENBASIC The following steps provide a method of converting existing BBx applications to OpenBASIC. This procedure assumes that there are no encrypted programs. Encrypted programs cannot be transferred. The level of effort required to complete steps 6 and 7 depend largely on how many BBx specific features, which are not part of OpenBASIC, were used. 1) Install OpenBASIC on the host system (see section 2.0) of this document. 2) While in BBx, 'MERGE' the OBTT string file, '/usr/ob/bin/OBTT.STR' and save it. This new code file will be a version of OBTT which you can run under BBx. 3) Run OBTT under BBx, giving it the names of all of the program and data files previously running as the BBx application. 4) When OBTT prompts for a 'TAPE DRIVE:', you may optionally enter a file name which will store all output into a single file. This may be preferred if the target system is also the source system. 5) Run OBTT under OpenBASIC, taking the data from the disk file created under step 4. OBTT will convert the programs and data into OpenBASIC format. 6) Optionally, run the '/usr/ob/bin/FLAGIT' program which will identify some (not necessarily all) areas which might need syntax changes to run properly. Note that the 'FLAGIT' program provided with OpenBASIC is designed to flag MPx/OpenBASIC discrepancies. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg025 7) Test the application and apply any fixes necessary. ADDITIONAL NOTES: Multi-Keyed files are supported in OpenBASIC, however, Multi-Keyed files have been implemented differently in BBx and OpenBASIC. Therefore, BBx Multi-Keyed files will NOT be transported to OpenBASIC. The "% COMPLETED" field in the on-line display is not shown when saving STRING files and PROGRAM files. When restoring these files, the "% COMPLETED" field is misleading because it uses the total number of records to calculate this number. For STRING and PROGRAM file types, the number of records in every file is 1. The program requires that you have the directory containing the file bbx3 in the search path variable $PATH. If not, programs will not be stored to tape. 8.0 RELATED DOCUMENTATION Marketing Announcement #1049 - OpenBASICtm The following manuals comprise the package of OpenBASIC documentation: OpenBASICtm Reference Manual, M0233 - Volumes I and II OpenBASICtm Quick Reference Card, M0238 OpenBASICtm Administration Manual, M0239 OpenBASICtm Connection Reference Manual, M0240 OpenBASICtm Developer's Toolkit, M0241 MAI Business DATAtm User Guide (for OpenBASICtm), M0242 OpenBASICtm 2.0 - HP/IBM/SCO UNIX ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB010 Pg026 FIB 00011 MAI COMPANY CONFIDENTIAL 01/12/95 *** Slow Program Execution after Conversion *** Preliminary Field Bulletin OpenBASIC "SLOWMODE" problem. Joe Melendez TYPE : Informational PURPOSE : Inform the field on programs running in "SLOWMODE" in OpenBASIC. If you upgrade a GPX system from BB90 to OpenBASIC or if you "tar" programs in BB90 format to a system that has OpenBASIC (Ex : Using the DAT tape drive that NSC is sending to the field that can be connected to the GPX 40 system which is compatible with the HP DAT drive), program files will run in what engineering calls "SLOWMODE" (programs will run slower on these systems that have OpenBASIC). To correct this problem you will have to load and save these programs in OpenBASIC. Here is a script that will allow you to LOAD programs and SAVE them : First create this script by using "vi" and add the following : for F in * ; do basic s=512 << EOD load "$F" save "$F" quit EOD done Save vi file and change (cd) to the directory that has your programs and run this script. The script will load and save programs but if it tries to load a data file it will produce an error 17 (can't load a data file) and continue with the next file until it reads all files in that directory. NOTE : Make sure you have a Backup before running the script. If you try to load a large program (start size of 512 is not enough) you will get an error but the "save" will create this file empty. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB011 Pg001 FIB 00012 MAI COMPANY CONFIDENTIAL 10/05/93 *** Changing DATE from non-root login [WPSF 793] *** TYPE: Informational PURPOSE: When changing the system date while in OpenBASIC, you may encounter the message, "date: no permission". To work around this, follow these steps. PROCEDURE: 1. Log on to the system as 'root'. 2. Copy /bin/date to /bin/newdate (or any name you prefer) # copy /bin/date /bin/newdate 3. Then change the usage rights: # chmod u+s /bin/newdate 4. Finally in OpenBASIC, use: >B$="MMDDHHMM" where MMDDHHMM is Month, Day, Hour, and Minute) >LET A$="newdate "+B$ >SYSTEM A$ OR #chmod u+s /bin/date #chown root /bin/date #chgrp root /bin/date ORIGINATOR: Sherry Watanabe SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB012 Pg001 FIB 00013 MAI COMPANY CONFIDENTIAL 07/13/92 *** Defining a file in Business DATA with MAX recds=0 [WPSF 775] *** TYPE: Informational PURPOSE: Beginning with OpenBASIC 1.0, it was possible to create a file with a 'maximum record number' of 0 (zero). This indicated to OpenBASIC (and the underlying file system) that there was to be no limit to the file size; its size would only be limited by the amount of available disk space. This capability was not extended to the Business DATA for OpenBASIC Integrated Data Dictionary (IDD) 'Define File' option. The following program change will allow the IDD to define files with a maximum record count of 0. PROCEDURE: 1. Log on to the system as 'root'. 2. Start OpenBASIC by typing the following: # /usr/ob/bin/basic s=512 3. Load the following program: >LOAD "/usr/ob/bdata/r21b/pgm/IDD4AI" 4. Statement 1220 reads: 1220 IF CTL=2 OR CTL=4 THEN GOTO 1000 ELSE IF F6=0 THEN GOTO 1210 Modify the statement to read: 1220 IF CTL=2 OR CTL=4 THEN GOTO 1000 5. Save the program by typing: SAVE "/usr/ob/bdata/r21b/pgm/IDD4AI" RELATED DOCUMENTATION: MAI Business DATA User Guide (for OpenBASIC) - M0242 OpenBASIC Administration Manual - M0239 Thanks to Patrick De Smet of MAI Belgium for this suggestion. ORIGINATOR: Chris Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB013 Pg001 FIB 00014 MAI COMPANY CONFIDENTIAL 10/12/92 *** dedicate_p/free_p ERRORS & Terminal Hangs [ WPSF 801 ] *** TYPE: Problem PURPOSE: To provide a fix for errors or apparent terminal hangs which can occur under certain circumstances when using the dedicate_p script to reserve a printer which has been configured as both spooled and non-spooled. SYMPTOM: When a dedicate_p command is issued the script either exits with an exit status 14, or the terminal appears to hang and will not respond. CAUSE: This problem occurs under the following circumstances: A port with a printer connected has been configured as both spooled and non-spooled. The spooled printer name is P1, the non-spooled printer name is P91. On another port a different printer has been configured, the spooled printer name is P17, the non-spooled printer name is P917. When attempting to reserve P91 for non-spooled printing, the following command is issued: SYSTEM "/usr/ob/bin/dedicate_p -d P91" dedicate_p is not able resolve the conflict between the P91 and P917 entries it finds in the /usr/ob/etc/bfsdevs file. SOLUTION: Log on to the system as 'root'. Make a backup copy of the dedicate_p and free_p commands: # cp /usr/ob/bin/dedicate_p /usr/ob/bin/dedicate_p.bak # cp /usr/ob/bin/free_p /usr/ob/bin/free_p.bak Use the system editor to modify BOTH the dedicate_p and free_p scripts as follows: Original lines: if test -z "$PDEVICE" then PDEVICE="P0" # default non-spooled printer. fi Modified lines: if test -z "$PDEVICE" then PDEVICE="P0" # default non-spooled printer. fi PDEVICE=$PDEVICE: Original lines: elif test $SYSTEM = "SunOS" then SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB014 Pg001 TMPNAME='( $UBIN/lpstat -v|grep $DEVNAME|sed 's. Modified lines: elif test $SYSTEM = "SunOS" then DEVNAME=$DEVNAME$ TMPNAME='( $UBIN/lpstat -v|grep $DEVNAME|sed 's. Original lines: else SYSNAME='( $UBIN/lpstat -v|grep $DEVNAME|sed 's. fi Modified lines: else DEVNAME=$DEVNAME$ SYSNAME='( $UBIN/lpstat -v|grep $DEVNAME|sed 's. fi *******END OF SCRIPT CHANGES******* This modification will be included in OpenBASIC 4.0. RELATED DOCUMENTATION: OpenBASIC Administration Manual (M0239B), Section 8. ORIGINATOR: Chris Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB014 Pg002 FIB 00015 MAI COMPANY CONFIDENTIAL 10/14/92 *** Configured ports show T999 as FID(0) on IBM AIX [ WPSF 734 ] *** TYPE: Problem PURPOSE: This field bulletin describes a problem which users may encounter while configuring terminals in OpenBASIC 2.0*19 (or below) on an IBM running. AIX 3.1.5 )or above). SYMPTOM: Once the terminal ports are configured in AIX and in OpenBASIC, a FID(0) on the ports show the terminal as T999. This is typically seen on a port which is not configured, however these ports are configured. PROCEDURE: IBM AIX versions 3.1.5 and above allow the use of "Virtual Terminals" on a single port. To facilitate this, the operating system must allow configuration of each virtual terminal. This is accomplished by appending a sequential number after each terminal device name (e.g. /dev/tty3/0, /dev/tty3/1, /dev/tty3/1, etc.). This methodology is unknown to the OpenBASIC "CONFIG" utility which will only allow the device names without the number suffixes to be configured. For example, "CONFIG" will allow the device "/dev/tty3" to be configured when the device that should be configured is "/dev/tty3/0". When OpenBASIC runs on this device the FID(0) will be assigned "T999" since the device "/dev/tty3/0" is not found in the configuration. NOTE: The virtual terminal functionality is currently available only . on the 64 port mux and therefore will not be a problem at most sites. When configuring a port on the 64 port mux, the system automatically assigns the "/0" to the device name. If a virtual terminal is configured on that port, the device name is incremented (e.g. /1). WORKAROUND: To correct this problem, a /0 should be appended to each 64 port device name which appears in the OpenBASIC configuration file "/usr/ob/etc/bfsdevs". This is done by editing the file using "vi" or any other available editor. NOTE: This problem will be corrected in OpenBASIC 3.0. ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB015 Pg001 FIB 00016 MAI COMPANY CONFIDENTIAL 10/14/92 *** OpenBASIC on a GPx System [ WPSF 736 ] *** TYPE: Informational PURPOSE: OpenBASIC is designed to operate in a generic manner accross a number of hardware and software platforms. Since it runs under BOSS/VX, AIX, HP, SCO UNIX, SunOS, and other UNIX based operating systems, its operation is oriented toward interfacing with industry-standard UNIX software. OpenBASIC contains a number of design features and extensions which allow it to interface with a wide variety of standard hardware and software. These changes make OpenBASIC operate in a slightly different manner than BB90. This document outlines the prominent differences between OpenBASIC and BB90 which may affect application conversions. PROCEDURE: Compatibility The OpenBSIC language is compatible with BB90. However, in order to function in a variety of software environments and with non-MAI peripherals, some changes in implementation have been made. These changes are generally transparent, except in the following cases: 1. HARD CODED ESCAPE SEQUENCES SHOULD NOT BE USED. OpenBASIC uses a standard software package called "curses" for its terminal I/O in order to support additional terminal features and non-MAI terminals. Since hard coded escape sequences bypass the curses package, they can cause unpredictable results. New mnemonics have been introduced to handle most cases where escape sequences were used in the past. 2. AVOID USE OF OUTPUT TRANSPARENCY ('BO'). Since output transparency also bypasses the "curses" package, it should not be used in cases where the output would change the contents of a terminal screen image. 'BO' may be safely used for other purposes, such as I/O to data collection devices. 3. DON'T RUN BB90 AND OPENBASIC AT THE SAME TIME. Since OpenBASIC and BB90 use different file and record locking mechanisms, attempts to run an application under OpenBASIC and BB90 at the same time may create data corruption. NOTE: OpenBASIC and BB90 may be run simultaneously if the applications they are running do not access any of the same files or devices. SPOOLER One aspect of making OpenBASIC truly "open" is to use industry standard software such as the standard UNIX spooler. By default, OpenBASIC uses the UNIX spooler rather than the MAI BOSS/VX spooler.. This may be acceptable in many cases. However, in cases where specific spooler functionality is required, modifications to the OpenBASIC configuration files can be made which allows OpenBASIC to interface with the BOSS/VX spooler. These steps should be undertaken by a technical/systems engineer. CAUTION: Do not run "CONFIG" after adding or changing entries in the SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB016 Pg001 "devices" file to use the BOSS/VX Spooler. CONFIG will not recognize these entries and will remove them from the configuration file. TO CHANGE AN EXISTING SPOOLER CONFIGURATION: 1. EDIT THE "DEVICES" FILE found in the /usr/ob/etc directory. This file defines the command which is invoked when an OpenBASIC printer device is opened. Printer entries in the "devices" file will look like this: LP:dest=|lp -s -oraw -lp:pdf=/usr/ob/etc/ptrtbl/4227:poxtbl= /usr/ob/etc/ptrxlt/S7:: The first field defines the name which OpenBASIC and the application uses for this printer. The second field defines the spooler interface used by OpenBASIC for this printer. To change the spooler used for this printer, this field should be changed (using a text editor such as "vi") to a valid BOSS/VX spooler command, such as: LP:dest=|lpr -raw list=lp:pdf=/usr/ob/etc/ptrtbl/4227:poxtbl= /usr/ob/etc/ptrxlt/S7:: In this case, the output from OpenBASIC printer "LP" will be sent to the BOSS/VX spooled printer "lp" using the BOSS/VX spooler. NOTE: Any valid BOSS/VX spooler options may be added, though the "-raw" option should always be specified. TO ADD A PRINTER USING THE BOSS/VX SPOOLER: 1. EDIT THE "bfsdevs" file in the /usr/ob/etc directory. This file defines what OpenBASIC device names are configured on the system. Each entry in the "bfsdevs" file consists of an OpenBASIC file name followed by three colons: P1::: Adding an entry to this file defines a new printer which may be used by OpenBASIC. 2. EDIT THE "devices" FILE in the /usr/ob/etc/ directory, adding an entry similar to the one which appears in the previous example. P1:dest=|lpr -raw lst=lp:pdf=/ob/etc/ptrtbl/4227:poxtbl= /usr/ob/etc/ptrxlt/S7:: The "pdf" field defines the printer definition file (in this case a PT-4227), and the "poxtbl=" field defines the character translation table (in this case S7). MAI Spooler utilities and commands will continue to work in conjunction with print jobs submitted from OpenBASIC. NOTE: For additional information concerning the format of the OpenBASIC configuration files and modifying them manually, please refer to the CONFIG utility documentation in the OpenBASIC Administration Manual M0239. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB016 Pg002 CAUTION: The OPTS= option on the OPEN directive is ignored. Options such as 'class' and 'forms' will not be passed to the dpooler when a printer device is opened. OPENBASIC CONFIGURATION WHILE THE BOSS/VX configuration utility configures both the system and BB90 environments at the same time, the OpenBASIC configuration is independent of the system and BB90 configuration. The BOSS/VX "configure" utility will display and use BB90 terminal and printer names, such as "T10" or "LP". Such names apply only to BB90 and not to OpenBASIC. To configure OpenBASIC on an existing BOSS/VX system, simply use the OpenBASIC "CONFIG" utility to establish the OpenBASIC device names. To configure OpenBASIC on a new BOSS/VX system, first configure the system using the system "configur" utility, and then configure OpenBASIC using "CONFIG". NOTE: Do not attempt to configure OpenBASIC for printers and terminals that have not already been configured using the system "configure" utility. While the configuration of BASIC devices using the system "configure" utility does not apply to OpenBASIC, it sets up other important parameters required to allow the terminal and printer devices to function properly. Both configurations must be completed in order for OpenBASIC to work properly. ADDITIONAL WARNINGS 1. PRESENTATION SERVICES AND BUSINESS DATA HAVE MOVED. For OpenBASIC, they now reside in the /usr/ob/ directory. Presentation Services resides in /usr/ob/PS, and Business DATA (formerly Origin DSS) is located in /usr/ob/bdata. It is recommended that applications be converted to OpenBASIC and use the OpenBASIC copies of these products, allowing deletion of the BB90 versions and saving disk space. 2. Business DATA reports (formerly Origin DSS) are compatible with OpenBASIC. 3. Use BB90 for Synchronous (2780/3780) communications. OpenBASIC does not support the GPx 2780/3780 communications controller interface. However, if the guidelines in this document are followed, those portions of the application which access the Synchronous communications facility of BOSS/VX may continue to be run under BB90. 4. You can use the BOSS/VX file utilities on OpenBASIC files provided you are NOT running OpenBASIC at the same time. ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB016 Pg003 FIB 00017 MAI COMPANY CONFIDENTIAL 10/14/92 *** OpenSPOOL Configuration Notes [ WPSF 737 ] *** TYPE: Informational PURPOSE: By default, OpenBASIC uses the standard UNIX spooler which should be acceptable in most cases. However, in situations where specific spooler functionality is required, modifications to the OpenBASIC configuration files can be made to allow OpenBASIC to interface with other spoolers . such as Hewlett-Packard's OpenSPOOL. NOTE: The following notes are preliminary and the procedures have not been thoroughly tested. This document is not a substitute for the standard installation instructions and IS NOT to be considered a complete list of installation steps. These notes are provided as a tool to assist in configuring OpenSPOOL to work with OpenBASIC. PROCEDURE: The following steps should be undertaken by a qualified technical/systems person. CAUTION: Do not run "CONFIG" after adding or changing entries in the "devices" file to use OpenSPOOL. CONFIG will not recognize these entries and will remove them from the configuration file. TO CHANGE AN EXISTING SPOOLER CONFIGURATION: 1. Edit the "devices" file found in the /usr/ob/etc directory using the "vi" text editor. This file defines the command invoked when the OpenBASIC printer device is OPENed. Printer entries in the "devices" file will be similar to the following: LP:dest=|lp -s -oraw -lp:pdf=/usr/ob/etc/ptrtbl/4227:poxtbl= /usr/ob/etc/ptrxlt/S7:: The first field (before the colon) defines the name which OpenBSIC and the application uses for this printer. The second field defines the spooler interface used by OpenBASIC for this printer. To change the spooler used for this printer, this field needs to be changed to a valid OpenSPOOL command, such as: LP:dest=|np -q LP -P A:pdf=/usr/ob/etc/ptrtbl/4227:poxtbl= /usr/ob/etc/ptrxlt/S7:: In this example, the output from OpenBASIC printer "LP" will be sent to OpenSPOOL using the "np" command. The "-q" parameter is used to setup a queue named "LP". The "-P" parameter is used to setup a form named "A". The "pdf=" field defines the printer definition file (in this case a PT-4227), and the "poxtbl=" field defines the character translation table (in this case S7). TO ADD A PRINTER USING OpenSPOOL: 1. Edit the "bfsdevs" file in the /usr/ob/etc directory. This file defines the OpenBASIC device names configured on the system. Each SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB017 Pg001 entry in the "bfsdevs" file consists of an OpenBASIC device name followed by three colons. For example: P1::: Adding the above entry to this file defines a new printer, called P1, which may now be used by OpenBASIC. 2. Edit the "devices" file in the /usr/ob/etc directory, adding an entry similar to the following: P1:dest=|np -q P1 -P B:pdf=/usr/ob/etc/ptrtbl/4227:poxtbl= /usr/ob/etc/ptrxlt/S7:: NOTE: For additional information concerning the format of the OpenBASIC configuration files and modifying them manually, please refer to the CONFIG utility documentation in the OpenBASIC Administration Manual - M0239. CAUTION: The OPTS=option on the OPEN directive is ignored. CAUTION: Utilities such as "dedicate_p" and "free_p" will not work under OpenSPOOL. These utilities are UNIX shell scripts and utilize the UNIX spooler cp,mmands. OpenSPOOL hs a unique set of spooler commands. The "dedicate_p" and the "free_p" utilities are shell scripts and therefore may be modified by inserting the correct OpenSPOOL commands. CAUTION: When installing OpenSPOOL be aware that there are multiple versions of the product. One version of OpenSPOOL (option code A.00.01) only works with HP-UX 7x. The newer version of OpenSPOOL (option code A.01.00) will work with either HP-UX 7x or 8.0. Be advised to order the correct copy. ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB017 Pg002 FIB 00018 MAI COMPANY CONFIDENTIAL 10/15/92 *** Problems when using output transparency 'BO' [ WPSF 739 ] *** TYPE: Informational PURPOSE: This field bulletin will describe a potential problem when using output transparency on terminals in OpenBASIC. PROCEDURE: In an effort to become trult "open", OpenBASIC uses the UNIX "curses" library for terminal handling. The advantage in doing this is that terminal handling is standard accross multiple types. A problem may arise however, if updates to the screen are made in Output Transparency mode (i.e., surrounded by 'BO', 'EO'). The curses library keeps a copy of the screen image in memory. The problem is that in output transparency mode the code bypasses the curses library and therefore the curses copy of the screen is not updated. When a new update is made to the screen (e.g., a clearscreen), curses will perform the update, but only on what it knows the screen looked like from its image. A clearscreen would clear the portion of the screen that curses was aware of, but may leave the updates done through output transparency on the screen. The execution of system commands from within OpenBASIC will cause the same problem. WORKAROUND: DO NOT USE Output Transparency when updating the screen. Output Transparency should only be used for non-screen updates (e.g., setting the clock, etc.). ORIGINATOR: Kevin Liebl SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB018 Pg001 4313;W; FIB 00019 MAI COMPANY CONFIDENTIAL 10/23/92 *** Installation Guide for OpenBASIC on a HP 9000/800 [ WPSF 743 ] *** TYPE : Informational PURPOSE: To provide a step by step guideline for OpenBASIC installation on a HP 9000 Series 800. o SYSTEM STARTUP: Refer to your system manual and power the system on. The system hardware is tested, the console path is copied into memory, the system console is initialized and the boot path is initialized. If the autoboot flag is set, you will get the following message: Autoboot from primary boot path enabled, To override, press any key within 10 seconds. If a key is not pressed within 10 seconds, the autoboot procedure then loads the Initial Sytem Loader (ISL). The system will load the /hpux kernel, perform more initialization tasks and start the /etc/init process. After displaying lines of information, the system will pause and ask you if the date is correct. At the "Console login:" prompt, sign on as "root". o USING SAM TO CONFIGURE TERMINALS AND PRINTERS: System Administration Manager (SAM) is an HP utility that will allow a user to ADD, MODIFY, or REMOVE devices (it will also allow you to modify KERNEL parameters). We will cover the 8.0 HP-UX version of SAM (previous HP-UX) release did not support all features of SAM) in this field bulletin. In order to use SAM you must have a terminal that will emulate an HP (HP console 700/92 or Wyse 30 or VT100). If you use a vt100 you will have to use ^f+# where # is the number of the function key. We will only cover how to configure TERMINALS and PRINTERS in this document. SAM is a utility that uses function keys to perform operations. In every menu and option you can press the function key that displays HELP for information regarding that menu or option. o TERMINAL CONFIGURATION You should be logged on as ROOT (or superuser) and at the # prompt enter "sam". You will be in the main menu of SAM and by using the arrow keys, position the cursor to the PERIPHERAL DEVICES option and press the 'RETURN' key. The Peripheral Devices window appears, select option ADD TERMINAL or MODEM. You will see a window with the message: "SCANNING the SYSTEM HARDWARE". After a couple of seconds you will be in the CURRENTLY CONFIGURED MUX CARDS screen. Position the cursor (always using the ARROW KEYS) to the MUX card that you want to configure and press 'RETURN'. You will now be in the ADD A TERMINAL Screen. The options in this screen are to select Terminal or Modem (using an "x"), ADD SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB019 Pg001 PORT NUMBER and Speed (baud rate) you will not see an option for BITS or PARITY (defaults are 7-bits even parity, 9600 baud rate). Input the PORT number and BAUD RATE and after selecting baud rate press the function key that says PERFORM TASK (F4). This will create the device. Repeat the above for all terminals to be configured on the system. It is recommended for OpenBASIC installation to connect a terminal to the first and last port on each terminal distribution panel to determine the device range. It would be most convenient if you did this now. To exit this utility press the function key PREVIOUS MENU (F8) until the F8 key changes to EXIT, press F8 to return to the # prompt. o PRINTER CONFIGURATION In order to configure a printer the user must know the basics of how to configure a printer in UNIX. As superuser enter "sam" at the # prompt. At the main menu select the option PRINTERS AND PLOTTERS (using arrow keys to position to this option) and press 'RETURN'. You will now be in the PRINTERS AND PLOTTERS menu. (This menu has two main options: PRINTERS and LP SPOOLER ADMINISTRATION. WE WILL ONLY DISCUSS THE PRINTERS option, for information on LP SPOOLER ADMINISTRATION you can position the cursor to this option and use the HELP function key). The PRINTERS option has the following secondary options: Add a local printer Add a remote printer We will only address the option of "Add a local printer" (Use the HELP function key for more information on the rest of these options) Position the cursor to the option "Add a local printer" and press 'RETURN'. The menu for this option has six choices, however, we will only discuss "Add serial (RS-232) printer". Using the arrow keys position the cursor to this option and press 'RETURN'. The system will display: "SCANNING THE SYSTEM HARDWARE" and after a couple of seconds the system will display the MUX cards installed in the system. Position the cursor to the MUX card (slot) that will have the printer connected to and press 'RETURN'. The next option is to select the port number, enter the port number of the MUX and press 'RETURN'. A new screen with the following options will be displayed: Printer name Printer model interface Printer device file name (system will provide this for you) Printer priority Make this the system default printer (Y/N) Since the user should know how to configure a printer in UNIX we will not cover these options (Use the HELP key for information). After entering the information press the function key PERFORM TASK (F4) to configure this printer. Press the function key PREVIOUS MENU (F8) to exit. o OPENBASIC INSTALLATION SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB019 Pg002 Verify that you are logged in as 'root'. Use the 'df' or 'bdf' command to make sure there is enough free space on the partition containing the /usr directory and the partition for temporary space. Check the media for disk space requirements. The installation process will temporarily require about twice the capacity on the media. Verify that the UNIX spooler is running by entering 'lpstat -t' Print out the port configuration on the HP, 'cat /etc/inittab |lp' or to any configured printer. Create the temporary directory, 'mkdir /tmp/install' and 'cd /tmp/install/, to change to that directory. Restore files from tape, 'cpio -iuvd < /dev/rmt/0m'. Invoke the installation script, './ob_install' and 'RETURN' at the copyright message. Reply 'yes' to the system prompt to proceed. Enter your OpenBASIC Serial Number. This is an 8-digit number on your regristration card. If you have entered it correctly, reply 'Y' to the prompt. Next, enter the company name, (this must not be greater than 60 characters) and reply 'Y' to the correct prompt. o OPENBASIC PERIPHERAL CONFIGURATION The CONFIG utility allows the correlation of OpenBASIC device names with the system device names. It also specifies the following: * terminal/printer types * input/output translation tables * Optional slave printer characteristics * printer definition files * ghost processes in the 'bfsdevs' file CONFIG must be the only OpenBASIC program running, otherwise you may not get a valid configuration. If you have chosen to break out of the ob_install script, sign on as. 'root' and at the # prompt, type: /usr/ob/bin/basic s=512 pgm=/usr/ob/bin/CONFIG When asked for all of the '/dev' names to be used, enter: /dev/tty0* The initial configure display screen will display all the devices and your current device name is highlighted in foreground and preceded by a ">". To move the current selection entry, use the h, j, k, l, or arrow keys. After choosing the device you wish to configure, choose the "a" option to add a port. You will be prompted with the message: Is this a terminal or a

rinter? o TERMINAL CONFIGURATION Press for the terminal type and press again to SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB019 Pg003 accept the default terminal type from the environmental variable TERM. (If the terminal is 'remote', you must enter a valid type.) Next, you may specify a translation table or press to skip. CONFIG prompts for a slave printer. If you choose to attach a slave, press 'Y' and enter the printer type and the translate table name. o PRINTER CONFIGURATION Press 'P' and enter the BASIC printer name. You will be asked for the printer type and the translation table. The printer type is taken from the '/usr/ob/etc/ptrtbl' directory and the translation table is from the '/usr/ob/etc/ptrxlt' directory. The final parameter specifies the write timeout in seconds. After you have configured your first device, position the selection to the next port you wish to configure. If you would like to duplicate the entries you have just completed, use the 'C' copy option. If you would like to modify, display, or remove a configured port, position the highlighted selection to the device name you want to act upon and use the 'M', 'D', or 'R' option respectively. If yu wish to add, remove or display a spooled printer, choose the 'S' option. It may be a good idea to configure the spooled printer with a 'P*' number that can easily be associated with the nonspooled printer, i.e., P32/P22. (Use the printer with the higher number for spooling.) The input parameters are similar to the regular printer selections. NOTE: There is no modify option. To make changes, you must remove the printer and add it back with the correct parameters. When all devices are configured, you may 'E' to exit the utility. ORIGINATOR: Sherry Watanabe SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB019 Pg004 FIB 00020 MAI COMPANY CONFIDENTIAL 03/08/93 *** Spooled 42xx printers in SCO lose 1ST line/add underlines *** TYPE Problem SYMPTOM Spooled print jobs sent from OpenBASIC can have the first line of the output missing and the remainder of the output printed underlined on PT-4225, PT-4226, PT-4227, and PT-4228 printers. CAUSE The "standard" interface program and the filters it uses on spooled output, in particular the lp.page command. SOLUTION The following change needs to be made to the interface program being used by the printer: 1. Log on to the system as 'root'. 2. Edit the file using 'vi' or your preferred editor. 3. Search for the line: FF=`${TPUT} ff` (about 1/2 way through the file) 4. Change this line to: FF="\f" (quotes are required) 5. Save the file. FOR PRINTERS ALREADY CONFIGURED: The interface program is: /usr/spool/lp/admins/lp/interfaces/ where is replaced by the spooled printer name (e.g., lp) FOR PRINTERS TO BE CONFIGURED IN THE FUTURE: Create a new interface program called "maiprinter": 1. Log on to the system as 'root'. 2. cd /usr/spool/lp/model 3. cp standard maiprinter 4. Make the changes indicated above to /usr/spool/lp/model/maiprinter. 5. When configuring printers with the 'sysadmsh' utility, select 'maiprinter' as the "Name of interface". It is possible to make the changes directly in the 'standard' interface program in the /usr/spool/lp/model directory, and continue to use 'standard' as the "Name of interface" when configuring with 'sysadmsh'. Creating a new 'maiprinter' interface program is preferred because it leaves the original 'standard' interface program unchanged. ORIGINATOR: Chris Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB020 Pg001 FIB 00021 MAI COMPANY CONFIDENTIAL 05/07/93 *** Incorrect math calculations using floating point *** Subject : Incorrect math calculations (rounding) when using the -fp (floating point) option in OpenBASIC. Type : Problem Purpose : Inform the field of a OpenBASIC rounding problem. Sympton : Math calculations are incorrect when starting basic with the -fp (floating point) option. Example : Print 549.615*1 (will print 549.61 but it should be 549.62) Without the -fp switch the calculations are correct (The above example will print 549.62). The following systems running OpenBASIC are effected : SUN, HP and IBM. This is not a problem on SCO. Solution: A. Do not use the -fp option B. Patch is available from NSC to correct this problem. C. Will be corrected in the next version of OpenBASIC. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB021 Pg001 FIB 00022 MAI COMPANY CONFIDENTIAL 05/07/93 *** Error 7 - causes and workarounds *** Subject : Error 7 OpenBASIC Author : Joe Melendez Type : Informational Purpose : Inform the field of what is an error 7 in OpenBASIC, what can cause an error 7 and how to correct these problems. NOTE : The information presented in this field bulletin is in regards to OpenBASIC running on HP-UX systems. However most of the information applies to other UNIX platforms that are running OpenBASIC. An error 7 when trying to open a file in OpenBASIC means that this file has the integrity bit turned on. This bit gets set when you open a file and modify a record (write or remove). The bit gets set to off when the user that had this file opened and modified closes the file. The error 7 is an indication that the file was not closed properly, it does not necessary mean that the file is corrupted but it's a warning it might be lacking records or it could be corrupted. Example on how the integrity bit gets set (and reset) : If you had 5 user's opening the same file and 3 of these user's are writing or removing records and the other 2 are just doing reads to this file, the system will have the integrity bit set to on (it has a counter that is set to 3). When the 2 user's that were only reading the file closes it, the counter will still remain at 3. When each user that had the file opened and modified closes the file the counter will be reduced as the user closes the file. When a new user opens the file and modifies a record the counter will increase. If the file is already open and a new user open's the same file OpenBASIC will not check to see if the integrity bit is set, if the user is opening a file that has not been opened by anyone, OpenBASIC will check for the integrity bit. So usually the first person that opens a file for the first time will see an error 7 if the integrity bit is set. To correct the error 7 you must run the OpenBASIC "fichk" or "kychK" utilities. Please refer to the OpenBASIC Administration Manual for more info on these utilities. Conditions that can cause files that are opened and modified to not close properly are : 1. Performing a kill -9 "process id" : sometimes terminals or processes hang and in order to release the process you have to 'kill" it. If you perform a kill -9 on a OpenBASIC task that had files open and modified the next time a user opens the file for the first time (system wide) it will have the integrity bit set and report an error 7. 2. Core dump : Core dumps will kill the BASIC process for the User that produced the core dump (it use's kill -9 to kill the process). 3. Performing a System Shutdown with BASIC process or GHOST tasks still running. 4. System is running out of SWAP Space : On HP-UX when a system is running out of SWAP Space it will start killing processes and it could kill a OpenBASIC process. Solutions to the above : SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB022 Pg001 1. Try performing a kill "process-id" (without option -9). this performs a "soft" kill and it will close files properly. 2. Correct problems that are causing core dumps. A number of OpenBASIC core dumps have been fixed on OpenBASIC 4.0. Also please refer to the field bulletin about what can cause a OpenBASIC process to core dump. 3. Release all BASIC and GHOST tasks before performing a SHUTDOWN. We have written a script that you can run before SHUTDOWN that will release all BASIC and GHOST tasks. If the customer has a MAI OpenBASIC contract we will fax them this script. 4. Run "sar" or "Glance PLUS" to monitor the SWAP Space. If the customer is running out of SWAP Space we can add "Dynamic Swap Space" to correct this problem. Customer has to have an MAI HP-UX support contract before we can add this "Dynamic Swap Space" to his system. If the user is complaining that he is getting released from BASIC, you should check for the above problems. In OpenBASIC 4.0 there is a new option (-d) that will allow you to ignore the integrity bit when you open a file for the first time. When you start the BASIC process (usually in the user's .profile) add this option (example : /usr/ob/bin/basic s=512 pgm=/usr/joe -d). This will not produce the error 7 if the file had the integrity bit set but you will not know if this file has any problems (like file corruption) and this might cause problems later (like a system crash for using corrupted files). ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB022 Pg002 FIB 00023 MAI COMPANY CONFIDENTIAL 08/30/93 *** syntax err in /usr/ob/bin/dedicate_p & free_p - OpenBASIC 4.0 *** Subject : OpenBASIC 4.0*19.25 "/usr/ob/bin/dedicate_p" and "/usr/ob/bin/free_p" error. Type : Problem Purpose : Inform the field of an OpenBASIC 4.0*19.25 "/usr/ob/bin/dedicate_p" and "/usr/ob/bin/free_p" error. Symptom : Executing OpenBASIC "/usr/ob/bin/dedicate_p" or "/usr/ob/bin/free_p: command will produce the following error message : "Syntax error at line 67 (dedicate_p) or line 64 (free_p) : `fi' unexpected". Solution: As root "vi" the /usr/ob/bin/dedicate_p script. Modify line 65 (to find line number 65 perform a "set nu" vi command). Change "if" to "fi". Save the script. "vi" /usr/ob/bin/free_p and modify line 62 (change from "if" to "fi" Save the script. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB023 Pg001 FIB 00024 MAI COMPANY CONFIDENTIAL 05/28/93 *** System tuning for OpenBASIC on SUN Solaris 2.x *** Subject : System Tuning for OpenBASIC on SUN Solaris 2.x system Type : Informational Purpose : Inform the field of what parameters need to be changed when installing OpenBASIC on a SUN Solaris 2.x system. A basic error 62 indicates that a kernel parameter was exceeded. In order to find out which kernel parameter needs to be increased you will need to find the system error number, you find this by typing ERROR (after getting the ERROR 62) Using the system error number you can find out what parameter needs to be increased by doing the following : grep system error /usr/include/sys/errno.h For example a basic error 62 with a system error of 46 will display : "#define ENOLCK 46 /* No record locks available */" . This indicates that the kernel parameter called :tune_t_flckrec needs to be changed. In order to avoid errors 62 (kernel parameters exceeded) while using OpenBASIC some kernel parameters must be modified. The following kernel parameters are the recommended values for OpenBASIC and it's based on the amount of memory (MB) on the system. Kernel Parameters (32 MB) (64 MB) (96 MB) (128 MB) (256 MB) max_nprocs 468 788 1172 1300 2580 ufs_ninode 2708 4388 6404 7076 13796 maxuprc 468 788 1172 1300 2580 ncsize 1354 2194 3202 3538 6898 tune_t_flckrec 1024 2000 1878 2400 3990 ndquot 1364 2324 3476 3860 7700 These kernel parameters must be added in the /etc/system file. Example : As root vi /etc/system and enter the following for a system with 128 mbyt of memory : set max_nprocs=1300 set ufs_ninode=7076 set maxuprc=1300 set ncsize=3538 set tune_t_flckrec=2400 set ndquot=3860 Save the file. After rebooting, the new kernel parameters will be in effect. If you continue to receive an error 62 find the kernel parameter (see above) that needs to be increased. You can also use "sar" to find which kernel parameters needs to be increased or decreased. These kernel parameters are based on the following formula : If MB less then 64, x=35; If MB less then 128, x=30; If MB greater then 128, x=25. users=MB* x /10 NPROC= 20 + users * 4 NINODE= 256 + users + NPROC * 5 MAXUP= NPROC NCSIZE= NINODE / 2 NFILCK= users * 6 + 150 NQUOTA= users * 8 +NPROC For example to calculate max_nprocs (NPROC) for a system with 96 MB : x=30, users=288 (96*30/10), NPROC=1172 (288*4+20). In the /etc/system file SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB024 Pg001 you will set max_nprocs=1172. We are in the process of releasing a MAI Supplement diskette that will contain a script called "maitune" that will add the above kernel entries in the /etc/system file automatically. You also might get another kernel error (Basic error 62, system error 24). This indicates that the number of files opened has been exceeded. To correct this you should add in the user .profile the following entry : ulimit -n 100. 100 indicates the number of files the user can open. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB024 Pg002 FIB 00025 MAI COMPANY CONFIDENTIAL 06/10/93 *** Installation instructions for SUN *** Author : Wally Moore Subject : Installing OpenBASIC on SUN Solaris 2.2 system Type : Informational Purpose : Inform the field of the steps to install OpenBASIC on a SUN Solaris 2.2 system. To install OpenBASIC on a SUN Solaris 2.2 system follow the steps outlined in the OpenBASIC Administration Manual M0239B. Use the steps on page 2-3 - 2-4 Installation from Diskette (Do not follow the Sun Sparcstation steps). Special notes: Before using cpio you must kill the volume daemon. Use the device /dev/rdiskette for the input device. # ps -ef |grep vold root 926 115 9 11:00:00 ? 0:01 /usr/sbin/vold # kill -9 926 # mkdir /tmp/install # cd /tmp/install # cpio -iuvd < /dev/rdiskette The information in the manual for the Sun Sparcstation is for Solaris 1.1 and older. NOTE: The floppy will not automatically eject at the completion of each floppy. The best work around for this is to open 2 OPENWIN windows, do the cpio in one window, and eject the floppy in the second. The other way to eject the floppy is a paper clip in the little hole below the floppy opening. (Try to avoid doing this in front of a customer.) ORIGINATOR: Wally Moore SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB025 Pg001 FIB 00026 MAI COMPANY CONFIDENTIAL 06/10/93 *** OpenBASIC 3.0 Software Announcement [ WPSS 198 ] *** INTRODUCTION OpenBASIC Level 3.0, a super set of OpenBASIC Level 2.1, is now available for distribution. A new module, OpenBASIC NetServer, has been added to the list of OpenBASIC products. There are now 5 OpenBASIC modules: OpenBASIC "Base" OpenBASIC Language, OpenBASIC Utilities, 'C' Program Libraries, and NetServer 'client' software. OpenBASIC "Connection" Allows developers to exploit the advantages of selected Relational Database Management Systems ("RDBMS"). OpenBASIC "Developer's Toolkit" Assists the developer in creating business application software with Presentation Services Form, Menu, and Help management software. Provides tools for creation and compilation of printer drivers. Contains tools to transport and convert application software to an OpenBASIC platform. MAI Business DATA (OpenBASIC) Integrated data dictionary and a report writer tool for online and hard-copy reports. OpenBASIC "NetServer" For communication between UNIX systems, which support TCP/IP, using standard OpenBASIC directives. NetServer provides record-interactive file operations via industry standard networking protocol. OpenBASIC "Conversion Kit" Designed for end users who have a one time conversion requirement. Users having an ongoing development and transport needs should order the OpenBASIC Developer's Toolkit, which also contains the OBTT and ATP transport packages. OpenBASIC Level 3.0 is available for the following platforms: PLATFORM MINIMUM O/S LEVEL -------------------- ----------------- MAI GPx Series 30/50 V 3.2.2 MAI GPx Series 40 BOSS/VX 1.1B MAI GPx Series 70 BOSS/VX 1.2A Hewlett Packard 9000 HP-UX 8.0 IBM RS6000 AIX 3.1.5 NCR 3000 4.0 Sun SparcStation 4.1.1 SCO UNIX V 3.2.2 TABLE OF CONTENTS 1.0 OpenBASIC Level 3.0 New Features SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg001 2.0 OpenBASIC Level 3.0 Language Enhancements 3.0 OpenBASIC NetServer 4.0 Installing OpenBASIC Packages 5.0 Configuring Devices for OpenBASIC 6.0 Spooler Considerations 7.0 Notes and Cautions 8.0 Conversion 9.0 Peripheral Support 10.0 OpenBASIC Utilities 11.0 Related Documentation Appendix A - Installation instructions (not in this FIB Appendix B - Configuration (not in this FIB) Appendix C - Basic Utilities (not in this FIB) NOTE: Appendixes A, B and C are reprints of sections from the OpenBASIC Administration Manual M0239C and are not included here, refer to the manual or to Software Announcement 198 in hard copy. 1.0 OpenBASIC LEVEL 3.0 NEW FEATURES ASYNCHRONOUS TRANSPORT PACKAGE (ATPTM) ATP is now supported on OpenBASIC 3.0. This functionality will allow users to transport applications from BB90 platforms such as MPx to OpenBASIC 3.0 . platforms without using tape media. ATP is primarily useful when performing a conversion between systems which do not support a common tape media. This product will be a part of the Developer's Toolkit Module, as well as the OpenBASIC Conversion Kit. 'obcp' AND 'obrcp' COMMANDS PREVENT 'FILE GROWTH' Copying or restoring an OpenBASIC data file with the 'cp' or 'rcp' commands will cause the destination file to be larger than the source file (in number of blocks used). This is because the OpenBASIC data files have "holes" in them (i.e., blocks in the middle of the file that are unallocated). When the file is read during the copy operation, a block of nulls is returned for each of these "holes", this block of nulls is then written to the destination file. This 'file growth' may be avoided by using the new 'obcp' and 'obrcp' commands to copy files. Functionally, 'obcp' and 'obrcp' are identical to 'cp' and 'rcp'. Documentation, in 'man' page format, is provided for 'obcp' and 'obrcp' in the /usr/ob/docs/man directory. OpenBASIC TAPE TRANSPORT (OBTT) ENHANCEMENT OBTT will now support multiple tape sessions. Prior to level 3.0 only single tape sessions were supported by OBTT. The customer was required to use file lists to backup portions of his application at a time to a single tape for conversion to the OpenBASIC platform. With version 3.0, the customer can backup applications using OBTT on multiple tapes in a single SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg002 session. FILE FULL (Error 2) On BB90 and other Business BASIC platforms, an error 2 was returned whenever a file reached its maximum defined size. In OpenBASIC 3.0, when a file is created with a maxrec value of 0, the file will grow continuously, and will never return an error 2. OpenBASIC Level 3.0, conversion programs (OBTT and ATP) now automatically convert data files with a maxrec of 0. This removes the need to change these files by hand after the conversion process is complete. For users who want to retain the original maxrec value of their files, Section 8.0 on Conversion in this document contains instructions for modifying OBTT and ATP to retain the original maxrec value. 'C' PROGRAMS MAY ACCESS OpenBASIC DATA FILES Continuing it's strategy of providing easy to use bridges to new technologies, OpenBASIC Level 3.0 contains new libraries which provide C programs access to OpenBASIC data, where ever it resides. Two sets of libraries are included: CISAM library, which is source compatible with the UNIX X/OPEN standard. An excellent choice for those concerned about portability and conformance to standards. BFSINT library, which is designed for easy use by BASIC programmers. The familiar syntax and robust functionality of this library is a good way for BASIC programmers to ease into the C development environment. These C libraries can be used in a number of ways: Existing applications can be extended using C language routines to improve performance in critical code sections. C based bridges to other UNIX functionality such as communications and operating system routines can be implemented quickly and easily. Applications based in OpenBASIC now have their data accessable to third party UNIX applications. New applications or application supplements can be written in C. Both the CISAM and BFSINT libraries support transparent connectivity to databases via OpenBASIC Connection, and fast networking via OpenBASIC NetServer. The C libraries represent a fully integrated, robust support system for any C programmer. Documentation for these new libraries is 'on-line'. It can be found in the /usr/ob/docs directory under the names 'libbfsint' and 'libcisam', it can be viewed with the 'more' command. 2.0 OpenBASIC LANGUAGE ENHANCEMENTS FILENAME LENGTH Prior to version 3.0, OpenBASIC limited the length of file names to 14 characters. As of version 3.0, file names may now be either 14 or up to 255 characters in length. The filename length is now determined by the host filesystem. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg003 SCALL This new command allows the user to perform a SYSTEM call in OpenBASIC, and receive a status back from the system indicating the success or failure of the executed system command. The status passed back will normally be zero if all went well. The format is as follows: exitno = SCALL ( system_cmd$ {,ERR=stmtref} ) 'SCALL' performs the same functionality as 'SYSTEM' with the addition of a status passed back to the OpenBASIC program. ALTERNATE FID STRING Setting byte 5 of the SETOPTS string to $40$ will change the format of the string that FID returns to the following FID format: Byte(s) Description 1,1 File Type: $00$ = Indexed file $01$ = Serial file $02$ = Direct or Sort file $03$ = String file $04$ = Basic Program file $05$ = directory $06$ = Multi-Keyed file $14$ = Psave'd Program file 2,1 Key size (this will be zero for all file types except direct or sort) 3,4 Maximum records allowed in the file 7,2 Record size 9,... Fully qualified file name Serial and program type files will have zeros in the maximum record and record size files. String files and directories will have a -1 in these two fields. This SETOPTS bit also changes FILE so that it expects a string in this new . alternate FID format. Example: >A$=FID(1) >?HTA(A$) 00000074657374310004000000980098000000FF00000000000000980000000000002F75736 572732F75322F6B6576696E2F74657374310000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000 > >B$=OPTS >B$(5,1)=$40$ >SETOPTS B$ >C$=FID(1) >?HTA(C$) 04000000000000002F75736572732F75322F6B6576696E2F7465737431 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg004 OPTS= A new parameter, OPTS=, has been added to the OPEN directive. It has two functions: o By specifying OPTS="WRTHRU" when opening a data file, all data written to the file will be written directly to disk; data will not be buffered in the OS. This option increases data integrity at the cost of system performance. o The OPTS= parameter may be used when opening a spooled printer device, such as LP. The string assigned with OPTS= is passed directly to the spooler, unverified and unchecked. This feature allows the application to manipulate the UNIX spooler using any supported parameters. Consult the system spooling documentation for information on valid options (usually found under the documentation for the lp command). This option will also be very useful for customers who are using the HP product OpenSPOOL. MAXIMUM FILES ALLOWED OPEN The maximum files allowed open in a program has been increased from 63 (0 to 63 with 0 reserved for the terminal) to 127 (0 to 127 with 0 reserved for the terminal). 'PHOTO' This mnemonic returns a "photo" of the current screen. For example: >INPUT 'PHOTO',A$ will set A$ to the current screen image. 'PHOTO' differs from 'TR' in that 'TR' only returns the image in the current window up to the cursor position, while 'PHOTO' returns the entire screen image no matter where the cursor is or what the current window is. Additionally, PHOTO does not pause as it "reads" the screen, rather it captures it instantaneously. This feature is particularly useful when preparing documentation or presentation examples. SETCONSOLE The new SETCONSOLE directive splits the screen into two windows. One window contains all application program output and input. The other window is used for all debugging and console mode interaction. This technique greatly enhances the ability to debug an application by allowing the developer to perform SETTRACE, LIST and DUMP directives without disturbing the application screen display. There are two forms of SETCONSOLE: 1) SETCONSOLE x,y,width,height {,title${,attr$}} This form creates a console window with the same arguments as the 'WINDOW' mnemonic (but notice no parenthesis). Example: SETCONSOLE 40,0,40,24,"" 2) SETCONSOLE This second form creates a console window that is a duplicate of the current window (just like the 'PUSH' mnemonic). SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg005 ENDCONSOLE This feature removes the console window and turns off SETCONSOLE mode. ENDCONSOLE will have no effect if SETCONSOLE is not currently active. BREAK LINE ON TRACE BETWEEN PROGRAMS When using SETTRACE, if the application issues a START, CALL, RUN or EXIT, the TRACE code will reflect this change by issuing a BREAK line which looks. like the following: ----- Level x, pgm=/program_name Where x is the level of program nesting (e.g., 1, 2, etc.) SINGLE-STEP SETTRACE A new feature has been added which implements single-step program debugging. By typing: SETTRACE n where "n" is a number, the subsequent settrace will execute only "n" statements before stopping and issuing a prompt. NEW PROMPT FOR SETTRACE, LIST,DUMP If the output from either SETTRACE, LIST or DUMP is more than one page long, the following prompt will be displayed: [Space=more; n=no pause; q=quit; 0=full screen; 1-9=stmts; return=1 line] This prompt will allow the user to do one of the following things: Space display one more group of lines (default is one page) n no pause (continual display) q quit displaying 0 display one more full screen of data 1-9 an entry of a digit 1-9 will display that many lines of data and reset the default value of the space key. return a carriage return will display one line at a time. MOVE (x,y) This mnemonic allows you to move a PS FORMS window to a new position. For example: 100 PRINT (FORMUNT) 'DISPLAY', 'MOVE'(0,0), 'DEFAULT' This command will move the window to absolute position 0,0 on the screen. If you attempt to move a window off of a screen, the command will move the window as far as possible in the requested direction without moving any portion of the window off of the screen. EDIT WILL NOW ACCEPT A LABEL OpenBASIC provides the ability to use labels within line numbers. The syntax for this is as follows: >20 LABEL: code. With version 3.0 programmers now have the ability to use a label when specifying a line number to edit. Two examples are show below: SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg006 >edit LABEL >'LABEL OBNAME Previous levels of OpenBASIC required that a terminal be configured in order for the FID(0) to be assigned a "T" name other than "T999". In level 3.0, an environment variable OBNAME is allowed to specify the FID(0). OBNAME has the following 2 formats: OBNAME=T[NUMBER] {+} (e.g., OBNAME=T2 or OBNAME=T2+) If available, the FID(0) is assigned the "T" name specified. If the "T" name is in use and the "+" follows the name, then OpenBASIC will consult the configuration files looking for the entry for your /dev/tty device to determine what "T" name to assign. If no entry is found, OpenBASIC will assign "T999". Without "+" following the "T" name, if the "T" name is in use OpenBASIC will abort with an error. OBNAME=T[LOWNUMBER]-{HINUMBER] {+} (e.g., OBNAME=T100-T120+) The FID(0) is assigned the lowest available "T" name. If no names are available and the "+" follows the name, then OpenBASIC will consult the configuration files looking for the entry for your /dev/tty device to determine what "T" name to assign. If no entry is found OpenBASIC will assign "T999". Without "+" following the "T" name range, if all the "T" names are in use OpenBASIC will abort with an error. If OBNAME is not specified then the OpenBASIC configuration is consulted to assign the FID(0). If the configuration or the terminal does not exist, then the FID(0) is assigned "T999". The advantage here is that some applications require a specific terminal to run a program. Now you can set your terminal to that ID. Secondly, remote terminals come in under a different ID each time. This feature will allow the customer to have control over which terminal device they are assigned within BASIC. OBSLAVE The new environment variable OBSLAVE allows a user to specify what type of slave is being used on a particular port dynamically rather than in the CONFIG utility. The advantage is that when running OpenBASIC on a terminal server (i.e., HP DTCs) the system administrator has no way of configuring a DTC port because the user may come in under any of the available pseudo-terminals available to the DTC. The OBSLAVE variable provides a very easy way of specifying what type of slave printer is attached to the terminal. One method of using this variable is to write a shell script which prompts the user for their terminal type and slave printer type and put this script in the user's ".PROFILE". OBCONF The new environment variable OBCONF provides the ability to specify a different configuration file than the default file "/usr/ob/etc/bfsdevs". This may be useful in a development environment. Although this feature provides more flexibility in configuring a system, it is not recommended in most live environments because it can significantly complicate the configuration process. The syntax for this variable is shown below: OBCONF=ConfigFileName SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg007 CONFIG CHANGES Dynamic Configuration Changes OpenBASIC 3.0 now supports dynamic changes with the CONFIG utility. On previous versions of OpenBASIC, the CONFIG information was loaded into shared memory when the first user executed OpenBASIC. All subsequent users read the configuration information from shared memory. Thus, when a change was made to the configuration, all users would have to get out of OpenBASIC for the shared memory segment to be updated. On version 3.0, the runtime configuration control is managed with data files rather than shared memory,. therefore dynamic reconfiguration is supported. NOTE: The one exception to this rule is when modifications are made to the number of ghosts on a system. When there is an active ghost task on the system and the number of ghost tasks are changed, the change does not take place until the last ghost is removed. TERM environment variable The CONFIG utility (and OpenBASIC itself) have been modified to always use the TERM variable to determine the terminal type. DEVICE LIST MAINTENANCE When the CONFIG utility is first run, the user must specify the devices on the system (e.g., TTY*, PTY*, etc.). With OpenBASIC Level 2.0, if at some future date this device list needed to be changed, an entirely new list had to be generated. This list of devices is stored in the file config.devlist. On version 3.0, the user will have the ability to add entries to this file without having to regenerate the entire file. This can be very useful for customers who add mux cards and need to add new ports to the list of devices available to OpenBASIC. TERMINAL/PRINTER CONFIGURATION OVER A NETWORK (NFS) OpenBASIC 3.0 supports terminal configuration when OpenBASIC is running over a network. In this case, the OpenBASIC configuration would exist on one system, and all the other homogenous systems on the network would share it. An additional field in the /usr/ob/etc/bfsdevs file specifies the host on which the terminal is configured. Under this configuration, OpenBASIC not only would look for the system device name, but also for its host name when setting the "T" name in the FID (0). Workstation 1 File ______ Server | | _______ |______|*----* | | | | | Workstation 2 *---*| | ______ | | | | | | |_______| |______|*----* In the above example, one copy of OpenBASIC could be loaded on the File Server system. Multiple tty ports from each of the workstations could logon and utilize the one copy of OpenBASIC. The contention problem occurs because there could be the same terminal id (e.g., tty1) on each system. To overcome this problem the "bfsdevs" file has been modified. For example, the "bfsdevs" file for the above file server could look like SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg008 this: T0:/dev/tty1::host1: T1:/dev/tty2::host1: T2:/dev/tty1::host2: T3:/dev/tty2::host2: T4:/dev/tty1::host3: When "host1" started OpenBASIC on "/dev/tty1", the FID(0) would be "T0". When "host2" started OpenBASIC on "/dev/tty1", the FID(0) would be "T2". This new configuration data which is stored in "bfsdevs" is created by the CONFIG utility. There is a new Networking section which will allow you to . configure the remote workstation. Additionally, there is the ability to copy one workstation's data to another workstation's configuration. The fact that tty1 on workstation 1 is running a remote copy of OpenBASIC is transparent to the user. The above example is not necessarily running OpenBASIC NetSERVER. To setup a "remote OB" system, all you need is NFS. There will be a considerable performance increase by running NetSERVER. FCREATE UTILITY The FCREATE utility is a new utility introduced in OpenBASIC Level 3.0, which will allow users to create files from a utility rather than having to create them from BASIC. The utility is written using PS Forms and has the same look and feel as the other BUSI utilities. The utility supports all file types including Multi-Keyed files. There is also context sensitive help which provides specific help for each field. This is especially helpful when creating more advanced file types such as Multi-Keyed files. CHANGES TO BRENUMBER There have been several changes to the brenumber utility. These changes incorporate some BOSS/VS functionality into the OpenBASIC version of renumber. One of the changes was to add the ability to specify an incremental value. A second change was to add the "rem keep" feature where you can specify specifically what portions of the code you want renumbered. 2.0 OpenBASIC 3.0 SUPPORTED MEDIA The following chart shows the supported installation/distribution media for each platform on OpenBASIC 3.0: HP 9000 IBM 6000 NCR 3000 GPx40/SCO GPx70 Sun : ------- : -------- : -------- : --------- : ----- : --- . 3.5" Floppy ..:.........:.....X....:.....X....:.....X.....:.......:..X 5.25" Floppy .:.........:..........:..........:.....X.....:.......:. 1/4" Tape (HP):....X....:..........:..........:...........:.......:. 1/4" Tape(GPx):.........:..........:..........:.....X.....:...X...:. 1/2" Tape ....:....X....:..........:..........:...........:.......:. DAT/DDS ......:....X....:..........:..........:...........:.......:. 3.0 OpenBASIC NetServer OpenBASIC NetServer allows existing OpenBASIC applications to benefit from local area networking and client/server computing. Like the OpenBASIC Connection module, OpenBASIC NetServer is an optional product that is virtually transparent to any application, making it very easy to use and integrate. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg009 The OpenBASIC NetServer will initially be supported on the GPx 70, HP 9000 and the Sun SparcStations. Other platforms will soon follow. o Designed for fast, record level manipulation. OpenBASIC NetSERVER performs record level searching, indexing and other file activities on the "serving" system. This design ensures applications achieve the fastest possible response while minimizing network traffic. As a result, it dramatically increases overall network performance (versus using NFS for the same operations). o Uses standard Ethernet 802.3 medium, allowing easy integration with existing UNIX networks. o Provides greater reliability than other UNIX networking facilities by availability of file and record locking. o Extends client/server technology to existing applications. It enables one host (or more) to act as a data server to all OpenBASIC clients (user of an application). This allows you to separate the execution of your application from the data for increased processing power. Additionally, since the OpenBASIC Base already includes the client software that executes your applications, you already have 50 percent of the necessary items to benefit from client/server technology. o Uses standard UNIX TCP/IP networking facilities, eliminating proprietary . protocols and the need for specialized training. 4.0 INSTALLING OpenBASIC PACKAGES Complete installation instructions are contained in Appendix A of this document. Appendix A contains a re-print of Section 2 of the OpenBASIC Administration Manual M0239. NOTE: The installation instructions can also be used to upgrade an existing OpenBASIC installation. The installation script will overwrite the existing OpenBASIC package but will not overwrite existing code or configuration files. It should be noted however that any modifications to the OpenBASIC package should be backed up and restored after the upgrade is complete. Examples of files which users may modify are: PDFs, obinfo and the BUSI utilities. 4.1 RECOMMENDED KERNEL CONFIGURATION FOR THE HP 9000 SERIES 700 AND 800 The following section will discuss the kernel parameters that may need to be adjusted for OpenBASIC to run efficiently on the HP 9000. This section will assume that OpenBASIC is the primary application running on the system. If other applications are running on the system simultaneously, the configurations may need to be changed accordingly. These instructions may be used as guidelines on other hardware manufacturers systems. However, details of how to set the values and their maximum and default values varies. There are two ways to reconfigure the kernel: one is through a menu driven utility called "sam" (system administration manager), and the other is with the 'uxgen' command. The 'uxgen' command involves editing a configuration data file. Hewlett Packard currently provides the "sam" utility on most Series 700 and 800 systems. The following is a description of parameters which users will need to SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg010 modify to accomodate multipe OpenBASIC tasks on the system. In the following section when the "default size" or the "size recommended by HP" is referenced, the documentation is referring to the value set in the configuration file when the computer is shipped from Hewlett-Packard. These values are found in the file '/etc/conf/gen/S800'. 1) nproc: size of process table An active OpenBASIC task, including a ghost task, will consume one entry in the process table. Opening a spooled printer through OpenBASIC spawns two processes, shell and lp, until the printer is closed. The 'system' directive will spawn two processes, one for a shell and the other for the command. The default size recommended by HP should be sufficient unless an application depends on a lot of ghost tasks or frequent 'opens' and 'closes' of spooled printers or heavy use of system directives. The maximum imposed by the system is 1024. The 'sar' command (-v option) can be used to monitor the occupancy of process tables. In other words, if the process table is being heavily "occupied" or most of the entries in the table are full, then you may want to increase the size of 'nproc' and make the table larger. 2) ninode: size of inode table An 'open' of a unique file through OpenBASIC will consume one inode entry. An individual file 'opened' by multiple tasks concurrently will only use one inode. Start with the HP default size and add the maximum number of files, including program files, that the OpenBASIC tasks could access at one time. The maximum is limited by available memory. Since the inode table is used as a cache, performance can be gained if the inodes for the frequently accessed files, including the directory files, remain cached in the table. The 'sar' command (-v option) can be used to monitor the occupancy of the inode table. 3) nfile: size of file table An 'open' of a file through OpenBASIC will consume one file entry. If a file is 'opened' by multiple OpenBASIC tasks concurrently, then each 'open' requires an additional file entry. This is different from inode table allocation. Reopening an already 'opened' file by the same OpenBASIC task does not consume an additional inode entry. To determine the value of 'nfile', it is best to start with the default size recommended by HP and add the maximum number of files opened by OpenBASIC tasks at any one time. For example, an OpenBASIC task can have a maximum of 64 channels opened and there might be a maximum of 40 OpenBASIC tasks running at any one time. Therefore, add 64*40 (i.e., 2560) to the default. Since the cost of memory is low, it is better to be generous and have extra free entries than to cut it too close. The maximum size is limited by memory capacity. The sar command (-v option) can be used to monitor the occupancy of the file table. 4) nflocks: size of record lock table An 'open' of a file through OpenBASIC will maintain a record lock on the file. Reopening an already 'opened' file by the same task will not consume an additional record lock. If a file is 'opened' by multiple OpenBASIC tasks, then each 'open' will require an additional record lock. A 'read' or 'write' to an open file holds a record lock on that file to coordinate multiple file accesses. This record lock is released after the I/O is complete. An 'extract' on an open file maintains one record lock until the next I/O on the file or a 'close' releases the lock. A 'lock' of an open file maintains a lock to the file. The default size of 200 recommended by HP is too low for most OpenBASIC applications. Increase it to the size of the file table (nfile), up to SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg011 2000, which is the maximum imposed by the system. 5) bufpages: file system buffer cache These parameters control the size of the file system buffer cache. The default for 'bufpages' is 0, meaning take the default of 10% of available memory. Each 'bufpage' is 2048 bytes of memory. For disk I/O bound applications with large data files, or applications with a large number of data file access, increasing the buffer cache size could improve the system performance. If an application uses many OpenBASIC 'calls' and/or 'runs', then a large buffer cache area could also improve performance. The 'sar' command (-b option) can be used to monitor the cache hit ratios (%rcache, %wcache). If they seem too low (for example, below 80%), then increase the 'bufpages' in 5% increments of available memory. It is important to note that increased buffer cache could cause heavy page swapping due to memory shortage and could result in decreased system performance. The 'sar' command can be used to monitor the swapping activity. It is recommended you not exceed 30% of available memory for 'bufpages'. 6) semmap, semmni, semmns, semmnu: semaphore parameters Each active ghost task consumes one semaphore set of two semaphores. When the ghost task is released, the semaphore set is returned and available for reuse. Each active ghost requires one 'semmap' entry, one 'semmni', two 'semmns' and one 'semmnu' entry. Increase the default values for those parameters appropriately. Active semaphore sets can be displayed through the 'ipcs' command (-s option). 5.0 CONFIGURING DEVICES FOR OpenBASIC Complete configuration instructions are contained in Appendix B of this document. Appendix B contains a re-print of Section 3, and Section 9 of the OpenBASIC Administration Manual M0239. 6.0 SPOOLER CONSIDERATIONS 6.1 OVERVIEW This section reviews the current functionality provided by UNIX for printing and spooling and compares it with the functionality provided by the BOSS/VX Spooler. 6.2 SUMMARY The OpenBASIC language provides users with several special printing features including printer mnemonics, slave printing and non-spooled printing. On BOSS/VX systems, these features are handled directly by the BOSS/VX Spooler. Support of these features on OpenBASIC has been designed to be portable across different hardware and software environments. 6.2.2 DESIGN PHILOSOPHY OpenBASIC uses the host spooler for the actual spooling and printing. On GPx series systems you may choose either the BOSS/VX Spooler or the UNIX Spooler. Other spoolers obtained through a third party can also be used, through OpenBASIC, even though the OpenBASIC "CONFIG" utility does not directly support them. MAI specific printer support, such as mnemonic processing, slave SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg012 printing and non-spooled printing, is accomplished through the use of interface routines provided by the Universal Printer Driver (UPD) in the Business File System (BFS). The data is processed by the UPD and sent to either the host spooler, a slave printer or a non-spooled printer. Some advantages of this approach are as follows: o System resources are spared because there will only be one spooler in operation, the host spooler. o This eliminates the potential problem of one spooling system interfering with the operation of the other. o The user has all the advantages of the host spooler plus added functionality provided by OpenBASIC facilities. o This approach makes it easy to adapt to new platforms and different spoolers. Due to the fact that we have taken the approach of using the host operating system's spooler, there are differences between the BOSS/VX spooler and the UNIX spooler: o Not all BOSS/VX Spooling features are supported by the UNIX spooler. Please refer to the supported and non-supported features included in this document. o The administration and configuration of files for OpenBASIC Spooling has a different "look and feel" compared to BOSS/VX Spooling. 6.2.3 PRINTING WITH OpenBASIC Within the OpenBASIC environment, printing is accomplished by opening a printer and writing data to it. Outside of the OpenBASIC environment, data containing MAI printer mnemonics should be filtered using the 'updfilter' before being sent to the host spooler. 6.3 BOSS/VX SPOOLING FEATURES SUPPORTED BY OPENBASIC This section describes the spooling features that are part of the UPD Filter Library and will be supported on OpenBASIC even if using the UNIX spooler. 6.3.1 MAI PRINTER MNEMONIC PROCESSING OpenBASIC Spooling supports the entire set of printer mnemonics defined under BOSS/VX Spooling. However, an essential difference must be kept in mind. When a user wishes to create an intermediate file on disk, he must filter the data through the 'updfilter' command before outputting it to the printer. On the other hand, if output is sent directly to a printer, OpenBASIC itself handles the mnemonic processing. 6.3.2 CHARACTER TRANSLATION Character translation is fully supported in OpenBASIC Spooling, with the same restrictions on intermediate disk files as mnemonics and SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg013 mnemonic processing. 6.3.3 SLAVE PRINTING OpenBASIC Spooling supports slave printing, but the slave printer must be attached to the terminal on which the user is running OpenBASIC. Remote slave printing (printing to a slave printer attached to another user's terminal) is not supported. 6.3.4 NON-SPOOLED PRINTING OpenBASIC Spooling supports non-spooled printing. The choice of whether the printing will be spooled or non-spooled has to be made at the time the printer is configured. 6.3.5 MAI FORM CHARACTERISTICS MAI Forms Characteristics, such as cpi, lpi, page- length, page-width, and slew channels, are supported when using the filter program, 'updfilter'. 6.4 BOSS/VX SPOOLING FEATURES NOT SUPPORTED BY OPENBASIC This section discusses those features available with BOSS/VX Spooling which will not be supported by OpenBASIC when using the UNIX spooler These features include the following: o Slave Printers not attached to the user's terminal. o The option for raw printing is not implemented in OpenBASIC. However, this option can be specified with the 'updfilter'. Raw printing may be supported by host system spoolers. o MAI Forms Characteristics cpi, lpi, page-length, page-width and slew channels as part of a form definition. The OpenBASIC application program may use mnemonics to set all of these characteristics, except for page width. The default settings for these characteristics are: cpi 10 lpi 6 page-length 66 page-width 255 slew channels channel 1 is set to top of form Page-width may be set by an "OPTS=" clause on the OPEN statement to the printer. See the 'man' format page for 'updfilter' in the /usr/ob/docs/man directory for details on the required syntax. o Classes, a feature that allowed print option defaults to be selected. based on a "class" name. o High bit setting, a feature that set the most significant bit of every byte that was output to the printer. o Alias names, a mechanism to give an alias for a print job for status reporting purposes. o The number of initial form feeds that were to be output before printing the document. o The time at which despooling of the job was to be scheduled. o The option to delete a file after printing. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg014 o The option to re-queue a job after printing. o Form alignment with "live" data. Form alignment with the UNIX LP Spooler is done with data specified at the time of form definition. o Hold priority, a mechanism to prevent printing of jobs that have a priority level below the current hold priority level. 6.4.1 OTHER IMPORTANT DIFFERENCES 6.4.1.1 WAIT FLAG In the BOSS/VX environment, the user can set up a spooled printer to. print lines: o Immediately after each line is entered (the 'd' setting), or o Wait until the printer is "closed" before printing the data (the wait mode). OpenBASIC with the UNIX LP Spooler only operates in the wait mode. 6.4.1.2 MODIFYING THE PRINT QUEUE Under BOSS/VX Spooling, a job can be moved from one printer to another before the job is despooled. Theoretically, this is also possible with the host O/S (i.e. UNIX) spooler. However, one now needs to use caution because mnemonic processing and character translation are done prior to despooling, and escape sequences that work well with one printer may not have the same meaning on the other. NOTE: It should be noted that the spooler functionality listed above is determined to a large extent by OpenBASIC's use of the UNIX spooler. The user should become familiar with the spooling system on their UNIX system to accurately identify what features may be available. Details of functionality may vary from system to system. 6.5 UNIX vs BOSS/VX SPOOLING COMPARISON TABLES OPTIONS FOR PRINTER CONFIGURATIONS ------------------------------------------------- Parameter BOSS/VX UNIX Spooler Spooler ------------------------------------------------- Conf. in single-user mode Yes Yes Conf. in multi-user mode No Yes Conf. by System administrator Yes Yes Conf. by LP administrator No Yes Communication Parameters Baud rate Yes Yes Parity Yes Yes Character length Yes Yes Number of stop bits Yes Yes IXOFF Yes Yes IXON Yes Yes IXANY Yes Yes Write timeout Yes No Read timeout Yes No CTS Yes No SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg015 RTS Yes No Identification Parameters Device name Yes Yes Printer model Yes Yes Printer name No Yes Other Parameters Spooled mode Yes Yes Non-spooled mode Yes Yes Slave printer Yes Yes PDF name Yes Yes Hold priority Yes No Translation table No Yes Interface program No Yes Filter program No Yes Printer class No Yes Multiple device names No Yes List of users allowed No Yes List of users denied No Yes List of forms allowed No Yes List of forms denied No Yes List of character sets No Yes List of content-types No Yes Dial information No Yes Alert type No Yes Printer speed No Yes OPTIONS FOR SUBMITTING A PRINT REQUEST -------------------------------------------------------- Parameter BOSS/VX UNIX Spooler Spooler -------------------------------------------------------- Printer name Yes Yes Form name Yes Yes Number of copies Yes Yes Priority Yes Yes Notify option Yes Yes Spooled mode Yes Yes Non-spooled mode Yes No PDF name Yes No Translation table Yes No Raw mode Yes No VFU loading Yes No Alias name Yes No Default class Yes No Number of initial form feeds Yes No Job submission time Yes No Delete option Yes No Re-queue option Yes No Wait mode Yes No High bit flag Yes No Hold No Yes Resume No Yes Immediate No Yes Copy before printing No Yes Page list No Yes Content type No Yes Banner page No Yes Title No Yes SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg016 Filebreak No Yes Page length No Yes Page width No Yes Line pitch No Yes Character pitch No Yes Character set No Yes Printer class No Yes NOTE: Parameter names are dependent on the spooler being used. The user should become familiar with the spooler on their system to accurately identify what features may be available. Details of functionality and parameter names may vary from system to system. OPTIONS FOR MODIFYING PRINT QUEUE ----------------------------------------------------- Parameter BOSS/VX UNIX Spooler Spooler ----------------------------------------------------- Cancel Yes Yes Hold Yes Yes Resume Yes Yes Page list Yes Yes Number of copies Yes Yes Priority Yes Yes Form name Yes Yes Printer name Yes Yes Notify Yes Yes Number of initial form feeds Yes No PDF name Yes No Translation table Yes No Job submission time Yes No Delete option Yes No High bit flag Yes No Re-queue option Yes No Raw mode Yes No Wait mode Yes No Immediate No Yes Make copy before printing No Yes Content type No Yes Banner No Yes Title No Yes Filebreak No Yes Page length No Yes Page width No Yes Line pitch No Yes Character pitch No Yes Character set No Yes Printer class No Yes SELECTABLE DEFAULT PARAMETERS ------------------------------------------ Parameter BOSS/VX UNIX Spooler Spooler ------------------------------------------ Printer name Yes Yes Spooling option Yes Yes Class level defaults Yes No SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg017 User level defaults Yes No Form name Yes No Number of copies Yes No Priority Yes No Notify option Yes No Delete option Yes N/A Re-queue option Yes N/A Wait mode Yes N/A Raw mode Yes N/A High bit flag Yes N/A Paper length No Yes Line pitch No Yes Character pitch No Yes Stty options No Yes FORM DEFINITION AND ALIGNMENT ------------------------------------------------------- Parameter BOSS/VX UNIX Spooler Spooler ------------------------------------------------------- Paper length Yes Yes Paper width Yes Yes Line pitch Yes Yes Character pitch Yes Yes Form alignment with static data Yes Yes Form alignment with live data Yes No List of printers Yes No Translation table Yes No Slew channels Yes No Hand sheet feed Yes No Initial number of form feeds Yes No List of users allowed No Yes List of users denied No Yes Alert for mounting No Yes Printwheel/character set managment No Yes FAULT HANDLING ---------------------------------------------------- Parameter BOSS/VX UNIX Spooler Spooler ---------------------------------------------------- Fault alerting Yes Yes Write No Yes Mail No Yes Shell command No Yes Disable printer No Yes Action on resuming Resume from top of current page Yes Yes Start from beginning Yes Yes 7.0 NOTES AND CAUTIONS 7.1 INSTALLATION 1) The OpenBASIC installation script will now delete all the temporary . installation files (at the user's discretion) after an installation is SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg018 complete. In the past, only the temporary installation files for the products installed were removed. 7.2 CONFIGURATION 1) The restriction that no other BASIC processes be running when CONFIG is running has been removed. It is now possible to change the OpenBASIC configuration while other OpenBASIC tasks are running except for the number of ghosts. However, changing the "T" name of a terminal while that terminal is running OpenBASIC will not take effect until OpenBASIC is restarted on that terminal. Increasing the number of ghosts while other OpenBASIC tasks are running may cause errors trying to communicate with the added ghosts. 2) The dynamic nature of tty names and pseudo terminal names on AIX is now handled by CONFIG. When specifying the system device names, a name with parentheses around it will be taken without checking for its existence. Also, ranges of unchecked device names may be specified. For Example: tty(2-65)/0 would specify the device names tty2/0, tty3/0..., tty65/0 and pts/(0-10) would specify the device names pts/0, pts/1,..., pts/10. 3) The file "/usr/ob/tmp/.bdlck" must have read/write permission set for owner, group, and others. If not, an error -308 may occur when OpenBASIC is invoked. If you use 'tar' to backup the /usr/ob directory. structure, be sure to use the '-p' option of 'tar' when you restore to 'preserve' the file permissions as they were when the files were backed up. If you don't use the '-p' option of 'tar' the permissions will be changed to rw- r-- r--. 4) Before configuring spooled printers to be used by OpenBASIC, these printers must have been configured first at the system level (i.e. you must be able to send print jobs to the system's spooler with the lp or lpr command). Refer to the System Administration documentation for the procedure to configure the system spooler. 5) When adding a port the first prompt is whether the port is a terminal or a printer. Printer, in this case, refers only to a non-spooled printer. To configure a spooled printer, use the 's' option at the main command line to get into the spooled printer configuration menu. 6) Once a spooled printer has been configured, it cannot be modified. The only way to modify it is to remove it and then add it again. 7) When using the UNIX spooler on SCO, NCR, or GPx platforms, make sure the printer is configured at the system level for 'no banner' required. The default is banner required. With bann required, the output sent to the printer from an OpenBASIC program will either not be printed (no error will be given) or a banner page will always be printed before the job. To configure the printer for no banner required, type in the following command as 'root': /usr/lib/lpadmin -p -o nobanner 8) The program "/usr/ob/bin/bfsshmrm" must be owned by root and have SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg019 access modes of "rwsr-xr-x" in order for OpenBASIC to run properly configured. If the ownership or access modes are incorrect, changes to OpenBASIC's configuration (e.g., adding a terminal) may not take affect until the system is rebooted and may cause ERROR 17's. 9) The "-c" option should no longer be used with the "cpio" command to transfer the data from the install media to the hard disk. Some of the older revisions of the installation instructions mentioned that this option should be used. 7.3 LANGUAGE 1) OpenBASIC Level 1.0 programs must be recompiled to run under Level 3.0. In order to recompile these programs, use the following procedure: o Use the OBTT utility provided under Level 1.0 to transfer all OpenBASIC programs to a disk file. It is not necessary to place them on tape unless there is insufficient disk space. o Install OpenBASIC Level 3.0 o Run the OBTT utility provided under Level 3.0 to extract program files and recompile them. This process will assure that the program files previously run under Level 1.0 will run under OpenBASIC Level 3.0. Note that after the conversion to OpenBASIC Level 3.0, all program and data files are completely binary compatible under OpenBASIC Level 3.0 across all hardware platforms. 2) When using the 'kill' command to kill an OpenBASIC process from another terminal, do not use the "-9" option as this will cause files that are open and modified to "lack integrity". On the next 'OPEN' of these files, an ERROR 7 will be returned. To correct this condition, run 'fichk -c' on the file. This command will reset the integrity bit for the file. 3) The statement editor's insert/overwrite mode is retained from one EDIT command to the next. This is a new feature and might be disconcerting to some users that are used to the old way that EDIT worked (i.e., it used to always begin in overwrite mode). The ^T key toggles the editor between insert mode and overwrite mode. The default editing keys are different from BB90. They are consistent with the edit keys used by INPUTE and by PS field editing. 4) The editing commands have changed. Type 'edit -help' at the BASIC prompt for a list of the edit commands. 5) If you copy an OpenBASIC data file while it is opened and being modified, the file integrity bit will be set in the destination file (causing an ERROR 7 when you try to 'OPEN' or 'ERASE' the destination file). To correct this condition, run 'fichk -c' on the file. This command will reset the integrity bit for the file. 6) Copying or restoring an OpenBASIC data file may cause the destination file to be bigger than the source file (in number of blocks used). This is because the OpenBASIC data files have "holes" in them (i.e., blocks in the middle of the file that are unallocated). When the file is read during the copy operation, a block of nulls is returned for each of these "holes", which is then written to the destination file. This 'file growth' may be avoided by using the new 'obcp' and 'obrcp' SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg020 commands to copy files. 7) When saving an OpenBASIC program to a file that already exists, the user saving the program will become the owner of the file. 8) OpenBASIC Level 3.0 supports file name lengths greater than 14 characters. The length is now set by the system OpenBASIC is running on. On HP-UX the length can be either 14 or 255 and is set when the file system(s) is created. If the file name length is set to 14, HP-UX will perform silent truncation for names longer than 14 characters. This means that if a creation or open of a file greater than 14 characters is done the system will use only the first 14 characters for the file name . without notifying the user that this was done. One way to test for this in a BASIC program is to create a file with a name greater than 14 characters. Then, try to open the file with the first 14 characters of the file name. If the open succeeds, then the file system only supports 14 character file names. 9) The OPEN directive supports a new clause, OPTS="WRTHRU", on data files. If a file is opened with this clause, then whenever a write to the file occurs then the write will not return until the data has been written to disk. Any subsequent open of the same file in the BASIC process will also be with write-thru, regardless of whether or not OPTS="WRTHRU" is specified. However, if another BASIC process opens the same file without the OPTS="WRTHRU" clause then write-thru will not be in effect for writes from that process. NOTE: A significant performance impact may occur with use of this feature. 10) Any programs that are 'self-modifying', that is they use the MERGE statement to enter additional code during their execution, will run in a 'slow mode'. This is true not only during the actual MERGE operation, but for the entire execution of the program. This 'slow mode' results in a considerable performance impact and should be avoided. The same situation applies when an EXECUTE statement is used. 11) A difference in the way BOSS/VX and OpeBASIC interface with the file system can result in a file corruption when certain file operations are executed. The same file operations will not cause this file corruption to occur on other system platforms. This problem is characterized by a BASIC Error=14, with a System Error= -103 during the execution of a WRITE directive with a "KEY=" option to a keyed file. The 'FREPAIR' utility will report that the file is corrupted This problem occurs when records are written to a keyed file using the "IND=" option to a record that had been previously REMOVEd. Each file has a Free Record Chain (FRC) that is updated each time a record is removed. The data for this FRC is in the data area of the record. Once. a WRITE with an "IND=" option is done to a record that is part of the FRC, the file becomes corrupted. Applications should avoid WRITEs to a keyed file using the "IND=" option unless that record has not been previously REMOVEd. This problem will be resolved by a modification which will return an error if a WRITE with an "IND=" option is attempted to a record that has been removed. 12) The RELEASE directive will now logoff a user who is logged in on the C or Korn Shell. Previously this only worked with the Bourne shell. SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg021 13) No data will be returned when a READRECORD is executed on a file that was OPENed with 'ISZ=' to a number larger than the size of the file. For example, a file created with 'INDEXED "MYFILE",10,5, filled with data, would produce the the following results: OPEN (1,ISZ=50)"MYFILE" READRECORD (1)A$ A$ is 50 bytes long and contains data.. OPEN (1,ISZ=55)"MYFILE" READRECORD (1)A$ A$ is 55 bytes long but contains no data.. This has been fixed for the next release of OpenBASIC. 14) Documentation for UNIX command scripts provided by OpenBASIC can be found in the '/usr/ob/docs/man' directory. These files are in 'readable' man page format, the user may view these files with 'more' or 'pg', or print a hard copy for reference. Commands documented are: dedicate_p, fichk, free_p, hychk, makettyxlate, makeupdxlate, setport, updfilter, and xbasic. 7.4 TERMINAL SUPPORT 1) The TERM varirable in the environment is used by OpenBASIC Level 3.0 for setting the terminal type OpenBASIC is running on even if a terminal type is defined in the OpenBASIC configuration. The only time the terminal type in the OpenBASIC configuration is used is when either TERM is not defined in the environment or another terminal is being opened by an OpenBASIC program. 2) When OpenBASIC is started on a non-configured terminal, the FID(0) will be "T999". When multiple OpenBASIC tasks are started on non-configured . terminals, the FID(0) of these tasks will not be unique. The environment variable OBNAME may be used to set a "T" name for OpenBASIC to use. Refer to the OpenBASIC Administration Manual for details. 3) When OpenBASIC cannot find a terminal definition file for the terminal type it is running on, no error message will be given, however, mnemonics will not be supported. Any mnemonic printed to the terminal will be sent unchanged (i.e., PRINT 'CS' will send an "CS" to the terminal). 4) The only reliable way to load Function Keys in OpenBASIC is by using the 'FL' mnemonic. Applications attempting to load Function Keys using ESCAPE sequences will have unpredictable results. 5) The "intr" character (configured by 'stty') is the only character that will cause an escape in an OpenBASIC program. On most systems and terminals "intr" is the ^C character. If this is not the desired character, either an STBL function should be performed in the OpenBASIC . program to set the interrupt character or the 'stty' command should be run to set the desired key for interrupt before starting OpenBASIC (e.g. stty intr ^C). 6) When the terminal is in protect mode, the 'TS' and 'TP' mnemonic previously framed the background characters with the start background and start foreground escape sequences for the particular terminal. When the application reprints the transmitted screen, it is done in output transparency so that the escape sequences are sent without being interpreted as mnemonic sequences. OpenBASIC frames the background characters with the mnemonic sequences for start background and start foreground (i.e., "SB" data SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg022 "SF"). To prevent applications that re-print the transmitted data in output transparency from displaying the screen incorrectly, an "EO" will be placed in front of the first "SB" in the transmitted string. This will bring OpenBASIC out of output transparency so the start background, start foreground mnemonics will be interpreted correctly. The side-effect of this is that output transparency will be turned off. If the application needs to stay in output transparency after re-printing the transmitted data, it will have to re- issue the 'BO' mnemonic. 6a) For those applications that transmit the screen before putting out help text so the screen can be re-drawn again, there is an easier method now available. The 'PUSH' mnemonic can be used to save a copy of the current window (in this case the entire screen). Then the help text can be displayed. To bring back the original screen, the POP mnemonic is used. Example: 2010 PRINT 'PUSH','CS',;REM "Save the current screen" 2020 . . "output help text" . 2090 PRINT 'POP';REM "Restore the screen" 7) Attributes that leave a blank space on the terminal's screen (i.e., Wyse 50 terminals) when they are turned 'on' or 'off' will not be supported. There will be no change to the screen's display when one of these attributes is turned on. 8) The 'setport' command should be used on ports to be opened remotely or with non-spooled printers. This is because there is no 'getty' process running on the port to configure the port properly and unexpected results or errors will be obtained when read/writing these ports. 9) On HP systems, if a user does not have 'read' and/or 'write' access on a. port and the user attempts I/O on the port, an ERROR 14 will be returned. rather than the correct ERROR 18. 10) When input transparency (BI) is in effect, the function and edit keys loaded by the 'FL' and 'EL' mnemonics will not return their loaded values. Also, any control (motor-bar) keys which have been mapped to other keys (either F1-F4, or by setting them in the 'obinfo' file), will not return the hex values 1C-1F as expected from these keys. Instead, the actual characters transmitted by these keys will be returned. 11) For the DT-4309 and DT-4312 terminals, when an 'FL' or 'EL' mnemonic is issued for the first time or with the "OFF" parameter, the cursor will end up in the left hand column of the line the mnemonic was executed on. Therefore, it is best to perform these mnemonics with the cursor in the left hand column. Sending out an 'RS' mnemonic under these conditions will re-sync the screen with OpenBASIC. Function keys 1-4 are loaded so that they return CTL-I through CTL-IV when OpenBASIC is invoked. Any previous definitions in these 4 function keys will be lost. 12) To make sure that the function keys 1-4 return CTL-I through CTL-IV respectively (before using the 'FL' mnemonic), use the "obtput" command to load the function keys on the terminal with their default values. The command to enter is: SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg023 >obtput u2 0 13) Occasionally, when entering the 'vi' editor from OpenBASIC, the screen display is incorrect. To correct this display problem, exit the 'vi' editor, then execute the following command: >!stty tab3 7.5 PRINTER SUPPORT 1) The "OPTS=" clause on an OPEN to a spooled printer is no longer ignored in OpenBASIC Level 3.0. The options string will be passed to the spooler command. Note that these options will be system specific. An illegal option may cause an error on the OPEN or subsequent write to the printer. 2) Spooled and non-spooled printing cannot be done through the same OpenBASIC printer name. However, the same physical device (i.e., a printer on /dev/ttyx) can be configured twice in OpenBASIC (i.e., P1 in spooled mode and P2 in non-spooled mode). Therefore, jobs printed to P1 will be spooled and jobs printed to P2 will not be spooled but will both go to the same printer. NOTE: The above scenario should be used with caution. There is no coordination between the two devices. In the above example if a job was printing to P2 (non-spooled) and another process submitted a job to P1 (spooled), the P1 job would begin on top of the P2 job. 3) When performing non-spooled printing to a printer on the system that is also a spooled printer, make sure to use the "/usr/ob/bin/dedicate_p" and "/usr/ob/bin/free_p" programs to guarantee exclusive access to the printer. 4) The program "/usr/ob/bin/updfilter", which is used to print files with mnemonics to a printer, will not work with slave printers. 5) When using the UNIX Spooler on SCO, NCR, or GPx platforms, OpenBASIC may not be able to print successfully to a spooled printer unless the user is logged on as 'root'. To correct this problem verify the device file has read and write permission for all users, and that the printer is configured in the UNIX spooler as 'Banner not required'. Log on to the system as 'root'. # lpstat -t to determine the printer's device name # chmod 666 /dev/device_name to change usage rights # lpstat -lp printer_name to determine 'banner status' # lpadmin -p printer_name -o nobanner to set 'Banner not required' 6) When using the HP-UX Spooler with an MAI printer, the file "maiprinter" is available for configuring your spooled printers. This model sets the printer port configuration to 9600 baud, 7-bit, odd parity. If "dumb" is used for the printer model, then the port will be configured for 300 baud, 8-bit, no parity. During the OpenBASIC Base tape installation process the "maiprinter" file is copied to the /usr/spool/lp/model directory. Once the OpenBASIC Base tape installation process is complete, change the model file to "maiprinter" for spooled printers to be used by OpenBASIC, for example: # /usr/lib/lpadmin -p -m maiprinter SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg024 7.6 UTILITIES 1) The display of filenames in the filelist utility (or when working with multiple files in the BUSI utilities) is somewhat confusing. The display shows the files for which the action is taking place. It does not show . the current list of files unless you push the "DISPLAY" function key during an add operation. For example, when you are adding files, the list shows the files that are being added. When you delete files, the display shows the files that are being deleted. 7.7 PRESENTATION SERVICES 1) The PS product under OpenBASIC resides in the /usr/ob/PS directory (instead of /usr/mbf/PS). Therefore, to run the menu or form builder, set your prefix to include /usr/ob/PS and /usr/ob/PS/tools. To run the demo programs, include /usr/ob/PS and /usr/ob/PS/psdemo in your prefix list. If you have previously been using PS under BB90, you can simply copy your form, menu and help files from /usr/mbf/PS to /usr/ob/PS. Run the program 'BUILDMENU' to rebuild your menu files under OpenBASIC. No conversion is necessary for form or help files. PS file names follow these conventions: Form Files FS1. FS2. FS3. FS4. FS. Menu Files MSMF. MSSF. Help files MSH1. MSH2. 7.8 BUSINESS DATA 1) Before installing the Business Data package, the "Base" module must be installed. 7.9 PC-LINK 3.0*22 NOTE: PC-LINK 3.0*22 is the only level supported for use with OpenBASIC. Please read Field Bulletin 696 for full details of known problems and workarounds. 1) When running PC-LINK, the 'stty' parameter 'ixoff' should never be set. Refer to the stty(1) documentation for more information. 2) When using PC-LINK, OpenBASIC's terminal type should be set to "pclink", and the 'stty' parameter 'intr' should be set to ESCAPE (normally it is set to ^C). File transfer was tested with 7-bit ascii data and the following 'stty' settings ('stty' set in user's .profile file) on an HP 9000: speed 9600 baud cs7 oddp hupcl brkint -inpck icrnl onlcr tostop tab3 iexten echo -echoe echok SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg025 intr ^[ 3) The following setup for PC-LINK was used during testing when accessing OpenBASIC is: Host System: GPX Terminal Type: 4313 Communications: Data: 7 Baud: 9600 Parity: Odd Stop: 1 Flow: Xon/Xoff 4) For the DT-4309 and DT-4312 terminals, when an 'FL' or 'EL' mnemonic is . issued for the first time or with the "OFF" parameter, the cursor will end up in the left hand column of the line the mnemonic was executed on. Therefore, it is best to perform these mnemonics with the cursor in the left hand column. Sending out an 'RS' mnemonic under these conditions will re-sync the screen with OpenBASIC. 7.10 NetServer 1) There is a maximum of eight active connections within any instance of an OpenBASIC NetServer client. An active connection is any connection to a remote host (established by use of a file OPEN directive). Each connection can have more than 1 open file to the same host, and that still is only one active connection. If multiple remote systems are accessed within a single OpenBASIC process, each remote system is an active connection. The number of open files within an instance of OpenBASIC continues to be limited by the allowed number of open files for each instance of OpenBASIC. Every active connection invokes a separate server process ("rfsd") at the server system. 2) If OpenBASIC NetServer is to be used to communicate with proprietary platforms (MPx or Advanced Series) using the OpenMAGNET Gateway, avoid the use of the new directives and options available with OpenBASIC. They will not be supported on the MPx/Advanced Series systems. 3) If OpenBASIC NetServer is to be used to communicate with proprietary platforms (MPx or Advanced Series) using the OpenMAGNET Gateway, avoid the use of larger key sizes available with OpenBASIC. Key sizes larger than 56 characters cannot be supported in mixed (proprietary/UNIX) networks. 4) The OpenBASIC NetServer Programmer Guide refers to library level functions which can be accessed in the server software. This feature will be available in a future release and is not available in the OpenBASIC NetServer Level 3.0 release. 5) On the SUN platform, and Error 101 (BASIC error 0) may be seen. This is a problem under some circumstances of either file or record locking. A correction for the SUN operating system must be obtained to avoid this problem. The fix is available as Patch 08 to the SUN 4.1.1 Operating System; consult your SUN representative for the correct revision level for your site. 8.0 CONVERSION The following section provides supplemental information to assist in the conversion of existing applications from other forms of BASIC to OpenBASIC. For a complete discussion of conversion steps see Appendix E - Asynchronous Transport Package, Appendix F - Creating BQR Filelists, and Appendix G - SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg026 Tape Transport Utility (OBTT) of the OpenBASIC Administration Manual. The majority of conversions will require the use of the OBTT and/or the ATP package utility. These utilities are part of the Developer's Toolkit module. NOTE: It is strongly recommended that files be validated on the source system before the conversion. This step is to insure the integrity of the files prior to the conversion process. When the source system is an SPx with a 1/4" tape, and the receiving system has a 1/4" tape and is any type EXCEPT an HP, the following conversion process may be used: Run OBTT on the SPx, send the output to a disk file rather than the tape device. Insert a tape in the 1/4" tape device. Execute 'tlist' to rewind the tape, ESCAPE out of 'tlist'. Write the OBTT output file to the tape with the following command: cat OBTT_outputfile >/dev/cs Restore the contents of the 1/4" tape on the receiving with the following command: dd if=/dev/tape_device of=OBTT_file {bs=blocksize} Where: if = the name of the tape device file of = name of the OBTT file to create on the receiving system bs = blocksize, 512 is the default. You can 'speed up' the transfer of data from the tape to the OBTT file by specifying a larger blocksize. The blocksize must be a multiple of 512. Run OBTT on the receiving system specifying input to come from the OBTT_inputfile rather than from the tape device. Both the OBTT and ATP transport packages will set the maxrecfile value to zero, thus automatically taking advantage of unlimited file growth under OpenBASIC. If the user wishes to maintain a limit on the maximum number of. records allowed in a file, the following change must be made in the appropriate transport package: Program OBTT: Statement 60 sets the variable 'MAX0'. If 'MAX0=1' then files will have their maxrec value set to zero and allow unlimited file growth. If 'MAX0=0', the maxrec value will be carried forward from the source platform and files will have a maximum number of records allowed. Program ARP: Statement 25 sets the variable 'NOMAX'. If 'NOMAX=1' then files will have their maxrec value set to zero and allow unlimited file growth. If 'NOMAX=0', the maxrec value will be carried forward from the source platform and files will have a maximum number of records allowed. 8.1 BB90 TO OpenBASIC The following items identify differences between BB90 and OpenBASIC. Some helpful hints are also included to aid the programmer when making these changes. o When GPx is the source platform, data files may be brought over to the SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg027 target UNIX platform with tar or cpio. This is true for all versions of OpenBASIC. The advantage is that OBTT is not required. The disadvantage is that backing up the data files may cause the destination files to be larger than the source files. See Item 6 under 'Notes and Cautions' for the OpenBASIC Language for more information. This problem will not be experienced if OBTT is used. Program files may be transported with tar or cpio only with OpenBASIC version 2.0 and above. Once the program files have been transported with TAR/CPIO, OBTT should be run to recompile the 'BB90' programs into 'OpenBASIC' programs. Although the 'BB90' programs will execute without error on the receiving OpenBASIC system, failure to complete the recompilation process will result in a performance penalty on the receiving system. o MPx allows a '$' after functions such as PNM$, CHR$ and HTA$. The '$' is optional on MPx but not allowed on OpenBASIC. o Some of the System commands are different and must be changed. Some examples are 'SUBMIT', 'DELETE', 'START' and 'COPY'. o The 'EXECUTE' directive will not work in a called program. o The only reliable way to load Function Keys in OpenBASIC is by using the 'FL' mnemonic. Applications attempting to load Function Keys using ESCAPE sequences will have unpredictable results. o The 'ERASE' and 'INITFILE' directives will not work unless the file name is in the user's primary prefix (first directory in the list) or the name is fully specified. The MPx will search your prefix list for the first instance of the file name and then erase it. Many applications still look at the FID(4,6) to get the filename. It is recommended to look at the FID(35,128) to get the full path name. You may need to delete the trailing nulls. o When starting a ghost task, you must specify a start size prior to the program name. o The 'PPUSH' and 'PPOP' commands are not available. Additionally, 'SYSTEM "PREFIX .XXX"' will not work. You must use the 'PREFIX' directive. o All functions such as 'ASC' and 'CHR' need to be checked and changed as required. You will need to subtract 128 from the value given when converting to low order ASCII (This is a difference from MPx). o Any 'GO SUB' or 'INIT FILE' directives need to have the space removed so . that they read as 'GOSUB' and 'INITFILE'. o System functions that may be different are the 'FID' and 'TCB' functions.. You should replace the 'FID' with the 'ATTR' functions. Check the BB90 reference manual for differences. o 'SETDAY' and 'SETTIME' require root privileges. o Binary data must be converted. If a file contains both binary and text data, then transport it as text. Do the conversion on the target system by reading the data, using the 'XOR' function with $80$ for the length of the data field which contains the binary data and write the data back. See the following program as an example: This program will convert binary fields that are in a text file after a conversion. This program assumes that all files were transported as text. In the example below, a keyed file is used, however, any type can be used SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg028 0010 BEGIN 0020 OPEN (1) "your_file" 0030 LET K$=KEY(1,END=16000) 0040 READ (1,KEY=K$)A$,B$,C$,D$ 0050 REM "The next two statements do the bit flip" 0060 REM "The first bit is flipped high to low or low to high. 0080 DIM X$ (LEN(B$),$80$) 0090 LET B$=XOR(B$,X$) 0100 WRITE (1,KEY=K$)A$,B$,C$,D$ 0110 GOTO 30 o Packed data should be transferred as text data. The programs used to pack and unpack them should also be modified. The following is an example of how the programs should differ: BB90 Date packing: LET P$=CHR(NUM(D$(7,2))+1)+CHR(NUM(D$(1,2))+1)+ CHR(NUM(D$(4,2))+1) Date unpacking: LET D$=STR((ASC(P$(2,1))-1):"00")+"/"+ STR((ASC(P$(3,1))-1):"00")+"/"+STR((ASC(P$(1,1))- 1):"00") OpenBASIC Date packing: LET P$=CHR(NUM(D$(7,2))+129)+CHR(NUM(D$(1,2))+129)+ CHR(NUM(D$(4,2))+129) Date unpacking: LET D$=STR((ASC(P$(2,1))-129):"00")+"/"+ STR((ASC(P$(3,1)) 129):"00")+"/"+STR((ASC(P$(1,1))- 129):"00") o File names may be restricted to 14 characters depending upon the destination platform file system file system. o Access rights need to be changed to UNIX format. o Starting another terminal or ghost will give that process the prefix list of the current process that started it and not the user default list as was the case on MPx. o Reserved words cannot be used as a string or function name. Examples are PACK$, FIELD$, DAY$, FNTIME$, PNM$. o The 'BO' and 'EO' mnemonics may be required on some statements when hex strings are used for terminal functions such as clear screen. o Check programs for usage of fully specified path names when 'OPEN', 'RUN', 'START' or 'CALL' directives are used. Changes will be required to use the new directory name. o Protected or 'PSAVED' programs cannot be transported. You must transport the source code which may be protected again after the conversion. o If OBTT is required on the GPx, you can move the OBTT.STR file which is a string version of OBTT to the GPx and then run 'vmerge' on it to make a SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg029 BASIC program. 8.2 BBX TO OpenBASIC The following steps provide a method of converting existing BBx applications to OpenBASIC. This procedure assumes that there are no encrypted programs.. Encrypted programs cannot be transferred. The level of effort required to complete steps 6 and 7 depend largely on how many BBx specific features, which are not part of OpenBASIC, were used. 1) Install OpenBASIC on the host system (see section 2.0) of this document. 2) While in BBx, 'MERGE' the OBTT string file, '/usr/ob/bin/OBTT.STR' and save it. This new code file will be a version of OBTT which you can run under BBx. 3) Run OBTT under BBx, giving it the names of all of the program and data files previously running as the BBx application. 4) When OBTT prompts for a 'TAPE DRIVE:', you may optionally enter a file name which will store all output into a single file. This may be preferred if the target system is also the source system. 5) Run OBTT under OpenBASIC, taking the data from the disk file created under step 4. OBTT will convert the programs and data into OpenBASIC format. 6) Optionally, run the '/usr/ob/bin/FLAGIT' program which will identify some (not necessarily all) areas which might need syntax changes to run properly. Note that the 'FLAGIT' program provided with OpenBASIC is designed to flag MPx/OpenBASIC discrepancies. 7) Test the application and apply any fixes necessary. ADDITIONAL NOTES: Multi-Keyed files are supported in OpenBASIC, however, Multi-Keyed files have been implemented differently in BBx and OpenBASIC. Therefore, BBx Multi-Keyed files will NOT be transported to OpenBASIC. The "% COMPLETED" field in the on-line display is not shown when saving STRING files and PROGRAM files. When restoring these files, the "% COMPLETED" field is misleading because it uses the total number of records to calculate this number. For STRING and PROGRAM file types, the number of records in every file is 1. The program requires that you have the directory containing the file bbx3 in the search path variable $PATH. If not, programs will not be stored to tape. 8.3 OBTT PERFORMANCE The following tables are provided to assist you in determining how long a conversion to OpenBASIC might take: Per Record Performance Disk to Disk ---------------------------------------------------- File System Save/ Record Records Type Type Restore Size per Minute DIR HP 835 Save 1000 1621 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg030 DIR HP 835 Restore 1000 1875 DIR HP 835 Save 100 2307 DIR HP 835 Restore 100 1818 DIR HP 837 Save 1000 7826 DIR HP 837 Restore 1000 10588 DIR HP 837 Save 1000 7792 DIR HP 837 Restore 1000 11111 SORT HP 837 Save 20 14634 SORT HP 837 Restore 20 12500 SERIAL HP 837 Save 1000 10000 SERIAL HP 837 Restore 1000 15789 IND HP 837 Save 1000 10000 IND HP 837 Restore 1000 15789 Per File Overhead ----------------------------------------------------------- File System Save/ Records Type Type Restore Per Minute ------ ------ ------- ----------------------- SERIAL HP 837 Save 55 seconds per100 files SERIAL HP 837 Restore 33 seconds per 100 files DIR HP 837 Save 59 seconds per 100 files DIR HP 837 Restore 33 seconds per 100 files Per Record Performance Tape to Disk ------------------------------------------------------ File Type System Save/ Record Records Tape Type Restore Size Per Size Minute --------- ------ ------- ------ ------- ----- DIR HP 837 Save 1000 5607 10 MB DIR HP 837 Restore 1000 6000 10 MB DIR HP 837 Save 1000 5960 60 MB DIR HP 837 Restore 1000 7500 60 MB SORT HP 837 Save 20 14051 5 MB SORT HP 837 Restore 20 12500 5 MB SERIAL HP 837 Save 1000 6949 60 MB SERIAL HP 837 Restore 1000 10256 60 MB IND HP 837 Save 1000 7200 60 MB IND HP 837 Restore 1000 10000 60 MB DIR HP 837 Save 500 8294 30 MB DIR HP 837 Restore 500 11464 30 MB SERIAL HP 837 Save 500 10112 30 MB SERIAL HP 837 Restore 500 15720 30 MB Raw DAT Tape Read Rate 60 MB in 6:22, or 9.4 MB per minute. Notes on Performance Measurements For OBTT The most important items effecting OBTT performance, in order of importance, are: o CPU performance o Number of records to be transported o Average record size SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg031 o Diskto disk vs. tape to disk Conversion time using OBTT for the data file configuration identified below follows. This estimate is based on: o Restore time on the HP 837 o Tape to disk operations o Single threaded operations (one MPx, one HP) Index file records (613483) / 10000 Records per minute = 61.3 minutes Serial file records (1094468) / 15720 Records per minute = 69.9 minutes Direct file records (9738676) / 11464 Records per minute = 849.5 minutes Sort file records (4512047) / 12500 Records per minute = 361.0 minutes Total = 1341.4 minutes or 22.4 hours. 9.0 PERIPHERAL SUPPORT 9.1 TERMINAL SUPPORT The following is a list of supported terminals on OpenBASIC version 3.0: MAI DT-4309 Rev G F/W, No slave printing MAI DT-4312 Slave printing with Rev K F/W MAI DT-4313 Slave printing with Rev E F/W MAI DT-4314 Slave printing with Rev L F/W MAI DT-4315 Slave printing with Rev A F/W HP 700/60 VT220 Emulation is recommended. HP 700/92 HP 700/41 HP 700/43 HP 700/44 VT220 Emulation is recommended IBM 3164 (Color) ADM 31 DEC VT100/220 (and compatibles) IBM 3151 SUN Sparc Station Televideo 905/925/950 QTV 101 (Qume) Wyse 50 Wyse 370 (Color) Any ANSI Standard PC-Link No file transfer PC/TERM No file transfer XTERM 9.2 PRINTER SUPPORT The following is a list of supported printers on OpenBASIC version 3.0: PT-4201 Requires protocol converter box PT-4214 PT-4215 PT-4217 PT-4218 PT-4220 Must be serial. Conv. kit avail. PT-4221 Conv. to Centronics, kit available. PT-4222 PT-4223 PT-4224 PT-4225/26 PT-4227/28 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg032 PT-4229 PT-4230 hp2564 HP High Speed System Printer hpljII HP Laserjet II/IIP hpljIII HP Laserjet III hpplot HP Plotter hpqj HP Quiet Jet hprw480 HP Rugged-Writer 480 ibmpro IBM Proprinter X24E/XL24E isp Industry Standard Printer spe Special Transparent-Output Printer NOTE: All printers must be industry standard protocol. Additionally, HP does not support parallel printers on operating systems prior to HP-UX 8.0. 10.0 OpenBASIC UTILITIES Complete information on the OpenBASIC utilities is contained in Appendix C of this document. Appendix C contains a re-print of Sections 4, 5, 6, and. 7 of the OpenBASIC Administration Manual M0239. 11.0 RELATED DOCUMENTATION Marketing Announcement #1107 - OpenBASIC Level 3.0 The following manuals comprise the package of OpenBASIC documentation: OpenBASICtm Reference Manual, M0233 - Volumes I and II OpenBASICtm Quick Reference Card, M0238 OpenBASICtm Administration Manual, M0239 OpenBASICtm Connection Reference Manual, M0240 OpenBASICtm Developer's Toolkit, M0241 MAI Business DATAtm User Guide (for OpenBASICtm), M0242 OpenBASICtm NetServer Programmer Guide, M0227 NOTE: Appendixes not included in this FIB, refer to the OpenBASIC Administration Manual M0239C or the hardcopy of Software Announcement 198. ORIGINATOR: Chris Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB026 Pg033 FIB 00027 MAI COMPANY CONFIDENTIAL 07/16/93 *** Solaris 2.x Non-root user cannot 'dedicate_p' or 'free_p' *** Problem: Solaris 2.x will not allow a non-root user to dedicate or free a printer because of the permissions on the /usr/bin/disable and /usr/bin/enable commands. Fix: To allow non-root users to dedicate and free printers, do the following: login as root cd /usr/bin . chmod 4555 disable chmod 4555 enable ls -l disable will display -r-s-r-xr-x 1 lp lp 41792 Jul 18 12:00 disable dedicate_p and free_p will now function for non-root users. ORIGINATOR: Dan Arteritano SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB027 Pg001 FIB 00028 MAI COMPANY CONFIDENTIAL 08/09/93 *** Error 62s and OpenBASIC 4.0*25 release *** Subject : OpenBASIC 4.0*25 Type : Informational Purpose : Inform the field of OpenBASIC 4.0*25 MAI is shipping to all OpenBASIC 4.0*19 sites an update to this release. OpenBASIC 4.0*25 corrects the following problems : On previous OpenBASIC releases when you opened a spooled printer it would create two pipes, but when you closed the printer it only released one pipe. If you had a lot of printers or you opened and closed printers you might get a BASIC error 14 or 62 with a system error of -9 or -24. If you have a HP system and OpenBASIC Netserver and you upgraded to HP-UX 9.0 you will also have to upgrade to OpenBASIC 4.0*25. HP did a changed on HP-UX 9.0 in network and this change affected the way OpenBASIC Netserver worked. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB028 Pg001 FIB 00029 MAI COMPANY CONFIDENTIAL 10/08/93 *** OpenBASIC NetServer 3.0*11 for GPx70, HP,SUN [WPSF 758] *** TYPE: Informational PURPOSE: To inform the field of the release of OpenBASIC NetServer Level 3.0*11. for GPx/70, HP, and SUN platforms. This release affects only the OpenBASIC NetServer product and does not affect the release level or content of any other OpenBASIC product. OpenBASIC products on the *10 release can co-exist with the NetServer product on the *11 release. Orders placed using the Market Codes for NetServer 3.0*10 will be shipped NetServer 3.0*11. This NetServer release corrects one problem: Occasionally a terminal can 'hang' when writing a record with a NULL key to a file on a remote system. PROCEDURE: The installation process has not changed for NetServer 3.0*11. Follow the instructions in the OpenBSIC Level 3.0 Software Announcement 198 or in the OpenBASIC Administration Manual. RELATED DOCUMENTATION: OpenBASIC Level 3.0 Software Announcement 198 OpenBASIC Administration Manual, M0239B OpenBASIC NetServer Programmer's Guide, M0227A All information on NetServer 3.0*10 contained in the documents referenced above applies to NetServer 3.0*11. ORIGINATOR: Chris Adkins SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB029 Pg001 FIB 00030 MAI COMPANY CONFIDENTIAL 10/18/93 *** Bar Code printing problems after conversion to OpenBASIC *** SYMPTOM: After conversion to OpenBASIC a bar code program which worked on previous BASIC levels now prints question marks (?) in place of alpha text. CAUSE: If an end output transparency mnemonic ('EO') occurs in the middle of a print statement the OpenBASIC printer driver inserts a ribbon select escape sequence (ESC r #) which confuses the printer. Examples (from Field Bulletin 427): Failing 3 of 9 bar code program: 10 OPEN (1) "LP" 20 PRINT (1)'BO',$01011B2102140119$,'EO', 30 PRINT (1)'BO',$01011B281D00,'E0',"*1234567890*" Working 3 of 9 bar code program: 10 OPEN (1) "LP" 20 PRINT (1)'BO',$01011B2102140119$,'EO', 30 PRINT (1)'BO',$01011B281D00,"*1234567890*",'EO' FIX: Move the 'EO' mnemonics to the end of print lines. NOTE: Since the 'EO' mnemonic can be placed in any position on a print line the symptoms may vary. ORIGINATOR: Norm Jones SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB030 Pg001 FIB 00031 MAI COMPANY CONFIDENTIAL 01/04/94 *** Patches available for OpenBASIC 4.x *** Subject : OpenBASIC patch fixes available. Author : Joe Melendez Type : Informational Purpose : Inform the field of three (3) OpenBASIC 4.x patches that are available to correct the following problems : 1. False error 0 when extracting records. This was reported on a SCO UNIX system. 2. Error 31 problems. Reported on SCO UNIX system with OpenBASIC 4.x. (Does not fail with OpenBASIC 3.x). 3. Ghost tasks trying to start itself (GHOST "G0" trying to do : START 100,"pgmname","G0") does not report error 0 and will hang ghost task. Reported on SUN. The above patches are for systems running OpenBASIC 4.x. These patches will be released in the next OpenBASIC release. If you have a customer reporting the above problems you can contact MAI NSC and we will send the patch to the customer after validating OpenBASIC support contract. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB031 Pg001 FIB 00032 MAI COMPANY CONFIDENTIAL 01/31/94 *** SPx to OpenBASIC conversion correction *** Subject : SPX to OpenBASIC using OBTT Type : Informational Purpose : Clarify and correct SPX to OpenBASIC instructions. The OBTT installation document (# 916929) for SPX has an incorrect step. Step 8 (page 4) Should be "cat filename > /dev/cs" (original doc. is missing the redirect or greater then sign). Note : The filename used in the "cat" instruction is the filename given in step 2 (page 3 in Doc.). To restore this file on the UNIX system you should use : dd if=/dev/tapedevicename of=/filename Filename should be the same used in step 2 & 8 in the install doc. On some UNIX system you might have to add : ibs=16k (after: of=/filename). NOTE : On RPx7000 systems you might get the following error message : "dd : READ I/O error" Check to see if the restored file has the same number of bytes as in the SPX. If it does you can ignore this message. If not try restoring the file again. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB032 Pg001 FIB 00033 MAI COMPANY CONFIDENTIAL 02/14/94 *** How to release OpenBASIC in various unix shells *** TYPE : INFORMATIONAL PURPOSE: Inform the field of how to release OpenBASIC in different UNIX shells. When starting OpenBASIC in a `/bin/sh' shell environment if you type "quit" when in OpenBASIC it will release you to a UNIX prompt, if you type "release" in OpenBASIC it will log you off the system and you will be at the login prompt. When starting OpenBASIC in a `/bin/ksh' shell environment, typing "quit" or "release" in OpenBASIC will release you to a UNIX prompt. If the SYSTEM ADMINISTRATOR wants his operators to be at a login prompt when they type "quit" or "release" from OpenBASIC you can : 1. Modify the users .profile and after starting /usr/ob/bin/basic add a new line which will say "exit". Ex: /usr/ob/bin/basic . exit or 2. Modify the users .profile and add "exec" in front of /usr/ob/bin/basic (exec /usr/ob/bin/basic ...) you do not need to add a new line with "exit". After modifying the .profile (option 1 is recommended by NSC) typing "release" or "quit" in OpenBASIC will release you to the login prompt in either shell environment. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB033 Pg001 FIB 00034 MAI COMPANY CONFIDENTIAL 05/11/94 *** Err 12 in OpenBASIC GUI demo *** Subject : OpenBASIC GUI demo error Type : Informational Purpose : To inform the field of an error when running OpenBASIC GUI demo When running the OpenBASIC GUI demo you will get an error 12 in statement 340 which indicates that the program "d_bitmaps" is not available. You should comment out (rem) or remove this statement fron the demo program since the program d_bitmaps was not released in the official version of OpenBASIC GUI. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB034 Pg001 FIB 00035 MAI COMPANY CONFIDENTIAL 05/11/94 *** Shell script to kill OpenBASIC tasks *** Problem: OpenBASIC files become corrupted if a "kill -9" is used to kill a BASIC process that has OPEN files. These examples have been tested with SCO UNIX. Other UNIXes may have different "ps" formats or different files that are used during system shutdown. Workaround: A "kill" without the "-9" option can be used to "gently" kill the process without corrupting files, thus preventing error 7s. This can also be put into the "shutdown" procedure to prevent file corruption if files are OPEN when the system is shutdown. To kill a process enter: ps -ef |pg The process stack will display, find the process which needs to be terminated and find the process id number. Let's say the process id number(pid) is 235, enter: kill 235 To kill BASIC processes during the system shutdown do the following: vi /etc/rc0 After the line "kill -15 -1" add the following lines: sleep 10 kill `ps -e | grep basic | grep -v grep | awk '{print $1}'` To kill GHOST processes also enter: sleep 10 kill 'ps -ef |grep ghost | grep -v grep | awk '{print $2}'` Save and exit the file. ORIGINATOR: Dan Arteritano SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB035 Pg001 FIB 00036 MAI COMPANY CONFIDENTIAL 06/10/94 *** Installing OpenBASIC for DOS on a Novell File Server *** Type : Informational Purpose: It has been determined that the manual, number 0281A - Installing Open BASIC on DOS, is difficult to follow when installing on a file server. The following is a simplified outline of the steps required to perform the install and is to be used as a supplement to the manual. 1. Login to the novell server ss the 'supervisior' user from any pc on the network. The pc should have a floppy drive that is compatible with the media used for the OpenBASIC distribution. 2. Determine which drive are local drives and which drive are network drives. Use 'map' to find the network drive where you want to install OpenBASIC. 3. Insert the OpenBASCI base floppy in the pc's floppy drive and change your current directory to that drive. 4. Run 'setup' from the floppy drive. 5. Enter 'i' to install OpenBASIC. 6. Enter the drive to install the product. This should be the network drive you determined in step 2 above. 7. Choose the products to install, usually 'openbasic and all drivers'. 8. Enter Registration number and company name when prompted. 9. Enter the Authorization Key when prompted and 'cr' for upgrade key. 10. Configure automatically runs at this point. A message saying : '\usr\ob\etc\devices does not exist, create it ? = no' is displayed. You should answer 'no' to this prompt and then the installation will be complete. 11. Optionally install the utilities and Development Tool Kit by running the setup program as described above. 12. The supervisor should setup each user so that they have access to the directory where OpenBASIC resides. The next steps are required to configure each of the pc's. 1. Login to each of the pc's as the normal user. 2. From each pc, the user should run the "config" program and define how his pc is configured for OpenBASIC. 3. When "config" is run, answer YES to create a new configuration. 4. Define your devices as shown in the example below: T0 = CON LP = LPT1 4229 S7 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB036 Pg001 P1 = |rsh unixhost lp -dlp 4218 S7 Note: Each pc must have a unique "T" number or else an error 308 will occur if a second pc trys to go into BASIC with the same number as one already in. 5. Exit and save configuration. 6. Enter "YES" to update the pc's 'autoexec.bat' file. This puts an entry in the file which sets the variable 'obconfig'. Example : SET OBCONFIG=U:\USR\OB\ETC\OBCONFIG.004 Each pc will have its own OBCONFIG file. 7. Reboot the pc and start basic once logged on to the server. Print FID(0) to verify the terminal is the correct "T" number. 8. Go to the next pc and repeat these steps. End of Bulletin. ORIGINATOR: Dale Jensen SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB036 Pg002 FIB 00037 MAI COMPANY CONFIDENTIAL 06/13/94 *** OBDOS, Error 14, System Error -923 OPENing a printer on a Novell Server *** Subject: Error 14 System Error -923 Author: Dale Jensen Opening Printer on DOS PC using Date : 06/10/94 OpenBASIC From Novell Server Type: Problem Purpose: To provide a solution to the problem described in the subject above. Symptom: An error 14 (system error -923) is given when trying to open a printer configured on a PC running OpenBASIC from a Novell server. Cause : This problem occurs when the user does not have their current prefix list set to the Novell networked disk drive. When the printer is opened, basic will look for the printer translation and PDF files starting from the "\" directory. If the search patch is not set up to include the network drive first, those files are not found. Solution: Before defining the printers for use with BASIC on the PC's, a change to the program "/USR/OB/BIN/CONFIG" should be made. The change is as follows to line number 6237: Before 6237 LET EP=POS(":"=OBDIR$); IF EP>0 THEN LET PATH$=OBDIR$(EP+1) ELSE LET P 6237:ATH$="\USR\OB" ------ After 6237 LET EP=POS(":"=OBDIR$); IF EP>0 THEN LET PATH$=OBDIR$ ELSE LET PATH$="\USR 6237:\OB" This problem will be fixed in a later release. ORIGINATOR: Dale Jensen SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB037 Pg001 FIB 00038 MAI COMPANY CONFIDENTIAL 06/17/94 *** OBTT, Error 13 on MPx *** Subject : OBTT on MPX error. Type : Problem Purpose : Inform the field of a problem with OBTT on MPX. Symptom : When using OBTT on MPX to create a FILELIST you will get the following message after answering the option to initialize : "Unexpected error 13 encountered, label not written ,'cr' to continue" Solution : Statement 370 must be changed with the following : 370 OPEN(1,ERR=410)TD$; IF ATTR (1,"SHORT ORGANIZATION")<> "DEV" LOCK (1) This will be corrected in the next release of OBTT for MPX. end of bulletin. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB038 Pg001 FIB 00039 MAI COMPANY CONFIDENTIAL 06/22/94 *** Error 5's may be indication of disk errors *** SYMPTOM: Error 5's displayed in OpenBASIC. These normally indicate an async transmission error but have also shown up when disk read errors occurred. PROBLEM DETERMINATION: Check the system console or messages file (ex /usr/adm/messages) for disk read errors. FIX: Reformat or replace the disk drive if errors occur. ORIGINATOR: Norm Jones SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB039 Pg001 FIB 00040 MAI COMPANY CONFIDENTIAL 06/30/94 *** Installing OpenBASIC NetServer on the GPx 70 *** SUBJECT : OPENBASIC NETSERVER INSTALLATION AUTHOR : DALE JENSEN ERROR MESSAGES ON GPX 70 DATE : 6/23/94 TYPE : INFORMATIONAL PURPOSE : TO INFORM THE FIELD OF OPENBASIC NETSERVER INSTALLATION ERROR MESSAGES SEEN ON THE GPX 70 SERIES SYSTEMS. DETAILS : WHEN UPGRADING OR REINSTALLING OPENBASIC NETSERVER LEVEL 4.2, ERROR MESSAGES ARE DISPLAYED BUT CAN BE IGNORED. THE ERRORS ARE AS FOLLOWS: cat: output error (-1/3540 characters written) Broken pipe cat: output error (-1/5028 characters written) Broken pipe THESE ERROR ARE DISPLAYED JUST PRIOR TO THE PROMPT TO ENTER THE OBNET REGISTRATION KEY. THESE ERRORS ARE DUE TO THE INSTALLATION SCRIPT NOT HANDLING THE FACT THAT SOME OF THE FILES USED BY NETSERVER ARE ALREADY PRESENT OR UPDATED. THE SCRIPT WILL CONTINUE AND THE INSTALLATION WILL COMPLETE. THIS PROBLEM WILL BE FIXED IN THE NEXT RELEASED LEVEL OF OPENBASIC NETSERVER. ORIGINATOR: Dale Jensen SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB040 Pg001 FIB 00041 MAI COMPANY CONFIDENTIAL 07/20/94 *** Unable to access OpenBASIC after full reinstall of OS/data *** SYMPTOM: After reinstalling the Operating System and data (typically after drive 0 replacement) OpenBASIC cannot be accessed, message indicating that the configuration database is corrupted. FIX: login as root and type the following command: # activate OBASIC re-enter the activation keys as requested OpenBASIC should now work as before. ORIGINATOR: Norm Jones SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB041 Pg001 FIB 00042 MAI COMPANY CONFIDENTIAL 08/11/94 *** OBTT 4.2 on DOS - files names are garbaged *** Subject : OpenBASIC 4.2 OBTT on DOS Type : Problem Purpose : Inform the field of a problem using OBTT on DOS and how to correct this. There is a problem (file names to be converted are garbage) in the OpenBASIC 4.2 version of OBTT on DOS. The following lines need to be changed in order for it to work. These changes will also be made in the next OpenBASIC release. change statement 4735 to be 4745 and delete statement 4735 Statement 4800 was: 4800 READ (8,KEY=NNAME$)NNAME$,CN$ should be: 4800 READ(8,KEY=NNAME$,ERR=4805),NNAME$,CN$;GOTO 4810 Add: 4805 CN$=NNAME$ ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB042 Pg001 FIB 00043 MAI COMPANY CONFIDENTIAL 08/11/94 *** OBTT on MPx - ERR 10's & 46's *** SUBJECT: OBTT on MPX-BOSS/VS TYPE: Problem PURPOSE: Inform national support and the field of this problem and workaround SYMPTON: When trying to save one file to tape using OBTT you get error 10's and 46's repeatedly and the file is not saved. CAUSE: When creating the filelist and adding only 1 file the attributes field defaults to yes, so when filelist is created, not only does it add the file to the filelist but all the attributes also. This causes the error 10's. SOLUTION: Create the filelist using the editor. This way the file name is only added to the filelist and the attributes are excluded. WARNING: You will get an error 10 after the file has been successfully copied to tape. Ignore the error unless the file does not report "DONE" Feel free to call me if you have any questions. ORIGINATOR: Fred Chiuppi SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB043 Pg001 FIB 00044 MAI COMPANY CONFIDENTIAL 08/15/94 *** OpenBASIC on Novell server performance & err 18 -6 problems *** Subject : OpenBASIC on Novell server problems Type : Problem Purpose : Inform the field of problems with OpenBASIC on Novell server We have corrected two problems when using OpenBASIC on a Novell server (OpenBASIC release OB4C.01*12). Symptom 1: Performance problems when trying to read records from the same file when more then 2 users are trying to read the same file. ( The read will take longer as more users try to read this file). Symptom 2: Error 18 -6 when more then two users are trying to read the same record on a file on a loaded system (lot of activity on the server). Solution : We have a patch to correct these problems. This will be fixed in the next release of OpenBASIC on Novell server. Please contact the MAI NSC if you have a customer that needs this patch before the next release. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB044 Pg001 FIB 00045 MAI COMPANY CONFIDENTIAL 08/15/94 *** Tape read err installing OpenBASIC on RPx7000 using 8/4 MM tape *** Subject : Tape read error when trying to install OpenBASIC on a RPX 7000 using 8mm or 4mm tape drives. Type : Problem Symptom : Tape read error when trying to install OpenBASIC on a RPX 7000 using the 8mm or 4mm tape drive. Cause : Software Distribution 4 & 8 mm tape drives creates OpenBASIC tapes using 512 block size. When you configure a 4mm or 8mm tape drive on a RPX 7000 the block size defaults to 1024 and it can not read a 512 block size tape and reports a tape read error. Solution : Using "smit" select : /devices/tape drive/change - show characteristics option for the tape drive and change option "Block size" from 1024 to 0 (variable length size). This will allow 4 mm & 8 mm tapes to read variable length block sizes without reporting a tape read error. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB045 Pg001 FIB 00046 MAI COMPANY CONFIDENTIAL 08/18/94 *** Memory requirements for OpenBASIC on DOS *** Type: Informational Purpose: OpenBASIC for DOS OpenBASIC for DOS requires 1 megabyte of extended memory. A minimal 2MB system might or might not meet this requirement depending on CONFIG.SYS and AUTOEXEC.BAT. To check this on MS-DOS or PC-DOS versions 3.3 or later (OpenBASIC for DOS requires level 3.3 of DOS or greater) type MEM at the DOS command prompt, - among other information MEM will list the amount of free extended memory. ORIGINATOR: Wally Moore SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB046 Pg001 FIB 00047 MAI COMPANY CONFIDENTIAL 08/18/94 *** 'FL' mnemonic problem on 4315s *** Subject: OpenBASIC 4.1, 4.2 - 'FL' Mnemonic Type: Problem Purpose: To inform field of an error found using the 'FL' Mnemonic tested on the DT4315 terminal Sympton: When using the 'FL',"OFF" mnemonic the hardloaded function keys in the terminal become disabled. The 'FL' mnemonic allows the loading of function keys into the systems memory. When this is used the hardloaded function keys in the terminal are disabled. Using the 'FL',"OFF" will turn off the system memory function keys and the hardloaded function keys in the terminal should be re-enabled. This function works properly on OpenBASIC 3.0. Problem has been reported to Engineering. ORIGINATOR: Fred Chiuppi SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB047 Pg001 FIB 00048 MAI COMPANY CONFIDENTIAL 08/31/94 *** Using 'aprint' with OpenBASIC spooler *** SUBJECT: USING 'APRINT' WITH OPEN BASIC SPOOLER DATE: 8/26/94 TYPE : INFORMATIONAL AUTHOR : DALE JENSEN PURPOSE : INFORM THE FIELD HOW TO GET PRINTERS CONNECTED TO TERMINAL SERVERS, WHICH ARE ACCESSED USING 'APRINT', TO WORK WITH OBS (OPEN BASIC SPOOLER). DETAILS: MODIFICATIONS ARE REQUIRED TO THE PRINTER INTERFACE FILE IF 'APRINT' IS BEING USED WITH OBS. THE DIRECTORY '/usr/spool/lp/admins/lp/interfaces' CONTAINS THE INTERFACE FILE FOR EACH PRINTER ON MOST UNIX PLATFORMS. THESE PRINTER MUST BE SET UP AS DESCRIBED IN THE OBS MANUAL, WHICH MEANS THE 'MAIPRINTER' INTERFACE FILE IS A TEMPLATE FILE BEING USED FOR EACH OF THE INDIVIDUAL PRINTERS. THE FOLLOWING CHANGES WILL ALLOW FOR 'APRINT' PRINTING: 1. FIND THE LINE CONTAINING '/usr/spool/lp/bin/pdf_filter' AND CHANGE IT TO: '/usr/spool/lp/bin/pdf_filter ${type} ${cpitch} {lpitch} ${nlines} ${nchar}\ ${slew} ${xlt} -x$statfile "$file" |/usr/bin/aprint -Aannex -Lport -f \ 2>${STATFILE} ---------------------------------- 2. FIND THE LINE CONTAINING 'cat "$file" 2>&1|/usr/ob/bin/lpfilter' AND CHANGE . IT TO : 'cat "$file" 2>&1 | /usr/ob/bin/lpfilter "$file" "$statfile" \ | /usr/bin/aprint -Aannex -Lport -f 2>&1 ----------------------------------- THESE CHANGES WILL PIPE THE OUTPUT OF PDF_FILTER AND LPFILTER TO THE APRINT COMMAND INSTEAD OF THE UNIX SPOOLED DEVICE. ORIGINATOR: Dale Jensen SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB048 Pg001 FIB 00049 MAI COMPANY CONFIDENTIAL 08/31/94 *** Novell server problem - BASIC task killed unexpectedly - patch *** Subject : OpenBASIC on Novell server problem Type : Problem Purpose : Inform the field of a problem when using OpenBASIC on a Novell server Symptom : When in OpenBASIC if the user executes a system command (ex: From OpenBASIC does a !DIR and returns to BASIC) after this is executed if they try to use "CTRL + "C" OR A "CTRL" + BREAK KEY (To perform an escape) the basic process will be killed and any files opened and modified will have the integrity bit set to on. (First time the file is open system wide the open will fail with an error 7). Solution: We have a temporary patch to correct this and engineering is working to correct this in the future. If you have a customer that needs this patch please have them contact the MAI NSC. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB049 Pg001 FIB 00050 MAI COMPANY CONFIDENTIAL 09/09/94 *** dedicate_p & free_p problems in OpenBASIC 4.2 *** Subject : OpenBASIC 4.2 "/usr/ob/bin/dedicate_p" and "free_p" problem Type : Problem (Reported on HP-UX 9.x system) Purpose : Inform the field of a OpenBASIC 4.2 problem using "/usr/ob/bin/dedicate_p" and "free_p". Symptom : Using /usr/ob/bin/dedicate_p -d LP (where LP is the SPOOLED printer name in OpenBASIC) will not report an error but will dedicate all SPOOLED printers. (You should use the NON-SPOOLED OpenBASIC printer name when using the dedicate_p command). Using /usr/ob/bin/free_p -d LP will release all dedicated SPOOLED printers and not report an error. Solution : This will be fixed on the next release of OpenBASIC. If a customer needs to have this fixed and has a OpenBASIC support contract they can contact the MAI NSC and request a patch to correct this problem There is no problem when trying to dedicate or free the NON-SPOOL OpenBASIC printer name. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB050 Pg001 FIB 00051 MAI COMPANY CONFIDENTIAL 11/02/94 *** OpenBASIC for DOS crash information *** When a OpenBASIC for DOS system dumps it displays a screen with information like : DOS/4GW Professional error (2001) : (devide by zero) at xxxxxxxxx Followed by crash info (segment info with hex codes). You should print this info and send it to the MAI NSC In some cases the displayed info is not enough for our engineers to find out what caused this crash. If you add the command : SETDOS4G=VERBOSE in the autoexec.bat file the next time it dumps it will display more info that might help engineering find out what is causing the problem. (Add this only if you have a crash). ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB051 Pg001 FIB 00052 MAI COMPANY CONFIDENTIAL 11/18/94 *** Error in BSEARCH on 4.2 *** Subject : BASIC Program Search & Replace for OpenBASIC 4.2 Type : Problem Symptom : After a program is modified using the search and replace utility an error message "Program encrypted or access permission denied" is is displayed. Cause : Line 735 in "PSRCH" is attempting to erase a file that has already been erased. Solution: Modify /usr/ob/bin/util/PSRCH by placing a REM at the beginning of the line or removing it. Note: Even though an error is displayed the program being worked on will be modified and saved properly. This will be corrected in the next release of OpenBASIC. ORIGINATOR: Wally Moore SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB052 Pg001 FIB 00053 MAI COMPANY CONFIDENTIAL 11/18/94 *** OpenBASIC for DOS fchange problem *** Subject : OpenBASIC for DOS fchange problem Type : Problem Symptom : When changing Growth Extents on File that is not in the default drive. (most cases the C drive) You will get an error 12 at line 4450 in the fchange utility. Original file will be deleted. Cause : Line 4450 tries to RENAME the temp file back to original file name but RENAME does not work across disk drives. Solution: Modify /usr/ob/bin/util/fchange with : Line 4450 change it to 4446 and rem the statement: 4446 : rem "RENAME TMPWORK$, FILENAME REMOVE STATEMENT 4450 Add the following statements : 4450 LET COPYFROM$=TBL(TMPWORK$,9701),COPYTO$=TBL(FILENM$,9701) 4451 LET DBP=POS("\\"=COPYFROM$);IF DBP>0 THEN LET COPYFROM$=COPYFROM$(1,DBP)+COPYFROM$(DBP+2); GOTO 4451 4453 LET DBP=POS("\\"=COPYTO$); IF DBP>0 THEN LET COPYTO$=COPYTO$ (1,DBP)+COPYTO$(DBP+2);GOTO 4453 4455 SYSTEM "copy "+COPYFROM$+" "+COPYTO$+" > nul";ERASE COPYFROM$ Save program. This will be corrected in the next release of OpenBASIC for DOS. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB053 Pg001 FIB 00054 MAI COMPANY CONFIDENTIAL 12/27/94 *** OpenBASIC for DOS system error codes *** Subj.: System error codes for OpenBASIC for DOS TYPE: INFORMATIONAL If you type the 'error' command from OpenBASIC after an error occurs you will get the BASIC error and a system level error. Following is a list of the system level errors. ENOENT 1 No such file or directory E2BIG 2 Arg List too big ENOEXEC 3 Exec format error EBADF 4 Bad file number ENOMEM 5 Not enough memory EACCES 6 Permission denied EEXIST 7 File exists EXDEV 8 Cross-device Link EINVAL 9 Invalid argument ENFILE 10 File table overflow EMFILE 11 Too many open files ENOSPC 12 No space left on device /* math errors */ EDOM 13 Argument too large ERANGE 14 Result too large /* file locking error */ EDEADLK 15 Resource deadlock would occur EINTR 16 Interrupt ECHILD 17 Child does not exist ORIGINATOR: Wally Moore SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB054 Pg001 FIB 00055 MAI COMPANY CONFIDENTIAL 01/05/95 *** TBL change in OB 5.0 *** Subject : OpenBASIC 5.0 TBL= problem Type : Problem Purpose : Inform the field of a change in the way TBL= works on O.B. 5.0 Using the function TBL= works a little different on OpenBASIC 5.0 then the way it worked on previous OpenBASIC release levels. Example : 10 READRECORD (1,KEY=A$,TBL=500)B$ 20 PRINT B$ 30 WRITERECORD (2,KEY=A$)B$ 500 TABLE FF00... (EBCDIC TABLE). On previous releases of OpenBASIC (4.2 and below) after statement 20 is executed the value of B$ will be displayed as its original value (if it was ASCII it will still display ASCII and not EBCDIC) on the terminal but when statement 30 is executed it will write to the file as EBCDIC. (The value of B$ in memory did not get converted until it is written to disk). On OpenBASIC 5.0 when statement 20 is executed it will display B$ in EBCDIC. The value in memory got converted after executing the TBL= statement (it will also write the value in EBCDIC in statement 30). Since this caused a problem at a customer site Engineering will make a change so that in the next release on OpenBASIC 5.x it will work as the previous OpenBASIC releases (will not convert value until written to disk). This also caused a problem when using the SETTRACE command (after executing the. statement that had TBL= the display of the SETTRACE on the TERMINAL was not displayed correctly). This also will be corrected in the next release of OpenBASIC 5.x. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB055 Pg001 FIB 00056 MAI COMPANY CONFIDENTIAL 01/25/95 *** ERROR 31 in a CALLed program *** Subject : OpenBASIC error 31 in a "CALLed" program Type : Problem Purpose : Inform the field of problem with OpenBASIC (all levels). The following will produce an error 31 in OpenBASIC in a CALLed program. FIRST PROGRAM : 10 BEGIN 20 CALL "JOE",G$ 30 END CALLED PROGRAM "JOE" 10 DIM P$(30) 20 ENTER G$ 30 FOR K = 1 TO 1000 40 LET G$=G$+STR(K:"0000")+P$ 50 PRINT K, 60 NEXT K 70 EXIT The first program calls "JOE" and passes the value of G$ (in our case G$ is null) and the second program uses G$ to increment its value. When our for/next loop is executed it will fail with an error 31 when K=137 (If you started OpenBASIC with a START size of 1024). You will get this error because the CALLed program does not handle correctly the variable G$ if the called program tries to increment G$. The workaround to correct the called program is as follows : CALLED PROGRAM "JOE" 10 DIM P$(30) 20 ENTER H$ 25 G$=H$ 30 FOR Z = 1 TO 1000 40 LET G$=G$+STR(K:"0000")+P$ 50 PRINT K, 60 NEXT K 65 H$=G$ 70 EXIT We changed the name of the variable in STATEMENT 20 (H$). We assigned G$=H$ in statement 25 so that we are not incrementing H$ in our FOR/NEXT loop which will not caused the ERROR 31. After the FOR/NEXT loop is completed we will assigned the new value in G$ to equal H$ and when the called program returns to the RUN program you will get the proper value returned (Satement 65). This problem is on all levels of OpenBASIC and our engineering group does not have a fix for it. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB056 Pg001 FIB 00057 MAI COMPANY CONFIDENTIAL 04/12/95 *** Supplemental OpenBASIC release 5.1 *** OpenBASIC release 5.1 is being sent to correct the following problems in release 5.0: 1) A core dump could occur when you OPEN(x)"LP" and you already have many other files oprn for that same OpenBASIC task. 2) Core dump when OPEN(x)"LP" and using the OPTS=option. 3) A soft unix 'kill' command would not kill the OpenBASIC process. 4) Rewriting a MK record with a key at the end of the record could corrupt the file. 5) Positioning on alternate keysets of a file on a remote system could fail if the remote system type is different than your local system type. 6) Writerecord(x,TBL=nn)A$ would change the A$ string so that it held the TBL translated value. 7) SETTRACE would not display all lines correctly if a TBL= clause was executed in one of the previously ilisted statements. ORIGINATOR: Norm Jones SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB057 Pg001 FIB 00058 MAI COMPANY CONFIDENTIAL 04/12/95 *** How to configure an RPx and PC to convert data using OB 5.0 ATP *** PC side: 1. Use connector # 400837-004 and a regular RJ45 cable on the COM2 port. 2. RUN OpenBASIC CONFIG and setup COM2 as 9600 8N1 with no hardware flow control. RPx side: Test was done using the 16 port adaptor for the 128 port controller. 1. Using smit configure the port as 9600 8N1 and change the following default options to: Enable Program : respawn Enable login : enable STTY Attributes for login : hupcl,cread,echoe,cs8,-ixon,-ixoff,-ixany Use alternate RJ45 pin outs : enable 2. Connect RJ45 cable to 16 port adaptor 3. Configure port in OpenBASIC CONFIG as terminal. 4, In unix pdisable ttyxx To test the connection between the RPx and the PC please refer to the example in the OpenBASIC Administration manual (M0239D) on top of page E-4. NOTES: 1. The port on the RPx side should have permission set as: crw-rw-rw root system 2. Do not use the setport example for the RPx port. 3. The AP programs for the PC are released in the OpenBASIC 5.0 base module. 4. The ATP programs for the RPx are released in the Developer's Toolkit module. 5. File names cannot be greater than 8 characters long: ex. /usr/melenj/joe (joe is less than 8 characters long) will be converted without problems but /usr/melenj/campanella (campanella is greater than 8 characters long) will fail Conntact National Support if you have questions or problems. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB058 Pg001 FIB 00059 MAI COMPANY CONFIDENTIAL 08/24/95 *** OB NETSERVER error codes *** Below are the system errors returned from OBNETSERVER. These may be encountered when attempting to open a remote file through OpenBASIC, or when running the WINDOS version of OBIQ (version 5.1 and above). -527 : missing rfsd entry in inetd.conf on unix server. -601 : missing rfsd entry in the services file on the PC. -676 : missing server address in hosts file on PC. -695 : missing PC name in .rhost file on unix server. -10054: missing or incorrect PC address in hosts file on unix server or NAME variable on PC not set to valid login account on unix server. Also, the DOS version of OpenBASIC may return different error codes for some of the same conditions : -6 : NAME variable on PC not set to valid login account on the unix server. -54 : missing or incorrect PC address in hosts file on unix server. -695 : missing rfsd entry in inetd.conf on unix server. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB059 Pg001 FIB 00060 MAI COMPANY CONFIDENTIAL 08/24/95 *** err -11 trying to perform 'dedicate_p' on RPx *** Subject: dedicate_p & free_p problem on AIX. A customer had the following problem when trying to perform a "dedicate_p" command in OpenBASIC 5.0 on a RPX system running AIX 3.2 : Error -11 : Fatal error can not find /dev/tty37 device. Problem was that the queue name of the printer was not the same name as the device. The queue name was lp11 but the device name tty37(lpstat -t). The "dedicate_p" failed when trying to get a printer named as tty37. To correct this you must modify the dedicate_p and free_p scripts : Look for the comment : # We find the name which the system uses to refer to the printer. If test $SYSTEM = "AIX" then DEVNAME='echo ... comment out the next five lines (add a "#" next to each line) Add : SYSNAME='$BIN/lpstat -v | $BIN/awk '/ '$DEVNAME' / { print $1 }' ' save the "dedicate_p" script. Modify "free_p" script the same way. This has been reported to Engineering. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB060 Pg001 FIB 00061 MAI COMPANY CONFIDENTIAL 08/24/95 *** spooler files not deleted - OB spooler on AIX *** Subject: OpenBASIC Spooler on AIX problem. The following problem was reported by a customer : After printing a job that was on HOLD, the print file does not get deleted from the /usr/ob/etc/spl_tmp directory. This was duplicated and reported to Engineering. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB061 Pg001 FIB 00062 MAI COMPANY CONFIDENTIAL 08/24/95 *** OBTT missing in OB 5.0 Developer's Toolkit *** Subject: OpenBASIC 5.0 Developer's Toolkit for AIX problem. The OpenBASIC 5.0 Developer's Toolkit for AIX does not include the CPTOOL fileset which has OBTT in it. This has been reported to Engineering and to Software Distribution Lab. The workaround will be that Software Distribution will send the Conversion kit (which includes OBTT) with any future order for the Developer's Toolkit. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB062 Pg001 FIB 00063 MAI COMPANY CONFIDENTIAL 08/24/95 *** upgrade from OB 3.0 requires new registration number *** Subject: OpenBASIC: Upgrading from 3.0 to later release levels When upgrading from 3.0 OpenBASIC to a higher release level (i.e. 4.0 and above), the Registration Number (OBSSN) changes. Any software products dependent upon the OpenBASIC SSN, such as Business WORD, will require 'new keys'. Please be sure to order these at the same time as your order the OpenBASIC upgrade. ORIGINATOR: Marilynn Mengos SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB063 Pg001 FIB 00064 MAI COMPANY CONFIDENTIAL 08/25/95 *** apparent data loss using WRITE RETAIN in MK file *** Subject: WRITE(RETAIN) Regression in 5.0 OpenBASIC There was a regression in 5.0 and 5.1 Beta versions of OpenBASIC that will drop the value of the last field on a WRITE(U,RETAIN) under these conditions: 1) the file is a multi-keyed file 2) the field at the end of the record is variable-length 3) there is no iolist on the WRITE (i.e., it's a simple ``WRITE(U,RETAIN)'' with no variables or IOL='s). Under these circumstances, the trailing linefeed is stripped off the record written to disk, effectively making the data in the last field invisible to later READ's and UNPACK's (although not to READRECORD's). I currenlty have a fix for the WRITE so that it doesn't strip that linefeed (it's in the latest 5.1 build, but not the original Beta version) and will have a fix later which will allow READ's and UNPACK's to read the last field even with no linefeed (although there's a slight possiblity this might break OTHER code?) ORIGINATOR: Richard Robinson SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB064 Pg001 FIB 00065 MAI COMPANY CONFIDENTIAL 08/23/95 *** DT4312 problems using 'window' on OB 5.0 *** SYMPTOM: 4312 leaves characters on the screen from previous screens when using t the 'window' mnemonic, also the 4312 doesn't draw the box correctly on OpernBASIC 5.0 FIX: Contact NSC. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB065 Pg001 FIB 00066 MAI COMPANY CONFIDENTIAL 08/25/95 *** OBNETSERVER hang *** The following problem was reported by a customer and I was able to duplicate the problem and reported this to engineering. 1. Create a direct file on host system. 2. From the remote system open and write records to this file (using OBNETSERVER). 3. Close the file 4. Open the file from the remote system (OBNETSERVER) 5. Print ATTR (x,"ALL") 6. Write a record with a null key Ex : Write (x,key="") 7. Process hangs. Problem seems to be caused by doing the "attr" of the file and writing a null key (file has to have records already written to it and only hangs after doing attr and only hangs when writing the null key after the attr command). This failed on OpenBASIC 5.0 but might also fail on other releases of OBNETSERVER. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB066 Pg001 FIB 00067 MAI COMPANY CONFIDENTIAL 08/25/95 *** err 12 -2, lost data printing on GPx70/80 *** Subject: OpenBASIC 5.0 Printer problems on GPX 70/80. After upgrading from OpenBASIC 4.0 to 5.0 a customer (On GPX 80)reported that he was getting an err 12 -2 when trying to open a printer. After the error he could type run and the process continued. The problem occured after opening multiple printers (opening more then one printer in the same task). Engineering also tested this on GPX 70 but found a different problem. It opened multiple printers without an error but could not print to these printers (print jobs were lost). If you have customers reporting printer problems on GPX 70 and running OpenBASIC 5.0 please contact Larry Pope in Engineering for the fix. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB067 Pg001 FIB 00068 MAI COMPANY CONFIDENTIAL 08/26/95 *** error in EBCDIC to ASCII table in OB Reference Manual *** Subject: EBCDIC to OpenBASIC table problem. In the OpenBASIC Ref. Manual II on page II-136 it shows an example of a table to convert from EBCDIC to OpenBASIC ASCII. This table has an error after 4A4B entry it displays 4D. It should have 4C before 4D (4C is missing). ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB068 Pg001 FIB 00069 MAI COMPANY CONFIDENTIAL 08/26/95 *** OpenBASIC for DOS kychk err - can't lock file *** Subject: OpenBASIC DOS kychk error When running the OpenBASIC for DOS kychk utility you might get an error saying that kychk could not lock the file. To correct this problem before running kychk you must execute (type in) share at the DOS prompt and then you can execute kychk. Also kychk should be execute from the DOS prompt. If you try to execute it from OpenBASIC (!/usr/ob/bin/kychk) you might get a load error. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB069 Pg001 FIB 00070 MAI COMPANY CONFIDENTIAL 08/26/95 *** OpenBASIC 5.0 PS problems *** Subject: OPENBASIC 5.0 PS PROBLEMS The following problems with PS were reported by a customer and duplicated : 1. Adding a print statement in PS program will not display the statement. Changing the print to a input works fine. (Print worked on MPX). 2. MBLISTSET get error 40 on statement 630. Workaround was to add statement 625 : If maxrec=0 percent=0; Goto 640. Also FBLISTSET fails with the same error in statement 1150. (same workaround). ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB070 Pg001 FIB 00071 MAI COMPANY CONFIDENTIAL 08/26/95 *** err 47 in BBXREF *** Subject: Another ERR 47 line 7510 OpenBASIC BXREF utility. Here is another "paper patch" when "bfrex" is run on a program that contains "FLOATING POINT". Modify Statement 6115 in program /usr/ob/bin/util/PLST1. Change the last entry in this line from 6 to 5. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB071 Pg001 FIB 00072 MAI COMPANY CONFIDENTIAL 08/28/95 *** err 12 at statement 5060 in atp (arp)y - OB for DOS *** This is the paper patch to correct the ATP (DOS) error 12 line 5060 (RENAME F3$, F4$). 1. Load "/usr/ob/atp/arp" program (PC DOS side) 2. Modify statement 5060 to : REM " RENAME F3$, F4$ 3. Add the following statements : 5061 GO SUB 10000 10007 F33$=F3$ 10010 F44$=F4$(POS("/"=F4$, -1)+1) 10015 FSLASH =POS ("/"=F33$); IF FSLASH <>0 LET F33$(FSLASH,1)="\" ; GOTO 10015 10020 SYSCMD$="rename "+F33$+" "+F44$ 10030 SYSTEM SYSCMD$ 10050 RETURN Save the program. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB072 Pg001 FIB 00073 MAI COMPANY CONFIDENTIAL 09/21/95 *** OpenBASIC release 5.1 available - list of included fixes *** OpenBASIC 5.1 has been released and will be shipping to the field. The following problems are resolved in this release : 1. Erroneous error 12's on spooled printer opens. 2. Remote file reads of large records caused core dumps. 3. Fixed incorrect queue_name when enabling dedicate/free_p printer on AIX. 4. Fixed OBINSTALL script for HP-UX 10.x. 5. Modified PS run-time to read correct help file for forms. 6. Changed NUM function so that it will accept numbers greater 14 digits, rounding after the 14th digit. (reported on DOS version). 7. MAKEPROGRAM and ENCRYPT coredump (bsearch utility when using a lot of files). Also coredump when given empty files. 8. Coredump UNIX SV4 with floating point to OpenBASIC numeric format. 9. INPUTE no longer internally converts ^C (or whatever the STTY interrupt code) into ESC character. It also no longer returns CTL values greater than 62 for ^C, ESC and ^Y. 10. The sequence "ENTER A[ALL]" followed later by a "A[ALL]=B[ALL]" no longer produces "blink mismatch" and/or ERROR=30's. 11. Fixed CPL() and LST() functions used in CALLed programs (corrected error 68) 12. Writerecord (u)A$[1] : corrected error 42. 13. Fixed ERASE so that it no longer forced the -d switch on files that had error 7. 14. MS-DOS ERASE fixed to handle correctly -p switch. 15. Fixed DROP to correct ERROR 14 and hangs when DROPping programs that were not found in the first prefix list. 16. WRITE (u,RETAIN) (no I/O list) changed so that it doesn't strip a trailing 'LF' from a MK file (Read's and unpack's ignored the last variable-length field (if any)). 17. Fixed 'BI' on MS-DOS so that it doesn't ignore TIM= on terminal input. 18. INPUT E : Fixed TIM= option not branching to ERR= branch. 19. FRESTORE : all reported problems fixed. 20. 'EL' did not set arrow key to proper value. 21. PSAVE program loops forever on error condition (Open non-existent file). 22. TBL= worked different then previous releases of OpenBASIC. 23. Soft kill did not OpenBASIC processes. 24. Remote prefix did not execute programs (run/call/load). 25. SETCTL did not work on SCO. 26. 4309 terminals did not work in I.Q. (fixed in I.Q. version 5.1). 27. OpenBASIC problem with Solaris 2.4 (no problem found). 28. General Protection Fault in P.C. version of I.Q. on file greater than 2000 bytes. (fixed in I.Q. version 5.1). 29. obunload (I.Q.) did not report problems using lower case characters for field names (fixed I.Q. version 5.1). 30. OBS for AIX 3.2 : after resuming a hold print job, print file is left on disk. New version of OBS for AIX 3.2 and 4.x available that corrects other problems. 31. OBIQ 5.1 version : fixed problem where linking of DIRECT files could report incorrect data. 32. OBIQ 5.1 : Improved error reporting on OBIQ Windows version. 33. OBIQ 5.1 : Allowed reporting on databases tables via OpenBASIC Connection. OpenBASIC NETSERVER fixes : 1. Remote SAVE caused core dump depending on size of file and file name. 2. Fixed hang when writing NULL key after an ATTR dirrective. 3. Enhanced tracing info in the ERRORLOG.OBC debug file SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB073 Pg001 OpenBASIC Connection to ORACLE fixes : 1. Fixed memory leak when using repeated SQL/FETCH operations. 2. Added OBCROWNUM environment variable to specify the number of rows returned from a READ/READRECORD. 3. Enhanced tracing info in the ERRORLOG.OBC debug file. 4. Added support for signed-extended, right-justified option in the STRPAD.FLD file. 5. Fixed numerous problems with reading/writing composite keys/fields. 6. Added support for using NAMEMAP.OBC file to map OpenBASIC key names to ORACLE column names. Engineering recommends that all customers that have OpenBASIC connection for ORACLE upgrade to the 5.1 version. OpenBASIC Connection for PROGRESS fixes : 1. Updated the OBC with the Progress 7.3a libraries on SCO platform. 2. Enhanced tracing info in the ERRORLOG.OBC debug file. OpenBASIC Connection for SYBASE fixes : 1. Fixed sequential READ/READRECORD/FIND/FINDRECORD with multi-record type table. 2. Enhanced tracing info in the ERRORLOG.OBC debug file. OpenBASIC Connection for INFORMIX fixes : 1. Increassed the format string buffer to 3000. 2. Fixed numerous problems with composite data. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB073 Pg002 FIB 00074 MAI COMPANY CONFIDENTIAL 10/24/95 *** OpenBASIC 5.1 problems list *** Outstanding problems that are not fixed in the OpenBASIC release of 5.1. 1. Using 'EL' does not modify the "delete" key. 2. Can not escape out of slave printing (this will not be fixed and will be dropped from the next list of reported problems. 3. No error 0 reported in slave printing if printer is offline (This was reported by Dan Arteritano and Eng needs more info on problem). I will drop this from the next list if Dan can not duplicate problem. 4. Wyse 370 in O.B. 3.0 worked with 25 lines now it works with 24 lines. 5. Bxref not showing all variables in list. 6. Using 'FL',"OFF" hardcoded Function keys are lost. 7. OBTT on MPX filelist with 1 file reports error 10. 8. OBTT on MPX error 13 creating filelist. 9. OBTT does not work under BBx on DOS (will not be fixed and will be dropped from the next list of reported OpenBASIC problems). 10. OpenBASIC on DOS. Create a file on Novell server. Use fchange to modify # of records and you will get error 12 at line 4450 and file will be deleted. 11. OBSEARCH & REPLACE will error with encript error. 12. OBSEARCH will change program owner & timestamp when using the pause option. 13. SETPORT does not work on AIX (this will not be fixed and will be dropped from the next list of reported problems). 14. DT4312 does not work using 'window', leaves "garbage" on screen. (paper patch available to correct problem). 15. 4360 terminal does not screen dump in BASIC. Works in UNIX. 16. ATP for DOS fails using filelist (Error 12 line 5060). (paper patch available to correct problem). 17. OpenBASIC on DOS install on NOVELL server duplicates autoexec.bat entries after running OpenBASIC CONFIG. 18. OpenBASIC DOS kychk can not lock file.( paper patch available). 19. ERR 47 on Bxref with CLOSE ALL and FLOATING POINT. (paper patch available). 20. PS error 40 FBLISTSET statement 1150 and MBLISTSET statement 630. (paper patch available). 21. PS does not display print statement in form. Input does. 22. Function keys loaded manually do not work after exiting PS window. 23. R1$=STR(NUM(R1$,err=2456):"00") does not take err= option if R1$ is greater than 3 characters. Worked on BB90. 24. OpenBASIC DOS rename fails with OpenBASIC files. 25. DT4360 terminal emulating TVI 925 hangs after printing to slave printer. (paper patch available). ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB074 Pg001 FIB 00075 MAI COMPANY CONFIDENTIAL 12/22/95 *** OB 5.0*28 problem: process hangs printing to non-spooled printer *** SYMPTOM: Process hangs (no error 0) attempting to print to a non-spooled printer on OpenBASIC 5.0*28. FIX: Configure the printer in OpenBASIC with a default timeout and an ERR 0 will occur after the timeout. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB075 Pg001 FIB 00076 MAI COMPANY CONFIDENTIAL 10/24/95 *** ERR 26 after conversion from SOLARIS to MPX *** Error 26's may occur in numeric fields which contain no data after conversion from SUN Solaris to MPx on multi-keyed files. OBTT converts nulls $00$ to $80$ on the MPx. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB076 Pg001 FIB 00077 MAI COMPANY CONFIDENTIAL 10/26/95 *** print jobs lost using OpenBASIC spooler on Sun system *** Subject: Printing through OBS on Sun systems Type: Informational Problem: When a job is printed from OpenBASIC usinf the OpenBASIC spooler the job does not print, but goes away. As a root user the job prints OK. No errors are produced. Solution: At boot time the permission of the directory /var/spool/lp/tmp/'system-name' is changed to rwxrwxr-x. To correct change the permission of this directory to rwxrwxrwx. This change should be put in a script file that is in the /etc/rc2.d directory. ORIGINATOR: Wally Moore SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB077 Pg001 FIB 00078 MAI COMPANY CONFIDENTIAL 11/03/95 *** script to START a program on another terminal *** ``start'' script to start a program on another terminal Purpose: Script to start a program on a terminal (T#). Create a file /usr/ob/bin/start # vi /usr/ob/bin/start : # /usr/ob/bin/start # Start script for OpenBASIC processes # set -- `getopt t: $*` if [ $? != 0 ] ; then echo ``USAGE: start -t DEV command ... `` exit 2 fi for I in $* ; do case $I in -t) TDEV=$2 l shift 2;; --) shift ; break ;; esac done UDEV=`awk -F: ``\\$1 == \''$TDEV\'' { print \\$2 }'' /usr/ob/etc/bfsdevs` echo basic device = $TDEV echo unix device = $UDEV if [ ! ``$UDEV'' ] then echo ``Device not configured : $TDEV'' exit 2 fi # Check the device file for write permissions if [ ! -w ``$UDEV'' ] then echo ``No real device: $UDEV'' exit 2 fi DEV=`expr $UDEV : `/dev/\(.*)\)' ` TRMTYP=`awk ``\\$2 == \''$DEV\'' { print \\$1 }'' /etc/ttytype` echo term type = $TRMTYP if [ ``$TRMTYP'' !+ ``'' ] then TERM=$TRMTYP export TERM fi if [ ``$UDEV'' !+ ``'' ] then exec $* < $UDEV > $UDEV 2>&1 & SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB078 Pg001 else exit 2 fi Make start executable, enter:# chmod +x /usr/ob/bin/start To execute, enter: # /usr/ob/bin/start -t T4 /usr/ob/bin/basic s=1024 -nr pgm=... ORIGINATOR: Dan Arteritano SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB078 Pg002 FIB 00079 MAI COMPANY CONFIDENTIAL 11/09/95 *** ERR 41 in Open Writer *** Problem: When executing a report in Open Writer and you try to change output device or select items to print, you get a business basic error '41'. Solution: Make the following changes: *** Pgm - /usr/ob/bdata/r21b/rt/ENGNNR Rem out the following statments - 2081,2150,2155 Add line - 2154 LET XX8$="" Modify line - 2040 Old line : 2040 LET F1$=E1$,F4$="SELECT OUTPUT DEVICE", F7=20, F5=1,F8$="",F9$="";DIM F6$ (LEN(E1$)/20,"N") New line: 2040 LET F1$=E1$,F4$="SELECT OUTPUT DEVICE", F7=20, F5=1,F8$="",F9$="";DIM F6$ (INT(LEN(E1$)/20),"N") *** Pgm - /usr/ob/bdata/r21b/rt/ENGNFS Modify line - 510 Old line : 510 DIM A$(M9),"N",09$(80,"-") New line : 510 DIM A$(INT(M9),"N"),09$(80,"-") ORIGINATOR: Fred Chiuppi SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB079 Pg001 FIB 00080 MAI COMPANY CONFIDENTIAL 12/22/95 *** extra FF printing with OB spooler to parallel printers on AIX *** Subject: OpenBASIC Spooler printing to parallel printers on AIX. Problem: Extra Form feed when sending print job to printer. Cause: Problem with OpenBASIC spooler when you Open the printer and do not use a "CLASS=" option. Solution: A) Open printer using a user defined "CLASS=" option. B) Open printer using OPTS= option as follows : OPEN (1,OPTS="-o -S1,0,0,0,0,0,0,0")"LP" C) Modify /usr/ob/etc/devices for this printer as follows : ...-dlp0 -o -S1,0,0,0,0,0,0,0:pdf. (after -d printer name add -o -S1 and seven zeros) NOTE: If job is stopped and restarted the extra form feed will still be sent. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB080 Pg001 FIB 00081 MAI COMPANY CONFIDENTIAL 12/22/95 *** ERR 41 in BSEARCH on AIX 4.x OS *** Subject: BSEARCH error 41 on AIX 4.1 The following was reported and duplicated here : Trying to execute "/usr/ob/bin/util/BSEARCH " you will get an error 41 at statement 790 : LET TEMP$= INFO(4,2). This is caused because on AIX 4.x there is no value returned when you do INFO (4,x). The workaround is to run "/usr/ob/bin/util/BSEARCH1" first. This failed on AIX 4.1 with OpenBASIC 5.1. This worked on HP with OpenBASIC 5.1. NOTE: Fixed with OpenBASIC patch OB5B*01.65. ORIGINATOR: Joe Melendeza6 SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB081 Pg001 FIB 00082 MAI COMPANY CONFIDENTIAL 11/09/95 *** how to submit print job to OB spool on-hold *** Subject: print "hold" jobs through Open Basic Spooler If a customer wishes to send a print job to an Open Basic Spooler printer queue with a priority of "hold" attached to it, they can use opts ="-H" in the open statement. Example: open (1,opts="-H") "LP" This will place the job in the LP queue with a hold status already attached to it. To print the job you must use "pqueue", select the job and select "resume". ORIGINATOR: Marty Shehan SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB082 Pg001 FIB 00083 MAI COMPANY CONFIDENTIAL 11/09/95 *** OB spooler restarts at beginning of job on timeout - AIX *** Subject: OpenBASIC Spooler on AIX Some customers have reported the following problem when running OBS : If they have to change paper or put a printer off-line the print queue goes down and when it restarts, the job starts printing at the beginning of the job. To correct the problem of the queue timing out and going down you can modify : /usr/ob/etc/obs_config and increase the time out process (default is 50). ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB083 Pg001 FIB 00084 MAI COMPANY CONFIDENTIAL 12/22/95 *** Patch release OB5B*01.65 available for CTLR-C & ESCAPE probs in PS *** Engineering has released an OpenBASIC 5.1 Patch Release (OB5B*01.65) to correct the following problem: Using CTRL-C or ESCAPE in PS FORMS did not function properly. This patch will not be shipped automatically to our customers since it only affects users using PS FORMS. Customers with this problem should order this patch. The new release of OBNET server 5.1 (OB5B*01.65) is needed when using OpenBASIC DLL product (5.0 or above). This release corrects the following: Random I/O using ISREAD/TSWRITE to a direct file caused the server to hang. Remove record using ISDELETE to a direct file failed. New orders for OBNET will be shipped with this release. If a customer needs to upgrade to this release, have them order it. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB084 Pg001 FIB 00085 MAI COMPANY CONFIDENTIAL 12/22/95 *** OpenBASIC 5.1 patches for IQ and OpenBASIC Connection *** The following OpenBASIC 5.1 patches are available fom NSC: 1. I.Q. (Windows and unix versions): Easier way to unpack dates for ASG (CBSIII) software. 2. OpenBASIC connection for Oracle (5.1): Invalid Cursor error during a "rollback" command. ORIGINATOR: Joe Melendez SOFTWARE-BASIC FOUR-OPEN BASIC----------------------FIB085 Pg001