[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference 7.286::digital

Title:The Digital way of working
Moderator:QUARK::LIONELON
Created:Fri Feb 14 1986
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:5321
Total number of notes:139771

4514.0. "Stan Rabinowitz At Ming; One Night Only" by XDELTA::HOFFMAN (Steve; VMS Engineering) Fri Mar 29 1996 18:20

Path: nntpd.lkg.dec.com!pa.dec.com!news1.digital.com!decwrl!
brighton.openmarket.com!wizaard.pn.com!sundog.tiac.net!usenet
From: Stanley Rabinowitz <stan@mathpro.com>
Newsgroups: alt.sys.pdp8,comp.sys.dec,alt.lang.teco
Subject: It's been 10 years since I left DEC!
Date: Tue, 26 Mar 1996 14:34:23 -0500
Organization: MathPro Press
Lines: 24
Message-ID: <315846BF.4267@mathpro.com>
NNTP-Posting-Host: mathpro.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 2.0 (Macintosh; I; PPC)
Xref: nntpd.lkg.dec.com comp.sys.dec:40126 alt.lang.teco:585

It has been 10 years now since I left DEC
and I would love to see some of my friends from PDP-8 land,
from the Mill, from DECset-land and VMS-world,
and RTL haven, etc. whom I have lost touch with.
Also my math notes friends and all the others from
note files at DEC that I followed (I was TURTLE::STAN,
among other nom-de-plum's). [Have all my questions
in the trivia notes file been answered?]

Anyway, I would like to invite all my friends to come
join me at a 10-year anniversary get-together
on Monday, April 1, 1996 at Ming Garden in Nashua, NH.
6-6:15 PM. Spicy food. Good company.

Please invite other friends of mine that you are in
contact with who might not see this post.

For more details or directions to Ming, see
http://math.mathpro.com/~stan/reunionDinner.html.

Come prepared to discuss:
"Great Hacks that have occurred in the last 10 years".

- stan -

T.RTitleUserPersonal
Name
DateLines
4514.1Rabinowitz Code sample...NOTAPC::SEGERThis space intentionally left blankFri Mar 29 1996 18:58118
Though I've never met stan, I stashed away a FORTRAN program he once circulated.
From the date on the mail message it looks like he did this just before he left!
One can only imagine what he could have done if C++ were around then...  8-)

-mark

				* * *

Challenge VAX-11 FORTRAN program (by Stanley Rabinowitz) for you to
determine the compile-time error in this
	program segment
C
C
C
	IMPLICIT INTEGER *2(O), LOGICAL(T-U)
	COMMON//		UNCOMMON//		COMMON
	      INTEGER			FLOATING_POINT
	      REAL			IMAGINARY
	      COMPLEX			SIMPLE

	INTRINSIC EXIT
	EXTERN	  ALL,SOME,NONE
	SAVE	  NOW

	DOUBLE PRECISION A = 3	

	ASSIGN 3 TOO THREE
3	FORMAT((()))

	IF (THEN) THEN
	END IF

	E
     1   N
     2    D
	DOUBLE  COMPLEX FUNCTION FN(ARG1,DOUBLE FN,DOUBLE)
	COMPLEX DOUBLE  FN(ARG1)
	DIMENSION DOUBLE(-8:-7,-6:*)
	VIRTUAL STORAGE(8/7)
	COMPLEX*1	6MEN_IN_A_BOAT, THEN THERE WERE 5
	UNLOCK THE DOOR
	IF (1) 2,3,4
4	IF (4HCLUB) 37, 6, 5
    5	DO 37 I=1.5
	CALL F(04*05,*06)
37	CONTINUE
 6	STOP '4X'
2	A='4X'
 3	A='4'X
	DELETE (3)
	INSANITY=%LOC(1.2D5)
	RETURN
	END
	SUB  ROUTINE FORMAT(*)
	REAL ROUTINE ______
	REAL(ROUTINE)=1E1
	DO WHILE (1 .NEQV. 2)
	READ(ERR=7,UNIT=7)
123	READ(3'X)
456	READ *,X
*89	READ(UNIT=*,X)
777	READ UNIT=9
	ENDDO
007	CALL FRAME(A ONE, &2, AND A 3)
2	Q=3Q1
	ENTRYST(Z 9)
	RETURN
	71
	END
	REAL*4 ROUTINE TRICKY
	END
	IMPLICIT INTEGER*4(X), INTEGER*2(O-Q)
	DIMENSIONLESS VAR(1**1)
	BYTE BYTE
     0	DO 1, I=2,3
100	FORMAT(I7.4,Z8.2,G5.2e4,2p/TL7Q:$!L1,B12.9,J6
     X		SPSSBZQX'garbage')
101	FORMAT(<(1,2)>I)
102	FORMAT(L<I3(I4/'ABC')>)
10 3	FORMAT(I)
1	CONTINUE
	X=3
	DATA X/4/
	GOTO 42
43	DO 44 I=1,9,-3
42	IF (I) 43,44,45
44	END IF 		= 9
45	I will bet you $25 that 4=2+3.
	ASSIGN 100 TO QTEST
	GO TOPLESS!
	E N D
	CHARACTER*8 FUNCTION CHOMP(A,B,C,D,E,STAR)
	DIMENSION B(C:D,0:0,0:0,0:0,0:0,0:00,0:0)
	COMMON /PQRST/ UVWX,YZ  // L
	REAL REAL(3.14159D4)
  !	really?
	CHARACTER*(*) STAR(*)
	BYTE E(65537+L*A/9-1)
	STAR(1)(2:3)=CHOMP//'FOOD'
	REAL(3.14159)=----++++----0
	WRITE(A,B) ((1,2),J=3,4,5)
	WRITE(9,*) WRITE(B,A)
007	MIN=.FALSE. .XOR. .NOT    ..1.    EQ .03   .AND.  .NOT.  .NOT.   NOT.
	STOP
	END
	BLOCK data
	IMPLICIT NONE
	COMPLEX*16 C
	INTEGER ARRAY(35)
	REAL R
	COMMON /WOW/ R,ARRAY
	EQUIVALENCE (R,C)
	DATA (ARRAY(I),I=1,5)/5*7/
	END
	END
	END
C	This is finally the end of this absurdity.

4514.2NOTAPC::SEGERThis space intentionally left blankFri Mar 29 1996 18:59154
and if that wasn't enough, here's another in BLISS...

				* * *

!+
! PROGRAM.B32	STANLEY RABINOWITZ	V1.1	24-Mar-1983
! Challenge: Find the compile-time error in this program.
!-

MODULE 

	_(NOUNAMES,LANGUAGE(BLISS32),STRUCTURE(BITVECTOR),%(VERSION='@'),

		OPTLEVEL=2+2,

		ZAP )% ZIP) =

(GLOBAL LITERAL SEVEN_DAZE = 1: WEAK

UNSIGNED(7),

STACK_POINTER = MAX(ABS(-7),19) + (34 MOD 6) - %LTCE(

	BEGIN
	EXTERNAL ROUTINE LIB$ANALYZE_DISK_STATUS,
		 _______			;
	OWN STATUS;
	STATUS=LIB$ANALYZE_DISK_STATUS('DB1:')
	END);

ROUTINE ONE=1;

ROUTINE TWO=
BEGIN

LOCAL

	STATUS	: ALIGN( %NULL (BEGIN
				EXTERNAL LITERAL SS$_NORMAL : VOLATILE ;
				OWN CONSTANT : SIGNED QUADWORD ;
				CONSTANT = 3.14159 ;
				EXIT ROUTINE WITH SS$_NORMAL
				END) ),
	RED	: INITIAL( BEGIN OWN THE ;THE ;THE ;THE END );

LITERAL

	BEFORE = 4;

OWN

	GREEN	: INITIAL(GREEN),
	B1	: VECTOR[1,8]    INITIAL(3,4);

UNDECLARE TWO;

LABEL	A,B,C;

STACKLOCAL	DEC,IBM ; COMPILETIME

N = 7;

WHILE DO 1 UNTIL 2 DO 3;

STATUS=(3)(4)(5);
IF NOT STATUS THEN STATUS ELSE ...
(((IF STATUS THEN NOT STATUS ELSE . STATUS)));

1+1=2;

	BEGIN GLOBAL

	ROUTINE ANOMALY  = .STATUS;
	OWN SCALAR : BYTE;
	SCALAR[42] = .SCALAR;
	PLIT(69)

	END;

IF 1 EQL 1 EQL 1
THEN	BEGIN
	BIND ROUTINE DIRECTORY=(%VARIANT)/BEFORE=25-Dec-1983;
	OWN X : VECTOR[B:(N)];
	--- -   ------------1
	END;

SIGN(6)=+.01;

4 + 5 NEQ 9

END;
)ELUDOM MODULE

DNE =	BEGIN

	GLOBAL RESULT;

	BUILTIN CMPC3;

	MACRO M = THE<END,IS,NEAR>%;

	OWN	VEC	: VECTOR[10] PRESET

		([2] = UPLIT(%B'1'),
		 [3] = UPLIT(%C'1'),
		 [4] = UPLIT(%X'3D4'),
		 [5] = UPLIT(%P'34'),
		 [1] = UPLIT(%D'3D4'))

	INITIAL(7), FINAL

	:INITIAL(%RAD50_11 '1');

ROUTINE A(FOO: SIGNED BYTE, X: REF BLOCK)=

BEGIN

REGISTER PC;

MACRO GO(F,I,S,H) = D,I,S%;

MACRO THE (MOVIE) = A MOVIE ;

MOVIE %NAME(%CHAR(69),%EXACTSTRING(2,0,'LURID'),%EXPAND GO(%EXPLODE('BOMB')))%;

RESULT = 3 + 4 ^ 5 - 6 ! 7 * 8 % 9 ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

IF .RESULT=7
  THEN	CODECOMMENT 'The following code can not possibly work':

!+
! Check for arithmetic overflow.
!-

	BEGIN
	BIND X = DECR Y DO ;
	PC=X=2 OR 3 XOR 4
	END ELSE

INCR A DO;
	BEGIN
	RESULT=1	;
	CMPC3(1,2,3	;
	RESULT=2	)
	END;

(9;8;7)(6,5,4);

BLISS(	INCR A TO 2 DO 3);

.PC EQL M

4514.3Here's a famous Stan Rabinowitz SPR answerPACKED::BRAFFITTSat Mar 30 1996 11:56157
    [forwards removed]
                   ******DEC INTERNAL USE ONLY******
    
SPR NUMBER:                  11-60903

ANSWER CATEGORY:             UE
MAINTENANCE HOURS:           1
DUPLICATE PROBLEM:           N
DUPLICATE SPR NUMBER(S):

OPERATING SYSTEM:            VAX/VMS

O.S. VERSION:                V3.2
PRODUCT:                     VAX/VMS
PRODUCT VERSION:             V3.2
COMPONENT:                   Run-Time Library
SUB-COMPONENT:               LIB$ routines

DATE ANSWERED:               13-Oct-1983

MAINTAINER:                  Stanley Rabinowitz

ATTACHMENT:                  N

PUBLICATION INSTRUCTIONS:    N

SPR PROBLEM ABSTRACT:        User claims year 2000 should not be a leap year.

TITLE:                       -
PUBLICATIONS:                -
ADDITIONAL O.S. VERSIONS:
ADDITIONAL PRODUCT VERSIONS:
COMPONENT SEQUENCE NUMBER:

SUPERSEDES:

TYPE OF ARTICLE:

                            ANSWER CATEGORIES

CG=1=CORRECTION GIVEN       RS=5=RESTRICTION              SG=9=SUGGESTION
FN=2=FIXED IN NEXT RELEASE  CS=6=CUSTOMER SUPPORTED       IQ=10=INQUIRY
DE=3=DOCUMENTATION ERROR    NR=7=NON-REPRODUCIBLE         HW=11=HARDWARE
UE=4=USER ERROR             II=8=INSUFFICIENT INFORMATION

                            TYPE OF ARTICLE

F=OPTIONAL FEATURE PATCH    N=NOTE
M=MANDATORY PATCH           R=RESTRICTION

                         FOR MAINTENANCE USE

                     ******END OF DEC USE ONLY******
                            D I G I T A L

                           SPR ANSWER FORM

SPR NO. 11-60903

           SYSTEM   VERSION   PRODUCT   VERSION   COMPONENT
SOFTWARE:  VAX/VMS  V3.2      VAX/VMS   V3.2      Run-Time Library

PROBLEM:

The LIB$DAY Run-Time Library service "incorrectly"  assumes  the  year
2000 is a leap year.

RESPONSE:

Thank you for your forward-looking SPR.

Various system services, such as SYS$ASCTIM assume that the year  2000
will  be  a  leap  year.   Although one can never be sure of what will
happen at some future time, there is strong historical  precedent  for
presuming  that the present Gregorian calendar will still be in affect
by the year 2000.  Since we also hope that VMS will still be around by
then, we have chosen to adhere to these precedents.

The purpose of a calendar is to reckon time in advance,  to  show  how
many  days  have  to  elapse  until a certain event takes place in the
future, such as the harvest or the release of VMS  V4.   The  earliest
calendars,  naturally,  were  crude  and  tended  to be based upon the
seasons or the lunar cycle.

The calendar of the Assyrians, for example, was based upon the  phases
of  the  moon.  They knew that a lunation (the time from one full moon
to the next) was 29 1/2 days long, so their lunar year had a  duration
of  364  days.   This  fell  short of the solar year by about 11 days.
      ^-----------------------------------------------------------------I think
(The exact time for the solar year is approximately 365 days, 5 hours,  this
48  minutes,  and  46  seconds.)  After 3 years, such a lunar calendar  should
would be off by a whole month, so the Assyrians added an  extra  month  be 354
from  time  to time to keep their calendar in synchronization with the  -- CC
seasons.

The best approximation that was possible in antiquity  was  a  19-year
period, with 7 of these 19 years having 13 months (leap months).  This
scheme was adopted as the basis for the religious calendar used by the
Jews.   (The  Arabs  also  used  this  calendar until Mohammed forbade
shifting from 12 months to 13 months.)

When Rome emerged as a world  power,  the  difficulties  of  making  a
calendar  were  well  known,  but  the  Romans complicated their lives
because of their superstition that even numbers were  unlucky.   Hence
their  months were 29 or 31 days long, with the exception of February,
which had 28 days.  Every second year, the Roman calendar included  an
extra  month  called  Mercedonius of 22 or 23 days to keep up with the
solar year.

Even this algorithm was very poor, so that in 45 BC,  Caesar,  advised
by  the  astronomer Sosigenes, ordered a sweeping reform.  By imperial
decree, one year was made 445 days long to bring the calendar back  in
step  with  the  seasons.  The new calendar, similar to the one we now
use was called the Julian calendar (named after Julius Caesar).   It's
months  were  30 or 31 days in length and every fourth year was made a
leap year (having 366 days).  Caesar also decreed that the year  would
start with the first of January, not the vernal equinox in late March.

Caesar's year was 11 1/2 minutes short of the calculations recommended
by  Sosigenes  and  eventually the date of the vernal equinox began to
drift.  Roger Bacon became alarmed and sent a note to Pope Clement IV,
who  apparently  was  not  impressed.   Pope  Sixtus  IV  later became
convinced that  another  reform  was  needed  and  called  the  German
astronomer,  Regiomontanus,  to  Rome  to  advise him.  Unfortunately,
Regiomontanus died of the plague shortly thereafter and the plans died
as well.

In 1545, the Council of Trent authorized Pope Gregory XIII  to  reform
the  calendar  once  more.   Most of the mathematical work was done by
Father Christopher Clavius, S.J.  The immediate  correction  that  was
adopted  was  that Thursday, October 4, 1582 was to be the last day of
the Julian calendar.  The next  day  was  Friday,  with  the  date  of
October  15.   For  long  range  accuracy,  a formula suggested by the
Vatican librarian Aloysius Giglio was adopted.   It  said  that  every
fourth  year  is  a  leap  year  except for century years that are not
divisible by 400.  Thus 1700, 1800 and 1900 would not be  leap  years,
but  2000  would  be a leap year since 2000 is divisible by 400.  This
rule eliminates 3 leap years every 4 centuries,  making  the  calendar
sufficiently  correct  for  most  ordinary purposes.  This calendar is
known as the Gregorian calendar and is the one that we now use  today.
(It  is  interesting  to note that in 1582, all the Protestant princes
ignored the papal decree and so many countries continued  to  use  the
Julian  calendar  until either 1698 or 1752.  In Russia, it needed the
revolution to introduce the Gregorian calendar in 1918.)

This explains why VMS chooses to treat the year 2000 as a leap year.

Despite the great accuracy of the Gregorian calendar, it  still  falls
behind very slightly every few years.  If you are very concerned about
this problem, we suggest that you tune in  short  wave  radio  station
WWV,  which  broadcasts  official  time  signals for use in the United
States.  About once every 3 years, they declare a leap second at which
time  you  should be careful to adjust your system clock.  If you have
trouble picking up their signals, we suggest you  purchase  an  atomic
clock (not manufactured by Digital and not a VAX option at this time).

                         END OF SPR RESPONSE
4514.4Stan made a mistake in the first sentence here...COVERT::COVERTJohn R. CovertSun Mar 31 1996 03:2318
>Despite the great accuracy of the Gregorian calendar, it  still  falls
>behind very slightly every few years.  If you are very concerned about
>this problem, we suggest that you tune in  short  wave  radio  station
>WWV,  which  broadcasts  official  time  signals for use in the United
>States.  About once every 3 years, they declare a leap second at which
>time  you  should be careful to adjust your system clock.

This, of course, has nothing to do with calendar accuracy.

Leap days deal with making the solstices and equinoxes stay roughly on
the same calendar dates over the long term, i.e. rotation of the earth
around the sun.

Leap seconds deal with making the sun's highest elevation at the zero
meridian occur at clock noon over the long term, i.e. rotation of the
earth around its own axis.

/john
4514.5An exemplary engineerPERFOM::HENNINGSun Mar 31 1996 11:2417
    Stan implemented a package in DECset to record every users' command. 
    This proved invaluable when I went to create a performance workload
    that modelled real user actions.  
    
    The package worked perfectly.  We turned it on at a real user site and
    had no trouble analyzing the results.  
    
    I remember one of the other engineers saying to Stan "You never told
    anyone you implemented that!" to which he shyly replied "It was in the
    functional spec."
    
    It is left to the reader of this anecdote to derive what this says
    about the state of functional-spec-adherence for most engineers in
    those primitive early times, and what it says about Stan as a high
    quality engineer.
    
    	/john 
4514.6How many people attended the dinner?VARESE::SICHERAGimme a crystal ball, or I won't debug your programTue Apr 02 1996 13:370
4514.7AXEL::FOLEYRebel without a ClueTue Apr 02 1996 14:147

	Probably about 20-25 people. Lots of "old" faces.. Andy Goldstein
	entertained us with hack after hack. (especially some truely
	wonderful April Fools hacks)

							mike
4514.8TURRIS::lspace.zko.dec.com::winalskiPLIT happens...Fri Apr 19 1996 02:21456
Stan was working on an automatic software build dependency recorder 
(Auto-MMS) and enlisted my help in putting together a file-open eavesdropper 
based on the VMS system service intercept feature.  He later adapted the 
same hack to watch and record image activations.  He got the shock of his 
life when he brought up Datatrieve and watched the image activator at work.

Here is Stan's record of that event.

--PSW
=================================================================

	    A Day in the Life of the Image Activator

	as recounted to Stanley Rabinowitz on 7-Jan-1985

MONITOR:	Good morning sir!  I am your command language
		interpreter today.  That was a flawlessly executed LOGIN.
		How may I help you today?

USER:		Good morning to you too computer.
		I think today I want to do some data retrieving.

MONITOR:	A wonderful choice sir!  A finer day it couldn't be
		for looking over your data.  How will you have it today?
		Sunny side up?  Once over lightly?

USER:		I think I'll use DATATRIEVE.  Would you kindly activate
		DATATRIEVE please?

MONITOR:	Most certainly sir!  An excellent choice!
		One moment while I image-activate it.

MONITOR:	Oh, image activator: would you please image-activate
		that DTR32 image that I notice on SYS$SYSTEM?  My user
		desires to play with it a bit now.

IMAGE ACTIVATOR: No problem.  Shouldn't take but a jiff.

		<pause>

MONITOR:	Any problems?

IMAGE ACTIVATOR: No sir, not a one.  It's just that I'm surprised to
		see that DTR32 is composed of 21 image sections.
		Quite an unusual number for a VMS utility.  Most
		images only have 3 or 4 sections.  This one really
		sets a record!  But no problem - I just \love/ to map
		in all these sections.  After all - that's my primary
		purpose in life.

		<pause>

IMAGE ACTIVATOR: Well, that should do it.  They're all mapped in.

MONITOR:	Then we can start her up now?

IMAGE ACTIVATOR: Well not quite.  I just noticed that this image
		invokes some shared images.  Oh well, I guess I'll
		have to go image-activate them too.  At least we'll
		only have to activate those images that this program
		really needs.

MONITOR:	How many shared images does it require?

IMAGE ACTIVATOR: Oh mi gosh!  It references 15 shared images!
		Another record!  I can't believe it!
		Oh well, here goes...

IMAGE ACTIVATOR: The first one it wants is DTRSHR.  That should be
		an easy one.

		<pause>

IMAGE ACTIVATOR: Oh no! Not another one. That's two in one day!
		DTRSHR.EXE uses 20 image sections!

MONITOR:	Have you enough room for them all?

IMAGE ACTIVATOR: No sweat. This is a virtual memory machine. And this disk
		I/O is real fast.  I'll have it in a minute.

		<pause>

IMAGE ACTIVATOR: There. Now on to the other shared images.  Next
		comes CDDSHR.  Guess it's important that we share
		all this data.

MONITOR:	Yup.  What next?

IMAGE ACTIVATOR: Now we'll need a database manager, so I guess
		we'll just have to go off and image-activate DBMSHR,
		the database management system.

MONITOR:	Sounds reasonable.

USER:		How's it coming there computer?

MONITOR:	No sweat.  It'll be just another moment.

IMAGE ACTIVATOR: And now we'll activate RDBSHR.

MONITOR:	But I thought you just brought in your database manager?

IMAGE ACTIVATOR: Yes, but this one is the \relational/ database system.
		It's a whole different ballgame.

MONITOR:	Well, hurry it along.

IMAGE ACTIVATOR: Okay. Next comes RDMSHR, the relational database
		manager.

MONITOR:	But how does that differ from RDBSHR?

IMAGE ACTIVATOR: I don't know.  I just activate 'em.  They tell me
		to image-act and I image-act.

MONITOR:	Well, I hope that's it for database managers.

IMAGE ACTIVATOR: Not quite. There's still RDBBSHR.  This company
		specializes in its excellent collection of managers.

MONITOR:	Great! I guess that's it then.

IMAGE ACTIVATOR: Not on your life! Do you think our user merely
		wants to look at relationships?  What if he wants
		to sort his data?

MONITOR:	Oh.

IMAGE ACTIVATOR: Didn't think of that did you?  I guess we'll just
		have to go image-activate SORTSHR.

MONITOR:	I guess so.

USER:		But I don't plan to do any sorting today.
		I just wanted to prepare a short report.

IMAGE ACTIVATOR: Sorry. SORTSHR comes with this image.
		It's a free option.

MONITOR:	What next?

IMAGE ACTIVATOR: Hmm.  Looks like a request to bring in COBRTL,
		the COBOL run-time library.

MONITOR:	Why would they want that?  Is DATATRIEVE written in
		COBOL?

IMAGE ACTIVATOR: No, but the COBOL run time library has many precious
		gems of useful routines that one might wish to call...
		Guess, I'll just go image-activate it now.

MONITOR:	Good thing you don't also need the FORTRAN run-time
		library too.

IMAGE ACTIVATOR: Now you've done it! You've given me the evil eye.
		Either that or I just got up out of the wrong side
		of the bed this morning.  Here look at this: this
		image is also requesting FORRTL and LIBRTL.
		OH! and now look: It wants MTHRTL too!

MONITOR:	You never know when our user might want to do some
		computation.  He might need to compute some arc
		cosines you know.  Better safe than sorry.

USER:		What's taking so long?

MONITOR:	(still trying to be pleasant) We're almost there now.
		Shant be much longer.  After all, you want a
		user-friendly system don't you?

IMAGE ACTIVATOR: That's right.  I guess that's why I've been
		instructed to image activate LBRSHR.  You never
		know when the user might request some on-line help
		so we've got to have our librarian ready to answer
		his questions.

MONITOR:	That's nice.  I'm sure our user will appreciate that.

IMAGE ACTIVATOR: And oh yeah - we'll need SCRSHR too, the screen
		package.  Only the best on \this/ system.  Can't
		let our user make do without fancy graphics!

MONITOR:	A wonderful thought.  But will SCRSHR be enough?

IMAGE ACTIVATOR: No. you're right of course.  We'll also have to
		bring in EDTSHR.  SCRSHR is only the low level
		graphics.  EDTSHR will really let our user edit
		his data in style.

USER:		But I wasn't planning to change the data today.
		Just one simple report...

MONITOR:	Keep your shirt on.  When this image finally comes
		up, it will really blow your mind.

MONITOR:	But image activator, will EDTSHR really be enough?
		Isn't the big thing these days forms?

IMAGE ACTIVATOR: Right you are monitor, baby.  Guess we'll need
		FDVSHR, the forms management system.  Won't take
		but another moment. (sigh) I think that was the last
		one.

MONITOR:	Great! Then I can report back that we're ready to go?

IMAGE ACTIVATOR: One second. Let me make one last check...

MONITOR:	Never pays to be hasty.

IMAGE ACTIVATOR: Ah nuts! Some of these new images that we just
		activated are requesting further attention.
		It looks like they too want to activate other
		shared images.

MONITOR:	Don't we have enough images?  That's been 16 already!

IMAGE ACTIVATOR: Well, security is an important issue too.
		Wouldn't want our user to lose any data.
		Look here: CDDSHR wants us to bring in SECURESHR.
		Guess I'll just have to image-activate another one...

USER:		(getting impatient) What's taking so long?

MONITOR:	We're putting all the pieces together for you now.
		Shouldn't be much longer.

USER:		Putting them together?  Doesn't it come all assembled?

MONITOR:	Not to worry.  There's no extra charge for installation.

IMAGE ACTIVATOR: There.  And now what?  Look at this: CDDSHR also wants
		us to activate LIBRTL, the common run-time library.

MONITOR:	But didn't you already activate LIBRTL?

IMAGE ACTIVATOR: Right on baby!  Let me just look around.

		<pause>

IMAGE ACTIVATOR: Oh there it is.  We have it mapped into memory already.
		I guess I'll just throw this request away.

MONITOR:	Do you get many of these redundant requests?

IMAGE ACTIVATOR: Yeah, they happen all the time. Nothing to worry about.
		You get used to it.  Look here, SCRSHR wants LIBRTL too;
		and so does SORTSHR, and COBRTL, and FORRTL, and ...

MONITOR:	Well hurry it along please.

IMAGE ACTIVATOR: ... and FDVSHR and MTHRTL and ...
		Oh and look at this duplicate request for LBRSHR and
		RDMSHR and RDBBSHR and VMSRTL and ...

MONITOR:	VMSRTL?  I don't remember seeing that one before.
		What is it and who wants it?

IMAGE ACTIVATOR: Oops, you're right.  I almost overlooked this request
		by RDBSHR.  It's easy to overlook this one; it's so
		small.  Only contains a few transfer vectors...

MONITOR:	Guess it should be easy to activate then?

IMAGE ACTIVATOR: On the contrary.  This one attempts to activate
		the entire RTL!  Imagine that.  Oh well. That's life.
		Fortunately, I've already brought in most of the RTL.
		Let's see now, what else will we need?  Oh yes,
		BASRTL.  Can't imagine how we overlooked that one.

MONITOR:	Is that it then?

IMAGE ACTIVATOR: Yup. That's it.  She's all here.  You can go start
		her up!

USER:		(pounding on keyboard) Where's my data!

MONITOR:	Please use voice input sir! Those CTRL/T's are
		MOST annoying.  They cause the most insidious
		asynchronous traps to interrupt what I'm trying
		to do.  We're starting your image now.

USER:		It's about time.

MONITOR:	There. How's that?  Lovely data isn't it?

USER:		I wouldn't know.  Where's my prompt?

MONITOR:	I don't know. Let me look into it.

MONITOR:	Control unit, where's his prompt?

CONTROL UNIT:	We're executing instructions as fast as we can!
		Oh my god! An exception!

MONITOR:	An exception! Is that serious?

CONTROL UNIT:	My mistake; it's not a hardware exception, it's merely
		a software exception.  Looks like the program signalled.

MONITOR:	Why'd it do that?

CONTROL UNIT:	Well, this program is naturally user friendly, so it
		wants to start up by printing a welcome message
		on the terminal.

MONITOR:	So why doesn't it do that?

CONTROL UNIT:	Well the message is in a message file, sir.

MONITOR:	Well get it!

CONTROL UNIT:	That's what we're trying to do.  You'll have to
		check with the system message handling facility.
		It takes care of those things.

SYSTEM:		Ah, I have the message request now.  I'll have the
		message in a moment.

MONITOR:	Well, how do you get it?

SYSTEM:		No sweat, we'll just image activate the appropriate
		message section.

IMAGE ACTIVATOR: Oh no.  I thought I had a deserved rest coming.

SYSTEM:		Sorry, just a little bit longer.

USER:		WHERE'S MY PROMPT!!!!!

MONITOR:	Keep your pants on.  Just be glad you're not
		trying to activate any subprocesses.

IMAGE ACTIVATOR: Okay, one last time.  Which message section do
		you need activated?

SYSTEM:		I'm not sure.  Let's try DBMMSG. DBMSHR alerted
		us to this one.

IMAGE ACTIVATOR: (struggling) Okay. There it is. I've image-activated
		DBMMSG.

SYSTEM:		Sorry. It wasn't in that one. Try CDDSHR's message
		section, CDDEXC.  Maybe it's in there.

IMAGE ACTIVATOR: Okay. (grumble)

SYSTEM:		Nope. It wasn't there either.  Try RDMSMSG.

IMAGE ACTIVATOR: Look. I'm getting tired of this.  Couldn't you just
		give me the complete list of message sections to
		activate?  I'll keep bringing them in until we
		find that damn message.  Exactly what message
		are we looking for?

SYSTEM:		Not sure yet, all I have is a number, but it's
		probably something like "Welcome to VAX DATATRIEVE".

IMAGE ACTIVATOR: Well...

SYSTEM:		Well what?

IMAGE ACTIVATOR: That list of message sections...

SYSTEM:		Oh yeah.  Well RDBSHR wants RDBMSGS, and not to be outdone,
		RDBBSHR wants RDBBMSGS, not to be confused with RDBMSGS,
		and DTRSHR wants DTRMSGS, and SORTSHR wants SHRIMGMSG,
		and lots of other guys are asking for SHRIMGMSG also - but
		I'm too smart for them.  I'll just get it once and no one
		will ever know the difference.

IMAGE ACTIVATOR: Working...

SYSTEM:		And don't forget FDVMSG.  The message might be in there too.

MONITOR:	OH NO!

SYSTEM:		What is it?

IMAGE ACTIVATOR: Are you all right?

MONITOR:	An interrupt!

IMAGE ACTIVATOR: An interrupt?

MONITOR:	That's what I said, an interrupt.
		Image activator: stop what you're doing.

IMAGE ACTIVATOR: Why?  Just when I was getting the hang of it.

MONITOR:	The user has typed CTRL/Y.

IMAGE ACTIVATOR: Okay, everything has been suspended.  Can I go
		to sleep now?

MONITOR:	No, you better stick around in case the user wants
		to continue.  And notify the exit routines to stand by.
		And the rundown procedures.  Also, I need moral support.
		Maybe if I flash a dollar sign in front of his eyes,
		he'll stop looking so angry.

USER:		Computer, I'm really getting tired of this.

MONITOR:	But we were so close...

USER:		A likely story.

MONITOR:	Well what can I do for you instead?

USER:		I still want my report.  Let's try some other
		way of retrieving my data.

MONITOR:	A wonderful idea sir!  A finer day it couldn't be
		for looking over your data.  How will you have it today?
		Sunny side up?  Once over lightly?

USER:		How about SCRAMBLED?

MONITOR:	No problem sir.  Wait one moment while I activate
		ENCRYPTSHR...

the curtain falls as the dance begins again...


	The players:

	DTR32		VAX DTR V3.1
	DTRSHR		VAX DTR V3.1
	CDDSHR		CDD T3.1-0
	DBMSHR		VAX DBMS V2.2-3
	RDBSHR		03-06
	RDMSHR		Rdb/VMS T1.1
	RDBBSHR		03-05		also known as RDBBSTUB
	SORTSHR		V04-000
	COBRTL		V04-000
	FORRTL		V04-000
	LIBRTL		V04-000
	MTHRTL		V04-000
	FDVSHR		FMS V2.2
	LBRSHR		V04-000
	SCRSHR		V04-000
	EDTSHR		V04-000
	SECURESHR	V04-000
	VMSRTL		V04-000
	BASRTL		V04-000
	DTRMSGS		03-05
	CDDEXC		CDD T3.1-0
	DBMMSG		03-03
	RDMSMSG		03-05
	RDBMSGS		03-06
	RDBBMSGS	03-05
	SHRIMGMSG	V04-000
	FDVMSG		V2.1-003

	for a grand total of 27 shared images and 153 image sections.

4514.9DRDAN::KALIKOWLord help the Mr. without AltaVista!Fri Apr 19 1996 02:358
    aMAzing.  That 'un was far better imho than the "leap-year-2000"
    dissertation.  The dramatis personae metaphor was worth the price of
    reading it thru to the end.
    
    That guy was something ELSE!
    
    Thx so much for re(DATA)TRIEVEing & posting it!!
    
4514.10If anyone thinks Microsoft invented "fatware" ...ZPOVC::GEOFFREYFri Apr 19 1996 06:4710
    I remember this when it first got circulated; we posted it to the side
    of an RA81 system disk that used to rattle incessantly. Our customer
    was doing Datatrieve/FMS/RDB stuff on an 11/785, and the disk would
    just get hammered any time one of the eight users logged in and started
    the application. Actually crunching the data hardly bothered the system
    at all. And with all of the inter-related images, does anyone recall
    what a nightmare it was to install or upgrade the VIA applications?
    
    Geoff
    
4514.11for Red Dwarf fansAXEL::FOLEYRebel without a ClueFri Apr 19 1996 14:245
RE: .8

	Sounds like Kryton taking to Lister..

							mike