While an avid Linux user, certain projects I undertake back me into the corner of another operating system.
The project involved some BASIC source code which compiled fine under Microsoft QuickBASIC 4.00b. However moments after the software was run, the runtime library choked out a useless message about how it ran out of memory cleaning up string space. In the interpreter, it worked fine endlessly.
From what I could tell, the source code wasn't doing anything sneaky, and a search on the web revealed this as a true error.
The solution, or so I thought, was to upgrade to QuickBASIC 4.5 and recompile.
Now, I don't know if you've been to the stores recently, but QuickBASIC isn't on the shelves. VisualBASIC, its successor is. And one thing we know is that QuickBASIC code doesn't run under VisualBASIC.
Considering there was a lot of source riding on this, I called Microsoft about their Ultra Super Glow-In-The-Dark Intergalatic MSDN subscription. One thing I can say is that they are prompt in answering the phones.
In case you don't have MSDN, you basically get a set of 50 CDs with every Microsoft development package known to mankind on it along with three CDs containing all the bug reports Microsoft wants you to know about.
However, you've paid for a lot more, and I knew that. So I asked for every possible CD I was entitled to, international or not, to be sent my way.
You can imagine the surprise I got when a crate arrived a few days later with five binders chocked full of useless CDs. There was software for everything, in every language, including sign language. Now I also know the quick way to get extra binders when they wear out.
As I pawed through my new booty, I located DISC 3, Development Tools International, part number X03-56050: a bright blue disk that read "Microsoft Quick Basic, Visual Basic 1.0 for DOS, Microsoft Basic PDS 7.1, Visual Basic 2.0 for Windows Professional Edition, Visual Basic 4.0 Enterprise Edition." January, 1998.
I slip that baby into my CD-ROM drive and up comes a file called "Qb_45". Oh, yes! Uh, "Qb_45.jpn". Oh, no.
Yes, QuickBASIC 4.5, the version I needed was in my hands, only in Japanese. I attempted to look for an online tutorial for Japanese, but apparently that's not development material.
Ah, but the Japanese must know how to program in English! So, with a false sense of renewed glee, I installed... only to see my screen fill with gibberish that could not be mistaken for anything other than characters for a Japanese codepage.
No problem, I thought, I've missed the English version. I'll just go through each development CD, but alas, no QuickBASIC was to be found.
So, I was back on the phone with customer support.
Now it took a little while to explain to the person that I was missing some vital CDs. In fact the entire CD inventory was read to me over the phone and I dutifully hand-checked to make sure I had each CD.
"Yup, you have them all sir," came the sweet voice at the other end.
Hmm, this time I decided to take a different approach. "Whew! I'm glad. Before you go, could you tell me which disk Windows 3.1 is on?"
I was very much aware that THAT was not in my inventory, but should be.
"Hold on sir." After a short round of MS-Music, "that's on our Platform Archive set."
"Which is included with the Intergalactic MSDN subscription?"
"Which wasn't sent to me?"
Apparently my definition of "every possible CD I'm entitled to" differs from their's. "Could I have that sent to me?"
"Before I let you go, could you tell me if DOS, Windows 3.1, and QuickBASIC 4.5 are on it?"
The person was kind enough to check with a supervisor. "Yes it is sir, it's a 20 disc pack."
"Interesting, your web site says there are only 19 discs, and QuickBASIC isn't mentioned."
I was corrected immediately. "That's because we updated it sir."
A week later the Platform Archive was at my door.
By this time you obviously guessed that QuickBASIC wasn't included in the Platform Archive. It had 20 discs alright. One was labeled MSDN Library Archive, and the others labeled 1 through 19 matched the web site."
So, I got back on the phone and called customer support again.
I explained that I had a problem with Microsoft's philosophy: they will happily give me the software in Japanese, but not in English. Did this make sense?
Perhaps Microsoft is taking the foreign market the same upgrade ride that we took a decade ago and are just getting around to distributing QuickBASIC. Enough speculation.
The customer support person thought Japanese-only sounded fishy, and after consulting two levels of supervisors admitted that this really appeared to be an oversight. However, as I was reminded, "the purpose of MSDN is to supply the developer with recent development packages."
And I reminded customer support "the purpose of the Platform Archive is to archive things that aren't recent."
I won that one, but the point was moot. Since they didn't have the software, they couldn't help me. So I asked to speak to a supervisor.
The supervisor was less than sympathetic and suggested I call the supplemental parts department. I wasn't aware there was such a thing. Apparently if the dog runs off with your master diskettes, you can replace them.
The supervisor suggested I relay what had happened and Microsoft would send me a free copy.
Good enough. Only the supervisor wasn't going to call over on my behalf. And he wasn't going to transfer me either.
So I dialed supplemental parts and now the fun begins.
So I start to explain how MSDN gave me the Japanese version, not the English version, and am interrupted.
"Sir, if it's an MSDN part, I can transfer you; we don't deal with MSDN."
"No." Frustrated, I explain it is not an MSDN part because they "Could you look for QuickBASIC?" While she's checking, I proceed to explain how MSDN neglected to put it on the CDs and how supervisor said to call this number and get a free copy. I'll spare you the details of needing to explain things twice about how it doesn't make sense to ship a product in one language, but not the original.
I hear paper shuffling, and then she comes back on line explaining she can't find it. "Sir, I only deal with orders for replacement parts that aren't MSDN."
Time to change tactics. "Oh, sorry, I didn't know that..." After a brief pause, "I'd like to order QuickBASIC 4.5 please."
"I'm sorry sir, I can't sell you software. I can only replace parts."
Time to change tactics again. Apparently this maneuver can be done repeatedly without drawing attention to oneself. "Hi, I'd like to know what I need to do to replace my copy of QuickBASIC 4.5..."
Instantly she finds it. "I was looking under the MSDN list. QuickBASIC 4.5?" There was a slight pause, just enough to cause worry in only the way customer support personal can. "I can't give it to you...."
"Why not?" I ask, conveying the disappointment in my voice.
"Because it's on 5.25" floppies, and customers don't want those. This is a decade old product sir."
"Look, I don't care if they're written on stone tablets. I want it."
"That will be $15 sir, now all I need is a part number."
Apparently this is some precursor to serial numbers, validating that I really owned the product.
I tell her I don't have the part number. I explain that so far over $2,000 has been spent on MSDN because I thought the $15 software package from seven years ago would be on it.
Now she explains that, even though she has the software, she can't give me the software without a part number. Now she wants to know how I had a copy of it.
So I explain, very slowly what might have happened:
"I've been hired by a software company that produced a legacy application they want to make sure is year 2000 compliant." These were two buzzwords she recognized as important, thank goodness for company memos.
"The problem is their office burned down and they got the source code from the safe deposit box. Now I'm ready to fix it, but have no compiler."
Suddenly she's more sympathetic, but still wants a part number. "Do you have it off the program?"
No, I explain that I have the source code. Not the compiler.
"Do you have the original disks?"
No, if I had those, I wouldn't be calling.
"Do you have the manual?"
I can't read the number it through the ashes.
Finally realizing I'm not going to hang up, she orders me a copy. Only I'm not getting it for free. It costs me $15.
And $5 shipping.
And 92 cents in taxes.
"It will arrive in 3 to 5 business days... oops."
"We may not have it in stock..."
"It turns out this is a VERY old program and not only is Microsoft not supporting it, they aren't producing it any more." She goes on hold and checks.
Hmm, I'm thinking... just the reason to put it on a platform archive.
Minutes later: "Sir, we have 12 copies left."
"In all of Microsoft?"
"...in all of Microsoft."
She sent the order out, bless her heart. And it arrived days later.
QuickBASIC does not like to install on WinNT. But I managed to coax it by uncompressing each file by hand.
Incidently, it didn't fix the problem. Total time: three weeks.
Microsoft is no longer supporting the language, so the problem will most likely forever persist. ...on Windows.
As for not first thinking of Linux for this job, I don't know what to say. Within seconds of checking AltaVista, www.basmark.com appeared with QuickBASIC for Linux at less than 1/10th the cost dropped on MSDN. Other solutions were available as well, including QuickBASIC to C translators.
Regarding Linux support, I'd like to thank everyone who's involved with open source, everyone who maintains archive ftp sites, and everyone who answers questions on news groups. Because of you, I and others don't face this level frustration when working with Linux.
[ Footnote: You may find this amusing. When firing up an old 386 DOS machine to run Linux, I found *my* copy of QuickBASIC 4.5. Sure enough, in my archives were floppies... I forgot I had 'em. D'oh! ]