THE ADVENTURES OF WILFRED HARRISON, INTREPID PROGRAMMER
by Eugene Volokh, VESOFT
Published in "Thoughts & Discourses on HP3000 Software", 1st ed.,1984.
The candle on the desk was burning low when Wilfred Harrison, intrepid
COBOL programmer, finished changing the layout of the ACCOUNT-MASTER
dataset in his COPYLIB. He quickly grabbed another candle from his
desk drawer, lit it, and put it in the candlestick. After he finished
wiping the overflowed wax, he shouted "Phil! Come over here!" and
quickly ducked underneath his desk.
Phil Jarrold (aka "The Wizard"), the local systems programmer,
appeared in a puff of green smoke and a hail of potato chips. He
greeted Wilfred with a toothy grin and a loud "Hey, Wil, whatcha up
to?"
"I just finished changing my COPYLIB," replied Wilfred, "and now I've
got to recompile all 70 of my programs. It's really quite simple,
they're all in the SOURCE group and they all start with GL. Can you
help me?"
"No big deal," said Phil. "Let's see now..." He waved his arms three
times at the terminal and incanted, "Abracadabra, X Y Z, ATTACHIO,
DIRECDELETE!"
Nothing happened.
"Hocus Pocus, Lens and Focus!"
Nothing.
"Shazam?" blurted Phil, now not quite so sure of himself. Still, not a
compile had started. "Um, I dunno... It doesn't seem to be working
quite like my System Magic Manual says it should... Must be a hardware
problem. Call your CE and then I'll try again."
"But I need to have my programs recompiled now, and my CE won't be
back till a month from Tuesday," pleaded Wilfred. "Isn't there
anything you can do?"
"I said, it's a hardware problem!" retorted Phil angrily. "Then again,
you can always try recompiling them by hand," Phil said with an evil
chuckle, and vanished in another puff of smoke.
"Argggh!" screamed Wilfred. This really took the cake, he thought to
himself. This kind of thing had to happen on a Friday evening -- 70
programs to recompile, and his systems programmer forgets his spells!
He should have listened to his mother and become a dope fiend instead
of mucking around with these blasted computers from dawn to dusk. He
barely had the strength to lift his weary body from his rickety old
chair. He felt like a drink, maybe seven.
Larry Smythe owned a bar around the corner on 42nd. Everybody seemed
to come there on Friday evenings to blow their paychecks and talk
about the Dodgers, women, and Mystery Mansion. This Friday, though,
all Wilfred was in the mood for was a good whiskey on the rocks to
drown his bugs. "You know what I want," he said to Larry, too tired
for the usual pleasantries. "Yeah, what you want is fileset compiles,"
replied Larry. After the initial shock of the unexpected answer,
Wilfred realized that Larry was right (although a whiskey on the rocks
wouldn't hurt either). "How did you know?" he asked, rather confused.
"Whaddaya mean, how did I know?" asked Larry, visibly irritated. "You
think I don't know a man who needs a fileset compile when I see one?"
"How in the world am I going to do a fileset compile?" he shouted to
Larry, realizing that the :COBOL command doesn't support filesets.
"And get me a whiskey on the rocks!"
Larry came back with the drink and pulled a napkin and an MPEX trial
tape from underneath the counter. "Here! This lasts for three months!
And don't spill the drink on the tape, or I'll have to get a new one."
Wilfred, now totally confused, downed the drink in one gulp, grabbed
the tape, and decided it was about time he went home and had a good
night's sleep. That night he dreamt about naked source files bathing
on a tropical beach and being chased by MPEXs in pin-striped suits
good for three months. He woke up with a biting pain in his back and
the memory of the uncompiled programs still lingering in his mind.
Wilfred shaved, grabbed a byte to eat, and was ready to go to work hen
he noticed that the MPEX tape on the coffee table was glowing with an
eerie light. Not wanting to get in trouble with any vendor magic, he
grabbed the tape and got in his car.
As he entered the computer room, he was welcomed by a grunt from
Bonzo, their weekend operator, who was busily ripping printouts off
the line printer. Carefully avoiding the banana peels that were lying
all over the floor, Wilfred made his way to the 7976 tape drive. As he
pushed the "LOAD" button, the big purple arm of the auto-loader
wrenched the tape out of his hand and plopped it onto the tape drive;
a couple of seconds later, when the ONLINE light turned on, he stepped
over to the console and typed:
:FILE VESOFT=VESOFT/HP3000;DEV=TAPE;LABEL=VESOFT
:RESTORE *VESOFT;@.PUB.SYS;SHOW
:RUN STREAMX
"COMMAND ABORTED DUE TO IMPOLITE REQUEST (CIERR 989)" appeared on the
console.
":PLEASE RUN STREAMX," responded Wilfred.
"NOPE (CIERR 1352)."
":PRETTY PLEASE WITH SUGAR ON THE TOP," typed Wilfred (cursing HP for
their insistence on "computer-friendly" commands).
That seemed to do it. After five or so minutes, that magical "VESOFT
AND SECURITY ACCOUNTS INSTALLED!" message appeared on the console. He
walked over to the tape drive, dismounted the tape, and went back to
his cubicle.
His success with the installation procedure made Wilfred feel
courageous. He felt that he was ready. For MPEX. For fileset compiles.
For anything the computer may throw his way. Even for lunch. Feeling
that discretion was the better part of valor, he decided to defer
experimentation until after a burger and a beer. He was ready to get
up and go for lunch, when a voice emanating from the terminal said:
"Wilfred Harrison..."
"Huh?"
"I am the spirit of your source files..."
"What?"
"We want to be compiled..."
"Ummm, how about after lunch?"
"Now, Wilfred, now!!!"
"Look, I've really got to grab a bit to eat."
"If you don't compile us now, horrible things will happen..."
"Such as?"
"You know those variables with the self-explanatory names?"
"You wouldn't dare!"
"Yes! We'll rename them to I1 through I57! And we'll delete all your
comments! Don't think we won't do it, because we will!"
Wilfred sighed. He had no choice.
":RUN MPEX.PUB.VESOFT," he typed.
"MPEX/3000 Version 1.4 (VESOFT (C) 1980) For help type 'HELP'," came
the response.
Well, here goes nothing...
"%COBOL GL@.SOURCE,GL@.PUB."
Wilfred could not believe his eyes. One by one, his programs were
being compiled. It was incredible. It was wonderful. It was a good
excuse to have a victory drink.
Wilfred went to sleep that night with a good feeling in his heart, and
a quart or two of alcohol in his belly. He slept soundly, knowing that
he had at last found an ally in his never-ending battle for truth,
justice, and the HP Way.
TRIVIA TIME
by Eugene Volokh, VESOFT
Presented at 1987 INTEREX Conference, Las Vegas, NV, 1987
Published by SCRUG Communicator, June/July 1988.
Questions:
1. What are the ways you can exit SPOOK (besides break and ABORT)?
2. What are the full names of the editor commands A, E, I, O, U?
3. What secondary entry point does EDITOR/3000 have?
4. What is the filename of the program file that is run when you
type :SEGMENTER?
5. What does the FCOPY ;EBCDIKIN parameter indicate?
6. What MPE subsystems have both END and EXIT commands -- which do
different things?
7. What :SEGMENTER commands have the opposite effects of -CEASE and -HID
8. What are the two options on the MODE command of SPOOK?
9. Name four intrinsics (besides the COBOL and BASIC KSAM interfaces)
that only work on KSAM files and NOT on ordinary MPE files.
10. What three-character string may not be used to start a UDC name?
11. What HP acronym has 2 different meanings that are spelled almost
identically?
12. What HP acronym has 3 different meanings?
13. Name 5 acronyms that have two or more meanings each.
14. What is the only HP intrinsic documented in the Intrinsics
Manual that has a REAL parameter?
15. What does the acronym EAR stand for?
Answers:
1. E causes SPOOK to suspend; Q causes it to terminate; : causes it
to terminate because of end of file on $STDIN.
2. Add, End/Exit, Insert, Or, Use
3. BASICENTRY, used to automatically /TEXTing and /KEEPing the file
equated to EDTTEXT
4. SEGDVR.PUB.SYS
5. That data is to be translated from EBCDIC Katakana format to JIS form
6. SORT and MERGE, in which END executes the operation and returns to
MPE, but EXIT just returns to MPE; QUERY: END gets of our REPORT,
EXIT otherwise.
7. -USE and -REVEAL
8. WIDTH, CONTROLS
9. FREADBYKEY, FFINDBYKEY, FREADC, FFINDN, FREMOVE, FGETKEYINFO
10. RFA
11. DB -- database and Data Base register
12. DS -- queue, Distributed Systems, Data Segments
13. DB -- database and the Data Base register;
DS -- the DS scheduling queue, Distributed Systems, and Data
Segment capability; MR -- Multi-RIN capability and Multi-Record
file access;
CS -- Communication Systems capability and the CS scheduling
queue; PM -- Privileged Mode capability and Preventative Maintenance)
14. PAUSE
15. Exclusive Allow Read, an access mode specifiable in a :FILE command
TRIVIA TIME
by Eugene Volokh, VESOFT
SCRUG Communicator, Apr/May 1988.
Questions:
1. What HP screen-handling product PRECEDED V/3000 (or VIEW)?
2. What government post did Dave Packard hold?
3. What is the full name of HP Steak Sauce?
4. What is the street address of CSY labs?
5. What kind of file has a filecode of -402?
6. Name two secondary points of DBDRIVER.
7. To how many characters can you abbreviate DBUTIL command names?
8. Name three IMAGE or TurboIMAGE utilities in PUB.SYS besides
DBUTIL, DBSCHEMA, DBLOAD, DBUNLOAD, DBSTORE, and DBRESTOR.
9. What sort of object does the QUERY CREATE command create?
10. What happens when you call DBOPEN in mode 0?
11. What data communication protocol does TERM=10 use?
12. What was the distinguishing feature of the HP 2641 terminal?
13. What does the HP 150 output when you type "ESC & a ?"?
14. What happens when you hit control-DISPLAY FUNCTIONS on an
HP 2645A terminal?
15. What are the only unprintable characters that DISPLAY FUNCTIONS
mode does not display?
Answers:
1. DEL/3000
2. Deputy Secretary of Defense, 1969-1971
3. House of Parliament
4. 19447 Pruneridge, Cupertino, CA
5. A remote database access file
6. PURGE, CLONE, PRIV, CLEAN, VUF
7. 3
8. DBCONV, DBDRIVER, DBDUMP, DBRECOV, DBSCHEMA, DBCHANGE
9. A QUERY procedure
10. Bytes 3 through 7 of the status array set to the version number
of the intrinsic -- this works for all DB intrinsics
11. ENQ/ACK
12. It was an APL terminal
13. The message "My mind is going..."
14. The DISPLAY FUNCTIONS light starts blinking -- you're in MONITOR MOD
15. NUL, ENQ, DEL
TRIVIA TIME
by Eugene Volokh, VESOFT
SCRUG Communicator, Feb/Mar 1988.
Questions:
1. Which MPE command would come first in an alphabetical list?
2. Which MPE command would come last in an alphabetical list?
3. Which MPE command has the shortest name?
4. Which intrinsic has the most parameters?
5. Which MPE command has the longest name?
6. What is the maximum size of a file?
7. What is the only privileged non-database file supported by HP?
8. Which MPE commands can only be executed by the file's creator?
9. When :LISTF shows a file as having file code "KSAM," what is
the numeric value of the file code?
10. Name one FOPEN parameter that cannot be overridden with a
:FILE equation.
11. What is the product number of pre-MPE/XL MPE?
12. Which special -- printable, non-alpha, non-numeric -- characters
have NO meaning in any MPE command? Name five.
13. What was the full name of the A-MIT operating system? B-MIT? C-MIT?
14. How many Kbytes of memory was the maximum on the first HP3000?
15. What were the original "lab" number and name of the Series 64?
Answers:
1. ABORT
2. WELCOME
3. IF, UP
4. FGETINFO, 20 parameters
5. DELETESPOOLFILE
6. 65535 * 32 sectors = about 2 million sectors = about 500 megabytes
7. MEMLOG.PUB.SYS, code -1234
8. RELEASE, SECURE, RENAME, ALTSEC, BUILD, SAVE
9. 0
10. You may not override the FOPTIONS "disallow file equations"
bit or the number of user labels; you may not specify EXECUTE
aoptions or a negative file code
11. 32002 or 32033 (one is for the Series II and III, the other for
HP-IB machines)
12. ^, _, [, ], {, }, \, `, ~, `` (! is used for indirect STORE;
% introduces octal numbers; # is used for specifying DS devices;
& is the command continuation character; - is used in STORE and
SETJCW; + is used in SETJCS; ( and ) are used in :IF and other
commands; : is used in :EOF, :ALTSEC, etc.)
13. Athena, Bruno, Cheetah
14. 128 Kbytes, 96 Kbytes minimum
15. 55, Gemini
TRIVIA TIME
by Eugene Volokh, VESOFT
SCRUG Communicator, Dec 1987/Jan 1988.
Questions:
1. Name two strings that the :SEGMENTER subsystem can prompt you
with; for extra credit, name the third.
2. Name three non-file-system intrinsics whose names start with "F."
3. Name one file system intrinsic -- one which is documented in the
File System manual and whose job it is to operate on files --
that doesn't start with F.
4. Name one file system intrinsic that does not take a file number as
a parameter.
5. What is the only MPE command that requires PM capability?
6. What documented options of the FOPEN intrinsic require privileged mod
7. What is the only intrinsic documented in the Intrinsics Manual
that can only be called from privileged mode?
8. What are the 8 fields of the system status register?
9. What 4 things are stored in a normal stack marker?
10. What are the system-defined files (the ones prefixed with a "$")?
11. What is the name of the MPE procedure whose job it is to crash
the system?
12. The :STREAMS device should be configured as one of what two
kinds of devices?
13. Name five MPE commands -- not counting :HELLO, :JOB, :DATA or
those that run programs -- ask for input?
14. Which intrinsic has the shortest name?
15. Which intrinsic has the longest name?
Answers:
1. The usual prompt is "-"; the -HELP command prompts with a ">";
when you continue a :SEGMENTER command with a "&", SEGMENTER
prompts with a "--"
2. FATHER, FINDJCW, FMTCALENDAR, FMTCLOCK, FMTDATE, FREEDSEG,
FREELOCRIN, FINDPMAPNAME, FINDPMAPADDR
3. PRINTFILEINFO
4. FERRMSG, FINTEXIT, and FINTSTATE
5. DEBUG
6. Opening a file for EXECUTE access, specifying a negative
filecode, and opening a non-message file with NOWAIT access
7. SWITCHDB
8. M = privileged/user mode, I = interrupts on/off, T = traps on/off,
R = righthand opcode pending (used when executing an instruction
that contains two opcodes), O = overflow detected, C = arithmetic
carry, the condition code, and the current segment number
9. The X register, the P register (return address), the status
register, and the delta-Q offset
10. $STDIN, $STDINX, $STDLIST, $NEWPASS, $OLDPASS, $NULL
11. SUDDENDEATH
12. Tape or Card Reader
13. ASSOCIATE, DEBUG, HELP, PTAPE, PURGEACCT, PURGEGROUP, PURGEUSER,
REDO, REMOTE, SPEED, STREAM, WELCOME
14. WHO or GET, a DS/3000 intrinsic
15. FDEVICECONTROL or possibly PRINT'FILE'INFO -- PRINT'FILE'INFO is
documented without quotes in the MPE Intrinsics Manual, but with
quotes in the File System Manual
SCIENTISTS DISCOVER FUNNIEST NUMBER
by Eugene Volokh, VESOFT
Published by SCRUG Communicator, June-Sep 1989.
MADISON (UPI) -- Scientists at the University of Wisconsin have just
announced the discovery of what they claim to be the world's
funniest number.
Using 33 hours of computer time on the university's ENIAC
supercomputer, Drs. Harold Cohen and Jack Sampson reached the
conclusion of what has become for them their life's work.
"It is rare that science can have such a direct, favorable effect on
our daily lives," said Dr. Cohen, an ugly, short man with a skin
condition. "You don't have to have an advanced degree to appreciate
our number -- every man, woman, or child in the world who possesses
some basic mathematical skills will find it entertaining. In fact, it
can be mathematically proven that there is no number funnier than
ours".
The number is not just a simple digit, Dr. Cohen said in a recent
interview, but a so-called "irrational" number, which has an infinite
number of digits, never repeating itself. "That way," said Cohen, "the
fun never ends." Apparently it takes about the first hundred digits to
get in the mood, and then it just gets better and better.
Some of the graduate students who were recently exposed to this number
reported that it took a conscious effort of will to tear themselves
away for such basic necessities as food, drink, and personal hygiene.
"This is, unquestionably, the most exciting and entertaining number I
have seen in my life," said an unidentified student.
Still, there are some skeptics. Dr. Friedrich Schmidtt of Florida
State University (Pensacola) believes that better results can be
obtained by using hexadecimal (base 16), "where you can play around
with letters and all that."
Wendy Pierce, of the American Comedians' Association, doubts that even
the most sophisticated of today's computing devices can rival the
talent of human performers. "I've seen the number," Ms. Pierce says,
"and I don't think it's all that great. I mean, it's OK, but I just
don't think it can top, say, Robin Williams on one of his good
nights."
Sampson and Cohen, however, are unperturbed. They firmly believe that
the number (which they hope will be adopted by the International
Mathematical Society as a new mathematical constant, called F) can be
understood and appreciated by laymen, and claim that their detractors
"are probably just stupid or something." They have formed their own
company to market their product; UCLA "laugh therapist" Norman
Cousins is rumored to be negotiating for the right to stitch the first
3,127 digits of the number into his underwear, and other deals are
underway. The good doctors are definitely dreaming big. "I can see a
full feature-length movie based on this thing," says Sampson.
"Television specials, T-shirts, postcards, coffee mugs -- there's just
no stopping us."
SOFTWARE LIFECYCLE
by Eugene Volokh, VESOFT
Published by SCRUG Communicator, June/July 1988.
DEVELOPMENT CYCLE:
D1. Problem exists, as yet unidentified. A feeling of Vague
Dissatisfaction.
D2. Identification of problem. What didn't the guy who wrote the
system identify this problem himself?
D3. Divine Inspiration. The solution is found. A feeling of Immense
Self-Satisfaction. Intent to start coding immediately.
D4. Coding starts (approximately six month later). Feelings of Pain
and Regret.
D5. Coding finishes. Feelings of Contentment and Relief. Intent to
start documentation immediately.
D6. Documentation postponed indefinitely.
D7. Product released, maintenance cycle begins.
MAINTENANCE CYCLE:
M1. An alleged bug allegedly reported by an alleged user. A feeling
of Stunned Incredulity. "Who does this user think he is,
slandering my program?"
M2. Bug duplicated. A feeling of Total Befuddlement. "This isn't
supposed to happen!"
M3. Bug found, and it's an awfully dumb one. A feeling of Awful
Embarrassment.
M4. Go to step 1.
Eugene Volokh is Vice President of R&D at VESOFT, Inc.
HACKER's HOROSCOPE
by Eugene Volokh, VESOFT
Published by VENEWS, 3rd quarter 1990.
ARIES (March 21 - April 19) You have a fiery, sometimes
uncontrollable temper, but people find you exciting to be around.
Your code is always fast, but usually doesn't work right. Check the
MOVE statement in your code at line 427 -- there's a bug in it...
TAURUS (April 20 - May 20) You are the official HP corporate
automobile. Your door is ajar.
GEMINI (May 21 - June 21) You are charming, well-adjusted, and
popular. This, of course, means that you can never be a true hacker.
Get the new 3000/982 as soon as it comes out.
CANCER (June 22 - July 22) You are slow, but methodical and
tenacious. Your code generally works quite well, but your
documentation can use tightening up. Use the FCONTROL intrinsic as
frequently as possible; it will bring you luck.
LEO (July 23 - August 22) You have a magnetic personality and
frequent bursts of insight; however, you cannot, for the life of you
remember what the foptions and aoptions bit settings are, and waste
valuable time searching through the manual. Remember, %420 means "MR
NOBUF".
VIRGO (August 23 - September 22) You have an unpredictable
disposition (sometimes ;SAVE, sometimes ;TEMP), but people are willing
to put up with you because you know how to write /WHILE loops in
EDITOR. Be sure to clean up all your K-files before you go home
tonight.
LIBRA (September 23 - October 23) You have a well-balanced character,
and weigh things carefully. You like to scale mountains, and solve
equations. You walk around wearing a blindfold. Believe it or not,
some people won't get this.
SCORPIO (October 24 - November 21) You have a knack for finding the
optimal solution under most circumstances, but sometimes invest too
much time in hopelessly difficult projects. Your favorite variable
names are "FOO" and "BAR", and you probably have a file in your group
called "XYZZY". Purge it; it's wasting valuable disc space.
SAGITTARIUS (November 22 - December 21) You like programming, but
feel that there's something deeper that you must do with your life.
Some day, you will quit and open a hang-gliding school in Hawaii. You
frequently declare your arrays to be too small, but, hey, what's a
bounds violation among friends?
CAPRICORN (December 22 - January 19) Did you know that this means
"goat"? Frankly, I'd rather be a goat than a fish any day or a crab.
AQUARIUS (January 20 - February 18) You are sensitive, considerate,
and introverted. Your programs always print understandable error
message, but you don't go out of your way to help the user. Beware of
integer overflows, and always check condition codes after intrinsic
calls.
PISCES (February 19 - March 20) You believe that the stars rule your
life, and organize your actions by what you read in the horoscope.
Astrology gives answers to the great questions of life, and is
especially useful to computer professionals. People who write
horoscopes are your friends, and should be trusted implicitly. Your
programs will never again abort if you only send a check for $995 to
VESOFT, Department of Celestial Software, 1135 S. Beverly Dr., Los
Angeles, CA 90035, USA.