[comp.os.vms] Why not abbreviate DCL symbols?

johnf@runx.ips.oz (John F. Baird) (07/28/87)

Here's why it's not an excellent idea to abbreviate DCL symbols like this;

	$ PH*ONE == "PHONE/ANSWER"

Because DCL will create a symbol entry for each combination, PH, PHO, PHON, and
PHONE, in its internal tables.

I found this when I was wandering through P1 space for a process using the
ANALYSE/SYSTEM command. 
 
I'm sure it's alright to use abbreviations, but when you are worried about
performance and resources, it may not be a good idea. We removed all abbreviated
symbols from our captive application usernames, since they were static.
 
James Cameron
via ACSnet johnf@runx.ips.oz

heisterb@uiucuxe.cso.uiuc.edu (08/03/87)

Another good example of the problem with abbreviated symbols is

	$ del*ete == "DELETE/LOG"

Then try to delete the symbol delete!  This is a real-life example, too, I saw
it happen, really!

DJ Heisterberg
National Center for Superconfusing Applications
heisterb@uxe.cso.uiuc.edu
13004@ncsa[a|b].ncsa.uiuc.edu

u3369429@murdu.OZ (Michael Bednarek) (08/05/87)

In article <62500005@uiucuxe> heisterb@uiucuxe.cso.uiuc.edu writes:
>Another good example of the problem with abbreviated symbols is
>	$ del*ete == "DELETE/LOG"
>Then try to delete the symbol delete!  This is a real-life example, too, I saw
>it happen, really!

This is a good opportunity to point to the 'undocumented feature' of DCL
which accepts commands with trailing superfluous characters:
        $ Deleteit/Symbol/Global delete
works perfectly in the situation described above.

There is a funny story to this around here:
The system-wide login procedure used to create LO*GOUT==@SYS_SYSTEM:LOGOUT
which attempted to get the user to purge files. The first prompt was usually
answered by hitting 'Y'.
All users in our department logged out with: $ LOGOUTY and were not prompted.
It took me about three months when I started here to understand what was
going on. I, of course, always logged out with $ EOJ .

Anyway, back to the scenario above. Of course, the command:
        $ del/Symbol/Global delete
works as well, only you get a message: %DCL-I-IGNQUAL, ..., but it still works.

Michael Bednarek		u3369429@{murdu.oz.au | ucsvc.dn.mu.oz.au}
Institute of Applied Economic   ...{UUNET.UU.NET | seismo.CSS.GOV}!munnari!
  and Social Research (IAESR)	   {murdu.oz | ucsvc.dn.mu.oz}!u3369429
Melbourne University		mb@munnari.oz.au
Parkville 3052, Phone : +61 3 344 5744
AUSTRALIA

"POST NO BILLS."

heisterb@uiucuxe.cso.uiuc.edu (08/05/87)

Thanks for all the suggestions about del*ete = delete/log, except I wasn't
asking for help, I'm not that lame.  This definition affected a user who
had learned just enough about DCL to get himself in trouble.  I thought it
was a humourous example.

Next time I post (if ever) I'll clearly state whether I'm an idiot or not.
There's nothing like getting a dozen mail messages in the morning, half of
which tell you how stupid you are because the problem's so easy.

No more mail, please!

DJ Heisterberg
(I thought including name and address was friendly, I guess I know better now)

ive%tonys.span@VLSI.JPL.NASA.GOV (08/05/87)

What exactly is wrong with deleting symbol del besides a warning message
saying that the /LOG parameter was ignored.

Moreover, I use $ DEL*ET == "DELETE/LOG".   When I need to delete
DEL, I say $ DELETE/SYM/GLO DEL.   That works warning message free.
-------

F1142S30%unika2@germany.CSNET (Juergen Renz) (08/06/87)

In message <62500005@uiucuxe> DJ Heisterberg writes:
>Another good example of the problem with abbreviated symbols is
> 
>        $ del*ete == "DELETE/LOG"
> 
>Then try to delete the symbol delete!  This is a real-life example, too, I saw
>it happen, really!

My solutions are:

       $ delete :==
or
       $ delete == ""
or 
       $ deleee /symbol /global delete    ! Note: only the first 4 characters
                                          !       are significant

I have another problem with abbreviated symbols:

  First define an abbreviation for TPU:
     $ ed*it :== edit/tpu

  Then define a symbol for EDT:
     $ edi :== edit/edt

  The second command fails. So I have to define three symbols:
     $ ed :== edit/tpu
     $ edi :== edit/edt
     $ edit :== edit/tpu

Has anyone got a solution for that?

P.S.:   The definitions for EDT and TPU are only examples.
        I use to define my abbreviations carefully.

Juergen Renz                                        Universitaet Karlsruhe
Falkengarten 7                                      Institut fuer Informatik IV
D-7530 Pforzheim
West-Germany