Subj : Translating Case From Ba To : Mike Luther From : Murray Lesser Date : Fri Feb 16 2001 12:40 pm (Mike Luther wrote to Murray Lesser on 02-15-01, topic: "Translating Case From Ba") Hi Mike-- Due to the coincidental initials, I have transliterated the code that identifies things of mine that you quoted in yours, to "ml." ml> David really works hard at proselytizing for PL/I :-). He got me ml> hooked in 1995 and I've never turned back; I have forgotten most of the ml> C that I ever knew. ML>That's a strong statement. It is a fact. I never liked C, although I had to use Leor Zollman's 8-bit subset (instead of a macro language) to customize my CP/M word processor (MINCE and SCRIBBLE, by Mark of the Unicorn), and had been playing with the "full" language ever since Microsoft started to peddle Lattice's C compiler for DOS in a Microsoft box. Once, I rewrote one of my DOS compiled BASIC utilities in C; both the new source code and the executable code files turned out be be about double the size of their BASIC equivalents, which taught me that C was a lousy language for data-processing applications. When C++ came along, I read a couple of books about it and decided that it was not for me. In 1995, after following some discussion by David and friends in the OS/2 programming conference of the old IBM PC Co. BBS, I bought the Personal edition of PL/I for OS/2 for about a hundred bucks. (You can still buy a "download only" edition for just a little more, but the newer, costlier, version does not include the foot-long shelf of hard-copy documentation that came with the original.) Since multithreading is built into the "workstation" versions of the language, my first "learning" program written in PL/I was multithreaded, just to make sure I understood how it worked. I also wrote the PL/I subroutine that called the KBD API to allow the "Press any key to continue" construct at the time. Truly, I haven't turned back. I haven't written a program in C since 1995. ML>As a matter of fact, my H-89 has CP/M as well as HDOS, I think! You >know that Gordon Letwin who was the architect for the original >OS/2 foray over at M/S was snatched away from Heathkit, >where he wrote MSDOS, if my memory is correct! Gates bought the origin of MDOS from a Seattle outfit called Seattle Computer Products. It was a 16-bit port from Digital Research's 8-bit CP/M. Letwin glides gracefully around this fact in his book on OS/2. Do not believe much, if any, of the Microsoft propaganda about "Microsoft Innovations!" The Forward to Gordon Letwin's "Inside OS/2" (ISBN 1-55615-112-9), signed by Bill gates, carefully states that Letwin was "Microsoft's architect for OS/2." The only place in that book that says that IBM personnel contributed to the design (architecture) of the product is in the Introduction. In spite of what you may have heard, or understood from what you read in that book, Microsoft did not write OS/2 1.0 all by itself. After MS picked up its marbles and left the game, IBM wrote OS/2 1.3, and all following versions, without any help from Microsoft. (Next time you boot Warp 4, note that "OS/2" is a registered IBM trademark!) I don't want to denigrate Letwin's contributions. After all, the patent for HPFS was issued to Letwin and assigned to Microsoft. (It is too bad that Microsoft has abandoned it for its own products.) ml> Oh yes: I have a few programs written in BASIC PDS 7.1, compiled for ml> DOS, that run fine under OS/2 in a VDM. One of these days, if I live ml> long enough, I will reprogram them in PL/I for OS/2. What I didn't say, but should have, is that I had to rewrite a few of those BASIC programs slightly to remove the "clever" programming that called on DOS functions (usually in assembled procedures) that are not supported by OS/2 for "system integrity" reasons. You can find out which DOS constructs are not supported in an OS/2 VDM if you can find a copy of the out-of-print "OS/2 2.0 Technical Library" manual "Application Design Guide" (IBM p/n 10G6260). ML>Because of the way that PDS 7.1 was written to integrate the >assembler operations for the HEX21 interrupt work so well into >BASIC, we got two very,very important things cross-referenced to >both OS/2 and DOS!... One could "integrate" assembly-language subroutines into programs written in the original MS BASIC compiler for CP/M, by linking them as called subroutines. Similarly, you could link assembled subroutines calling INT 21h functions in the first MS compiler for DOS. (To my knowledge, the later "MS Business BASIC" was the first MS BASIC compiler that let you call separately-compiled, as well as assembled, procedures, as either functions or subroutines.) ML>That and another of Gordon's diamond sharp gifts, variable >length string arrays with the assembly language automatic >trashman! I listened! I listened! I learned a little, >enough to know I ain't very smart. You are too young :-). Variable-length string arrays were available in CP/M BASCOM 7, as was built-in garbage collection. PL/I (and a few other languages other than C) also provide for variable-length strings, although you may have to specify the _longest_ string length you expect to see. The only "modern" language (other than BASIC) I know of that provides for automatic garbage collection is Java. ML>Can REXX, for example, and PL/1, in one easy common source >code caper,provide me with full support for OS/2, WIN-ugh, >and DOS, for these? Of course not. There is no such thing as true cross-platform compatibility at the source-code level unless the language is simple enough to not call on any operating system (or hardware) constructs that are not available in all of the platforms under consideration, and unless all the platforms use the same word length for arithmetic operations. You probably don't remember the anguish expressed by some users when they learned that their Fortran programs, when run on the new 32-bit (numeric word length) System/360 machines, produced different results from when they had been run on the 36-bit 700/7000 series machines. (This is largely a result of doing arithmetic in floating point.) If you want more-or-less cross-platform capability, write your application in Java. If you want arithmetic operations to be independent of hardware word length, use REXX. Otherwise, you are on your own. ML>PL/1(i), whatever, OS/2, Win-ugh, DOS .. and REXX, are they >really suitable tools for poor Mikey? A rhetorical question that only poor Mikey can answer :-). Regards, --Murray ___ * MR/2 2.30 #120 * One printed manual is worth a thousand INF files --- Maximus/2 3.01 * Origin: COMM Port OS/2 juge.com 204.89.247.1 (281) 980-9671 (1:106/2000) .