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
<Team PL/I>
___
* 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)