Make Mine MAPPER #15

by Rob Haeuser

PC and MASM MAPPER: Similarities, Differences, Possibilities

______

It sure didn't take long. The grapevine's been working overtime on this one, believe me. As soon as word of PC MAPPER (for Windows) came out, the phone calls started coming in. "What's it like?" "What does it require?" And the hardest one of all: "How much does it cost?"

In answer to the first question, it's like MAPPER. Yes, that's right. It really is a MAPPER, not just some wimpy little knock-off. As to what hardware and software are required, we covered that last month, so if you missed it, check out a copy of the September issue of Unisys World. In that article we also discussed some things to expect when working in the Windows environment (Icon you not).

As to how much it costs, hey, talk to Unisys about that one. There will no doubt be two prices, seeing as how two versions are being offered: a full-blown "development" version as well as a "runtime only" version. I don't know what the differences really are, but would guess that "runtime only" restricts you to certain cabinets/departments (limited coordinator privileges?), with possibly greater restrictions on manual MAPPER functions (all users registered as "run only"?). It might even mean fewer functions (programs?) available when installing or loading PC MAPPER. If so, it should take up less disk space and memory than a full development version.

You know what gets me? The level to which Unisys has replicated the "big" MAPPER is absolutely astounding. For example, you know the manual function "Locate" (LOC)? It has always had an uncanny ability to ignore the character under the cursor, violating all "transmit from start-of-entry (SOE) THROUGH AND INCLUDING the cursor position" logic, and admittedly causing an occasional cursing fit. Well, guess what. They managed to replicate that, too. It looks like they kept the "old habits are hard to break so don't make me learn any new ones" rule in mind.

For all the hundreds, if not thousands, of similarities between MASM MAPPER and PC MAPPER, there are a few differences. For example, in level 35, an SOE is no longer required when updating a report, whereas in PC MAPPER it is (as was the case in MASM level 34). Personally, I think requiring an SOE is a good idea, as it tends to minimize the amount of data actually updated. I have unintentionally updated data in level 35, especially when in the "new look", due to fewer tab positions in the control line.

There are a few manual functions, run calls, and reserved words that are either unavailable to either MASM or PC MAPPER, or behave differently. Figure 1 gives a break-down of the functional availability between the two. "@" designates a run function; "$" designates a reserved word.

______

Figure 1

Function name,

@Run call, or MAPPER

Reserved word$ Description PC MASM

------

CNT/@CNT Count (new math function) No Yes

DECODE/@DCR Un-scramble a report No Yes

ELT/@ELT Create an element/file No Yes

ELT-/@EL- Delete an element/file No Yes

ENCODE/@ECR Scramble a report No Yes

OS/@OS Operating System Interface Yes No

RDB/@RDB Run debugger No Yes

RETR/@REH Retrieve report from history No Yes

RS/@RS Run status No Yes

STOP Stop a background run No Yes

SYSTEM Lists current system activity Yes No

@BR Start a background run No Yes

@DCPY DDP copy No Yes

@DCRE DDP create No Yes

@DIS Read/write UTS 30 diskette No Yes

@DLL Downline load to UTS 400 No Yes

@DPUR DDP Purge No Yes

@DSF Display form No Yes

@QCTL Queue Control No Yes

@QREL Release message No Yes

@QRSP Send response message No Yes

@QSND Send message, no response No Yes

@QSNR Send message, expect response No Yes

@RSI Remote symbiont interface No Yes

@TCS Read/write tape cassette No Yes

@XUN Exit current session to shell Yes No

BEL$ Code for the terminal bell Yes No

BPRUN$ Batch port run No Yes

CUR$ Cursor position Yes No

DTM$ Status of Data Transfer Module No Yes

DTNAM$ MAPPER's DTM name No Yes

FCC$ UTS 400 station has FCC No Yes

LCAB$ Cabinet of current language No Yes

MAXLAB$ Maximum # of labels in a run No Yes

MAXRPT$ Maximum report # available No Yes

MAXVAR$ Maximum # of variables in a run No Yes

MSEC$ # of milliseconds since midnight No Yes

______

This list doesn’t include functions, run calls, or reserved words that exist in both environments but behave differently. I may have overlooked a couple of things, but that's about it. Not much, considering the possibilities. Of 186 or so documented run functions, only 22 are unavailable in PC MAPPER, 2 in MASM MAPPER. Of 164 reserved words, only 9 are unavailable in PC MAPPER, 2 in MASM MAPPER. Keep in mind that a good bit of the differences relate to the "single user, client only" environment of PC MAPPER.

Speaking of which, just what does "single-user, client only" really mean? For one thing, that's how many users can be signed in a any one time. This means you can't reduce your current session to an icon and start up a different session, as if you had a "screen 1/screen 2" toggle.

As far as "client-only" is concerned, this means that an "external" MAPPER can't remotely sign-in and wade around. That is not to say you can't access a remote MAPPER, as witnessed by the availability of Host functions like @HRD (Host Read), @HRN (Host Run), @HST (Host Sign-on), @HWR (Host Write), or Network functions like @NET, @NOF, @NRD, @NRM, @NRN, @NRT, and @NWR (Network Sign-on, Sign-off, Read, Remote, Run, Return, and Write, respectively). Gee, they're almost as much fun to say as PEEK, POKE, PUSH, and POP (those variable stack manipulation functions, remember?).

And now for something completely different...

I was dreaming the other night. In this dream I became an electronic pulse. I was is in a PC milling around when, suddenly, a series of funny off-pitch bweeping sounds with really bad fidelity came screeching from out of nowhere. It was the modem.

There was a sensation of falling, and then, with a blinding flash, I was transported to a huge electric-blue sea teaming with some sort of pulsating life. The sea began to crack, with fissures opening up to form bottomless trenches, absorbing all matter in the immediate vicinity.

Spiraling toward the center of infinity, I felt a strange tingling sensation, and began to glow red. Suddenly, WHAM! I'm pressed up against some flat glass-like structure. It's a Cathode-ray tube!

Looking around, I see a shimmering sheet of glowing pixels, all dancing to some unbelievably fast music, beating about 60 times a second. Sounds like the chipmunks. Then it dawns on me. Damn! I'm a bit, lit up in some goober's graph!!!... And, Oh, no! It's a graph of ...shoe sales! Aaaarrrrgggghhhh!!!! No, don't hit F1!!!! Bweep. Screen refreshed.

If you believe that, then you must be a USE conference attendee, breathing the thin Denver air. But, seriously folks, PC MAPPER can play an important role in a true distributed system. With MAPPER running on all three hardware tiers (mainframe, midframe, and microframe), you can store data and execute runs on the tier most appropriate for the application's needs. And don't forget: Designer Workbench opens "Windows" of opportunity, as well. I haven't had a chance yet to work with all the pieces in place, but I imagine that the whole thing fits together rather nicely.

And now for a bit of coding trivia. PC MAPPER does not support one of my favorite reserved words, MSEC$ (the number of milliseconds since midnight). However, to fill in this teeny gap, I submit the following bit of code (see Figure 2).

______

Figure 2

@ART (TIME$(1-2)*3600000)+(TIME$(4-2)*60000)+(TIME$(7-2)*999) V1I10 .

@HSH V2I3=V1,1-999 INC,V2 V1 .

@. Do whatever you want with V1 now.

______

The first statement, ART (Arithmetic), gives us a rough guess, to within a thousand milliseconds, of reality as established by your system clock. "TIME$(1-2)" is the hour according to a 24-hour clock. As everybody knows, there are 3,600,000 milliseconds in an hour, so multiply that by the number of hours. And, of course, there are 60,000 milliseconds in a minute, so multiply that by number of minutes (TIME$(4-2).

Thought you had me, eh? Yeah, well, I know that there are a thousand milliseconds in a second, but if you use 1,000 in the calculation, the last three digits are always zeroes. So I backed the number off a few milliseconds by using 999. Then, simply for the sake of randomness (which is why lots of us use MSEC$ in the first place), I hashed (HSH) a number from 1 to 999 based on our first rough guess, and added the two together with INC (increment).

Granted, this code doesn't achieve the level of uniqueness of MSEC$, but should suffice in most cases, especially on a single-user system. To get greater uniqueness would simply be a matter of throwing more code into the equation, such as hashing in the user-id, and a good example of "over-coding".

After having experimented with PC MAPPER for a couple of months now, I must say that my appreciation for the monumental effort involved in making it all work has grown tremendously. And did I say I was impressed? The possibilities for PC MAPPER in the new "world network" are tremendous, fulfilling the dream of a truly distributed system, finally putting the power of the PC to good use.

The advantages of upward and downward mobility of data and run code cannot be overstated in today's tight economic times. The money and effort already spent learning any other MAPPER system can immediately be put to productive use in PC MAPPER. Imagine the productivity gains in being able to write code, executable on any of the three hardware tiers, in a power language as easy to pick up as run design!

Superlatives abound in the English language, but if I had to pick just one to describe MAPPER and all the people involved in making it happen, it would be "supercalifragalisticexpialidocious". Keep up the good work, U-guys.

______

Rob Haeuser has specialized in MAPPER since 1982. Covering MAPPER topics ranging from technical to tacky, his never-ending quest is for truth, justice, and the MAPPER way.