Subj : Translating Case From Ba
To : Murray Lesser
From : Mike Luther
Date : Thu Feb 15 2001 12:09 am
Oh boy! More wisdom cometh Murray!
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.
That's a strong statement.
ML> I'm not sure about a PL/I for DOS, but there is a subset of PL/I for
ML> CP/M, if you are still using that system, somewhere :-).
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!
I sort of thing that the Z100 I have will also run on CP/M and I also have the
M/S basic compiler for CP/M if my memory is correct!
ML> However, if you are not in too much of a hurry at run time, you
ML> could write your application in REXX.
I investigated that .. but actually gave up on it, as one reason, for precisely
the exact same reason you noted above. I carefully avoided all CHAIN
operations and chose to carry all the required parameters for control passage
between executables as disk I/O. I thought that made more sense in planning
for portability. Thus executable shifting and load time is important.
That is also one of the reasons I winced when I tried Visual Age for Basic in
OS/2 which I bought and have! Sure the ball bounces! But by the time you ever
see it bounce, your opponent has already stolen the interpreter and scored ten
goals with the silly compiled ball!
If, a la as PowerBASIC finally did for WIN-ugh, M/S and IBM had ever released a
full compiler version of VB, that would have run on both OS/2 and WIN-ugh, the
world would have been VERY different today!
ML> (Due to unfortunate circumstances
ML> that should have been under my control, I now need Object Rexx for
ML> Windows in a Win98 partition; you will find it on one of the DevCon
ML> discs in that suitcase.)
Giggle.
ML> REXX has the same SELECT construct as does
ML> PL/I. (REXX was derived, in part, from PL/I; in the same sense that the
ML> original line-by-line-compiled Dartmouth BASIC was derived from
ML> FORTRAN.) I got my copy of REXX for DOS (Personal REXX v 3.0 by Quercus
ML> Systems) in 1991. It may still be available.
Here comes the education! Yes, if true, a part of portability sure might be
made between OS/2 and back-level DOS!
But now Professor Murray, student raises hand in back of class ..
ML> It is fairly easy to port applications between PL/I and REXX,
ML> although there are constructs in REXX that are not available in PL/I
ML> (e.g., I had to write a PL/I subroutine using a KBD API call to get an
ML> equivalent to SysGetKey('noecho') in order to program "Press any key to
ML> continue" in PL/I).
Hold that for a moment, the next part you wrote is the key to why I'm sort of
stuck ..
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.
Here is where, in my own really rather uninformed view, and I'm not that good a
programmer at all, this whole game of portability went BONK! And not Son of
Bonk either!
When Gordon Letwin crafted the foundation for OS/2 he also happened to be the
Chief Architect of the PDS Compiler! Somewhere in my printed text I happen to
have read his remark, I think it's his, that, "The arrival of a new language is
marked by the arrival of the first true compiler." That's, in my feeble
understanding of things, a very correct statement.
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! We got a
terribly simple-to-implement full network file I/O system with file lock,record
lock; shared multi-user tools. And to a lesser note, we also got the entire
ISAM file engine buttoned up so that even a dunce like Mikey could learn to use
and implement full networked file I/O with deadlock intervention and all that!
You know that insane feeling, the whirl of the dance, it plays with you, it
plays with you. And when the room quits spinning, "Morning is breaking, comes
the first morning ..." Gee, playing that hymn on a Baldwin concert grand is
just like the computer keyboard when I first discovered INT21, I swear it! I
swear it! We have no way to share emotions unless we have shared them, perhaps
that try at it will do.
INT21 opened up both a concomitant OS/2 development operation in DOS-VDM's
together with a way to supply code that worked perfectly under Novell, even to
the ability to adjust timing priorities to optimize it all! So, my suite
suddenly became a full fledged network-aware and totally functional game. But
only under Novell; nobody would listen to OS/2... sigh. They all insisted on
QEMM, and Desqview, and so did I, in support of things, for a long time.
I still have somewhere, I think, the FidoNet post Bob Juge posted that chided
me for even comparing DesqView to OS/2. I think that is one of the landmark
posts I've ever had addressed to me. I listened CAREFULLY to what Bob said,
took his advice. But ... in doing so, the superb work of Gordon Letwin with
PDS 7.1's FAMILY approach to programs and, specifically,the business of full
network aware I/O, has been, to me a mess elsewhere.
Where do I go to get the complete cadre of INT21 network tools, in such a
concise form as I've learned and written stuff for shared-locked file I/O with
other than C? Remember! It isn't that it can't be done in other languages
that are available in OS/2!
It's that I have to be able to extend the services *BACKWARDS* in DOS, yes,pure
DOS for another seven damned years after I make the toolset switch!
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.
I need two things, big time! I need multi-dimensional variable-length string
arrays, that, in fact, can be dimensioned, not as you might suppose most folks
do, but as DIM A$(-150 to +150, 10), or the like, and full network aware file
I/O shared read-write lock and deadlock protectable. I flip entire facility
control template array logic to the reverse dimension in the arrays for slush
and comparative purposes, from data in full shared mode network files. It's
more of this complex go-no-go logic enabled in the suite here.
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?
And don't you, huge grin, tell me like Paul Sittler used to and keeps telling
me, "Write your own functions, stupid!" I won't live long enough!
I've spent many hours with Ileff vectors, all that. I still can't quite get
Watcom C++ to let me get through the string game, but I'm close. I think
that's doable, and I know the file I/O bit is.
PL/1(i), whatever, OS/2, Win-ugh, DOS .. and REXX, are they really suitable
tools for poor Mikey?
Mike @ 117/3001
--- Maximus/2 3.01
* Origin: Ziplog Public Port (1:117/3001)