What's Up DOCumentation Robelle Consulting Ltd. Unit 201, 15399-102A Ave. Surrey, B.C. Canada V3R 7K1 Phone: (604) 582-1700 Fax: (604) 582-1799 Email: support@robelle.com Date: May 19, 1993 From: Robert M. Green, CEO David J. Greer, President Michael Shumko, Editor To: Users of Robelle Software Re: News of the HP 3000, 1993 #3 What You Will Find in This News Memo: Hierarchical File System (MPE/iX 4.5) Saving Disc Space Suprtool: Downloading to a PC, Part II SCRUG Report Robelle Products: Problems, Solutions, and Suggestions News Tidbits Reflection 4.3 for DOS. WRQ has released a new version of Reflection for DOS. If you are on a network, you will like the Fast File Transfer. It is really fast: one customer's Reflection Backup of 80MB went from 11 hours to 20 minutes! If you do on-screen form design, try Alt-F8 to bring up function keys for defining enhanced video fields. The command language has a new CALL keyword to execute another command file and pass it parameters. Overall, a very nice update. Technical Tips FSETMODE and the Transaction Manager. Until recently we always thought that the only way to attach a database (or file) to the Transaction Manager was through a call to FCONTROL mode 2. However, Robert Joseph of the NPD Group has pointed out another method which he found in an old HP System Status Bulletin. The SSB entry says: **** Problem Text *** Once the serial write queue is enabled for a disc file by FSETMODE, there is no way to disable it. *** CAUSE TEXT *** This is not a "bug" but a "feature" for XL. Enabling the serial write queue for a disc file hooks it to transaction management, and this is not a feature that is supposed to be turned on and off. Once turned on, it stays on till the file is purged. Great Programmers Think Alike. One of the bugs we have found in Qedit/iX version 4.1 has also shown up in MPE/iX version 4.5 (the version with Posix support). If you do :echo bob >$Newpass in Qedit, $Oldpass is supposed to be a variable-length Ascii file containing "bob". Instead, it ends up as a default Binary file with 128-word fixed-length records. The clue: it doesn't fail if you put $Newpass in all caps. Once we upshifted the filename to $NEWPASS, the command I/O redirection worked. MPE/iX 4.5 has the same bug in it because it supports Posix mixed-case filenames. So MPE wasn't upshifting $Newpass either. Same result for the same reason. [Bob Green] CIU and TPI. Starting with MPE/iX 4.0, TurboIMAGE was enhanced to have a new feature: critical-item update (CIU). Enabling CIU with the HP DBUTIL program allows Dbedit's Change and Modify;Updatekey commands to execute much faster. However, if you also have third-party indexing (TPI) enabled for the database and are using OMNIDEX, any program that tries to make use of CIU will fail. OMNIDEX does not, as yet, support critical-item update, so all calls by the program to DBCONTROL intrinsic using the new modes 5 and 6 for CIU fail. [Ray Ulrich - Unisource] Hierarchical File System (MPE/iX 4.5) By David Greer Since the dawn of MPE, the file system has consisted of files organized into groups which are organized into accounts. As HP moves MPE to Open Systems, one step is to modify MPE/iX 4.5 to have a completely different file system organization. MPE will then be partially POSIX-compliant (POSIX is a version of UNIX). Hierarchical File System (HFS) Both MS-DOS and UNIX use a Hierarchical File System (HFS). The root directory is \ in MS-DOS and / in UNIX. Under the root node, files or sub-directories are created. Each sub-directory can have its own files or more sub-directories. This hierarchical structure allows users to organize files into logical sub-groupings (directories) that are not possible with MPE's limited account and group structure. Enter MPE/iX 4.5 Beginning with MPE/iX version 4.5, MPE will now have a HFS. The standard MPE account and group structure exists as a special sub-part of the HFS. You access the HFS through three new commands: Mkdir, Chdir, and Rmdir. Once you start creating sub-directories, all the usual MPE-naming rules change. For example, the HFS does not ignore the case of filenames. Thus, file "a" is not the same as file "A". And names are not limited to 8 characters. MPE/iX 4.5 introduces the concept of "name space". A filename may exist in the MPE name space, which means it is part of an MPE group and account, is in upper-case only, does not contain any special characters other than "." and "/", and is no longer than eight letters. Or, a filename is part of the HFS name space. Fortunately, the default is to assume the MPE name space. This ensures that our existing applications will still work without any changes. So close, but so far... We have been reading about the HFS in Interact magazine for a couple of years. Having used both MS-DOS and UNIX, we were excited by the idea of a HFS. After all, the main Robelle development account has more than 270 groups. We were eager to group some of them together into sub-directories. After installing MPE/iX 4.5, we immediately started creating sub-directories. Unfortunately, if you use Chdir to switch out of the MPE name space into one of your new sub-directories, nothing will work. None of our products work correctly, no other third-party products work correctly, and most importantly none of HP's products work correctly. Take this trivial example: :file infile=/ROBDEV/DAVID/X :file outfile=/ROBDEV/DAVID/TEST4P5/X :fcopy from=*infile;to=*outfile;new HP31900A.05.01 FILE COPIER (C) HEWLETT-PACKARD CO. 1990 *106*CAN'T OPEN TOFILE DISPLAY FILE INFORMATION (Y OR N) ?y SPECIFIED FILE DOMAIN NOT SUPPORTED IN THE GIVEN NAMESPACE ... (FSERR 460) +-F-I-L-E---I-N-F-O-R-M-A-T-I-O-N---D-I-S-P-L-A-Y+ ! ERROR NUMBER: 460 RESIDUE: 0 ! ! BLOCK NUMBER: 0 NUMREC: 0 ! +------------------------------------------------+ 0 RECORDS PROCESSED *** 1 ERROR Your Current Directory MS-DOS and UNIX have the concept of a current directory. Most MS-DOS Autoexec.Bat files have the command Prompt $P$G so that the MS-DOS prompt shows the current working directory. The most important use of current directory is as the default place to look for your files. MPE has always had this concept in the logon group, which MPE/iX allows you to change dynamically with the Chgroup command. Under MPE/iX 4.5, you have both a logon group and a current directory if you do a Chdir. Doing a Chgroup does not do a Chdir--the two pointers are different. The Listf command shows your logon group files and the new Listfile command shows the files in your current directory. Confusing isn't it? An unqualified filename usually refers to your current directory and not your logon group, but not always. Robelle Products and HFS While we are excited about the HFS, the current implementation leaves a lot to be desired. The designers of the HFS made some choices that cause almost all existing HP 3000 applications to stop working. For example, files in the HFS name space cannot be "new" or "temp". Here are some HP products that do not work correctly: * DBOPEN fails when your current directory is outside the MPE name space, even though the database is in the MPE name space. * Fcopy fails to copy an existing file to a new file in an HFS directory. * Editor cannot create a scratch file if the current directory is outside the MPE name space. * Sort.Pub.Sys fails if the output file is outside the MPE name space. We hope that a future version of MPE/iX will remove some or all of the current restrictions on HFS files. Until then, or until HP products are modified to work with the new HFS, we are not planning any additional R&D into HFS files. It's too bad, since we would be keen users of the HFS if we could only make it work with our existing tools. [After this article was written, we heard that MPE/iX 4.5 was supposed to have the above-mentioned `features', as it is only a stepping stone toward a full Posix release. Reportedly, the lab people intended 4.5 to go only to developers, but there was some miscommunication within HP that allowed MPE/iX 4.5 to go into wide release. We expect that we will be able to say more in our next issue. Ed.] Saving Disc Space Reducing Disc Space in the Robelle Account. Several jobs in the purgejob group of the Robelle account help clean up various files left by our trial and installation jobs. Here are the names of the jobstreams with a description of the files each removes: Classic Removes all of the unneeded @CM programs from the Robelle Account. Cleanup Removes all of the @CM and @NM programs from which the installation was done and which are no longer required. We recommend streaming this after a complete installation of a new version of any Robelle product and bonus products. Pubold Purges the pubold group and rebuilds it empty. This is where the previous versions of our products go after installation of a new release. Qedit Removes all of the files associated with Qedit. Select Removes all of the files associated with the Select bonus product. Spell Removes all of the files used by the Spell bonus product. This saves lots of space, but of course Qedit's Spell and Word commands stop working. Suprtool Removes all files associated with Suprtool. XL Removes all of the program files used for MPE/iX (XL) machines. Highly recommended for Classic users. Xpress Removes all of the files related to the Xpress mail package. Squeezing Files to Save Space. A while ago we were short on disc space, so I used MPEX's SQUEEZE operation to compress all the files in the MIS development account. This freed thousands of sectors, but caused numerous headaches. Because the source and documentation files are quite dynamic, I ran into the problem where adding a single line or two to a Qedit file caused the "file full, partial update" message to appear. To get around this, you have to /text /shut * I also squeezed the slow Vform files. Adding records to these with Formspec caused an internal (but recoverable) error. To increase the file size, use Fcopy with a file equation. For example, :file bigform;disc=4000 :fcopy from=oldform;to=*bigform;new :purge oldform :rename bigform,oldform The moral of the story: squeeze only the files that are archived, or in a static state. [Ken] Suprtool: Downloading to a PC by Dennis Smetsers SAMCO Automation b.v. Oisterwijk, Holland (Continued from What's Up DOCumentation, March 1993) Converting Data from a MPE file (also Spoolfiles) In the following example, we assume that we have a MPE file named Testrep, which comes from a report-writer (e.g., VISIMAGE/3000). The file Testrep contains the following records: Date: 12/30/92 TIME: 11:39 AM PAGE: 1 STOCK Price ---------------- ------------------- CUST-NR PROD-NO PRESENT MINIMUM NUMBER PURCHASE SALE 103 1000 195 120 2 $36.00 $49.99 103 1001 949 600 2 $4.95 $6.75 104 1002 17 5 1 $1 299.00 $1 699.00 105 1003 100 60 2 $65.00 $75.00 106 1004 37 20 2 $ 129.00 $ 149.50 106 1006 11 5 1 $ 595.00 $ 675.00 107 1007 17 12 1 $ 425.00 $ 499.99 ----+----1----+----2----+----3----+----4----+----5----+----6----+--- Beneath the data from Testrep we show a column template which allows you to see where the fields start and end. This is useful for determining the field definitions. This brings us to the big difference with respect to converting data from an IMAGE database. With an IMAGE database the definitions of the fields are automatically known by Suprtool. If you read from a MPE file (or a Spoolfile), you have to define the fields yourself. Suprtool's Define command requires the field's starting column and length in bytes. The three steps that you have to go through successively for converting the MPE file to the PRN format for use on the PC are as follows: Step 1: Create an empty PRN file. > input testrep (0/0) > define cust-no,1,8 { Defines a field named Cust-No, starting in column 1 with a length of 8 bytes. } > define prod-no,9,9 > define pres-stk,18,9,display { Defines a field named Pres-Stk (Present Stock), starting at column 18 with a length of 9 bytes. Display indicates that the field is numeric, and made of Ascii digits. The default type is Byte. } > define min-stk,27,10,display > define number,37,8,display > define purchase,45,11,display > define sale,56,11,display > extract cust-no,prod-no,pres-stk,min-stk,number > extract purchase,sale > numrecs 105% > set squeeze off > output prnlist,prn > xeq Step 2: Add a heading. In the previous What's Up DOC article we saw how to use the Extract command t heading lines to the file. In this article we will use a different method. We will add the lines from the $STDIN of the job file. > input * > output prnlist,erase > xeq "","","St","ock","","Pr","ice" "","","--------","--------","","--------","--------" "Cust-No","Prod-No","Present","Minimum","Number","Purchase","Sale" :eod If the headings are too wide for the job file, you could use an editor to add them to the end of Prnlist, or you could keep the headings in their own file and append them whenever needed. Step 3: Add data lines to the PRN file. > input testrep (4/10) > define cust-no,1,8 > define prod-no,9,9 > define pres-stk,18,9,display > define min-stk,27,10,display > define number,37,8,display > define purchase,45,11,display > define sale,56,11,display > extract cust-no,prod-no,pres-stk,min-stk,number > extract purchase,sale > output prnlist,append,prn > xeq This PRN file, Prnlist, is now ready to be transferred to the PC using a terminal emulator. After this, the PRN file can be used in your favorite spreadsheet program. E.g., Lotus 1-2-3. Using the PRN file in PC application programs The last part of this article describes how you can use the PRN file within Lotus 1-2-3. It is also possible to use a PRN file with some other PC application programs, e.g., Excel, dBase, or Harvard Graphics. In principle, a PRN file can be used within any program that can handle or import files with this PRN format, also called "delimited" type files. For Lotus 1-2-3: - From the MAIN menu choose the FILE option; - From the FILE menu choose the IMPORT option; - Select NUMBERS for importing numerical values and text between quotation marks (") into different columns; - Next, select the desired file (name); - Adjust the width of the columns if it appears necessary. Now you can work with the cells as you normally do with Lotus 1-2-3, making calculations on numerical fields, etc. If you use another program instead of Lotus 1-2-3, the best recommendation is to look in its manual under "importing files". You should be able to locate the commands for importing PRN files or "delimited text files". GOOD LUCK! Calendar of Events June 1993 * Bob Green is the keynote speaker at the 4th annual MINNRUG conference, being held June 9-10 in Bloomington. Bob will also be holding Qedit and Suprtool training sessions throughout both days. June 1993 * On Sunday, June 27, in Birmingham, UK, Clive Oldfield and David Greer will be offering a Suprtool training class. This will be followed by Vladimir Volokh's talk, titled "The Biggest Computer Security Threat on the HP 3000". At noon, a buffet luncheon will be served. On Tuesday, June 29, David will give a Qedit tutorial. Everyone is welcome to attend. To reserve for the tutorial presentations and the Sunday lunch, please contact Robelle's UK office. Phone: +44 71 473 2558. Clive Oldfield, our UK representative, will be pleased to send you a registration package. September 1993*Register early for the Interex conference, this year being held September 20-24 at the new Mosconi Center in San Francisco. Just about everybody from Robelle will be there, showing off our products (including the all-new Qedit/UX, currently in alpha-test), and giving training sessions. SCRUG Report by Ken Robertson and Paul Gobes Robelle attended the latest Southern California Regional User Group (SCRUG) conference, held May 4-6 at the Burbank Hilton. A much smaller version of the Interex conference, SCRUG attracted almost 450 attendees, plus about fifty vendors in the exhibit area, including WRQ, DISC, SRN, HP and many others. A multitude of talks and workshops were held with topics ranging from IMAGE/SQL to Unix security. There was also an excellent two-day Network tutorial organized by Charles Finley that clarified all those TLAs (Three Letter Acronyms). Some of the neat things at the vendor show: One Terabyte Disc, HP's touting of better service through decreased paperwork (at last!), third-party client/server technologies, Reflection running on a 95LX palmtop with a PCMCIA modem card, Forms Master - a smart flash cache for LaserJets IIP and up, magneto-optical backup, and new releases of everyone's software. At Robelle's booth, our friendly techies, Paul Gobes and Ken Robertson, gave demos and quickie two-minute Qedit/Suprtool courses. (A sample? Here's one cool command: type HQ, short for Help Quick. It gives you the same info that is in the Qedit or Suprtool quick reference guides.) We gave away lots of pens and free advice. SCRUG was held in Burbank, near Beverly. HILLS, that is. Swimming pools, movie stars. Ken's biggest thrill was driving down Beverly Drive and seeing - the Beverly Hillbillies - parked in their jalopy near the side of the road. Jethro was at the steering wheel, with Granny and Ellie-May in the back seat. Wow. Can't wait for the movie to come out. Robelle Products: Problems, Solutions, and Suggestions Suprtool Version 3.5 Error Messages. For those of you who have those wonderful scheduling and $stdlist checking packages, it is worthwhile to note our standard of flagging messages with Error: for hard errors or Warning: for warning messages. This is the standard for both Suprtool and Qedit. [Neil Armstrong] KSAM/XL. Suprtool 3.5 is not reading all records from KSAM/XL files that have any of the following record sizes (in bytes). This is fixed in the 3.5.01 pre-release version, available by request. 4089 - 4092 2041 - 2044 1017 - 1020 505 - 508 Qhelp Version 1.9 System Failure. There is a bug in MPE/iX that causes a system failure if a compatibility-mode program tries to execute an ADDS instruction that passes a too-large number to ADDS. The CM program should not attempt this, but even so, the operating system should not crash. It should simply abort the program with a Bounds Violation or a Stack Overflow. The system failure is provoked by Qhelp in rare cases. We are trying to change Qhelp to prevent it from invoking the buggy HP code. The MPE bug is marked critical by HP, but they say that they don't know if they will ever fix it. In the case of Qhelp, there is a simple solution: all Qhelp users on MPE/iX should install the NM version of Qhelp, instead of the CM version, even if not experiencing problems. :hello mgr.robelle :purge qhelp.qlib :rename qhelpnm.qlib,qhelp.qlib